On Wed, May 16, 2018 at 10:49:39AM +0200, Andrea Bolognani wrote:
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
Ah ha, this will be what's causing the problem - it'll make RPM build
skip the compile step and just do the link step. So if we drop the
manifest build, the RPM build should work.
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.
Yeah, we should commit the manifest to git - I've found there is just
too much chance of including random junk when using MANIFEST.SKIP, so
I just pre-created the MANIFEST. I'll send a patch for libvirt-tck to
do this.
Regards,
Daniel
--
|:
https://berrange.com -o-
https://www.flickr.com/photos/dberrange :|
|:
https://libvirt.org -o-
https://fstop138.berrange.com :|
|:
https://entangle-photo.org -o-
https://www.instagram.com/dberrange :|