[MacPorts] #45870: python3*: configuration issue breaks anjuta +python34
MacPorts
noreply at macports.org
Wed Nov 12 15:57:56 PST 2014
#45870: python3*: configuration issue breaks anjuta +python34
----------------------+-------------------------------------------------
Reporter: devans@… | Owner: jwa@…
Type: defect | Status: new
Priority: Normal | Milestone:
Component: ports | Version: 2.3.2
Keywords: | Port: python34 python33 python32 python31
----------------------+-------------------------------------------------
anjuta +python34 fails trying to link to the python34 library:
{{{
:info:build libtool: link: /usr/bin/clang -Wl,-undefined
-Wl,dynamic_lookup -o .libs/libanjuta-python-loader.so -bundle
.libs/plugin.o -L/opt/local/lib ../../libanjuta/.libs/libanjuta-3.dylib
-lgthread-2.0 -lgmodule-2.0 -lxml2 -lgdl-3 -lgtk-3 -lgdk-3
-lpangocairo-1.0 -lpangoft2-1.0 -lpango-1.0 -lm -lfontconfig -lfreetype
-latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0
-lglib-2.0 -lintl -ldl -framework CoreFoundation -lpython3.4m -arch
x86_64 -Os -arch x86_64 -Wl,-headerpad_max_install_names -arch x86_64
-framework CoreFoundation
:info:build ld: library not found for -lpython3.4m
:info:build clang: error: linker command failed with exit code 1 (use -v
to see invocation)
:info:build make[3]: *** [libanjuta-python-loader.la] Error 1
:info:build make[3]: Leaving directory `/opt/local/var/macports/build
/_opt_macports_users_devans_GNOME-
3_stable_dports_gnome_anjuta/anjuta/work/anjuta-3.14.0/plugins/python-
loader'
:info:build make[2]: *** [all-recursive] Error 1
:info:build make[2]: Leaving directory `/opt/local/var/macports/build
/_opt_macports_users_devans_GNOME-
3_stable_dports_gnome_anjuta/anjuta/work/anjuta-3.14.0/plugins'
:info:build make[1]: *** [all-recursive] Error 1
:info:build make[1]: Leaving directory `/opt/local/var/macports/build
/_opt_macports_users_devans_GNOME-
3_stable_dports_gnome_anjuta/anjuta/work/anjuta-3.14.0'
:info:build make: *** [all] Error 2
:info:build make: Leaving directory `/opt/local/var/macports/build
/_opt_macports_users_devans_GNOME-
3_stable_dports_gnome_anjuta/anjuta/work/anjuta-3.14.0'
}}}
Indeed, /opt/local/lib/libpython3.4m is not provided by python34.
However, anjuta +python27 succeeds due to the fact that python27 installs
a symbolic link to the python27 library for this purpose in post-destroot
{{{
post-destroot {
set framewpath ${frameworks_dir}/Python.framework
set framewdir ${framewpath}/Versions/${branch}
foreach dir { Headers Resources Python Versions/Current } {
file delete ${destroot}${framewpath}/${dir}
}
ln -s ${framewdir}/share/man/man1/python${branch}.1
${destroot}${prefix}/share/man/man1/
ln -s ${framewdir}/Python
${destroot}${prefix}/lib/libpython${branch}.dylib
foreach unversionedFile {2to3 2to3-2 idle idle2 pydoc pydoc2 python
python2 python-config python2-config pythonw pythonw2 smtpd.py smtpd2.py}
{
delete ${destroot}${prefix}/bin/${unversionedFile}
}
# remove -arch flags from the config
reinplace -E {s|-arch [a-z0-9_]+||g} \
${destroot}${framewdir}/lib/python${branch}/config/Makefile \
${destroot}${framewdir}/lib/python${branch}/_sysconfigdata.py
}
}}}
The python34 (and the python3* ports in general) skip this link
{{{
post-destroot {
set framewpath ${frameworks_dir}/Python.framework
set framewdir ${framewpath}/Versions/${branch}
foreach dir { Headers Resources Python Versions/Current } {
file delete ${destroot}${framewpath}/${dir}
}
ln -s ${framewdir}/share/man/man1/python${branch}.1
${destroot}${prefix}/share/man/man1/
# Without this, LINKFORSHARED is set to
# ... $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)
# (this becomes Python.framework/Versions/3.2/Python) which doesn't
# quite work (see ticket #15099); instead specifically list the
# full path to the proper Python framework file (which becomes
# ${prefix}/Library/Frameworks/Python.framework/Versions/3.2/Python)
reinplace {s|^\(LINKFORSHARED=.*\)$(PYTHONFRAMEWORKDIR).*$|\1
$(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)|}
${destroot}${framewdir}/lib/python${branch}/$confdir/Makefile
# remove -arch flags from the config
reinplace -E {s|-arch [a-z0-9_]+||g} \
${destroot}${framewdir}/lib/python${branch}/$confdir/Makefile
foreach unversioned {2to3 idle3 pydoc3 python3 python3-config pyvenv}
{
delete ${destroot}${prefix}/bin/${unversioned}
}
}
}}}
Manually creating the link fixes the problem. Is there any reason, that
this action should not be added to the python3 post-destroot phase?
--
Ticket URL: <https://trac.macports.org/ticket/45870>
MacPorts <https://www.macports.org/>
Ports system for OS X
More information about the macports-tickets
mailing list