• Kirill Smelkov's avatar
    pyx.build: Fix it on macOS (v↑ setuptools_dso (1.4 -> 1.6)) · fb662979
    Kirill Smelkov authored
    Starting from setuptools-dso 1.6 pyx.build no longer fails on macOS due to:
    
      https://github.com/mdavidsaver/setuptools_dso/commit/dd2cf303
      https://github.com/mdavidsaver/setuptools_dso/commit/6883d6dc
      https://github.com/mdavidsaver/setuptools_dso/commit/78ae8852
      https://github.com/mdavidsaver/setuptools_dso/pull/9
      https://github.com/mdavidsaver/setuptools_dso/issues/8
    
    It was previously failing with setuptools-dso==1.5:
    
      (py3.venv) kirr@Kirills-iMac pygolang % python -m pytest
      ==================================== test session starts =====================================
      platform darwin -- Python 3.7.6, pytest-5.3.5, py-1.8.1, pluggy-0.13.1
      rootdir: /Users/kirr/pygolang
      collected 100 items
    
      golang/_gopath_test.py ..                                                              [  2%]
      golang/context_test.py ..                                                              [  4%]
      golang/cxx_test.py ..                                                                  [  6%]
      golang/errors_test.py ........                                                         [ 14%]
      golang/fmt_test.py ...                                                                 [ 17%]
      golang/golang_test.py .............................................                    [ 62%]
      golang/io_test.py .                                                                    [ 63%]
      golang/strconv_test.py ..                                                              [ 65%]
      golang/strings_test.py .....                                                           [ 70%]
      golang/sync_test.py .............                                                      [ 83%]
      golang/time_test.py ........                                                           [ 91%]
      golang/pyx/build_test.py FF.                                                           [ 94%]
      golang/pyx/runtime_test.py .                                                           [ 95%]
      gpython/gpython_test.py ssss.                                                          [100%]
    
      ========================================== FAILURES ==========================================
      _______________________________________ test_pyx_build _______________________________________
    
          def test_pyx_build():
              pyxuser = testprog + "/golang_pyx_user"
              pyrun(["setup.py", "build_ext", "-i"], cwd=pyxuser)
    
              # run built test.
              _ = pyout(["-c",
                  # XXX `import golang` is a hack: it dynamically loads _golang.so -> libgolang.so,
                  # and this way dynamic linker already has libgolang.so DSO found and in
                  # memory for all further imports. If we don't, current state of setuptools_dso
                  # is that `import pyxuser.test` will fail finding libgolang.so.
                  "import golang;" +
      >           "from pyxuser import test; test.main()"], cwd=pyxuser)
    
      golang/pyx/build_test.py:40:
      _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
      golang/golang_test.py:1709: in pyout
          return pyrun(argv, stdin=stdin, stdout=stdout, stderr=stderr, **kw)
      _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    
      argv = ['-c', 'import golang;from pyxuser import test; test.main()'], stdin = None, stdout = b'', stderr = None
      kw = {'cwd': '/Users/kirr/pygolang/golang/pyx/testprog/golang_pyx_user'}, retcode = 1
    
          def pyrun(argv, stdin=None, stdout=None, stderr=None, **kw):
              retcode, stdout, stderr = _pyrun(argv, stdin=stdin, stdout=stdout, stderr=stderr, **kw)
              if retcode:
      >           raise RuntimeError(' '.join(argv) + '\n' + (stderr and str(stderr) or '(failed)'))
      E           RuntimeError: -c import golang;from pyxuser import test; test.main()
      E           (failed)
    
      golang/golang_test.py:1703: RuntimeError
      ------------------------------------ Captured stdout call ------------------------------------
      running build_ext
      cythoning pyxuser/test.pyx to pyxuser/test.cpp
      building 'pyxuser.test' extension
      creating build
      creating build/temp.macosx-10.15-x86_64-3.7
      creating build/temp.macosx-10.15-x86_64-3.7/pyxuser
      clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/Users/kirr/pygolang -I/Users/kirr/py3.venv/bin/../include/site/python3.7 -I/usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/include/python3.7m -c pyxuser/test.cpp -o build/temp.macosx-10.15-x86_64-3.7/pyxuser/test.o -std=c++11 -fno-strict-aliasing
      creating build/lib.macosx-10.15-x86_64-3.7
      creating build/lib.macosx-10.15-x86_64-3.7/pyxuser
      clang++ -bundle -undefined dynamic_lookup build/temp.macosx-10.15-x86_64-3.7/pyxuser/test.o -L/Users/kirr/pygolang/golang/runtime -llibgolang -o build/lib.macosx-10.15-x86_64-3.7/pyxuser/test.cpython-37m-darwin.so
      otool -L build/lib.macosx-10.15-x86_64-3.7/pyxuser/test.cpython-37m-darwin.so
      build/lib.macosx-10.15-x86_64-3.7/pyxuser/test.cpython-37m-darwin.so:
      	@loader_path/liblibgolang.0.1.dylib (compatibility version 0.0.0, current version 0.0.0)
      	/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 800.7.0)
      	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1281.0.0)
      install_name_tool -change @loader_path/liblibgolang.0.1.dylib @loader_path/../golang/runtime/liblibgolang.0.1.dylib build/lib.macosx-10.15-x86_64-3.7/pyxuser/test.cpython-37m-darwin.so
      otool -L build/lib.macosx-10.15-x86_64-3.7/pyxuser/test.cpython-37m-darwin.so
      build/lib.macosx-10.15-x86_64-3.7/pyxuser/test.cpython-37m-darwin.so:
      	@loader_path/../golang/runtime/liblibgolang.0.1.dylib (compatibility version 0.0.0, current version 0.0.0)
      	/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 800.7.0)
      	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1281.0.0)
      copying build/lib.macosx-10.15-x86_64-3.7/pyxuser/test.cpython-37m-darwin.so -> pyxuser
      ------------------------------------ Captured stderr call ------------------------------------
      Traceback (most recent call last):
        File "<string>", line 1, in <module>
      ImportError: dlopen(/Users/kirr/pygolang/golang/pyx/testprog/golang_pyx_user/pyxuser/test.cpython-37m-darwin.so, 2): Library not loaded: @loader_path/../golang/runtime/liblibgolang.0.1.dylib
        Referenced from: /Users/kirr/pygolang/golang/pyx/testprog/golang_pyx_user/pyxuser/test.cpython-37m-darwin.so
        Reason: image not found
      _______________________________________ test_dso_build _______________________________________
    
          def test_dso_build():
              dsouser = testprog + "/golang_dso_user"
              pyrun(["setup.py", "build_dso", "-i"], cwd=dsouser)
              pyrun(["setup.py", "build_ext", "-i"], cwd=dsouser)
    
              # run built test.
              _ = pyout(["-c",
                  # XXX `import golang` is a hack - see test_pyx_build for details.
                  "import golang;" +
      >           "from dsouser import test; test.main()"], cwd=dsouser)
    
      golang/pyx/build_test.py:54:
      _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
      golang/golang_test.py:1709: in pyout
          return pyrun(argv, stdin=stdin, stdout=stdout, stderr=stderr, **kw)
      _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    
      argv = ['-c', 'import golang;from dsouser import test; test.main()'], stdin = None, stdout = b'', stderr = None
      kw = {'cwd': '/Users/kirr/pygolang/golang/pyx/testprog/golang_dso_user'}, retcode = 1
    
          def pyrun(argv, stdin=None, stdout=None, stderr=None, **kw):
              retcode, stdout, stderr = _pyrun(argv, stdin=stdin, stdout=stdout, stderr=stderr, **kw)
              if retcode:
      >           raise RuntimeError(' '.join(argv) + '\n' + (stderr and str(stderr) or '(failed)'))
      E           RuntimeError: -c import golang;from dsouser import test; test.main()
      E           (failed)
    
      golang/golang_test.py:1703: RuntimeError
      ------------------------------------ Captured stdout call ------------------------------------
      running build_dso
      Building DSOs
      building 'dsouser.dso' DSO as build/lib.macosx-10.15-x86_64-3.7/dsouser/libdso.dylib
      creating build
      creating build/temp.macosx-10.15-x86_64-3.7
      creating build/temp.macosx-10.15-x86_64-3.7/dsouser
      clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/Users/kirr/pygolang -c dsouser/dso.cpp -o build/temp.macosx-10.15-x86_64-3.7/dsouser/dso.o -std=c++11 -fno-strict-aliasing
      creating build/lib.macosx-10.15-x86_64-3.7
      creating build/lib.macosx-10.15-x86_64-3.7/dsouser
      clang++ -dynamiclib -undefined dynamic_lookup build/temp.macosx-10.15-x86_64-3.7/dsouser/dso.o -L/Users/kirr/pygolang/golang/runtime -llibgolang -o build/lib.macosx-10.15-x86_64-3.7/dsouser/libdso.dylib -install_name @loader_path/libdso.dylib
      otool -L build/lib.macosx-10.15-x86_64-3.7/dsouser/libdso.dylib
      build/lib.macosx-10.15-x86_64-3.7/dsouser/libdso.dylib:
      	@loader_path/libdso.dylib (compatibility version 0.0.0, current version 0.0.0)
      	@loader_path/liblibgolang.0.1.dylib (compatibility version 0.0.0, current version 0.0.0)
      	/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 800.7.0)
      	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1281.0.0)
      install_name_tool -change @loader_path/liblibgolang.0.1.dylib @loader_path/../golang/runtime/liblibgolang.0.1.dylib build/lib.macosx-10.15-x86_64-3.7/dsouser/libdso.dylib
      otool -L build/lib.macosx-10.15-x86_64-3.7/dsouser/libdso.dylib
      build/lib.macosx-10.15-x86_64-3.7/dsouser/libdso.dylib:
      	@loader_path/libdso.dylib (compatibility version 0.0.0, current version 0.0.0)
      	@loader_path/../golang/runtime/liblibgolang.0.1.dylib (compatibility version 0.0.0, current version 0.0.0)
      	/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 800.7.0)
      	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1281.0.0)
      copying build/lib.macosx-10.15-x86_64-3.7/dsouser/libdso.dylib -> dsouser
      running build_ext
      cythoning dsouser/test.pyx to dsouser/test.cpp
      building 'dsouser.test' extension
      clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/Users/kirr/pygolang -I/Users/kirr/py3.venv/bin/../include/site/python3.7 -I/usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/include/python3.7m -c dsouser/test.cpp -o build/temp.macosx-10.15-x86_64-3.7/dsouser/test.o -std=c++11 -fno-strict-aliasing
      clang++ -bundle -undefined dynamic_lookup build/temp.macosx-10.15-x86_64-3.7/dsouser/test.o -L/Users/kirr/pygolang/golang/runtime -Lbuild/lib.macosx-10.15-x86_64-3.7/dsouser -llibgolang -ldso -o build/lib.macosx-10.15-x86_64-3.7/dsouser/test.cpython-37m-darwin.so
      otool -L build/lib.macosx-10.15-x86_64-3.7/dsouser/test.cpython-37m-darwin.so
      build/lib.macosx-10.15-x86_64-3.7/dsouser/test.cpython-37m-darwin.so:
      	@loader_path/liblibgolang.0.1.dylib (compatibility version 0.0.0, current version 0.0.0)
      	@loader_path/libdso.dylib (compatibility version 0.0.0, current version 0.0.0)
      	/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 800.7.0)
      	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1281.0.0)
      install_name_tool -change @loader_path/liblibgolang.0.1.dylib @loader_path/../golang/runtime/liblibgolang.0.1.dylib build/lib.macosx-10.15-x86_64-3.7/dsouser/test.cpython-37m-darwin.so
      install_name_tool -change @loader_path/libdso.dylib @loader_path/./libdso.dylib build/lib.macosx-10.15-x86_64-3.7/dsouser/test.cpython-37m-darwin.so
      otool -L build/lib.macosx-10.15-x86_64-3.7/dsouser/test.cpython-37m-darwin.so
      build/lib.macosx-10.15-x86_64-3.7/dsouser/test.cpython-37m-darwin.so:
      	@loader_path/../golang/runtime/liblibgolang.0.1.dylib (compatibility version 0.0.0, current version 0.0.0)
      	@loader_path/./libdso.dylib (compatibility version 0.0.0, current version 0.0.0)
      	/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 800.7.0)
      	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1281.0.0)
      copying build/lib.macosx-10.15-x86_64-3.7/dsouser/test.cpython-37m-darwin.so -> dsouser
      ------------------------------------ Captured stderr call ------------------------------------
      Traceback (most recent call last):
        File "<string>", line 1, in <module>
      ImportError: dlopen(/Users/kirr/pygolang/golang/pyx/testprog/golang_dso_user/dsouser/test.cpython-37m-darwin.so, 2): Library not loaded: @loader_path/../golang/runtime/liblibgolang.0.1.dylib
        Referenced from: /Users/kirr/pygolang/golang/pyx/testprog/golang_dso_user/dsouser/test.cpython-37m-darwin.so
        Reason: image not found
      ========================== 2 failed, 94 passed, 4 skipped in 20.26s ==========================
    fb662979
Name
Last commit
Last update
3rdparty/include/linux Loading commit data...
golang Loading commit data...
gpython Loading commit data...
.gitignore Loading commit data...
CHANGELOG.rst Loading commit data...
COPYING Loading commit data...
MANIFEST.in Loading commit data...
README.rst Loading commit data...
pyproject.toml Loading commit data...
setup.py Loading commit data...
tox.ini Loading commit data...
trun Loading commit data...