Hide Forgot
Description of problem: When trying to rebuild squid from SRPM I get an error: eu-strip: while creating '/net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib/debug/usr/lib64/squid/negotiate_kerberos_auth.debug': Invalid cross-device link Version-Release number of selected component (if applicable): elfutils-0.163-3.el7.x86_64 How reproducible: 100% Steps to Reproduce: 1. download SRPM 2. install SRPM 3. rpmbuild -bb squid.spec Actual results: eu-strip: while creating '/net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib/debug/usr/lib64/squid/negotiate_kerberos_auth.debug': Invalid cross-device link Expected results: Should just build Additional info: Last lines of build output: + /usr/lib/rpm/find-debuginfo.sh --strict-build-id -m --run-dwz --dwz-low-mem-die-limit 10000000 --dwz-max-die-limit 110000000 /net/linux/src/RPM/BUILD/squid-3.3.8 extracting debug info from /net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/bin/squidclient extracting debug info from /net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/bin/purge extracting debug info from /net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib64/squid/basic_radius_auth extracting debug info from /net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib64/squid/digest_file_auth extracting debug info from /net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib64/squid/unlinkd extracting debug info from /net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib64/squid/ext_file_userip_acl extracting debug info from /net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib64/squid/digest_edirectory_auth extracting debug info from /net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib64/squid/basic_sasl_auth extracting debug info from /net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib64/squid/ssl_crtd extracting debug info from /net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib64/squid/log_file_daemon extracting debug info from /net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib64/squid/basic_ldap_auth extracting debug info from /net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib64/squid/basic_msnt_auth extracting debug info from /net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib64/squid/ext_ldap_group_acl extracting debug info from /net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib64/squid/ext_time_quota_acl extracting debug info from /net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib64/squid/basic_pam_auth extracting debug info from /net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib64/squid/ext_session_acl extracting debug info from /net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib64/squid/basic_ncsa_auth extracting debug info from /net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib64/squid/basic_nis_auth extracting debug info from /net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib64/squid/ntlm_smb_lm_auth extracting debug info from /net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib64/squid/url_fake_rewrite extracting debug info from /net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib64/squid/ext_unix_group_acl extracting debug info from /net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib64/squid/basic_getpwnam_auth extracting debug info from /net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib64/squid/negotiate_kerberos_auth_test extracting debug info from /net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib64/squid/negotiate_kerberos_auth eu-strip: while creating '/net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib/debug/usr/lib64/squid/negotiate_kerberos_auth.debug': Invalid cross-device link error: Bad exit status from /var/tmp/rpm-tmp.ckfqqE (%install) RPM build errors: Bad exit status from /var/tmp/rpm-tmp.ckfqqE (%install) In case it's not obvious, /net/linux/src is an automounted NFS dir. But that should really not be the cause of an "Invalid cross-device link". That would happen in any kind of filesystem so long as the source filesystem was not the same as the destination of whatever is being linked.
(In reply to Brian J. Murrell from comment #0) > extracting debug info from > /net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib64/squid/ > negotiate_kerberos_auth > eu-strip: while creating > '/net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib/debug/usr/ > lib64/squid/negotiate_kerberos_auth.debug': Invalid cross-device link > error: Bad exit status from /var/tmp/rpm-tmp.ckfqqE (%install) > > > RPM build errors: > Bad exit status from /var/tmp/rpm-tmp.ckfqqE (%install) > > In case it's not obvious, /net/linux/src is an automounted NFS dir. But > that should really not be the cause of an "Invalid cross-device link". That > would happen in any kind of filesystem so long as the source filesystem was > not the same as the destination of whatever is being linked. I believe eu-strip simply renames/moves the file from /net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib64/squid/ to /net/linux/src/RPM/BUILDROOT/squid-3.3.8-26.01.el7.x86_64/usr/lib/debug/usr/lib64/squid/ expecting those subdirectories of the BUILDROOT to be under the same mount point. Is that expectation violated by your setup?
(In reply to Mark Wielaard from comment #2) > > expecting those subdirectories of the BUILDROOT to be under the same mount > point. Is that expectation violated by your setup? Not at all. /net/linux/src is a single filesystem.
(In reply to Brian J. Murrell from comment #3) > (In reply to Mark Wielaard from comment #2) > > > > expecting those subdirectories of the BUILDROOT to be under the same mount > > point. Is that expectation violated by your setup? > > Not at all. /net/linux/src is a single filesystem. Then I don't immediate know what is going on. How is eu-unstrip invoked exactly?
(In reply to Mark Wielaard from comment #4) > > Then I don't immediate know what is going on. Indeed. Puzzling. > How is eu-unstrip invoked exactly? It's being called from the macros that rpmbuild invokes when creating the debug sub-package.
(In reply to Brian J. Murrell from comment #5) > (In reply to Mark Wielaard from comment #4) > > > > Then I don't immediate know what is going on. > > Indeed. Puzzling. It is strange that it seems to work for other files in the same directory. Does it always break in the same way on the same file in the same dir? Does it work if you do the build in a different non-automounted NFS dir? > > How is eu-unstrip invoked exactly? > > It's being called from the macros that rpmbuild invokes when creating the > debug sub-package. If you are adventures then you could add the following to see what is really going on: --- /usr/lib/rpm/find-debuginfo.sh.orig 2016-01-06 15:49:09.135155917 +0100 +++ /usr/lib/rpm/find-debuginfo.sh 2016-01-06 15:49:38.608460303 +0100 @@ -131,6 +131,7 @@ $strip_g && case "$(file -bi "$2")" in application/x-sharedlib*) g=-g ;; esac + echo Calling: eu-strip --remove-comment $r $g -f "$1" "$2" eu-strip --remove-comment $r $g -f "$1" "$2" || exit chmod 444 "$1" || exit }
Could you try the suggestions and provide the answers asked in comment #6?
For now given that I am unable to reproduce the issue I am going to assume that the issue is related to the special way /net/linux/src is mounted. And suggest you rebuild on a different file system instead. Please feel free to reopen this bug if the issue persists and you can provide some of the information requested in comment #6.