Build wheels using setuptools-rust
Build wheels in a more "standard" way using setuptools-rust, which makes our life easier when dealing with multiple different platforms. Also use the new bdk-ffi's `generate` binary instead of relying on uniffi's bindgen cli.
This commit is contained in:
parent
964b7ae5f0
commit
d2bbecc5f5
5
.gitignore
vendored
5
.gitignore
vendored
@ -5,3 +5,8 @@ __pycache__/
|
||||
libbdkffi.dylib
|
||||
.idea/
|
||||
.DS_Store
|
||||
|
||||
*.swp
|
||||
|
||||
src/bdkpython/bdk.py
|
||||
*.whl
|
||||
|
55
README.md
55
README.md
@ -25,6 +25,11 @@ python -m tox
|
||||
|
||||
## Build the package
|
||||
```shell
|
||||
# Install dependecies
|
||||
pip install -r requirements.txt
|
||||
# Generate the bindings first
|
||||
bash generate.sh
|
||||
# Build the wheel
|
||||
python -m build
|
||||
```
|
||||
<br/>
|
||||
@ -34,53 +39,3 @@ python -m build
|
||||
pip install ./dist/bdkpython-0.0.1-py3-none-any.whl
|
||||
```
|
||||
<br/>
|
||||
|
||||
## Known issues
|
||||
Note that until the fix is merged upstream in [uniffi-rs](https://github.com/mozilla/uniffi-rs), the `loadIndirect()` function in the `bdk.py` module must be replaced with the following:
|
||||
```python
|
||||
def loadIndirect():
|
||||
if sys.platform == "linux":
|
||||
# libname = "lib{}.so"
|
||||
libname = os.path.join(os.path.dirname(__file__), "lib{}.so")
|
||||
elif sys.platform == "darwin":
|
||||
# libname = "lib{}.dylib"
|
||||
libname = os.path.join(os.path.dirname(__file__), "lib{}.dylib")
|
||||
elif sys.platform.startswith("win"):
|
||||
# As of python3.8, ctypes does not seem to search $PATH when loading DLLs.
|
||||
# We could use `os.add_dll_directory` to configure the search path, but
|
||||
# it doesn't feel right to mess with application-wide settings. Let's
|
||||
# assume that the `.dll` is next to the `.py` file and load by full path.
|
||||
libname = os.path.join(
|
||||
os.path.dirname(__file__),
|
||||
"{}.dll",
|
||||
)
|
||||
return getattr(ctypes.cdll, libname.format("bdkffi"))
|
||||
```
|
||||
|
||||
## Support both macOS architectures
|
||||
In order to support both macOS architectures, we must modify the `loadIndirect()` method a little further:
|
||||
```python
|
||||
import platform
|
||||
def loadIndirect():
|
||||
if sys.platform == "linux":
|
||||
# libname = "lib{}.so"
|
||||
# libname = os.path.join(os.path.dirname(__file__), "lib{}.so")
|
||||
libname = os.path.join(os.path.dirname(__file__), "linux-x86_64/lib{}.so")
|
||||
elif sys.platform == "darwin":
|
||||
# libname = "lib{}.dylib"
|
||||
# libname = os.path.join(os.path.dirname(__file__), "lib{}.dylib")
|
||||
if platform.machine() == "arm64":
|
||||
libname = os.path.join(os.path.dirname(__file__), "darwin-arm64/lib{}.dylib")
|
||||
elif platform.machine() == "x86_64":
|
||||
libname = os.path.join(os.path.dirname(__file__), "darwin-x86_64/lib{}.dylib")
|
||||
elif sys.platform.startswith("win"):
|
||||
# As of python3.8, ctypes does not seem to search $PATH when loading DLLs.
|
||||
# We could use `os.add_dll_directory` to configure the search path, but
|
||||
# it doesn't feel right to mess with application-wide settings. Let's
|
||||
# assume that the `.dll` is next to the `.py` file and load by full path.
|
||||
libname = os.path.join(
|
||||
os.path.dirname(__file__),
|
||||
"{}.dll",
|
||||
)
|
||||
return getattr(ctypes.cdll, libname.format("bdkffi"))
|
||||
```
|
||||
|
2
bdk-ffi
2
bdk-ffi
@ -1 +1 @@
|
||||
Subproject commit e4d53b5e4b213e484bf4b76a4bf33884dd68f086
|
||||
Subproject commit 68f266a17b29a84e8c63ed90126c5c152d2f51aa
|
19
build.sh
19
build.sh
@ -1,19 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
#set -euo pipefail
|
||||
|
||||
#pushd bdk-ffi
|
||||
echo "Confirm bdk-ffi rust library builds"
|
||||
cargo build --manifest-path ./bdk-ffi/Cargo.toml --release
|
||||
|
||||
echo "Generate bdk-ffi Python bindings"
|
||||
# clean solution once uniffi-bindgen 0.15.3 is released
|
||||
# uniffi-bindgen generate src/bdk.udl --no-format --out-dir ../src/bdkpython/ --language python
|
||||
|
||||
# in the meantime, set UNIFFI_BINDGEN environment variable to a local, latest version of uniffi-rs/uniffi_bindgen/Cargo.toml
|
||||
# and the BDK_PYTHON environment variable to the current directory
|
||||
#cd $UNIFFI_BINDGEN/
|
||||
#cargo run -- generate $BDK_PYTHON/src/bdk.udl --no-format --out-dir ./src/bdkpython/ --language python
|
||||
#cd -
|
||||
|
||||
cargo run --manifest-path $UNIFFI_BINDGEN -- generate ./bdk-ffi/src/bdk.udl --no-format --out-dir ./src/bdkpython/ --language python
|
||||
cp ./bdk-ffi/target/release/libbdkffi.dylib ./src/bdkpython/
|
9
generate.sh
Normal file
9
generate.sh
Normal file
@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR=$(dirname "$(realpath $0)")
|
||||
PY_SRC="${SCRIPT_DIR}/src/bdkpython/"
|
||||
|
||||
echo "Generating bdk.py..."
|
||||
GENERATE_PYTHON_BINDINGS_OUT="$PY_SRC" GENERATE_PYTHON_BINDINGS_FIXUP_LIB_PATH=bdkffi cargo run --manifest-path ./bdk-ffi/Cargo.toml --release --bin generate --features generate-python
|
387
nix/uniffi_0.14.1_cargo_lock.patch
Normal file
387
nix/uniffi_0.14.1_cargo_lock.patch
Normal file
@ -0,0 +1,387 @@
|
||||
--- /dev/null 2021-12-15 11:22:02.342000000 +0100
|
||||
+++ uniffi_bindgen/Cargo.lock 2021-12-15 16:15:16.132084011 +0100
|
||||
@@ -0,0 +1,384 @@
|
||||
+# This file is automatically @generated by Cargo.
|
||||
+# It is not intended for manual editing.
|
||||
+version = 3
|
||||
+
|
||||
+[[package]]
|
||||
+name = "anyhow"
|
||||
+version = "1.0.51"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "8b26702f315f53b6071259e15dd9d64528213b44d61de1ec926eca7715d62203"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "arrayvec"
|
||||
+version = "0.5.2"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "askama"
|
||||
+version = "0.10.5"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "d298738b6e47e1034e560e5afe63aa488fea34e25ec11b855a76f0d7b8e73134"
|
||||
+dependencies = [
|
||||
+ "askama_derive",
|
||||
+ "askama_escape",
|
||||
+ "askama_shared",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "askama_derive"
|
||||
+version = "0.10.5"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "ca2925c4c290382f9d2fa3d1c1b6a63fa1427099721ecca4749b154cc9c25522"
|
||||
+dependencies = [
|
||||
+ "askama_shared",
|
||||
+ "proc-macro2",
|
||||
+ "syn",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "askama_escape"
|
||||
+version = "0.10.1"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "90c108c1a94380c89d2215d0ac54ce09796823cca0fd91b299cfff3b33e346fb"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "askama_shared"
|
||||
+version = "0.11.1"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "2582b77e0f3c506ec4838a25fa8a5f97b9bed72bb6d3d272ea1c031d8bd373bc"
|
||||
+dependencies = [
|
||||
+ "askama_escape",
|
||||
+ "nom 6.2.1",
|
||||
+ "proc-macro2",
|
||||
+ "quote",
|
||||
+ "serde",
|
||||
+ "syn",
|
||||
+ "toml",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "bitflags"
|
||||
+version = "1.3.2"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "bitvec"
|
||||
+version = "0.19.6"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "55f93d0ef3363c364d5976646a38f04cf67cfe1d4c8d160cdea02cab2c116b33"
|
||||
+dependencies = [
|
||||
+ "funty",
|
||||
+ "radium",
|
||||
+ "tap",
|
||||
+ "wyz",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "camino"
|
||||
+version = "1.0.5"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "52d74260d9bf6944e2208aa46841b4b8f0d7ffc0849a06837b2f510337f86b2b"
|
||||
+dependencies = [
|
||||
+ "serde",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "cargo-platform"
|
||||
+version = "0.1.2"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "cbdb825da8a5df079a43676dbe042702f1707b1109f713a01420fbb4cc71fa27"
|
||||
+dependencies = [
|
||||
+ "serde",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "cargo_metadata"
|
||||
+version = "0.13.1"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "081e3f0755c1f380c2d010481b6fa2e02973586d5f2b24eebb7a2a1d98b143d8"
|
||||
+dependencies = [
|
||||
+ "camino",
|
||||
+ "cargo-platform",
|
||||
+ "semver",
|
||||
+ "semver-parser",
|
||||
+ "serde",
|
||||
+ "serde_json",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "cfg-if"
|
||||
+version = "1.0.0"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "clap"
|
||||
+version = "2.34.0"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
|
||||
+dependencies = [
|
||||
+ "bitflags",
|
||||
+ "textwrap",
|
||||
+ "unicode-width",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "funty"
|
||||
+version = "1.1.0"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "heck"
|
||||
+version = "0.3.3"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
|
||||
+dependencies = [
|
||||
+ "unicode-segmentation",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "itoa"
|
||||
+version = "1.0.1"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "lexical-core"
|
||||
+version = "0.7.6"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe"
|
||||
+dependencies = [
|
||||
+ "arrayvec",
|
||||
+ "bitflags",
|
||||
+ "cfg-if",
|
||||
+ "ryu",
|
||||
+ "static_assertions",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "memchr"
|
||||
+version = "2.3.4"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "nom"
|
||||
+version = "5.1.2"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af"
|
||||
+dependencies = [
|
||||
+ "memchr",
|
||||
+ "version_check",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "nom"
|
||||
+version = "6.2.1"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "9c5c51b9083a3c620fa67a2a635d1ce7d95b897e957d6b28ff9a5da960a103a6"
|
||||
+dependencies = [
|
||||
+ "bitvec",
|
||||
+ "funty",
|
||||
+ "lexical-core",
|
||||
+ "memchr",
|
||||
+ "version_check",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "paste"
|
||||
+version = "1.0.6"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "0744126afe1a6dd7f394cb50a716dbe086cb06e255e53d8d0185d82828358fb5"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "pest"
|
||||
+version = "2.1.3"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53"
|
||||
+dependencies = [
|
||||
+ "ucd-trie",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "proc-macro2"
|
||||
+version = "1.0.34"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "2f84e92c0f7c9d58328b85a78557813e4bd845130db68d7184635344399423b1"
|
||||
+dependencies = [
|
||||
+ "unicode-xid",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "quote"
|
||||
+version = "1.0.10"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05"
|
||||
+dependencies = [
|
||||
+ "proc-macro2",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "radium"
|
||||
+version = "0.5.3"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "941ba9d78d8e2f7ce474c015eea4d9c6d25b6a3327f9832ee29a4de27f91bbb8"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "ryu"
|
||||
+version = "1.0.9"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "semver"
|
||||
+version = "0.11.0"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6"
|
||||
+dependencies = [
|
||||
+ "semver-parser",
|
||||
+ "serde",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "semver-parser"
|
||||
+version = "0.10.2"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7"
|
||||
+dependencies = [
|
||||
+ "pest",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "serde"
|
||||
+version = "1.0.131"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "b4ad69dfbd3e45369132cc64e6748c2d65cdfb001a2b1c232d128b4ad60561c1"
|
||||
+dependencies = [
|
||||
+ "serde_derive",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "serde_derive"
|
||||
+version = "1.0.131"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "b710a83c4e0dff6a3d511946b95274ad9ca9e5d3ae497b63fda866ac955358d2"
|
||||
+dependencies = [
|
||||
+ "proc-macro2",
|
||||
+ "quote",
|
||||
+ "syn",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "serde_json"
|
||||
+version = "1.0.73"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "bcbd0344bc6533bc7ec56df11d42fb70f1b912351c0825ccb7211b59d8af7cf5"
|
||||
+dependencies = [
|
||||
+ "itoa",
|
||||
+ "ryu",
|
||||
+ "serde",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "static_assertions"
|
||||
+version = "1.1.0"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "syn"
|
||||
+version = "1.0.82"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "8daf5dd0bb60cbd4137b1b587d2fc0ae729bc07cf01cd70b36a1ed5ade3b9d59"
|
||||
+dependencies = [
|
||||
+ "proc-macro2",
|
||||
+ "quote",
|
||||
+ "unicode-xid",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "tap"
|
||||
+version = "1.0.1"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "textwrap"
|
||||
+version = "0.11.0"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
|
||||
+dependencies = [
|
||||
+ "unicode-width",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "toml"
|
||||
+version = "0.5.8"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa"
|
||||
+dependencies = [
|
||||
+ "serde",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "ucd-trie"
|
||||
+version = "0.1.3"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "unicode-segmentation"
|
||||
+version = "1.8.0"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "unicode-width"
|
||||
+version = "0.1.9"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "unicode-xid"
|
||||
+version = "0.2.2"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "uniffi_bindgen"
|
||||
+version = "0.14.1"
|
||||
+dependencies = [
|
||||
+ "anyhow",
|
||||
+ "askama",
|
||||
+ "cargo_metadata",
|
||||
+ "clap",
|
||||
+ "heck",
|
||||
+ "paste",
|
||||
+ "serde",
|
||||
+ "toml",
|
||||
+ "weedle",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "version_check"
|
||||
+version = "0.9.3"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "weedle"
|
||||
+version = "0.12.0"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "610950904727748ca09682e857f0d6d6437f0ca862f32f9229edba8cec8b2635"
|
||||
+dependencies = [
|
||||
+ "nom 5.1.2",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "wyz"
|
||||
+version = "0.2.0"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214"
|
387
nix/uniffi_0.15.2_cargo_lock.patch
Normal file
387
nix/uniffi_0.15.2_cargo_lock.patch
Normal file
@ -0,0 +1,387 @@
|
||||
--- /dev/null 2021-12-15 11:22:02.342000000 +0100
|
||||
+++ uniffi_bindgen/Cargo.lock 2021-12-15 15:54:49.278543090 +0100
|
||||
@@ -0,0 +1,384 @@
|
||||
+# This file is automatically @generated by Cargo.
|
||||
+# It is not intended for manual editing.
|
||||
+version = 3
|
||||
+
|
||||
+[[package]]
|
||||
+name = "anyhow"
|
||||
+version = "1.0.51"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "8b26702f315f53b6071259e15dd9d64528213b44d61de1ec926eca7715d62203"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "arrayvec"
|
||||
+version = "0.5.2"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "askama"
|
||||
+version = "0.10.5"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "d298738b6e47e1034e560e5afe63aa488fea34e25ec11b855a76f0d7b8e73134"
|
||||
+dependencies = [
|
||||
+ "askama_derive",
|
||||
+ "askama_escape",
|
||||
+ "askama_shared",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "askama_derive"
|
||||
+version = "0.10.5"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "ca2925c4c290382f9d2fa3d1c1b6a63fa1427099721ecca4749b154cc9c25522"
|
||||
+dependencies = [
|
||||
+ "askama_shared",
|
||||
+ "proc-macro2",
|
||||
+ "syn",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "askama_escape"
|
||||
+version = "0.10.1"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "90c108c1a94380c89d2215d0ac54ce09796823cca0fd91b299cfff3b33e346fb"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "askama_shared"
|
||||
+version = "0.11.1"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "2582b77e0f3c506ec4838a25fa8a5f97b9bed72bb6d3d272ea1c031d8bd373bc"
|
||||
+dependencies = [
|
||||
+ "askama_escape",
|
||||
+ "nom 6.2.1",
|
||||
+ "proc-macro2",
|
||||
+ "quote",
|
||||
+ "serde",
|
||||
+ "syn",
|
||||
+ "toml",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "bitflags"
|
||||
+version = "1.3.2"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "bitvec"
|
||||
+version = "0.19.6"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "55f93d0ef3363c364d5976646a38f04cf67cfe1d4c8d160cdea02cab2c116b33"
|
||||
+dependencies = [
|
||||
+ "funty",
|
||||
+ "radium",
|
||||
+ "tap",
|
||||
+ "wyz",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "camino"
|
||||
+version = "1.0.5"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "52d74260d9bf6944e2208aa46841b4b8f0d7ffc0849a06837b2f510337f86b2b"
|
||||
+dependencies = [
|
||||
+ "serde",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "cargo-platform"
|
||||
+version = "0.1.2"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "cbdb825da8a5df079a43676dbe042702f1707b1109f713a01420fbb4cc71fa27"
|
||||
+dependencies = [
|
||||
+ "serde",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "cargo_metadata"
|
||||
+version = "0.13.1"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "081e3f0755c1f380c2d010481b6fa2e02973586d5f2b24eebb7a2a1d98b143d8"
|
||||
+dependencies = [
|
||||
+ "camino",
|
||||
+ "cargo-platform",
|
||||
+ "semver",
|
||||
+ "semver-parser",
|
||||
+ "serde",
|
||||
+ "serde_json",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "cfg-if"
|
||||
+version = "1.0.0"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "clap"
|
||||
+version = "2.34.0"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
|
||||
+dependencies = [
|
||||
+ "bitflags",
|
||||
+ "textwrap",
|
||||
+ "unicode-width",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "funty"
|
||||
+version = "1.1.0"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "heck"
|
||||
+version = "0.3.3"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
|
||||
+dependencies = [
|
||||
+ "unicode-segmentation",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "itoa"
|
||||
+version = "1.0.1"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "lexical-core"
|
||||
+version = "0.7.6"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe"
|
||||
+dependencies = [
|
||||
+ "arrayvec",
|
||||
+ "bitflags",
|
||||
+ "cfg-if",
|
||||
+ "ryu",
|
||||
+ "static_assertions",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "memchr"
|
||||
+version = "2.3.4"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "nom"
|
||||
+version = "5.1.2"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af"
|
||||
+dependencies = [
|
||||
+ "memchr",
|
||||
+ "version_check",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "nom"
|
||||
+version = "6.2.1"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "9c5c51b9083a3c620fa67a2a635d1ce7d95b897e957d6b28ff9a5da960a103a6"
|
||||
+dependencies = [
|
||||
+ "bitvec",
|
||||
+ "funty",
|
||||
+ "lexical-core",
|
||||
+ "memchr",
|
||||
+ "version_check",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "paste"
|
||||
+version = "1.0.6"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "0744126afe1a6dd7f394cb50a716dbe086cb06e255e53d8d0185d82828358fb5"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "pest"
|
||||
+version = "2.1.3"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53"
|
||||
+dependencies = [
|
||||
+ "ucd-trie",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "proc-macro2"
|
||||
+version = "1.0.34"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "2f84e92c0f7c9d58328b85a78557813e4bd845130db68d7184635344399423b1"
|
||||
+dependencies = [
|
||||
+ "unicode-xid",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "quote"
|
||||
+version = "1.0.10"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05"
|
||||
+dependencies = [
|
||||
+ "proc-macro2",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "radium"
|
||||
+version = "0.5.3"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "941ba9d78d8e2f7ce474c015eea4d9c6d25b6a3327f9832ee29a4de27f91bbb8"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "ryu"
|
||||
+version = "1.0.9"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "semver"
|
||||
+version = "0.11.0"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6"
|
||||
+dependencies = [
|
||||
+ "semver-parser",
|
||||
+ "serde",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "semver-parser"
|
||||
+version = "0.10.2"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7"
|
||||
+dependencies = [
|
||||
+ "pest",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "serde"
|
||||
+version = "1.0.131"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "b4ad69dfbd3e45369132cc64e6748c2d65cdfb001a2b1c232d128b4ad60561c1"
|
||||
+dependencies = [
|
||||
+ "serde_derive",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "serde_derive"
|
||||
+version = "1.0.131"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "b710a83c4e0dff6a3d511946b95274ad9ca9e5d3ae497b63fda866ac955358d2"
|
||||
+dependencies = [
|
||||
+ "proc-macro2",
|
||||
+ "quote",
|
||||
+ "syn",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "serde_json"
|
||||
+version = "1.0.73"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "bcbd0344bc6533bc7ec56df11d42fb70f1b912351c0825ccb7211b59d8af7cf5"
|
||||
+dependencies = [
|
||||
+ "itoa",
|
||||
+ "ryu",
|
||||
+ "serde",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "static_assertions"
|
||||
+version = "1.1.0"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "syn"
|
||||
+version = "1.0.82"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "8daf5dd0bb60cbd4137b1b587d2fc0ae729bc07cf01cd70b36a1ed5ade3b9d59"
|
||||
+dependencies = [
|
||||
+ "proc-macro2",
|
||||
+ "quote",
|
||||
+ "unicode-xid",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "tap"
|
||||
+version = "1.0.1"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "textwrap"
|
||||
+version = "0.11.0"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
|
||||
+dependencies = [
|
||||
+ "unicode-width",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "toml"
|
||||
+version = "0.5.8"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa"
|
||||
+dependencies = [
|
||||
+ "serde",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "ucd-trie"
|
||||
+version = "0.1.3"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "unicode-segmentation"
|
||||
+version = "1.8.0"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "unicode-width"
|
||||
+version = "0.1.9"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "unicode-xid"
|
||||
+version = "0.2.2"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "uniffi_bindgen"
|
||||
+version = "0.15.2"
|
||||
+dependencies = [
|
||||
+ "anyhow",
|
||||
+ "askama",
|
||||
+ "cargo_metadata",
|
||||
+ "clap",
|
||||
+ "heck",
|
||||
+ "paste",
|
||||
+ "serde",
|
||||
+ "toml",
|
||||
+ "weedle",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "version_check"
|
||||
+version = "0.9.3"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "weedle"
|
||||
+version = "0.12.0"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "610950904727748ca09682e857f0d6d6437f0ca862f32f9229edba8cec8b2635"
|
||||
+dependencies = [
|
||||
+ "nom 5.1.2",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "wyz"
|
||||
+version = "0.2.0"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214"
|
20
nix/uniffi_bindgen.nix
Normal file
20
nix/uniffi_bindgen.nix
Normal file
@ -0,0 +1,20 @@
|
||||
with import <nixpkgs> {};
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "uniffi_bindgen";
|
||||
version = "0.15.2";
|
||||
src = fetchFromGitHub {
|
||||
owner = "mozilla";
|
||||
repo = "uniffi-rs";
|
||||
rev = "6fa9c06a394b4e9b219fa30fc94e353d17f86e11";
|
||||
# rev = "refs/tags/v0.14.1";
|
||||
sha256 = "1chahy1ac1r88drpslln2p1b04cbg79ylpxzyyp92s1z7ldm5ddb"; # 0.15.2
|
||||
# sha256 = "1mff3f3fqqzqx1yv70ff1yzdnvbd90vg2r477mzzcgisg1wfpwi0"; # 0.14.1
|
||||
fetchSubmodules = true;
|
||||
} + "/uniffi_bindgen/";
|
||||
|
||||
doCheck = false;
|
||||
cargoSha256 = "sha256:08gg285fq8i32nf9kd8s0nn0niacd7sg8krv818nx41i18sm2cf3"; # 0.15.2
|
||||
# cargoSha256 = "sha256:01zp3rwlni988h02dqhkhzhwccs7bhwc1alhbf6gbw3av4b0m9cf"; # 0.14.1
|
||||
cargoPatches = [ ./uniffi_0.15.2_cargo_lock.patch ];
|
||||
}
|
3
requirements.txt
Normal file
3
requirements.txt
Normal file
@ -0,0 +1,3 @@
|
||||
semantic-version==2.9.0
|
||||
setuptools-rust==1.1.2
|
||||
typing_extensions==4.0.1
|
24
setup.py
24
setup.py
@ -1,6 +1,9 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
from setuptools import setup, find_packages
|
||||
import os
|
||||
|
||||
from setuptools import setup
|
||||
from setuptools_rust import Binding, RustExtension
|
||||
|
||||
LONG_DESCRIPTION = """# bdkpython
|
||||
The Python language bindings for the [bitcoindevkit](https://github.com/bitcoindevkit).
|
||||
@ -60,17 +63,22 @@ print(f"Wallet balance is: {balance}")
|
||||
```
|
||||
"""
|
||||
|
||||
rust_ext = RustExtension(
|
||||
"bdkpython.bdkffi",
|
||||
path="./bdk-ffi/Cargo.toml",
|
||||
binding=Binding.NoBinding,
|
||||
)
|
||||
|
||||
setup(
|
||||
name='bdkpython',
|
||||
version='0.0.4',
|
||||
packages=find_packages(where="src"),
|
||||
package_dir={"": "src"},
|
||||
package_data={"bdkpython": ["*/*.dylib", "*/*.so"]},
|
||||
include_package_data=True,
|
||||
zip_safe=False,
|
||||
name = 'bdkpython',
|
||||
version = '0.0.4',
|
||||
description="The Python language bindings for the bitcoindevkit",
|
||||
long_description=LONG_DESCRIPTION,
|
||||
long_description_content_type='text/markdown',
|
||||
rust_extensions=[rust_ext],
|
||||
zip_safe=False,
|
||||
packages=['bdkpython'],
|
||||
package_dir={ 'bdkpython': './src/bdkpython' },
|
||||
url="https://github.com/thunderbiscuit/bdk-python",
|
||||
author="Alekos Filini <alekos.filini@gmail.com>, Steve Myers <steve@notmandatory.org>",
|
||||
license="MIT or Apache 2.0",
|
||||
|
17
shell.nix
Normal file
17
shell.nix
Normal file
@ -0,0 +1,17 @@
|
||||
with import <nixpkgs> {};
|
||||
|
||||
mkShell {
|
||||
name = "bdk-python-shell";
|
||||
packages = [ ( import ./nix/uniffi_bindgen.nix ) ];
|
||||
buildInputs = with python37.pkgs; [
|
||||
pip
|
||||
setuptools
|
||||
];
|
||||
shellHook = ''
|
||||
export LD_LIBRARY_PATH=${pkgs.stdenv.cc.cc.lib}/lib:$LD_LIBRARY_PATH
|
||||
alias pip="PIP_PREFIX='$(pwd)/_build/pip_packages' \pip"
|
||||
export PYTHONPATH="$(pwd)/_build/pip_packages/lib/python3.7/site-packages:$(pwd):$PYTHONPATH"
|
||||
export PATH="$(pwd)/_build/pip_packages/bin:$PATH"
|
||||
unset SOURCE_DATE_EPOCH
|
||||
'';
|
||||
}
|
1891
src/bdkpython/bdk.py
1891
src/bdkpython/bdk.py
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user