#59384 closed defect (fixed)
boost uses zstd if present
Reported by: | ryandesign (Ryan Carsten Schmidt) | Owned by: | michaelld (Michael Dickens) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.6.1 |
Keywords: | Cc: | cjones051073 (Chris Jones) | |
Port: | boost |
Description
Boost uses zstd if present, but doesn't declare a dependency on it:
notice: [zstd] Using pre-installed library notice: [zstd] Condition
- zstd : yes
And if I'm building boost universal, but zstd is installed nonuniversal, that will fail to link:
ld: warning: ignoring file /opt/local/lib/libzstd.dylib, file was built for x86_64 which is not the architecture being linked (i386): /opt/local/lib/libzstd.dylib Undefined symbols for architecture i386: "_ZSTD_initCStream", referenced from: boost::iostreams::detail::zstd_base::reset(bool, bool) in zstd.o boost::iostreams::detail::zstd_base::do_init(boost::iostreams::zstd_params const&, bool, void* (*)(void*, unsigned long, unsigned long), void (*)(void*, void*) , void*) in zstd.o "_ZSTD_decompressStream", referenced from: boost::iostreams::detail::zstd_base::inflate(int) in zstd.o "_ZSTD_endStream", referenced from: boost::iostreams::detail::zstd_base::deflate(int) in zstd.o "_ZSTD_flushStream", referenced from: boost::iostreams::detail::zstd_base::deflate(int) in zstd.o "_ZSTD_initDStream", referenced from: boost::iostreams::detail::zstd_base::reset(bool, bool) in zstd.o boost::iostreams::detail::zstd_base::do_init(boost::iostreams::zstd_params const&, bool, void* (*)(void*, unsigned long, unsigned long), void (*)(void*, void*) , void*) in zstd.o "_ZSTD_compressStream", referenced from: boost::iostreams::detail::zstd_base::deflate(int) in zstd.o "_ZSTD_freeCStream", referenced from: boost::iostreams::detail::zstd_base::~zstd_base() in zstd.o boost::iostreams::detail::zstd_base::~zstd_base() in zstd.o "_ZSTD_isError", referenced from: boost::iostreams::zstd_error::check(unsigned long) in zstd.o boost::iostreams::detail::zstd_base::deflate(int) in zstd.o boost::iostreams::detail::zstd_base::inflate(int) in zstd.o boost::iostreams::detail::zstd_base::reset(bool, bool) in zstd.o boost::iostreams::detail::zstd_base::do_init(boost::iostreams::zstd_params const&, bool, void* (*)(void*, unsigned long, unsigned long), void (*)(void*, void*), void*) in zstd.o "_ZSTD_freeDStream", referenced from: boost::iostreams::detail::zstd_base::~zstd_base() in zstd.o boost::iostreams::detail::zstd_base::~zstd_base() in zstd.o "_ZSTD_createCStream", referenced from: boost::iostreams::detail::zstd_base::zstd_base() in zstd.o boost::iostreams::detail::zstd_base::zstd_base() in zstd.o "_ZSTD_createDStream", referenced from: boost::iostreams::detail::zstd_base::zstd_base() in zstd.o boost::iostreams::detail::zstd_base::zstd_base() in zstd.o "_ZSTD_getErrorName", referenced from: boost::iostreams::zstd_error::zstd_error(unsigned long) in zstd.o boost::iostreams::zstd_error::zstd_error(unsigned long) in zstd.o boost::iostreams::zstd_error::check(unsigned long) in zstd.o boost::iostreams::detail::zstd_base::deflate(int) in zstd.o boost::iostreams::detail::zstd_base::inflate(int) in zstd.o boost::iostreams::detail::zstd_base::reset(bool, bool) in zstd.o boost::iostreams::detail::zstd_base::do_init(boost::iostreams::zstd_params const&, bool, void* (*)(void*, unsigned long, unsigned long), void (*)(void*, void*), void*) in zstd.o ... ld: symbol(s) not found for architecture i386
Change History (5)
comment:1 Changed 4 years ago by ryandesign (Ryan Carsten Schmidt)
Cc: | cjones051073 added |
---|
comment:2 Changed 4 years ago by cjones051073 (Chris Jones)
I hadn't seen this ticket. I just stumbled over it myself...
I actually intentionally did not rev-bump, as I figured it likely was not affecting many, and because I understood a 1.73 update was on its way, so thought it could wait until then. Of course if you prefer, just submit a rev-bump...
comment:3 Changed 4 years ago by cjones051073 (Chris Jones)
b.t.w. I am now also wondering if lzma shouldn't be a dep as well.... ?
comment:4 Changed 4 years ago by ryandesign (Ryan Carsten Schmidt)
boost opportunistically uses zstd, so the dependency should be added and the revision should be increased so that all users get the rebuilt boost that uses zstd. If boost also uses lzma, then you can add that dependency too.
comment:5 Changed 4 years ago by michaelld (Michael Dickens)
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
lzma dependency added in [c70f2338252be0021834e53746d6b3beb1797167/macports-ports], with a rev-bump that will fix this issue. Closing.
The dependency was added in [e7b677340691181f8bbbbe5c9add0cf2e77a795b/macports-ports] but the revision still needs to be increased.