summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Chrétien2014-01-18 22:53:20 +0100
committerBenjamin Chrétien2015-06-20 02:25:11 +0900
commitd3d970129cc96b4085c1b68f728d9e6c1dbbf1f3 (patch)
tree114c90cfafbba3c68ed9bc9612d081db6eccf7fa
parent092b8f607a6221502093b38487bcfbe200950811 (diff)
downloadaur-d3d970129cc96b4085c1b68f728d9e6c1dbbf1f3.tar.gz
PCL fixes + separate build/run dependencies.
-rw-r--r--.SRCINFO2
-rw-r--r--PKGBUILD2
-rwxr-xr-ximport_catkin_packages.py140
3 files changed, 93 insertions, 51 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 02aef644ec06..baa59f3f289d 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -22,7 +22,7 @@ pkgbase = ros-build-tools
md5sums = d257f7f20384e894b0431ee61068aa96
md5sums = 563c9d1320a3a997db25d3087303dcfb
md5sums = 8d6d7eb89a12c449497b209f1a06655b
- md5sums = 5b97e0f6f5aea290ec54be37fbd15093
+ md5sums = f0424039bb8112315a0b97e377619550
md5sums = 07f5253eb3f8cb5295c32026a20ab6c0
pkgname = ros-build-tools
diff --git a/PKGBUILD b/PKGBUILD
index c9d5a3e8e88e..87af78aaf459 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -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,