Codebase list ros-bloom / 8761db3
New upstream version 0.9.0 Jochen Sprickerhof 4 years ago
20 changed file(s) with 307 addition(s) and 104 deletion(s). Raw diff Collapse all Expand all
0 0.9.0 (2019-10-18 14:15:00 -0800)
1 ---------------------------------
2 - Fixed possibly unescaped logger formatting in version. `#553 <https://github.com/ros-infrastructure/bloom/pull/553>`_
3 - Added ament package support to RPM generation. `#534 <https://github.com/ros-infrastructure/bloom/pull/534>`_
4 - Added ROS_PYTHON_VERSION to dependency condtionals. `#551 <https://github.com/ros-infrastructure/bloom/pull/551>`_
5 With this change rosdistro v4 indexes must define the ``python_version`` field introduced in `ros-infrastructure/rep#207 <https://github.com/ros-infrastructure/rep/pull/207`_.
6 - Fixed deprecation warnings by using yaml.safe_load. `#530 <https://github.com/ros-infrastructure/bloom/pull/530>`_
7 - Changed release suites, dropping all older than Ubuntu Xenial and adding Ubuntu Cosmic, Disco, and Eoan. `#543 <https://github.com/ros-infrastructure/bloom/pull/543>`_
8 - Improved error handling for package conditions and index files. `#537 <https://github.com/ros-infrastructure/bloom/pull/537>`_
9 - Added feature to disable pull request generation via argument or ``BLOOM_NO_ROSDISTRO_PULL_REQUEST`` environment variable. `#548 <https://github.com/ros-infrastructure/bloom/pull/548>`_
10 - Updated RPM generator to always create a source archive. `#540 <https://github.com/ros-infrastructure/bloom/pull/540>`_
11 - Updated RPM spec templates. `#533 <https://github.com/ros-infrastructure/bloom/pull/533>`_
12
013 0.8.0 (2019-04-12 13:45:00 -0800)
114 ---------------------------------
215 - Start release increment at 1. `#528 <https://github.com/ros-infrastructure/bloom/pull/528>`_
8484 return
8585 last_tag_version = last_tag.split('/')[-1]
8686 info(fmt("The latest upstream tag in the release repository is '@!{0}@|'."
87 .format(last_tag)))
87 .format(last_tag.replace('@', '@@'))))
8888 # Ensure the new version is greater than the last tag
8989 if parse_version(version) < parse_version(last_tag_version):
9090 warning("""\
546546 info(line, use_prefix=False, end='')
547547 # Assert that only this repository is being changed
548548 distro_file_yaml = yaml.safe_load(distro_file_raw)
549 distro_yaml = yaml.load(distro_dump)
549 distro_yaml = yaml.safe_load(distro_dump)
550550 if 'repositories' in distro_file_yaml:
551551 distro_file_repos = distro_file_yaml['repositories']
552552 for repo in distro_yaml['repositories']:
11091109 repository, track, distro, new_track, interactive, pretend, tracks_dict,
11101110 override_release_repository_url, override_release_repository_push_url
11111111 )
1112 # Propose github pull request
1113 info(fmt("@{gf}@!==> @|") +
1114 "Generating pull request to distro file located at '{0}'"
1115 .format(get_distribution_file_url(distro)))
1116 try:
1117 pull_request_url = open_pull_request(
1118 track, repository, distro, interactive, override_release_repository_url
1119 )
1120 if pull_request_url:
1121 info(fmt(_success) + "Pull request opened at: {0}".format(pull_request_url))
1122 if 'BLOOM_NO_WEBBROWSER' not in os.environ and platform.system() in ['Darwin']:
1123 webbrowser.open(pull_request_url)
1124 else:
1125 info("The release of your packages was successful, but the pull request failed.")
1126 info("Please manually open a pull request by editing the file here: '{0}'"
1127 .format(get_distribution_file_url(distro)))
1128 info(fmt(_error) + "No pull request opened.")
1129 except Exception as e:
1130 debug(traceback.format_exc())
1131 error("Failed to open pull request: {0} - {1}".format(type(e).__name__, e), exit=True)
1112 if 'BLOOM_NO_ROSDISTRO_PULL_REQUEST' not in os.environ:
1113 # Propose github pull request
1114 info(fmt("@{gf}@!==> @|") +
1115 "Generating pull request to distro file located at '{0}'"
1116 .format(get_distribution_file_url(distro)))
1117 try:
1118 pull_request_url = open_pull_request(
1119 track, repository, distro, interactive, override_release_repository_url
1120 )
1121 if pull_request_url:
1122 info(fmt(_success) + "Pull request opened at: {0}".format(pull_request_url))
1123 if 'BLOOM_NO_WEBBROWSER' not in os.environ and platform.system() in ['Darwin']:
1124 webbrowser.open(pull_request_url)
1125 else:
1126 info("The release of your packages was successful, but the pull request failed.")
1127 info("Please manually open a pull request by editing the file here: '{0}'"
1128 .format(get_distribution_file_url(distro)))
1129 info(fmt(_error) + "No pull request opened.")
1130 except Exception as e:
1131 debug(traceback.format_exc())
1132 error("Failed to open pull request: {0} - {1}".format(type(e).__name__, e), exit=True)
11321133
11331134
11341135 def get_argument_parser():
11451146 help="if used, a new track will be created before running bloom")
11461147 add('--pretend', '-s', default=False, action='store_true',
11471148 help="Pretends to push and release")
1149 add('--no-pull-request', default=False, action='store_true',
1150 help="Prevents a pull request from being opened after release")
11481151 add('--no-web', default=False, action='store_true',
11491152 help="prevents a web browser from being opened at the end")
11501153 add('--pull-request-only', '-p', default=False, action='store_true',
11721175 list_tracks(args.repository, args.ros_distro, args.override_release_repository_url)
11731176 return
11741177
1178 if args.no_pull_request:
1179 os.environ['BLOOM_NO_ROSDISTRO_PULL_REQUEST'] = '1'
1180
11751181 if args.no_web:
11761182 os.environ['BLOOM_NO_WEBBROWSER'] = '1'
11771183
4040 from bloom.logging import info
4141
4242 from bloom.rosdistro_api import get_distribution_type
43 from bloom.rosdistro_api import get_index
44 from bloom.rosdistro_api import get_python_version
4345
4446 from bloom.util import code
4547 from bloom.util import maybe_continue
119121
120122
121123 def package_conditional_context(ros_distro):
124 """
125 Creates a dict containing the conditional evaluation context for
126 package.xml format three packages.
127
128 :param ros_distro: The codename of the rosdistro to generate context for.
129 :returns: dict defining ROS_VERSION and ROS_DISTRO.
130 """
131 if get_index().version < 4:
132 error("Bloom requires a version 4 or greater rosdistro index to support package format 3.", exit=True)
133
122134 distribution_type = get_distribution_type(ros_distro)
123135 if distribution_type == 'ros1':
124136 ros_version = '1'
127139 else:
128140 error("Bloom cannot cope with distribution_type '{0}'".format(
129141 distribution_type), exit=True)
142 python_version = get_python_version(ros_distro)
143 if python_version is None:
144 error(
145 'No python_version found in the rosdistro index. '
146 'The rosdistro index must include this key for bloom to work correctly.',
147 exit=True)
148 elif python_version == 2:
149 ros_python_version = '2'
150 elif python_version == 3:
151 ros_python_version = '3'
152 else:
153 error("Bloom cannot cope with python_version '{0}'".format(
154 python_version), exit=True)
155
130156 return {
131157 'ROS_VERSION': ros_version,
132158 'ROS_DISTRO': ros_distro,
159 'ROS_PYTHON_VERSION': ros_python_version,
133160 }
161
162
163 def evaluate_package_conditions(package, ros_distro):
164 """
165 Evaluates a package's conditional fields if it supports them.
166
167 :param package: The package to be evaluated.
168 :param ros_distro: The codename of the rosdistro use for context.
169 :returns: None. The given package will be modified.
170 """
171 # Conditional fields were introduced in package format 3.
172 # Earlier formats should have their conditions evaluated with no context so
173 # the evaluated_condition is set to True in all cases.
174 if package.package_format >= 3:
175 package.evaluate_conditions(package_conditional_context(ros_distro))
134176
135177
136178 def resolve_rosdep_key(
5757
5858 from bloom.generators.common import default_fallback_resolver
5959 from bloom.generators.common import invalidate_view_cache
60 from bloom.generators.common import package_conditional_context
60 from bloom.generators.common import evaluate_package_conditions
6161 from bloom.generators.common import resolve_rosdep_key
6262
6363 from bloom.git import inbranch
312312 # Installation prefix
313313 data['InstallationPrefix'] = installation_prefix
314314 # Resolve dependencies
315 package.evaluate_conditions(package_conditional_context(ros_distro))
315 evaluate_package_conditions(package, ros_distro)
316316 depends = [
317317 dep for dep in (package.run_depends + package.buildtool_export_depends)
318 if dep.evaluated_condition]
318 if dep.evaluated_condition is not False]
319319 build_depends = [
320320 dep for dep in (package.build_depends + package.buildtool_depends + package.test_depends)
321 if dep.evaluated_condition]
321 if dep.evaluated_condition is not False]
322322
323323 unresolved_keys = [
324324 dep for dep in (depends + build_depends + package.replaces + package.conflicts)
325 if dep.evaluated_condition]
325 if dep.evaluated_condition is not False]
326326 # The installer key is not considered here, but it is checked when the keys are checked before this
327327 resolved_deps = resolve_dependencies(unresolved_keys, os_name,
328328 os_version, ros_distro,
659659 key_to_packages_which_depends_on = collections.defaultdict(list)
660660 keys_to_ignore = set()
661661 for package in self.packages.values():
662 package.evaluate_conditions(package_conditional_context(ros_distro))
662 evaluate_package_conditions(package, ros_distro)
663663 depends = [
664664 dep for dep in (package.run_depends + package.buildtool_export_depends)
665 if dep.evaluated_condition]
665 if dep.evaluated_condition is not False]
666666 build_depends = [
667667 dep for dep in (package.build_depends + package.buildtool_depends + package.test_depends)
668 if dep.evaluated_condition]
668 if dep.evaluated_condition is not False]
669669 unresolved_keys = [
670670 dep for dep in (depends + build_depends + package.replaces + package.conflicts)
671 if dep.evaluated_condition]
671 if dep.evaluated_condition is not False]
672672 keys_to_ignore = {
673673 dep for dep in keys_to_ignore.union(package.replaces + package.conflicts)
674 if dep.evaluated_condition}
674 if dep.evaluated_condition is not False}
675675 keys = [d.name for d in unresolved_keys]
676676 keys_to_resolve.extend(keys)
677677 for key in keys:
00 Source: @(Package)
11 Section: misc
2 Priority: extra
2 Priority: optional
33 Maintainer: @(Maintainer)
44 Build-Depends: debhelper (>= @(debhelper_version).0.0), @(', '.join(BuildDepends))
55 Homepage: @(Homepage)
00 Source: @(Package)
11 Section: misc
2 Priority: extra
2 Priority: optional
33 Maintainer: @(Maintainer)
44 Build-Depends: debhelper (>= @(debhelper_version).0.0), @(', '.join(BuildDepends)), python3-all, python3-setuptools
55 Homepage: @(Homepage)
00 Source: @(Package)
11 Section: misc
2 Priority: extra
2 Priority: optional
33 Maintainer: @(Maintainer)
44 Build-Depends: debhelper (>= @(debhelper_version).0.0), @(', '.join(BuildDepends))
55 Homepage: @(Homepage)
00 Source: @(Package)
11 Section: misc
2 Priority: extra
2 Priority: optional
33 Maintainer: @(Maintainer)
44 Build-Depends: debhelper (>= @(debhelper_version).0.0), @(', '.join(BuildDepends))
55 Homepage: @(Homepage)
4343
4444 from bloom.logging import info
4545
46 from bloom.rosdistro_api import get_index
47
4648 from bloom.util import get_distro_list_prompt
4749
4850
8587 fallback_resolver=fallback_resolver
8688 )
8789 subs['Package'] = rosify_package_name(subs['Package'], self.rosdistro)
90
91 # ROS 2 specific bloom extensions.
92 ros2_distros = [
93 name for name, values in get_index().distributions.items()
94 if values.get('distribution_type') == 'ros2']
95 if self.rosdistro in ros2_distros:
96 # Add ros-workspace package as a dependency to any package other
97 # than ros_workspace and its dependencies.
98 if package.name not in ['ament_cmake_core', 'ament_package', 'ros_workspace']:
99 workspace_pkg_name = rosify_package_name('ros-workspace', self.rosdistro)
100 subs['BuildDepends'].append(workspace_pkg_name)
101 subs['Depends'].append(workspace_pkg_name)
102
103 # Add packages necessary to build vendor typesupport for rosidl_interface_packages to their
104 # build dependencies.
105 if self.rosdistro in ros2_distros and \
106 self.rosdistro not in ('r2b2', 'r2b3', 'ardent') and \
107 'rosidl_interface_packages' in [p.name for p in package.member_of_groups]:
108 ROS2_VENDOR_TYPESUPPORT_DEPENDENCIES = [
109 'rmw-connext-cpp',
110 'rmw-fastrtps-cpp',
111 'rmw-implementation',
112 'rmw-opensplice-cpp',
113 'rosidl-typesupport-connext-c',
114 'rosidl-typesupport-connext-cpp',
115 'rosidl-typesupport-opensplice-c',
116 'rosidl-typesupport-opensplice-cpp',
117 ]
118
119 subs['BuildDepends'] += [
120 rosify_package_name(name, self.rosdistro) for name in ROS2_VENDOR_TYPESUPPORT_DEPENDENCIES]
88121 return subs
89122
90123 def generate_branching_arguments(self, package, branch):
5959
6060 from bloom.generators.common import default_fallback_resolver
6161 from bloom.generators.common import invalidate_view_cache
62 from bloom.generators.common import package_conditional_context
62 from bloom.generators.common import evaluate_package_conditions
6363 from bloom.generators.common import resolve_rosdep_key
6464
6565 from bloom.git import inbranch
231231 # Installation prefix
232232 data['InstallationPrefix'] = installation_prefix
233233 # Resolve dependencies
234 package.evaluate_conditions(package_conditional_context(ros_distro))
234 evaluate_package_conditions(package, ros_distro)
235235 depends = [
236236 dep for dep in (package.run_depends + package.buildtool_export_depends)
237 if dep.evaluated_condition]
237 if dep.evaluated_condition is not False]
238238 build_depends = [
239239 dep for dep in (package.build_depends + package.buildtool_depends + package.test_depends)
240 if dep.evaluated_condition]
240 if dep.evaluated_condition is not False]
241241 unresolved_keys = [
242242 dep for dep in (depends + build_depends + package.replaces + package.conflicts)
243 if dep.evaluated_condition]
243 if dep.evaluated_condition is not False]
244244 # The installer key is not considered here, but it is checked when the keys are checked before this
245245 resolved_deps = resolve_dependencies(unresolved_keys, os_name,
246246 os_version, ros_distro,
266266 elif build_type == 'cmake':
267267 pass
268268 elif build_type == 'ament_cmake':
269 error(
270 "Build type '{}' is not supported by this version of bloom.".
271 format(build_type), exit=True)
269 pass
272270 elif build_type == 'ament_python':
273 error(
274 "Build type '{}' is not supported by this version of bloom.".
275 format(build_type), exit=True)
276 # Don't set the install-scripts flag if it's already set in setup.cfg.
277 package_path = os.path.abspath(os.path.dirname(package.filename))
278 setup_cfg_path = os.path.join(package_path, 'setup.cfg')
279 data['pass_install_scripts'] = True
280 if os.path.isfile(setup_cfg_path):
281 setup_cfg = SafeConfigParser()
282 setup_cfg.read([setup_cfg_path])
283 if (
284 setup_cfg.has_option('install', 'install-scripts') or
285 setup_cfg.has_option('install', 'install_scripts')
286 ):
287 data['pass_install_scripts'] = False
271 pass
288272 else:
289273 error(
290274 "Build type '{}' is not supported by this version of bloom.".
538522 key_to_packages_which_depends_on = collections.defaultdict(list)
539523 keys_to_ignore = set()
540524 for package in self.packages.values():
541 package.evaluate_conditions(package_conditional_context(rosdistro))
525 evaluate_package_conditions(package, rosdistro)
542526 depends = [
543527 dep for dep in (package.run_depends + package.buildtool_export_depends)
544 if dep.evaluated_condition]
528 if dep.evaluated_condition is not False]
545529 build_depends = [
546530 dep for dep in (package.build_depends + package.buildtool_depends + package.test_depends)
547 if dep.evaluated_condition]
531 if dep.evaluated_condition is not False]
548532 unresolved_keys = [
549533 dep for dep in (depends + build_depends + package.replaces + package.conflicts)
550 if dep.evaluated_condition]
534 if dep.evaluated_condition is not False]
551535 keys_to_ignore = {
552536 dep for dep in keys_to_ignore.union(package.replaces + package.conflicts)
553 if dep.evaluated_condition}
537 if dep.evaluated_condition is not False}
554538 keys = [d.name for d in unresolved_keys]
555539 keys_to_resolve.extend(keys)
556540 for key in keys:
780764 template_files = process_template_files('.', subs)
781765 # Remove any residual template files
782766 execute_command('git rm -rf ' + ' '.join("'{}'".format(t) for t in template_files))
783 # Add changes to the rpm folder
784 execute_command('git add ' + rpm_dir)
767 # Add marker file to tell mock to archive the sources
768 open('.write_tar', 'a').close()
769 # Add marker file changes to the rpm folder
770 execute_command('git add .write_tar ' + rpm_dir)
785771 # Commit changes
786772 execute_command('git commit -m "Generated RPM files for ' +
787773 rpm_distro + '"')
0 %global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
1 %global __provides_exclude_from ^@(InstallationPrefix)/.*$
2 %global __requires_exclude_from ^@(InstallationPrefix)/.*$
3
4 Name: @(Package)
5 Version: @(Version)
6 Release: @(RPMInc)%{?dist}
7 Summary: ROS @(Name) package
8
9 License: @(License)
10 @[if Homepage and Homepage != '']URL: @(Homepage)@\n@[end if]Source0: %{name}-%{version}.tar.gz
11 @[if NoArch]@\nBuildArch: noarch@\n@[end if]
12 @[for p in Depends]Requires: @p@\n@[end for]@[for p in BuildDepends]BuildRequires: @p@\n@[end for]@[for p in Conflicts]Conflicts: @p@\n@[end for]@[for p in Replaces]Obsoletes: @p@\n@[end for]
13 %description
14 @(Description)
15
16 %prep
17 %autosetup
18
19 %build
20 # In case we're installing to a non-standard location, look for a setup.sh
21 # in the install tree that was dropped by catkin, and source it. It will
22 # set things like CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
23 if [ -f "@(InstallationPrefix)/setup.sh" ]; then . "@(InstallationPrefix)/setup.sh"; fi
24 mkdir -p obj-%{_target_platform} && cd obj-%{_target_platform}
25 %cmake3 \
26 -UINCLUDE_INSTALL_DIR \
27 -ULIB_INSTALL_DIR \
28 -USYSCONF_INSTALL_DIR \
29 -USHARE_INSTALL_PREFIX \
30 -ULIB_SUFFIX \
31 -DCMAKE_INSTALL_LIBDIR="lib" \
32 -DCMAKE_INSTALL_PREFIX="@(InstallationPrefix)" \
33 -DCMAKE_PREFIX_PATH="@(InstallationPrefix)" \
34 -DSETUPTOOLS_DEB_LAYOUT=OFF \
35 ..
36
37 %make_build
38
39 %install
40 # In case we're installing to a non-standard location, look for a setup.sh
41 # in the install tree that was dropped by catkin, and source it. It will
42 # set things like CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
43 if [ -f "@(InstallationPrefix)/setup.sh" ]; then . "@(InstallationPrefix)/setup.sh"; fi
44 %make_install -C obj-%{_target_platform}
45
46 %files
47 @(InstallationPrefix)
48
49 %changelog@[for change_version, (change_date, main_name, main_email) in changelogs]@\n* @(change_date) @(main_name) <@(main_email)> - @(change_version)@\n- Autogenerated by Bloom@\n@[end for]
0 %global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
1 %global __provides_exclude_from ^@(InstallationPrefix)/.*$
2 %global __requires_exclude_from ^@(InstallationPrefix)/.*$
3
4 Name: @(Package)
5 Version: @(Version)
6 Release: @(RPMInc)%{?dist}
7 Summary: ROS @(Name) package
8
9 License: @(License)
10 @[if Homepage and Homepage != '']URL: @(Homepage)@\n@[end if]Source0: %{name}-%{version}.tar.gz
11 @[if NoArch]@\nBuildArch: noarch@\n@[end if]
12 @[for p in Depends]Requires: @p@\n@[end for]@[for p in sorted(BuildDepends + ['python%{python3_pkgversion}-devel'])]BuildRequires: @p@\n@[end for]@[for p in Conflicts]Conflicts: @p@\n@[end for]@[for p in Replaces]Obsoletes: @p@\n@[end for]
13 %description
14 @(Description)
15
16 %prep
17 %autosetup
18
19 %build
20 # In case we're installing to a non-standard location, look for a setup.sh
21 # in the install tree that was dropped by catkin, and source it. It will
22 # set things like CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
23 if [ -f "@(InstallationPrefix)/setup.sh" ]; then . "@(InstallationPrefix)/setup.sh"; fi
24 %py3_build
25
26 %install
27 # In case we're installing to a non-standard location, look for a setup.sh
28 # in the install tree that was dropped by catkin, and source it. It will
29 # set things like CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
30 if [ -f "@(InstallationPrefix)/setup.sh" ]; then . "@(InstallationPrefix)/setup.sh"; fi
31 %py3_install -- --prefix "@(InstallationPrefix)"
32
33 %files
34 @(InstallationPrefix)
35
36 %changelog@[for change_version, (change_date, main_name, main_email) in changelogs]@\n* @(change_date) @(main_name) <@(main_email)> - @(change_version)@\n- Autogenerated by Bloom@\n@[end for]
0 %global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
1 %global __provides_exclude_from ^@(InstallationPrefix)/.*$
2 %global __requires_exclude_from ^@(InstallationPrefix)/.*$
3
04 Name: @(Package)
15 Version: @(Version)
26 Release: @(RPMInc)%{?dist}
37 Summary: ROS @(Name) package
48
5 Group: Development/Libraries
69 License: @(License)
710 @[if Homepage and Homepage != '']URL: @(Homepage)@\n@[end if]Source0: %{name}-%{version}.tar.gz
811 @[if NoArch]@\nBuildArch: noarch@\n@[end if]
1114 @(Description)
1215
1316 %prep
14 %setup -q
17 %autosetup
1518
1619 %build
1720 # In case we're installing to a non-standard location, look for a setup.sh
1922 # set things like CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
2023 if [ -f "@(InstallationPrefix)/setup.sh" ]; then . "@(InstallationPrefix)/setup.sh"; fi
2124 mkdir -p obj-%{_target_platform} && cd obj-%{_target_platform}
22 %cmake .. \
23 -UINCLUDE_INSTALL_DIR \
24 -ULIB_INSTALL_DIR \
25 -USYSCONF_INSTALL_DIR \
26 -USHARE_INSTALL_PREFIX \
27 -ULIB_SUFFIX \
28 -DCMAKE_INSTALL_LIBDIR="lib" \
29 -DCMAKE_INSTALL_PREFIX="@(InstallationPrefix)" \
30 -DCMAKE_PREFIX_PATH="@(InstallationPrefix)" \
31 -DSETUPTOOLS_DEB_LAYOUT=OFF \
32 -DCATKIN_BUILD_BINARY_PACKAGE="1" \
25 %cmake3 \
26 -UINCLUDE_INSTALL_DIR \
27 -ULIB_INSTALL_DIR \
28 -USYSCONF_INSTALL_DIR \
29 -USHARE_INSTALL_PREFIX \
30 -ULIB_SUFFIX \
31 -DCMAKE_INSTALL_LIBDIR="lib" \
32 -DCMAKE_INSTALL_PREFIX="@(InstallationPrefix)" \
33 -DCMAKE_PREFIX_PATH="@(InstallationPrefix)" \
34 -DSETUPTOOLS_DEB_LAYOUT=OFF \
35 -DCATKIN_BUILD_BINARY_PACKAGE="1" \
36 ..
3337
34 make %{?_smp_mflags}
38 %make_build
3539
3640 %install
3741 # In case we're installing to a non-standard location, look for a setup.sh
3842 # in the install tree that was dropped by catkin, and source it. It will
3943 # set things like CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
4044 if [ -f "@(InstallationPrefix)/setup.sh" ]; then . "@(InstallationPrefix)/setup.sh"; fi
41 cd obj-%{_target_platform}
42 make %{?_smp_mflags} install DESTDIR=%{buildroot}
45 %make_install -C obj-%{_target_platform}
4346
4447 %files
4548 @(InstallationPrefix)
0 %global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
1 %global __provides_exclude_from ^@(InstallationPrefix)/.*$
2 %global __requires_exclude_from ^@(InstallationPrefix)/.*$
3
04 Name: @(Package)
15 Version: @(Version)
26 Release: @(RPMInc)%{?dist}
37 Summary: ROS @(Name) package
48
5 Group: Development/Libraries
69 License: @(License)
710 @[if Homepage and Homepage != '']URL: @(Homepage)@\n@[end if]Source0: %{name}-%{version}.tar.gz
811 @[if NoArch]@\nBuildArch: noarch@\n@[end if]
1114 @(Description)
1215
1316 %prep
14 %setup -q
17 %autosetup
1518
1619 %build
1720 # In case we're installing to a non-standard location, look for a setup.sh
1922 # set things like CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
2023 if [ -f "@(InstallationPrefix)/setup.sh" ]; then . "@(InstallationPrefix)/setup.sh"; fi
2124 mkdir -p obj-%{_target_platform} && cd obj-%{_target_platform}
22 %cmake .. \
23 -UINCLUDE_INSTALL_DIR \
24 -ULIB_INSTALL_DIR \
25 -USYSCONF_INSTALL_DIR \
26 -USHARE_INSTALL_PREFIX \
27 -ULIB_SUFFIX \
28 -DCMAKE_INSTALL_LIBDIR="lib" \
29 -DCMAKE_INSTALL_PREFIX="@(InstallationPrefix)" \
30 -DCMAKE_PREFIX_PATH="@(InstallationPrefix)" \
31 -DSETUPTOOLS_DEB_LAYOUT=OFF \
32 -DCATKIN_BUILD_BINARY_PACKAGE="1" \
25 %cmake3 \
26 -UINCLUDE_INSTALL_DIR \
27 -ULIB_INSTALL_DIR \
28 -USYSCONF_INSTALL_DIR \
29 -USHARE_INSTALL_PREFIX \
30 -ULIB_SUFFIX \
31 -DCMAKE_INSTALL_LIBDIR="lib" \
32 -DCMAKE_INSTALL_PREFIX="@(InstallationPrefix)" \
33 -DCMAKE_PREFIX_PATH="@(InstallationPrefix)" \
34 -DSETUPTOOLS_DEB_LAYOUT=OFF \
35 -DCATKIN_BUILD_BINARY_PACKAGE="1" \
36 ..
3337
34 make %{?_smp_mflags}
38 %make_build
3539
3640 %install
3741 # In case we're installing to a non-standard location, look for a setup.sh
3842 # in the install tree that was dropped by catkin, and source it. It will
3943 # set things like CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
4044 if [ -f "@(InstallationPrefix)/setup.sh" ]; then . "@(InstallationPrefix)/setup.sh"; fi
41 cd obj-%{_target_platform}
42 make %{?_smp_mflags} install DESTDIR=%{buildroot}
45 %make_install -C obj-%{_target_platform}
4346
4447 %files
4548 @(InstallationPrefix)
136136 return get_index().distributions[distro].get('distribution_type')
137137
138138
139 def get_python_version(distro):
140 return get_index().distributions[distro].get('python_version')
141
142
139143 def get_most_recent(thing_name, repository, reference_distro):
140144 reference_distro_type = get_distribution_type(reference_distro)
141145 distros_with_entry = {}
99 'python-dateutil',
1010 'PyYAML',
1111 'rosdep >= 0.15.0',
12 'rosdistro >= 0.7.0',
12 'rosdistro >= 0.7.5',
1313 'vcstools >= 0.1.22',
1414 ]
1515
2121
2222 setup(
2323 name='bloom',
24 version='0.8.0',
24 version='0.9.0',
2525 packages=find_packages(exclude=['test', 'test.*']),
2626 package_data={
2727 'bloom.generators.debian': [
00 [DEFAULT]
1 Depends: python-yaml, python-empy, python-argparse, python-rosdep (>= 0.15.0), python-rosdistro (>= 0.7.0), python-vcstools (>= 0.1.22), python-setuptools, python-catkin-pkg (>= 0.4.3)
2 Depends3: python3-yaml, python3-empy, python3-rosdep (>= 0.15.0), python3-rosdistro (>= 0.7.0), python3-vcstools (>= 0.1.22), python3-setuptools, python3-catkin-pkg (>= 0.4.3)
1 Depends: python-yaml, python-empy, python-argparse, python-rosdep (>= 0.15.0), python-rosdistro (>= 0.7.5), python-vcstools (>= 0.1.22), python-setuptools, python-catkin-pkg (>= 0.4.3)
2 Depends3: python3-yaml, python3-empy, python3-rosdep (>= 0.15.0), python3-rosdistro (>= 0.7.5), python3-vcstools (>= 0.1.22), python3-setuptools, python3-catkin-pkg (>= 0.4.3)
33 Conflicts: python3-bloom
44 Conflicts3: python-bloom
55 Copyright-File: LICENSE.txt
6 Suite: trusty utopic vivid wily xenial yakkety zesty artful bionic jessie stretch buster
6 Suite: xenial yakkety zesty artful bionic cosmic disco eoan jessie stretch buster
77 X-Python3-Version: >= 3.4
4848 assert os.path.exists('tracks.yaml'), \
4949 "no tracks.yaml file in the 'bloom' branch"
5050 with open('tracks.yaml', 'r') as f:
51 tracks_dict = yaml.load(f.read())
51 tracks_dict = yaml.safe_load(f.read())
5252 assert 'tracks' in tracks_dict, "bad bloom configurations"
5353 assert 'foo' in tracks_dict['tracks'], "bad bloom configurations"
5454 track = tracks_dict['tracks']['foo']
361361 with open('debian/copyright', 'r') as f:
362362 assert pkg + ' license' in f.read(), \
363363 "debian/copyright does not include right license text"
364
365 @in_temporary_directory
366 def test_upstream_tag_special_tag(directory=None):
367 """
368 Release a single package catkin (melodic) repository, first put
369 an upstream tag into the release repository to test that bloom
370 can handle it.
371 """
372 directory = directory if directory is not None else os.getcwd()
373 # Setup
374 upstream_dir = create_upstream_repository(['foo'], directory)
375 upstream_url = 'file://' + upstream_dir
376 release_url = create_release_repo(
377 upstream_url,
378 'git',
379 'melodic_devel',
380 'melodic')
381 release_dir = os.path.join(directory, 'foo_release_clone')
382 release_client = get_vcs_client('git', release_dir)
383 assert release_client.checkout(release_url)
384
385 with change_directory(release_dir):
386 user('git tag upstream/0.0.0@baz')
387
388 import bloom.commands.git.release
389 _test_unary_package_repository(release_dir, '0.1.0', directory)