X-Git-Url: https://git.pld-linux.org/?a=blobdiff_plain;f=perl.spec;h=cea4b485c4a87d07983e1928fcbfcf8698fcba54;hb=d12c3b8bdc2f3d8510a8cc583c1133f5b1b173cc;hp=a783b2752d141faf287b666ea900e45fb0ad27d0;hpb=3641062d46fb778675b5996ab091875e8b4f3c31;p=packages%2Fperl.git diff --git a/perl.spec b/perl.spec index a783b27..cea4b48 100644 --- a/perl.spec +++ b/perl.spec @@ -11,28 +11,39 @@ # TODO: # - fix "FIXME"s, review "XXX"s # - add the {O,N}DBM_File modules -# - review the perldiag.pod issue +# - `diagnostics.pm' (perl-base) requires `perldiag.pod' (perl-perldoc) +# move .pod file to -base or S: perl-perldoc in -base # - consider disabling ithreads by default # - what about "prove" (binary+manual)? (conflicts with standalone Test-Harness) # - patch MakeMaker to get rid of empty *.bs files (MM_Unix::dynamic_bs()) -# - %{__cc}: cc -c -o uhv.o -DPERL_CORE -DPERL_MICRO -DSTANDARD_C -DPERL_USE_SAFE_PUTENV -O2 -march=i686 hv.c +# - consider separating C/XS development files (*.h, libperl.so) +# and perl development modules (like MakeMaker, Devel...) +# - resolve ugly perl-base/perl-dirs dependency loop +# (in fact perl-dirs dep in perl-base could be dropped and perl-dirs +# deps in external modules autogenerated - perhaps with proper ">= version") # # TODO for perl-dependent packages: # - change all "R/BR: perl" to one of perl-{base,modules,devel} # +# NOTE +# - modules in 5.10.0: http://search.cpan.org/~rgarcia/perl-5.10.0/ -%define _abi 5.10.0 - +%define abi 5.10.0 %define perlthread %{?with_threads:-thread-multi} -%define perl_privlib %{_datadir}/perl5/%{version} -%define perl_archlib %{_libdir}/perl5/%{version}/%{_target_platform}%{perlthread} +%define perl_privlib %{_datadir}/perl5/%{ver} +%define perl_archlib %{_libdir}/perl5/%{ver}/%{_target_platform}%{perlthread} %define perl_sitelib %{_usr}/local/share/perl5 -%define perl_sitearch %{_usr}/local/lib/perl5/%{_abi}/%{_target_platform}%{perlthread} +%define perl_sitearch %{_usr}/local/lib/perl5/%{abi}/%{_target_platform}%{perlthread} %define perl_vendorlib %{_datadir}/perl5/vendor_perl -%define perl_vendorarch %{_libdir}/perl5/vendor_perl/%{_abi}/%{_target_platform}%{perlthread} +%define perl_vendorarch %{_libdir}/perl5/vendor_perl/%{abi}/%{_target_platform}%{perlthread} + +# extract module version from source +%define perl_modver() %([ -f %{SOURCE3} ] && awk -vp=%1 '$1 == p{print $3}' %{SOURCE3} || echo ERROR) +%define perl_modversion() %([ -f %{SOURCE3} ] && awk -vp=%1 '$1 == p{m=$1; gsub(/::/, "-", m); printf("perl-%s = %s\\n", m, $3)}END{if (!m) printf("# Error looking up [%s]\\n", p)}' %{SOURCE3} || echo ERROR) -%define _rel 0.2 +%define ver 5.10.0 +%define rel 19 Summary: Practical Extraction and Report Language (Perl) Summary(cs.UTF-8): Programovací jazyk Perl Summary(da.UTF-8): Programmeringssproget Perl @@ -55,41 +66,47 @@ Summary(sv.UTF-8): Programmeringsspråket Perl Summary(tr.UTF-8): Kabuk yorumlama dili Summary(zh_CN.UTF-8): Perl 编程语言。 Name: perl -Version: 5.10.0 -Release: %{_rel}%{!?with_threads:_nothr} +Version: %{ver} +Release: %{rel}%{!?with_threads:_nothr} Epoch: 1 License: GPL v1+ or Artistic Group: Development/Languages/Perl -Source0: http://www.cpan.org/src/%{name}-%{version}.tar.gz +Source0: http://www.cpan.org/src/%{name}-%{ver}.tar.gz # Source0-md5: d2c39b002ebfd2c3c5dba589365c5a71 Source1: http://www.mif.pg.gda.pl/homepages/ankry/man-PLD/%{name}-non-english-man-pages.tar.bz2 # Source1-md5: de47d7893f49ad7f41ba69c78511c0db Source2: %{name}.prov +Source3: %{name}-modules Patch0: %{name}_581-noroot_install.patch Patch1: %{name}_581-INC.patch -Patch3: %{name}_580-errno_h-parsing.patch -Patch4: %{name}_580-use-LD_PRELOAD-for-libperl.so.patch -Patch5: %{name}_581-soname.patch -Patch6: %{name}-test-noproc.patch -Patch7: %{name}_585-microperl_uconfig.patch -Patch13: %{name}-write-permissions.patch -Patch15: %{name}-timer-test.patch +Patch2: %{name}_580-errno_h-parsing.patch +Patch3: %{name}_581-soname.patch +Patch4: %{name}-test-noproc.patch +Patch5: %{name}_585-microperl_uconfig.patch +Patch6: %{name}-write-permissions.patch +Patch7: %{name}-timer-test.patch +Patch8: %{name}-h2ph-includes.patch +Patch9: %{name}-t-syslog.patch +Patch10: %{name}-PerlIO.patch +Patch11: %{name}-attribute_error.patch URL: http://dev.perl.org/perl5/ %ifarch ppc # gcc 3.3.x miscompiles pp_hot.c BuildRequires: gcc >= 5:4.1 %endif %{?with_gdbm:BuildRequires: gdbm-devel} +# asm-generic, merged x86 asm dirs +BuildRequires: linux-libc-headers >= 7:2.6.24 # required for proper Provides generation (older are not supported by spec) BuildRequires: rpm-build >= 4.3-0.20040107.4 -BuildRequires: rpmbuild(macros) >= 1.310 -Requires: %{name}-base = %{epoch}:%{version}-%{release} -Requires: %{name}-modules = %{epoch}:%{version}-%{release} -Requires: %{name}-doc-reference = %{epoch}:%{version}-%{release} -Requires: perldoc +BuildRequires: rpmbuild(macros) >= 1.426 +Requires: %{name}-base = %{epoch}:%{ver}-%{release} +Requires: %{name}-modules = %{epoch}:%{ver}-%{release} +Suggests: %{name}-doc-reference = %{epoch}:%{ver}-%{release} +Suggests: perldoc BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) -%define __perl %{_builddir}/perl-%{version}/runperl +%define __perl %{_builddir}/perl-%{ver}/runperl %define __perl_provides %{__perl} %{SOURCE2} %description @@ -282,19 +299,18 @@ Biblioteka współdzielona Perla. Summary: Base Perl components for a minimal installation Summary(pl.UTF-8): Podstawowe składniki potrzebne do minimalnej instalacji Perla Group: Development/Languages/Perl -Requires: %{name}-libs = %{epoch}:%{version}-%{release} -Requires: perl-dirs(%{_target_cpu}) +Requires: %{name}-libs = %{epoch}:%{ver}-%{release} +Requires: %{perl_vendorarch} +Requires: %{perl_vendorlib} Provides: perl(largefiles) -Provides: perl-File-Compare = 1.1003 -Provides: perl-File-Spec = 3.12 -Provides: perl-File-Temp = 0.16 -Provides: perl-IO = 1.22 -Provides: perl-Safe = 2.12 -Provides: perl-Socket = 1.78 -Provides: perl-Tie-File = 0.97 -# broken, unsupported modules -Obsoletes: perl-SOAP -Obsoletes: perl-Sort-PolySort +Provides: %perl_modversion File::Compare +Provides: %perl_modversion File::Spec +Provides: %perl_modversion File::Temp +Provides: %perl_modversion IO +Provides: %perl_modversion PerlIO::via::QuotedPrint +Provides: %perl_modversion Safe +Provides: %perl_modversion Socket +Provides: %perl_modversion Tie::File Conflicts: perl < 1:5.8.0 %description base @@ -307,37 +323,21 @@ Podstawowe składniki, pliki, główne moduły itp. - minimalna instalacja Perla, nadająca się do użytku. Zaleca się instalację pełnego Perla (pakietu perl), jeśli to tylko możliwe. -%package GDBM_File -Summary: GDBM_File - Perl5 access to the gdbm library -Summary(pl.UTF-8): GDBM_File - dostęp do biblioteki gdbm w Perlu -Group: Libraries -Requires: %{name}-base = %{epoch}:%{version}-%{release} -# FIXME: Set Version: 1.08 and Release: 1 instead of inheriting -# values from the main package. Why this causes setting -# version and release macros up to the end of this spec? - -%description GDBM_File -GDBM_File is a module which allows Perl programs to make use of the -facilities provided by the GNU gdbm library. - -%description GDBM_File -l pl.UTF-8 -GDBM_File jest modułem, który umożliwia programom w Perlu korzystanie -z biblioteki GNU gdbm. - %package devel Summary: Perl development files Summary(pl.UTF-8): Pliki potrzebne przy tworzeniu własnych aplikacji w Perlu Summary(pt_BR.UTF-8): Arquivos de desenvolvimento e cabeçalhos para o Perl Group: Development/Libraries -Requires: %{name}-base = %{epoch}:%{version}-%{release} -Requires: %{name}-modules = %{epoch}:%{version}-%{release} -Requires: %{name}-tools-pod = %{epoch}:%{version}-%{release} -Provides: perl-CPAN = 1.76_02 -Provides: perl-Devel-DProf = 20050603.00 -Provides: perl-Devel-PPPort = 3.06_01 -Provides: perl-Devel-Peek = 1.03 -Provides: perl-ExtUtils-Embed = 1.2506_01 -Provides: perl-ExtUtils-MakeMaker = 6.30 +Requires: %{name}-base = %{epoch}:%{ver}-%{release} +Requires: %{name}-modules = %{epoch}:%{ver}-%{release} +Requires: %{name}-tools-pod = %{epoch}:%{ver}-%{release} +Provides: %perl_modversion CPAN +Provides: %perl_modversion Devel::DProf +Provides: %perl_modversion Devel::PPPort +Provides: %perl_modversion Devel::Peek +Provides: %perl_modversion ExtUtils::Embed +Provides: %perl_modversion ExtUtils::MakeMaker +Provides: %perl_modversion Module::Build Obsoletes: perl-lib-devel %description devel @@ -379,46 +379,40 @@ Extraction and Report Language) i jego interpretera. Summary: Modules from the core Perl distribution Summary(pl.UTF-8): Moduły z podstawowej dystrybucji Perla Group: Libraries -Requires: %{name}-base = %{epoch}:%{version}-%{release} -Provides: perl-Attribute-Handlers = 0.78_02 -Provides: perl-CGI = 3.15 -Provides: perl-Class-ISA = 0.33 -Provides: perl-Digest = 1.14 -Provides: perl-Digest-MD5 = 2.36 -Provides: perl-Filter-Simple = 0.82 -Provides: perl-FindBin = 1.47 -#Provides: perl-Hash-Utils = 0.05 Data::Util is missing -Provides: perl-I18N-LangTags = 0.35 -Provides: perl-IPC-SysV = 1.04 -Provides: perl-Locale-Codes = 2.07 -Provides: perl-Locale-Maketext = 1.09 -Provides: perl-MIME-Base64 = 3.07 -Provides: perl-Math-BigInt = 1.77 -Provides: perl-Math-BigRat = 0.15 -Provides: perl-Math-Trig = 1.03 -Provides: perl-Memoize = 1.01 -Provides: perl-NEXT = 0.60 -Provides: perl-PerlIO-via-QuotedPrint = 0.06 -Provides: perl-Pod-LaTeX = 0.58 -Provides: perl-Pod-Parser = 1.32 -Provides: perl-Scalar-List-Utils = 1.18 -Provides: perl-Storable = 2.15 -Provides: perl-Term-ANSIColor = 1.10 -Provides: perl-Term-Cap = 1.09 -Provides: perl-Test = 1.25 -Provides: perl-Test-Harness = 2.56 -Provides: perl-Test-Simple = 0.62 -Provides: perl-Text-Balanced = 1.95 -Provides: perl-Text-ParseWords = 3.24 -Provides: perl-Text-Soundex = 1.01 -# XXX: I'm not sure what to do with this one... -#Provides: perl-Text-Tabs+Wrap = 2005.0824(01) -Provides: perl-Time-HiRes = 1.86 -Provides: perl-UNIVERSAL = 1.01 -Provides: perl-Unicode-Collate = 0.52 -Provides: perl-Unicode-Normalize = 0.32 -Provides: perl-libnet = 1.19 -Obsoletes: perl-Encode-compat +Requires: %{name}-base = %{epoch}:%{ver}-%{release} +Provides: %perl_modversion Attribute::Handlers +Provides: %perl_modversion CGI +Provides: %perl_modversion Class::ISA +Provides: %perl_modversion Digest +Provides: %perl_modversion Digest::MD5 +Provides: %perl_modversion Filter::Simple +Provides: %perl_modversion FindBin +Provides: %perl_modversion I18N::LangTags +Provides: %perl_modversion IPC::SysV +Provides: %perl_modversion Locale::Maketext +Provides: %perl_modversion MIME::Base64 +Provides: %perl_modversion Math::BigInt +Provides: %perl_modversion Math::BigRat +Provides: %perl_modversion Math::Trig +Provides: %perl_modversion Memoize +Provides: %perl_modversion NEXT +Provides: %perl_modversion Pod::LaTeX +Provides: %perl_modversion Pod::Parser +Provides: %perl_modversion Storable +Provides: %perl_modversion Term::ANSIColor +Provides: %perl_modversion Term::Cap +Provides: %perl_modversion Test +Provides: %perl_modversion Test::Harness +Provides: %perl_modversion Test::Simple +Provides: %perl_modversion Text::Balanced +Provides: %perl_modversion Text::ParseWords +Provides: %perl_modversion Text::Soundex +Provides: %perl_modversion Time::HiRes +Provides: %perl_modversion UNIVERSAL +Provides: %perl_modversion Unicode::Collate +Provides: %perl_modversion Unicode::Normalize +Provides: %perl_modversion libnet +Provides: %perl_modversion version Obsoletes: perl-lib %description modules @@ -433,9 +427,9 @@ dystrybucji. Summary: perldoc - Look up Perl documentation in pod format Summary(pl.UTF-8): perldoc - przeszukiwanie dokumentacji Perla w formacie pod Group: Development/Tools -Requires: %{name}-modules = %{epoch}:%{version}-%{release} -Requires: %{name}-tools-pod = %{epoch}:%{version}-%{release} -Provides: perldoc = 3.13@%{version} +Requires: %{name}-modules = %{epoch}:%{ver}-%{release} +Requires: %{name}-tools-pod +Provides: perldoc = 3.14_02@%{ver} %description perldoc perldoc looks up a piece of documentation in .pod format that is @@ -464,7 +458,7 @@ Summary(sv.UTF-8): sperl, att användas med setuid perlskript Summary(uk.UTF-8): SUID-версія мови Perl Summary(zh_CN.UTF-8): sperl,用来与 setuid Perl 脚本一起使用 Group: Development/Languages/Perl -Requires: %{name}-base = %{epoch}:%{version}-%{release} +Requires: %{name}-base = %{epoch}:%{ver}-%{release} Obsoletes: perl-suidperl %description -n sperl @@ -519,13 +513,12 @@ setuid perl 脚本。 Summary: Various tools from the core Perl distribution Summary(pl.UTF-8): Różne narzędzia z podstawowej dystrybucji Perla Group: Applications -Requires: %{name}-devel = %{epoch}:%{version}-%{release} +Requires: %{name}-devel = %{epoch}:%{ver}-%{release} %description tools Various tools from the core Perl distribution: a2p - Awk to Perl translator find2perl - translate find command lines to Perl code -piconv - iconv(1), reinvented in Perl psed, s2p - a stream editor and others. @@ -533,7 +526,6 @@ and others. Różne narzędzia z podstawowej dystrybucji Perla: a2p - translator skryptów Awka do Perla find2perl - tłumaczenie linii poleceń programu find na kod w Perlu -piconv - iconv(1) napisany w Perlu psed, s2p - edytor strumieniowy i inne. @@ -541,14 +533,13 @@ i inne. Summary: Developer's tools from the core Perl distribution Summary(pl.UTF-8): Narzędzia z podstawowej dystrybucji Perla, przeznaczone dla programistów Group: Development/Tools -Requires: %{name}-base = %{epoch}:%{version}-%{release} -Requires: %{name}-devel = %{epoch}:%{version}-%{release} +Requires: %{name}-base = %{epoch}:%{ver}-%{release} +Requires: %{name}-devel = %{epoch}:%{ver}-%{release} %description tools-devel Various tools from the core Perl distribution: c2ph, pstruct - Dump C structures as generated from C stabs dprofpp - display Perl profile data -enc2xs - Perl Encode Module Generator h2ph - convert .h C header files to .ph Perl header files h2xs - convert .h C header files to Perl extensions perlcc - generate executables from Perl programs @@ -561,13 +552,12 @@ Różne narzędzia z podstawowej dystrybucji Perla: c2ph, pstruct - zrzucanie struktur C w postaci generowanej z tablic symboli z cc -g -S dprofpp - wyświetlanie perlowych danych profilujących -enc2xs - generator modułów kodujących w Perlu h2ph - konwerter plików nagłówkowych .h z C na perlowe pliki - nagłówkowe .ph -h2xs - konwerter plików nagłówkowych .h z C na rozszerzenia + nagłówkowe .ph +h2xs - konwerter plików nagłówkowych .h z C na rozszerzenia Perla -perlcc - generator binarek z programów w Perlu -perlivp - procedura weryfikacji instalacji Perla +perlcc - generator binarek z programów w Perlu +perlivp - procedura weryfikacji instalacji Perla pl2pm - zgrubne narzędzie do tłumaczenia plików pl Perla 4 na moduły .pm Perla 5 splain - wymuszenie obszernych ostrzeżeń diagnostycznych @@ -576,7 +566,7 @@ splain - wymuszenie obszernych ostrzeżeń diagnostycznych Summary: Tools for manipulating files in the POD format Summary(pl.UTF-8): Narzędzia do przetwarzania plików w formacie POD Group: Applications -Requires: %{name}-modules = %{epoch}:%{version}-%{release} +Requires: %{name}-modules = %{epoch}:%{ver}-%{release} %description tools-pod Tools for manipulating files in the POD (Plain Old Documentation) @@ -604,8 +594,7 @@ podselect - wypisanie wybranych sekcji z dokumentacji POD %package -n microperl Summary: A really minimal Perl, even more minimal than miniperl Summary(pl.UTF-8): Naprawdę minimalny Perl, nawet bardziej minimalny niż miniperl -# XXX: is there a more appropiate group? -Group: Applications +Group: Development/Languages/Perl %description -n microperl microperl is supposed to be able a really minimal Perl, even more @@ -626,19 +615,55 @@ Całość jest eksperymentalna. Jeśli nie wiesz co zrobić z microperlem, prawdopodobnie nie powinieneś tego robić. Nie zgłaszaj błędów w microperlu - popraw je. +%package Encode +Summary: Encode - character encodings +Summary(pl.UTF-8): Encode - kodowania znaków +Version: %perl_modver Encode +Group: Libraries +Requires: %{name}-base = %{epoch}:%{ver}-%{release} +Obsoletes: perl-Encode-compat + +%description Encode +The Encode module provides the interfaces between Perl's strings and +the rest of the system. + +%description Encode -l pl.UTF-8 +Moduł Encode udostępnia interfejs pomiędzy łańcuchami w wewnętrznym +formacie Perla a resztą systemu. + +%package GDBM_File +Summary: GDBM_File - Perl5 access to the gdbm library +Summary(pl.UTF-8): GDBM_File - dostęp do biblioteki gdbm w Perlu +Version: %perl_modver GDBM_File +Epoch: 2 +Group: Libraries +Requires: %{name}-base = 1:%{ver}-%{release} + +%description GDBM_File +GDBM_File is a module which allows Perl programs to make use of the +facilities provided by the GNU gdbm library. + +%description GDBM_File -l pl.UTF-8 +GDBM_File jest modułem, który umożliwia programom w Perlu korzystanie +z biblioteki GNU gdbm. + %prep %setup -q %patch0 -p1 %patch1 -p1 +%patch2 -p1 %patch3 -p1 %patch4 -p1 %patch5 -p1 %patch6 -p1 %patch7 -p1 -%patch13 -p1 -%patch15 -p1 +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 %build + unset LD_SYMBOLIC_FUNCTIONS || : sh Configure \ -des \ @@ -650,7 +675,7 @@ sh Configure \ -Dldflags="%{rpmldflags}" \ -Dlddlflags="-shared %{rpmldflags}" \ -Doptimize="%{rpmcflags}" \ - %{?debug:-DDEBUGGING} \ + -%{?debug:D}%{!?debug:U}DEBUGGING \ -Duseshrplib \ -Dd_dosuid \ -Dman1dir=%{_mandir}/man1 -Dman1ext=1 \ @@ -671,40 +696,30 @@ sh Configure \ -%{?with_threads:D}%{!?with_threads:U}usethreads \ -Duselargefiles -## why were these three undefined? -# -Ud_setresgid \ -# -Ud_setresuid \ -## what's the problem with this one? -# %ifarch sparc sparc64 -# -Ud_longdbl -# %endif - ## {Scalar,List}::Util should be in perl_archlib (it's a bit tricky and should ## probably be done in %%prep, but then Configure would complain (->MANIFEST)) mv ext/List/Util/lib/List/Util.pm ext/List/Util -rm --interactive=never ext/List/Util/Makefile.PL +%{__rm} ext/List/Util/Makefile.PL cat <<'EOF' > ext/List/Util/Makefile.PL use ExtUtils::MakeMaker; WriteMakefile(NAME=>"List::Util", VERSION_FROM=>"Util.pm", DEFINE=>"-DPERL_EXT"); EOF %{__make} \ - LIBPERL_SONAME=libperl.so.%{_abi} \ + LIBPERL_SONAME=libperl.so.%{abi} \ LDDLFLAGS="%{rpmcflags} -shared" cat > runperl <<'EOF' #!/bin/sh -LD_PRELOAD="%{_builddir}/%{name}-%{version}/libperl.so.%{_abi}" \ +LD_PRELOAD="%{_builddir}/%{name}-%{ver}/libperl.so.%{abi}" \ PERL5LIB="%{buildroot}%{perl_privlib}:%{buildroot}%{perl_archlib}" \ -exec %{buildroot}%{_bindir}/perl $* +exec %{buildroot}%{_bindir}/perl ${1:+"$@"} EOF chmod a+x runperl ## microperl %if %{with microperl} -rm --interactive=never uconfig.h -#chmod u+w uconfig.sh -#echo "usemallocwrap='define'" >> uconfig.sh +%{__rm} uconfig.h %{__make} -f Makefile.micro \ archlib=%{perl_archlib} \ archlibexp=%{perl_archlib} \ @@ -716,6 +731,7 @@ rm --interactive=never uconfig.h scriptdir=%{_bindir} \ scriptdirexp=%{_bindir} \ usemallocwrap='define' \ + CC="%{__cc}" \ OPTIMIZE="%{rpmcflags}" %endif @@ -723,109 +739,147 @@ rm --interactive=never uconfig.h #%{?with_tests:%{__make} minitest} %install -rm -rf $RPM_BUILD_ROOT -install -d $RPM_BUILD_ROOT%{_mandir}/{ja,ko,zh_CN,zh_TW}/man1 - -%{__make} install \ - DESTDIR=$RPM_BUILD_ROOT -%{?with_microperl:install microperl $RPM_BUILD_ROOT%{_bindir}} - -## use symlinks instead of hardlinks -%{__ln_s} -f perl%{version} $RPM_BUILD_ROOT%{_bindir}/perl -%{__ln_s} -f perl%{version} $RPM_BUILD_ROOT%{_bindir}/suidperl -%{__ln_s} -f c2ph $RPM_BUILD_ROOT%{_bindir}/pstruct -%{__ln_s} -f psed $RPM_BUILD_ROOT%{_bindir}/s2p - -## Fix lib -rm --interactive=never $RPM_BUILD_ROOT%{perl_archlib}/CORE/libperl.so -%{__ln_s} `%{__perl} -e '$_="'%{perl_archlib}/CORE/libperl.so.%{_abi}'";s|^'%{_libdir}'/*||;print'` \ - $RPM_BUILD_ROOT%{_libdir}/libperl.so.%{_abi} -%{__ln_s} libperl.so.%{_abi} $RPM_BUILD_ROOT%{_libdir}/libperl.so - -## Fix Config.pm: remove buildroot path and change man pages extensions -%{__perl} -pi -e 's,%{buildroot}/*,/,g' $RPM_BUILD_ROOT%{perl_archlib}/Config.pm -%{__perl} -pi -e "s,^man1ext='1',man1ext='1p'," $RPM_BUILD_ROOT%{perl_archlib}/Config_heavy.pl -%{__perl} -pi -e "s,^man3ext='3perl',man3ext='3pm'," $RPM_BUILD_ROOT%{perl_archlib}/Config_heavy.pl - -## Generate the *.ph files -owd="`pwd`" -cd /usr/include -H2PH=$RPM_BUILD_ROOT%{_bindir}/h2ph -PHDIR=$RPM_BUILD_ROOT%{perl_archlib} -WANTED=' - syscall.h - syslog.h - termios.h - wait.h - asm/termios.h - sys/ioctl.h - sys/socket.h - sys/syscall.h - sys/time.h - linux/posix_types.h - linux/stddef.h -' -# why it returns non-zero??? -%{__perl} $H2PH -a -d $PHDIR $WANTED || : -cd "$owd" - -## remove man pages for other operating systems -rm --interactive=never $RPM_BUILD_ROOT%{_mandir}/man1/perl{aix,amiga,apollo,beos,bs2000,ce,cygwin,dgux,dos}* \ - $RPM_BUILD_ROOT%{_mandir}/man1/perl{freebsd,hpux,machten,macos,mpeix,os2,os390}* \ - $RPM_BUILD_ROOT%{_mandir}/man1/perl{qnx,solaris,vmesa,vms,vos,win32}* - -## symlink perldelta.1.gz -> perlFOOdelta.1.gz -[ -e $RPM_BUILD_ROOT%{_mandir}/man1/perl%(echo %{version} | tr -d .)delta.1 ] || exit 1 -rm $RPM_BUILD_ROOT%{_mandir}/man1/perldelta.1 -echo ".so perl%(echo %{version} | tr -d .)delta.1" >$RPM_BUILD_ROOT%{_mandir}/man1/perldelta.1 - -## These File::Spec submodules are for non-Unix systems -rm --interactive=never $RPM_BUILD_ROOT%{perl_privlib}/File/Spec/[EMOVW]*.pm -rm $RPM_BUILD_ROOT%{_mandir}/man3/File::Spec::{Epoc,Mac,OS2,VMS,Win32}.3perl* - -## We already have these *.pod files as man pages -rm --interactive=never $RPM_BUILD_ROOT%{perl_privlib}/{Encode,Test,Net,Locale{,/Maketext}}/*.pod -rm $RPM_BUILD_ROOT%{perl_privlib}/pod/a2p.pod -rm --interactive=never $RPM_BUILD_ROOT%{perl_privlib}/*.pod -rm --interactive=never $RPM_BUILD_ROOT%{perl_archlib}/*.pod - -## this object file looks unused; why is it there? -rm --interactive=never $RPM_BUILD_ROOT%{perl_archlib}/CORE/sperl.o - -install -d doc-base/{Getopt/Long,Switch} \ - doc-devel/ExtUtils \ - doc-modules/{Attribute/Handlers,Filter/Simple,I18N/LangTags,Locale/{Codes,Maketext},Memoize,NEXT,Net/Ping,Term/ANSIColor,Test/Simple,Text/{Balanced,TabsWrap},Unicode/Collate,unicore} - -# needed only for tests -rm --interactive=never $RPM_BUILD_ROOT%{perl_privlib}/Unicode/Collate/keys.txt -mv -f $RPM_BUILD_ROOT%{perl_privlib}/unicore/ReadMe.txt \ - doc-modules/unicore -# source for *.pl -rm --interactive=never $RPM_BUILD_ROOT%{perl_privlib}/unicore/{*.txt,mktables} -# cpan tools, we use rpm instead of cpan for managing packages (some search tool would be nice to have but...) -rm --interactive=never $RPM_BUILD_ROOT%{_bindir}/cpan* -rm --interactive=never $RPM_BUILD_ROOT%{_mandir}/man1/cpan* -# others -rm --interactive=never $RPM_BUILD_ROOT%{_bindir}/config_data -rm --interactive=never $RPM_BUILD_ROOT%{_mandir}/man1/config_data* -rm --interactive=never $RPM_BUILD_ROOT%{_mandir}/man3/XS::APItest* -rm --interactive=never $RPM_BUILD_ROOT%{_mandir}/man3/XS::Typemap* - -## dir tree for other perl modules -install -d $RPM_BUILD_ROOT{%{perl_vendorlib},%{perl_vendorarch},%{perl_vendorarch}/auto} -owd="`pwd`" - -## non-english man pages -%{__bzip2} -dc %{SOURCE1} | tar xf - -C $RPM_BUILD_ROOT%{_mandir} - -mv -f $RPM_BUILD_ROOT%{_mandir}/man1/perlcn.* $RPM_BUILD_ROOT%{_mandir}/zh_CN/man1 -mv -f $RPM_BUILD_ROOT%{_mandir}/man1/perljp.* $RPM_BUILD_ROOT%{_mandir}/ja/man1 -mv -f $RPM_BUILD_ROOT%{_mandir}/man1/perlko.* $RPM_BUILD_ROOT%{_mandir}/ko/man1 -mv -f $RPM_BUILD_ROOT%{_mandir}/man1/perltw.* $RPM_BUILD_ROOT%{_mandir}/zh_TW/man1 - -sed -i -e 's#^\(ld.*=.*\)-Wl,--as-needed\(.*\)#\1 \2#g' $RPM_BUILD_ROOT%{perl_archlib}/Config*.pl - -rm -rf $RPM_BUILD_ROOT%{_mandir}/README.perl-non-english-man-pages +if [ ! -f makeinstall.stamp -o ! -d $RPM_BUILD_ROOT ]; then + rm -rf makeinstall.stamp installed.stamp $RPM_BUILD_ROOT + + %{__make} install \ + DESTDIR=$RPM_BUILD_ROOT + touch makeinstall.stamp +fi + +if [ ! -f installed.stamp ]; then + %{?with_microperl:install microperl $RPM_BUILD_ROOT%{_bindir}} + install -d $RPM_BUILD_ROOT%{_mandir}/{ja,ko,zh_CN,zh_TW}/man1 + + ## use symlinks instead of hardlinks + %{__ln_s} -f perl%{ver} $RPM_BUILD_ROOT%{_bindir}/perl + %{__ln_s} -f perl%{ver} $RPM_BUILD_ROOT%{_bindir}/suidperl + %{__ln_s} -f c2ph $RPM_BUILD_ROOT%{_bindir}/pstruct + %{__ln_s} -f psed $RPM_BUILD_ROOT%{_bindir}/s2p + + ## Fix lib + %{__rm} $RPM_BUILD_ROOT%{perl_archlib}/CORE/libperl.so + mv $RPM_BUILD_ROOT%{perl_archlib}/CORE/libperl.so.%{abi} $RPM_BUILD_ROOT%{_libdir} + %{__ln_s} ../../../../libperl.so.%{abi} $RPM_BUILD_ROOT%{perl_archlib}/CORE/libperl.so.%{abi} + %{__ln_s} libperl.so.%{abi} $RPM_BUILD_ROOT%{_libdir}/libperl.so + # installed as non-executable - let rpm generate deps + chmod 755 $RPM_BUILD_ROOT%{_libdir}/libperl.so.%{abi} + + ## Fix Config.pm: remove buildroot path and change man pages extensions + %{__perl} -pi -e 's,%{buildroot}/*,/,g' $RPM_BUILD_ROOT%{perl_archlib}/Config.pm + %{__perl} -pi -e "s,^man1ext='1',man1ext='1p'," $RPM_BUILD_ROOT%{perl_archlib}/Config_heavy.pl + %{__perl} -pi -e "s,^man3ext='3perl',man3ext='3pm'," $RPM_BUILD_ROOT%{perl_archlib}/Config_heavy.pl + + ## Generate the *.ph files + owd=$(pwd) + cd /usr/include + H2PH=$RPM_BUILD_ROOT%{_bindir}/h2ph + PHDIR=$RPM_BUILD_ROOT%{perl_archlib} + WANTED=' + syscall.h + syslog.h + termios.h + wait.h + asm/termios.h + sys/ioctl.h + sys/socket.h + sys/syscall.h + sys/time.h + linux/posix_types.h + linux/stddef.h + ' + # why it returns non-zero??? + %{__perl} $H2PH -a -d $PHDIR $WANTED || : + cd "$owd" + + ## remove man pages for other operating systems + %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/perl{aix,amiga,apollo,beos,bs2000,ce,cygwin,dgux,dos}* \ + $RPM_BUILD_ROOT%{_mandir}/man1/perl{freebsd,hpux,machten,macos,mpeix,os2,os390}* \ + $RPM_BUILD_ROOT%{_mandir}/man1/perl{qnx,solaris,vmesa,vms,vos,win32}* + + ## symlink perldelta.1.gz -> perlFOOdelta.1.gz + [ -e $RPM_BUILD_ROOT%{_mandir}/man1/perl%(echo %{ver} | tr -d .)delta.1 ] || exit 1 + rm $RPM_BUILD_ROOT%{_mandir}/man1/perldelta.1 + echo ".so perl%(echo %{ver} | tr -d .)delta.1" >$RPM_BUILD_ROOT%{_mandir}/man1/perldelta.1 + + ## These File::Spec submodules are for non-Unix systems + %{__rm} $RPM_BUILD_ROOT%{perl_privlib}/File/Spec/[EMOVW]*.pm + rm $RPM_BUILD_ROOT%{_mandir}/man3/File::Spec::{Epoc,Mac,OS2,VMS,Win32}.3perl* + + ## We already have these *.pod files as man pages + %{__rm} $RPM_BUILD_ROOT%{perl_privlib}/{Encode,Test,Net,Locale{,/Maketext}}/*.pod + rm $RPM_BUILD_ROOT%{perl_privlib}/pod/a2p.pod + %{__rm} $RPM_BUILD_ROOT%{perl_privlib}/*.pod + %{__rm} $RPM_BUILD_ROOT%{perl_archlib}/*.pod + + ## this object file looks unused; why is it there? + %{__rm} $RPM_BUILD_ROOT%{perl_archlib}/CORE/sperl.o + + install -d doc-base/{Getopt/Long,Switch} \ + doc-devel/ExtUtils \ + doc-modules/{Attribute/Handlers,Filter/Simple,I18N/LangTags,Locale/{Codes,Maketext},Memoize,NEXT,Net/Ping,Term/ANSIColor,Test/Simple,Text/{Balanced,TabsWrap},Unicode/Collate,unicore} + + # needed only for tests + %{__rm} $RPM_BUILD_ROOT%{perl_privlib}/Unicode/Collate/keys.txt + mv -f $RPM_BUILD_ROOT%{perl_privlib}/unicore/ReadMe.txt \ + doc-modules/unicore + # source for *.pl + %{__rm} $RPM_BUILD_ROOT%{perl_privlib}/unicore/{*.txt,mktables} + # cpan tools, we use rpm instead of cpan for managing packages (some search tool would be nice to have but...) + %{__rm} $RPM_BUILD_ROOT%{_bindir}/cpan* + %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/cpan* + # others + %{__rm} $RPM_BUILD_ROOT%{_bindir}/config_data + %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/config_data* + %{__rm} $RPM_BUILD_ROOT%{_mandir}/man3/XS::APItest* + %{__rm} $RPM_BUILD_ROOT%{_mandir}/man3/XS::Typemap* + + owd=$(pwd) + + ## non-english man pages + %{__bzip2} -dc %{SOURCE1} | tar xf - -C $RPM_BUILD_ROOT%{_mandir} + + mv -f $RPM_BUILD_ROOT%{_mandir}/man1/perlcn.* $RPM_BUILD_ROOT%{_mandir}/zh_CN/man1 + mv -f $RPM_BUILD_ROOT%{_mandir}/man1/perljp.* $RPM_BUILD_ROOT%{_mandir}/ja/man1 + mv -f $RPM_BUILD_ROOT%{_mandir}/man1/perlko.* $RPM_BUILD_ROOT%{_mandir}/ko/man1 + mv -f $RPM_BUILD_ROOT%{_mandir}/man1/perltw.* $RPM_BUILD_ROOT%{_mandir}/zh_TW/man1 + + # `perl -MExtUtils::Embed -e ldopts` includes -Wl,--as-needed + # which is then forced upon anyone embedding perl. + sed -i -e 's#^\(ld.*=.*\)-Wl,--as-needed\(.*\)#\1 \2#g' $RPM_BUILD_ROOT%{perl_archlib}/Config*.pl + + rm -rf $RPM_BUILD_ROOT%{_mandir}/README.perl-non-english-man-pages + + touch installed.stamp +fi + +# update and check perl-modules file +echo '# Module versions from Perl %{ver} distribution.' > perl-modules +for m in $(awk '!/^#/ && !/^$/{print $1}' %{SOURCE3}); do + case $m in + Devel::DProf) +# + perl -ilib -MDevel::DProf -e print 'Devel-DProf = ',$Devel::DProf::VERSION +# DProf: run perl with -d to use DProf. +# Compilation failed in require. +# BEGIN failed--compilation aborted. + v=$(%{__perl} -e 'do "Devel/DProf.pm"; print $Devel::DProf::VERSION') + ;; + libnet) + v=$(awk '/^libnet /{print $2; exit}' lib/Net/Changes) + ;; + *) + v=$(%{__perl} -M$m -e "print \$$m::VERSION" ) + ;; + esac + echo "$m = $v" >> perl-modules +done + +egrep -v '^([ ]*$|[;#])' %{SOURCE3} > .mods1 +egrep -v '^([ ]*$|[;#])' perl-modules > .mods2 +if ! cmp -s .mods1 .mods2; then + : %{SOURCE3} outdated with $(pwd)/perl-modules + exit 1 +fi %clean rm -rf $RPM_BUILD_ROOT @@ -839,31 +893,26 @@ rm -rf $RPM_BUILD_ROOT %files libs %defattr(644,root,root,755) -%attr(755,root,root) %{_libdir}/libperl.so.* -%dir %{_libdir}/perl5 -%dir %{_libdir}/perl5/%{version} -%dir %{perl_archlib} -%dir %{perl_archlib}/CORE -%attr(755,root,root) %{perl_archlib}/CORE/libperl.so.%{_abi} +%attr(755,root,root) %{_libdir}/libperl.so.%{abi} %files base %defattr(644,root,root,755) %doc doc-base/* %attr(755,root,root) %{_bindir}/perl -%attr(755,root,root) %{_bindir}/perl%{version} -%{_mandir}/man1/perl.* -%lang(fi) %{_mandir}/fi/man1/perl* -%lang(pl) %{_mandir}/pl/man1/perl* +%attr(755,root,root) %{_bindir}/perl%{ver} +%{_mandir}/man1/perl.1* +%lang(fi) %{_mandir}/fi/man1/perl.1* +%lang(pl) %{_mandir}/pl/man1/perl.1* %dir %{_datadir}/perl5 %dir %{perl_privlib} +%dir %{_libdir}/perl5 +%dir %{_libdir}/perl5/%{ver} +%dir %{perl_archlib} +%dir %{perl_archlib}/CORE +%attr(755,root,root) %{perl_archlib}/CORE/libperl.so.%{abi} %dir %{perl_archlib}/auto -%dir %{_libdir}/perl5/vendor_perl -%dir %{_libdir}/perl5/vendor_perl/%{_abi} -%{perl_vendorarch} -%{perl_vendorlib} - ## pragmas %{perl_privlib}/base.pm %{_mandir}/man3/base.* @@ -982,6 +1031,21 @@ rm -rf $RPM_BUILD_ROOT %attr(755,root,root) %{perl_archlib}/auto/Socket/*.so %{_mandir}/man3/Socket.* +%files Encode +%defattr(644,root,root,755) +%attr(755,root,root) %{_bindir}/enc2xs +%attr(755,root,root) %{_bindir}/piconv +# FIXME: *.h to devel(?), check out the use for *.e2x files +%{perl_privlib}/Encode +%{perl_archlib}/Encode* +%{perl_archlib}/encoding.pm +%dir %{perl_archlib}/auto/Encode +%dir %{perl_archlib}/auto/Encode/*/ +%attr(755,root,root) %{perl_archlib}/auto/Encode/*/*.so +%{_mandir}/man1/enc2xs.* +%{_mandir}/man1/piconv.* +%{_mandir}/man3/Encode* +%{_mandir}/man3/encoding.* %if %{with gdbm} %files GDBM_File @@ -992,7 +1056,6 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man3/GDBM_File.* %endif - %files devel %defattr(644,root,root,755) %doc doc-devel/* @@ -1021,12 +1084,6 @@ rm -rf $RPM_BUILD_ROOT %attr(755,root,root) %{perl_archlib}/auto/B/*.so %{_mandir}/man3/B[.:]* -#%{perl_archlib}/ByteLoader.* -#%dir %{perl_archlib}/auto/ByteLoader -#%attr(755,root,root) %{perl_archlib}/auto/ByteLoader/*.so -#%{perl_archlib}/auto/ByteLoader/*.bs -#%{_mandir}/man3/ByteLoader.* - %{perl_privlib}/Devel %{perl_archlib}/Devel %dir %{perl_archlib}/auto/Devel @@ -1063,6 +1120,9 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man1/perld[!o]* %{_mandir}/man1/perli[!v]* +%lang(fi) %{_mandir}/fi/man1/perlbook.1* +%lang(pl) %{_mandir}/pl/man1/perldata.1* +%lang(pl) %{_mandir}/pl/man1/perl[fors]*.1* %lang(zh_CN) %{_mandir}/zh_CN/man1/perlcn.* %lang(ja) %{_mandir}/ja/man1/perljp.* %lang(ko) %{_mandir}/ko/man1/perlko.* @@ -1117,8 +1177,6 @@ rm -rf $RPM_BUILD_ROOT %dir %{perl_archlib}/auto/re %attr(755,root,root) %{perl_archlib}/auto/re/*.so %{_mandir}/man3/re.* -%{perl_archlib}/encoding.pm -%{_mandir}/man3/encoding.* %{perl_archlib}/ops.pm %{_mandir}/man3/ops.* @@ -1137,21 +1195,23 @@ rm -rf $RPM_BUILD_ROOT ## *.ph files (could be made a separate package, but an autohelper's support is needed) %{perl_archlib}/*.ph %{perl_archlib}/asm +%ifnarch alpha ppc ppc64 sparc sparcv9 sparc64 +# on archs which uses +%{perl_archlib}/asm-generic +%endif %{perl_archlib}/bits %{perl_archlib}/gnu %{perl_archlib}/linux %{perl_archlib}/sys -%ifarch %{x8664} sparc64 -%{perl_archlib}/asm-* -%endif %{perl_archlib}/Compress %dir %{perl_archlib}/auto/Compress %dir %{perl_archlib}/auto/Compress/Raw %dir %{perl_archlib}/auto/Compress/Raw/Zlib %attr(755,root,root) %{perl_archlib}/auto/Compress/Raw/Zlib/*.so -%{perl_archlib}/auto/Compress/Zlib/*.ix %{perl_archlib}/auto/Compress/Raw/Zlib/*.ix +%dir %{perl_archlib}/auto/Compress/Zlib +%{perl_archlib}/auto/Compress/Zlib/*.ix %{_mandir}/man3/Compress* %{perl_archlib}/Data @@ -1171,14 +1231,6 @@ rm -rf $RPM_BUILD_ROOT %{perl_privlib}/DBM_Filter* %{_mandir}/man3/DBM_Filter* -# FIXME: *.h to devel(?), check out the use for *.e2x files -%{perl_privlib}/Encode -%{perl_archlib}/Encode* -%dir %{perl_archlib}/auto/Encode -%dir %{perl_archlib}/auto/Encode/*/ -%attr(755,root,root) %{perl_archlib}/auto/Encode/*/*.so -%{_mandir}/man3/Encode* - # FIXME: README and Changes files %{perl_privlib}/Filter %{perl_archlib}/Filter @@ -1191,6 +1243,7 @@ rm -rf $RPM_BUILD_ROOT %{perl_archlib}/Hash %dir %{perl_archlib}/auto/Hash %dir %{perl_archlib}/auto/Hash/*/ +%dir %{perl_archlib}/auto/Hash/*/FieldHash %attr(755,root,root) %{perl_archlib}/auto/Hash/*/*.so %attr(755,root,root) %{perl_archlib}/auto/Hash/*/*/*.so %{_mandir}/man3/Hash::* @@ -1364,7 +1417,7 @@ rm -rf $RPM_BUILD_ROOT %files -n sperl %defattr(644,root,root,755) -%attr(4755,root,root) %{_bindir}/sperl%{version} +%attr(4755,root,root) %{_bindir}/sperl%{ver} %attr(755,root,root) %{_bindir}/suidperl %files tools @@ -1379,8 +1432,6 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man1/instmodsh.* %attr(755,root,root) %{_bindir}/libnetcfg %{_mandir}/man1/libnetcfg.* -%attr(755,root,root) %{_bindir}/piconv -%{_mandir}/man1/piconv.* %attr(755,root,root) %{_bindir}/psed %{_mandir}/man1/psed.* %attr(755,root,root) %{_bindir}/ptar @@ -1402,8 +1453,6 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man1/pstruct.* %attr(755,root,root) %{_bindir}/dprofpp %{_mandir}/man1/dprofpp.* -%attr(755,root,root) %{_bindir}/enc2xs -%{_mandir}/man1/enc2xs.* %attr(755,root,root) %{_bindir}/h2ph %{_mandir}/man1/h2ph.* %attr(755,root,root) %{_bindir}/h2xs