|
1 | 1 | #!/bin/bash |
2 | 2 | set -e |
3 | 3 |
|
| 4 | +echo "=== Building static ToCry binaries ===" |
| 5 | + |
| 6 | +# Step 1: Generate OpenAPI clients (must be done before building) |
| 7 | +echo "Step 1: Generating OpenAPI clients..." |
| 8 | +./scripts/generate_clients.sh |
| 9 | + |
| 10 | +# Step 2: Install dependencies |
| 11 | +echo "Step 2: Installing Crystal dependencies..." |
| 12 | +shards install |
| 13 | + |
| 14 | +# Step 3: Setup QEMU for multi-arch builds |
| 15 | +echo "Step 3: Setting up QEMU for multi-architecture builds..." |
4 | 16 | docker run --rm --privileged \ |
5 | 17 | multiarch/qemu-user-static \ |
6 | 18 | --reset -p yes |
7 | 19 |
|
8 | | -shards install |
9 | | - |
10 | | -# Build for AMD64 |
| 20 | +# Step 4: Build for AMD64 |
| 21 | +echo "Step 4: Building for AMD64..." |
11 | 22 | docker build . -f Dockerfile.static -t tocry-builder |
12 | 23 | docker run -ti --rm -v "$PWD":/app --user="$UID" tocry-builder \ |
13 | 24 | /bin/sh -c "cd /app && shards build --static --release && strip bin/tocry && upx bin/tocry" |
14 | 25 | mv bin/tocry bin/tocry-static-linux-amd64 |
| 26 | +echo "✓ AMD64 build complete: bin/tocry-static-linux-amd64" |
15 | 27 |
|
16 | | -# Build for ARM64 |
| 28 | +# Step 5: Build for ARM64 |
| 29 | +echo "Step 5: Building for ARM64..." |
17 | 30 | docker build . -f Dockerfile.static --platform linux/arm64 -t tocry-builder |
18 | 31 | docker run -ti --rm -v "$PWD":/app --platform linux/arm64 --user="$UID" tocry-builder \ |
19 | 32 | /bin/sh -c "cd /app && shards build --static --release && strip bin/tocry && upx bin/tocry" |
20 | 33 | mv bin/tocry bin/tocry-static-linux-arm64 |
| 34 | +echo "✓ ARM64 build complete: bin/tocry-static-linux-arm64" |
| 35 | + |
| 36 | +echo "" |
| 37 | +echo "=== Build complete! ===" |
| 38 | +echo "AMD64 binary: bin/tocry-static-linux-amd64" |
| 39 | +echo "ARM64 binary: bin/tocry-static-linux-arm64" |
0 commit comments