forked from TrueCloudLab/rclone
build: replace xgo with NDK for Android builds
This commit is contained in:
parent
f6dbb98a1d
commit
5577c7b760
1 changed files with 80 additions and 41 deletions
121
.github/workflows/build.yml
vendored
121
.github/workflows/build.yml
vendored
|
@ -213,50 +213,89 @@ jobs:
|
||||||
# Deploy binaries if enabled in config && not a PR && not a fork
|
# Deploy binaries if enabled in config && not a PR && not a fork
|
||||||
if: matrix.deploy && github.head_ref == '' && github.repository == 'rclone/rclone'
|
if: matrix.deploy && github.head_ref == '' && github.repository == 'rclone/rclone'
|
||||||
|
|
||||||
xgo:
|
android:
|
||||||
timeout-minutes: 60
|
timeout-minutes: 30
|
||||||
name: "xgo cross compile"
|
name: "android-all"
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
steps:
|
# Upgrade together with NDK version
|
||||||
|
- name: Set up Go 1.14
|
||||||
|
uses: actions/setup-go@v1
|
||||||
|
with:
|
||||||
|
go-version: 1.14
|
||||||
|
|
||||||
- name: Checkout
|
# Upgrade together with Go version. Using a GitHub-provided version saves around 2 minutes.
|
||||||
uses: actions/checkout@v1
|
- name: Force NDK version
|
||||||
with:
|
run: echo "y" | sudo ${ANDROID_HOME}/tools/bin/sdkmanager --install "ndk;21.4.7075529" | grep -v = || true
|
||||||
# Checkout into a fixed path to avoid import path problems on go < 1.11
|
|
||||||
path: ./src/github.com/rclone/rclone
|
|
||||||
|
|
||||||
- name: Set environment variables
|
- name: Go module cache
|
||||||
shell: bash
|
uses: actions/cache@v2
|
||||||
run: |
|
with:
|
||||||
echo 'GOPATH=${{ runner.workspace }}' >> $GITHUB_ENV
|
path: ~/go/pkg/mod
|
||||||
echo '${{ runner.workspace }}/bin' >> $GITHUB_PATH
|
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-go-
|
||||||
|
|
||||||
- name: Cross-compile rclone
|
- name: arm-v7a Set environment variables
|
||||||
run: |
|
shell: bash
|
||||||
docker pull billziss/xgo-cgofuse
|
run: |
|
||||||
GO111MODULE=off go get -v github.com/karalabe/xgo # don't add to go.mod
|
echo "CC=$(echo $ANDROID_HOME/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi16-clang)" >> $GITHUB_ENV
|
||||||
# xgo \
|
echo "CC_FOR_TARGET=$CC" >> $GITHUB_ENV
|
||||||
# -image=billziss/xgo-cgofuse \
|
echo 'GOOS=android' >> $GITHUB_ENV
|
||||||
# -targets=darwin/amd64,linux/386,linux/amd64,windows/386,windows/amd64 \
|
echo 'GOARCH=arm' >> $GITHUB_ENV
|
||||||
# -tags cmount \
|
echo 'GOARM=7' >> $GITHUB_ENV
|
||||||
# -dest build \
|
echo 'CGO_ENABLED=1' >> $GITHUB_ENV
|
||||||
# .
|
echo 'CGO_LDFLAGS=-fuse-ld=lld -s -w' >> $GITHUB_ENV
|
||||||
xgo \
|
- name: arm-v7a build
|
||||||
-image=billziss/xgo-cgofuse \
|
run: go build -v -tags android -trimpath -o build/rclone-android-16-armv7a .
|
||||||
-targets=android/* \
|
|
||||||
-dest build \
|
|
||||||
.
|
|
||||||
|
|
||||||
- name: Build rclone
|
- name: arm64-v8a Set environment variables
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
make
|
echo "CC=$(echo $ANDROID_HOME/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang)" >> $GITHUB_ENV
|
||||||
|
echo "CC_FOR_TARGET=$CC" >> $GITHUB_ENV
|
||||||
|
echo 'GOOS=android' >> $GITHUB_ENV
|
||||||
|
echo 'GOARCH=arm64' >> $GITHUB_ENV
|
||||||
|
echo 'CGO_ENABLED=1' >> $GITHUB_ENV
|
||||||
|
echo 'CGO_LDFLAGS=-fuse-ld=lld -s -w' >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Upload artifacts
|
- name: arm64-v8a build
|
||||||
run: |
|
run: go build -v -tags android -trimpath -o build/rclone-android-21-armv8a .
|
||||||
make ci_upload
|
|
||||||
env:
|
- name: x86 Set environment variables
|
||||||
RCLONE_CONFIG_PASS: ${{ secrets.RCLONE_CONFIG_PASS }}
|
shell: bash
|
||||||
# Upload artifacts if not a PR && not a fork
|
run: |
|
||||||
if: github.head_ref == '' && github.repository == 'rclone/rclone'
|
echo "CC=$(echo $ANDROID_HOME/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android16-clang)" >> $GITHUB_ENV
|
||||||
|
echo "CC_FOR_TARGET=$CC" >> $GITHUB_ENV
|
||||||
|
echo 'GOOS=android' >> $GITHUB_ENV
|
||||||
|
echo 'GOARCH=386' >> $GITHUB_ENV
|
||||||
|
echo 'CGO_ENABLED=1' >> $GITHUB_ENV
|
||||||
|
echo 'CGO_LDFLAGS=-fuse-ld=lld -s -w' >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: x86 build
|
||||||
|
run: go build -v -tags android -trimpath -o build/rclone-android-16-x86 .
|
||||||
|
|
||||||
|
- name: x64 Set environment variables
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
echo "CC=$(echo $ANDROID_HOME/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android21-clang)" >> $GITHUB_ENV
|
||||||
|
echo "CC_FOR_TARGET=$CC" >> $GITHUB_ENV
|
||||||
|
echo 'GOOS=android' >> $GITHUB_ENV
|
||||||
|
echo 'GOARCH=amd64' >> $GITHUB_ENV
|
||||||
|
echo 'CGO_ENABLED=1' >> $GITHUB_ENV
|
||||||
|
echo 'CGO_LDFLAGS=-fuse-ld=lld -s -w' >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: x64 build
|
||||||
|
run: go build -v -tags android -trimpath -o build/rclone-android-21-x64 .
|
||||||
|
|
||||||
|
- name: Upload artifacts
|
||||||
|
run: |
|
||||||
|
make ci_upload
|
||||||
|
env:
|
||||||
|
RCLONE_CONFIG_PASS: ${{ secrets.RCLONE_CONFIG_PASS }}
|
||||||
|
# Upload artifacts if not a PR && not a fork
|
||||||
|
if: github.head_ref == '' && github.repository == 'rclone/rclone'
|
||||||
|
|
Loading…
Add table
Reference in a new issue