Opened 13 years ago

Closed 13 years ago

#29345 closed defect (fixed)

PyMOL 1.4 fails to build with gcc 4.4 error

Reported by: michelle.lynn.gill@… Owned by: macports-tickets@…
Priority: Normal Milestone:
Component: ports Version: 1.9.2
Keywords: haspatch maintainer Cc: howarth@…
Port: pymol

Description

When trying to build the latest PyMOL port using gcc 4.4, I get the following error:

:debug:build Environment: CFLAGS='-m64' CXXFLAGS='-m64' CPATH='/opt/local/include' MACOSX_DEPLOYMENT_TARGET='10.6' LIBRARY_PATH='/opt/local/lib' F90FLAGS='-m64' CC_PRINT_OPTIONS_FILE='/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_science_pymol/work/.CC_PRINT_OPTIONS' LDFLAGS='' FCFLAGS='-m64' OBJCFLAGS='-m64' FFLAGS='-m64' CC_PRINT_OPTIONS='YES'
:debug:build Assembled command: 'cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_science_pymol/work/pymol" && /opt/local/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6 setup.py --no-user-cfg build CC="/opt/local/bin/gcc-mp-4.4" CXX="/opt/local/bin/g++-mp-4.4"'
:info:build invalid command name 'CC=/opt/local/bin/gcc-mp-4.4'
:info:build shell command " cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_science_pymol/work/pymol" && /opt/local/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6 setup.py --no-user-cfg build CC="/opt/local/bin/gcc-mp-4.4" CXX="/opt/local/bin/g++-mp-4.4" " returned error 1
:error:build Target org.macports.build returned: shell command failed (see log for details)
:debug:build Backtrace: shell command failed (see log for details)

There appears to be an error with the alias for CC (and possibly also CXX, since it appears after CC) as the file requested by the alias exists:

[mlgill@jayhawkbabe]~ 510 % otool -L /opt/local/bin/gcc-mp-4.4
/opt/local/bin/gcc-mp-4.4:
	/opt/local/lib/libiconv.2.dylib (compatibility version 8.0.0, current version 8.0.0)
	/opt/local/lib/gcc44/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.10)

I have attached the log file and CC'd the maintainer. Please let me know if there is anything else you need.

Attachments (4)

pymol_main.log (72.9 KB) - added by michelle.lynn.gill@… 13 years ago.
setup_py.diff (1.6 KB) - added by howarth@… 13 years ago.
revised setup_py.diff that explicitly passes -fcommon
Portfile.diff (3.2 KB) - added by howarth@… 13 years ago.
fix critical pymol_path issue as well for relax, etc.
pymol_shell.diff (665 bytes) - added by howarth@… 13 years ago.
drop setting PYMOL_PATH now that pymol_path symlink is created

Download all attachments as: .zip

Change History (27)

Changed 13 years ago by michelle.lynn.gill@…

Attachment: pymol_main.log added

comment:1 Changed 13 years ago by howarth@…

Shouldn't "CC=/opt/local/bin/gcc-mp-4.4 CXX=/opt/local/bin/g++-mp-4.4" be placed in front of the setup.py command instead? If so, it seems that python.add_archflags should be handing this in the python PortGroup for CC and CXX as it already does for CFLAGS, LDFLAGS, etc. For now, I suspect we need to replace the lines...

variant gcc44 description conflicts gcc43 gcc45 description {build using macports-gcc-4.4} {
    depends_lib-append  port:gcc44
    # the current pymol makefile does not honour CC and CXX environment variables
    build.args-delete   CC="${configure.cc}" CXX="${configure.cxx}"
    build.args-append   CC="${prefix}/bin/gcc-mp-4.4" CXX="${prefix}/bin/g++-mp-4.4"
    configure.compiler  macports-gcc-4.4
}

with something like

variant gcc44 description conflicts gcc43 gcc45 description {build using macports-gcc-4.4} {
    depends_lib-append  port:gcc44
    # the current pymol makefile does not honour CC and CXX environment variables
    build.cmd  CC="${prefix}/bin/gcc-mp-4.4" CXX="${prefix}/bin/g++-mp-4.4" ${python.bin} setup.py --no-user-cfg
}

comment:2 Changed 13 years ago by ryandesign (Ryan Carsten Schmidt)

Jack, I have fixed your WikiFormatting above. Please preview before posting.

comment:3 Changed 13 years ago by ryandesign (Ryan Carsten Schmidt)

Keywords: pymol removed
Port: pymol added; pymol+gcc44 removed

comment:4 in reply to:  1 Changed 13 years ago by michelle.lynn.gill@…

Replying to howarth@…:

Shouldn't "CC=/opt/local/bin/gcc-mp-4.4 CXX=/opt/local/bin/g++-mp-4.4" be placed in front of the setup.py command instead?

Yes, I thought the build command looked out of order as well.

variant gcc44 description conflicts gcc43 gcc45 description {build using macports-gcc-4.4} {
    depends_lib-append  port:gcc44
    # the current pymol makefile does not honour CC and CXX environment variables
    build.cmd  CC="${prefix}/bin/gcc-mp-4.4" CXX="${prefix}/bin/g++-mp-4.4" ${python.bin} setup.py --no-user-cfg

I tried your suggested fix on my own local repository and there is a different error, so I suspect the command still isn't right. Unfortunately, I'm in the middle of writing a manuscript, so I may not get back to fiddling with it for a few days. I'm posting the error I get with your suggested fix below in hopes that it is of help.

:info:build /opt/local/bin/gcc-mp-4.4 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -arch x86_64 -D_PYMOL_MODULE -D_PYMOL_INLINE -D_PYMOL_LIBPNG -D_PYMOL_FREETYPE -D_PYMOL_NUMPY -D_PYMOL_OPENGL_SHADERS -DNO_MMLIBS -Iov/src -Ilayer0 -Ilayer1 -Ilayer2 -Ilayer3 -Ilayer4 -Ilayer5 -I/opt/local/include -I/opt/local/include/GL -I/opt/local/include/freetype2 -Imodules/cealign/src -Imodules/cealign/src/tnt -I/opt/local/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c modules/cealign/src/ccealignmodule.cpp -o build/temp.macosx-10.6-x86_64-2.6/modules/cealign/src/ccealignmodule.o -ffast-math -funroll-loops -O3
:info:build cc1plus: error: unrecognized command line option "-arch"
:info:build cc1plus: warning: command line option "-Wstrict-prototypes" is valid for C/ObjC but not for C++
:info:build error: command '/opt/local/bin/gcc-mp-4.4' failed with exit status 1
:info:build shell command " cd "/opt/local/var/macports/build/_opt_local_build_science_pymol/work/pymol" && CC="/opt/local/bin/gcc-mp-4.4" CXX="/opt/local/bin/g++-mp-4.4" /opt/local/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6 setup.py --no-user-cfg build " returned error 1
:error:build Target org.macports.build returned: shell command failed (see log for details)
:debug:build Backtrace: shell command failed (see log for details)

comment:5 Changed 13 years ago by howarth@…

The partial fix solves the part of the build but it still fails with gcc45 at...

/opt/local/bin/gcc-mp-4.5 -fno-strict-aliasing -fno-common -dynamic -pipe -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -D_PYMOL_MODULE -D_PYMOL_INLINE -D_PYMOL_LIBPNG -D_PYMOL_FREETYPE -D_PYMOL_NUMPY -D_PYMOL_OPENGL_SHADERS -DNO_MMLIBS -Iov/src -Ilayer0 -Ilayer1 -Ilayer2 -Ilayer3 -Ilayer4 -Ilayer5 -I/opt/local/include -I/opt/local/include/GL -I/opt/local/include/freetype2 -Imodules/cealign/src -Imodules/cealign/src/tnt -I/opt/local/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c layer5/TestPyMOL.c -o build/temp.macosx-10.6-x86_64-2.6/layer5/TestPyMOL.o -ffast-math -funroll-loops -O3
/opt/local/bin/gcc-mp-4.5 -fno-strict-aliasing -fno-common -dynamic -pipe -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -D_PYMOL_MODULE -D_PYMOL_INLINE -D_PYMOL_LIBPNG -D_PYMOL_FREETYPE -D_PYMOL_NUMPY -D_PYMOL_OPENGL_SHADERS -DNO_MMLIBS -Iov/src -Ilayer0 -Ilayer1 -Ilayer2 -Ilayer3 -Ilayer4 -Ilayer5 -I/opt/local/include -I/opt/local/include/GL -I/opt/local/include/freetype2 -Imodules/cealign/src -Imodules/cealign/src/tnt -I/opt/local/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c layer5/main.c -o build/temp.macosx-10.6-x86_64-2.6/layer5/main.o -ffast-math -funroll-loops -O3
/opt/local/bin/g++-mp-4.5 -L/opt/local/lib -bundle -undefined dynamic_lookup build/temp.macosx-10.6-x86_64-2.6/modules/cealign/src/ccealignmodule.o build/temp.macosx-10.6-x86_64-2.6/ov/src/OVContext.o build/temp.macosx-10.6-x86_64-2.6/ov/src/OVHeapArray.o build/temp.macosx-10.6-x86_64-2.6/ov/src/OVHeap.o build/temp.macosx-10.6-x86_64-2.6/ov/src/OVLexicon.o build/temp.macosx-10.6-x86_64-2.6/ov/src/OVOneToOne.o build/temp.macosx-10.6-x86_64-2.6/ov/src/OVOneToAny.o build/temp.macosx-10.6-x86_64-2.6/ov/src/OVRandom.o build/temp.macosx-10.6-x86_64-2.6/ov/src/ov_utility.o build/temp.macosx-10.6-x86_64-2.6/layer0/Block.o build/temp.macosx-10.6-x86_64-2.6/layer0/Crystal.o build/temp.macosx-10.6-x86_64-2.6/layer0/Debug.o build/temp.macosx-10.6-x86_64-2.6/layer0/Deferred.o build/temp.macosx-10.6-x86_64-2.6/layer0/Err.o build/temp.macosx-10.6-x86_64-2.6/layer0/Feedback.o build/temp.macosx-10.6-x86_64-2.6/layer0/Field.o build/temp.macosx-10.6-x86_64-2.6/layer0/Isosurf.o build/temp.macosx-10.6-x86_64-2.6/layer0/Map.o build/temp.macosx-10.6-x86_64-2.6/layer0/Match.o build/temp.macosx-10.6-x86_64-2.6/layer0/Matrix.o build/temp.macosx-10.6-x86_64-2.6/layer0/MemoryDebug.o build/temp.macosx-10.6-x86_64-2.6/layer0/MemoryCache.o build/temp.macosx-10.6-x86_64-2.6/layer0/MyPNG.o build/temp.macosx-10.6-x86_64-2.6/layer0/Parse.o build/temp.macosx-10.6-x86_64-2.6/layer0/Pixmap.o build/temp.macosx-10.6-x86_64-2.6/layer0/Queue.o build/temp.macosx-10.6-x86_64-2.6/layer0/Raw.o build/temp.macosx-10.6-x86_64-2.6/layer0/Sphere.o build/temp.macosx-10.6-x86_64-2.6/layer0/ShaderMgr.o build/temp.macosx-10.6-x86_64-2.6/layer0/Tetsurf.o build/temp.macosx-10.6-x86_64-2.6/layer0/Texture.o build/temp.macosx-10.6-x86_64-2.6/layer0/Tracker.o build/temp.macosx-10.6-x86_64-2.6/layer0/Triangle.o build/temp.macosx-10.6-x86_64-2.6/layer0/Util.o build/temp.macosx-10.6-x86_64-2.6/layer0/Vector.o build/temp.macosx-10.6-x86_64-2.6/layer0/Word.o build/temp.macosx-10.6-x86_64-2.6/layer0/os_gl.o build/temp.macosx-10.6-x86_64-2.6/layer1/Basis.o build/temp.macosx-10.6-x86_64-2.6/layer1/ButMode.o build/temp.macosx-10.6-x86_64-2.6/layer1/Character.o build/temp.macosx-10.6-x86_64-2.6/layer1/CGO.o build/temp.macosx-10.6-x86_64-2.6/layer1/Color.o build/temp.macosx-10.6-x86_64-2.6/layer1/Control.o build/temp.macosx-10.6-x86_64-2.6/layer1/Extrude.o build/temp.macosx-10.6-x86_64-2.6/layer1/Font.o build/temp.macosx-10.6-x86_64-2.6/layer1/FontType.o build/temp.macosx-10.6-x86_64-2.6/layer1/FontGLUT.o build/temp.macosx-10.6-x86_64-2.6/layer1/FontGLUT8x13.o build/temp.macosx-10.6-x86_64-2.6/layer1/FontGLUT9x15.o build/temp.macosx-10.6-x86_64-2.6/layer1/FontGLUTHel10.o build/temp.macosx-10.6-x86_64-2.6/layer1/FontGLUTHel12.o build/temp.macosx-10.6-x86_64-2.6/layer1/FontGLUTHel18.o build/temp.macosx-10.6-x86_64-2.6/layer1/Movie.o build/temp.macosx-10.6-x86_64-2.6/layer1/Ortho.o build/temp.macosx-10.6-x86_64-2.6/layer1/P.o build/temp.macosx-10.6-x86_64-2.6/layer1/PConv.o build/temp.macosx-10.6-x86_64-2.6/layer1/Pop.o build/temp.macosx-10.6-x86_64-2.6/layer1/PyMOLObject.o build/temp.macosx-10.6-x86_64-2.6/layer1/Ray.o build/temp.macosx-10.6-x86_64-2.6/layer1/Rep.o build/temp.macosx-10.6-x86_64-2.6/layer1/Scene.o build/temp.macosx-10.6-x86_64-2.6/layer1/ScrollBar.o build/temp.macosx-10.6-x86_64-2.6/layer1/Seq.o build/temp.macosx-10.6-x86_64-2.6/layer1/Setting.o build/temp.macosx-10.6-x86_64-2.6/layer1/Shaker.o build/temp.macosx-10.6-x86_64-2.6/layer1/Symmetry.o build/temp.macosx-10.6-x86_64-2.6/layer1/Text.o build/temp.macosx-10.6-x86_64-2.6/layer1/TypeFace.o build/temp.macosx-10.6-x86_64-2.6/layer1/Wizard.o build/temp.macosx-10.6-x86_64-2.6/layer1/View.o build/temp.macosx-10.6-x86_64-2.6/layer2/AtomInfo.o build/temp.macosx-10.6-x86_64-2.6/layer2/CoordSet.o build/temp.macosx-10.6-x86_64-2.6/layer2/GadgetSet.o build/temp.macosx-10.6-x86_64-2.6/layer2/DistSet.o build/temp.macosx-10.6-x86_64-2.6/layer2/ObjectAlignment.o build/temp.macosx-10.6-x86_64-2.6/layer2/ObjectCGO.o build/temp.macosx-10.6-x86_64-2.6/layer2/ObjectCallback.o build/temp.macosx-10.6-x86_64-2.6/layer2/ObjectDist.o build/temp.macosx-10.6-x86_64-2.6/layer2/ObjectMap.o build/temp.macosx-10.6-x86_64-2.6/layer2/ObjectMesh.o build/temp.macosx-10.6-x86_64-2.6/layer2/ObjectMolecule.o build/temp.macosx-10.6-x86_64-2.6/layer2/ObjectMolecule2.o build/temp.macosx-10.6-x86_64-2.6/layer2/ObjectSurface.o build/temp.macosx-10.6-x86_64-2.6/layer2/ObjectSlice.o build/temp.macosx-10.6-x86_64-2.6/layer2/ObjectVolume.o build/temp.macosx-10.6-x86_64-2.6/layer2/RepCartoon.o build/temp.macosx-10.6-x86_64-2.6/layer2/RepCylBond.o build/temp.macosx-10.6-x86_64-2.6/layer2/RepDistDash.o build/temp.macosx-10.6-x86_64-2.6/layer2/RepDistLabel.o build/temp.macosx-10.6-x86_64-2.6/layer2/RepDot.o build/temp.macosx-10.6-x86_64-2.6/layer2/RepLabel.o build/temp.macosx-10.6-x86_64-2.6/layer2/RepMesh.o build/temp.macosx-10.6-x86_64-2.6/layer2/ObjectGadget.o build/temp.macosx-10.6-x86_64-2.6/layer2/ObjectGadgetRamp.o build/temp.macosx-10.6-x86_64-2.6/layer2/ObjectGroup.o build/temp.macosx-10.6-x86_64-2.6/layer2/RepAngle.o build/temp.macosx-10.6-x86_64-2.6/layer2/RepDihedral.o build/temp.macosx-10.6-x86_64-2.6/layer2/RepNonbonded.o build/temp.macosx-10.6-x86_64-2.6/layer2/RepNonbondedSphere.o build/temp.macosx-10.6-x86_64-2.6/layer2/RepRibbon.o build/temp.macosx-10.6-x86_64-2.6/layer2/RepSphere.o build/temp.macosx-10.6-x86_64-2.6/layer2/RepEllipsoid.o build/temp.macosx-10.6-x86_64-2.6/layer2/RepSurface.o build/temp.macosx-10.6-x86_64-2.6/layer2/RepWireBond.o build/temp.macosx-10.6-x86_64-2.6/layer2/Sculpt.o build/temp.macosx-10.6-x86_64-2.6/layer2/SculptCache.o build/temp.macosx-10.6-x86_64-2.6/layer2/VFont.o build/temp.macosx-10.6-x86_64-2.6/layer3/PlugIOManager.o build/temp.macosx-10.6-x86_64-2.6/layer3/Editor.o build/temp.macosx-10.6-x86_64-2.6/layer3/Executive.o build/temp.macosx-10.6-x86_64-2.6/layer3/Seeker.o build/temp.macosx-10.6-x86_64-2.6/layer3/Selector.o build/temp.macosx-10.6-x86_64-2.6/layer4/Cmd.o build/temp.macosx-10.6-x86_64-2.6/layer4/Export.o build/temp.macosx-10.6-x86_64-2.6/layer4/Menu.o build/temp.macosx-10.6-x86_64-2.6/layer4/PopUp.o build/temp.macosx-10.6-x86_64-2.6/layer5/PyMOL.o build/temp.macosx-10.6-x86_64-2.6/layer5/TestPyMOL.o build/temp.macosx-10.6-x86_64-2.6/layer5/main.o -o build/lib.macosx-10.6-x86_64-2.6/pymol/_cmd.so -L/opt/local/lib -lpng -lGL -lglut -lGLEW -lfreetype
ld: duplicate symbol __CShaderMgr in build/temp.macosx-10.6-x86_64-2.6/layer2/ObjectVolume.o and build/temp.macosx-10.6-x86_64-2.6/layer0/ShaderMgr.o for architecture x86_64
collect2: ld returned 1 exit status
error: command '/opt/local/bin/g++-mp-4.5' failed with exit status 1
shell command " cd "/opt/local/var/macports/build/_Users_howarth_ports_science_pymol/work/pymol" && CC="/opt/local/bin/gcc-mp-4.5" CXX="/opt/local/bin/g++-mp-4.5" /opt/local/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6 setup.py --no-user-cfg build " returned error 1
Error: Target org.macports.build returned: shell command failed (see log for details)

Note that upstream isn't maintaining the delsci Makefiles so that the setup.py approach is better for normal maintenance. I was also told that package maintainers are not forced to support the gcc4x variants so fixing this is optional.

comment:6 Changed 13 years ago by howarth@…

I'll look at updating pymol-devel using the current pymol svn and the Makefile.delsci files.
If it works, we can dump the gcc4x variants over into that package instead. Frankly, recompiling
with gcc4x is far less interesting and important than adding clang variants to packages so that
those issues can be fixed before Apple ever switches to clang as the system compiler. FYI, clang
currently can't build all of pymol because it thinks the tnt headers used have badly written initializers.

comment:7 in reply to:  1 Changed 13 years ago by jmroot (Joshua Root)

Replying to howarth@…:

Shouldn't "CC=/opt/local/bin/gcc-mp-4.4 CXX=/opt/local/bin/g++-mp-4.4" be placed in front of the setup.py command instead?

Not the way you've written it. build.args goes in the command line after build.target, see the Guide.

The portgroup sets CFLAGS etc in the environment with build.env-append, and you can do the same for CC and CXX.

comment:8 Changed 13 years ago by jmroot (Joshua Root)

BTW, the build.args-delete lines in your variants do nothing, because those values are never added to build.args in the first place.

comment:9 Changed 13 years ago by howarth@…

FYI, I didn't add the gcc4x variants so I take no responsibility for current code.
Look at the partial fix (which I believe may have run into a real build issues with
FSF gcc).

comment:10 Changed 13 years ago by howarth@…

Also, all examples I found on the web of passing CC and CXX to python executing
setup.py show those environmentals preceding the call to python (as in my partial fix).

comment:11 Changed 13 years ago by howarth@…

FYI, on fink I get...

gcc-fsf-4.5 -I../layer0 -I../layer1 -I../layer2 -I../layer3 -I../layer4 -I../layer5 -no-cpp-precomp -Wmissing-prototypes -O3 -funroll-loops -fomit-frame-pointer -ffast-math -I/sw/include -I/sw/include/python2.6 -I/sw/include/python2.6/Numeric -I/usr/X11R6/include -D_HAVE_LIBPNG -D_PYMOL_MODULE -D_PYMOL_NUMPY -D_PYMOL_FINK -D_PYMOL_INLINE -D_PYMOL_OPENGL_SHADERS -DNO_MMLIBS -I../ov/src -I/sw/include -c -o TestPyMOL.o TestPyMOL.c

so it looks like the linkage of TestPyMOL.o is getting mangled in the MacPorts variant.

comment:12 Changed 13 years ago by howarth@…

The issue with FSF gcc building with the partial fix patch above might be related to the use of -bundle -undefined dynamic_lookup instead of -bundle -bundle_loader -flat_namespace -undefined suppress in the setup.py build. For some reason this is generating duplicate symbols in FSF gcc but not Apple gcc.

comment:13 Changed 13 years ago by howarth@…

FYI, llvm-gcc in Xcode 4 doesn't show this problem.

comment:14 Changed 13 years ago by howarth@…

This is actually a very interesting bug. According to python2.6/config/Makefile, modules
should be linkable with -bundle -undefined dynamic_lookup, In fact, there is no mention of
-flat-namepace -undefined suppressed at all. I've noticed for awhile building xplor-nih with FSF gcc
problems with -bundle -undefined dynamic_lookup but always assumed it was code specific.
This bug makes me wonder if we are tickling a defect in FSF gcc on darwin.

comment:15 Changed 13 years ago by howarth@…

Interesting....if you add...

python.add_archflags no

to the main part of the Portfile, python changes the compile flags from...

/usr/bin/gcc-4.2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -arch x86_64 -D_PYMOL_MODULE -D_PYMOL_INLINE -D_PYMOL_LIBPNG -D_PYMOL_FREETYPE -D_PYMOL_NUMPY -D_PYMOL_OPENGL_SHADERS -DNO_MMLIBS -Iov/src -Ilayer0 -Ilayer1 -Ilayer2 -Ilayer3 -Ilayer4 -Ilayer5 -I/opt/local/include -I/opt/local/include/GL -I/opt/local/include/freetype2 -Imodules/cealign/src -Imodules/cealign/src/tnt -I/opt/local/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c layer3/Selector.c -o build/temp.macosx-10.6-x86_64-2.6/layer3/Selector.o -ffast-math -funroll-loops -O3

to

/usr/bin/gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -pipe -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -D_PYMOL_MODULE -D_PYMOL_INLINE -D_PYMOL_LIBPNG -D_PYMOL_FREETYPE -D_PYMOL_NUMPY -D_PYMOL_OPENGL_SHADERS -DNO_MMLIBS -Iov/src -Ilayer0 -Ilayer1 -Ilayer2 -Ilayer3 -Ilayer4 -Ilayer5 -I/opt/local/include -I/opt/local/include/GL -I/opt/local/include/freetype2 -Imodules/cealign/src -Imodules/cealign/src/tnt -I/opt/local/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c layer3/Selector.c -o build/temp.macosx-10.6-x86_64-2.6/layer3/Selector.o -ffast-math -funroll-loops -O3

whereas I would have expected it just to cause '-arch x86_64' to be dropped.

comment:16 Changed 13 years ago by howarth@…

The problem is from the usage of -fno-common whenever the usage of "-arch x86_64 " is suppressed...

-fno-common

In C code, controls the placement of uninitialized global variables. Unix C compilers have traditionally permitted multiple definitions of such variables in different compilation units by placing the variables in a common block. This is the behavior specified by -fcommon, and is the default for GCC on most targets. On the other hand, this behavior is not required by ISO C, and on some targets may carry a speed or code size penalty on variable references. The -fno-common option specifies that the compiler should place uninitialized global variables in the data section of the object file, rather than generating them as common blocks. This has the effect that if the same variable is declared (without "extern") in two different compilations, you will get a multiple-definition error when you link them. In this case, you must compile with -fcommon instead. Compiling with -fno-common is useful on targets for which it provides better performance, or if you wish to verify that the program will work on other systems which always treat uninitialized variable declarations this way.

Simple fix is to append -fcommon to the end of the compile flags as it done in the attached Portfile.diff and revised setup_py.diff patch.

Changed 13 years ago by howarth@…

Attachment: setup_py.diff added

revised setup_py.diff that explicitly passes -fcommon

comment:17 in reply to:  10 Changed 13 years ago by jmroot (Joshua Root)

Replying to howarth@…:

Also, all examples I found on the web of passing CC and CXX to python executing
setup.py show those environmentals preceding the call to python (as in my partial fix).

Yes, putting FOO=bar at the start of a command line will set an environment variable for the command being run. Using build.env would have the same effect without having to explicitly specify the rest of the default build.cmd again.

comment:18 Changed 13 years ago by howarth@…

The currently posted Portfile.diff and revised replacement setup_py.diff patch solves the gcc4x variant build issues.
Can I get a commit of these revisions? Also, we still need the revised packaging for pynmr from ticket 29243 checked
in as well since pymol-1.4 is installed in a different location which breaks the current pynmr packaging.

comment:19 in reply to:  18 Changed 13 years ago by michelle.lynn.gill@…

Replying to howarth@…:

The currently posted Portfile.diff and revised replacement setup_py.diff patch solves the gcc4x variant build issues.
Can I get a commit of these revisions? Also, we still need the revised packaging for pynmr from ticket 29243 checked
in as well since pymol-1.4 is installed in a different location which breaks the current pynmr packaging.

I can confirm that the changes work for the gcc44 variant. Thank you!

Changed 13 years ago by howarth@…

Attachment: Portfile.diff added

fix critical pymol_path issue as well for relax, etc.

Changed 13 years ago by howarth@…

Attachment: pymol_shell.diff added

drop setting PYMOL_PATH now that pymol_path symlink is created

comment:20 Changed 13 years ago by howarth@…

I fixed another critical flaw in the new setup.py installation of pymol. Currently the relax package can't load the pymol module.
The fix is to described in the /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/pymol/init.py

# NOTE: with both methods, you should be able to get away with not
# specifying PYMOL_PATH if there is a subdirectory pymol_path located
# in the "pymol" modules directory which points to the main
# pymol directory

Note fedora is handling this wrongly because this comment is poorly written. It should say that a symlink called pymol_path
pointing to the pymol site-packages directory should be created within it. With this change, the explicit setting of PYMOL_PATH
in the pymol startup shell script can be dropped and programs like relax which import the pymol module from python now get
the pymol_path appropriately, Please update both patches and the Portfile.diff ASAP as this is a rather serious flaw.

comment:21 Changed 13 years ago by howarth@…

It has been 3 months since I updated this ticket for committing the changes. Can some please commit the current Portfile.diff and the replacement files attached to this ticket for pymol_shell.diff and setup_py.diff. Again these changes 1) correct errors in the previous conversion of the build to use setup.py and 2) solves this PR by properly supporting gcc4x variants. Thanks in advance.

comment:22 Changed 13 years ago by raimue (Rainer Müller)

Keywords: haspatch maintainer added

comment:23 Changed 13 years ago by raimue (Rainer Müller)

Resolution: fixed
Status: newclosed

Committed in r81027.

Note: See TracTickets for help on using tickets.