diff options
author | CoprDistGit <infra@openeuler.org> | 2023-05-10 05:37:35 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-05-10 05:37:35 +0000 |
commit | 562fff64add6dd14172fcbf298802712b1934da8 (patch) | |
tree | 213383f77601aac0d6b5d08bf881d6dcdaa21020 | |
parent | 8807b5b9141cd7019c1b2cd21e16b2618567451b (diff) |
automatic import of python-setuptools-golangopeneuler20.03
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-setuptools-golang.spec | 303 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 305 insertions, 0 deletions
@@ -0,0 +1 @@ +/setuptools_golang-2.7.0.tar.gz diff --git a/python-setuptools-golang.spec b/python-setuptools-golang.spec new file mode 100644 index 0000000..88c9958 --- /dev/null +++ b/python-setuptools-golang.spec @@ -0,0 +1,303 @@ +%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 <Python_Bot@openeuler.org> - 2.7.0-1 +- Package Spec generated @@ -0,0 +1 @@ +3dfb506a4c8a82fa1e9d387d00ce02cb setuptools_golang-2.7.0.tar.gz |