I am trying to create an application using opencv and pygame. These two libraries were installed using macports. I also installed py2app in macports python. I am running a simple py2app script
from setuptools import setup setup( app = [ '/full/path/to/my_script.py', ], options={ "py2app":{ 'argv_emulation': True, } }, setup_requires=['py2app'] )
Unfortunately, py2app does not work with the following error: "ValueError: new Mach-O header is too large to move"
Is it possible to create an application package with opencv and macports?
thanks for the help
Update:
Here is the answer from ronaldoussoren whoi, the py2app developer:
OSX shared libraries contain an absolute path to their location, and all libraries used are also referenced using an absolute path. Py2app uses macholib to rewrite these references to relative paths starting with '@executable_path'. For libraries located in / opt / local, the new path requires more space than the old, hence the error message. One way to provide ample space is to use the headerpad_max_install_names linker flag. I don't know how to tell darwinports to add this flag when creating opencv.
Also note that I have a similar problem with pyinstaller.
I tried to modify the opencv Portfile without any changes. I do not know where to add this linker flag.
Any idea how to fix this?
Update: here is my portfolio
# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4 # $Id: Portfile 99165 2012-10-28 22:56:03Z jeremyhu@macports.org $ PortSystem 1.0 PortGroup cmake 1.0 name opencv version 2.4.2 revision 2 categories graphics science license BSD platforms darwin maintainers nomaintainer description Intel(R) Open Source Computer Vision Library long_description opencv is a library that is mainly aimed at real time \ computer vision. Some example areas would be \ Human-Computer Interaction (HCI), Object Identification, \ Segmentation and Recognition, Face Recognition, Gesture \ Recognition, Motion Tracking, Ego Motion, Motion \ Understanding, Structure From Motion (SFM), and Mobile \ Robotics. homepage http://opencv.willowgarage.com/wiki/ master_sites sourceforge:project/opencvlibrary/opencv-unix/${version} use_bzip2 yes distname OpenCV-${version} checksums rmd160 496964503629b0ff4432fbdd276837ab3f134411 \ sha256 690023811e03e21df996291392fcf78e43e42ef557b9307503c74c74b4272c28 depends_build-append port:pkgconfig depends_lib-append port:zlib \ path:lib/libavcodec.dylib:ffmpeg \ port:libpng \ port:tiff \ port:jasper \ port:jpeg \ port:bzip2 \ port:openexr \ port:ilmbase \ port:eigen3 patchfiles patch-fix_dirname_case.diff \ patch-install_name.diff configure.args-append -DBUILD_NEW_PYTHON_SUPPORT=OFF \ -DBUILD_EXAMPLES=ON \ -DINSTALL_C_EXAMPLES=ON \ -DBZIP2_LIBRARIES=${prefix}/lib/libbz2.dylib \ -DZLIB_LIBRARY=${prefix}/lib/libz.dylib \ -DWITH_OPENEXR=ON \ -DWITH_1394=OFF \ -DWITH_EIGEN=ON \ -DEIGEN_INCLUDE_PATH=${prefix}/include/eigen3 \ -DBUILD_JASPER=OFF \ -DBUILD_JPEG=OFF \ -DBUILD_PNG=OFF \ -DBUILD_TIFF=OFF \ -DBUILD_ZLIB=OFF configure.ldflags-append "-Wl,-headerpad_max_install_names" # gcc-4.0 exits with a bus error if {${configure.compiler} == "gcc-4.0"} { configure.compiler gcc-4.2 if {![file executable ${configure.cc}]} { depends_build-append port:apple-gcc42 depends_skip_archcheck-append apple-gcc42 configure.compiler apple-gcc-4.2 } } platform darwin { if {${os.major} <= 9} { # Video Decode Acceleration Framework is not available patchfiles-append patch-highgui_CMakeLists.txt.diff } } post-destroot { xinstall -d ${destroot}${prefix}/lib/cmake move ${destroot}${prefix}/share/OpenCV/OpenCVConfig-version.cmake \ ${destroot}${prefix}/share/OpenCV/OpenCVConfig.cmake \ ${destroot}${prefix}/lib/cmake/ } variant dc1394 description {Use libdc1394 for FireWire camera. Breaks compatibility with Apple iSight FireWire camera.} { depends_lib-append port:libdc1394 configure.args-delete -DWITH_1394=OFF configure.args-append -DWITH_1394=ON \ -DHAVE_1394=ON } variant qt4 description {Use qt4 backend for graphical interface.} { PortGroup qt4 1.0 configure.args-append -DWITH_QT=ON } variant python26 conflicts python27 description {Add Python 2.6 bindings} { depends_lib-append port:python26 \ port:py26-numpy configure.args-delete -DBUILD_NEW_PYTHON_SUPPORT=OFF configure.args-append -DINSTALL_PYTHON_EXAMPLES=ON \ -DBUILD_NEW_PYTHON_SUPPORT=ON \ -DPYTHON_EXECUTABLE=${prefix}/bin/python2.6 \ -DPYTHON_LIBRARY=${prefix}/lib/libpython2.6.dylib \ -DPYTHON_INCLUDE_DIR=${frameworks_dir}/Python.framework/Versions/2.6/Headers \ -DPYTHON_PACKAGES_PATH=${frameworks_dir}/Python.framework/Versions/2.6/lib/python2.6/site-packages } variant python27 conflicts python26 description {Add Python 2.7 bindings} { depends_lib-append port:python27 \ port:py27-numpy configure.args-delete -DBUILD_NEW_PYTHON_SUPPORT=OFF configure.args-append -DINSTALL_PYTHON_EXAMPLES=ON \ -DBUILD_NEW_PYTHON_SUPPORT=ON \ -DPYTHON_EXECUTABLE=${prefix}/bin/python2.7 \ -DPYTHON_LIBRARY=${prefix}/lib/libpython2.7.dylib \ -DPYTHON_INCLUDE_DIR=${frameworks_dir}/Python.framework/Versions/2.7/Headers \ -DPYTHON_PACKAGES_PATH=${frameworks_dir}/Python.framework/Versions/2.7/lib/python2.7/site-packages configure.ldflags-append "-Wl,-headerpad_max_install_names" } variant tbb description {Use Intel TBB} { depends_lib-append port:tbb configure.args-append -DWITH_TBB=ON \ -DHAVE_TBB=ON \ -DTBB_INCLUDE_DIRS=${prefix}/include \ -DOPENCV_LINKER_LIBS="-ltbb -ltbbmalloc" } livecheck.type sourceforge livecheck.name opencvlibrary livecheck.regex /OpenCV-(\[0-9a-z.\]+)${extract.suffix}
Update: the macport team worked on the problem, but unfortunately fixing them does not solve my problem. See http://trac.macports.org/ticket/36841