Features/FullyTestablePerl/RpmMacros

From FedoraProject

Jump to: navigation, search

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 (medium size).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 :)