Created
January 23, 2010 03:34
-
-
Save rsrchboy/284409 to your computer and use it in GitHub Desktop.
RPM macros to generate a -tests subpackage automagically
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
##################################################################### | |
# Perl tests subpackage macros... | |
%perl_version %(eval "`%{__perl} -V:version`"; echo $version) | |
%perl_testdir %{_libexecdir}/perl5-tests | |
%cpan_dist_name %(eval echo %{name} | %{__sed} -e 's/^perl-//') | |
# easily mark something as required by -tests and BR to the main package | |
%tests_req() %{expand:\ | |
BuildRequires: %*\ | |
%%tests_subpackage_requires %*\ | |
} | |
# fixup (and create if needed) the shbang lines in tests, so they work and | |
# rpmlint doesn't (correctly) have a fit | |
%fix_shbang_line() \ | |
TMPHEAD=`mktemp`\ | |
TMPBODY=`mktemp`\ | |
for file in %* ; do \ | |
head -1 $file > $TMPHEAD\ | |
tail -n +2 $file > $TMPBODY\ | |
%{__perl} -pi -e '$f = /^#!/ ? "" : "#!%{__perl}$/"; $_="$f$_"' $TMPHEAD\ | |
cat $TMPHEAD $TMPBODY > $file\ | |
done\ | |
%{__perl} -MExtUtils::MakeMaker -e "ExtUtils::MM_Unix->fixin(qw{%*})"\ | |
%{__rm} $TMPHEAD $TMPBODY\ | |
%{nil} | |
# additional -tests subpackage requires, if any | |
%tests_subpackage_requires() %{expand: \ | |
%global __tests_spkg_req %{?__tests_spkg_req} %* \ | |
} | |
# additional -tests subpackage provides, if any | |
%tests_subpackage_provides() %{expand: \ | |
%global __tests_spkg_prov %{?__tests_spkg_prov} %* \ | |
} | |
# | |
# Runs after the body of %check completes. | |
# | |
%__perl_check_pre %{expand: \ | |
%{?__spec_check_pre} \ | |
pushd %{buildsubdir} \ | |
%define perl_br_testdir %{buildroot}%{perl_testdir}/%{cpan_dist_name} \ | |
%{__mkdir_p} %{perl_br_testdir} \ | |
%{__tar} -cf - %{__perl_test_dirs} | ( cd %{perl_br_testdir} && %{__tar} -xf - ) \ | |
find . -maxdepth 1 -type f -name '*META*' -exec %{__cp} -vp {} %{perl_br_testdir} ';' \ | |
find %{perl_br_testdir} -type f -exec %{__chmod} -c -x {} ';' \ | |
T_FILES=`find %{perl_br_testdir} -type f -name '*.t'` \ | |
%fix_shbang_line $T_FILES \ | |
%{__chmod} +x $T_FILES \ | |
%{_fixperms} %{perl_br_testdir} \ | |
popd \ | |
} | |
# | |
# The actual invoked macro | |
# | |
%perl_subpackage_tests() %{expand: \ | |
%global __perl_package 1\ | |
%global __perl_test_dirs %* \ | |
%global __spec_check_pre %{expand:%{__perl_check_pre}} \ | |
%package tests\ | |
Summary: Test suite for package %{name}\ | |
Group: Development/Debug\ | |
Requires: %{name} = %{version}-%{release}\ | |
Requires: /usr/bin/prove \ | |
%{?__tests_spkg_req:Requires: %__tests_spkg_req}\ | |
%{?__tests_spkg_prov:Provides: %__tests_spkg_prov}\ | |
AutoReqProv: 0 \ | |
%description tests\ | |
This package provides the test suite for package %{name}.\ | |
%files tests\ | |
%defattr(-,root,root,-)\ | |
%{perl_testdir}\ | |
} | |
# shortcut sugar | |
%perl_default_subpackage_tests %perl_subpackage_tests t/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment