#15334 closed defect (fixed)
important boost 1.35 bugfixes, updates, and variants
Reported by: | adfernandes (Andrew Fernandes) | Owned by: | macports-tickets@… |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 1.6.0 |
Keywords: | boost | Cc: | sanchom (Sancho McCann), ono@…, jmroot (Joshua Root) |
Port: |
Description
The boost@1.35.0_0 library has a number of problems as built by the current port:
- only the dynamic, multi-threaded libraries get built (not the debug, static, single-threaded, etc.)
- the python 2.4 or 2.5 variants always used Tiger's built-in 2.3
- no options exist to include the GraphML or MPI support
The attached Portfile- and Jamroot-patch files fix these problems.
- By default, a 'complete' build of boost is requested (via 'patch-build-type-Jamroot')
- Added 'graphml' and 'openmpi' variants. (Other MPI variants such as MPICH or LAMMPI will require different variants.)
- Fixed the python-selection bug, and tested it on Tiger using MacPorts 2.4 and 2.5.
Big Caveat
- For some reason I can't figure out, building the 'complete' rather than 'minimal' build-type causes the ICU variant to fail. I've beat my head against it, but it seems to be some sort of error in the jamfile (not an error in the code being compiled or linked).
Building with the ICU variant under the 'minimal' build-type was successful. I'll try to attach a bug report with more details later.
Attachments (3)
Change History (16)
Changed 17 years ago by adfernandes (Andrew Fernandes)
Attachment: | Portfile.patch added |
---|
Changed 17 years ago by adfernandes (Andrew Fernandes)
Attachment: | patch-build-type-Jamroot added |
---|
Changes build-type from 'minimal' to 'complete'
comment:1 follow-up: 2 Changed 17 years ago by adfernandes (Andrew Fernandes)
Here is what happens if you try to build the ICU variant. (Again, note that the build succeeds with no problems if you build the default 'minimum' build-type!)
DEBUG: Executing org.macports.extract (boost) ---> Extracting boost_1_35_0.tar.bz2 DEBUG: setting option extract.args to /opt/local/var/macports/distfiles/boost/boost_1_35_0.tar.bz2 DEBUG: Environment: DEBUG: Assembled command: 'cd "/opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work" && /opt/local/bin/bzip2 -dc /opt/local/var/macports/distfiles/boost/boost_1_35_0.tar.bz2 | /usr/bin/gnutar --no-same-owner -xf -' DEBUG: Executing org.macports.patch (boost) ---> Applying patches to boost ---> Applying /Users/andrew/Local/ports/devel/boost/files/patch-tools-build-v2-tools-darwin.jam DEBUG: Environment: DEBUG: Assembled command: 'cd "/opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0" && patch -p0' patching file tools/build/v2/tools/darwin.jam ---> Applying /Users/andrew/Local/ports/devel/boost/files/patch-boost-serialization-utility.hpp DEBUG: Environment: DEBUG: Assembled command: 'cd "/opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0" && patch -p0' patching file boost/serialization/utility.hpp ---> Applying /Users/andrew/Local/ports/devel/boost/files/patch-build-type-Jamroot DEBUG: Environment: DEBUG: Assembled command: 'cd "/opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0" && patch -p0' patching file Jamroot ---> Configuring boost DEBUG: Executing org.macports.configure (boost) DEBUG: Using compiler 'Mac OS X gcc 4.0' DEBUG: Environment: CFLAGS='-O2' CPPFLAGS='-I/opt/local/include' CXXFLAGS='-O2' CPP='/usr/bin/cpp-4.0' CXX='/usr/bin/g++-4.0' F90FLAGS='-O2' EXPAT_INCLUDE='/opt/local/include' LDFLAGS='-L/opt/local/lib' FCFLAGS='-O2' OBJC='/usr/bin/gcc-4.0' INSTALL='/usr/bin/install' FFLAGS='-O2' OBJCFLAGS='-O2' EXPAT_LIBPATH='/opt/local/lib' CC='/usr/bin/gcc-4.0' DEBUG: Assembled command: 'cd "/opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0" && ./configure --prefix=/opt/local --with-python=python2.5 --with-icu=/opt/local' Building Boost.Jam with toolset darwin... tools/jam/src/bin.macosxx86/bjam Detecting Python version... 2.5 Detecting Python root... /opt/local Unicode/ICU support for Boost.Regex?... /opt/local Generating Boost.Build configuration in user-config.jam... Generating Makefile... DEBUG: Executing proc-post-org.macports.configure-configure-0 ---> Building boost with target all DEBUG: Executing org.macports.build (boost) DEBUG: Environment: EXPAT_LIBPATH='/opt/local/lib' EXPAT_INCLUDE='/opt/local/include' DEBUG: Assembled command: 'cd "/opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0" && make all' ./tools/jam/src/bin.macosxx86/bjam -sICU_PATH=/opt/local --user-config=user-config.jam Building Boost.Regex with Unicode/ICU support enabled Using ICU in /opt/local/include Skipping build of: ./headers <build>no in common properties Skipping build of: ./headers <build>no in common properties Skipping build of: ./headers <build>no in common properties Skipping build of: ./headers <build>no in common properties Skipping build of: ./build_all <build>no in common properties Skipping build of: ./build_all <build>no in common properties Skipping build of: ./build_all <build>no in common properties Skipping build of: ./build_all <build>no in common properties Skipping build of: libs/regex/build/icucore <build>no in common properties Skipping build of: libs/regex/build/icuin <build>no in common properties Skipping build of: libs/regex/build/icudata <build>no in common properties /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/kernel/class.jam:93: in new *** argument error * rule object(searched-lib-target)@7352.__init__ ( name : project : shared ? : search * : action ) * called with: ( icudata icui18n icuuc : object(project-target)@252 : true : /opt/local/lib : object(null-action)@7351 : : : : ) * extra argument icui18n /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/tools/builtin.jam:349:see definition of rule '__init__' being called /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/tools/builtin.jam:592: in searched-lib-generator.run /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/tools/unix.jam:113: in object(unix-searched-lib-generator)@36.run /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/generators.jam:859: in try-one-generator-really /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/generators.jam:920: in try-one-generator /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/generators.jam:1131: in construct-really /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/generators.jam:1204: in generators.construct /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/tools/builtin.jam:496: in object(lib-generator)@5.run /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/generators.jam:859: in try-one-generator-really /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/generators.jam:920: in try-one-generator /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/generators.jam:1131: in construct-really /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/generators.jam:1204: in generators.construct /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/targets.jam:1368: in construct /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/targets.jam:1206: in object(typed-target)@264.generate /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/targets.jam:742: in generate-really /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/targets.jam:715: in object(main-target)@1192.generate /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/targets.jam:254: in object(project-target)@252.generate /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/targets.jam:858: in targets.generate-from-reference /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/targets.jam:1129: in generate-dependencies /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/targets.jam:1179: in object(alias-target-class)@124.generate /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/targets.jam:742: in generate-really /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/targets.jam:715: in object(main-target)@412.generate /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/targets.jam:254: in object(project-target)@81.generate /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build-system.jam:658: in load /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/kernel/modules.jam:267: in import /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/kernel/bootstrap.jam:132: in boost-build /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/boost-build.jam:11: in module scope Not all Boost libraries built properly.
comment:2 follow-up: 3 Changed 17 years ago by adfernandes (Andrew Fernandes)
After enabling different levels of bjam debugging flags, I've realized that this bug is totally beyond me. I'm filing it with boost bugs.
Replying to andrew@fernandes.org:
Here is what happens if you try to build the ICU variant. (Again, note that the build succeeds with no problems if you build the default 'minimum' build-type!)
DEBUG: Executing org.macports.extract (boost) ---> Extracting boost_1_35_0.tar.bz2 DEBUG: setting option extract.args to /opt/local/var/macports/distfiles/boost/boost_1_35_0.tar.bz2 DEBUG: Environment: DEBUG: Assembled command: 'cd "/opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work" && /opt/local/bin/bzip2 -dc /opt/local/var/macports/distfiles/boost/boost_1_35_0.tar.bz2 | /usr/bin/gnutar --no-same-owner -xf -' DEBUG: Executing org.macports.patch (boost) ---> Applying patches to boost ---> Applying /Users/andrew/Local/ports/devel/boost/files/patch-tools-build-v2-tools-darwin.jam DEBUG: Environment: DEBUG: Assembled command: 'cd "/opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0" && patch -p0' patching file tools/build/v2/tools/darwin.jam ---> Applying /Users/andrew/Local/ports/devel/boost/files/patch-boost-serialization-utility.hpp DEBUG: Environment: DEBUG: Assembled command: 'cd "/opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0" && patch -p0' patching file boost/serialization/utility.hpp ---> Applying /Users/andrew/Local/ports/devel/boost/files/patch-build-type-Jamroot DEBUG: Environment: DEBUG: Assembled command: 'cd "/opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0" && patch -p0' patching file Jamroot ---> Configuring boost DEBUG: Executing org.macports.configure (boost) DEBUG: Using compiler 'Mac OS X gcc 4.0' DEBUG: Environment: CFLAGS='-O2' CPPFLAGS='-I/opt/local/include' CXXFLAGS='-O2' CPP='/usr/bin/cpp-4.0' CXX='/usr/bin/g++-4.0' F90FLAGS='-O2' EXPAT_INCLUDE='/opt/local/include' LDFLAGS='-L/opt/local/lib' FCFLAGS='-O2' OBJC='/usr/bin/gcc-4.0' INSTALL='/usr/bin/install' FFLAGS='-O2' OBJCFLAGS='-O2' EXPAT_LIBPATH='/opt/local/lib' CC='/usr/bin/gcc-4.0' DEBUG: Assembled command: 'cd "/opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0" && ./configure --prefix=/opt/local --with-python=python2.5 --with-icu=/opt/local' Building Boost.Jam with toolset darwin... tools/jam/src/bin.macosxx86/bjam Detecting Python version... 2.5 Detecting Python root... /opt/local Unicode/ICU support for Boost.Regex?... /opt/local Generating Boost.Build configuration in user-config.jam... Generating Makefile... DEBUG: Executing proc-post-org.macports.configure-configure-0 ---> Building boost with target all DEBUG: Executing org.macports.build (boost) DEBUG: Environment: EXPAT_LIBPATH='/opt/local/lib' EXPAT_INCLUDE='/opt/local/include' DEBUG: Assembled command: 'cd "/opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0" && make all' ./tools/jam/src/bin.macosxx86/bjam -sICU_PATH=/opt/local --user-config=user-config.jam Building Boost.Regex with Unicode/ICU support enabled Using ICU in /opt/local/include Skipping build of: ./headers <build>no in common properties Skipping build of: ./headers <build>no in common properties Skipping build of: ./headers <build>no in common properties Skipping build of: ./headers <build>no in common properties Skipping build of: ./build_all <build>no in common properties Skipping build of: ./build_all <build>no in common properties Skipping build of: ./build_all <build>no in common properties Skipping build of: ./build_all <build>no in common properties Skipping build of: libs/regex/build/icucore <build>no in common properties Skipping build of: libs/regex/build/icuin <build>no in common properties Skipping build of: libs/regex/build/icudata <build>no in common properties /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/kernel/class.jam:93: in new *** argument error * rule object(searched-lib-target)@7352.__init__ ( name : project : shared ? : search * : action ) * called with: ( icudata icui18n icuuc : object(project-target)@252 : true : /opt/local/lib : object(null-action)@7351 : : : : ) * extra argument icui18n /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/tools/builtin.jam:349:see definition of rule '__init__' being called /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/tools/builtin.jam:592: in searched-lib-generator.run /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/tools/unix.jam:113: in object(unix-searched-lib-generator)@36.run /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/generators.jam:859: in try-one-generator-really /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/generators.jam:920: in try-one-generator /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/generators.jam:1131: in construct-really /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/generators.jam:1204: in generators.construct /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/tools/builtin.jam:496: in object(lib-generator)@5.run /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/generators.jam:859: in try-one-generator-really /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/generators.jam:920: in try-one-generator /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/generators.jam:1131: in construct-really /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/generators.jam:1204: in generators.construct /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/targets.jam:1368: in construct /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/targets.jam:1206: in object(typed-target)@264.generate /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/targets.jam:742: in generate-really /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/targets.jam:715: in object(main-target)@1192.generate /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/targets.jam:254: in object(project-target)@252.generate /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/targets.jam:858: in targets.generate-from-reference /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/targets.jam:1129: in generate-dependencies /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/targets.jam:1179: in object(alias-target-class)@124.generate /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/targets.jam:742: in generate-really /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/targets.jam:715: in object(main-target)@412.generate /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build/targets.jam:254: in object(project-target)@81.generate /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/build-system.jam:658: in load /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/kernel/modules.jam:267: in import /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/tools/build/v2/kernel/bootstrap.jam:132: in boost-build /opt/local/var/macports/build/_Users_andrew_Local_ports_devel_boost/work/boost_1_35_0/boost-build.jam:11: in module scope Not all Boost libraries built properly.
comment:3 Changed 17 years ago by adfernandes (Andrew Fernandes)
Replying to andrew@fernandes.org:
After enabling different levels of bjam debugging flags, I've realized that this bug is totally beyond me. I'm filing it with boost bugs.
Logged as Boost Bug #1928
comment:4 follow-up: 5 Changed 17 years ago by sanchom (Sancho McCann)
Thanks. This looks like a good fix. Do you think maybe "minimal" should be a variant that builds just the dynamic, multithreaded libraries? Actually, having the minimal build as a variant could be a possible work-around for the ICU bug. Either way, this should be submitted in the next revision and we'll just have the remaining ICU bug.
comment:5 Changed 17 years ago by adfernandes (Andrew Fernandes)
Good question! I'm thinking not, since developers often want different libs for different reasons, and the boost libs are easy enough to redistribute (using install_name_tool, thanks to the patch) that it doesn't matter.
comment:6 follow-up: 8 Changed 16 years ago by sanchom (Sancho McCann)
Can these fixes be committed please? I've tried them out and they're good, except for the introduced ICU variant bug. I think this trade-off is worth it.
comment:7 Changed 16 years ago by adfernandes (Andrew Fernandes)
Funny timing - a few minutes ago I received an email regarding the ICU Boost Bug #1928. Apparently it has been fixed in the boost trunk for milestone 1.35.1.
I tried downloading and checking what changed in order to make a patch... and all I can say is a lot within the 'tools/build/v2' directory hierarchy. Many changes are comments, but since this is all black magic to me, I have no idea what has changed, or anything. Sorry.
On the other hand, I think the bug I submitted for the 'headerpad...' patch will be accepted...
Cheers, -Andrew.
comment:8 Changed 16 years ago by ryandesign (Ryan Carsten Schmidt)
Resolution: | → fixed |
---|---|
Status: | new → closed |
Replying to sanchom@gmail.com:
Can these fixes be committed please? I've tried them out and they're good, except for the introduced ICU variant bug. I think this trade-off is worth it.
Committed in r37642.
comment:9 Changed 16 years ago by ono@…
Resolution: | fixed |
---|---|
Status: | closed → reopened |
I'm sorry but this patch is really nasty, I just upgraded my ports and updated them and now boost builds for AGES (40 min) because of "By default, a 'complete' build of boost is requested (via 'patch-build-type-Jamroot')" and boost installation take 750MB on the disk!
If we really need 'complete' Boost please move it to some 'complete' variant ASAP. Boost is dependency for many packages, but they don't need whole set of complete boost build in order to run, but just single dynamic MT. All other MacPorts libraries such as glibc2 or gtk2 are just single build type (dynamic MT).
I have quite new MBP with big disk, but what about old MacBook PPC users... it will take days to compile their boost now and for sure 750MB for single MacPorts package will be too much.
Changed 16 years ago by ono@…
Attachment: | MacPorts_move_complete_build_to_variant.patch added |
---|
Moves complete build to 'complete' variant
comment:11 Changed 16 years ago by sanchom (Sancho McCann)
This is a good to have as an option. I had thought earlier that we could have the complete version by default and the minimal version as a variant, but since, for the most part, only the minimal (dynamic libraries only) version is needed, your patch makes sense.
Please commit.
comment:12 Changed 16 years ago by jmroot (Joshua Root)
Cc: | jmr@… added |
---|---|
Resolution: | → fixed |
Status: | reopened → closed |
Committed in r37656.
Portfile patch