chore: cleanup build artifacts and add .gitignore
This commit is contained in:
84
.gitignore
vendored
84
.gitignore
vendored
@@ -1,31 +1,79 @@
|
|||||||
.venv/
|
# Python
|
||||||
.venv312/
|
|
||||||
__pycache__/
|
__pycache__/
|
||||||
|
*.py[cod]
|
||||||
|
*$py.class
|
||||||
*.pyc
|
*.pyc
|
||||||
.vscode/
|
*.so
|
||||||
.env
|
.Python
|
||||||
.DS_Store
|
|
||||||
.idea/
|
|
||||||
logs/
|
|
||||||
*.log
|
|
||||||
coverage/
|
|
||||||
_toDelete/
|
|
||||||
_toDelete/
|
|
||||||
dist/
|
|
||||||
build/
|
|
||||||
*.egg-info/
|
*.egg-info/
|
||||||
.ipynb_checkpoints/
|
.ipynb_checkpoints/
|
||||||
.envrc
|
|
||||||
|
# Virtual environments
|
||||||
|
.venv/
|
||||||
|
.venv312/
|
||||||
|
.venv-*/
|
||||||
|
venv/
|
||||||
|
ENV/
|
||||||
|
env/
|
||||||
|
|
||||||
|
# Build artifacts
|
||||||
|
dist/
|
||||||
|
build/
|
||||||
|
*.spec
|
||||||
|
wheelhouse/
|
||||||
|
|
||||||
|
# PyInstaller temporary files
|
||||||
|
src/*_frozen.py
|
||||||
|
|
||||||
|
# Testing
|
||||||
.pytest_cache/
|
.pytest_cache/
|
||||||
|
.cache/
|
||||||
|
coverage/
|
||||||
|
|
||||||
|
# Type checking
|
||||||
.mypy_cache/
|
.mypy_cache/
|
||||||
.pyre/
|
.pyre/
|
||||||
.pytype/
|
.pytype/
|
||||||
.cache/
|
|
||||||
|
# IDEs
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
*~
|
||||||
|
|
||||||
|
# OS
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
# Environment
|
||||||
|
.env
|
||||||
|
.envrc
|
||||||
|
|
||||||
|
# Logs
|
||||||
|
logs/
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# Database
|
||||||
*.sqlite3
|
*.sqlite3
|
||||||
*.db
|
*.db
|
||||||
*.asc
|
|
||||||
.venv/
|
# Project specific
|
||||||
.wallet/
|
.wallet/
|
||||||
|
releases/*/
|
||||||
|
_toDelete/
|
||||||
.potentialfix.md
|
.potentialfix.md
|
||||||
# But keep this specific one
|
|
||||||
|
# PGP keys (except test data)
|
||||||
|
*.asc
|
||||||
!tests/data/recipient.asc
|
!tests/data/recipient.asc
|
||||||
|
|
||||||
|
# Vendor cleanup (wrong architectures/test builds)
|
||||||
|
vendor/linux-aarch64/
|
||||||
|
vendor/macos-arm64-docker/
|
||||||
|
vendor/*-docker/
|
||||||
|
|
||||||
|
# Keep official vendor directories
|
||||||
|
# vendor/macos-arm64/
|
||||||
|
# vendor/linux-x86_64/
|
||||||
|
# vendor/PROVENANCE.md
|
||||||
|
|||||||
175
Makefile
175
Makefile
@@ -5,6 +5,26 @@
|
|||||||
# - Create host venv and install from wheelhouse or vendor/
|
# - Create host venv and install from wheelhouse or vendor/
|
||||||
# - Optionally run inside a warm container
|
# - Optionally run inside a warm container
|
||||||
|
|
||||||
|
# ---------- Platform Detection ----------
|
||||||
|
UNAME_S := $(shell uname -s)
|
||||||
|
UNAME_M := $(shell uname -m)
|
||||||
|
|
||||||
|
ifeq ($(UNAME_S),Darwin)
|
||||||
|
PLATFORM := macos
|
||||||
|
ifeq ($(UNAME_M),arm64)
|
||||||
|
ARCH := arm64
|
||||||
|
else
|
||||||
|
$(error Unsupported macOS architecture: $(UNAME_M))
|
||||||
|
endif
|
||||||
|
else ifeq ($(UNAME_S),Linux)
|
||||||
|
PLATFORM := linux
|
||||||
|
ARCH := x86_64
|
||||||
|
else
|
||||||
|
$(error Unsupported OS: $(UNAME_S))
|
||||||
|
endif
|
||||||
|
|
||||||
|
VENDOR_DIR := vendor/$(PLATFORM)-$(ARCH)
|
||||||
|
|
||||||
# ---------- Config ----------
|
# ---------- Config ----------
|
||||||
IMAGE := hdwallet-build:3.12
|
IMAGE := hdwallet-build:3.12
|
||||||
CONTAINER := hdwallet-dev
|
CONTAINER := hdwallet-dev
|
||||||
@@ -20,13 +40,27 @@ VENDOR_LINUX := vendor/linux-x86_64
|
|||||||
# ---------- Help ----------
|
# ---------- Help ----------
|
||||||
.PHONY: help
|
.PHONY: help
|
||||||
help:
|
help:
|
||||||
@echo "Vendoring (for offline/air-gapped use):"
|
@echo "pyhdwallet build system (macOS + Linux compatible)"
|
||||||
@echo " make vendor-macos - Build macOS ARM64 wheels (native)"
|
@echo ""
|
||||||
@echo " make vendor-linux - Build Linux x86_64 wheels (Docker)"
|
@echo "📦 Vendoring (for offline/air-gapped use):"
|
||||||
@echo " make vendor-all - Build wheels for both platforms"
|
@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-all - Build wheels for both platforms (macOS native + Docker)"
|
||||||
@echo " make verify-vendor - Test offline installation from vendor/"
|
@echo " make verify-vendor - Test offline installation from vendor/"
|
||||||
@echo ""
|
@echo ""
|
||||||
@echo "Development workflow:"
|
@echo "🔨 Binary Distribution:"
|
||||||
|
@echo " make binary - Build standalone binary for current platform"
|
||||||
|
@echo " make binary-linux - Build Linux binary via Docker (any OS)"
|
||||||
|
@echo " make binary-all - Build binaries for all platforms"
|
||||||
|
@echo ""
|
||||||
|
@echo "🚀 Release Management:"
|
||||||
|
@echo " make release - Build complete release (binaries + vendors + checksums)"
|
||||||
|
@echo " make release-binaries - Copy binaries to releases/vX.Y.Z/"
|
||||||
|
@echo " make release-checksums - Generate SHA256SUMS for binaries"
|
||||||
|
@echo " make release-test - Test release binaries"
|
||||||
|
@echo " make clean-release - Remove all release artifacts"
|
||||||
|
@echo ""
|
||||||
|
@echo "🛠️ Development workflow (works on macOS + Linux):"
|
||||||
@echo " make build-image - Build Docker image (Python 3.12)"
|
@echo " make build-image - Build Docker image (Python 3.12)"
|
||||||
@echo " make wheels - Build wheels into ./$(WHEELHOUSE)"
|
@echo " make wheels - Build wheels into ./$(WHEELHOUSE)"
|
||||||
@echo " make install - Create venv and install dependencies"
|
@echo " make install - Create venv and install dependencies"
|
||||||
@@ -35,9 +69,20 @@ help:
|
|||||||
@echo " make shell - Open shell in warm container"
|
@echo " make shell - Open shell in warm container"
|
||||||
@echo " make down - Stop and remove dev container"
|
@echo " make down - Stop and remove dev container"
|
||||||
@echo ""
|
@echo ""
|
||||||
@echo "Cleanup:"
|
@echo "🧹 Cleanup:"
|
||||||
@echo " make clean - Remove venv, wheelhouse, vendor/"
|
@echo " make clean - Remove venv, wheelhouse, vendor/"
|
||||||
@echo " make clean-vendor - Remove vendor/ only"
|
@echo " make clean-vendor - Remove vendor/ only"
|
||||||
|
@echo " make clean-release - Remove releases/ only"
|
||||||
|
@echo ""
|
||||||
|
@echo "ℹ️ Platform Info:"
|
||||||
|
@echo " make info - Show platform detection info"
|
||||||
|
@echo ""
|
||||||
|
@echo "Platform notes:"
|
||||||
|
@echo " • vendor-macos requires native macOS (uses .venv312 with ARM64 Python)"
|
||||||
|
@echo " • vendor-linux works on any platform with Docker"
|
||||||
|
@echo " • binary-linux works on any platform with Docker"
|
||||||
|
@echo " • All other targets work on macOS and Linux"
|
||||||
|
|
||||||
|
|
||||||
# ---------- Build reusable image ----------
|
# ---------- Build reusable image ----------
|
||||||
.PHONY: build-image
|
.PHONY: build-image
|
||||||
@@ -105,6 +150,38 @@ verify-vendor:
|
|||||||
rm -rf .venv-verify \
|
rm -rf .venv-verify \
|
||||||
'
|
'
|
||||||
|
|
||||||
|
# ---------- Binary Building ----------
|
||||||
|
.PHONY: binary
|
||||||
|
binary:
|
||||||
|
@echo "🔨 Building binary for current platform: $(PLATFORM)-$(ARCH)..."
|
||||||
|
ifeq ($(PLATFORM),macos)
|
||||||
|
@if [ ! -f "build_binary.sh" ]; then \
|
||||||
|
echo "❌ build_binary.sh not found!"; \
|
||||||
|
exit 1; \
|
||||||
|
fi
|
||||||
|
@bash build_binary.sh
|
||||||
|
else
|
||||||
|
@echo "⚠️ For Linux native builds, use build_binary.sh directly"
|
||||||
|
@echo " Or use: make binary-linux (builds via Docker)"
|
||||||
|
endif
|
||||||
|
|
||||||
|
.PHONY: binary-linux
|
||||||
|
binary-linux:
|
||||||
|
@./build_binary_linux.sh
|
||||||
|
|
||||||
|
.PHONY: binary-all
|
||||||
|
binary-all:
|
||||||
|
@echo "🏗️ Building binaries for all platforms..."
|
||||||
|
@echo ""
|
||||||
|
@echo "1️⃣ Building native binary..."
|
||||||
|
@$(MAKE) binary
|
||||||
|
@echo ""
|
||||||
|
@echo "2️⃣ Building Linux binary via Docker..."
|
||||||
|
@$(MAKE) binary-linux
|
||||||
|
@echo ""
|
||||||
|
@echo "✅ All binaries built:"
|
||||||
|
@ls -lh dist/pyhdwallet* 2>/dev/null | awk '{print " " $$9 " (" $$5 ")"}' || echo " No binaries found"
|
||||||
|
|
||||||
# ---------- Development Workflow ----------
|
# ---------- Development Workflow ----------
|
||||||
.PHONY: wheels
|
.PHONY: wheels
|
||||||
wheels: requirements.txt build-image
|
wheels: requirements.txt build-image
|
||||||
@@ -165,5 +242,91 @@ clean-vendor:
|
|||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean: down
|
clean: down
|
||||||
rm -rf $(VENV_HOST) $(WHEELHOUSE) vendor/ .venv-verify .venv-offline-test
|
rm -rf $(VENV_HOST) $(WHEELHOUSE) vendor/ .venv-verify .venv-offline-test
|
||||||
|
rm -rf dist/ build/ *.spec src/pyhdwallet_frozen.py
|
||||||
find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true
|
find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true
|
||||||
find . -type d -name "*.egg-info" -exec rm -rf {} + 2>/dev/null || true
|
find . -type d -name "*.egg-info" -exec rm -rf {} + 2>/dev/null || true
|
||||||
|
|
||||||
|
# ---------- Platform-Aware Operations ----------
|
||||||
|
.PHONY: info
|
||||||
|
info:
|
||||||
|
@echo "Platform Information:"
|
||||||
|
@echo " OS: $(PLATFORM)"
|
||||||
|
@echo " Architecture: $(ARCH)"
|
||||||
|
@echo " Vendor dir: $(VENDOR_DIR)"
|
||||||
|
@echo " Python: $(shell python3 --version 2>/dev/null || echo 'not found')"
|
||||||
|
@echo " Docker: $(shell docker --version 2>/dev/null || echo 'not found')"
|
||||||
|
|
||||||
|
# ---------- Release Management ----------
|
||||||
|
VERSION := $(shell grep -oP "VERSION = \"\K[^\"]+" src/pyhdwallet.py || echo "v1.1.0")
|
||||||
|
RELEASE_DIR := releases/$(VERSION)
|
||||||
|
|
||||||
|
.PHONY: release-prep
|
||||||
|
release-prep:
|
||||||
|
@echo "📦 Preparing release $(VERSION)..."
|
||||||
|
@mkdir -p $(RELEASE_DIR)
|
||||||
|
|
||||||
|
.PHONY: release-binaries
|
||||||
|
release-binaries: release-prep binary binary-linux
|
||||||
|
@echo "📦 Copying binaries to $(RELEASE_DIR)..."
|
||||||
|
@cp dist/pyhdwallet $(RELEASE_DIR)/pyhdwallet-macos-arm64
|
||||||
|
@cp dist/pyhdwallet-linux $(RELEASE_DIR)/pyhdwallet-linux-x86_64
|
||||||
|
@echo "✅ Binaries copied"
|
||||||
|
|
||||||
|
.PHONY: release-checksums
|
||||||
|
release-checksums: release-binaries
|
||||||
|
@echo "🔐 Generating checksums..."
|
||||||
|
@cd $(RELEASE_DIR) && shasum -a 256 pyhdwallet-* > SHA256SUMS
|
||||||
|
@echo "✅ Checksums generated:"
|
||||||
|
@cat $(RELEASE_DIR)/SHA256SUMS
|
||||||
|
|
||||||
|
.PHONY: release-vendors
|
||||||
|
release-vendors: release-prep vendor-all
|
||||||
|
@echo "📦 Copying vendor wheels to $(RELEASE_DIR)..."
|
||||||
|
@mkdir -p $(RELEASE_DIR)/vendor
|
||||||
|
@cp -r vendor/macos-arm64 $(RELEASE_DIR)/vendor/
|
||||||
|
@cp -r vendor/linux-x86_64 $(RELEASE_DIR)/vendor/
|
||||||
|
@echo "✅ Vendor wheels copied"
|
||||||
|
|
||||||
|
.PHONY: release
|
||||||
|
release: release-checksums
|
||||||
|
@echo ""
|
||||||
|
@echo "🎉 Release $(VERSION) binaries ready!"
|
||||||
|
@echo ""
|
||||||
|
@if [ -d ".venv312" ]; then \
|
||||||
|
echo "📦 Building vendor wheels..."; \
|
||||||
|
$(MAKE) release-vendors; \
|
||||||
|
else \
|
||||||
|
echo "⚠️ Skipping vendor wheels (.venv312 not found)"; \
|
||||||
|
echo " To include vendors: python3.12 -m venv .venv312 && make release-vendors"; \
|
||||||
|
fi
|
||||||
|
@echo ""
|
||||||
|
@echo "Contents:"
|
||||||
|
@ls -lh $(RELEASE_DIR)/ | tail -n +2
|
||||||
|
@echo ""
|
||||||
|
@cat $(RELEASE_DIR)/SHA256SUMS
|
||||||
|
@echo ""
|
||||||
|
@echo "Next steps:"
|
||||||
|
@echo " 1. Test: make release-test"
|
||||||
|
@echo " 2. Tag: git tag -a $(VERSION) -m 'Release $(VERSION)'"
|
||||||
|
@echo " 3. Push: git push origin $(VERSION)"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.PHONY: release-test
|
||||||
|
release-test:
|
||||||
|
@echo "🧪 Testing release binaries..."
|
||||||
|
@echo ""
|
||||||
|
@echo "Testing macOS binary:"
|
||||||
|
@$(RELEASE_DIR)/pyhdwallet-macos-arm64 test || echo "⚠️ macOS binary test skipped (wrong platform)"
|
||||||
|
@echo ""
|
||||||
|
@echo "Testing Linux binary (via Docker):"
|
||||||
|
@docker run --rm --platform linux/amd64 \
|
||||||
|
-v "$$PWD/$(RELEASE_DIR)":/binaries \
|
||||||
|
ubuntu:22.04 \
|
||||||
|
/binaries/pyhdwallet-linux-x86_64 test
|
||||||
|
|
||||||
|
.PHONY: clean-release
|
||||||
|
clean-release:
|
||||||
|
@echo "🧹 Cleaning release artifacts..."
|
||||||
|
@rm -rf releases/
|
||||||
|
@echo "✅ Release artifacts cleaned"
|
||||||
|
|||||||
71
README.md
71
README.md
@@ -189,6 +189,77 @@ For maximum security when generating production wallets:
|
|||||||
|
|
||||||
See [playbook.md](playbook.md) for detailed air-gapped procedures.
|
See [playbook.md](playbook.md) for detailed air-gapped procedures.
|
||||||
|
|
||||||
|
## 🖥️ Platform Compatibility
|
||||||
|
|
||||||
|
### Makefile Targets
|
||||||
|
|
||||||
|
| Target | macOS | Linux | Notes |
|
||||||
|
| -------- | ------- | ------- | ------- |
|
||||||
|
| `make install` | ✅ | ✅ | Create venv + install deps |
|
||||||
|
| `make test` | ✅ | ✅ | Run test suite |
|
||||||
|
| `make vendor-macos` | ✅ | ❌ | Requires native macOS ARM64 |
|
||||||
|
| `make vendor-linux` | ✅ | ✅ | Uses Docker (any OS) |
|
||||||
|
| `make vendor-all` | ✅ | ⚠️ | Needs macOS for both platforms |
|
||||||
|
| `make binary` | ✅ | ❌ | Requires `build_binary.sh` |
|
||||||
|
| `make binary-linux` | ✅ | ✅ | Uses Docker (any OS) |
|
||||||
|
| `make build-image` | ✅ | ✅ | Docker required |
|
||||||
|
|
||||||
|
### Quick Commands by Platform
|
||||||
|
|
||||||
|
**macOS:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make info # Show platform info
|
||||||
|
make vendor-current # Build for current platform only
|
||||||
|
make binary-current # Build binary for current platform
|
||||||
|
```
|
||||||
|
|
||||||
|
**Linux:***
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make info # Show platform info
|
||||||
|
make vendor-linux # Build Linux wheels
|
||||||
|
make binary-linux # Build Linux binary
|
||||||
|
```
|
||||||
|
|
||||||
|
***Cross-platform (requires Docker):***
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make vendor-linux # Works on any OS with Docker
|
||||||
|
make binary-linux # Works on any OS with Docker
|
||||||
|
```
|
||||||
|
|
||||||
|
## Quick Test
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Check platform detection
|
||||||
|
make info
|
||||||
|
|
||||||
|
# Build for your current platform
|
||||||
|
make vendor-current
|
||||||
|
|
||||||
|
# Or just the targets you need
|
||||||
|
make install # Works everywhere
|
||||||
|
make test # Works everywhere
|
||||||
|
|
||||||
|
|
||||||
|
## 📦 Binary Distribution
|
||||||
|
|
||||||
|
Pre-built standalone binaries are available for convenience (no Python required):
|
||||||
|
|
||||||
|
### Download Binary
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# macOS ARM64
|
||||||
|
curl -LO https://github.com/user/hdwalletpy/releases/download/v1.1.0/pyhdwallet-macos-arm64
|
||||||
|
chmod +x pyhdwallet-macos-arm64
|
||||||
|
./pyhdwallet-macos-arm64 test
|
||||||
|
|
||||||
|
# Linux x86_64
|
||||||
|
curl -LO https://github.com/user/hdwalletpy/releases/download/v1.1.0/pyhdwallet-linux
|
||||||
|
chmod +x pyhdwallet-linux
|
||||||
|
./pyhdwallet-linux test
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🆕 What's New in v1.1.0
|
## 🆕 What's New in v1.1.0
|
||||||
|
|||||||
76
build_binary.sh
Executable file
76
build_binary.sh
Executable file
@@ -0,0 +1,76 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "🔨 Building pyhdwallet standalone binary..."
|
||||||
|
|
||||||
|
# Check venv more strictly
|
||||||
|
if [ -z "$VIRTUAL_ENV" ] || [[ "$VIRTUAL_ENV" != *"hdwalletpy"* ]]; then
|
||||||
|
echo "❌ Not in virtual environment!"
|
||||||
|
echo ""
|
||||||
|
echo "Activate it first:"
|
||||||
|
echo " source .venv/bin/activate"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Install PyInstaller if needed
|
||||||
|
if ! pip show pyinstaller &>/dev/null; then
|
||||||
|
echo "📦 Installing PyInstaller..."
|
||||||
|
pip install pyinstaller
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create patched version for frozen builds
|
||||||
|
echo "📝 Creating frozen-compatible version..."
|
||||||
|
python3 << 'PATCH'
|
||||||
|
with open('src/pyhdwallet.py', 'r') as f:
|
||||||
|
content = f.read()
|
||||||
|
|
||||||
|
# Patch _require() for PyInstaller
|
||||||
|
content = content.replace(
|
||||||
|
"""def _require(mod: str, pkg: str) -> None:
|
||||||
|
try:
|
||||||
|
__import__(mod)""",
|
||||||
|
"""def _require(mod: str, pkg: str) -> None:
|
||||||
|
# Skip check in PyInstaller frozen executable
|
||||||
|
if getattr(sys, 'frozen', False):
|
||||||
|
return
|
||||||
|
try:
|
||||||
|
__import__(mod)"""
|
||||||
|
)
|
||||||
|
|
||||||
|
with open('src/pyhdwallet_frozen.py', 'w') as f:
|
||||||
|
f.write(content)
|
||||||
|
PATCH
|
||||||
|
|
||||||
|
# Clean previous builds
|
||||||
|
rm -rf build/ dist/ *.spec
|
||||||
|
|
||||||
|
# Build
|
||||||
|
echo "🔧 Building with PyInstaller..."
|
||||||
|
pyinstaller --onefile \
|
||||||
|
--name pyhdwallet \
|
||||||
|
--clean \
|
||||||
|
--collect-all bip_utils \
|
||||||
|
--collect-all pgpy \
|
||||||
|
--collect-all nacl \
|
||||||
|
--collect-all pyzipper \
|
||||||
|
--collect-all coincurve \
|
||||||
|
--copy-metadata coincurve \
|
||||||
|
src/pyhdwallet_frozen.py
|
||||||
|
|
||||||
|
# Clean up temp file
|
||||||
|
rm src/pyhdwallet_frozen.py
|
||||||
|
|
||||||
|
# Test
|
||||||
|
echo ""
|
||||||
|
echo "✅ Testing binary..."
|
||||||
|
./dist/pyhdwallet test
|
||||||
|
|
||||||
|
# Show results
|
||||||
|
echo ""
|
||||||
|
echo "🎉 Binary created successfully!"
|
||||||
|
echo " Location: dist/pyhdwallet"
|
||||||
|
echo " Size: $(du -h dist/pyhdwallet | cut -f1)"
|
||||||
|
echo ""
|
||||||
|
echo "Quick test:"
|
||||||
|
echo " ./dist/pyhdwallet gen --help"
|
||||||
|
echo " ./dist/pyhdwallet gen-child --help"
|
||||||
70
build_binary_linux.sh
Executable file
70
build_binary_linux.sh
Executable file
@@ -0,0 +1,70 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "🐧 Building Linux x86_64 binary via Docker (Ubuntu 22.04 base)..."
|
||||||
|
|
||||||
|
mkdir -p dist
|
||||||
|
|
||||||
|
docker run --rm \
|
||||||
|
--platform linux/amd64 \
|
||||||
|
-v "$PWD":/work \
|
||||||
|
-w /work \
|
||||||
|
ubuntu:22.04 \
|
||||||
|
bash -c '
|
||||||
|
set -e
|
||||||
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
# Install Python 3.12 and build tools
|
||||||
|
apt-get update -qq
|
||||||
|
apt-get install -y -qq software-properties-common
|
||||||
|
add-apt-repository -y ppa:deadsnakes/ppa
|
||||||
|
apt-get update -qq
|
||||||
|
apt-get install -y -qq \
|
||||||
|
python3.12 \
|
||||||
|
python3.12-venv \
|
||||||
|
python3.12-dev \
|
||||||
|
binutils \
|
||||||
|
gcc \
|
||||||
|
g++ \
|
||||||
|
make \
|
||||||
|
libffi-dev
|
||||||
|
|
||||||
|
# Install pip for Python 3.12
|
||||||
|
python3.12 -m ensurepip
|
||||||
|
python3.12 -m pip install -q --upgrade pip
|
||||||
|
python3.12 -m pip install -q pyinstaller
|
||||||
|
python3.12 -m pip install -q -r requirements.txt
|
||||||
|
|
||||||
|
echo "📝 Patching for frozen build..."
|
||||||
|
python3.12 -c "
|
||||||
|
import sys
|
||||||
|
with open(\"src/pyhdwallet.py\", \"r\") as f:
|
||||||
|
content = f.read()
|
||||||
|
content = content.replace(
|
||||||
|
\"def _require(mod: str, pkg: str) -> None:\\n try:\",
|
||||||
|
\"def _require(mod: str, pkg: str) -> None:\\n import sys\\n if getattr(sys, \\\"frozen\\\", False): return\\n try:\"
|
||||||
|
)
|
||||||
|
with open(\"/tmp/pyhdwallet_frozen.py\", \"w\") as f:
|
||||||
|
f.write(content)
|
||||||
|
"
|
||||||
|
|
||||||
|
echo "🔧 Building with PyInstaller..."
|
||||||
|
python3.12 -m PyInstaller --onefile --name pyhdwallet-linux --clean \
|
||||||
|
--collect-all bip_utils \
|
||||||
|
--collect-all pgpy \
|
||||||
|
--collect-all nacl \
|
||||||
|
--collect-all pyzipper \
|
||||||
|
--collect-all coincurve \
|
||||||
|
--copy-metadata coincurve \
|
||||||
|
/tmp/pyhdwallet_frozen.py
|
||||||
|
|
||||||
|
echo "✅ Linux binary created (compatible with Ubuntu 22.04+)"
|
||||||
|
'
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Binary location: dist/pyhdwallet-linux"
|
||||||
|
echo "Size: $(du -h dist/pyhdwallet-linux 2>/dev/null | cut -f1 || echo 'N/A')"
|
||||||
|
echo "GLIBC: $(docker run --rm --platform linux/amd64 -v "$PWD/dist":/b ubuntu:22.04 ldd /b/pyhdwallet-linux | grep libc.so || echo 'static')"
|
||||||
|
echo ""
|
||||||
|
echo "Test it:"
|
||||||
|
echo " docker run --rm --platform linux/amd64 -v \"\$PWD/dist\":/bin ubuntu:22.04 /bin/pyhdwallet-linux test"
|
||||||
@@ -42,7 +42,24 @@ import warnings
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Any, Dict, List, Optional, Tuple
|
from typing import Any, Dict, List, Optional, Tuple
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
def _is_frozen():
|
||||||
|
"""Check if running as PyInstaller bundle"""
|
||||||
|
return getattr(sys, 'frozen', False) and hasattr(sys, '_MEIPASS')
|
||||||
|
|
||||||
|
def _require(mod: str, pkg: str) -> None:
|
||||||
|
# In frozen executable, skip the check (assume deps are bundled)
|
||||||
|
if _is_frozen():
|
||||||
|
return
|
||||||
|
|
||||||
|
try:
|
||||||
|
__import__(mod)
|
||||||
|
except ImportError:
|
||||||
|
print(f"❌ Missing dependency: {pkg}", file=sys.stderr)
|
||||||
|
print(f"Install with: pip install {pkg}", file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Dependency checks
|
# Dependency checks
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
|
|||||||
43
vendor/PROVENANCE.md
vendored
43
vendor/PROVENANCE.md
vendored
@@ -1,43 +0,0 @@
|
|||||||
# Dependency Provenance
|
|
||||||
|
|
||||||
All wheels generated on: 2026-01-07 17:06:51 UTC
|
|
||||||
Python version: 3.12
|
|
||||||
Build machine: Darwin arm64
|
|
||||||
Docker used: Yes (python:3.12-slim)
|
|
||||||
|
|
||||||
## Platforms
|
|
||||||
- macOS ARM64: Built using .venv312 (Python 3.12)
|
|
||||||
- Linux x86_64: Built using Docker python:3.12-slim
|
|
||||||
|
|
||||||
## Package Versions
|
|
||||||
base58==2.1.1
|
|
||||||
bip_utils==2.10.0
|
|
||||||
build==1.3.0
|
|
||||||
cbor2==5.8.0
|
|
||||||
cffi==2.0.0
|
|
||||||
click==8.3.1
|
|
||||||
coincurve==21.0.0
|
|
||||||
crcmod==1.7
|
|
||||||
cryptography==46.0.3
|
|
||||||
ecdsa==0.19.1
|
|
||||||
ed25519-blake2b==1.4.1
|
|
||||||
iniconfig==2.3.0
|
|
||||||
packaging==25.0
|
|
||||||
PGPy==0.6.0
|
|
||||||
pip-chill==1.0.3
|
|
||||||
pip-tools==7.5.2
|
|
||||||
pluggy==1.6.0
|
|
||||||
py-sr25519-bindings==0.2.3
|
|
||||||
pyasn1==0.6.1
|
|
||||||
pycparser==2.23
|
|
||||||
|
|
||||||
## Integrity Verification
|
|
||||||
Each platform directory contains SHA256SUMS for verification:
|
|
||||||
```bash
|
|
||||||
cd vendor/linux-x86_64
|
|
||||||
shasum -a 256 -c SHA256SUMS
|
|
||||||
```
|
|
||||||
|
|
||||||
Last updated: 2026-01-07
|
|
||||||
Built by: LC mac <leochan@hkjin.com>
|
|
||||||
Commit: 2807982
|
|
||||||
31
vendor/linux-aarch64/SHA256SUMS
vendored
31
vendor/linux-aarch64/SHA256SUMS
vendored
@@ -1,31 +0,0 @@
|
|||||||
11a36f4d3ce51dfc1043f3218591ac4eb1ceb172919cebe05b52a5bcc8d245c2 base58-2.1.1-py3-none-any.whl
|
|
||||||
33792674bda552a071a539b6590b2986aa8c08d0c9c30c2566d7cb323173310d bip_utils-2.10.0-py3-none-any.whl
|
|
||||||
7145f0b5061ba90a1500d60bd1b13ca0a8a4cebdd0cc16ed8adf1c0e739f43b4 build-1.3.0-py3-none-any.whl
|
|
||||||
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
|
|
||||||
981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6 click-8.3.1-py3-none-any.whl
|
|
||||||
5a366c314df7217e3357bb8c7d2cda540b0bce180705f7a0ce2d1d9e28f62ad4 coincurve-21.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
|
|
||||||
6a6b11d6c42a450359f0d7f2312cb1fe69493ae8314dc3f6674b95cefed469a2 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
|
|
||||||
75c8d36691348abdd395b22f2c2ac5dd5c153c653550e6d18da5b0e433d7ce84 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
|
|
||||||
8d6f2b1a217ccefd933c7ec8bf69927e90d4630093d0af2404fe4e33703dcf0f pgpy-0.6.0-py3-none-any.whl
|
|
||||||
9655943313a94722b7774661c21049070f6bbb0a1516bf02f7c8d5d9201514cd pip-25.3-py3-none-any.whl
|
|
||||||
452a38edbcdfc333301c438c26ba00a0762d2034fe26a235d8587134453ccdb1 pip_chill-1.0.3-py2.py3-none-any.whl
|
|
||||||
2fe16db727bbe5bf28765aeb581e792e61be51fc275545ef6725374ad720a1ce pip_tools-7.5.2-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
|
|
||||||
e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934 pycparser-2.23-py3-none-any.whl
|
|
||||||
67bd81fcbe34f43ad9422ee8fd4843c8e7198dd88dd3d40e6de42ee65fbe1490 pycryptodome-3.23.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
|
|
||||||
43c446e2ba8df8889e0e16f02211c25b4934898384c1ec1ec04d7889c0333587 pycryptodomex-3.23.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
|
|
||||||
86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b pygments-2.19.2-py3-none-any.whl
|
|
||||||
26bfcd00dcf2cf160f122186af731ae30ab120c18e8375684ec2670dccd28130 pynacl-1.6.2-cp38-abi3-manylinux_2_34_aarch64.whl
|
|
||||||
9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913 pyproject_hooks-1.2.0-py3-none-any.whl
|
|
||||||
711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b pytest-9.0.2-py3-none-any.whl
|
|
||||||
6d097f465bfa47796b1494e12ea65d1478107d38e13bc56f6e58eedc4f6c1a87 pyzipper-0.3.6-py2.py3-none-any.whl
|
|
||||||
062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922 setuptools-80.9.0-py3-none-any.whl
|
|
||||||
4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 six-1.17.0-py2.py3-none-any.whl
|
|
||||||
708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248 wheel-0.45.1-py3-none-any.whl
|
|
||||||
BIN
vendor/linux-aarch64/base58-2.1.1-py3-none-any.whl
vendored
BIN
vendor/linux-aarch64/base58-2.1.1-py3-none-any.whl
vendored
Binary file not shown.
Binary file not shown.
BIN
vendor/linux-aarch64/build-1.3.0-py3-none-any.whl
vendored
BIN
vendor/linux-aarch64/build-1.3.0-py3-none-any.whl
vendored
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
vendor/linux-aarch64/click-8.3.1-py3-none-any.whl
vendored
BIN
vendor/linux-aarch64/click-8.3.1-py3-none-any.whl
vendored
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
vendor/linux-aarch64/packaging-25.0-py3-none-any.whl
vendored
BIN
vendor/linux-aarch64/packaging-25.0-py3-none-any.whl
vendored
Binary file not shown.
BIN
vendor/linux-aarch64/pgpy-0.6.0-py3-none-any.whl
vendored
BIN
vendor/linux-aarch64/pgpy-0.6.0-py3-none-any.whl
vendored
Binary file not shown.
BIN
vendor/linux-aarch64/pip-25.3-py3-none-any.whl
vendored
BIN
vendor/linux-aarch64/pip-25.3-py3-none-any.whl
vendored
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
vendor/linux-aarch64/pluggy-1.6.0-py3-none-any.whl
vendored
BIN
vendor/linux-aarch64/pluggy-1.6.0-py3-none-any.whl
vendored
Binary file not shown.
Binary file not shown.
BIN
vendor/linux-aarch64/pyasn1-0.6.1-py3-none-any.whl
vendored
BIN
vendor/linux-aarch64/pyasn1-0.6.1-py3-none-any.whl
vendored
Binary file not shown.
BIN
vendor/linux-aarch64/pycparser-2.23-py3-none-any.whl
vendored
BIN
vendor/linux-aarch64/pycparser-2.23-py3-none-any.whl
vendored
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
vendor/linux-aarch64/pytest-9.0.2-py3-none-any.whl
vendored
BIN
vendor/linux-aarch64/pytest-9.0.2-py3-none-any.whl
vendored
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
vendor/linux-aarch64/six-1.17.0-py2.py3-none-any.whl
vendored
BIN
vendor/linux-aarch64/six-1.17.0-py2.py3-none-any.whl
vendored
Binary file not shown.
BIN
vendor/linux-aarch64/wheel-0.45.1-py3-none-any.whl
vendored
BIN
vendor/linux-aarch64/wheel-0.45.1-py3-none-any.whl
vendored
Binary file not shown.
18
vendor/linux-x86_64/SHA256SUMS
vendored
18
vendor/linux-x86_64/SHA256SUMS
vendored
@@ -1,18 +0,0 @@
|
|||||||
11a36f4d3ce51dfc1043f3218591ac4eb1ceb172919cebe05b52a5bcc8d245c2 base58-2.1.1-py3-none-any.whl
|
|
||||||
33792674bda552a071a539b6590b2986aa8c08d0c9c30c2566d7cb323173310d bip_utils-2.10.0-py3-none-any.whl
|
|
||||||
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
|
|
||||||
23db98c9513c4c9c49a53425df199750d97ef99f2967af79030abb49ec89f509 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
|
|
||||||
3c67ff3ecd5eff56bf7c19d3dc77cab1e28721502a7c3d35f1a734b356b5c2c3 ed25519_blake2b-1.4.1-cp312-cp312-linux_x86_64.whl
|
|
||||||
b0fe3f6bfb205b15c13082e60cb6fe12c93bf79951213c6e74dd118cd911200a 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
|
|
||||||
c8987bd3307a39bc03df5c8e0e3d8be0c4c3518b7f044b0f4c15d1aa78f52575 pycryptodome-3.23.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
|
|
||||||
f489c4765093fb60e2edafdf223397bc716491b2b69fe74367b70d6999257a5c pycryptodomex-3.23.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
|
|
||||||
c8a231e36ec2cab018c4ad4358c386e36eede0319a0c41fed24f840b1dac59f6 pynacl-1.6.2-cp38-abi3-manylinux_2_34_x86_64.whl
|
|
||||||
6d097f465bfa47796b1494e12ea65d1478107d38e13bc56f6e58eedc4f6c1a87 pyzipper-0.3.6-py2.py3-none-any.whl
|
|
||||||
4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 six-1.17.0-py2.py3-none-any.whl
|
|
||||||
BIN
vendor/linux-x86_64/base58-2.1.1-py3-none-any.whl
vendored
BIN
vendor/linux-x86_64/base58-2.1.1-py3-none-any.whl
vendored
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
vendor/linux-x86_64/pgpy-0.6.0-py3-none-any.whl
vendored
BIN
vendor/linux-x86_64/pgpy-0.6.0-py3-none-any.whl
vendored
Binary file not shown.
Binary file not shown.
BIN
vendor/linux-x86_64/pyasn1-0.6.1-py3-none-any.whl
vendored
BIN
vendor/linux-x86_64/pyasn1-0.6.1-py3-none-any.whl
vendored
Binary file not shown.
BIN
vendor/linux-x86_64/pycparser-2.23-py3-none-any.whl
vendored
BIN
vendor/linux-x86_64/pycparser-2.23-py3-none-any.whl
vendored
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
vendor/linux-x86_64/six-1.17.0-py2.py3-none-any.whl
vendored
BIN
vendor/linux-x86_64/six-1.17.0-py2.py3-none-any.whl
vendored
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
vendor/macos-arm64-docker/pip-25.3-py3-none-any.whl
vendored
BIN
vendor/macos-arm64-docker/pip-25.3-py3-none-any.whl
vendored
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
vendor/macos-arm64/PGPy-0.6.0.tar.gz
vendored
BIN
vendor/macos-arm64/PGPy-0.6.0.tar.gz
vendored
Binary file not shown.
28
vendor/macos-arm64/SHA256SUMS
vendored
28
vendor/macos-arm64/SHA256SUMS
vendored
@@ -1,28 +0,0 @@
|
|||||||
11a36f4d3ce51dfc1043f3218591ac4eb1ceb172919cebe05b52a5bcc8d245c2 base58-2.1.1-py3-none-any.whl
|
|
||||||
33792674bda552a071a539b6590b2986aa8c08d0c9c30c2566d7cb323173310d bip_utils-2.10.0-py3-none-any.whl
|
|
||||||
7145f0b5061ba90a1500d60bd1b13ca0a8a4cebdd0cc16ed8adf1c0e739f43b4 build-1.3.0-py3-none-any.whl
|
|
||||||
4b3f91fa699a5ce22470e973601c62dd9d55dc3ca20ee446516ac075fcab27c9 cbor2-5.8.0-cp312-cp312-macosx_11_0_arm64.whl
|
|
||||||
8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl
|
|
||||||
981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6 click-8.3.1-py3-none-any.whl
|
|
||||||
1cb1cd19fb0be22e68ecb60ad950b41f18b9b02eebeffaac9391dc31f74f08f2 coincurve-21.0.0-cp312-cp312-macosx_11_0_arm64.whl
|
|
||||||
109d4ddfadf17e8e7779c39f9b18111a09efb969a301a31e987416a0191ed93a cryptography-46.0.3-cp311-abi3-macosx_10_9_universal2.whl
|
|
||||||
30638e27cf77b7e15c4c4cc1973720149e1033827cfd00661ca5c8cc0cdb24c3 ecdsa-0.19.1-py2.py3-none-any.whl
|
|
||||||
f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12 iniconfig-2.3.0-py3-none-any.whl
|
|
||||||
29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484 packaging-25.0-py3-none-any.whl
|
|
||||||
452a38edbcdfc333301c438c26ba00a0762d2034fe26a235d8587134453ccdb1 pip_chill-1.0.3-py2.py3-none-any.whl
|
|
||||||
2fe16db727bbe5bf28765aeb581e792e61be51fc275545ef6725374ad720a1ce pip_tools-7.5.2-py3-none-any.whl
|
|
||||||
9655943313a94722b7774661c21049070f6bbb0a1516bf02f7c8d5d9201514cd pip-25.3-py3-none-any.whl
|
|
||||||
e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746 pluggy-1.6.0-py3-none-any.whl
|
|
||||||
4443adf871e224493c4ee4c06be205a10ea649a781132af883f6638fd7acc9d7 py_sr25519_bindings-0.2.3-cp312-cp312-macosx_11_0_arm64.whl
|
|
||||||
0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629 pyasn1-0.6.1-py3-none-any.whl
|
|
||||||
e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934 pycparser-2.23-py3-none-any.whl
|
|
||||||
187058ab80b3281b1de11c2e6842a357a1f71b42cb1e15bce373f3d238135c27 pycryptodome-3.23.0-cp37-abi3-macosx_10_9_universal2.whl
|
|
||||||
06698f957fe1ab229a99ba2defeeae1c09af185baa909a31a5d1f9d42b1aaed6 pycryptodomex-3.23.0-cp37-abi3-macosx_10_9_universal2.whl
|
|
||||||
86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b pygments-2.19.2-py3-none-any.whl
|
|
||||||
c949ea47e4206af7c8f604b8278093b674f7c79ed0d4719cc836902bf4517465 pynacl-1.6.2-cp38-abi3-macosx_10_10_universal2.whl
|
|
||||||
9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913 pyproject_hooks-1.2.0-py3-none-any.whl
|
|
||||||
711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b pytest-9.0.2-py3-none-any.whl
|
|
||||||
6d097f465bfa47796b1494e12ea65d1478107d38e13bc56f6e58eedc4f6c1a87 pyzipper-0.3.6-py2.py3-none-any.whl
|
|
||||||
062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922 setuptools-80.9.0-py3-none-any.whl
|
|
||||||
4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 six-1.17.0-py2.py3-none-any.whl
|
|
||||||
708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248 wheel-0.45.1-py3-none-any.whl
|
|
||||||
BIN
vendor/macos-arm64/base58-2.1.1-py3-none-any.whl
vendored
BIN
vendor/macos-arm64/base58-2.1.1-py3-none-any.whl
vendored
Binary file not shown.
BIN
vendor/macos-arm64/bip_utils-2.10.0-py3-none-any.whl
vendored
BIN
vendor/macos-arm64/bip_utils-2.10.0-py3-none-any.whl
vendored
Binary file not shown.
BIN
vendor/macos-arm64/build-1.3.0-py3-none-any.whl
vendored
BIN
vendor/macos-arm64/build-1.3.0-py3-none-any.whl
vendored
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
vendor/macos-arm64/click-8.3.1-py3-none-any.whl
vendored
BIN
vendor/macos-arm64/click-8.3.1-py3-none-any.whl
vendored
Binary file not shown.
Binary file not shown.
BIN
vendor/macos-arm64/crcmod-1.7.tar.gz
vendored
BIN
vendor/macos-arm64/crcmod-1.7.tar.gz
vendored
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user