|
5 | 5 |
|
6 | 6 | jobs: |
7 | 7 | build: |
8 | | - runs-on: self-hosted |
9 | | - env: |
10 | | - ANDROID_NDK_ZIP: android-ndk-r28c-linux.zip |
11 | | - ANDROID_NDK_DIR: android-ndk-r28c |
12 | | - # go install will put the binary here |
13 | | - GOBIN: ${{ github.workspace }}/out |
| 8 | + runs-on: ubuntu-latest |
14 | 9 |
|
15 | 10 | steps: |
16 | 11 | - uses: actions/checkout@v4 |
17 | 12 |
|
18 | | - # - name: Set up Go |
19 | | - # uses: actions/setup-go@v5 |
20 | | - # with: |
21 | | - # go-version: '1.22.x' |
| 13 | + - name: Set up Go |
| 14 | + uses: actions/setup-go@v5 |
| 15 | + with: |
| 16 | + go-version: '1.22.x' |
22 | 17 |
|
23 | | - # - name: Get Android NDK |
24 | | - # run: | |
25 | | - # wget https://dl.google.com/android/repository/${ANDROID_NDK_ZIP} |
26 | | - # unzip -q ${ANDROID_NDK_ZIP} |
| 18 | + - name: Download Android NDK (r28c) |
| 19 | + run: | |
| 20 | + # wget -q https://dl.google.com/android/repository/android-ndk-r28c-linux.zip |
| 21 | + # unzip -q android-ndk-r28c-linux.zip |
| 22 | + echo "ANDROID_NDK=$PWD/android-ndk-r28c" >> $GITHUB_ENV |
27 | 23 |
|
28 | | - - name: Build Kopia (Android/arm64, CGO, netcgo) |
| 24 | + - name: Build Kopia (Android/arm64, CGO, netcgo) via go install |
29 | 25 | env: |
30 | 26 | ANDROID_NDK: ${{ env.ANDROID_NDK }} |
31 | 27 | run: | |
| 28 | + # Android/arm64 cross-compile with CGO and cgo DNS resolver |
32 | 29 | export CC="$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang" |
33 | 30 | export CXX="$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang++" |
34 | | - export GOOS=android GOARCH=arm64 CGO_ENABLED=1 |
35 | | - # crucial: GOBIN must be unset for cross installs |
| 31 | + export GOOS=android |
| 32 | + export GOARCH=arm64 |
| 33 | + export CGO_ENABLED=1 |
| 34 | +
|
| 35 | + # IMPORTANT: GOBIN must be unset for cross-installs |
| 36 | + # go install will place the binary under: $(go env GOPATH)/bin/${GOOS}_${GOARCH}/kopia |
36 | 37 | env -u GOBIN go install -tags netcgo github.com/kopia/[email protected] |
| 38 | +
|
| 39 | + # Collect the cross-compiled binary |
| 40 | + TARGET_BIN_DIR="$(go env GOPATH)/bin/${GOOS}_${GOARCH}" |
| 41 | + ls -l "$TARGET_BIN_DIR" |
37 | 42 | mkdir -p out |
38 | | - cp "$(go env GOPATH)/bin/kopia" out/kopia |
| 43 | + cp "$TARGET_BIN_DIR/kopia" out/kopia |
| 44 | + file out/kopia |
39 | 45 |
|
40 | 46 | - name: Upload Android binary |
41 | 47 | uses: actions/upload-artifact@v4 |
|
0 commit comments