def python_callback_fn(converter, package, build_directory): """Simple Python function to test support for callbacks.""" if package.python_name.lower() == 'naturalsort': control_file = os.path.join(build_directory, 'DEBIAN', 'control') patch_control_file(control_file, dict( replaces=converter.transform_name('natsort'), breaks=converter.transform_name('natsort'), ))
def update_installed_size(directory): """ Given a directory tree suitable for packaging with ``dpkg-deb --build`` this function updates the Installed-Size_ field in the ``DEBIAN/control`` file. This function is used by :py:func:`build_package()`. :param directory: The pathname of a directory tree suitable for packaging with ``dpkg-deb --build``. .. _Installed-Size: http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Installed-Size """ # Find the installed size of the package (a rough estimate is fine). logger.debug("Finding installed size of package ..") output = execute('du', '-sk', directory, logger=logger, capture=True) installed_size = output.split()[0] # Patch the DEBIAN/control file. control_file = os.path.join(directory, 'DEBIAN', 'control') patch_control_file(control_file, {'Installed-Size': installed_size})
def main(): """ Command line interface for the ``py2deb`` program. """ # Configure terminal output. coloredlogs.install() try: # Initialize a package converter. converter = PackageConverter() # Parse and validate the command line options. options, arguments = getopt.getopt(sys.argv[1:], 'c:r:yvh', [ 'config=', 'repository=', 'name-prefix=', 'no-name-prefix=', 'rename=', 'install-prefix=', 'install-alternative=', 'python-callback=', 'report-dependencies=', 'yes', 'verbose', 'help', ]) control_file_to_update = None for option, value in options: if option in ('-c', '--config'): converter.load_configuration_file(value) elif option in ('-r', '--repository'): converter.set_repository(value) elif option == '--name-prefix': converter.set_name_prefix(value) elif option == '--no-name-prefix': converter.rename_package(value, value) elif option == '--rename': python_package_name, _, debian_package_name = value.partition(',') converter.rename_package(python_package_name, debian_package_name) elif option == '--install-prefix': converter.set_install_prefix(value) elif option == '--install-alternative': link, _, path = value.partition(',') converter.install_alternative(link, path) elif option == '--python-callback': converter.set_python_callback(value) elif option == '--report-dependencies': control_file_to_update = value if not os.path.isfile(control_file_to_update): msg = "The given control file doesn't exist! (%s)" raise Exception(msg % control_file_to_update) elif option in ('-y', '--yes'): converter.set_auto_install(True) elif option in ('-v', '--verbose'): coloredlogs.increase_verbosity() elif option in ('-h', '--help'): usage(__doc__) return else: assert False, "Unhandled option!" except Exception as e: warning("Failed to parse command line arguments: %s", e) sys.exit(1) # Convert the requested package(s). try: if arguments: archives, relationships = converter.convert(arguments) if relationships and control_file_to_update: patch_control_file(control_file_to_update, dict(depends=relationships)) else: usage(__doc__) except Exception: logger.exception("Caught an unhandled exception!") sys.exit(1)
def main(): """Command line interface for the ``py2deb`` program.""" # Configure terminal output. coloredlogs.install() try: # Initialize a package converter. converter = PackageConverter() # Parse and validate the command line options. options, arguments = getopt.getopt(sys.argv[1:], 'c:r:yvh', [ 'config=', 'repository=', 'use-system-package=', 'name-prefix=', 'no-name-prefix=', 'rename=', 'install-prefix=', 'install-alternative=', 'python-callback=', 'report-dependencies=', 'yes', 'verbose', 'help', ]) control_file_to_update = None for option, value in options: if option in ('-c', '--config'): converter.load_configuration_file(value) elif option in ('-r', '--repository'): converter.set_repository(value) elif option == '--use-system-package': python_package_name, _, debian_package_name = value.partition(',') converter.use_system_package(python_package_name, debian_package_name) elif option == '--name-prefix': converter.set_name_prefix(value) elif option == '--no-name-prefix': converter.rename_package(value, value) elif option == '--rename': python_package_name, _, debian_package_name = value.partition(',') converter.rename_package(python_package_name, debian_package_name) elif option == '--install-prefix': converter.set_install_prefix(value) elif option == '--install-alternative': link, _, path = value.partition(',') converter.install_alternative(link, path) elif option == '--python-callback': converter.set_python_callback(value) elif option == '--report-dependencies': control_file_to_update = value if not os.path.isfile(control_file_to_update): msg = "The given control file doesn't exist! (%s)" raise Exception(msg % control_file_to_update) elif option in ('-y', '--yes'): converter.set_auto_install(True) elif option in ('-v', '--verbose'): coloredlogs.increase_verbosity() elif option in ('-h', '--help'): usage(__doc__) return else: assert False, "Unhandled option!" except Exception as e: warning("Failed to parse command line arguments: %s", e) sys.exit(1) # Convert the requested package(s). try: if arguments: archives, relationships = converter.convert(arguments) if relationships and control_file_to_update: patch_control_file(control_file_to_update, dict(depends=relationships)) else: usage(__doc__) except Exception: logger.exception("Caught an unhandled exception!") sys.exit(1)
#!/usr/bin/env python import logging import argparse from deb_pkg_tools import control parser = argparse.ArgumentParser() parser.add_argument("-f","--file", help="Update this debian file.") parser.add_argument("-v", "--version", help="Update to this version number.") args = parser.parse_args() if ( (args.file is not None) and (args.version is not None)): control_fields = { "version" : args.version } control.patch_control_file(args.file,control_fields) else: print "Need version and file set."