[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