Skip to content

Commit

Permalink
add rpm meson template
Browse files Browse the repository at this point in the history
  • Loading branch information
christianrauch committed May 23, 2024
1 parent ada919c commit fa9842a
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 0 deletions.
2 changes: 2 additions & 0 deletions bloom/generators/rpm/generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,8 @@ def generate_substitutions_from_package(
pass
elif build_type == 'cmake':
pass
elif build_type == 'meson':
pass
elif build_type == 'ament_cmake':
pass
elif build_type == 'ament_python':
Expand Down
80 changes: 80 additions & 0 deletions bloom/generators/rpm/templates/meson/template.spec.em
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
%bcond_without tests
%bcond_without weak_deps

%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
%global __provides_exclude_from ^@(InstallationPrefix)/.*$
%global __requires_exclude_from ^@(InstallationPrefix)/.*$

Name: @(Package)
Version: @(Version)
Release: @(RPMInc)%{?dist}%{?release_suffix}
Summary: ROS @(Name) package

License: @(License)
@[if Homepage and Homepage != '']URL: @(Homepage)@\n@[end if]@
Source0: %{name}-%{version}.tar.gz
@[if NoArch]@\nBuildArch: noarch@\n@[end if]@

@[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]@
@[for p in Provides]Provides: @p@\n@[end for]@
@[if TestDepends]@\n%if 0%{?with_tests}
@[for p in TestDepends]BuildRequires: @p@\n@[end for]@
%endif@\n@[end if]@
@[if Supplements]@\n%if 0%{?with_weak_deps}
@[for p in Supplements]Supplements: @p@\n@[end for]@
%endif@\n@[end if]@

%description
@(Description)

%prep
%autosetup -p1

%build
# override macro
%define __meson_auto_features auto
# In case we're installing to a non-standard location, look for a setup.sh
# in the install tree and source it. It will set things like
# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
if [ -f "@(InstallationPrefix)/setup.sh" ]; then . "@(InstallationPrefix)/setup.sh"; fi
# call meson executable instead of using the 'meson' macro to use default paths
%__meson setup \
--prefix="@(InstallationPrefix)" \
--cmake-prefix-path="@(InstallationPrefix)" \
--libdir=lib \
--libexecdir=lib \
%{_target_platform}
%meson_build -C %{_target_platform}

%install
# In case we're installing to a non-standard location, look for a setup.sh
# in the install tree and source it. It will set things like
# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
if [ -f "@(InstallationPrefix)/setup.sh" ]; then . "@(InstallationPrefix)/setup.sh"; fi
%meson_install -C %{_target_platform}

%if 0%{?with_tests}
%check
# Look for a Makefile target with a name indicating that it runs tests
TEST_TARGET=$(%__ninja -C %{_target_platform} -t targets | sed "s/^\(test\|check\):.*/\\1/;t f;d;:f;q0")
if [ -n "$TEST_TARGET" ]; then
# In case we're installing to a non-standard location, look for a setup.sh
# in the install tree and source it. It will set things like
# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
if [ -f "@(InstallationPrefix)/setup.sh" ]; then . "@(InstallationPrefix)/setup.sh"; fi
%meson_test -C %{_target_platform} || echo "RPM TESTS FAILED"
else echo "RPM TESTS SKIPPED"; fi
%endif

%files
@[for lf in LicenseFiles]%license @lf@\n@[end for]@
@(InstallationPrefix)

%changelog@
@[for change_version, (change_date, main_name, main_email) in changelogs]
* @(change_date) @(main_name) <@(main_email)> - @(change_version)
- Autogenerated by Bloom
@[end for]

0 comments on commit fa9842a

Please sign in to comment.