%global _empty_manifest_terminate_build 0 Name: python-setuptools-golang Version: 2.7.0 Release: 1 Summary: A setuptools extension for building cpython extensions written in golang. License: MIT URL: https://github.com/asottile/setuptools-golang Source0: https://mirrors.nju.edu.cn/pypi/web/packages/ee/46/0f3e0229dbcc950e4f3f163486a567a0d572ae88c771823b5031c88125dc/setuptools_golang-2.7.0.tar.gz BuildArch: noarch %description A setuptools extension for building cpython extensions written in golang. ## Requirements This requires golang >= 1.5. It is currently tested against 1.16 and 1.17. This requires python >= 3.6. It is currently tested against python3 and pypy3. ## Platform Support - linux - macOS - win32 (32 bit cpython, 32 bit go 1.10+) ## Usage Add `setuptools-golang` to the `setup_requires` in your setup.py and `build_golang={'root': ...}`. `root` refers to the root go import path of your project. By default, `setuptools-golang` will strip all binaries. This can be disabled by adding `'strip': False` to `build_golang`. This will increase the size of the extension, but the binaries contain debugging information and symbols. An extension must be a single file in the `main` go package (though the entire `main` package will be built into the extension). That package may import other code. You may have multiple extensions in your `setup.py`. ```python setup( build_golang={'root': 'github.com/user/project'}, ext_modules=[Extension('example', ['example.go'])], setup_requires=['setuptools-golang'], ) ``` ## Writing cpython extensions in golang Here's some [examples](https://github.com/asottile/setuptools-golang-examples) ## Common issues ### ```undefined reference to `some_c_function'``` `Extension` by default will bring along the go files listed, but won't bring along the related C files. Add the following to `MANIFEST.in`: ``` global-include *.c global-include *.go ``` ### `fatal: could not read Username for 'https://github.com':` You're probably trying to import from an external source which does not exist. Double check that your import is correct. ### `package github.com/a/b/c: /tmp/.../github.com/a/b exists but /tmp/.../github.com/a/b/.git does not - stale checkout?` You've probably mistyped an import. Double check that your import is correct. ### `duplicate symbol _XXX in: _cgo_export.o mod.cgo2.o` For example: ``` # github.com/asottile/dockerfile/pylib duplicate symbol _PyDockerfile_GoParseError in: $WORK/github.com/asottile/dockerfile/pylib/_obj/_cgo_export.o $WORK/github.com/asottile/dockerfile/pylib/_obj/main.cgo2.o ``` Make sure to mark global variables defined in C as `extern`. [Here's an example PR](https://github.com/asottile/dockerfile/pull/8) ### repeated rebuilds can be slow setuptools-golang attempts to make builds more repeatable by using a separate `GOPATH` -- if you'd like to reuse a GOPATH you can set the `SETUPTOOLS_GOLANG_GOPATH` environment variable: ```console $ SETUPTOOLS_GOLANG_GOPATH=~/go pip install . ``` ## Building manylinux wheels `setuptools-golang` also provides a tool for building [PEP 513](https://www.python.org/dev/peps/pep-0513/) manylinux1 wheels so your consumers don't need to have a go compiler installed to use your library. Simply run `setuptools-golang-build-manylinux-wheels` from your source directory. The resulting wheels will end up in `./dist`. ``` $ setuptools-golang-build-manylinux-wheels + ls /dist -al total 8092 drwxrwxr-x 2 1000 1000 4096 Feb 1 04:16 . drwxr-xr-x 41 root root 4096 Feb 1 04:15 .. -rw-r--r-- 1 1000 1000 2063299 Feb 1 04:16 setuptools_golang_examples-0.1.1-cp34-cp34m-manylinux1_x86_64.whl -rw-r--r-- 1 1000 1000 2064862 Feb 1 04:16 setuptools_golang_examples-0.1.1-cp35-cp35m-manylinux1_x86_64.whl -rw-r--r-- 1 1000 1000 2064873 Feb 1 04:16 setuptools_golang_examples-0.1.1-cp36-cp36m-manylinux1_x86_64.whl -rw-rw-r-- 1 1000 1000 4273 Feb 1 04:14 setuptools-golang-examples-0.1.1.tar.gz ******************************************************************************* Your wheels have been built into ./dist ******************************************************************************* ``` %package -n python3-setuptools-golang Summary: A setuptools extension for building cpython extensions written in golang. Provides: python-setuptools-golang BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-setuptools-golang A setuptools extension for building cpython extensions written in golang. ## Requirements This requires golang >= 1.5. It is currently tested against 1.16 and 1.17. This requires python >= 3.6. It is currently tested against python3 and pypy3. ## Platform Support - linux - macOS - win32 (32 bit cpython, 32 bit go 1.10+) ## Usage Add `setuptools-golang` to the `setup_requires` in your setup.py and `build_golang={'root': ...}`. `root` refers to the root go import path of your project. By default, `setuptools-golang` will strip all binaries. This can be disabled by adding `'strip': False` to `build_golang`. This will increase the size of the extension, but the binaries contain debugging information and symbols. An extension must be a single file in the `main` go package (though the entire `main` package will be built into the extension). That package may import other code. You may have multiple extensions in your `setup.py`. ```python setup( build_golang={'root': 'github.com/user/project'}, ext_modules=[Extension('example', ['example.go'])], setup_requires=['setuptools-golang'], ) ``` ## Writing cpython extensions in golang Here's some [examples](https://github.com/asottile/setuptools-golang-examples) ## Common issues ### ```undefined reference to `some_c_function'``` `Extension` by default will bring along the go files listed, but won't bring along the related C files. Add the following to `MANIFEST.in`: ``` global-include *.c global-include *.go ``` ### `fatal: could not read Username for 'https://github.com':` You're probably trying to import from an external source which does not exist. Double check that your import is correct. ### `package github.com/a/b/c: /tmp/.../github.com/a/b exists but /tmp/.../github.com/a/b/.git does not - stale checkout?` You've probably mistyped an import. Double check that your import is correct. ### `duplicate symbol _XXX in: _cgo_export.o mod.cgo2.o` For example: ``` # github.com/asottile/dockerfile/pylib duplicate symbol _PyDockerfile_GoParseError in: $WORK/github.com/asottile/dockerfile/pylib/_obj/_cgo_export.o $WORK/github.com/asottile/dockerfile/pylib/_obj/main.cgo2.o ``` Make sure to mark global variables defined in C as `extern`. [Here's an example PR](https://github.com/asottile/dockerfile/pull/8) ### repeated rebuilds can be slow setuptools-golang attempts to make builds more repeatable by using a separate `GOPATH` -- if you'd like to reuse a GOPATH you can set the `SETUPTOOLS_GOLANG_GOPATH` environment variable: ```console $ SETUPTOOLS_GOLANG_GOPATH=~/go pip install . ``` ## Building manylinux wheels `setuptools-golang` also provides a tool for building [PEP 513](https://www.python.org/dev/peps/pep-0513/) manylinux1 wheels so your consumers don't need to have a go compiler installed to use your library. Simply run `setuptools-golang-build-manylinux-wheels` from your source directory. The resulting wheels will end up in `./dist`. ``` $ setuptools-golang-build-manylinux-wheels + ls /dist -al total 8092 drwxrwxr-x 2 1000 1000 4096 Feb 1 04:16 . drwxr-xr-x 41 root root 4096 Feb 1 04:15 .. -rw-r--r-- 1 1000 1000 2063299 Feb 1 04:16 setuptools_golang_examples-0.1.1-cp34-cp34m-manylinux1_x86_64.whl -rw-r--r-- 1 1000 1000 2064862 Feb 1 04:16 setuptools_golang_examples-0.1.1-cp35-cp35m-manylinux1_x86_64.whl -rw-r--r-- 1 1000 1000 2064873 Feb 1 04:16 setuptools_golang_examples-0.1.1-cp36-cp36m-manylinux1_x86_64.whl -rw-rw-r-- 1 1000 1000 4273 Feb 1 04:14 setuptools-golang-examples-0.1.1.tar.gz ******************************************************************************* Your wheels have been built into ./dist ******************************************************************************* ``` %package help Summary: Development documents and examples for setuptools-golang Provides: python3-setuptools-golang-doc %description help A setuptools extension for building cpython extensions written in golang. ## Requirements This requires golang >= 1.5. It is currently tested against 1.16 and 1.17. This requires python >= 3.6. It is currently tested against python3 and pypy3. ## Platform Support - linux - macOS - win32 (32 bit cpython, 32 bit go 1.10+) ## Usage Add `setuptools-golang` to the `setup_requires` in your setup.py and `build_golang={'root': ...}`. `root` refers to the root go import path of your project. By default, `setuptools-golang` will strip all binaries. This can be disabled by adding `'strip': False` to `build_golang`. This will increase the size of the extension, but the binaries contain debugging information and symbols. An extension must be a single file in the `main` go package (though the entire `main` package will be built into the extension). That package may import other code. You may have multiple extensions in your `setup.py`. ```python setup( build_golang={'root': 'github.com/user/project'}, ext_modules=[Extension('example', ['example.go'])], setup_requires=['setuptools-golang'], ) ``` ## Writing cpython extensions in golang Here's some [examples](https://github.com/asottile/setuptools-golang-examples) ## Common issues ### ```undefined reference to `some_c_function'``` `Extension` by default will bring along the go files listed, but won't bring along the related C files. Add the following to `MANIFEST.in`: ``` global-include *.c global-include *.go ``` ### `fatal: could not read Username for 'https://github.com':` You're probably trying to import from an external source which does not exist. Double check that your import is correct. ### `package github.com/a/b/c: /tmp/.../github.com/a/b exists but /tmp/.../github.com/a/b/.git does not - stale checkout?` You've probably mistyped an import. Double check that your import is correct. ### `duplicate symbol _XXX in: _cgo_export.o mod.cgo2.o` For example: ``` # github.com/asottile/dockerfile/pylib duplicate symbol _PyDockerfile_GoParseError in: $WORK/github.com/asottile/dockerfile/pylib/_obj/_cgo_export.o $WORK/github.com/asottile/dockerfile/pylib/_obj/main.cgo2.o ``` Make sure to mark global variables defined in C as `extern`. [Here's an example PR](https://github.com/asottile/dockerfile/pull/8) ### repeated rebuilds can be slow setuptools-golang attempts to make builds more repeatable by using a separate `GOPATH` -- if you'd like to reuse a GOPATH you can set the `SETUPTOOLS_GOLANG_GOPATH` environment variable: ```console $ SETUPTOOLS_GOLANG_GOPATH=~/go pip install . ``` ## Building manylinux wheels `setuptools-golang` also provides a tool for building [PEP 513](https://www.python.org/dev/peps/pep-0513/) manylinux1 wheels so your consumers don't need to have a go compiler installed to use your library. Simply run `setuptools-golang-build-manylinux-wheels` from your source directory. The resulting wheels will end up in `./dist`. ``` $ setuptools-golang-build-manylinux-wheels + ls /dist -al total 8092 drwxrwxr-x 2 1000 1000 4096 Feb 1 04:16 . drwxr-xr-x 41 root root 4096 Feb 1 04:15 .. -rw-r--r-- 1 1000 1000 2063299 Feb 1 04:16 setuptools_golang_examples-0.1.1-cp34-cp34m-manylinux1_x86_64.whl -rw-r--r-- 1 1000 1000 2064862 Feb 1 04:16 setuptools_golang_examples-0.1.1-cp35-cp35m-manylinux1_x86_64.whl -rw-r--r-- 1 1000 1000 2064873 Feb 1 04:16 setuptools_golang_examples-0.1.1-cp36-cp36m-manylinux1_x86_64.whl -rw-rw-r-- 1 1000 1000 4273 Feb 1 04:14 setuptools-golang-examples-0.1.1.tar.gz ******************************************************************************* Your wheels have been built into ./dist ******************************************************************************* ``` %prep %autosetup -n setuptools-golang-2.7.0 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-setuptools-golang -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Wed May 10 2023 Python_Bot - 2.7.0-1 - Package Spec generated