title: py2app error for opencv/macports app. How to compile opencv with headerpad_max_install_names flag?
body: <p>I am trying to build an app using opencv and pygame. These two libs have been installed with macports. I also installed py2app in the macports python.
  I am running a simple py2app script</p>
  
  <pre><code>from setuptools import setup
  
  setup(
      app = [
          '/full/path/to/my_script.py',
      ],
      options={
          "py2app":{
              'argv_emulation': True, 
          }
      },
      setup_requires=['py2app']
  )
  </code></pre>
  
  <p>Unfortunately, py2app fails with the following error :"ValueError: New Mach-O header is too large to relocate"</p>
  
  <p>Is it possible to make an app bundle with opencv and macports?</p>
  
  <p>Thanks for your help</p>
  
  <p>Update:</p>
  
  <p>Here is the answer of ronaldoussoren whoi is the py2app developper:</p>
  
  <blockquote>
    <p>Shared libraries on OSX contain an absolute path to their location,
    and likewise all used libraries are also mentioned using an absolute
    path. Py2app uses macholib to rewrite those mentions to relative paths
    starting with '@executable_path'. For libraries that are located in
    /opt/local the new path requires more space than the old one, hence
    the error message. One way to ensure that there is enough space is the
    linker flag "headerpad_max_install_names". I don't know how to tell
    darwinports to add this flag when building opencv.</p>
  </blockquote>
  
  <p>Please also note that I've a similar issue with pyinstaller.</p>
  
  <p>I've tried to modify the opencv Portfile without any changes. I don't really know where to add this linker flag.</p>
  
  <p>Any idea how to fix it?</p>
  
  <p>Update: Here is my Portfile</p>
  
  <pre><code># -*- 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} &lt;= 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}
  </code></pre>
  
  <hr>
  
  <p>Update : The macport team worked on the problem but unfortunately their fix don't solve my problem. See <a href="http://trac.macports.org/ticket/36841" rel="nofollow">http://trac.macports.org/ticket/36841</a></p>