From 313f2bb1a071ba3718d48c277e2aebf4558ad855 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Mon, 22 Feb 2021 19:22:46 +0100 Subject: [PATCH] Package tests manually "rpmbuild --rebuild perl-JSON-XS...src.rpm --nocheck" blows because of a fragile perl_default_subpackage_tests macro. Also the tests were missing the required dependencies. --- perl-JSON-XS.spec | 38 +++++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/perl-JSON-XS.spec b/perl-JSON-XS.spec index e55e7bb..5c2a8db 100644 --- a/perl-JSON-XS.spec +++ b/perl-JSON-XS.spec @@ -2,7 +2,7 @@ Name: perl-JSON-XS Summary: JSON serializing/de-serializing, done correctly and fast Epoch: 1 Version: 4.03 -Release: 2%{?dist} +Release: 3%{?dist} License: GPL+ or Artistic URL: https://metacpan.org/release/JSON-XS Source0: https://cpan.metacpan.org/modules/by-module/JSON/JSON-XS-%{version}.tar.gz @@ -14,6 +14,7 @@ BuildRequires: perl-devel BuildRequires: perl-generators BuildRequires: perl-interpreter BuildRequires: perl(Canary::Stability) +BuildRequires: perl(Config) BuildRequires: perl(ExtUtils::MakeMaker) >= 6.76 BuildRequires: sed # Module Runtime @@ -38,29 +39,54 @@ BuildRequires: perl(warnings) Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) %{?perl_default_filter} -%{?perl_default_subpackage_tests} %description This module converts Perl data structures to JSON and vice versa. Its primary goal is to be correct and its secondary goal is to be fast. To reach the latter goal it was written in C. +%package tests +Summary: Tests for %{name} +BuildArch: noarch +Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: perl-Test-Harness + +%description tests +Tests from %{name}. Execute them +with "%{_libexecdir}/%{name}/test". + %prep %setup -q -n JSON-XS-%{version} sed -i 's/\r//' t/* -perl -pi -e 's|^#!/opt/bin/perl|#!%{__perl}|' eg/* +perl -MConfig -pi -e 's|^#!/opt/bin/perl|$Config{startperl}|' eg/* chmod -c -x eg/* +# Help generators to recognize Perl scripts +for F in t/*.t; do + perl -i -MConfig -ple 'print $Config{startperl} if $. == 1 && !s{\A#!\s*perl}{$Config{startperl}}' "$F" + chmod +x "$F" +done + %build %{__perl} Makefile.PL INSTALLDIRS=vendor OPTIMIZE="%{optflags}" 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/sh +cd %{_libexecdir}/%{name} && exec prove -I . -j "$(getconf _NPROCESSORS_ONLN)" +EOF +chmod +x %{buildroot}%{_libexecdir}/%{name}/test +# Correct permissions %{_fixperms} -c %{buildroot} %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 @@ -71,7 +97,13 @@ make test %{perl_vendorarch}/JSON/ %{_mandir}/man[13]/* +%files tests +%{_libexecdir}/%{name} + %changelog +* Mon Feb 22 2021 Petr Pisar - 1:4.03-3 +- Package tests manually + * Wed Jan 27 2021 Fedora Release Engineering - 1:4.03-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild