FS#56689 - [crypto++] missing soname symlink

Attached to Project: Community Packages
Opened by Andrea Scarpino (BaSh) - Tuesday, 12 December 2017, 13:26 GMT
Last edited by Baptiste (zorun) - Thursday, 15 November 2018, 10:19 GMT
Task Type Bug Report
Category Packages
Status Closed
Assigned To Baptiste (zorun)
Architecture All
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

Description:
crypto++ installs only libcryptopp.so as file. ldconfig will then create /usr/lib/libcryptopp.so.5.6 symlink pointing to that file. This means /usr/lib/libcryptopp.so.5.6 isn't owned by any package at this point.

Please install /usr/lib/libcryptopp.so.5.6 as file and create the /usr/lib/libcryptopp.so symlink to that file.

Additional info:
* crypto++ 5.6.5-3
This task depends upon

Closed by  Baptiste (zorun)
Thursday, 15 November 2018, 10:19 GMT
Reason for closing:  Fixed
Comment by Eli Schwartz (eschwartz) - Tuesday, 12 December 2017, 19:18 GMT
  • Field changed: Status (Unconfirmed → Assigned)
  • Task assigned to Baptiste (zorun)
Not really understanding what the story here is BTW, since the PKGBUILD runs two different makefiles, the first of which builds a test suite that is never utilized in a check() function.

And instead of using the `make install` target I guess because it also installs the testsuite if built, this package is relying on the fact that install(1) will copy the target of a symlink, rather than copying the symlink itself, to install the libcryptopp.so symlink into "$pkgdir". Which only works by accident. ;)

(It would be trivial to rm -rf "$pkgdir"/usr/{bin,share}/ after using the proper `make install` target, for what it's worth. And this is a lot more indicative of what is going on, besides being forwards-compatible with upstream changes to the install process...)

Also why isn't this pkg-config file upstreamed...
Comment by Baptiste (zorun) - Saturday, 16 December 2017, 13:48 GMT
I have a local fix, however pacman now complains when upgrading:

(1/1) checking keys in keyring [--------------------------------------------------------] 100%
(1/1) checking package integrity [--------------------------------------------------------] 100%
(1/1) loading package files [--------------------------------------------------------] 100%
(1/1) checking for file conflicts [--------------------------------------------------------] 100%
error: failed to commit transaction (conflicting files)
crypto++: /usr/lib/libcryptopp.so.5.6 exists in filesystem
Errors occurred, no packages were upgraded.

I tried to remove the symlink in a pre_upgrade() install script, but it didn't work (probably the script runs after checking for file conflicts).

Unless somebody comes up with a solution I guess it will require a news on the website.
Comment by Andrea Scarpino (BaSh) - Saturday, 16 December 2017, 14:15 GMT
Yes, this requires a manual intervention.
Comment by Eli Schwartz (eschwartz) - Sunday, 17 December 2017, 00:26 GMT
Yes, conflicts are checked before the package is extracted and has its pre_upgrade scripts run etc. so users will have to do manual intervention unless by coincidence the soname were changing at the same time.

(Something similar has happened once or twice with python and compiled bytecode, but that rarely causes problems except when running python software as root.)
Comment by Baptiste (zorun) - Wednesday, 24 January 2018, 23:43 GMT
crypto++ 6.0 has been released, so I will use the opportunity of the upgrade to fix this bug.

(and thankfully, upstream now provides an autotools build system in addition to the hand-crafted Makefiles...)
Comment by Baptiste (zorun) - Saturday, 27 January 2018, 19:05 GMT
Fixed in crypto++ 6.0.0-2 (currently in [community-staging] for rebuilds)

Loading...