--- /dev/null
+# macros.perl file
+# macros for perl module building. handle with care.
+
+# Useful perl macros (from Artur Frysiak <wiget@t17.ds.pwr.wroc.pl>)
+#
+%perl_sitearch %(eval "`%{__perl} -V:installsitearch`"; echo $installsitearch)
+%perl_sitelib %(eval "`%{__perl} -V:installsitelib`"; echo $installsitelib)
+%perl_vendorarch %(eval "`%{__perl} -V:installvendorarch`"; echo $installvendorarch)
+%perl_vendorlib %(eval "`%{__perl} -V:installvendorlib`"; echo $installvendorlib)
+%perl_archlib %(eval "`%{__perl} -V:installarchlib`"; echo $installarchlib)
+%perl_privlib %(eval "`%{__perl} -V:installprivlib`"; echo $installprivlib)
+
+# More useful perl macros (from Raul Dias <rsd@swi.com.br>)
+#
+%perl_version %(perl -V:version | sed "s!.*='!!;s!'.*!!")
+%perl_man1ext %(perl -V:man1ext | sed "s!.*='!!;s!'.*!!")
+%perl_man3ext %(perl -V:man3ext | sed "s!.*='!!;s!'.*!!")
+%perl_man1dir %(perl -V:man1dir | sed "s!.*='!!;s!'.*!!")
+%perl_man3dir %(perl -V:man3dir | sed "s!.*='!!;s!'.*!!")
+%perl_installman1dir %(perl -V:installman1dir | sed "s!.*='!!;s!'.*!!")
+%perl_installman3dir %(perl -V:installman3dir | sed "s!.*='!!;s!'.*!!")
+%perl_installarchlib %(perl -V:installarchlib | sed "s!.*='!!;s!'.*!!")
+%perl_prefix %{buildroot}
+
+# suse specific macros
+#
+%perl_make_install make DESTDIR=$RPM_BUILD_ROOT install_vendor
+%perl_process_packlist(n:) \
+ if test -n "$RPM_BUILD_ROOT" -a -d $RPM_BUILD_ROOT%perl_vendorarch/auto; then \
+ find $RPM_BUILD_ROOT%perl_vendorarch/auto -name .packlist -print0 | xargs -0 -r rm \
+ if [ %{_target_cpu} == noarch ]; then \
+ find $RPM_BUILD_ROOT%perl_vendorarch/auto -depth -type d -print0 | xargs -0 -r rmdir \
+ fi \
+ fi \
+ rm -f $RPM_BUILD_ROOT%{perl_archlib}/perllocal.pod \
+ %nil
+
+# macro: perl_gen_filelist (from Christian <chris@computersalat.de>)
+# do the rpmlint happy filelist generation
+# with %dir in front of directories
+#
+%perl_gen_filelist(n)\
+FILES=%{name}.files\
+# fgen_dir func\
+# IN: dir\
+fgen_dir(){\
+%{__cat} >> $FILES << EOF\
+%dir ${1}\
+EOF\
+}\
+# fgen_file func\
+# IN: file\
+fgen_file(){\
+%{__cat} >> $FILES << EOF\
+${1}\
+EOF\
+}\
+# check for files in %{perl_vendorlib}\
+RES=`find ${RPM_BUILD_ROOT}%{perl_vendorlib} -maxdepth 1 -type f`\
+if [ -n "$RES" ]; then\
+ for file in $RES; do\
+ fgen_file "%{perl_vendorlib}/$(basename ${file})"\
+ done\
+fi\
+\
+# get all dirs into array\
+base_dir="${RPM_BUILD_ROOT}%{perl_vendorlib}/"\
+for dir in `find ${base_dir} -type d | sort`; do\
+ if [ "$dir" = "${base_dir}" ]; then\
+ continue\
+ else\
+ el=`echo $dir | %{__awk} -F"${base_dir}" '{print $2}'`\
+ all_dir=(${all_dir[@]} $el)\
+ fi\
+done\
+\
+# build filelist\
+for i in ${all_dir[@]}; do\
+ # do not add "dir {perl_vendorlib/arch}/auto", included in perl package\
+ if [ "${i}" = "auto" ]; then\
+ continue\
+ fi\
+ if [ "%{perl_vendorlib}/${i}" = "%{perl_vendorarch}/auto" ]; then\
+ continue\
+ else\
+ if [ -d ${base_dir}/${i} ]; then\
+ RES=`find "${base_dir}/${i}" -maxdepth 1 -type f`\
+ if [ -n "$RES" ]; then\
+ fgen_dir "%{perl_vendorlib}/${i}"\
+ for file in $RES; do\
+ fgen_file "%{perl_vendorlib}/${i}/$(basename ${file})"\
+ done\
+ else\
+ fgen_dir "%{perl_vendorlib}/${i}"\
+ fi\
+ fi\
+ fi\
+done\
+# add man pages\
+# if exist :)\
+if [ -d "${RPM_BUILD_ROOT}%{_mandir}" ]; then\
+fgen_file "%{_mandir}/man?/*"\
+fi\
+\
+# add packlist file\
+# generated fom perllocal.pod\
+if [ -f "${RPM_BUILD_ROOT}/var/adm/perl-modules/%{name}" ]; then\
+ fgen_file "/var/adm/perl-modules/%{name}"\
+fi\
+\
+# check for files in %{_bindir}\
+if [ -d ${RPM_BUILD_ROOT}%{_bindir} ]; then\
+ RES=`find "${RPM_BUILD_ROOT}%{_bindir}" -maxdepth 1 -type f`\
+ if [ -n "$RES" ]; then\
+ for file in $RES; do\
+ fgen_file "%{_bindir}/$(basename ${file})"\
+ done\
+ fi\
+fi
--- /dev/null
+Name: perl
+Summary: The Perl interpreter
+License: Artistic-1.0 or GPL-2.0+
+Group: Platform Development/Perl
+Version: 5.30.0
+Release: 1
+Url: http://www.perl.org/
+Source: perl-%{version}.tar.bz2
+Source1: %name-rpmlintrc
+Source2: macros.perl
+Source3: README.macros
+Source4: baselibs.conf
+Source1001: perl.manifest
+BuildRequires: db4-devel
+BuildRequires: gdbm-devel
+BuildRequires: bzip2-devel
+BuildRequires: ncurses-devel
+BuildRequires: zlib-devel
+
+%define debug_package %{nil}
+%define __debug_package %{nil}
+%define __debug_install_post %{nil}
+
+#
+Provides: /bin/perl
+Provides: perl-500
+Provides: perl-macros
+Provides: perl(:MODULE_COMPAT_%{version})
+Obsoletes: perl-macros
+Provides: perl-base
+Obsoletes: perl-base
+Provides: perl-Filter-Simple
+Provides: perl-I18N-LangTags
+Provides: perl-MIME-Base64
+Provides: perl-Storable
+Provides: perl-Test-Simple = 0.98-%{release}
+Obsoletes: perl-Filter-Simple
+Obsoletes: perl-I18N-LangTags
+Obsoletes: perl-MIME-Base64
+Obsoletes: perl-Storable
+Obsoletes: perl-Test-Simple < 0.98
+Provides: perl-Text-Balanced
+Provides: perl-Time-HiRes
+Provides: perl-libnet
+Obsoletes: perl-Text-Balanced
+Obsoletes: perl-Time-HiRes
+Obsoletes: perl-libnet
+Provides: perl-Compress-Raw-Zlib
+Provides: perl-Compress-Zlib
+Obsoletes: perl-Compress-Raw-Zlib
+Obsoletes: perl-Compress-Zlib
+Provides: perl-IO-Compress-Base
+Provides: perl-IO-Compress-Zlib
+Provides: perl-IO-Zlib
+Obsoletes: perl-IO-Compress-Base
+Obsoletes: perl-IO-Compress-Zlib
+Obsoletes: perl-IO-Zlib
+Provides: perl-Archive-Tar
+Provides: perl-Module-Build
+# 0.39 is smaller than 0.3601, but this is what spec files require
+Provides: perl(Module::Build) = 0.3900
+Obsoletes: perl-Archive-Tar
+Obsoletes: perl-Module-Build
+Provides: perl-Locale-Maketext-Simple
+Provides: perl-Module-Pluggable
+Obsoletes: perl-Locale-Maketext-Simple
+Obsoletes: perl-Module-Pluggable
+Provides: perl-Pod-Escapes
+Provides: perl-Pod-Simple
+Obsoletes: perl-Pod-Escapes
+Obsoletes: perl-Pod-Simple
+Provides: perl-ExtUtils-ParseXS
+Provides: perl-version
+Obsoletes: perl-ExtUtils-ParseXS
+Obsoletes: perl-version
+
+%description
+perl - Practical Extraction and Report Language
+
+Perl is optimized for scanning arbitrary text files, extracting
+information from those text files, and printing reports based on that
+information. It is also good for many system management tasks. Perl is
+intended to be practical (easy to use, efficient, and complete) rather
+than beautiful (tiny, elegant, and minimal).
+
+Some of the modules available on CPAN can be found in the "perl"
+series.
+
+
+%package doc
+Summary: Perl Documentation
+Group: Platform Development/Perl
+Requires: perl = %{version}
+Provides: perl:%{_mandir}/man3/CORE.3pm.gz
+
+%description doc
+Perl man pages and pod files.
+
+%prep
+%setup -q -n perl-%{version}
+cp %{SOURCE1001} .
+cp -p %{S:3} .
+
+%build
+RPM_OPT_FLAGS=$(echo $RPM_OPT_FLAGS | sed -e "s/--param=ssp-buffer-size=4//g" )
+%if "%{asan}" == "1"
+export LD_PRELOAD+=" libasan.so "
+%endif
+export RPM_OPT_FLAGS
+cp -a lib savelib
+export LD_AS_NEEDED=0
+export BZIP2_LIB=%{_libdir}
+export BZIP2_INCLUDE=%{_includedir}
+export BUILD_BZIP2=0
+export ldflags="$ldflags -lpthread"
+options="-Doptimize='$RPM_OPT_FLAGS -Wall -pipe'"
+# always use glibc's setenv
+options="$options -Accflags='-DPERL_USE_SAFE_PUTENV'"
+options="$options -Dotherlibdirs=%{_libdir}/perl5/site_perl"
+sed -e 's|/lib/|/%{_lib}/|g' -i Configure
+sed -e 's| lib/| %{_lib}/|g' -i Configure
+chmod 755 ./configure.gnu
+./configure.gnu --prefix=/usr \
+ -Dvendorprefix=/usr \
+ -Dman1dir=/usr/share/man/man1 \
+ -Dman3dir=/usr/share/man/man3 \
+ -Dinstallusrbinperl \
+ -Dusethreads \
+ -Duseshrplib=\'true\' \
+ $options
+
+%__make %{?_smp_mflags}
+cp -p libperl.so savelibperl.so
+cp -p lib/Config.pm saveConfig.pm
+cp -p lib/Config_heavy.pl saveConfig_heavy.pl
+#%__make clean > /dev/null
+%__make clobber
+rm -rf lib
+mv savelib lib
+
+./configure.gnu --prefix=/usr \
+ -Dvendorprefix=/usr \
+ -Dman1dir=/usr/share/man/man1 \
+ -Dman3dir=/usr/share/man/man3 \
+ -Dinstallusrbinperl \
+ -Dusethreads \
+ $options
+%__make %{?_smp_mflags}
+
+
+%install
+%make_install
+cp -a %{buildroot}%{_libdir}/perl5/site_perl %{buildroot}%{_libdir}/perl5/vendor_perl
+cpa=`echo %{buildroot}%{_libdir}/perl5/*/*/CORE | sed -e 's@/CORE$@@'`
+cp=`echo "$cpa" | sed -e 's@/[^/]*$@@'`
+vpa=`echo $cpa | sed -e 's@/perl5/@/perl5/vendor_perl/@'`
+vp=`echo "$vpa" | sed -e 's@/[^/]*$@@'`
+install -d $vp/auto
+install -d $vpa/auto
+install -m 555 savelibperl.so $cpa/CORE/libperl.so
+install -m 444 saveConfig.pm $cpa/Config.pm
+install -m 444 saveConfig_heavy.pl $cpa/Config_heavy.pl
+# install macros.perl file
+install -D -m 644 %{S:2} %{buildroot}%{_sysconfdir}/rpm/macros.perl
+pushd %{_includedir}
+(rpm -ql glibc-devel | fgrep '.h'
+ find %{_includedir}/asm/ -name \*.h
+ find %{_includedir}/asm-generic -name \*.h
+ find %{_includedir}/linux -name \*.h
+) | while read f; do
+ %{buildroot}%{_bindir}/perl -I$cp -I$cpa %{buildroot}%{_bindir}/h2ph -d $vpa ${f/\/usr\/include\//} || :
+done
+popd
+d="`gcc -print-file-name=include`"
+test -f "$d/stdarg.h" && (cd $d ; %{buildroot}%{_bindir}/perl -I$cp -I$cpa %{buildroot}%{_bindir}/h2ph -d $vpa stdarg.h stddef.h float.h)
+# remove broken pm - we don't have the module
+rm %{buildroot}%{_libdir}/perl5/*/Pod/Perldoc/ToTk.pm
+# we don't need this in here
+#rm %%{buildroot}%{_libdir}/perl5/*/*/CORE/libperl.a
+#touch %%{buildroot}%%{_mandir}/man3/perllocal.3pm
+#touch $cpa/perllocal.pod
+# test CVE-2007-5116
+%{buildroot}%{_bindir}/perl -e '$r=chr(128)."\\x{100}";/$r/'
+# test perl-regexp-refoverflow.diff
+%{buildroot}%{_bindir}/perl -e '/\6666666666/'
+cat << EOF > perl-base-filelist
+%{_libdir}/perl5/%{version}/B/Deparse.pm
+%{_libdir}/perl5/%{version}/Carp.pm
+%{_libdir}/perl5/%{version}/Carp/
+%{_libdir}/perl5/%{version}/Class/
+%{_libdir}/perl5/%{version}/Config/
+%{_libdir}/perl5/%{version}/Digest.pm
+%{_libdir}/perl5/%{version}/Digest/
+%{_libdir}/perl5/%{version}/Exporter.pm
+%{_libdir}/perl5/%{version}/Exporter/
+%{_libdir}/perl5/%{version}/File/
+%{_libdir}/perl5/%{version}/Getopt/
+%{_libdir}/perl5/%{version}/IPC/
+%{_libdir}/perl5/%{version}/Text/
+%{_libdir}/perl5/%{version}/Tie/Hash.pm
+%{_libdir}/perl5/%{version}/XSLoader.pm
+%{_libdir}/perl5/%{version}/warnings.pm
+%{_libdir}/perl5/%{version}/warnings/
+%{_libdir}/perl5/%{version}/AutoLoader.pm
+%{_libdir}/perl5/%{version}/FileHandle.pm
+%{_libdir}/perl5/%{version}/SelectSaver.pm
+%{_libdir}/perl5/%{version}/Symbol.pm
+%{_libdir}/perl5/%{version}/base.pm
+%{_libdir}/perl5/%{version}/bytes.pm
+%{_libdir}/perl5/%{version}/bytes_heavy.pl
+%{_libdir}/perl5/%{version}/constant.pm
+%{_libdir}/perl5/%{version}/fields.pm
+%{_libdir}/perl5/%{version}/feature.pm
+%{_libdir}/perl5/%{version}/integer.pm
+%{_libdir}/perl5/%{version}/locale.pm
+%{_libdir}/perl5/%{version}/overload.pm
+%{_libdir}/perl5/%{version}/overloading.pm
+%{_libdir}/perl5/%{version}/strict.pm
+%{_libdir}/perl5/%{version}/unicore/Heavy.pl
+%{_libdir}/perl5/%{version}/utf8.pm
+%{_libdir}/perl5/%{version}/utf8_heavy.pl
+%{_libdir}/perl5/%{version}/vars.pm
+%{_libdir}/perl5/%{version}/version.pm
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/Data/
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/Digest/
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/File/
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/List/
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/Scalar/
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/IO.pm
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/IO/Dir.pm
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/IO/File.pm
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/IO/Handle.pm
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/IO/Pipe.pm
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/IO/Poll.pm
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/IO/Seekable.pm
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/IO/Select.pm
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/IO/Socket.pm
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/IO/Socket/
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/B.pm
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/Config.pm
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/Config_heavy.pl
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/Cwd.pm
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/DynaLoader.pm
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/Errno.pm
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/Fcntl.pm
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/POSIX.pm
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/Socket.pm
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/attributes.pm
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/auto/Data/
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/auto/Digest/
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/auto/Fcntl/
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/auto/File/
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/auto/IO/
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/auto/List/
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/auto/Cwd/
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/auto/Socket/
+#%{_libdir}/perl5/%{version}/*-linux-thread-multi*/auto/POSIX/POSIX.bs
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/auto/POSIX/POSIX.so
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/lib.pm
+%{_libdir}/perl5/%{version}/*-linux-thread-multi*/re.pm
+EOF
+
+%check
+#rm -f /tmp/%{name}_test
+#chmod +x ./run_test.sh
+#sh -c "%{__make} check || exit 0"
+#./run_test.sh %{name} %{version}
+
+%files -f perl-base-filelist
+%manifest %{name}.manifest
+%defattr(-,root,root)
+%license README
+%dir %{_libdir}/perl5/%{version}/B
+%dir %{_libdir}/perl5/%{version}/*-linux-thread-multi*/auto/POSIX
+%config %{_sysconfdir}/rpm/macros.perl
+%{_libdir}/perl5/*
+%{_bindir}/*
+
+%files doc
+%manifest %{name}.manifest
+%defattr(-,root,root)
+%doc README.macros
+%exclude %{_libdir}/perl5/*/pod/perldiag.pod
+%doc %{_libdir}/perl5/*/pod
+%doc %{_mandir}/man?/*