diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/install-xpi | 39 |
1 files changed, 22 insertions, 17 deletions
diff --git a/src/install-xpi b/src/install-xpi index 071507c..31c5f00 100755 --- a/src/install-xpi +++ b/src/install-xpi @@ -68,7 +68,7 @@ def get_mode(filename): mode = st[stat.ST_MODE] return mode & 0777 -def install_xpi(script_name, package, xpi_file, exclude, links, correct_permissions, remove_licenses, verbose=False): +def install_xpi(script_name, package, xpi_file, exclude, install_dir, links, correct_permissions, remove_licenses, verbose=False): # get xpi file content list if not os.path.isfile(xpi_file): print >> sys.stderr, "%s: Error: xpi file %s does not exist." % (script_name, xpi_file) @@ -77,11 +77,13 @@ def install_xpi(script_name, package, xpi_file, exclude, links, correct_permissi xpi_content = zfobj.namelist() # determine installation directory - if get_arch(package) == "all": - lib_share_dir = "share" - else: - lib_share_dir = "lib" - install_dir = os.path.join("debian", package, "usr", lib_share_dir, package) + if install_dir is None: + if get_arch(package) == "all": + lib_share_dir = "share" + else: + lib_share_dir = "lib" + install_dir = os.path.join("debian", package, "usr", lib_share_dir, package) + copy_dir = os.path.join("debian", package, install_dir.strip("/")) if verbose: print "%s: install directory: %s" % (script_name, install_dir) @@ -95,9 +97,9 @@ def install_xpi(script_name, package, xpi_file, exclude, links, correct_permissi print "%s: exclude license file %s" % (script_name, name) # create directory and extract xpi file - if not os.path.isdir(install_dir): - os.makedirs(install_dir) - command = ["unzip", "-o", "-d", install_dir, xpi_file] + if not os.path.isdir(copy_dir): + os.makedirs(copy_dir) + command = ["unzip", "-o", "-d", copy_dir, xpi_file] if len(exclude) > 0: command.append("-x") command.extend(exclude) @@ -107,7 +109,7 @@ def install_xpi(script_name, package, xpi_file, exclude, links, correct_permissi # correct permissons of files to 644 and directories to 755 if correct_permissions: for name in xpi_content: - filename = os.path.join(install_dir, name) + filename = os.path.join(copy_dir, name) if os.path.exists(filename): mode = get_mode(filename) if os.path.isdir(filename) and mode != 0755: @@ -125,16 +127,15 @@ def install_xpi(script_name, package, xpi_file, exclude, links, correct_permissi os.chmod(filename, 0755) # get symlinks list - extension_id = get_extension_id(os.path.join(install_dir, "install.rdf")) - target_applications = get_target_applications(script_name, os.path.join(install_dir, "install.rdf")) + extension_id = get_extension_id(os.path.join(copy_dir, "install.rdf")) + target_applications = get_target_applications(script_name, os.path.join(copy_dir, "install.rdf")) for target_application in target_applications: destination = os.path.join("/usr/lib/mozilla/extensions/", target_application, extension_id) links.add(destination) # create symlinks - source = os.path.join("/usr", lib_share_dir, package) for link in links: - command = ["dh_link", "-p" + package, source, link] + command = ["dh_link", "-p" + package, install_dir, link] print " ".join(command) subprocess.call(command) @@ -149,6 +150,7 @@ def usage(output): Options: -x, --exclude=<file> do not install specified file + -i, --install-dir=<value> install extension into the specified directory -l, --link=<directory> link from directory to extension directory -p, --package=<value> install the extension into specified package --preserve-permissions do not adjust the file permissions @@ -162,9 +164,9 @@ See %s(1) for more info.""" % (sys.argv[0], os.path.basename(sys.argv[0])) if __name__ == "__main__": try: - long_opts = ["exclude", "help", "link", "package", + long_opts = ["exclude", "help", "install-dir", "link", "package", "preserve-permissions", "remove-license-files", "verbose"] - opts, args = getopt.gnu_getopt(sys.argv[1:], "hl:p:rvx:", long_opts) + opts, args = getopt.gnu_getopt(sys.argv[1:], "hi:l:p:rvx:", long_opts) except getopt.GetoptError, e: # print help information and exit: print >> sys.stderr, str(e) # will print something like "option -a not recognized" @@ -172,6 +174,7 @@ if __name__ == "__main__": sys.exit(COMMAND_LINE_SYNTAX_ERROR) correct_permissions = True + install_dir = None links = set() package = None remove_licenses = False @@ -184,6 +187,8 @@ if __name__ == "__main__": elif o in ("-h", "--help"): usage(sys.stdout) sys.exit() + elif o in ("-i", "--install-dir"): + install_dir = a elif o in ("-l", "--link"): links.add(a) elif o in ("-p", "--package"): @@ -212,4 +217,4 @@ if __name__ == "__main__": if verbose: print script_name + ": Install %s into package %s." % (args[0], package) - install_xpi(script_name, package, args[0], exclude, links, correct_permissions, remove_licenses, verbose) + install_xpi(script_name, package, args[0], exclude, install_dir, links, correct_permissions, remove_licenses, verbose) |