summaryrefslogtreecommitdiff
path: root/dev-python/fastsimdjson
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python/fastsimdjson')
-rw-r--r--dev-python/fastsimdjson/Manifest2
-rw-r--r--dev-python/fastsimdjson/fastsimdjson-0.8.0.ebuild59
-rw-r--r--dev-python/fastsimdjson/files/fastsimdjson-0.8.0-unbundle.patch54
-rw-r--r--dev-python/fastsimdjson/metadata.xml12
4 files changed, 127 insertions, 0 deletions
diff --git a/dev-python/fastsimdjson/Manifest b/dev-python/fastsimdjson/Manifest
new file mode 100644
index 000000000000..1743c3b34bb3
--- /dev/null
+++ b/dev-python/fastsimdjson/Manifest
@@ -0,0 +1,2 @@
+DIST fastsimdjson-0.8.0.tar.gz 3171735 BLAKE2B 8e7ec750b854797c766c46c5c76e50f828bba31cd9eae53d6ba1e4bb82d588c46cd78b5f7aaf05a60d8e77818bef6a6eb526419df526cfa6b60ef6a2515e5cd7 SHA512 cf5a5c92cb8d1be049a261225632c4f01f9bd5198b4c1eb4faebb2dbf368100614e0348d1435cd4d51b0ab1bd2140bdf71f06bcb45068485c0f7c1fac8fef433
+DIST simdjson-data-351949906abde446f0314bf79606fb5d884f5be7.tar.gz 6635608 BLAKE2B 07f96c6b1bfea55a247eb7361bd4c068cb49e06f2cb1f3853c107173025c4cd543b20a5b7a3dcfa1e4462aaca8278a1cff9656f54319da08e221bc38f98e5a9e SHA512 7db557d374b9ce98077b7a9e1265ae66f9a607f0f283f662a9f184147f081727df68c0eb4889ebc8aca609ec62b348753445e553087e6520879a23e268caafba
diff --git a/dev-python/fastsimdjson/fastsimdjson-0.8.0.ebuild b/dev-python/fastsimdjson/fastsimdjson-0.8.0.ebuild
new file mode 100644
index 000000000000..fc60e3555519
--- /dev/null
+++ b/dev-python/fastsimdjson/fastsimdjson-0.8.0.ebuild
@@ -0,0 +1,59 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+DISTUTILS_EXT=1
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="fast JSON in Python"
+HOMEPAGE="
+ https://pypi.org/project/fastsimdjson/
+ https://github.com/simdjson/fastpysimdjson
+"
+
+SIMDJSON_DATA_HASH="351949906abde446f0314bf79606fb5d884f5be7"
+SRC_URI+="
+ test? (
+ https://github.com/simdjson/simdjson-data/archive/${SIMDJSON_DATA_HASH}.tar.gz
+ -> simdjson-data-${SIMDJSON_DATA_HASH}.tar.gz
+ )
+"
+
+LICENSE="Apache-2.0 MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+ >=dev-libs/simdjson-5.0.2:=[nan]
+ >=dev-cpp/simdutf-9.2:=
+ dev-libs/zmij:=
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ dev-python/wheel[${PYTHON_USEDEP}]
+"
+# there is an optional test dep on dev-python/orjson, left that out since it's marked as deprecated
+
+PATCHES=(
+ "${FILESDIR}/fastsimdjson-0.8.0-unbundle.patch"
+)
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # remove bundled deps
+ rm -rf vendor || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ ln -sfn "${WORKDIR}/simdjson-data-${SIMDJSON_DATA_HASH}" "simdjson-data" || die
+
+ distutils-r1_python_test
+}
diff --git a/dev-python/fastsimdjson/files/fastsimdjson-0.8.0-unbundle.patch b/dev-python/fastsimdjson/files/fastsimdjson-0.8.0-unbundle.patch
new file mode 100644
index 000000000000..cd1ad24cdf80
--- /dev/null
+++ b/dev-python/fastsimdjson/files/fastsimdjson-0.8.0-unbundle.patch
@@ -0,0 +1,54 @@
+diff --git a/setup.py b/setup.py
+index 5b96127..1accfc0 100644
+--- a/setup.py
++++ b/setup.py
+@@ -10,11 +10,11 @@ DEFINES = [("NDEBUG", None), ("SIMDJSON_ENABLE_NAN_INF", "1")]
+ ext = Extension(
+ "fastsimdjson",
+ # src/fastsimdjson.cpp includes vendor/simdjson.cpp (a unity build).
+- sources=["src/fastsimdjson.cpp", "vendor/simdutf.cpp"],
+- depends=["vendor/simdjson.cpp", "vendor/simdjson.h", "vendor/simdutf.h",
+- "vendor/zmij.h", "vendor/zmij.cc"],
+- include_dirs=["vendor"],
++ sources=["src/fastsimdjson.cpp"],
++ depends=[],
++ include_dirs=[],
+ language="c++",
++ libraries=["simdjson", "simdutf", "zmij"],
+ define_macros=DEFINES,
+ )
+
+@@ -23,15 +23,8 @@ class BuildExt(build_ext):
+ def build_extensions(self):
+ msvc = self.compiler.compiler_type == "msvc"
+ args = ["/std:c++17", "/O2", "/EHsc", "/utf-8"] if msvc else ["-std=c++17", "-O3"]
+- # zmij (float formatting) is compiled as C++14: some compilers reject
+- # its constant tables in C++17 mode.
+- zmij_args = ["/std:c++14", "/O2", "/EHsc"] if msvc else ["-std=c++14", "-O3"]
+- zmij = self.compiler.compile([os.path.join("vendor", "zmij.cc")],
+- output_dir=self.build_temp, include_dirs=["vendor"],
+- macros=[("NDEBUG", None)], extra_postargs=zmij_args)
+ for e in self.extensions:
+ e.extra_compile_args = args
+- e.extra_objects = list(zmij)
+ super().build_extensions()
+
+
+diff --git a/src/fastsimdjson.cpp b/src/fastsimdjson.cpp
+index f7fcf2b..c273e26 100644
+--- a/src/fastsimdjson.cpp
++++ b/src/fastsimdjson.cpp
+@@ -30,10 +30,9 @@
+
+ // simdjson.cpp is compiled here (a unity build) so that dumps can call its
+ // float-to-decimal routine, dtoa_impl::dragonbox, directly.
+-#include "simdjson.h"
+-#include "simdjson.cpp"
+-#include "simdutf.h"
+-#include "zmij.h" // shortest float digits for dumps and dumpb (vendor/zmij.cc)
++#include <simdjson.h>
++#include <simdutf.h>
++#include <zmij.h> // shortest float digits for dumps and dumpb (vendor/zmij.cc)
+
+ #ifdef _MSC_VER
+ #include <intrin.h>
diff --git a/dev-python/fastsimdjson/metadata.xml b/dev-python/fastsimdjson/metadata.xml
new file mode 100644
index 000000000000..0ba9a7d3033b
--- /dev/null
+++ b/dev-python/fastsimdjson/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://srcux.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>python@gentoo.org</email>
+ </maintainer>
+ <maintainer type="person">
+ <email>chutzpah@gentoo.org</email>
+ <name>Patrick McLean</name>
+ </maintainer>
+ <origin>srcux</origin>
+</pkgmetadata>