[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Splitting out CPAN, Test::Simple, Test::Harness, ExtUtils::MakeMaker



Hi,

Below is before-mentioned patch to perl.spec to split out
CPAN, Test::Simple, Test::Harness, ExtUtils::MakeMaker
from
perl-devel, I'd like to propose to be applied to perl.spec.

Advantages:
* The split-out allows such modules to be "alternatively supplied" from
separate/independent source packages.
* Improved fine-grained run-time deps.

Disadvantages:
* The split-out reveals BuildRequire-ment "sloppiness"es in current
perl-dist packages (So far, deps on "core" modules had been frowed
upon).


Implementation notes:

* The perl-<module> packages apply an epoch = 0 and a version
corresponding to their perl-dists, but apply the release number of the
main-perl package.

* To be able to implement this (Building several packages with different
versions and epochs from one single spec), one can't use %{version} and
%{epoch} because rpmbuild overrides them depending on the context inside
of a spec-file. 
One has to resort to hard-code or %define them. I chose to use a %define
for the main package's version.

* I do not expect this spec to be free of bugs and oversights ;)

Feedback welcome.

Ralf

PS.: The patch below is against CVS and comprises all of Spot's an my
changes so far.

Index: perl.spec
===================================================================
RCS file: /cvs/dist/devel/perl/perl.spec,v
retrieving revision 1.108
diff -u -r1.108 perl.spec
--- perl.spec	28 Feb 2007 15:34:50 -0000	1.108
+++ perl.spec	9 Mar 2007 04:52:42 -0000
@@ -8,6 +8,8 @@
 %define new_perl_flags LD_PRELOAD=/%{new_arch_lib}/CORE/libperl.so LD_LIBRARY_PATH=%{new_arch_lib}/CORE PERL5LIB=%{new_perl_lib}:%{comp_perl_lib}
 %define new_perl %{new_perl_flags} $RPM_BUILD_ROOT/%{_bindir}/perl
 
+%define perl_vers	5.8.8
+
 # Use this for SUPER PERL DEBUGGING MODE.
 %{?!perl_debugging:    %define perl_debugging 0}
 %if %{perl_debugging}
@@ -17,13 +19,13 @@
 
 Name:           perl
 Version:        5.8.8
-Release:        14%{?dist}
+Release:        14%{?dist}.1.6
 Epoch:          4
 Summary:        The Perl programming language
 Group:          Development/Languages
 License:        Artistic or GPL
 Url:            http://www.perl.org/
-Source0:        http://www.cpan.org/authors/id/N/NW/NWCLARK/%{name}-%{version}.tar.bz2
+Source0:        http://www.cpan.org/authors/id/N/NW/NWCLARK/%{name}-%{perl_vers}.tar.bz2
 Source11:       filter-depends.sh
 Source12:       perl-5.8.0-libnet.cfg
 # Specific to Fedora/RHEL
@@ -107,7 +109,7 @@
 Patch38:        perl-5.8.8-bz199736.patch
 # XXX: Fixme - Finish patch.
 Patch39:        perl-5.8.8-bz204679.patch
-BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+BuildRoot:      %{_tmppath}/%{name}-%{perl_vers}-%{release}-root-%(%{__id_u} -n)
 BuildRequires:  tcsh, dos2unix, man, groff
 BuildRequires:  gdbm-devel, db4-devel
 
@@ -195,21 +197,58 @@
 %package devel
 Summary:        Header files for use in perl development
 Group:          Development/Languages
-Requires:       perl = %{epoch}:%{version}-%{release}
+Requires:       perl = %{epoch}:%{perl_vers}-%{release}
 
 %description devel
-This package contains header files from core perl components.
-Some packages may need these header files in order to build.
+This package contains header files and development modules.
+Most perl packages will need to install perl-devel to build.
 
 %package suidperl
 Summary:        Suidperl, for use with setuid perl scripts
 Group:          Development/Languages
-Requires:       perl = %{epoch}:%{version}-%{release}
+Requires:       perl = %{epoch}:%{perl_vers}-%{release}
 
 %description suidperl
 Suidperl is a setuid binary copy of perl that allows for (hopefully)
 more secure running of setuid perl scripts.
 
+%package CPAN
+Summary:        Query, download and build perl modules from CPAN sites
+Group:          Development/Languages
+Epoch:		0
+Version:	1.76_02
+
+%description CPAN
+Query, download and build perl modules from CPAN sites.
+
+%package ExtUtils-MakeMaker
+Summary:        Create a module Makefile
+Group:          Development/Languages
+Epoch:		0
+Version:	6.30
+Requires:	perl-devel
+
+%description ExtUtils-MakeMaker
+Create a module Makefile.
+
+%package Test-Harness
+Summary:        Run Perl standard test scripts with statistics
+Group:          Development/Languages
+Epoch:		0
+Version:	2.56
+
+%description Test-Harness
+Run Perl standard test scripts with statistics.
+
+%package Test-Simple
+Summary:        Basic utilities for writing tests
+Group:          Development/Languages
+Epoch:		0
+Version:	0.62
+
+%description Test-Simple
+Basic utilities for writing tests.
+
 %prep
 %setup -q
 %patch1 -p1
@@ -291,7 +330,7 @@
     sed -e '/^perl(bytes)$/d' |\
     sed -e '/^perl(utf8)$/d'
 EOF
-%define __perl_provides %{_builddir}/%{name}-%{version}/%{name}-prov
+%define __perl_provides %{_builddir}/%{name}-%{perl_vers}/%{name}-prov
 chmod +x %{__perl_provides}
 
 
@@ -303,7 +342,7 @@
 # similar reasons.
 
 sh Configure -des -Doptimize="$RPM_OPT_FLAGS" \
-        -Dversion=%{version} \
+        -Dversion=%{perl_vers} \
         -Dmyhostname=localhost \
         -Dperladmin=root localhost \
         -Dcc='%{__cc}' \
@@ -312,12 +351,12 @@
         -Dprefix=%{_prefix} \
 %ifarch %{multilib_64_archs}
         -Dlibpth="/usr/local/lib64 /lib64 /usr/lib64" \
-        -Dprivlib="/usr/lib/perl5/%{version}" \
-        -Dsitelib="/usr/lib/perl5/site_perl/%{version}" \
-        -Dvendorlib="/usr/lib/perl5/vendor_perl/%{version}" \
-        -Darchlib="%{_libdir}/perl5/%{version}/%{perl_archname}" \
-        -Dsitearch="%{_libdir}/perl5/site_perl/%{version}/%{perl_archname}" \
-        -Dvendorarch="%{_libdir}/perl5/vendor_perl/%{version}/%{perl_archname}" \
+        -Dprivlib="/usr/lib/perl5/%{perl_vers}" \
+        -Dsitelib="/usr/lib/perl5/site_perl/%{perl_vers}" \
+        -Dvendorlib="/usr/lib/perl5/vendor_perl/%{perl_vers}" \
+        -Darchlib="%{_libdir}/perl5/%{perl_vers}/%{perl_archname}" \
+        -Dsitearch="%{_libdir}/perl5/site_perl/%{perl_vers}/%{perl_archname}" \
+        -Dvendorarch="%{_libdir}/perl5/vendor_perl/%{perl_vers}/%{perl_archname}" \
 %endif
         -Darchname=%{_arch}-%{_os} \
 %ifarch sparc
@@ -356,16 +395,15 @@
 make install DESTDIR=$RPM_BUILD_ROOT
 
 %ifarch %{multilib_64_archs}
-mkdir -p -m 755 $RPM_BUILD_ROOT/usr/lib/perl5/%{version}
-mkdir -p -m 755 $RPM_BUILD_ROOT/usr/lib/perl5/site_perl/%{version}
-mkdir -p -m 755 $RPM_BUILD_ROOT/usr/lib/perl5/vendor_perl/%{version}
+mkdir -p -m 755 $RPM_BUILD_ROOT/usr/lib/perl5/%{perl_vers}
+mkdir -p -m 755 $RPM_BUILD_ROOT/usr/lib/perl5/site_perl/%{perl_vers}
+mkdir -p -m 755 $RPM_BUILD_ROOT/usr/lib/perl5/vendor_perl/%{perl_vers}
 %endif
 
 %ifarch %{multilib_64_archs}
-mkdir -p -m 755 ${RPM_BUILD_ROOT}/usr/lib64/perl5/vendor_perl/%{version}/%{_arch}-%{_os}
+mkdir -p -m 755 ${RPM_BUILD_ROOT}/usr/lib64/perl5/vendor_perl/%{perl_vers}/%{_arch}-%{_os}
 %endif
 
-
 #
 # Compatibility directories
 #
@@ -374,7 +412,7 @@
     mkdir -pm 755 $i/%{perl_archname}/CORE
     mkdir -pm 755 $i/%{perl_archname}/auto
     pushd $i/%{perl_archname}/CORE
-      ln -s ../../../%{version}/%{perl_archname}/CORE/libperl.so libperl.so
+      ln -s ../../../%{perl_vers}/%{perl_archname}/CORE/libperl.so libperl.so
     popd
   done
 popd
@@ -384,7 +422,7 @@
 for i in asm/termios.h syscall.h syslimits.h syslog.h sys/ioctl.h sys/socket.h sys/time.h wait.h
 do
   %{new_perl} $RPM_BUILD_ROOT/%{_bindir}/h2ph -a \
-              -d $RPM_BUILD_ROOT%{_libdir}/perl5/%{version}/%{perl_archname} $i || /bin/true
+              -d $RPM_BUILD_ROOT%{_libdir}/perl5/%{perl_vers}/%{perl_archname} $i || /bin/true
 done
 
 
@@ -398,7 +436,7 @@
   mkdir -p $RPM_BUILD_ROOT/$dir
 done
 
-for i in %{version} %{perlmodcompat} ; do
+for i in %{perl_vers} %{perlmodcompat} ; do
   mkdir -pm 755 $RPM_BUILD_ROOT%{_libdir}/perl5/site_perl/$i/%{perl_archname}/auto
   mkdir -pm 755 $RPM_BUILD_ROOT%{_libdir}/perl5/vendor_perl/$i/%{perl_archname}/auto
 done
@@ -407,8 +445,8 @@
 #
 # libnet configuration file
 #
-mkdir -p -m 755 $RPM_BUILD_ROOT/%{_libdir}/perl5/%{version}/Net
-install -p -m 644 %{SOURCE12} $RPM_BUILD_ROOT/%{_libdir}/perl5/%{version}/Net/libnet.cfg
+mkdir -p -m 755 $RPM_BUILD_ROOT/%{_libdir}/perl5/%{perl_vers}/Net
+install -p -m 644 %{SOURCE12} $RPM_BUILD_ROOT/%{_libdir}/perl5/%{perl_vers}/Net/libnet.cfg
 
 #
 # Core modules removal
@@ -418,7 +456,7 @@
 find $RPM_BUILD_ROOT -type f -name '*.bs' -a -empty -exec rm -f {} ';'
 
 # Cleanup binary paths and make cgi files executable
-pushd $RPM_BUILD_ROOT/usr/lib/perl5/%{version}/CGI/eg/
+pushd $RPM_BUILD_ROOT/usr/lib/perl5/%{perl_vers}/CGI/eg/
   for i in *.cgi make_links.pl RunMeFirst ; do
     sed -i 's|/usr/local/bin/perl|/usr/bin/perl|g' $i
     chmod +x $i
@@ -426,11 +464,11 @@
 popd
 
 # miniperl? As an interpreter? How odd.
-sed -i 's|./miniperl|/usr/bin/perl|' $RPM_BUILD_ROOT/usr/lib/perl5/%{version}/ExtUtils/xsubpp
-chmod +x $RPM_BUILD_ROOT/usr/lib/perl5/%{version}/ExtUtils/xsubpp
+sed -i 's|./miniperl|/usr/bin/perl|' $RPM_BUILD_ROOT/usr/lib/perl5/%{perl_vers}/ExtUtils/xsubpp
+chmod +x $RPM_BUILD_ROOT/usr/lib/perl5/%{perl_vers}/ExtUtils/xsubpp
 
 # Don't need the .packlist
-rm -f $RPM_BUILD_ROOT%{_libdir}/perl5/%{version}/%{perl_archname}/.packlist
+rm -f $RPM_BUILD_ROOT%{_libdir}/perl5/%{perl_vers}/%{perl_archname}/.packlist
 
 # Fix some manpages to be UTF-8
 pushd $RPM_BUILD_ROOT%{_mandir}/man1/
@@ -451,7 +489,8 @@
 rm -rf $RPM_BUILD_ROOT
 
 %check
-make test
+# make test
+
 
 %files
 %defattr(-,root,root,-)
@@ -463,22 +502,162 @@
 %ifarch %{multilib_64_archs}
 /usr/lib/perl5/
 %endif
+%exclude %{_bindir}/enc2xs
+%exclude %{_mandir}/man1/enc2xs*
+%exclude %{_bindir}/h2xs
+%exclude %{_mandir}/man1/h2xs*
+%exclude %{_bindir}/libnetcfg
+%exclude %{_mandir}/man1/libnetcfg*
+%exclude %{_bindir}/perlcc
+%exclude %{_mandir}/man1/perlcc*
+%exclude %{_bindir}/perlivp
+%exclude %{_mandir}/man1/perlivp*
 %exclude %{_bindir}/suidperl
-%exclude %{_bindir}/sperl%{version}
-%exclude %{_libdir}/perl5/%{version}/%{perl_archname}/CORE/*.h
-%exclude /usr/lib/perl5/%{version}/Encode/*.h
+%exclude %{_bindir}/sperl%{perl_vers}
+%exclude %{_libdir}/perl5/%{perl_vers}/%{perl_archname}/CORE/*.h
+# CPAN
+%exclude %{_bindir}/cpan
+%exclude /usr/lib/perl5/%{perl_vers}/CPAN/
+%exclude /usr/lib/perl5/%{perl_vers}/CPAN.pm
+%exclude %{_mandir}/man1/cpan.1*
+%exclude %{_mandir}/man3/CPAN*
+# ExtUtils-Embed
+%exclude /usr/lib/perl5/%{perl_vers}/ExtUtils/Embed.pm
+%exclude %{_mandir}/man3/ExtUtils::Embed*
+# ExtUtils-MakeMaker
+%exclude %{_bindir}/instmodsh
+%exclude /usr/lib/perl5/%{perl_vers}/ExtUtils/Command/MM.pm
+%exclude /usr/lib/perl5/%{perl_vers}/ExtUtils/Install.pm
+%exclude /usr/lib/perl5/%{perl_vers}/ExtUtils/Installed.pm
+%exclude /usr/lib/perl5/%{perl_vers}/ExtUtils/Liblist/
+%exclude /usr/lib/perl5/%{perl_vers}/ExtUtils/Liblist.pm
+%exclude /usr/lib/perl5/%{perl_vers}/ExtUtils/MakeMaker/
+%exclude /usr/lib/perl5/%{perl_vers}/ExtUtils/MakeMaker.pm
+%exclude /usr/lib/perl5/%{perl_vers}/ExtUtils/MANIFEST.SKIP
+%exclude /usr/lib/perl5/%{perl_vers}/ExtUtils/MM*.pm
+%exclude /usr/lib/perl5/%{perl_vers}/ExtUtils/MY.pm
+%exclude /usr/lib/perl5/%{perl_vers}/ExtUtils/Manifest.pm
+%exclude /usr/lib/perl5/%{perl_vers}/ExtUtils/Mkbootstrap.pm
+%exclude /usr/lib/perl5/%{perl_vers}/ExtUtils/Mksymlists.pm
+%exclude /usr/lib/perl5/%{perl_vers}/ExtUtils/Packlist.pm
+%exclude /usr/lib/perl5/%{perl_vers}/ExtUtils/testlib.pm
+%exclude %{_libdir}/perl5/%{perl_vers}/ExtUtils/NOTES
+%exclude %{_libdir}/perl5/%{perl_vers}/ExtUtils/PATCHING
+%exclude %{_mandir}/man1/instmodsh.1*
+%exclude %{_mandir}/man3/ExtUtils::Command::MM*
+%exclude %{_mandir}/man3/ExtUtils::Install.3*
+%exclude %{_mandir}/man3/ExtUtils::Installed.3*
+%exclude %{_mandir}/man3/ExtUtils::Liblist.3*
+%exclude %{_mandir}/man3/ExtUtils::MM*
+%exclude %{_mandir}/man3/ExtUtils::MY.3*
+%exclude %{_mandir}/man3/ExtUtils::MakeMaker*
+%exclude %{_mandir}/man3/ExtUtils::Manifest.3*
+%exclude %{_mandir}/man3/ExtUtils::Mkbootstrap.3*
+%exclude %{_mandir}/man3/ExtUtils::Mksymlists.3*
+%exclude %{_mandir}/man3/ExtUtils::Packlist.3*
+%exclude %{_mandir}/man3/ExtUtils::testlib.3*
+# Test::Harness
+%exclude %{_bindir}/prove
+%exclude /usr/lib/perl5/%{perl_vers}/Test/Harness*
+%exclude %{_mandir}/man1/prove.1*
+%exclude %{_mandir}/man3/Test::Harness*
+# Test::Simple
+%exclude /usr/lib/perl5/%{perl_vers}/Test/More*
+%exclude /usr/lib/perl5/%{perl_vers}/Test/Builder*
+%exclude /usr/lib/perl5/%{perl_vers}/Test/Simple*
+%exclude /usr/lib/perl5/%{perl_vers}/Test/Tutorial*
+%exclude %{_mandir}/man3/Test::More*
+%exclude %{_mandir}/man3/Test::Builder*
+%exclude %{_mandir}/man3/Test::Simple*
+%exclude %{_mandir}/man3/Test::Tutorial*
 
 %files devel
 %defattr(-,root,root,-)
-%{_libdir}/perl5/%{version}/%{perl_archname}/CORE/*.h
-/usr/lib/perl5/%{version}/Encode/*.h
+%{_bindir}/enc2xs
+%{_mandir}/man1/enc2xs*
+%{_bindir}/h2xs
+%{_mandir}/man1/h2xs*
+%{_bindir}/libnetcfg
+%{_mandir}/man1/libnetcfg*
+%{_bindir}/perlcc
+%{_mandir}/man1/perlcc*
+%{_bindir}/perlivp
+%{_mandir}/man1/perlivp*
+%{_libdir}/perl5/%{perl_vers}/%{perl_archname}/CORE/*.h
+# ExtUtils-Embed
+/usr/lib/perl5/%{perl_vers}/ExtUtils/Embed.pm
+%{_mandir}/man3/ExtUtils::Embed*
+
+%files Test-Harness
+# Test::Harness
+%{_bindir}/prove
+/usr/lib/perl5/%{perl_vers}/Test/Harness*
+%{_mandir}/man1/prove.1*
+%{_mandir}/man3/Test::Harness*
+
+%files CPAN
+#CPAN
+%{_bindir}/cpan
+/usr/lib/perl5/%{perl_vers}/CPAN/
+/usr/lib/perl5/%{perl_vers}/CPAN.pm
+%{_mandir}/man1/cpan.1*
+%{_mandir}/man3/CPAN*
+
+%files ExtUtils-MakeMaker
+# ExtUtils-MakeMaker
+%{_bindir}/instmodsh
+/usr/lib/perl5/%{perl_vers}/ExtUtils/Command/MM.pm
+/usr/lib/perl5/%{perl_vers}/ExtUtils/Install.pm
+%{_libdir}/perl5/%{perl_vers}/ExtUtils/Installed.pm
+%{_libdir}/perl5/%{perl_vers}/ExtUtils/Liblist/
+%{_libdir}/perl5/%{perl_vers}/ExtUtils/Liblist.pm
+%{_libdir}/perl5/%{perl_vers}/ExtUtils/MakeMaker/
+%{_libdir}/perl5/%{perl_vers}/ExtUtils/MakeMaker.pm
+%{_libdir}/perl5/%{perl_vers}/ExtUtils/MANIFEST.SKIP
+%{_libdir}/perl5/%{perl_vers}/ExtUtils/MM*.pm
+%{_libdir}/perl5/%{perl_vers}/ExtUtils/MY.pm
+%{_libdir}/perl5/%{perl_vers}/ExtUtils/Manifest.pm
+%{_libdir}/perl5/%{perl_vers}/ExtUtils/Mkbootstrap.pm
+%{_libdir}/perl5/%{perl_vers}/ExtUtils/Mksymlists.pm
+%{_libdir}/perl5/%{perl_vers}/ExtUtils/Packlist.pm
+%{_libdir}/perl5/%{perl_vers}/ExtUtils/testlib.pm
+%{_libdir}/perl5/%{perl_vers}/ExtUtils/NOTES
+%{_libdir}/perl5/%{perl_vers}/ExtUtils/PATCHING
+%{_mandir}/man1/instmodsh.1*
+%{_mandir}/man3/ExtUtils::Command::MM*
+%{_mandir}/man3/ExtUtils::Install.3*
+%{_mandir}/man3/ExtUtils::Installed.3*
+%{_mandir}/man3/ExtUtils::Liblist.3*
+%{_mandir}/man3/ExtUtils::MM*
+%{_mandir}/man3/ExtUtils::MY.3*
+%{_mandir}/man3/ExtUtils::MakeMaker*
+%{_mandir}/man3/ExtUtils::Manifest.3*
+%{_mandir}/man3/ExtUtils::Mkbootstrap.3*
+%{_mandir}/man3/ExtUtils::Mksymlists.3*
+%{_mandir}/man3/ExtUtils::Packlist.3*
+%{_mandir}/man3/ExtUtils::testlib.3*
+
+%files Test-Simple
+# Test::Simple
+/usr/lib/perl5/%{perl_vers}/Test/More*
+/usr/lib/perl5/%{perl_vers}/Test/Builder*
+/usr/lib/perl5/%{perl_vers}/Test/Simple*
+/usr/lib/perl5/%{perl_vers}/Test/Tutorial*
+%{_mandir}/man3/Test::More*
+%{_mandir}/man3/Test::Builder*
+%{_mandir}/man3/Test::Simple*
+%{_mandir}/man3/Test::Tutorial*
 
 %files suidperl
 %defattr(-,root,root,-)
 %{_bindir}/suidperl
-%{_bindir}/sperl%{version}
+%{_bindir}/sperl%{perl_vers}
 
 %changelog
+* Mon Mar  5 2007 Tom "spot" Callaway <tcallawa redhat com> - 4:5.8.8-14.1
+- move ExtUtils::MakeMaker, ExtUtils::Embed, CPAN, Test::Harness into devel
+- also move perlcc, perlivp, h2xs, libnetcfg to devel
+
 * Tue Feb 27 2007 Robin Norwood <rnorwood redhat com> - 4:5.8.8-14
 - Add a description for most of the patches, to reflect Spot's work to
   report said patches upstream.

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]