Opened 6 months ago
Closed 6 months ago
#70046 closed defect (fixed)
snappy @1.2: changes a symbol, dependencies need regenerating
Reported by: | justinbb | Owned by: | pguyot (Paul Guyot) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | |
Keywords: | Cc: | pguyot (Paul Guyot), dershow | |
Port: | snappy |
Description
On macOS 14, after upgrade to snappy 1.2, trying to launch qgis3 (depends on qt5-qtwebkit > leveldb > snappy):
Symbol not found: __ZN6snappy11RawCompressEPKcmPcPm Referenced from: <6B4C63E9-F153-35F2-B6E3-9B70D5205EB7> /opt/local/lib/libleveldb.1.23.0.dylib Expected in: <21F5B8CD-DE83-3E89-BC9F-C6F6CD66E239> /opt/local/lib/libsnappy.1.1.10.dylib
In snappy 1.2, the missing symbol has been replaced by _ZN6snappy11RawCompressEPKcmPcPmNS_18CompressionOptionsE
(Perhaps snappy's soname should have been bumped to 1.2.0 as well?
Workaround: port activate snappy @1.1.10_0
Fix: relink all the ports that link with libsnappy
Change History (13)
comment:1 Changed 6 months ago by ryandesign (Ryan Carsten Schmidt)
Cc: | pguyot added |
---|---|
Port: | snappy added |
Summary: | snappy 1.2 changes a symbol, dependencies need regenerating → snappy @1.2: changes a symbol, dependencies need regenerating |
comment:2 Changed 6 months ago by pguyot (Paul Guyot)
We probably could add this commit they made after 1.2.0 release as a patch and bump revision. Would it be sufficient for binaries to be rebuilt?
https://github.com/google/snappy/commit/52820ea9c6cb0af6ebe4920f806dbfbb0de9eaab
comment:3 Changed 6 months ago by ryandesign (Ryan Carsten Schmidt)
Presumably that commit which changes the version number of the project to 1.2.0 would change the major version number of the library as well. That would clarify the problem by making all ports that link with version 1.1.10 of the library fail to launch. Revbumping all those ports would then link them with the new 1.2.0 version of the library.
comment:4 follow-up: 6 Changed 6 months ago by pguyot (Paul Guyot)
I confirm that the patch creates libsnappy.1.2.0.dylib.
> port contents snappy Port snappy @1.2.0_1 contains: /opt/local/include/snappy-c.h /opt/local/include/snappy-sinksource.h /opt/local/include/snappy-stubs-public.h /opt/local/include/snappy.h /opt/local/lib/cmake/Snappy/SnappyConfig.cmake /opt/local/lib/cmake/Snappy/SnappyConfigVersion.cmake /opt/local/lib/cmake/Snappy/SnappyTargets-macports.cmake /opt/local/lib/cmake/Snappy/SnappyTargets.cmake /opt/local/lib/libsnappy.1.2.0.dylib /opt/local/lib/libsnappy.1.dylib /opt/local/lib/libsnappy.dylib
Do I need to bump revision of every port that depends on snappy in https://github.com/macports/macports-ports/pull/24053?
Some don't need it. qemu links with libsnappy.1.dylib
and still works after the update. leveldb needs this since it triggered this ticket.
I can check the other ones.
port list depends:snappy aff4 @1.0-20180212 security/aff4 apache-arrow @13.0.0 devel/apache-arrow blosc @1.21.5 archivers/blosc caffe @20170817 math/caffe folly @2024.01.22.00 devel/folly hadoop @1.2.1 java/hadoop leveldb @1.23 databases/leveldb mongo-c-driver @1.26.2 devel/mongo-c-driver mongodb @6.0.7 databases/mongodb mongodb-devel @6.0.7 databases/mongodb-devel mvfst @2024.01.22.00 devel/mvfst p5-compress-snappy @0.240.0 perl/p5-compress-snappy py-python-snappy @0.6.1 python/py-python-snappy py38-python-snappy @0.6.1 python/py-python-snappy py39-imagecodecs @2024.1.1 python/py-imagecodecs py39-pyarrow @13.0.0 devel/apache-arrow py39-python-snappy @0.6.1 python/py-python-snappy py310-imagecodecs @2024.1.1 python/py-imagecodecs py310-pyarrow @13.0.0 devel/apache-arrow py310-python-snappy @0.6.1 python/py-python-snappy py311-imagecodecs @2024.1.1 python/py-imagecodecs py311-pyarrow @13.0.0 devel/apache-arrow py311-python-snappy @0.6.1 python/py-python-snappy py312-imagecodecs @2024.1.1 python/py-imagecodecs py312-pyarrow @13.0.0 devel/apache-arrow qemu @9.0.0 emulators/qemu qt5-qtwebengine @5.15.16 aqua/qt5 qt6-qtwebengine @6.4.3 aqua/qt6 qt513-qtwebengine @5.13.2 aqua/qt513 rocksdb @8.9.1 databases/rocksdb shogun @2.1.0 math/shogun shogun-devel @4.0.0 math/shogun-devel sparkey @0.2.99 databases/sparkey py38-autobahn @21.3.1 python/py-autobahn py39-autobahn @21.3.1 python/py-autobahn py310-autobahn @21.3.1 python/py-autobahn py311-autobahn @21.3.1 python/py-autobahn
comment:5 Changed 6 months ago by pguyot (Paul Guyot)
Owner: | set to pguyot |
---|---|
Resolution: | → fixed |
Status: | new → closed |
comment:6 Changed 6 months ago by ryandesign (Ryan Carsten Schmidt)
Resolution: | fixed |
---|---|
Status: | closed → reopened |
I merged the PR as is since fixing the version number is obviously correct. But you're right, the install name is still libsnappy.1.dylib. For some reason I assumed it was 1.1.10. So then we've returned to the beginning: they removed a symbol but didn't adequately increase the library's major version number, and should do so, which will change the install name to perhaps libsnappy.2.dylib, after which we'll need to revbump everything that links with it.
comment:7 Changed 6 months ago by ryandesign (Ryan Carsten Schmidt)
I have emailed the developer of Snappy to try to discover how to report bugs to them.
comment:8 Changed 6 months ago by ryandesign (Ryan Carsten Schmidt)
The developer enabled the GitHub repo's issue tracker and I filed https://github.com/google/snappy/issues/183
comment:9 Changed 6 months ago by pguyot (Paul Guyot)
Thank you. I submitted a new PR with a patch that should fix the leveldb issue (and issue with any other port that refers to this symbol), as a way to temporary fix the breakage until upstream provides a better fix as you suggested in your report.
comment:10 Changed 6 months ago by dershow
Cc: | dershow added |
---|
comment:11 Changed 6 months ago by dershow
I just got the 1.2.0_1 update (which I would guess captures the update pull 24053) and I still get the namespace error from an app that uses leveldb.
comment:12 Changed 6 months ago by ryandesign (Ryan Carsten Schmidt)
Yes, 1.2.0_1 only fixed the advertised version number of the library. 1.2.1 will reintroduce the symbol 1.2.0 deleted.
comment:13 Changed 6 months ago by pguyot (Paul Guyot)
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
Sounds like the developers of snappy should have changed the library version. You should report that bug to them.