On Tue, 2018-05-15 at 20:47 +0100, Daniel P. Berrangé wrote:
On Tue, May 15, 2018 at 08:17:09PM +0200, Andrea Bolognani wrote:
> + /usr/bin/perl Build.PL installdirs=vendor
> Created MYMETA.yml and MYMETA.json
> Creating new 'Build' script for 'Sys-Virt' version 'v4.4.0'
> + ./Build
> Building Sys-Virt
> ExtUtils::Mkbootstrap::Mkbootstrap('blib/arch/auto/Sys/Virt/Virt.bs')
> gcc -lpthread -shared -Wl,-z,relro -Wl,-z,now
-specs=/usr/lib/rpm/redhat/redhat-hardened-ld -L/usr/local/lib -fstack-protector-strong
-lperl -o blib/arch/auto/Sys/Virt/Virt.so lib/Sys/Virt.o -L/home/test/build/lib
> virt/lib -lvirt
This is suspect - on mine it is much longer - in particular it has
the -g flag for creating debuginfo packages
+ /usr/bin/perl Build.PL installdirs=vendor
Created MYMETA.yml and MYMETA.json
Creating new 'Build' script for 'Sys-Virt' version 'v4.4.0'
+ ./Build
Building Sys-Virt
gcc -I/usr/lib64/perl5/CORE -DVERSION="v4.4.0" -DXS_VERSION="v4.4.0"
-fPIC -I/home/berrange/src/virt/libvirt/include -c -D_REENTRANT -D_GNU_SOURCE -O2 -g -pipe
-Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS
-fexceptions -fstack-protector-strong -grecord-gcc-switches
-specs=/usr/lib/rpm/redhat/redhat-hardened-cc1
-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic
-fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -fwrapv
-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -o
lib/Sys/Virt.o lib/Sys/Virt.c
ExtUtils::Mkbootstrap::Mkbootstrap('blib/arch/auto/Sys/Virt/Virt.bs')
gcc -lpthread -shared -Wl,-z,relro -Wl,-z,now
-specs=/usr/lib/rpm/redhat/redhat-hardened-ld -L/usr/local/lib -fstack-protector-strong
-lperl -o blib/arch/auto/Sys/Virt/Virt.so lib/Sys/Virt.o
-L/home/berrange/src/virt/libvirt/src/.libs -lvirt
Okay, I think I'm getting closer to understanding the problem
The CI build steps for Module::Build packages, with irrelevant
details omitted, look like
perl Build.PL install_base=...
perl Build
perl Build manifest
perl Build install
perl Build test
perl Build dist
rpmbuild -ta *.tar.gz
These are the steps I'm following. The prepare-release.sh script,
however, is slightly different:
perl Build.PL install_base=..
./Build
./Build test
./Build install
./Build dist
rpmbuild -ta *.tar.gz
The critical difference is that CI calls 'perl Build manifest',
while prepare-release.sh doesn't. If I remove that line from the
CI steps, the build suddenly succeeds on Fedora.
This is how the manifest is changed by the call, with both the
initial file and the updated one filtered through 'sort -u' to
remove the noise caused by some items changing position:
--- MANIFEST.old 2018-05-16 08:35:17.568120131 +0000
+++ MANIFEST.new 2018-05-16 08:35:12.246110781 +0000
@@ -31,10 +31,10 @@
examples/vol-upload-all.pl
examples/vol-upload-nonblock.pl
examples/vol-upload.pl
-.gitignore
.gitpublish
HACKING
INSTALL
+lib/Sys/Virt.c
lib/Sys/Virt/Domain.pm
lib/Sys/Virt/DomainSnapshot.pm
lib/Sys/Virt/Error.pm
@@ -43,6 +43,7 @@
lib/Sys/Virt/Network.pm
lib/Sys/Virt/NodeDevice.pm
lib/Sys/Virt/NWFilter.pm
+lib/Sys/Virt.o
lib/Sys/Virt.pm
lib/Sys/Virt/Secret.pm
lib/Sys/Virt/StoragePool.pm
@@ -51,6 +52,7 @@
lib/Sys/Virt.xs
LICENSE
Makefile.PL
+MANIFEST
META.json
META.yml
perl-Sys-Virt.spec
Interestingly, CentOS 7 is perfectly fine with the updated manifest;
only Fedora is bothered by it.
Another interesting fact is that libvirt-tck doesn't track its
manifest in git, and generates it a build time by calling the same
command as above. I'm not sure if that would be appropriate, but
perhaps a good solution would be to start tracking the manifest in
git for libvirt-tck too and stop calling 'perl Build manifest' as
part of the build procedure altogether.
--
Andrea Bolognani / Red Hat / Virtualization