summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorbionade242019-06-18 21:26:49 +0000
committerbionade242019-06-18 21:41:53 +0000
commit21158d8981cff3c24f7d8bd2f9af3228bf65834a (patch)
treef0963e6a4a5e47e150862c1f179753b67cdf2ab1
parent851c79a08681a31484a3ce4ccd5b561638fd5753 (diff)
downloadaur-21158d8981cff3c24f7d8bd2f9af3228bf65834a.tar.gz
Switched to python3 and removed legacy stuff
-rw-r--r--.SRCINFO17
-rw-r--r--PKGBUILD19
-rwxr-xr-xgenerate_packages_makefile.py130
-rwxr-xr-xinstall_generated_packages.py112
4 files changed, 18 insertions, 260 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 9daa15d4aae0..34315c9158e0 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -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
diff --git a/PKGBUILD b/PKGBUILD
index 57d6a47c60d9..df94c2578fb5 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -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()