duckdb,python311Packages.duckdb: 0.9.2 -> 0.10.0
This commit is contained in:
parent
dd83702655
commit
e62dac66f9
@ -1,10 +1,13 @@
|
|||||||
{ lib
|
{ lib
|
||||||
, stdenv
|
, stdenv
|
||||||
, fetchFromGitHub
|
, fetchFromGitHub
|
||||||
|
, fetchpatch
|
||||||
|
, substituteAll
|
||||||
, cmake
|
, cmake
|
||||||
, ninja
|
, ninja
|
||||||
, openssl
|
, openssl
|
||||||
, openjdk11
|
, openjdk11
|
||||||
|
, python3
|
||||||
, unixODBC
|
, unixODBC
|
||||||
, withJdbc ? false
|
, withJdbc ? false
|
||||||
, withOdbc ? false
|
, withOdbc ? false
|
||||||
@ -15,22 +18,31 @@ let
|
|||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "duckdb";
|
pname = "duckdb";
|
||||||
version = "0.9.2";
|
version = "0.10.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = pname;
|
owner = pname;
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "refs/tags/v${version}";
|
||||||
hash = "sha256-QFK8mEMcqQwALFNvAdD8yWixwMYHSbeo6xqx86PvejU=";
|
hash = "sha256-qGUq0iYTaLNHKqbXNLRmvqHMqunvIlP991IKb4qdSt4=";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [ ./version.patch ];
|
patches = [
|
||||||
|
# remove calls to git and set DUCKDB_VERSION to version
|
||||||
|
(substituteAll {
|
||||||
|
src = ./version.patch;
|
||||||
|
version = "v${version}";
|
||||||
|
})
|
||||||
|
# add missing file needed for httpfs compile
|
||||||
|
# remove on next update
|
||||||
|
(fetchpatch {
|
||||||
|
name = "missing-httpfs-file.patch";
|
||||||
|
url = "https://github.com/duckdb/duckdb/commit/3d7aa3ed46ecf5f18122559e385b75f1f5e9aba8.patch";
|
||||||
|
hash = "sha256-Q4IHCpMpxn86OquUZdEF7P0nHEPOcWS0TQijTkvBYbQ=";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
postPatch = ''
|
nativeBuildInputs = [ cmake ninja python3 ];
|
||||||
substituteInPlace CMakeLists.txt --subst-var-by DUCKDB_VERSION "v${version}"
|
|
||||||
'';
|
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake ninja ];
|
|
||||||
buildInputs = [ openssl ]
|
buildInputs = [ openssl ]
|
||||||
++ lib.optionals withJdbc [ openjdk11 ]
|
++ lib.optionals withJdbc [ openjdk11 ]
|
||||||
++ lib.optionals withOdbc [ unixODBC ];
|
++ lib.optionals withOdbc [ unixODBC ];
|
||||||
@ -54,7 +66,7 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
installCheckPhase =
|
installCheckPhase =
|
||||||
let
|
let
|
||||||
excludes = map (pattern: "exclude:'${pattern}'") [
|
excludes = map (pattern: "exclude:'${pattern}'") ([
|
||||||
"[s3]"
|
"[s3]"
|
||||||
"Test closing database during long running query"
|
"Test closing database during long running query"
|
||||||
"Test using a remote optimizer pass in case thats important to someone"
|
"Test using a remote optimizer pass in case thats important to someone"
|
||||||
@ -91,16 +103,22 @@ stdenv.mkDerivation rec {
|
|||||||
"[!hide]"
|
"[!hide]"
|
||||||
# this test apparently never terminates
|
# this test apparently never terminates
|
||||||
"test/sql/copy/csv/auto/test_csv_auto.test"
|
"test/sql/copy/csv/auto/test_csv_auto.test"
|
||||||
|
# test expects installed file timestamp to be > 2024
|
||||||
|
"test/sql/table_function/read_text_and_blob.test"
|
||||||
|
# can re-enable next update (broken for 0.10.0)
|
||||||
|
"test/sql/secrets/create_secret_non_writable_persistent_dir.test"
|
||||||
|
# https://github.com/duckdb/duckdb/issues/10722
|
||||||
|
"test/sql/types/nested/list/list_aggregate_dict.test"
|
||||||
] ++ lib.optionals stdenv.isAarch64 [
|
] ++ lib.optionals stdenv.isAarch64 [
|
||||||
"test/sql/aggregate/aggregates/test_kurtosis.test"
|
"test/sql/aggregate/aggregates/test_kurtosis.test"
|
||||||
"test/sql/aggregate/aggregates/test_skewness.test"
|
"test/sql/aggregate/aggregates/test_skewness.test"
|
||||||
"test/sql/function/list/aggregates/skewness.test"
|
"test/sql/function/list/aggregates/skewness.test"
|
||||||
];
|
]);
|
||||||
in
|
in
|
||||||
''
|
''
|
||||||
runHook preInstallCheck
|
runHook preInstallCheck
|
||||||
|
|
||||||
$PWD/test/unittest ${lib.concatStringsSep " " excludes}
|
./test/unittest ${toString excludes}
|
||||||
|
|
||||||
runHook postInstallCheck
|
runHook postInstallCheck
|
||||||
'';
|
'';
|
||||||
|
@ -52,7 +52,7 @@ index 2b49e11288..0a4a69b9a0 100644
|
|||||||
- set(DUCKDB_DEV_ITERATION 0)
|
- set(DUCKDB_DEV_ITERATION 0)
|
||||||
- set(DUCKDB_VERSION "v${DUCKDB_MAJOR_VERSION}.${DUCKDB_MINOR_VERSION}.${DUCKDB_PATCH_VERSION}-dev${DUCKDB_DEV_ITERATION}")
|
- set(DUCKDB_VERSION "v${DUCKDB_MAJOR_VERSION}.${DUCKDB_MINOR_VERSION}.${DUCKDB_PATCH_VERSION}-dev${DUCKDB_DEV_ITERATION}")
|
||||||
-endif()
|
-endif()
|
||||||
+set(DUCKDB_VERSION "@DUCKDB_VERSION@")
|
+set(DUCKDB_VERSION "@version@")
|
||||||
|
|
||||||
message(STATUS "git hash ${GIT_COMMIT_HASH}, version ${DUCKDB_VERSION}")
|
message(STATUS "git hash ${GIT_COMMIT_HASH}, version ${DUCKDB_VERSION}")
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
{ lib
|
{ lib
|
||||||
|
, stdenv
|
||||||
, buildPythonPackage
|
, buildPythonPackage
|
||||||
, duckdb
|
, duckdb
|
||||||
, fsspec
|
, fsspec
|
||||||
@ -13,25 +14,24 @@
|
|||||||
}:
|
}:
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
inherit (duckdb) pname version src;
|
inherit (duckdb) patches pname src version;
|
||||||
format = "setuptools";
|
pyproject = true;
|
||||||
|
|
||||||
# 1. let nix control build cores
|
|
||||||
# 2. default to extension autoload & autoinstall disabled
|
|
||||||
# 3. unconstrain setuptools_scm version
|
|
||||||
patches = (duckdb.patches or []) ++ [ ./setup.patch ];
|
|
||||||
|
|
||||||
postPatch = (duckdb.postPatch or "") + ''
|
postPatch = (duckdb.postPatch or "") + ''
|
||||||
# we can't use sourceRoot otherwise patches don't apply, because the patches apply to the C++ library
|
# we can't use sourceRoot otherwise patches don't apply, because the patches apply to the C++ library
|
||||||
cd tools/pythonpkg
|
cd tools/pythonpkg
|
||||||
|
|
||||||
substituteInPlace setup.py --subst-var NIX_BUILD_CORES
|
# 1. let nix control build cores
|
||||||
|
# 2. default to extension autoload & autoinstall disabled
|
||||||
# avoid dependency on mypy
|
substituteInPlace setup.py \
|
||||||
rm tests/stubs/test_stubs.py
|
--replace-fail "ParallelCompile()" 'ParallelCompile("NIX_BUILD_CORES")' \
|
||||||
|
--replace-fail "define_macros.extend([('DUCKDB_EXTENSION_AUTOLOAD_DEFAULT', '1'), ('DUCKDB_EXTENSION_AUTOINSTALL_DEFAULT', '1')])" ""
|
||||||
'';
|
'';
|
||||||
|
|
||||||
BUILD_HTTPFS = 1;
|
env = {
|
||||||
|
BUILD_HTTPFS = 1;
|
||||||
|
DUCKDB_BUILD_UNITY = 1;
|
||||||
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
pybind11
|
pybind11
|
||||||
@ -52,21 +52,35 @@ buildPythonPackage rec {
|
|||||||
pytestCheckHook
|
pytestCheckHook
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# test flags from .github/workflows/Python.yml
|
||||||
|
pytestFlagsArray = [
|
||||||
|
"--verbose"
|
||||||
|
] ++ lib.optionals stdenv.isDarwin [
|
||||||
|
"tests/fast"
|
||||||
|
];
|
||||||
|
|
||||||
|
disabledTestPaths = [
|
||||||
|
# avoid dependency on mypy
|
||||||
|
"tests/stubs/test_stubs.py"
|
||||||
|
];
|
||||||
|
|
||||||
disabledTests = [
|
disabledTests = [
|
||||||
# tries to make http request
|
# tries to make http request
|
||||||
"test_install_non_existent_extension"
|
"test_install_non_existent_extension"
|
||||||
# test is racy and interrupt can be delivered before or after target point
|
|
||||||
|
# https://github.com/duckdb/duckdb/issues/10702
|
||||||
|
# tests are racy and interrupt can be delivered before or after target point
|
||||||
|
# causing a later test to fail with a spurious KeyboardInterrupt
|
||||||
"test_connection_interrupt"
|
"test_connection_interrupt"
|
||||||
|
"test_query_interruption"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# remove duckdb dir to prevent import confusion by pytest
|
||||||
preCheck = ''
|
preCheck = ''
|
||||||
export HOME="$(mktemp -d)"
|
export HOME="$(mktemp -d)"
|
||||||
|
rm -rf duckdb
|
||||||
'';
|
'';
|
||||||
|
|
||||||
setupPyBuildFlags = [
|
|
||||||
"--inplace"
|
|
||||||
];
|
|
||||||
|
|
||||||
pythonImportsCheck = [
|
pythonImportsCheck = [
|
||||||
"duckdb"
|
"duckdb"
|
||||||
];
|
];
|
||||||
|
@ -1,30 +0,0 @@
|
|||||||
diff --git a/tools/pythonpkg/setup.py b/tools/pythonpkg/setup.py
|
|
||||||
index 30f1e1ccdd..6784169fcb 100644
|
|
||||||
--- a/tools/pythonpkg/setup.py
|
|
||||||
+++ b/tools/pythonpkg/setup.py
|
|
||||||
@@ -96,7 +96,7 @@ def parallel_cpp_compile(
|
|
||||||
return
|
|
||||||
self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)
|
|
||||||
|
|
||||||
- list(multiprocessing.pool.ThreadPool(multiprocessing.cpu_count()).imap(_single_compile, objects))
|
|
||||||
+ list(multiprocessing.pool.ThreadPool(@NIX_BUILD_CORES@).imap(_single_compile, objects))
|
|
||||||
return objects
|
|
||||||
|
|
||||||
|
|
||||||
@@ -163,7 +163,6 @@ if 'BUILD_HTTPFS' in os.environ:
|
|
||||||
for ext in extensions:
|
|
||||||
toolchain_args.extend(['-DDUCKDB_EXTENSION_{}_LINKED'.format(ext.upper())])
|
|
||||||
|
|
||||||
-toolchain_args.extend(['-DDUCKDB_EXTENSION_AUTOLOAD_DEFAULT=1', '-DDUCKDB_EXTENSION_AUTOINSTALL_DEFAULT=1'])
|
|
||||||
|
|
||||||
|
|
||||||
class get_pybind_include(object):
|
|
||||||
@@ -348,7 +347,7 @@ setup(
|
|
||||||
packages=packages,
|
|
||||||
include_package_data=True,
|
|
||||||
python_requires='>=3.7.0',
|
|
||||||
- setup_requires=setup_requires + ["setuptools_scm<7.0.0", 'pybind11>=2.6.0'],
|
|
||||||
+ setup_requires=setup_requires + ["setuptools_scm", 'pybind11>=2.6.0'],
|
|
||||||
use_scm_version=setuptools_scm_conf,
|
|
||||||
tests_require=['google-cloud-storage', 'mypy', 'pytest'],
|
|
||||||
classifiers=[
|
|
Loading…
Reference in New Issue
Block a user