diff options
author | Benjamin Chrétien | 2014-01-18 22:53:20 +0100 |
---|---|---|
committer | Benjamin Chrétien | 2015-06-20 02:25:11 +0900 |
commit | d3d970129cc96b4085c1b68f728d9e6c1dbbf1f3 (patch) | |
tree | 114c90cfafbba3c68ed9bc9612d081db6eccf7fa | |
parent | 092b8f607a6221502093b38487bcfbe200950811 (diff) | |
download | aur-d3d970129cc96b4085c1b68f728d9e6c1dbbf1f3.tar.gz |
PCL fixes + separate build/run dependencies.
-rw-r--r-- | .SRCINFO | 2 | ||||
-rw-r--r-- | PKGBUILD | 2 | ||||
-rwxr-xr-x | import_catkin_packages.py | 140 |
3 files changed, 93 insertions, 51 deletions
@@ -22,7 +22,7 @@ pkgbase = ros-build-tools md5sums = d257f7f20384e894b0431ee61068aa96 md5sums = 563c9d1320a3a997db25d3087303dcfb md5sums = 8d6d7eb89a12c449497b209f1a06655b - md5sums = 5b97e0f6f5aea290ec54be37fbd15093 + md5sums = f0424039bb8112315a0b97e377619550 md5sums = 07f5253eb3f8cb5295c32026a20ab6c0 pkgname = ros-build-tools @@ -40,5 +40,5 @@ md5sums=('b2b4fd23abb8e9e7382ef9aeab2542f5' 'd257f7f20384e894b0431ee61068aa96' '563c9d1320a3a997db25d3087303dcfb' '8d6d7eb89a12c449497b209f1a06655b' - '5b97e0f6f5aea290ec54be37fbd15093' + 'f0424039bb8112315a0b97e377619550' '07f5253eb3f8cb5295c32026a20ab6c0') diff --git a/import_catkin_packages.py b/import_catkin_packages.py index 3a8fed98d7f4..6358080dc320 100755 --- a/import_catkin_packages.py +++ b/import_catkin_packages.py @@ -24,7 +24,8 @@ class PackageBase(object): self.version = package.version self.version_patch = version_patch self.licenses = package.licenses - self.dependencies = [dependency.name for dependency in package.build_depends + package.run_depends] + self.run_dependencies = [dependency.name for dependency in package.run_depends] + self.build_dependencies = [dependency.name for dependency in package.build_depends + package.buildtool_depends] # Remove HTML tags from description self.description = re.sub('<[^<]+?>', '', package.description) @@ -47,39 +48,56 @@ class PackageBase(object): return catkin_pkg.package.parse_package_string( urllib2.urlopen(url).read()) - def _get_ros_dependencies(self): - known_packages = self.distro.package_names(expand_metapackages=True) - return list(set( - [self._rosify_package_name( - 'ros-%s-' % self.distro.name + dependency) - for dependency in self.dependencies if dependency in known_packages])) - - def _get_non_ros_dependencies(self, rosdep_urls=[]): - known_packages = self.distro.package_names(expand_metapackages=True) - - other_dependencies = list(set([dependency for dependency in self.dependencies - if dependency not in known_packages])) - + def _fix_dependencies(self, rosdep_urls, build_dep, run_dep): # Fix usual non-ROS dependencies: # - load replacement dictionary: these are found in rosdep yaml files. We # just need to download and merge these files # in a dictionary. dependency_map = self._get_rosdep_dictionary(rosdep_urls) - other_fixed_dependencies = set() - # - replace in other_dependencies - for index, dep in enumerate(other_dependencies): - if (dep in dependency_map): - # The map may replace one package by multiple ones, or even by none - for package in dependency_map[dep]: - other_fixed_dependencies.add(package) - else: - other_fixed_dependencies.add(dep) - # Fix some possibly missing Python 2 package conflicts - other_fixed_dependencies = [self._ensure_python2_dependency(dependency) - for dependency in other_fixed_dependencies] + def _fix_dependencies_with_map(dependencies): + fixed_dependencies = set() + # - replace in other_dependencies + for index, dep in enumerate(dependencies): + if (dep in dependency_map): + # The map may replace one package by multiple ones, or even by none + for package in dependency_map[dep]: + fixed_dependencies.add(package) + else: + fixed_dependencies.add(dep) + + # Fix some possibly missing Python 2 package conflicts + fixed_dependencies = [self._ensure_python2_dependency(dependency) + for dependency in fixed_dependencies] + return fixed_dependencies + + fixed_build_dep = _fix_dependencies_with_map(build_dep) + fixed_run_dep = _fix_dependencies_with_map(run_dep) + + return fixed_build_dep, fixed_run_dep + + def _get_ros_dependencies(self): + """ + Returns (build_dependencies, run_dependencies) + """ + known_packages = self.distro.package_names(expand_metapackages=True) + build_dep = list(set([self._rosify_package_name('ros-%s-' % self.distro.name + dependency) + for dependency in self.build_dependencies if dependency in known_packages])) + run_dep = list(set([self._rosify_package_name('ros-%s-' % self.distro.name + dependency) + for dependency in self.run_dependencies if dependency in known_packages])) + return build_dep, run_dep + + def _get_non_ros_dependencies(self, rosdep_urls=[]): + """ + Returns (build_dependencies, run_dependencies) + """ + known_packages = self.distro.package_names(expand_metapackages=True) - return other_fixed_dependencies + other_build_dep = list(set([dependency for dependency in self.build_dependencies + if dependency not in known_packages])) + other_run_dep = list(set([dependency for dependency in self.run_dependencies + if dependency not in known_packages])) + return self._fix_dependencies(rosdep_urls, other_build_dep, other_run_dep) def _rosify_package_name(self, name): return name.replace('_', '-') @@ -122,11 +140,15 @@ _pkgver_patch=%(package_version_patch)s arch=('i686' 'x86_64') pkgrel=1 license=('%(license)s') -makedepends=('cmake' 'git' 'ros-build-tools') -ros_depends=(%(ros_package_dependencies)s) +ros_makedepends=(%(ros_build_dependencies)s) +makedepends=('cmake' 'git' 'ros-build-tools' + ${ros_makedepends[@]} + %(other_build_dependencies)s) + +ros_depends=(%(ros_run_dependencies)s) depends=(${ros_depends[@]} - %(other_dependencies)s) + %(other_run_dependencies)s) _tag=release/%(distro)s/%(package_name)s/${pkgver}-${_pkgver_patch} _dir=%(package_name)s @@ -164,10 +186,17 @@ package() { """ def generate(self, exclude_dependencies=[], rosdep_urls=[]): - ros_dependencies = [dependency for dependency in self._get_ros_dependencies() - if dependency not in exclude_dependencies] - other_dependencies = [dependency for dependency in self._get_non_ros_dependencies(rosdep_urls) - if dependency not in exclude_dependencies] + raw_build_dep, raw_run_dep = self._get_ros_dependencies() + ros_build_dep = [dependency for dependency in raw_build_dep + if dependency not in exclude_dependencies] + ros_run_dep = [dependency for dependency in raw_run_dep + if dependency not in exclude_dependencies] + + other_raw_build_dep, other_raw_run_dep = self._get_non_ros_dependencies(rosdep_urls) + other_build_dep = [dependency for dependency in other_raw_build_dep + if dependency not in exclude_dependencies] + other_run_dep = [dependency for dependency in other_raw_run_dep + if dependency not in exclude_dependencies] pkgbuild = self.BUILD_TEMPLATE % { 'distro': self.distro.name, @@ -178,14 +207,15 @@ package() { 'package_url': self.repository_url, 'license': ', '.join(self.licenses), 'description': self.description, - 'ros_package_dependencies': '\n '.join(ros_dependencies), - 'other_dependencies': '\n '.join(other_dependencies) + 'ros_build_dependencies': '\n '.join(ros_build_dep), + 'ros_run_dependencies': '\n '.join(ros_run_dep), + 'other_build_dependencies': '\n '.join(other_build_dep), + 'other_run_dependencies': '\n '.join(other_run_dep) } # Post-processing: # Remove useless carriage return - pkgbuild = re.sub('\${ros_depends\[@\]}\\n \)', - '${ros_depends[@]})', pkgbuild) + pkgbuild = re.sub('\\n \)', ')', pkgbuild) return pkgbuild @@ -199,15 +229,18 @@ pkgver='%(package_version)s' arch=('i686' 'x86_64') pkgrel=1 license=('%(license)s') -makedepends=('ros-build-tools') -ros_depends=(%(ros_package_dependencies)s) +ros_makedepends=(%(ros_build_dependencies)s) +makedepends=('cmake' 'git' 'ros-build-tools' + ${ros_makedepends[@]} + %(other_build_dependencies)s) + +ros_depends=(%(ros_run_dependencies)s) depends=(${ros_depends[@]} - %(other_dependencies)s) + %(other_run_dependencies)s) source=() md5sums=() - """ def __init__(self, distro, repository_url, name, version, version_patch): @@ -216,10 +249,17 @@ md5sums=() for child_name in distro.meta_package_package_names(name)] def generate(self, exclude_dependencies=[], rosdep_urls=[]): - ros_dependencies = [dependency for dependency in self._get_ros_dependencies() - if dependency not in exclude_dependencies] - other_dependencies = [dependency for dependency in self._get_non_ros_dependencies(rosdep_urls) - if dependency not in exclude_dependencies] + raw_build_dep, raw_run_dep = self._get_ros_dependencies() + ros_build_dep = [dependency for dependency in raw_build_dep + if dependency not in exclude_dependencies] + ros_run_dep = [dependency for dependency in raw_run_dep + if dependency not in exclude_dependencies] + + other_raw_build_dep, other_raw_run_dep = self._get_non_ros_dependencies(rosdep_urls) + other_build_dep = [dependency for dependency in other_raw_build_dep + if dependency not in exclude_dependencies] + other_run_dep = [dependency for dependency in other_raw_run_dep + if dependency not in exclude_dependencies] pkgbuild = self.BUILD_TEMPLATE % { 'distro': self.distro.name, 'arch_package_name': self._rosify_package_name(self.name), @@ -228,8 +268,10 @@ md5sums=() 'package_version_patch': self.version_patch, 'license': ', '.join(self.licenses), 'description': self.description, - 'ros_package_dependencies': '\n '.join(ros_dependencies), - 'other_dependencies': '\n '.join(other_dependencies) + 'ros_build_dependencies': '\n '.join(ros_build_dep), + 'ros_run_dependencies': '\n '.join(ros_run_dep), + 'other_build_dependencies': '\n '.join(other_build_dep), + 'other_run_dependencies': '\n '.join(other_run_dep) } # Post-processing: @@ -372,7 +414,7 @@ def generate_pkgbuild(distro, package, directory, force=False, no_overwrite=no_overwrite, recursive=recursive, rosdep_urls=rosdep_urls, generated=generated) if recursive: - for dependency in package.dependencies: + for dependency in package.run_dependencies + package.build_dependencies: if distro.is_package(dependency): generate_pkgbuild(distro, distro.package(dependency), directory, force=force, no_overwrite=no_overwrite, recursive=recursive, |