[GTK] Make dist only works when run from the source directory
authorcarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 2 Jul 2014 15:13:33 +0000 (15:13 +0000)
committercarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 2 Jul 2014 15:13:33 +0000 (15:13 +0000)
https://bugs.webkit.org/show_bug.cgi?id=134543

Reviewed by Martin Robinson.

Since the paths in the manifest are relative to the source dir,
and the script expects the current working directory to be the
source directory, resolve all passed in relative paths while
parsing the arguments and then change the current working
directory.

* gtk/make-dist.py:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@170706 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Tools/ChangeLog
Tools/gtk/make-dist.py

index 1f7da00..fe22a07 100644 (file)
@@ -1,5 +1,20 @@
 2014-07-02  Carlos Garcia Campos  <cgarcia@igalia.com>
 
 2014-07-02  Carlos Garcia Campos  <cgarcia@igalia.com>
 
+        [GTK] Make dist only works when run from the source directory
+        https://bugs.webkit.org/show_bug.cgi?id=134543
+
+        Reviewed by Martin Robinson.
+
+        Since the paths in the manifest are relative to the source dir,
+        and the script expects the current working directory to be the
+        source directory, resolve all passed in relative paths while
+        parsing the arguments and then change the current working
+        directory.
+
+        * gtk/make-dist.py:
+
+2014-07-02  Carlos Garcia Campos  <cgarcia@igalia.com>
+
         [GTK] make dist is broken
         https://bugs.webkit.org/show_bug.cgi?id=134542
 
         [GTK] make dist is broken
         https://bugs.webkit.org/show_bug.cgi?id=134542
 
index 2b98a83..c61cac4 100755 (executable)
@@ -116,8 +116,8 @@ class Manifest(object):
         self.current_directory = None
         self.directories = []
         self.tarball_root = tarball_root
         self.current_directory = None
         self.directories = []
         self.tarball_root = tarball_root
-        self.source_root = os.path.abspath(source_root)
-        self.build_root = os.path.abspath(build_root)
+        self.source_root = source_root
+        self.build_root = build_root
 
         # Normalize the tarball root so that it starts and ends with a slash.
         if not self.tarball_root.endswith('/'):
 
         # Normalize the tarball root so that it starts and ends with a slash.
         if not self.tarball_root.endswith('/'):
@@ -204,20 +204,29 @@ class Manifest(object):
 
 
 if __name__ == "__main__":
 
 
 if __name__ == "__main__":
+    class FilePathAction(argparse.Action):
+        def __call__(self, parser, namespace, values, option_string=None):
+            setattr(namespace, self.dest, os.path.abspath(values))
+
     parser = argparse.ArgumentParser(description='Build a distribution bundle.')
     parser = argparse.ArgumentParser(description='Build a distribution bundle.')
-    parser.add_argument('-s', '--source-dir', type=str, default=os.getcwd(),
+    parser.add_argument('-s', '--source-dir', type=str, action=FilePathAction, default=os.getcwd(),
                         help='The top-level directory of the source distribution. ' + \
                               'Directory for relative paths. Defaults to current directory.')
     parser.add_argument('--tarball-root', type=str, default='/',
                         help='The top-level path of the tarball. By default files are added to the root of the tarball.')
                         help='The top-level directory of the source distribution. ' + \
                               'Directory for relative paths. Defaults to current directory.')
     parser.add_argument('--tarball-root', type=str, default='/',
                         help='The top-level path of the tarball. By default files are added to the root of the tarball.')
-    parser.add_argument('-b', '--build-dir', type=str, default=None,
+    parser.add_argument('-b', '--build-dir', type=str, action=FilePathAction, default=None,
                         help='The top-level path of directory of the build root. ' + \
                               'By default there is no build root.')
                         help='The top-level path of directory of the build root. ' + \
                               'By default there is no build root.')
-    parser.add_argument('-o', type=str, default='out.tar', dest="output_filename",
+    parser.add_argument('-o', type=str, action=FilePathAction, default='out.tar', dest="output_filename",
                         help='The tarfile to produce. By default this is "out.tar"')
                         help='The tarfile to produce. By default this is "out.tar"')
-    parser.add_argument('manifest_filename', metavar="manifest", type=str, help='The path to the manifest file.')
+    parser.add_argument('manifest_filename', metavar="manifest", type=str, action=FilePathAction, help='The path to the manifest file.')
 
     arguments = parser.parse_args()
 
 
     arguments = parser.parse_args()
 
+    # Paths in the manifest are relative to the source directory, and this script assumes that
+    # current working directory is the source directory, so change the current working directory
+    # to be the source directory.
+    os.chdir(arguments.source_dir)
+
     manifest = Manifest(arguments.manifest_filename, arguments.source_dir, arguments.build_dir, arguments.tarball_root)
     manifest.create_tarfile(arguments.output_filename)
     manifest = Manifest(arguments.manifest_filename, arguments.source_dir, arguments.build_dir, arguments.tarball_root)
     manifest.create_tarfile(arguments.output_filename)