Hide Forgot
When building my package (elfutils) with fedpkg local I get lots of errors in the build log: /usr/lib/rpm/mpi.prov: line 68: [: libebl_aarch64.so(ELFUTILS_0.165)(64bit): binary operator expected /usr/lib/rpm/mpi.prov: line 68: [: libebl_alpha.so(ELFUTILS_0.165)(64bit): binary operator expected /usr/lib/rpm/mpi.prov: line 68: [: libebl_arm.so(ELFUTILS_0.165)(64bit): binary operator expected /usr/lib/rpm/mpi.prov: line 68: [: libebl_i386.so(ELFUTILS_0.165)(64bit): binary operator expected /usr/lib/rpm/mpi.prov: line 68: [: libebl_ia64.so(ELFUTILS_0.165)(64bit): binary operator expected /usr/lib/rpm/mpi.prov: line 68: [: libebl_ppc.so(ELFUTILS_0.165)(64bit): binary operator expected /usr/lib/rpm/mpi.prov: line 68: [: libebl_ppc64.so(ELFUTILS_0.165)(64bit): binary operator expected /usr/lib/rpm/mpi.prov: line 68: [: libebl_s390.so(ELFUTILS_0.165)(64bit): binary operator expected /usr/lib/rpm/mpi.prov: line 68: [: libebl_sh.so(ELFUTILS_0.165)(64bit): binary operator expected /usr/lib/rpm/mpi.prov: line 68: [: libebl_sparc.so(ELFUTILS_0.165)(64bit): binary operator expected /usr/lib/rpm/mpi.prov: line 68: [: libebl_tilegx.so(ELFUTILS_0.165)(64bit): binary operator expected /usr/lib/rpm/mpi.prov: line 68: [: libebl_x86_64.so(ELFUTILS_0.165)(64bit): binary operator expected /usr/lib/rpm/mpi.prov: line 68: [: libasm.so.1(ELFUTILS_1.0)(64bit): binary operator expected /usr/lib/rpm/mpi.prov: line 68: [: too many arguments I believe you want to check for the empty string with: --- /usr/lib/rpm/mpi.prov.orig 2016-01-08 15:16:40.217450308 +0100 +++ /usr/lib/rpm/mpi.prov 2016-01-08 15:17:27.481304796 +0100 @@ -65,7 +65,7 @@ # Get the default provides string from elfdeps prov=$(echo $file | /usr/lib/rpm/elfdeps --provides $elfdepsargs) - if [ -z $prov ]; then + if [ -z "$prov" ]; then continue fi
Uh indeed, thanks for reporting!
rpm-mpi-hooks-3-5.fc23 has been submitted as an update to Fedora 23. https://bodhi.fedoraproject.org/updates/FEDORA-2016-40d2987dfe
rpm-mpi-hooks-3-5.fc23 has been pushed to the Fedora 23 testing repository. If problems still persist, please make note of it in this bug report. See https://fedoraproject.org/wiki/QA:Updates_Testing for instructions on how to install test updates. You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2016-40d2987dfe
I got a lot of 'Invalid buildroot' when performing rpmbuild --rebuild gcc-5.3.1-2.fc23.src.rpm (using rpmmacro: %_use_internal_dependency_generator 0) Apparently the first argument to mpi.req or mpi.prov is not buildroot anymore. Applying this patch solves it (analogue to mpi.prov): --- mpi.req.orig 2016-01-08 15:41:19.000000000 +0100 +++ mpi.req 2016-01-09 17:10:16.703356110 +0100 @@ -22,11 +22,7 @@ # First argument is buildroot -buildroot="$1" -if [ ! -d "$buildroot" ]; then - >&2 echo "Invalid buildroot" - exit 1 -fi +buildroot="$RPM_BUILD_ROOT # Try to determine python3 version in the same way that %{python3_version} does PYTHON3_VERSION="$(/usr/bin/python3 -c 'import sys; sys.stdout.write(sys.version[:3])')"
The arguments to be passed to the mpi.req and mpi.prov scripts are listed in mpi.attr, so the buildroot *should* be passed. (Granted, it would probably be better to use $RPM_BUILD_ROOT directly anyway, but may be additional arguments passed to the scripts, see the lines # Remaining arguments are passed to elfdeps shift elfdepsargs="$@" so $1==$RPM_BUILD_ROOT is actually a good test to check whether arguments are passed correctly). That said, I've actually encountered a similar issue before, and it had to do with the old-style filtering syntax, i.e. in mpi4py I had to replace %{?filter_setup: %filter_provides_in %{python2_sitearch}.*\.so$ %filter_requires_in %{python2_sitearch}/openmpi/mpi4py/lib-pmpi/lib.*\.so %if 0%{?with_python3} %filter_provides_in %{python3_sitearch}.*\.so$ %filter_requires_in %{python3_sitearch}/openmpi/mpi4py/lib-pmpi/lib.*\.so %endif %filter_setup } with %global __requires_exclude_from %{python2_sitearch}/openmpi/mpi4py/lib-pmpi/lib.*\.so$|%{python3_sitearch}/openmpi/mpi4py/lib-pmpi/lib.*\.so$ %global __provides_exclude_from %{python2_sitearch}.*\.so$|%{python3_sitearch}.*\.so$ Since the filtering syntax causing the issue is outdated, I did not bother, but perhaps there is a bug in rpmbuild somewhere which causes such issues? Do you have any filtering going on in the gcc you are rebuilding? By the way, I assume that you are building in your main root environment and not in a separate chroot (i.e. via mock), since there should be nothing required to build gcc that involves pulling in the mpi dependency generator scripts.
I am not familiar with all details of the rpmbuild process, so was not aware of the mpi.attr file. Anyway, there is no buildroot passed to mpi.prov and mpi.req, so it's not unlikely to be a bug in rpm itself (or more precisely in the sources to /usr/lib/rpm/rpmdeps). I was building as a standard user (not as root or in chroot). Frankly, it was not the original gcc.src.rpm I was rebuilding. I was building a full cross-compiler based on gcc-5.3.1-2.fc23.src.rpm (using a modified spec-file), which might have caused pulling in the mpi-stuff for building a couple of binary RPMs. But certainly not on purpose. Anyway, the question is not why mpi.rev or mpi.prov is invoked, but that the scripts operate correctly. Right?
Yes sure. Can you post the SRPM of the package you are building? As said, buildroot is specified as first argument in mpi.attr: $ cat mpi.attr %__mpi_provides %{_rpmconfigdir}/mpi.prov %{buildroot} %{?__filter_GLIBC_PRIVATE:--filter-private} %__mpi_requires %{_rpmconfigdir}/mpi.req %{buildroot} %{?__filter_GLIBC_PRIVATE:--filter-private} [...] So there is some conflict going on which is either killing the %{buildroot} variable or shifting the arguments.
%{buildroot} is certainly defined, otherwise the build will not work at all. At the moment I cannot reproduce the error, since I detected another problem (Bug 1297557) when using an external dependency generator. I will come back to the %{buildroot} problem, when that bug has been resolved.
rpm-mpi-hooks-3-5.fc23 has been pushed to the Fedora 23 stable repository. If problems still persist, please make note of it in this bug report.