#35490 closed defect (fixed)
libtorrent-rasterbar won't compile against new default boost variants
Reported by: | timbargen@… | Owned by: | dbevans (David B. Evans) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.1.2 |
Keywords: | boost, libtorrent | Cc: | adfernandes (Andrew Fernandes) |
Port: | libtorrent-rasterbar |
Description (last modified by ryandesign (Ryan Carsten Schmidt))
libtorrent-rasterbar (16.2) won't pass the configure script when building against the new default boost (1.50) variants "+no_single" "+no_static" seen here: changeset:95845/trunk/dports/devel/boost/Portfile
you can force it to get past the configure script by adding
--with-boost-python=mt
to configure.args in the portfile, but then it fails to build.
rebuilding boost with "-no_single -no_static" allows libtorrent-rasterbar to be built with no problems.
To be honest, I really don't know which one of the new default variants is the culprit; I didn't really feel like rebuilding boost 2 or 3 times just to test. I suspect its the +no_single variant though just because I had to tell libtorrent-rasterbar to look for the mt (multi-threaded) version of the library for it to even try to compile when I was using the new default variants for boost.
Whichever it is, either -no_single/-no_static needs to be made a dependency for libtorrent-rasterbar, or +no_single/+no_static needs to be removed from the default variants for boost.
I'm on 10.7.4 with a Core2 Duo for what it's worth.
Change History (6)
comment:1 follow-up: 2 Changed 12 years ago by ryandesign (Ryan Carsten Schmidt)
Cc: | adfernandes@… added; adfernandes devans removed |
---|---|
Description: | modified (diff) |
Owner: | changed from macports-tickets@… to devans@… |
comment:2 Changed 12 years ago by timbargen@…
Replying to ryandesign@…:
The Cc field must contain complete email addresses.
@ryandesign Note: mouseover popup for the CC box on the New Ticket page says "Space or comma delimited email addresses and usernames are accepted."
comment:3 follow-up: 4 Changed 12 years ago by adfernandes (Andrew Fernandes)
boost
maintainer here. On a mac there are no huge changes between multithreaded and non-mt builds; all re-arrangement happens due to the code. (In other words, the ABI is always implicitly multithreaded and there is no code-generation that changes. The code may conditionally compile into something else, but this isn't like MSVC or GCC on Linux!)
I can add the mt
and static
builds back to boost
, but excessive compile-times are an often-reported bug.
It appears to me that libtorrent-rasterbar
is actually at fault here because it is assuming that boost
libraries have a particular name. In fact, they don't. The -mt
suffix is optional during build. Also, the python variant is not installed by default (and never has been!) and, last I checked, there is no way to make a port depend on a specific variant.
My suggestion would be for the libtorrent-rasterbar
Portfile to test specifically for the boost-python-mt library that it needs via depends_lib lib:boost_python-mt
or whatever, but modified such that an error is printed such that it tells the user to rebuild boost with the appropriate python and single-threaded variants.
comment:4 Changed 12 years ago by timbargen@…
I didn't specify at first that I was building the python variants of these ports, but after some testing I've found it doesn't affect the problem.
So I did some extra testing, built boost a couple different ways. It is in fact the +no_single
variant of boost
that causes problems for libtorrent-rasterbar
, regardless of whether you are building it with any of the python variants. Building boost
with the -no_single
flag will result in libtorrent-rasterbar
successfully compiling and running.
I also found you can make it build successfully with the boost +no_single
variant activated if you edit the libtorrent-rasterbar
portfile's configure.args
similarly to what I showed in the original ticket, just adding a similar line for each boost library libtorrent-rasterbar
needs. (I didn't actually bother to find which ones it needed, I just put them all in.) What you would add would look something like this:
--with-boost-chrono=mt \ --with-boost-date_time=mt \ --with-boost-filesystem=mt \ --with-boost-graph=mt \ --with-boost-iostreams=mt \ --with-boost-locale=mt \ --with-boost-math_c99=mt \ --with-boost-math_c99f=mt \ --with-boost-math_c99l=mt \ --with-boost-math_tr1=mt \ --with-boost-math_tr1f=mt \ --with-boost-math_tr1l=mt \ --with-boost-prg_exec_monitor=mt \ --with-boost-program_options=mt \ --with-boost-python=mt \ --with-boost-random=mt \ --with-boost-regex=mt \ --with-boost-serialization=mt \ --with-boost-signals=mt \ --with-boost-system=mt \ --with-boost-thread=mt \ --with-boost-timer=mt \ --with-boost-unit_test_framework=mt \ --with-boost-wave=mt \ --with-boost-wserialization=mt \
This will allow libtorrent-rasterbar
to be built successfully without having to build boost
with the single threaded libraries enabled.
I haven't actually tried using this version of the library though, as this last part was done on a different machine
comment:5 Changed 12 years ago by dbevans (David B. Evans)
Resolution: | → fixed |
---|---|
Status: | new → closed |
Fix committed in r97400. Port now updated to version 0.16.3.
comment:6 Changed 11 years ago by puck@…
Hello,
I noted that this ticket was closed but it happened to me as well. Thank you for any recommendations you might have.
The end of the failed upgrade spit out ":error:configure Failed to configure libtorrent-rasterbar, consult " which is the following...
version:1 :msg:main ---> Computing dependencies for libtorrent-rasterbar:info:main .:debug:main Checking for conflicts against libtorrent-rasterbar :debug:main Searching for dependency: libtorrent-rasterbar-devel :debug:main Didn't find receipt, going to depspec regex for: libtorrent-rasterbar-devel :debug:main Searching for dependency: pkgconfig :debug:main Found Dependency: receipt exists for pkgconfig :debug:main Searching for dependency: boost :debug:main Found Dependency: receipt exists for boost :debug:main Searching for dependency: libgeoip :debug:main Found Dependency: receipt exists for libgeoip :debug:main Searching for dependency: openssl :debug:main Found Dependency: receipt exists for openssl :debug:main Searching for dependency: python27 :debug:main Found Dependency: receipt exists for python27 :msg:main :debug:main Executing org.macports.main (libtorrent-rasterbar) :debug:main changing euid/egid - current euid: 0 - current egid: 0 :debug:main egid changed to: 501 :debug:main euid changed to: 504 :debug:main Skipping completed org.macports.archivefetch (libtorrent-rasterbar) :debug:main Privilege de-escalation not attempted as not running as root. :debug:main Skipping completed org.macports.fetch (libtorrent-rasterbar) :debug:main Privilege de-escalation not attempted as not running as root. :debug:main Skipping completed org.macports.checksum (libtorrent-rasterbar) :debug:main Privilege de-escalation not attempted as not running as root. :debug:main Skipping completed org.macports.extract (libtorrent-rasterbar) :debug:main Privilege de-escalation not attempted as not running as root. :debug:main Skipping completed org.macports.patch (libtorrent-rasterbar) :debug:main Privilege de-escalation not attempted as not running as root. :debug:configure configure phase started at Mon Jan 13 18:02:13 PST 2014 :notice:configure ---> Configuring libtorrent-rasterbar :debug:configure Using compiler 'Xcode GCC 4.2' :debug:configure Executing proc-pre-org.macports.configure-configure-0 :debug:configure Active variants check for source-type install considers depends_fetch depends_extract depends_lib depends_build depends_run: boost libgeoip openssl python27 pkgconfig :debug:configure boost is installed with the following variants: +no_single+no_static+python27 :debug:configure required: python27, forbidden: :debug:configure accepted :debug:configure Executing org.macports.configure (libtorrent-rasterbar) :debug:configure Environment: CPATH='/opt/local/include' CFLAGS='-pipe -Os -arch x86_64' CPPFLAGS='-I/opt/local/include' CXXFLAGS='-pipe -Os -arch x86_64' LIBRARY_PATH='/opt/local/lib' MACOSX_DEPLOYMENT_TARGET='10.6' PYTHON_EXTRA_LDFLAGS=' ' PYTHON_INSTALL_PARAMS='--prefix=/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_net_libtorrent-rasterbar/libtorrent-rasterbar/work/destroot/opt/local/Library/Frameworks/Python.framework/Versions/2.7' CXX='/usr/bin/g++-4.2' CC_PRINT_OPTIONS_FILE='/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_net_libtorrent-rasterbar/libtorrent-rasterbar/work/.CC_PRINT_OPTIONS' F90FLAGS='-pipe -Os -m64' LDFLAGS='-L/opt/local/lib -Wl,-headerpad_max_install_names -arch x86_64' FCFLAGS='-pipe -Os -m64' OBJC='/usr/bin/gcc-4.2' OBJCXX='/usr/bin/g++-4.2' INSTALL='/usr/bin/install -c' PYTHON='/opt/local/bin/python2.7' FFLAGS='-pipe -Os -m64' OBJCFLAGS='-pipe -Os -arch x86_64' OBJCXXFLAGS='-pipe -Os -arch x86_64' CC_PRINT_OPTIONS='YES' CC='/usr/bin/gcc-4.2' :debug:configure Assembled command: 'cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_net_libtorrent-rasterbar/libtorrent-rasterbar/work/libtorrent-rasterbar-0.16.13" && ./configure --prefix=/opt/local --disable-silent-rules --enable-python-binding --enable-geoip --with-libgeoip --with-boost-libdir="/opt/local/lib" --with-boost-python="boost_python-mt"' :debug:configure Executing command line: cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_net_libtorrent-rasterbar/libtorrent-rasterbar/work/libtorrent-rasterbar-0.16.13" && ./configure --prefix=/opt/local --disable-silent-rules --enable-python-binding --enable-geoip --with-libgeoip --with-boost-libdir="/opt/local/lib" --with-boost-python="boost_python-mt" :info:configure checking whether make supports nested variables... yes :info:configure :info:configure Building libtorrent-rasterbar 0.16.13 :info:configure :info:configure Checking for a C/C++ compiler to use: :info:configure checking for gcc... /usr/bin/gcc-4.2 :info:configure checking whether the C compiler works... yes :info:configure checking for C compiler default output file name... a.out :info:configure checking for suffix of executables... :info:configure checking whether we are cross compiling... no :info:configure checking for suffix of object files... o :info:configure checking whether we are using the GNU C compiler... yes :info:configure checking whether /usr/bin/gcc-4.2 accepts -g... yes :info:configure checking for /usr/bin/gcc-4.2 option to accept ISO C89... none needed :info:configure checking whether /usr/bin/gcc-4.2 understands -c and -o together... yes :info:configure checking how to run the C preprocessor... /usr/bin/gcc-4.2 -E :info:configure checking whether /usr/bin/gcc-4.2 and cc understand -c and -o together... yes :info:configure checking whether we are using the GNU C++ compiler... yes :info:configure checking whether /usr/bin/g++-4.2 accepts -g... yes :info:configure checking how to run the C++ preprocessor... /usr/bin/g++-4.2 -E :info:configure checking whether /usr/bin/g++-4.2 understands -c and -o together... yes :info:configure :info:configure Checking system type: :info:configure checking build system type... x86_64-apple-darwin10.8.0 :info:configure checking host system type... x86_64-apple-darwin10.8.0 :info:configure checking target system type... x86_64-apple-darwin10.8.0 :info:configure :info:configure Initializing Automake: :info:configure checking for a BSD-compatible install... /usr/bin/install -c :info:configure checking whether build environment is sane... yes :info:configure checking for a thread-safe mkdir -p... build-aux/install-sh -c -d :info:configure checking for gawk... no :info:configure checking for mawk... no :info:configure checking for nawk... no :info:configure checking for awk... awk :info:configure checking whether make sets $(MAKE)... yes :info:configure checking for style of include used by make... GNU :info:configure checking dependency style of /usr/bin/gcc-4.2... gcc3 :info:configure checking dependency style of /usr/bin/g++-4.2... gcc3 :info:configure :info:configure Initializing Libtool: :info:configure checking how to print strings... printf :info:configure checking for a sed that does not truncate output... /usr/bin/sed :info:configure checking for grep that handles long lines and -e... /usr/bin/grep :info:configure checking for egrep... /usr/bin/grep -E :info:configure checking for fgrep... /usr/bin/grep -F :info:configure checking for ld used by /usr/bin/gcc-4.2... /usr/libexec/gcc/i686-apple-darwin10/4.2.1/ld :info:configure checking if the linker (/usr/libexec/gcc/i686-apple-darwin10/4.2.1/ld) is GNU ld... no :info:configure checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm :info:configure checking the name lister (/usr/bin/nm) interface... BSD nm :info:configure checking whether ln -s works... yes :info:configure checking the maximum length of command line arguments... 196608 :info:configure checking whether the shell understands some XSI constructs... yes :info:configure checking whether the shell understands "+="... yes :info:configure checking how to convert x86_64-apple-darwin10.8.0 file names to x86_64-apple-darwin10.8.0 format... func_convert_file_noop :info:configure checking how to convert x86_64-apple-darwin10.8.0 file names to toolchain format... func_convert_file_noop :info:configure checking for /usr/libexec/gcc/i686-apple-darwin10/4.2.1/ld option to reload object files... -r :info:configure checking for objdump... no :info:configure checking how to recognize dependent libraries... pass_all :info:configure checking for dlltool... no :info:configure checking how to associate runtime and link libraries... printf %s\n :info:configure checking for ar... ar :info:configure checking for archiver @FILE support... no :info:configure checking for strip... strip :info:configure checking for ranlib... ranlib :info:configure checking command to parse /usr/bin/nm output from /usr/bin/gcc-4.2 object... ok :info:configure checking for sysroot... no :info:configure checking for mt... no :info:configure checking if : is a manifest tool... no :info:configure checking for dsymutil... dsymutil :info:configure checking for nmedit... nmedit :info:configure checking for lipo... lipo :info:configure checking for otool... otool :info:configure checking for otool64... no :info:configure checking for -single_module linker flag... yes :info:configure checking for -exported_symbols_list linker flag... yes :info:configure checking for -force_load linker flag... yes :info:configure checking for ANSI C header files... yes :info:configure checking for sys/types.h... yes :info:configure checking for sys/stat.h... yes :info:configure checking for stdlib.h... yes :info:configure checking for string.h... yes :info:configure checking for memory.h... yes :info:configure checking for strings.h... yes :info:configure checking for inttypes.h... yes :info:configure checking for stdint.h... yes :info:configure checking for unistd.h... yes :info:configure checking for dlfcn.h... yes :info:configure checking for objdir... .libs :info:configure checking if /usr/bin/gcc-4.2 supports -fno-rtti -fno-exceptions... no :info:configure checking for /usr/bin/gcc-4.2 option to produce PIC... -fno-common -DPIC :info:configure checking if /usr/bin/gcc-4.2 PIC flag -fno-common -DPIC works... yes :info:configure checking if /usr/bin/gcc-4.2 static flag -static works... no :info:configure checking if /usr/bin/gcc-4.2 supports -c -o file.o... yes :info:configure checking if /usr/bin/gcc-4.2 supports -c -o file.o... (cached) yes :info:configure checking whether the /usr/bin/gcc-4.2 linker (/usr/libexec/gcc/i686-apple-darwin10/4.2.1/ld) supports shared libraries... yes :info:configure checking dynamic linker characteristics... darwin10.8.0 dyld :info:configure checking how to hardcode library paths into programs... immediate :info:configure checking whether stripping libraries is possible... yes :info:configure checking if libtool supports shared libraries... yes :info:configure checking whether to build shared libraries... yes :info:configure checking whether to build static libraries... yes :info:configure checking how to run the C++ preprocessor... /usr/bin/g++-4.2 -E :info:configure checking for ld used by /usr/bin/g++-4.2... /usr/libexec/gcc/i686-apple-darwin10/4.2.1/ld :info:configure checking if the linker (/usr/libexec/gcc/i686-apple-darwin10/4.2.1/ld) is GNU ld... no :info:configure checking whether the /usr/bin/g++-4.2 linker (/usr/libexec/gcc/i686-apple-darwin10/4.2.1/ld) supports shared libraries... yes :info:configure checking for /usr/bin/g++-4.2 option to produce PIC... -fno-common -DPIC :info:configure checking if /usr/bin/g++-4.2 PIC flag -fno-common -DPIC works... yes :info:configure checking if /usr/bin/g++-4.2 static flag -static works... no :info:configure checking if /usr/bin/g++-4.2 supports -c -o file.o... yes :info:configure checking if /usr/bin/g++-4.2 supports -c -o file.o... (cached) yes :info:configure checking whether the /usr/bin/g++-4.2 linker (/usr/libexec/gcc/i686-apple-darwin10/4.2.1/ld) supports shared libraries... yes :info:configure checking dynamic linker characteristics... darwin10.8.0 dyld :info:configure checking how to hardcode library paths into programs... immediate :info:configure :info:configure Checking for posix thread support: :info:configure checking for the pthreads library -lpthreads... no :info:configure checking whether pthreads work without any flags... yes :info:configure checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE :info:configure checking if more special flags are required for pthreads... -D_THREAD_SAFE :info:configure checking whether to check for GCC pthread/shared inconsistencies... no :info:configure checking whether -pthread is sufficient with -shared... no :info:configure checking whether -lpthread fixes that... no :info:configure checking whether -lc_r fixes that... no :info:configure configure: WARNING: Impossible to determine how to use pthreads with shared libraries :info:configure Checking for visibility support: :info:configure checking for __attribute__((visibility("hidden")))... found :info:configure yes :info:configure :info:configure Checking for boost libraries: :info:configure checking for boostlib >= 1.36... configure: error: We could not detect the boost libraries (version 1.36 or higher). If you have a staged boost library (still not installed) please specify $BOOST_ROOT in your environment and do not give a PATH to --with-boost option. If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation. :info:configure Command failed: cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_net_libtorrent-rasterbar/libtorrent-rasterbar/work/libtorrent-rasterbar-0.16.13" && ./configure --prefix=/opt/local --disable-silent-rules --enable-python-binding --enable-geoip --with-libgeoip --with-boost-libdir="/opt/local/lib" --with-boost-python="boost_python-mt" :info:configure Exit code: 1 :error:configure Failed to configure libtorrent-rasterbar, consult /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_net_libtorrent-rasterbar/libtorrent-rasterbar/work/libtorrent-rasterbar-0.16.13/config.log :error:configure org.macports.configure for port libtorrent-rasterbar returned: configure failure: command execution failed :debug:configure Error code: NONE :debug:configure Backtrace: configure failure: command execution failed while executing "$procedure $targetname" :info:configure Warning: targets not executed for libtorrent-rasterbar: org.macports.install org.macports.configure org.macports.build org.macports.destroot :notice:configure Please see the log file for port libtorrent-rasterbar for details: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_net_libtorrent-rasterbar/libtorrent-rasterbar/main.log
The Cc field must contain complete email addresses.