<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Hi Prabhu, <br></div><div><br></div><div>> In the past what we did to build the wheels is provide a dummy VTKPythonPackage/scripts/internal/libpython-not-needed-symbols-exported-by-interpreter and passing that.  This somehow worked by tricking CMake into thinking there was a library specified but I am not sure how the linker did not complain.</div><div><br></div><div>This was done to ensure no library was strongly linking against python library. And if it did, the error message would be more explicit. It was working because the library was always weakly linked in older version of VTK.<br></div><div><br></div><div><br></div><div>> Should I just ignore the libvtkPythonInterpreter and leave the PYTHON_LIBRARY field blank?<br></div><div><br></div><div>It looks like introducing an option to conditionally build vtkPythonInterpreter would address the issue here.</div><div><br></div><div>@Ben: What do you think ? <br></div><div><br></div><div>Jc<br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Nov 27, 2018 at 3:01 PM Prabhu Ramachandran <<a href="mailto:prabhu@aero.iitb.ac.in">prabhu@aero.iitb.ac.in</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  

    
  
  <div text="#000000" bgcolor="#FFFFFF">
    <p><tt>Hi all,</tt></p>
    <p><tt>Here is hopefully the last of the issues I am running into, I
        just tried to create wheels for 8.2.0-rc2 and have the following
        problem.  </tt><tt><br>
      </tt></p>
    <p><tt>First for some background.  Some of the VTK Python libraries
        seem to link to the PYTHON_LIBRARY, for the wheels, we do not do
        this.  JC pointed this out to me
        <a class="m_-2246667068406323749moz-txt-link-freetext" href="https://www.python.org/dev/peps/pep-0513/#libpythonx-y-so-1" target="_blank">https://www.python.org/dev/peps/pep-0513/#libpythonx-y-so-1</a></tt></p>
    <p><tt>Basically, if we build wheels linking to the libpython* the
        wheel may not work on Ubuntu/Debian which would be sad.</tt><tt><br>
      </tt></p>
    <p><tt>In the past what we did to build the wheels is provide a
        dummy
VTKPythonPackage/scripts/internal/libpython-not-needed-symbols-exported-by-interpreter
        and passing that.  This somehow worked by tricking CMake into
        thinking there was a library specified but I am not sure how the
        linker did not complain.  Anyway, when I try to build the wheels
        now on MacOS I get this error:</tt></p>
    <p><tt>Linking CXX shared
        library...ib/libvtkPythonInterpreter-8.2.1.dylib</tt><tt><br>
      </tt><tt>FAILED: lib/libvtkPythonInterpreter-8.2.1.dylib</tt><tt><br>
      </tt><tt>: &&
        /Library/Developer/CommandLineTools/usr/bin/c++ -O3 -DNDEBUG
        -arch x86_64 -isysroot
        /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk
        -mmacosx-version-min=10.9 -dynamiclib
        -Wl,-headerpad_max_install_names -undefined dynamic_lookup 
        -compatibility_version 1.0.0 -current_version 1.0.0 -o
        lib/libvtkPythonInterpreter-8.2.1.dylib -install_name
        @rpath/libvtkPythonInterpreter-8.2.1.dylib
Utilities/PythonInterpreter/CMakeFiles/vtkPythonInterpreter.dir/vtkPythonInterpreter.cxx.o
Utilities/PythonInterpreter/CMakeFiles/vtkPythonInterpreter.dir/vtkPythonInteractiveInterpreter.cxx.o 
        -Wl,-rpath,VTKPythonPackage/VTK-osx_3.7/lib
VTKPythonPackage/scripts/internal/libpython-not-needed-symbols-exported-by-interpreter
        lib/libvtksys-8.2.1.dylib lib/libvtkCommon-8.2.1.dylib
        && :</tt><tt><br>
      </tt><tt>ld: file too small (length=0) file
'VTKPythonPackage/scripts/internal/libpython-not-needed-symbols-exported-by-interpreter'
        for architecture x86_64</tt><tt><br>
      </tt><tt>clang: error: linker command failed with exit code 1 (use
        -v to see invocation)</tt><tt><br>
      </tt></p>
    <p><tt><br>
      </tt></p>
    <p><tt>Right now, I am able to build wheels only by leaving the
        PYTHON_LIBRARY entry blank.  This means that the
        libvtkPythonInterpreter-8.2.1.dylib does indeed link to the
        libpythonx.y.dylib.  </tt><tt><br>
      </tt></p>
    <p><tt>However, I do notice that the other libvtk*Python*8.2.1.dylib
        do not link to libpython.  So libvtkPythonInterpreter is the
        only one linking to libpython. So I think maybe if a user never
        uses the libvtkPythonInterpreter or if that is never explicitly
        imported or linked to in any Python code, we may be fine with
        these wheels.  Also I see that none of the Python extension
        modules, i.e. all the vtk*Python.so do not link to libpython or
        to libvtkPythonInterpreter.<br>
      </tt></p>
    <p><tt>Should I just ignore the libvtkPythonInterpreter and leave
        the PYTHON_LIBRARY field blank?</tt><tt><br>
      </tt></p>
    <p><tt>I would appreciate your thoughts on this matter. Thanks!<br>
      </tt></p>
    <p><tt>cheers,</tt></p>
    <p><tt>Prabhu</tt><tt><br>
      </tt></p>
  </div>

</blockquote></div>