Opened 12 years ago

Closed 12 years ago

Last modified 10 years ago

#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 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@…

The Cc field must contain complete email addresses.

comment:2 in reply to:  1 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 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 in reply to:  3 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: newclosed

Fix committed in r97400. Port now updated to version 0.16.3.

comment:6 Changed 10 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


Note: See TracTickets for help on using tickets.