Opened 5 years ago

Closed 4 years ago

Last modified 4 years ago

#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

The dependency was added in [e7b677340691181f8bbbbe5c9add0cf2e77a795b/macports-ports] but the revision still needs to be increased.

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: assignedclosed

lzma dependency added in [c70f2338252be0021834e53746d6b3beb1797167/macports-ports], with a rev-bump that will fix this issue. Closing.

Last edited 4 years ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)
Note: See TracTickets for help on using tickets.