summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKonrad Kleine <kkleine@redhat.com>2024-12-10 11:39:03 +0100
committerKonrad Kleine <kkleine@redhat.com>2024-12-10 12:15:24 +0100
commit32a9ec5d6a1b31b53188bc4608530fb4fad0b8d2 (patch)
tree3d193b9adde6f11f675597ebac502b3b8a2ae915
downloadpython-nanobind-32a9ec5d6a1b31b53188bc4608530fb4fad0b8d2.tar.gz
python-nanobind-32a9ec5d6a1b31b53188bc4608530fb4fad0b8d2.tar.xz
python-nanobind-32a9ec5d6a1b31b53188bc4608530fb4fad0b8d2.zip
First release of nanobind 2.4.0
-rw-r--r--.gitignore2
-rw-r--r--.pre-commit-config.yaml19
-rw-r--r--Makefile120
-rw-r--r--python-nanobind.conf11
-rw-r--r--python-nanobind.spec54
-rw-r--r--sources2
6 files changed, 208 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b96494c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+/nanobind-2.4.0.tar.gz
+/*.src.rpm
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 0000000..f26de03
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,19 @@
+# See https://pre-commit.com for more information
+# See https://pre-commit.com/hooks.html for more hooks
+repos:
+ - repo: https://github.com/pre-commit/pre-commit-hooks
+ rev: v5.0.0
+ hooks:
+ - id: check-ast
+ - id: check-case-conflict
+ - id: check-docstring-first
+ - id: check-executables-have-shebangs
+ - id: check-merge-conflict
+ - id: check-symlinks
+ - id: trailing-whitespace
+ - id: end-of-file-fixer
+ - id: mixed-line-ending
+ - id: fix-byte-order-marker
+ - id: detect-private-key
+
+exclude: ".*\\.patch"
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..8c97ac7
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,120 @@
+.DEFAULT_GOAL=help
+
+# See ~/.config/mock/<CONFIG>.cfg or /etc/mock/<CONFIG>.cfg
+# Tweak this to centos-stream-9-x86_64 to build for CentOS
+MOCK_CHROOT?=fedora-rawhide-x86_64
+MOCK_OPTS?=
+MOCK_OPTS_DEFAULT?=--no-clean --no-cleanup-after $(MOCK_OPTS)
+YYYYMMDD=$(shell date +%Y%m%d)
+SOURCEDIR=$(shell pwd)
+SPEC=python-nanobind.spec
+# When nothing is given, this will be automatically determined
+SRPM_PATH?=
+
+######### Get sources
+
+.PHONY: get-sources
+## Downloads all sources we need for a build.
+get-sources:
+ spectool -g --define "_sourcedir $(SOURCEDIR)" $(SPEC)
+
+######### Build SRPM
+
+.PHONY: srpm
+## Builds an SRPM that can be used for a build.
+srpm: get-sources
+ rpmbuild \
+ --define "_rpmdir $(SOURCEDIR)" \
+ --define "_sourcedir $(SOURCEDIR)" \
+ --define "_specdir $(SOURCEDIR)" \
+ --define "_srcrpmdir $(SOURCEDIR)" \
+ --define "_builddir $(SOURCEDIR)" \
+ -bs $(SPEC)
+
+######### Scrub mock chroot and cache
+
+.PHONY: scrub-chroot
+## Completely remove the fedora chroot and cache.
+scrub-chroot:
+ mock -r $(MOCK_CHROOT) --scrub all
+
+######### Do a mock build
+
+.PHONY: mockbuild
+## Start a mock build of the SRPM.
+mockbuild: srpm get-srpm
+ mock -r $(MOCK_CHROOT) $(MOCK_OPTS_DEFAULT) $(srpm_path)
+
+######### Edit-last-failing-script
+
+.PHONY: get-last-run-script
+## Get the file that was last modified in /var/tmp/ within the chroot.
+get-last-run-script:
+ $(eval last_run_script:=/var/tmp/$(shell ls -t1 /var/lib/mock/$(MOCK_CHROOT)/root/var/tmp | head -n1))
+ $(info last_run_script=$(last_run_script))
+ @echo > /dev/null
+
+.PHONY: edit-last-failing-script
+## Opens the last failing or running script from mock in your editor
+## of choice for you to edit it and later re-run it in mock with:
+## "make mockbuild-rerun-last-script".
+edit-last-failing-script: get-last-run-script
+ $$EDITOR /var/lib/mock/$(MOCK_CHROOT)/root$(last_run_script)
+
+######### Re-run the last failing script from mock
+
+.PHONY: mockbuild-rerun-last-script
+## Re-runs the last failing or running script of your mock mockbuild.
+mockbuild-rerun-last-script: get-last-run-script
+ mock --root=$(MOCK_CHROOT) --shell 'sh -e $(last_run_script)'
+
+.PHONY: help
+# Based on https://gist.github.com/rcmachado/af3db315e31383502660
+## Display this help text.
+help:/
+ $(info Available targets)
+ $(info -----------------)
+ @awk '/^[a-zA-Z\-0-9]+:/ { \
+ helpMessage = match(lastLine, /^## (.*)/); \
+ helpCommand = substr($$1, 0, index($$1, ":")-1); \
+ if (helpMessage) { \
+ helpMessage = substr(lastLine, RSTART + 3, RLENGTH); \
+ gsub(/##/, "\n ", helpMessage); \
+ } else { \
+ helpMessage = "(No documentation)"; \
+ } \
+ printf "%-37s - %s\n", helpCommand, helpMessage; \
+ lastLine = "" \
+ } \
+ { hasComment = match(lastLine, /^## (.*)/); \
+ if(hasComment) { \
+ lastLine=lastLine$$0; \
+ } \
+ else { \
+ lastLine = $$0 \
+ } \
+ }' $(MAKEFILE_LIST)
+
+######### Version/Release helper targets to build name of SRPM
+
+.PHONY: get-version
+## Determines the LLVM version given in the llvm.spec file.
+get-version:
+ $(eval version:=$(shell grep -ioP 'Version:\s*\K[^\s]+' $(SPEC)))
+ $(info Version: $(version))
+ @echo > /dev/null
+
+.PHONY: get-release
+## Parses the spec file for the Release: tag
+get-release:
+ $(eval release:=$(shell rpmautospec calculate-release $(SPEC) | grep -Po '[0-9]+'))
+ $(info Release: $(release))
+ @echo > /dev/null
+
+.PHONY: get-srpm
+## Determines the name of the SRPM used for release builds
+## Can be overriden by giving "make ... SRPM_PATH=foo.src.rpm".
+get-srpm: get-version get-release
+ $(eval srpm_path:=python-nanobind-${version}-${release}.*.src.rpm)
+ $(info SRPM Release: $(srpm_path))
+ @echo > /dev/null \ No newline at end of file
diff --git a/python-nanobind.conf b/python-nanobind.conf
new file mode 100644
index 0000000..8e5c4f4
--- /dev/null
+++ b/python-nanobind.conf
@@ -0,0 +1,11 @@
+automode = true
+archful = false
+summary = "nanobind: tiny and efficient C++/Python bindings"
+pypi_version = "2.4.0"
+pypi_name = "nanobind"
+python_name = "python-nanobind"
+url = "https://github.com/wjakob/nanobind"
+source = "PyPI"
+archive_name = "nanobind-2.4.0.tar.gz"
+extras = []
+license_files_present = false
diff --git a/python-nanobind.spec b/python-nanobind.spec
new file mode 100644
index 0000000..a4fa552
--- /dev/null
+++ b/python-nanobind.spec
@@ -0,0 +1,54 @@
+Name: python-nanobind
+Version: 2.4.0
+Release: %autorelease
+Summary: nanobind: tiny and efficient C++/Python bindings
+
+License: BSD
+URL: https://github.com/wjakob/nanobind
+Source: %{pypi_source nanobind}
+
+BuildArch: noarch
+BuildRequires: python3-devel
+
+%global _description %{expand:
+nanobind is a small binding library that exposes C++ types
+in Python and vice versa. It is reminiscent of Boost.Python
+and pybind11 and uses near-identical syntax.
+In contrast to these existing tools, nanobind is more
+efficient: bindings compile in a shorter amount of time,
+produce smaller binaries, and have better runtime performance.}
+
+%description %_description
+
+%package -n python3-nanobind
+Summary: %{summary}
+
+%description -n python3-nanobind %_description
+
+%prep
+%autosetup -p1 -n nanobind-%{version}
+
+%generate_buildrequires
+%pyproject_buildrequires -t
+
+
+%build
+%pyproject_wheel
+
+
+%install
+%pyproject_install
+%pyproject_save_files 'nanobind'
+
+
+%check
+%_pyproject_check_import_allow_no_modules -t
+%tox -- --parallel 0 -- --verbose
+
+
+%files -n python3-nanobind -f %{pyproject_files}
+%license LICENSE
+
+
+%changelog
+%autochangelog \ No newline at end of file
diff --git a/sources b/sources
new file mode 100644
index 0000000..0570878
--- /dev/null
+++ b/sources
@@ -0,0 +1,2 @@
+SHA512 (nanobind-2.4.0.tar.gz) = a380254d58b3fda540b6b58a25207f7022d66de51a6622cca9eb02b206658e5fc4dafb6e569877c5810a7ecd374a86e8b84ffe5c810414e131b40b5266c91a52
+