diff options
author | bionade24 | 2019-06-18 21:26:49 +0000 |
---|---|---|
committer | bionade24 | 2019-06-18 21:41:53 +0000 |
commit | 21158d8981cff3c24f7d8bd2f9af3228bf65834a (patch) | |
tree | f0963e6a4a5e47e150862c1f179753b67cdf2ab1 | |
parent | 851c79a08681a31484a3ce4ccd5b561638fd5753 (diff) | |
download | aur-21158d8981cff3c24f7d8bd2f9af3228bf65834a.tar.gz |
Switched to python3 and removed legacy stuff
-rw-r--r-- | .SRCINFO | 17 | ||||
-rw-r--r-- | PKGBUILD | 19 | ||||
-rwxr-xr-x | generate_packages_makefile.py | 130 | ||||
-rwxr-xr-x | install_generated_packages.py | 112 |
4 files changed, 18 insertions, 260 deletions
@@ -1,17 +1,19 @@ -pkgbase = ros-build-tools - pkgdesc = Utilities for building arch packages for ROS stacks. - pkgver = 0.2.0 +pkgbase = ros-build-tools-py3 + pkgdesc = Utilities for building Arch packages for ROS stacks. + pkgver = 0.2.1 pkgrel = 1 - url = https://github.com/bchretien/arch-ros-stacks + url = https://github.com/ros-melodic-arch/ros-build-tools-py3 arch = any license = BSD - optdepends = python2 + depends = bash + optdepends = python3 + provides = ros-build-tools + conflicts = ros-build-tools source = fix-python-scripts.sh source = stack-install-tools.sh source = create-arch-ros-package-legacy.sh source = PKGBUILD.rostemplate source = get_stack_dependencies.py - source = generate_packages_makefile.py source = generate-python-patch.sh source = clear-ros-env.sh md5sums = ed01573e0ecc0f7ca451d7e2849cc5ee @@ -19,9 +21,8 @@ pkgbase = ros-build-tools md5sums = ac82eca7efc9f0ff7e8b976a83692868 md5sums = f3378832c3ba121f7c9e17dc43c8b1d4 md5sums = d257f7f20384e894b0431ee61068aa96 - md5sums = 563c9d1320a3a997db25d3087303dcfb md5sums = 8d6d7eb89a12c449497b209f1a06655b md5sums = 07f5253eb3f8cb5295c32026a20ab6c0 -pkgname = ros-build-tools +pkgname = ros-build-tools-py3 @@ -1,17 +1,18 @@ -# Maintainer: Benjamin Chretien <chretien+aur at lirmm dot fr> -# Contributor: Sean Greenslade <zootboysean@gmail.com> +# Maintainer: Oskar Roesler <oskar@oskar-roesler.de> -pkgdesc='Utilities for building arch packages for ROS stacks.' -url="https://github.com/bchretien/arch-ros-stacks" +pkgdesc='Utilities for building Arch packages for ROS stacks.' +url="https://github.com/ros-melodic-arch/ros-build-tools-py3" -pkgname='ros-build-tools' -pkgver='0.2.0' +pkgname='ros-build-tools-py3' +pkgver='0.2.1' arch=('any') pkgrel=1 license=('BSD') makedepends=() -depends=() -optdepends=('python2') +optdepends=('python3') +depends=('bash') +provides=('ros-build-tools') +conflicts=('ros-build-tools') pkg_destination_dir="/usr/share/ros-build-tools" @@ -20,7 +21,6 @@ source=('fix-python-scripts.sh' 'create-arch-ros-package-legacy.sh' 'PKGBUILD.rostemplate' 'get_stack_dependencies.py' - 'generate_packages_makefile.py' 'generate-python-patch.sh' 'clear-ros-env.sh') @@ -40,6 +40,5 @@ md5sums=('ed01573e0ecc0f7ca451d7e2849cc5ee' 'ac82eca7efc9f0ff7e8b976a83692868' 'f3378832c3ba121f7c9e17dc43c8b1d4' 'd257f7f20384e894b0431ee61068aa96' - '563c9d1320a3a997db25d3087303dcfb' '8d6d7eb89a12c449497b209f1a06655b' '07f5253eb3f8cb5295c32026a20ab6c0') diff --git a/generate_packages_makefile.py b/generate_packages_makefile.py deleted file mode 100755 index b43364ae34b7..000000000000 --- a/generate_packages_makefile.py +++ /dev/null @@ -1,130 +0,0 @@ -#!/usr/bin/env python - -import os.path -import subprocess -import sys - - -MAKEFILE_TARGET = """ -.PHONY : %(package)s -%(package)s: %(package)s/%(output_file)s - -%(package)s/%(output_file)s: %(dependency_string)s -\tcd %(package)s; makepkg -i -""" - - -class InvalidPackage(Exception): - def __init__(self, package): - self.package = package - - def __str__(self): - return repr(self.package) - - -class Dependency(object): - - def __init__(self, directory_name, package_name, dependencies, output_file): - self.directory_name = directory_name - self.package_name = package_name - self.dependencies = dependencies - self.output_file = output_file - - -class DependencyCache(object): - - def __init__(self): - self._dependencies = {} - - def add_package_directory(self, name): - pkgbuild_file = os.path.realpath(name + '/PKGBUILD') - if not os.path.exists(pkgbuild_file): - raise InvalidPackage(name) - aur_package_name = get_package_name(pkgbuild_file) - if len(aur_package_name) == 0: - raise InvalidPackage(name) - dependencies = get_dependencies(pkgbuild_file) - output_file = get_pkgbuild_output_file(pkgbuild_file) - self._dependencies[aur_package_name] = Dependency( - name, aur_package_name, dependencies, output_file) - - def get_package_names(self): - return list(self._dependencies.keys()) - - def get_packages(self): - return list(self._dependencies.values()) - - def get_package(self, name): - return self._dependencies[name] - - def get_package_directory_name(self, name): - return self._dependencies[name].directory_name - - def get_dependencies(self, package_name, remove_unknown=True): - package_dependencies = self._dependencies.get(package_name) - if package_dependencies is None: - raise InvalidPackage(package_name) - if not remove_unknown: - return package_dependencies - return [self._dependencies[dependency] for dependency in package_dependencies.dependencies - if self._dependencies.get(dependency)] - - -def get_pkgbuild_variable(pkgbuild, variable, is_array=False): - if is_array: - array_string = '[@]' - else: - array_string = '' - with subprocess.Popen( - 'source %s && echo ${%s%s}' % (pkgbuild, variable, array_string), - shell=True, stdout=subprocess.PIPE) as shell_process: - if is_array: - return shell_process.stdout.readline().decode().split() - else: - return shell_process.stdout.readline().decode().strip() - - -def get_pkgbuild_output_file(pkgbuild): - with subprocess.Popen( - 'source %s && echo ${pkgname}-${pkgver}-${pkgrel}-${HOSTTYPE}.pkg.tar.xz' % (pkgbuild), - shell=True, stdout=subprocess.PIPE) as shell_process: - return shell_process.stdout.readline().decode().strip() - - -def get_dependencies(pkgbuild): - return get_pkgbuild_variable(pkgbuild, 'depends', is_array=True) - - -def get_package_name(pkgbuild): - return get_pkgbuild_variable(pkgbuild, 'pkgname') - - -def generate_makefile(cache): - makefile = """ -all: %s -""" % ' '.join(['%s/%s' % (package.directory_name, package.output_file) - for package in cache.get_packages()]) - - for package in cache.get_package_names(): - dependency_string = ' '.join(['%s/%s' % (dependency.directory_name, dependency.output_file) - for dependency in cache.get_dependencies(package)]) - makefile += MAKEFILE_TARGET % {'package': cache.get_package_directory_name(package), - 'output_file': cache.get_package(package).output_file, - 'dependency_string': dependency_string} - return makefile - - -def main(): - if len(sys.argv) < 2: - print('Usage: %s <AUR package>*' % sys.argv[0]) - return 1 - - dependency_cache = DependencyCache() - for arg in sys.argv[1:]: - dependency_cache.add_package_directory(arg) - - print(generate_makefile(dependency_cache)) - - -if __name__ == '__main__': - main() diff --git a/install_generated_packages.py b/install_generated_packages.py deleted file mode 100755 index a9d5a2d106c9..000000000000 --- a/install_generated_packages.py +++ /dev/null @@ -1,112 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from __future__ import print_function - -import os, sys -from termcolor import colored, cprint -from argparse import ArgumentParser -import pickle -from subprocess import Popen, PIPE, STDOUT -import threading - -lock = threading.Lock() - - -class PackageInstaller(object): - - def __init__(self, dir, options): - self.dir = dir - self.options = options - - def _generate_command(self, package): - wait_cmd = " && read" - cmd = "cd %s/%s" % (self.dir, package) - - # Before doing anything, review Git changes - if self.options.git: - cmd += " && git diff --color . " + wait_cmd - - # Make the package - cmd += " && makepkg -if" - - # Add changes to the Git index - if self.options.git: - cmd += " && git add PKGBUILD" - - if self.options.aur or self.options.export_user != "": - cmd += " && mkaurball -f" - - if self.options.export_user != "": - cmd += " && burp -u %s -c devel `ls -c1 | grep src.tar.gz | head -n 1`" \ - % self.options.export_user - - return cmd - - def install(self, package): - if not os.path.isfile("%s/%s/PKGBUILD" % (self.dir, package)): - return - - lock.acquire() - print(colored("\n\nInstalling %s " % package, 'red', attrs=['bold'])) - - cmd = self._generate_command(package) - # TODO: adapt to shell=False for security - p = Popen(cmd, stdin=sys.stdin, - stdout=PIPE, - stderr=sys.stderr.fileno(), - shell=True, bufsize = 1) - while p.poll() is None: - out = p.stdout.read(1) - sys.stdout.write(out) - sys.stdout.flush() - lock.release() - - -def main(): - parser = ArgumentParser(description="Install generated PKGBUILDs.") - - parser.add_argument('distro', default='hydro', - help='ROS distribution.') - - parser.add_argument('-a', '--aur', dest='aur', action='store_true', - default=False, - help='Make AUR tarball.') - - parser.add_argument('-e', '--export', dest='export_user', default='', - help="Export package to the AUR. " - "A username is expected.") - - parser.add_argument('-g', '--git', dest='git', action='store_true', - default=False, - help='Add changes of the PKGBUILD to the Git index.') - - args = parser.parse_args() - distro = args.distro - - makepkg_dump_filename = "/tmp/import_catkin_packages/makepkg_%s.dump" \ - % distro - - if not os.path.isfile(makepkg_dump_filename): - print("Could not find dump file: %s" % makepkg_dump_filename) - sys.exit() - - makepkg_dump = open(makepkg_dump_filename, "r") - to_install = pickle.load(makepkg_dump) - makepkg_dump.close() - - installer = PackageInstaller(to_install["directory"], options=args) - - try: - for package in to_install["packages"]: - installer.install(package=package) - to_install["packages"].remove(package) - except KeyboardInterrupt: - pass - - makepkg_dump = open(makepkg_dump_filename, "wb") - pickle.dump(to_install, makepkg_dump) - makepkg_dump.close() - -if __name__ == '__main__': - main() |