modify the vendor folder aarch64

This commit is contained in:
LC mac
2026-01-12 17:05:27 +08:00
parent 535e3648fd
commit 238733d021
2 changed files with 122 additions and 28 deletions

110
Makefile
View File

@@ -24,6 +24,10 @@ else
endif endif
VENDOR_DIR := vendor/$(PLATFORM)-$(ARCH) VENDOR_DIR := vendor/$(PLATFORM)-$(ARCH)
# Vendor directories for air-gapped deployment
VENDOR_MACOS := vendor/macos-arm64
VENDOR_LINUX_X86 := vendor/linux-x86_64
VENDOR_LINUX_ARM := vendor/linux-aarch64
# ---------- Config ---------- # ---------- Config ----------
IMAGE := hdwallet-build:3.12 IMAGE := hdwallet-build:3.12
@@ -45,9 +49,12 @@ help:
@echo "📦 Vendoring (for offline/air-gapped use):" @echo "📦 Vendoring (for offline/air-gapped use):"
@echo " make vendor-macos - Build macOS ARM64 wheels (requires macOS native)" @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-linux - Build Linux x86_64 wheels (Docker - any OS)"
@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-dev - Build Linux x86_64 dev wheels (includes pytest)"
@echo " make vendor-all - Build runtime wheels for both platforms" @echo " make vendor-linux-arm-dev - Build Linux ARM64 dev wheels (includes pytest)"
@echo " make vendor-all-dev - Build runtime + dev wheels for all platforms" @echo " make vendor-all - Build runtime wheels for ALL platforms"
@echo " make vendor-all-dev - Build runtime + dev wheels for Linux platforms"
@echo " make verify-vendor - Test offline installation from vendor/" @echo " make verify-vendor - Test offline installation from vendor/"
@echo "" @echo ""
@echo "🔨 Binary Distribution:" @echo "🔨 Binary Distribution:"
@@ -127,6 +134,70 @@ vendor-linux: requirements.txt
" "
@echo "✓ Linux x86_64 wheels: $(VENDOR_LINUX)/" @echo "✓ Linux x86_64 wheels: $(VENDOR_LINUX)/"
# Add after vendor-linux target:
.PHONY: vendor-linux-arm
vendor-linux-arm: requirements.txt
@echo "Building Linux ARM64/aarch64 wheels (Docker)..."
mkdir -p $(VENDOR_LINUX_ARM)
docker run --rm \
--platform linux/arm64 \
-v "$$PWD":$(WORKDIR) \
-w $(WORKDIR) \
python:3.12-slim \
bash -c " \
set -e && \
apt-get update -qq && apt-get install -y -qq gcc g++ make libffi-dev && \
pip install --upgrade pip && \
pip download --dest $(VENDOR_LINUX_ARM) -r requirements.txt && \
pip wheel --wheel-dir $(VENDOR_LINUX_ARM) --no-deps $(VENDOR_LINUX_ARM)/*.tar.gz 2>/dev/null || true && \
rm -f $(VENDOR_LINUX_ARM)/*.tar.gz && \
cd $(VENDOR_LINUX_ARM) && sha256sum *.whl > SHA256SUMS \
"
@echo "✓ Linux ARM64 wheels: $(VENDOR_LINUX_ARM)/"
.PHONY: vendor-linux-arm-dev
vendor-linux-arm-dev: requirements-dev.txt
@echo "Building Linux ARM64 dev wheels (Docker)..."
mkdir -p $(VENDOR_LINUX_ARM)-dev
docker run --rm \
--platform linux/arm64 \
-v "$$PWD":$(WORKDIR) \
-w $(WORKDIR) \
python:3.12-slim \
bash -c " \
set -e && \
apt-get update -qq && apt-get install -y -qq gcc g++ make libffi-dev && \
pip install --upgrade pip && \
pip download --dest $(VENDOR_LINUX_ARM)-dev -r requirements-dev.txt && \
pip wheel --wheel-dir $(VENDOR_LINUX_ARM)-dev --no-deps $(VENDOR_LINUX_ARM)-dev/*.tar.gz 2>/dev/null || true && \
rm -f $(VENDOR_LINUX_ARM)-dev/*.tar.gz && \
cd $(VENDOR_LINUX_ARM)-dev && sha256sum *.whl > SHA256SUMS \
"
@echo "✓ Linux ARM64 dev wheels: $(VENDOR_LINUX_ARM)-dev/"
# Update vendor-all:
.PHONY: vendor-all
vendor-all: vendor-macos vendor-linux vendor-linux-arm
@echo ""
@echo "✓ All platforms vendored (runtime only):"
@echo " macOS ARM64: $(VENDOR_MACOS)/ ($$(ls $(VENDOR_MACOS)/*.whl 2>/dev/null | wc -l | xargs) wheels)"
@echo " Linux x86_64: $(VENDOR_LINUX_X86)/ ($$(ls $(VENDOR_LINUX_X86)/*.whl 2>/dev/null | wc -l | xargs) wheels)"
@echo " Linux aarch64: $(VENDOR_LINUX_ARM)/ ($$(ls $(VENDOR_LINUX_ARM)/*.whl 2>/dev/null | wc -l | xargs) wheels)"
@echo ""
@echo "Commit with: git add vendor/ && git commit -m 'vendor: update wheels'"
.PHONY: vendor-all-dev
vendor-all-dev: vendor-linux vendor-linux-dev vendor-linux-arm vendor-linux-arm-dev
@echo ""
@echo "✓ All platform wheels (runtime + dev):"
@echo " Linux x86_64 (runtime): $(VENDOR_LINUX_X86)/"
@echo " Linux x86_64 (dev): $(VENDOR_LINUX_X86)-dev/"
@echo " Linux aarch64 (runtime): $(VENDOR_LINUX_ARM)/"
@echo " Linux aarch64 (dev): $(VENDOR_LINUX_ARM)-dev/"
@echo ""
@echo "For macOS dev wheels, run on native macOS"
.PHONY: vendor-linux-dev .PHONY: vendor-linux-dev
vendor-linux-dev: requirements-dev.txt vendor-linux-dev: requirements-dev.txt
@echo "Building Linux x86_64 dev wheels (Docker)..." @echo "Building Linux x86_64 dev wheels (Docker)..."
@@ -147,26 +218,6 @@ vendor-linux-dev: requirements-dev.txt
" "
@echo "✓ Linux x86_64 dev wheels: $(VENDOR_LINUX)-dev/" @echo "✓ Linux x86_64 dev wheels: $(VENDOR_LINUX)-dev/"
.PHONY: vendor-all
vendor-all: vendor-macos vendor-linux
@echo ""
@echo "✓ All platforms vendored (runtime only):"
@echo " macOS ARM64: $(VENDOR_MACOS)/ ($$(ls $(VENDOR_MACOS)/*.whl 2>/dev/null | wc -l | xargs) wheels)"
@echo " Linux x86_64: $(VENDOR_LINUX)/ ($$(ls $(VENDOR_LINUX)/*.whl 2>/dev/null | wc -l | xargs) wheels)"
@echo ""
@echo "Commit with: git add vendor/ && git commit -m 'vendor: update wheels'"
.PHONY: vendor-all-dev
vendor-all-dev: vendor-linux vendor-linux-dev
@echo ""
@echo "✓ All platform wheels (runtime + dev):"
@echo " Linux x86_64 (runtime): $(VENDOR_LINUX)/ ($$(ls $(VENDOR_LINUX)/*.whl 2>/dev/null | wc -l | xargs) wheels)"
@echo " Linux x86_64 (dev): $(VENDOR_LINUX)-dev/ ($$(ls $(VENDOR_LINUX)-dev/*.whl 2>/dev/null | wc -l | xargs) wheels)"
@echo ""
@echo "For macOS dev wheels, run on native macOS:"
@echo " python3.12 -m venv .venv312 && source .venv312/bin/activate"
@echo " pip download --dest vendor/macos-arm64-dev -r requirements-dev.txt"
.PHONY: verify-vendor .PHONY: verify-vendor
verify-vendor: verify-vendor:
@echo "Testing offline installation from vendor/..." @echo "Testing offline installation from vendor/..."
@@ -377,3 +428,18 @@ clean-release:
@echo "🧹 Cleaning release artifacts..." @echo "🧹 Cleaning release artifacts..."
@rm -rf releases/ @rm -rf releases/
@echo "✅ Release artifacts cleaned" @echo "✅ Release artifacts cleaned"
.PHONY: clean-vendor
clean-vendor:
@echo "Removing all vendor wheels..."
rm -rf vendor/
@echo "✓ Vendor directory cleaned"
.PHONY: clean
clean: clean-vendor
@echo "Removing virtual environments..."
rm -rf .venv
@echo "Removing Python cache..."
find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
find . -type f -name "*.pyc" -delete
@echo "✓ Cleanup complete"

View File

@@ -10,7 +10,19 @@ fi
# Detect platform # Detect platform
if [[ "$OSTYPE" == "linux-gnu"* ]]; then if [[ "$OSTYPE" == "linux-gnu"* ]]; then
PLATFORM="linux-x86_64" ARCH=$(uname -m)
case "$ARCH" in
x86_64)
PLATFORM="linux-x86_64"
;;
aarch64|arm64)
PLATFORM="linux-aarch64"
;;
*)
echo "ERROR: Unsupported Linux architecture: $ARCH"
exit 1
;;
esac
elif [[ "$OSTYPE" == "darwin"* ]]; then elif [[ "$OSTYPE" == "darwin"* ]]; then
ARCH=$(uname -m) ARCH=$(uname -m)
if [[ "$ARCH" == "arm64" ]]; then if [[ "$ARCH" == "arm64" ]]; then
@@ -24,7 +36,7 @@ else
exit 1 exit 1
fi fi
echo "Detected platform: $PLATFORM" echo "Detected platform: $PLATFORM ($(uname -m))"
# Check if vendor directory exists # Check if vendor directory exists
VENDOR_PATH="vendor/$PLATFORM" VENDOR_PATH="vendor/$PLATFORM"
@@ -34,10 +46,26 @@ fi
if [ ! -d "$VENDOR_PATH" ]; then if [ ! -d "$VENDOR_PATH" ]; then
echo "ERROR: $VENDOR_PATH not found!" echo "ERROR: $VENDOR_PATH not found!"
echo ""
echo "Available vendor directories:"
ls -d vendor/*/ 2>/dev/null || echo " (none)"
echo ""
if [ "$DEV_MODE" = true ]; then if [ "$DEV_MODE" = true ]; then
echo "Run 'make vendor-linux-dev' to generate dev wheels" echo "To build dev wheels:"
if [[ "$PLATFORM" == "linux-x86_64" ]]; then
echo " make vendor-linux-dev"
elif [[ "$PLATFORM" == "linux-aarch64" ]]; then
echo " make vendor-linux-arm-dev"
fi
else else
echo "Run 'make vendor-linux' or 'make vendor-macos' to generate wheels" echo "To build runtime wheels:"
if [[ "$PLATFORM" == "linux-x86_64" ]]; then
echo " make vendor-linux"
elif [[ "$PLATFORM" == "linux-aarch64" ]]; then
echo " make vendor-linux-arm"
elif [[ "$PLATFORM" == "macos-arm64" ]]; then
echo " make vendor-macos"
fi
fi fi
exit 1 exit 1
fi fi
@@ -47,7 +75,7 @@ if ! command -v python3.12 &> /dev/null; then
echo "ERROR: Python 3.12 not found!" echo "ERROR: Python 3.12 not found!"
echo "Please install Python 3.12:" echo "Please install Python 3.12:"
echo " macOS: brew install python@3.12" echo " macOS: brew install python@3.12"
echo " Linux: apt-get install python3.12 python3.12-venv" echo " Debian/Ubuntu: apt-get install python3.12 python3.12-venv"
exit 1 exit 1
fi fi
@@ -111,7 +139,6 @@ if [ "$DEV_MODE" = true ]; then
echo "⚠️ pytest not found in dev install!" echo "⚠️ pytest not found in dev install!"
fi fi
else else
# Only mention pytest in production mode
echo "⚠️ Skipping pytest (use --dev for full test suite)" echo "⚠️ Skipping pytest (use --dev for full test suite)"
fi fi
@@ -129,6 +156,7 @@ echo "=========================================="
echo "" echo ""
echo "Virtual environment: $VENV_DIR" echo "Virtual environment: $VENV_DIR"
echo "Python version: $(python --version)" echo "Python version: $(python --version)"
echo "Platform: $PLATFORM"
if [ "$DEV_MODE" = true ]; then if [ "$DEV_MODE" = true ]; then
echo "Mode: Development (pytest installed)" echo "Mode: Development (pytest installed)"
else else