diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/.gitignore b/.gitignore index a768b17..de717f7 100644 --- a/.gitignore +++ b/.gitignore @@ -46,3 +46,4 @@ /ExtUtils-MakeMaker-7.54.tar.gz /ExtUtils-MakeMaker-7.56.tar.gz /ExtUtils-MakeMaker-7.58.tar.gz +/ExtUtils-MakeMaker-7.60.tar.gz diff --git a/perl-ExtUtils-MakeMaker.spec b/perl-ExtUtils-MakeMaker.spec index de1c893..94484ac 100644 --- a/perl-ExtUtils-MakeMaker.spec +++ b/perl-ExtUtils-MakeMaker.spec @@ -5,8 +5,8 @@ Name: perl-%{cpan_name} Epoch: 2 -Version: 7.58 -Release: 2%{?dist} +Version: 7.60 +Release: 1%{?dist} Summary: Create a module Makefile License: GPL+ or Artistic URL: https://metacpan.org/release/%{cpan_name} @@ -127,6 +127,13 @@ Recommends: gcc # Do not export private redefinitions %global __provides_exclude %{?__provides_exclude:%__provides_exclude|}^perl\\(DynaLoader|ExtUtils::MakeMaker::_version\\) +# Filter modules bundled for tests +%global __requires_exclude %{__requires_exclude}|^perl\\(MY)\s*$ +%global __requires_exclude %{__requires_exclude}|^perl\\(TieIn)\s*$ +%global __requires_exclude %{__requires_exclude}|^perl\\(TieOut)\s*$ +%global __requires_exclude %{__requires_exclude}|^perl\\(MakeMaker::Test.*)\s*$ +%global __provides_exclude_from %{?__provides_exclude_from:%__provides_exclude_from|}^%{_libexecdir} + %description This utility is designed to write a Makefile for an extension module from a Makefile.PL. It is based on the Makefile.SH model provided by Andy @@ -161,6 +168,28 @@ other modules but that do not need full-featured ExtUtils::MakeMaker. The issue with ExtUtils::MakeMaker is it pulls in Perl header files and that is an overkill for small subroutines. +%package tests +Summary: Tests for %{name} +Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: perl-Test-Harness +Requires: perl(CPAN::Meta) >= 2.143240 +Requires: perl(Encode) +Requires: perl(File::Spec) +Requires: perl(Parse::CPAN::Meta) >= 1.4414 +Requires: perl(Pod::Man) +Requires: perl(version) +%if %{with perl_ExtUtils_MakeMaker_enables_optional_test} +# Optional tests +Requires: perl-devel +Requires: perl(B) +Requires: perl(ExtUtils::CBuilder) +Requires: perl(PerlIO) +%endif + +%description tests +Tests from %{name}-%{version}. Execute them +with "%{_libexecdir}/%{name}/test". + %prep %setup -q -n ExtUtils-MakeMaker-%{version} %patch0 -p1 @@ -178,15 +207,52 @@ perl -i -ne 'print $_ unless m{^lib/ExtUtils/MakeMaker/version(?:/|\.pm)}' MANIF rm -rf lib/ExtUtils/MakeMaker/Locale.pm perl -i -ne 'print $_ unless m{^lib/ExtUtils/MakeMaker/Locale\.pm}' MANIFEST +%if !%{with perl_ExtUtils_MakeMaker_enables_optional_test} +# Remove optional tests +rm t/02-xsdynamic.t t/03-xsstatic.t +perl -i -ne 'print $_ unless m{^t/02-xsdynamic\.t}' MANIFEST +perl -i -ne 'print $_ unless m{^t/03-xsstatic\.t}' MANIFEST +perl -i -ne 'print $_ unless m{^t/unicode\.t}' MANIFEST +%endif + +# Help file to recognise the Perl scripts and normalize shebangs +for F in `find t -name *.t`; do + if head -1 "$F" | grep -q -e '^#!.*perl' ; then + perl -MConfig -pi -e 's|^#!.*perl\b|$Config{startperl}|' "$F" + else + perl -i -MConfig -ple 'print $Config{startperl} if $. == 1' "$F" + fi + chmod +x "$F" +done + %build BUILDING_AS_PACKAGE=1 perl Makefile.PL INSTALLDIRS=vendor NO_PACKLIST=1 NO_PERLLOCAL=1 %{make_build} %install %{make_install} + +# Install tests +mkdir -p %{buildroot}/%{_libexecdir}/%{name} +cp -a t %{buildroot}/%{_libexecdir}/%{name} +cat > %{buildroot}/%{_libexecdir}/%{name}/test << 'EOF' +#!/bin/bash +set -e +# Lots of tests write into temporary files/directories. The easiest solution +# is to copy the tests into a writable directory and execute them from there. +DIR=$(mktemp -d) +pushd "$DIR" +cp -a %{_libexecdir}/%{name}/* ./ +prove -I . -j "$(getconf _NPROCESSORS_ONLN)" +popd +rm -rf "$DIR" +EOF +chmod +x %{buildroot}/%{_libexecdir}/%{name}/test + %{_fixperms} $RPM_BUILD_ROOT/* %check +export HARNESS_OPTIONS=j$(perl -e 'if ($ARGV[0] =~ /.*-j([0-9][0-9]*).*/) {print $1} else {print 1}' -- '%{?_smp_mflags}') make test %files @@ -212,7 +278,14 @@ make test %{perl_vendorlib}/ExtUtils/MM/Utils.pm %{_mandir}/man3/ExtUtils::MM::Utils.* +%files tests +%{_libexecdir}/%{name} + %changelog +* Fri Feb 19 2021 Jitka Plesnikova - 2:7.60-1 +- 7.60 bump +- Package tests + * Wed Jan 27 2021 Fedora Release Engineering - 2:7.58-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild diff --git a/plans/sanity.fmf b/plans/sanity.fmf new file mode 100644 index 0000000..a72ded4 --- /dev/null +++ b/plans/sanity.fmf @@ -0,0 +1,5 @@ +summary: Sanity tests +discover: + how: fmf +execute: + how: tmt diff --git a/sources b/sources index 48aae46..2edef6e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (ExtUtils-MakeMaker-7.58.tar.gz) = 37441d61cf6a4f8da69eb5f4b2e0ec6da8bc03cec15e69d89dd486bf88c2252da87fa894afdd4a45c57c009fbbf54d6affe38320e15f74af9b64d8d8b0c34466 +SHA512 (ExtUtils-MakeMaker-7.60.tar.gz) = 7e099d58f567f058b2cbae72ea2b1380e6fd7c7bab12c8756f11fe51cb6c50aac4313362f6726fd1abe45fec9ff94355666ecd80320bc3f9722659ebd3ae769e diff --git a/tests/upstream-tests.fmf b/tests/upstream-tests.fmf new file mode 100644 index 0000000..4348868 --- /dev/null +++ b/tests/upstream-tests.fmf @@ -0,0 +1,5 @@ +summary: Upstream tests +component: perl-ExtUtils-MakeMaker +require: perl-ExtUtils-MakeMaker-tests +test: /usr/libexec/perl-ExtUtils-MakeMaker/test +