Skip to content

Commit

Permalink
use CMake rpm macros and unset in-source builds
Browse files Browse the repository at this point in the history
  • Loading branch information
christianrauch committed Dec 30, 2024
1 parent b42a1dd commit 108ff2b
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 14 deletions.
15 changes: 8 additions & 7 deletions bloom/generators/rpm/templates/ament_cmake/template.spec.em
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
%global __provides_exclude_from ^@(InstallationPrefix)/.*$
%global __requires_exclude_from ^@(InstallationPrefix)/.*$

%undefine __cmake_in_source_build
%define _vpath_builddir .obj-%{_target_platform}

Name: @(Package)
Version: @(Version)
Release: @(RPMInc)%{?dist}%{?release_suffix}
Expand Down Expand Up @@ -38,8 +41,7 @@ Source0: %{name}-%{version}.tar.gz
# 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
mkdir -p .obj-%{_target_platform} && cd .obj-%{_target_platform}
%cmake3 \
%cmake \
-UINCLUDE_INSTALL_DIR \
-ULIB_INSTALL_DIR \
-USYSCONF_INSTALL_DIR \
Expand All @@ -52,28 +54,27 @@ mkdir -p .obj-%{_target_platform} && cd .obj-%{_target_platform}
%if !0%{?with_tests}
-DBUILD_TESTING=OFF \
%endif
..

%make_build
%cmake_build

%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
%make_install -C .obj-%{_target_platform}
%cmake_install

%if 0%{?with_tests}
%check
# Look for a Makefile target with a name indicating that it runs tests
TEST_TARGET=$(%__make -qp -C .obj-%{_target_platform} | sed "s/^\(test\|check\):.*/\\1/;t f;d;:f;q0")
TEST_TARGET=$(%__make -qp -C %{__cmake_builddir} | 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
CTEST_OUTPUT_ON_FAILURE=1 \
%make_build -C .obj-%{_target_platform} $TEST_TARGET || echo "RPM TESTS FAILED"
%make_build -C %{__cmake_builddir} $TEST_TARGET || echo "RPM TESTS FAILED"
else echo "RPM TESTS SKIPPED"; fi
%endif

Expand Down
15 changes: 8 additions & 7 deletions bloom/generators/rpm/templates/cmake/template.spec.em
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
%global __provides_exclude_from ^@(InstallationPrefix)/.*$
%global __requires_exclude_from ^@(InstallationPrefix)/.*$

%undefine __cmake_in_source_build
%define _vpath_builddir .obj-%{_target_platform}

Name: @(Package)
Version: @(Version)
Release: @(RPMInc)%{?dist}%{?release_suffix}
Expand Down Expand Up @@ -38,8 +41,7 @@ Source0: %{name}-%{version}.tar.gz
# 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
mkdir -p .obj-%{_target_platform} && cd .obj-%{_target_platform}
%cmake3 \
%cmake \
-UINCLUDE_INSTALL_DIR \
-ULIB_INSTALL_DIR \
-USYSCONF_INSTALL_DIR \
Expand All @@ -51,28 +53,27 @@ mkdir -p .obj-%{_target_platform} && cd .obj-%{_target_platform}
%if !0%{?with_tests}
-DBUILD_TESTING=OFF \
%endif
..

%make_build
%cmake_build

%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
%make_install -C .obj-%{_target_platform}
%cmake_install

%if 0%{?with_tests}
%check
# Look for a Makefile target with a name indicating that it runs tests
TEST_TARGET=$(%__make -qp -C .obj-%{_target_platform} | sed "s/^\(test\|check\):.*/\\1/;t f;d;:f;q0")
TEST_TARGET=$(%__make -qp -C %{__cmake_builddir} | 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
CTEST_OUTPUT_ON_FAILURE=1 \
%make_build -C .obj-%{_target_platform} $TEST_TARGET || echo "RPM TESTS FAILED"
%make_build -C %{__cmake_builddir} $TEST_TARGET || echo "RPM TESTS FAILED"
else echo "RPM TESTS SKIPPED"; fi
%endif

Expand Down

0 comments on commit 108ff2b

Please sign in to comment.