Opened 10 years ago

Closed 10 years ago

Last modified 9 years ago

#16378 closed enhancement (fixed)

boost-1.36

Reported by: sal@… Owned by: sanchom@…
Priority: Normal Milestone:
Component: ports Version: 1.6.0
Keywords: boost Cc: sanchom@…, blair (Blair Zajac), andi@…, andrea.bedini@…, arsptr@…, MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)
Port:

Description

Attached is an updated port file for boost 1.36 (came out earlier this month). I didn't have time to turn it into a diff. Note that files/patch-boost-serialization-utility.hpp and files/patch-boost-serialization-utility.hpp are no longer necessary.

Attachments (4)

Portfile (5.4 KB) - added by sal@… 10 years ago.
updated Portfile
Portfile.diff (6.8 KB) - added by adfernandes (Andrew Fernandes) 10 years ago.
version bump to 1.36.0, added gcc43 and gcc42 variants, uses internal install
python.log (22.5 KB) - added by adfernandes (Andrew Fernandes) 10 years ago.
kdump NAMI log of python2.5 + openmpi
Portfile.2.diff (5.5 KB) - added by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez) 10 years ago.

Download all attachments as: .zip

Change History (22)

Changed 10 years ago by sal@…

Attachment: Portfile added

updated Portfile

comment:1 Changed 10 years ago by sanchom@…

Thanks for doing this!

I see you appended a patchfile 'patch-configure'. Since you also removed the line that adds the patch file 'patch-build-type-Jamroot', I assume 'patch-configure' is doing the job that 'patch-build-type-Jamroot' used to do?

Could you please attach 'patch-configure'?

comment:2 Changed 10 years ago by adfernandes (Andrew Fernandes)

I'm really, really starting to hate the boost build system.

I use MPI a lot, and need gcc43. So... build openmpi with gcc43... and try to integrate with boost. BLECH.

I believe the attached diff works... libs seem to build properly...

(Notice that some of the patch files are no longer needed... I verified them in the boost distribution...)

comment:3 Changed 10 years ago by adfernandes (Andrew Fernandes)

Okay - mpi + python breaks the install. DAMN. Also, linking seems to have gone wonky.

Might be best to remove the gcc42 and gcc43 variants for now.

Yep, I definitely HATE boost.build.

(FYI - building MPI + python creates two "mpi.so" files - one multithreaded, the other not, both of which conflict in name during the install, that need to go in the correct python2.? site-packages directory, with install_name_tool mangling...)

Yep - really, really hate boost.build. Sorry for the noise.

comment:4 Changed 10 years ago by adfernandes (Andrew Fernandes)

Okay - I've tested my "Portfile.diff" set, and the compilation with gcc43 works just fine. However, there is yet-another bug in the jam install when using the macports gcc43 variant. The problems are two-fold:

  • Two variants of python's "mpi.so" are built, one "release", the other multi-threaded. I have no idea how different they really are, under Darwin. However, boost's installer gets confused because now we have two libraries with the same name.
  • If you delete one (or both) of these "mpi.so" files to allow the installer to complete, it dies on on internal error that, frankly, I can't diagnose.

No, I'm not writing a custom toolset description for jam - too much time, and I'm not smart enough to do it.

Would it be worthwhile adding a proper "install it" script that would handle staging to the destroot, fixing library install names, and all that stuff? Doing it in the portfile is crazy. Criminey!

(Sorry to sound so frustrated, but building 4000+ files to use MPI and experiment with python is starting to wear me down...)

comment:5 Changed 10 years ago by adfernandes (Andrew Fernandes)

Okay. After much recompiling, I've got openmpi + python compiling and installing. You can't use boost's internal "make install" because, well, it is broken, and sucks. (Can't handle the fact that there are two "mpi.so" objects, etc. Of course, on darwin there is no difference between "normal" and "mt" builds...

After all that effort, it appears that mpi+python is broken, at least on OS X. See this comment.

If you type

python2.5 test.py 

where 'test.py' has

import mpi
print "I am process %d of %d." % (mpi.rank, mpi.size)

you get

Fatal Python error: Interpreter not initialized (version mismatch?)
Abort trap

So, I've googled around, and that python error appears when you're mixing python versions (or debug/release versions) or using python built with a different compiler...

Take a look at the "python.log" file (attached)... it appears from the ktrace that all the right python bits are being loaded.

I give up. I curse boost build tools. I curse boost libraries. The headers are wonderful... but ARGH!

(The Portfile.diff I submitted has been updated.)

Changed 10 years ago by adfernandes (Andrew Fernandes)

Attachment: Portfile.diff added

version bump to 1.36.0, added gcc43 and gcc42 variants, uses internal install

Changed 10 years ago by adfernandes (Andrew Fernandes)

Attachment: python.log added

kdump NAMI log of python2.5 + openmpi

comment:6 in reply to:  5 Changed 10 years ago by blb@…

Replying to andrew@…:

So, I've googled around, and that python error appears when you're mixing python versions (or debug/release versions) or using python built with a different compiler...

That's probably ticket #16111.

comment:7 Changed 10 years ago by blair (Blair Zajac)

I'll be needing 1.36.0 very soon.

Can you also look at incorporating these hotfixes in the build:

http://comments.gmane.org/gmane.comp.lib.boost.announce/201 http://svn.boost.org/trac/boost/wiki/ReleasePractices/HotFixes

Thanks, Blair

comment:8 Changed 10 years ago by blair (Blair Zajac)

Cc: blair@… added

Adding myself to cc list.

comment:9 Changed 10 years ago by ryandesign (Ryan Schmidt)

Owner: changed from macports-tickets@… to sanchom@…

comment:10 Changed 10 years ago by andi@…

Cc: andi@… added

Cc Me!

comment:11 Changed 10 years ago by andrea.bedini@…

Cc: andrea.bedini@… added

Cc Me!

comment:12 Changed 10 years ago by arsptr@…

Cc: arsptr@… added

Cc Me!

comment:13 Changed 10 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

Attached is my attempt at boost version 1.36.

I put back the zlib and bzip2 dependencies, which were
removed in r34913.
The reason for the removal

Error: Target org.macports.destroot returned: no files matched glob pattern "*-1_35.dylib"

was fixed by setting the environment variables in destroot.env as well as build.env.

I do not see two versions of mpi.so, which is good, and the correct answer is given by:

/opt/local/bin/python -c 'import mpi; print "I am process %d of %d." % (mpi.rank, mpi.size)'

comment:14 Changed 10 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

Cc: mcalhoun@… added

Cc Me!

Changed 10 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

Attachment: Portfile.2.diff added

comment:15 Changed 10 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

boost was upgraded in r43281.

The issues with python25 (but not python26) remain.
There are still no variants for other compilers.

Perhaps this ticket should be closed.
The outstanding issues can then get their own tickets.

comment:16 Changed 10 years ago by sanchom@…

Agree. This should be closed. Also, I'm active again.

comment:17 Changed 10 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

Resolution: fixed
Status: newclosed

comment:18 Changed 9 years ago by (none)

Milestone: Port Enhancements

Milestone Port Enhancements deleted

Note: See TracTickets for help on using tickets.