vendor: add complete multi-platform support (runtime + dev)

This commit is contained in:
LC mac
2026-01-12 17:18:28 +08:00
parent 5d02205353
commit c380986e26
19 changed files with 75 additions and 39 deletions

28
.gitignore vendored
View File

@@ -8,6 +8,7 @@ __pycache__/
*.egg-info/
.ipynb_checkpoints/
# Virtual environments
.venv/
.venv312/
@@ -16,25 +17,30 @@ venv/
ENV/
env/
# Build artifacts
dist/
build/
*.spec
wheelhouse/
# PyInstaller temporary files
src/*_frozen.py
# Testing
.pytest_cache/
.cache/
coverage/
# Type checking
.mypy_cache/
.pyre/
.pytype/
# IDEs
.vscode/
.idea/
@@ -42,38 +48,50 @@ coverage/
*.swo
*~
# OS
.DS_Store
Thumbs.db
# Environment
.env
.envrc
# Logs
logs/
*.log
# Database
*.sqlite3
*.db
# Project specific
.wallet/
releases/*/
_toDelete/
.potentialfix.md
# PGP keys (except test data)
*.asc
!tests/data/recipient.asc
# Vendor cleanup (wrong architectures/test builds)
vendor/linux-aarch64/
# Vendor - ignore test/experimental builds only
vendor/macos-arm64-docker/
vendor/*-docker/
vendor/*-test/
# Keep official vendor directories
# vendor/macos-arm64/
# vendor/linux-x86_64/
# Keep ALL official vendor directories (runtime + dev):
# vendor/macos-arm64/ - macOS Apple Silicon (runtime)
# vendor/macos-arm64-dev/ - macOS Apple Silicon (dev with pytest)
# vendor/linux-x86_64/ - Linux Intel/AMD (runtime)
# vendor/linux-x86_64-dev/ - Linux Intel/AMD (dev with pytest)
# vendor/linux-aarch64/ - Linux ARM64 (runtime)
# vendor/linux-aarch64-dev/ - Linux ARM64 (dev with pytest)
# vendor/PROVENANCE.md

View File

@@ -46,14 +46,16 @@ VENDOR_LINUX := vendor/linux-x86_64
help:
@echo "pyhdwallet build system (macOS + Linux compatible)"
@echo ""
help:
@echo "📦 Vendoring (for offline/air-gapped use):"
@echo " make vendor-macos - Build macOS ARM64 wheels (requires macOS native)"
@echo " make vendor-linux - Build Linux x86_64 wheels (Docker - any OS)"
@echo " make vendor-macos - Build macOS ARM64 wheels (runtime)"
@echo " make vendor-macos-dev - Build macOS ARM64 dev wheels (pytest)"
@echo " make vendor-linux - Build Linux x86_64 wheels (Docker)"
@echo " make vendor-linux-dev - Build Linux x86_64 dev wheels (Docker)"
@echo " make vendor-linux-arm - Build Linux ARM64/aarch64 wheels (Docker)"
@echo " make vendor-linux-dev - Build Linux x86_64 dev wheels (includes pytest)"
@echo " make vendor-linux-arm-dev - Build Linux ARM64 dev wheels (includes pytest)"
@echo " make vendor-linux-arm-dev - Build Linux ARM64 dev wheels (Docker)"
@echo " make vendor-all - Build runtime wheels for ALL platforms"
@echo " make vendor-all-dev - Build runtime + dev wheels for Linux platforms"
@echo " make vendor-all-dev - Build dev wheels for ALL platforms"
@echo " make verify-vendor - Test offline installation from vendor/"
@echo ""
@@ -81,8 +83,8 @@ help:
@echo " make down - Stop and remove dev container"
@echo ""
@echo "🧹 Cleanup:"
@echo " make clean - Remove venv, wheelhouse (keeps vendor/)"
@echo " make clean-vendor - Remove vendor/ only"
@echo " make clean-vendor - Remove all vendor wheels"
@echo " make clean - Remove vendor/ + .venv + cache"
@echo " make clean-release - Remove releases/ only"
@echo ""
@echo " Platform Info:"

View File

@@ -14,9 +14,11 @@ if [[ "$OSTYPE" == "linux-gnu"* ]]; then
case "$ARCH" in
x86_64)
PLATFORM="linux-x86_64"
CHECKSUM_CMD="sha256sum"
;;
aarch64|arm64)
PLATFORM="linux-aarch64"
CHECKSUM_CMD="sha256sum"
;;
*)
echo "ERROR: Unsupported Linux architecture: $ARCH"
@@ -27,6 +29,7 @@ elif [[ "$OSTYPE" == "darwin"* ]]; then
ARCH=$(uname -m)
if [[ "$ARCH" == "arm64" ]]; then
PLATFORM="macos-arm64"
CHECKSUM_CMD="shasum -a 256"
else
echo "ERROR: Only macOS ARM64 is supported"
exit 1
@@ -51,21 +54,34 @@ if [ ! -d "$VENDOR_PATH" ]; then
ls -d vendor/*/ 2>/dev/null || echo " (none)"
echo ""
if [ "$DEV_MODE" = true ]; then
echo "To build dev wheels:"
if [[ "$PLATFORM" == "linux-x86_64" ]]; then
echo "To build dev wheels for your platform:"
case "$PLATFORM" in
linux-x86_64)
echo " make vendor-linux-dev"
elif [[ "$PLATFORM" == "linux-aarch64" ]]; then
;;
linux-aarch64)
echo " make vendor-linux-arm-dev"
fi
;;
macos-arm64)
echo " make vendor-macos-dev"
;;
esac
else
echo "To build runtime wheels:"
if [[ "$PLATFORM" == "linux-x86_64" ]]; then
echo "To build runtime wheels for your platform:"
case "$PLATFORM" in
linux-x86_64)
echo " make vendor-linux"
elif [[ "$PLATFORM" == "linux-aarch64" ]]; then
;;
linux-aarch64)
echo " make vendor-linux-arm"
elif [[ "$PLATFORM" == "macos-arm64" ]]; then
;;
macos-arm64)
echo " make vendor-macos"
fi
;;
esac
echo ""
echo "Or build all platforms at once:"
echo " make vendor-all"
fi
exit 1
fi
@@ -105,7 +121,7 @@ fi
if [ -f "$VENDOR_PATH/SHA256SUMS" ]; then
echo ""
echo "Verifying checksums..."
(cd "$VENDOR_PATH" && sha256sum -c SHA256SUMS --quiet) || {
(cd "$VENDOR_PATH" && $CHECKSUM_CMD -c SHA256SUMS --quiet) || {
echo "ERROR: Checksum verification failed!"
exit 1
}

View File

@@ -3,13 +3,13 @@
518c118a5e00001854adb51f3164e647aa99b6a9877d2a733a28cb5c0a4d6857 cbor2-5.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062 cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
5a366c314df7217e3357bb8c7d2cda540b0bce180705f7a0ce2d1d9e28f62ad4 coincurve-21.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
28137c4c7d1d12f987531b01389c48beb202eeb4e7abdf2cda5068af1c04022f crcmod-1.7-cp312-cp312-linux_aarch64.whl
cb86ab264d180b88b88a68a17d47ed78f98d86321155a8920c603b4b44e891f1 crcmod-1.7-cp312-cp312-linux_aarch64.whl
549e234ff32571b1f4076ac269fcce7a808d3bf98b76c8dd560e42dbc66d7d91 cryptography-46.0.3-cp311-abi3-manylinux_2_34_aarch64.whl
30638e27cf77b7e15c4c4cc1973720149e1033827cfd00661ca5c8cc0cdb24c3 ecdsa-0.19.1-py2.py3-none-any.whl
251fec0e960e508e26e06474d1bc58bb13a4e4edc1ab2a8a1d294342e220f00b ed25519_blake2b-1.4.1-cp312-cp312-linux_aarch64.whl
a69dce6f7b9c2d149b40fe9f2136fbb3365c3043fc8c0f0a8bb7822871253eb4 ed25519_blake2b-1.4.1-cp312-cp312-linux_aarch64.whl
f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12 iniconfig-2.3.0-py3-none-any.whl
29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484 packaging-25.0-py3-none-any.whl
27f5c397272590f668ec4d25afce0d776903317fdb3baadf341ab6319defd1f1 pgpy-0.6.0-py3-none-any.whl
1edc3f2f8d463d58a15af83e7a589dcdf0ad719a81d3badbefe73654f5498aab pgpy-0.6.0-py3-none-any.whl
e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746 pluggy-1.6.0-py3-none-any.whl
a3929c291408e67a1a11566f251b9f7d06c3fb3ae240caec44b9181de09e3fc9 py_sr25519_bindings-0.2.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629 pyasn1-0.6.1-py3-none-any.whl

View File

@@ -3,11 +3,11 @@
518c118a5e00001854adb51f3164e647aa99b6a9877d2a733a28cb5c0a4d6857 cbor2-5.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062 cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
5a366c314df7217e3357bb8c7d2cda540b0bce180705f7a0ce2d1d9e28f62ad4 coincurve-21.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
6659bbc5bc01b5b2756b643ea030886b3548ff3ca55ad5d0963c6c6f6b5f2442 crcmod-1.7-cp312-cp312-linux_aarch64.whl
366e6f9cf39cb1a3d6656ff911b71cb3bcd92cb6510c1bece7c128dd7ba2697c crcmod-1.7-cp312-cp312-linux_aarch64.whl
549e234ff32571b1f4076ac269fcce7a808d3bf98b76c8dd560e42dbc66d7d91 cryptography-46.0.3-cp311-abi3-manylinux_2_34_aarch64.whl
30638e27cf77b7e15c4c4cc1973720149e1033827cfd00661ca5c8cc0cdb24c3 ecdsa-0.19.1-py2.py3-none-any.whl
2c9c33ab744e65671462e8eb785fadf288642773c657712ed611c7d01ebc0ad9 ed25519_blake2b-1.4.1-cp312-cp312-linux_aarch64.whl
78b200c0d753c151928c40cd8a3415d4d5bf2f773fdbcedfc04b998c0bb3ff22 pgpy-0.6.0-py3-none-any.whl
cce822d4a1bbe91061a66e0c3148d15b1c1ac5dd7cd9e8ea23ca1b7aa85ba817 ed25519_blake2b-1.4.1-cp312-cp312-linux_aarch64.whl
6b1e33c6af6dc080855090101cda8bfd293119cdbc36bcf99554a0efc5780a89 pgpy-0.6.0-py3-none-any.whl
a3929c291408e67a1a11566f251b9f7d06c3fb3ae240caec44b9181de09e3fc9 py_sr25519_bindings-0.2.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629 pyasn1-0.6.1-py3-none-any.whl
e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934 pycparser-2.23-py3-none-any.whl

Binary file not shown.

View File

@@ -3,13 +3,13 @@
cff2a1999e49cd51c23d1b6786a012127fd8f722c5946e82bd7ab3eb307443f3 cbor2-5.8.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
1b04778b75339c6e46deb9ae3bcfc2250fbe48d1324153e4310fc4996e135715 coincurve-21.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
a2173317e737dbd33333f7a11feb64f7af5996c5ce7341118455607f177126d7 crcmod-1.7-cp312-cp312-linux_x86_64.whl
5d997d8b486a4cf4a8f2547e46545c3bcc5d5d0a659226bdae98e7b1d3a5cf64 crcmod-1.7-cp312-cp312-linux_x86_64.whl
10b01676fc208c3e6feeb25a8b83d81767e8059e1fe86e1dc62d10a3018fa926 cryptography-46.0.3-cp311-abi3-manylinux_2_34_x86_64.whl
30638e27cf77b7e15c4c4cc1973720149e1033827cfd00661ca5c8cc0cdb24c3 ecdsa-0.19.1-py2.py3-none-any.whl
abed4903178c27bbbab16f186fe1689592b05eeb25f74da0b92f8878ab83459d ed25519_blake2b-1.4.1-cp312-cp312-linux_x86_64.whl
deb8c516c49db2b19b977aeca279aed5b291442f40e1586282299e74ef828f10 ed25519_blake2b-1.4.1-cp312-cp312-linux_x86_64.whl
f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12 iniconfig-2.3.0-py3-none-any.whl
29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484 packaging-25.0-py3-none-any.whl
ea5d0485ff965980dcdabb3f46a7f1ba4c086e655c85f55a872be0748dd493f0 pgpy-0.6.0-py3-none-any.whl
bf24c8a19acc5c17951377731de5a527a7f4f21a05cf2345338ec375173af93f pgpy-0.6.0-py3-none-any.whl
e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746 pluggy-1.6.0-py3-none-any.whl
9da4c9c7f9a0a0e8e3d9ed6eedc885561288edd72267ebc7b0fd11262e8c8b28 py_sr25519_bindings-0.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629 pyasn1-0.6.1-py3-none-any.whl

View File

@@ -3,11 +3,11 @@
cff2a1999e49cd51c23d1b6786a012127fd8f722c5946e82bd7ab3eb307443f3 cbor2-5.8.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
1b04778b75339c6e46deb9ae3bcfc2250fbe48d1324153e4310fc4996e135715 coincurve-21.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
fc87cc9250f7c34582b9b085258cc0c6a677b5d9a1e35760e26f2c10e23a7468 crcmod-1.7-cp312-cp312-linux_x86_64.whl
34c2e307b1aa439a46067707e7367c9dce8c1fe6d7e8524a669205c46a8cae3e crcmod-1.7-cp312-cp312-linux_x86_64.whl
10b01676fc208c3e6feeb25a8b83d81767e8059e1fe86e1dc62d10a3018fa926 cryptography-46.0.3-cp311-abi3-manylinux_2_34_x86_64.whl
30638e27cf77b7e15c4c4cc1973720149e1033827cfd00661ca5c8cc0cdb24c3 ecdsa-0.19.1-py2.py3-none-any.whl
23c23406c8d3d9a4bc0692ba71167bded408ef648247ff089079368daf05c286 ed25519_blake2b-1.4.1-cp312-cp312-linux_x86_64.whl
111f982dfdca0f9bb5030d425c50899e74770a838fe568a7ee5bcc1e17e5fada pgpy-0.6.0-py3-none-any.whl
1c52907da0a83d4ec6ee94720751e35a7858c31727c6df56b90bed4c60f7c948 ed25519_blake2b-1.4.1-cp312-cp312-linux_x86_64.whl
836973be20cf59178f20748a6023a1e0db38a94484fc43fa3a6924b639ee3788 pgpy-0.6.0-py3-none-any.whl
9da4c9c7f9a0a0e8e3d9ed6eedc885561288edd72267ebc7b0fd11262e8c8b28 py_sr25519_bindings-0.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629 pyasn1-0.6.1-py3-none-any.whl
e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934 pycparser-2.23-py3-none-any.whl

Binary file not shown.