https://bugzilla.redhat.com/show_bug.cgi?id=1517249
Bug ID: 1517249
Summary: perl-homedir is incompatible with rpmbuild -ba
perl-*.spec
Product: Fedora
Version: 26
Component: perl-local-lib
Severity: medium
Assignee: jplesnik(a)redhat.com
Reporter: mzalewsk(a)redhat.com
QA Contact: extras-qa(a)fedoraproject.org
CC: iarnell(a)gmail.com, jplesnik(a)redhat.com,
perl-devel(a)lists.fedoraproject.org
When perl-homedir is installed and enabled, `rpmbuild -ba` will fail for
majority (all?) of perl packages. The reason is that perl build will put files
in different locations than when RPM expects them (see below for all the
details).
That was found on one of machines that sanity-checks RPM packages (rebuilds
them and tries to install them). After perl-homedir was installed, subsequent
checks for other perl package failed. In this particular case perl-homedir
could be removed (or disabled for system user doing rebuilds), but I don't
think that users should have to decide between perl-homedir and rpmbuild
working as expected.
The root cause is INSTALL_BASE set to ~/perl5 in Makefile generated by perl. It
comes from $PERL_MB_OPT and/or $PERL_MM_OPT environmental variables set by
perl-homedir. Maybe perl RPM macro could filter/unset these variables on one of
early setup stages?
Version-Release number of selected component (if applicable):
perl-local-lib-2.000023-1.fc26.src.rpm
How reproducible:
100%
Steps to Reproduce:
1. Ensure that you have environment for building RPM packages (install
rpmdevtools and rpm-build, run rpmdev-setuptree) and that perl-homedir package
is installed and enabled (spawn new shell after installation)
2. Pick up noarch perl package for reproducing (e.g. perl-Getopt-Long)
3. Download source RPM of package (`dnf download --source perl-Getopt-Long`)
4. Install source RPM package (`rpm -i *.src.rpm`)
5. Install build-dependencies of source RPM package (`dnf builddep
perl-Getopt-Long`)
6. Try to build package (`rpmbuild -ba ~/rpmbuild/SPECS/perl-Getopt-Long.spec`)
Actual results:
Build fails with message about missing files:
RPM build errors:
File not found:
/home/mzalewsk/rpmbuild/BUILDROOT/perl-Getopt-Long-2.40-3.fc26.x86_64/usr/share/perl5/vendor_perl/*
File not found:
/home/mzalewsk/rpmbuild/BUILDROOT/perl-Getopt-Long-2.40-3.fc26.x86_64/usr/share/man/man3/*
Expected results:
Build succeeds.
Additional info:
As shown by directory trees, perl-homedir causes perl build system to put files
in home directory of user even inside build root:
tree -d ~/rpmbuild/BUILDROOT/perl-Getopt-Long-2.40-3.fc26.x86_64/
BUILDROOT/perl-Getopt-Long-2.40-3.fc26.x86_64/
├── home
│ └── mzalewsk
│ └── perl5
│ ├── lib
│ │ └── perl5
│ │ ├── Getopt
│ │ └── x86_64-linux-thread-multi
│ │ └── auto
│ │ └── Getopt
│ │ └── Long
│ └── man
│ └── man3
└── usr
└── share
└── doc
└── perl-Getopt-Long
└── examples
Directory tree without perl-homedir, for comparison:
/home/mzalewsk/rpmbuild/BUILDROOT/perl-Getopt-Long-2.40-3.fc26.x86_64/
└── usr
├── lib64
│ └── perl5
│ └── vendor_perl
│ └── auto
│ └── Getopt
│ └── Long
└── share
├── doc
│ └── perl-Getopt-Long
│ └── examples
├── man
│ └── man3
└── perl5
└── vendor_perl
└── Getopt
%{perl_vendorlib} and %{_mandir} RPM macros support only second directory
structure (and rightfully so), which causes them to resolve to non-existing
paths if first tree was created.
--
You are receiving this mail because:
You are on the CC list for the bug.