Skip to content

Commit 9b4408b

Browse files
authored
Merge pull request #278336 from Homebrew/python-gdbm-as-ndbm
python@3.14: move _dbm to `python-gdbm@3.14` on Linux
2 parents 9306034 + 3808a98 commit 9b4408b

2 files changed

Lines changed: 45 additions & 19 deletions

File tree

Formula/p/python-gdbm@3.14.rb

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,20 @@ class PythonGdbmAT314 < Formula
44
url "https://www.python.org/ftp/python/3.14.4/Python-3.14.4.tgz"
55
sha256 "b4c059d5895f030e7df9663894ce3732bfa1b32cd3ab2883980266a45ce3cb3b"
66
license "Python-2.0"
7+
revision 1
78

89
livecheck do
910
formula "python@3.14"
1011
end
1112

1213
bottle do
13-
sha256 cellar: :any, arm64_tahoe: "1bef27f3b0d3a83a41e0ff854052b560848f21c0ae08d19221fee8ceb7322511"
14-
sha256 cellar: :any, arm64_sequoia: "606abcbb6f1a952481671850346ef38b64e33bc76cc2f587ef3da89eb206898a"
15-
sha256 cellar: :any, arm64_sonoma: "2f22db62ae2601143417c1ba4a575d4b3137bb03c49fea8f338d5e8ae083c0b8"
16-
sha256 cellar: :any, sequoia: "999aa26f8f53dba6ca07e765f7516dd5ef3b68d31c1c630508d6b30b176f564c"
17-
sha256 cellar: :any, sonoma: "203e25fa170e365fdb196a0cd7aee90d7a877d59ce49f0227e5808292a4fa108"
18-
sha256 arm64_linux: "3030dc120dee0c17373bdf8024cfdf17dba4e459443d03fb0addaf56a5c9bf49"
19-
sha256 x86_64_linux: "08f842f1f18d922ee49c49ddae728e9659b34fa5b3284a0f060375e7212496ca"
14+
sha256 cellar: :any, arm64_tahoe: "af951802d8bc5eaff5946695ad920e07bd63bf42cc3adb39c5982492b20dce02"
15+
sha256 cellar: :any, arm64_sequoia: "ce335535fc843258897a9ff3b5437fe803223548e478940aff325c8ea8229b75"
16+
sha256 cellar: :any, arm64_sonoma: "179b4e15ef0bb92af5873b463c4c8cbf463a393ea798dbf089804bec6403e6a0"
17+
sha256 cellar: :any, sequoia: "d4ba21e50a4100e0ec29f9bc03ec3287cbe4c3307363087b18ae626fe5b6a2c3"
18+
sha256 cellar: :any, sonoma: "437dc8334c48f8cb6a72419558de2935232b97d5e3f807023605d6bc77f7c4a8"
19+
sha256 arm64_linux: "5a732c7318b12eb0400d31a7a21de9de5230da97a1c618ff5228c1d8cfcda1ff"
20+
sha256 x86_64_linux: "28c28d97cb5f8adcfd5e62f7a126e79bf5b46c4a55d49c272243a1561f32c630"
2021
end
2122

2223
depends_on "gdbm"
@@ -51,6 +52,16 @@ def install
5152
library-dirs = ["#{Formula["gdbm"].opt_lib}"]
5253
TOML
5354

55+
(buildpath/"Modules/pyproject.toml").append_lines <<~TOML if OS.linux?
56+
[[tool.setuptools.ext-modules]]
57+
name = "_dbm"
58+
sources = ["_dbmmodule.c"]
59+
include-dirs = ["#{Formula["gdbm"].opt_include}", "#{python_include}/internal"]
60+
libraries = ["gdbm_compat"]
61+
library-dirs = ["#{Formula["gdbm"].opt_lib}"]
62+
extra-compile-args = ["-DUSE_GDBM_COMPAT", "-DHAVE_GDBM_DASH_NDBM_H"]
63+
TOML
64+
5465
system python3, "-m", "pip", "install", *std_pip_args(prefix: false, build_isolation: true),
5566
"--target=#{libexec}", "./Modules"
5667
rm_r libexec.glob("*.dist-info")
@@ -67,5 +78,19 @@ def install
6778
with dbm.gnu.open("#{testdb}", "r") as db:
6879
assert db["testkey"] == b"testvalue"
6980
PYTHON
81+
82+
return unless OS.linux?
83+
84+
(testpath/"dbm_test.py").write <<~PYTHON
85+
import dbm
86+
87+
with dbm.ndbm.open("test", "c") as db:
88+
db[b"foo \\xbd"] = b"bar \\xbd"
89+
with dbm.ndbm.open("test", "r") as db:
90+
assert list(db.keys()) == [b"foo \\xbd"]
91+
assert b"foo \\xbd" in db
92+
assert db[b"foo \\xbd"] == b"bar \\xbd"
93+
PYTHON
94+
system python3, "dbm_test.py"
7095
end
7196
end

Formula/p/python@3.14.rb

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,15 @@ class PythonAT314 < Formula
1212
end
1313

1414
bottle do
15-
sha256 arm64_tahoe: "a57709f67ff38ea12b02cad10719afd42de03f8fc0a25fca857786e3c45b52f1"
16-
sha256 arm64_sequoia: "a662a7f23fc2eeb0106eab7196080a446cc9a9557db1f863f7f902fd3640dd21"
17-
sha256 arm64_sonoma: "12d5adefd8d0a3f818501d9d33f79f3af2866655e3ef8d1f54955247b7c48298"
18-
sha256 tahoe: "7c11c07a27ba1f4cba5b5799c202e670814d9da719841ec2661f29061653a072"
19-
sha256 sequoia: "7e929fa45eeb65b5740d97f9fdaf7a3def6d30ac3c82069ef5d778b1d55f3fd5"
20-
sha256 sonoma: "24065e90fbd5a9b19f8f17516f0f9fa53aca0849463f8f7cb66b606fd154d6a5"
21-
sha256 arm64_linux: "f40a490b9277e2dca9aae2a1b6524780a57719235ebadf1fe8ec617df5a46057"
22-
sha256 x86_64_linux: "963a5b405bb22f47c659f7258da9d55677474ac1c21916ba9197655186cf4c66"
15+
rebuild 1
16+
sha256 arm64_tahoe: "e6aad7f3013cf39f3ba0de702d6ffdb934ec28549fcffb580f91ec8d8685ffde"
17+
sha256 arm64_sequoia: "dcbf428d7f9e448ee88d51c867a29d60e4ee48c69cb537ffa43154c6054951e8"
18+
sha256 arm64_sonoma: "16f997d2727745edc4ac87df52de2517711ba0cb7c298a97f2b14e1150a926cb"
19+
sha256 tahoe: "7498a873e826498cd2302e00f2c4a2bed207b2e3c97b06272c794d3d47662e14"
20+
sha256 sequoia: "c3a2c539efcfaedaa4330fd7bb2abf436435f0320c9acb364bb73de970623750"
21+
sha256 sonoma: "33ecbabc155041ef656a9572d0223a4d3412d14d763a2fdb1a963a9aacfc29c3"
22+
sha256 arm64_linux: "b351cac4da326df26d1b72878493b2ce038e990d3770bec75db1cfd849e6c561"
23+
sha256 x86_64_linux: "115dbf56f954ad54380ccac97205956e50c32ecd8b1bf54dbd509fef07423a79"
2324
end
2425

2526
depends_on "pkgconf" => :build
@@ -37,7 +38,6 @@ class PythonAT314 < Formula
3738
uses_from_macos "unzip"
3839

3940
on_linux do
40-
depends_on "berkeley-db@5"
4141
depends_on "zlib-ng-compat"
4242
end
4343

@@ -163,7 +163,7 @@ def install
163163
args << "MACOSX_DEPLOYMENT_TARGET=#{MacOS.version}"
164164
else
165165
args << "--enable-shared"
166-
args << "--with-dbmliborder=bdb"
166+
args << "--with-dbmliborder="
167167
end
168168

169169
# Allow python modules to use ctypes.find_library to find homebrew's stuff
@@ -492,7 +492,8 @@ def caveats
492492
assert_match "ModuleNotFoundError: No module named '_gdbm'",
493493
shell_output("#{python3} -Sc 'import dbm.gnu' 2>&1", 1)
494494

495-
# Verify that the selected DBM interface works
495+
# Verify that the selected DBM interface works on macOS.
496+
# Linux requires installing python-gdbm formula
496497
(testpath/"dbm_test.py").write <<~PYTHON
497498
import dbm
498499
@@ -503,7 +504,7 @@ def caveats
503504
assert b"foo \\xbd" in db
504505
assert db[b"foo \\xbd"] == b"bar \\xbd"
505506
PYTHON
506-
system python3, "dbm_test.py"
507+
system python3, "dbm_test.py" if OS.mac?
507508

508509
system bin/"pip#{version.major_minor}", "list", "--format=columns"
509510

0 commit comments

Comments
 (0)