From Fedora Project Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

An overloaded %debug_package, a couple additional macros, and an additional helper script are all that's needed to automatically generate a -tests subpackage.

Warning.png
Proof-of-concept only!
These are rough, proof-of-concept demonstrations. They certainly need more work and cleanup, even before just living in one's .rpmmacros file full-time. (Which, incidentally, is a good way to try this out.)

add to $HOME/.rpmmacros

# FIXME: need some magic here!
%__is_perl_pkg  1

#   Template for debug information sub-package.
%debug_package \
%ifnarch noarch\
%global __debug_package 1\
%package debug\
Summary: Debug information for package %{name}\
Group: Development/Debug\
AutoReqProv: 0\
%description debug\
This package provides debug information for package %{name}.\
Debug information is useful when developing applications that use this\
package or when debugging this package.\
%files debug -f debugfiles.list\
%defattr(-,root,root)\
%endif\
%if %{__is_perl_pkg}0\
%global __perl_package 1\
%package tests\
Summary: Test suite for package %{name}\
Group: Development/Debug\
Requires: %{name} = %{version}\
AutoReqProv: 0\
%description tests\
This package provides the test suite for package %{name}.\
%files tests -f testsfiles.list\
%defattr(-,root,root)\
%endif\
%{nil}

%perl_version      %(eval "`%{__perl} -V:version`"; echo $version)
%perl_testsuitedir /usr/lib/perl5/tests/%{perl_version}/vendor_tests

%__perl_install_post\
$HOME/bin/find-perl-testsuite.sh %{perl_testsuitedir} > testsfiles.list\
%{nil}

%__spec_install_post\
%{?__debug_package:%{__debug_install_post}}\
%{?__perl_package:%{__perl_install_post}}\
%{__arch_install_post}\
%{__os_install_post}\
%{nil}

create as $HOME/bin/find-perl-testsuite.sh

#!/bin/sh

# Note this is SUPER simplistic, and will die a horrible death if anything is
# even off a little bit from what we expect.
#
# This code is licensed under the GPL, either version 2 or any later version
# you choose.
#
# Chris Weyl <cweyl@alumni.drew.edu> 2008

set -ex

TS_DIR_ROOT="$1"
DIST_NAME=`echo $RPM_PACKAGE_NAME | sed -e 's/^perl-//'`

TS_DIR="$TS_DIR_ROOT/$DIST_NAME"

mkdir -p $RPM_BUILD_ROOT/$TS_DIR

tar -cf - t/ | ( cd $RPM_BUILD_ROOT/$TS_DIR && tar -xf - )

# FIXME for now, just add the whole kit-n-kaboodle to %files
echo '/usr/lib/perl5/tests'

# fin!

Now, try building a perl package :)