Skip to content

Commit a172b18

Browse files
authored
Add Linux targets for ARM, ARMv7 and AARCH64 (#1419)
1 parent a494322 commit a172b18

File tree

5 files changed

+96
-5
lines changed

5 files changed

+96
-5
lines changed

.cargo/config

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
[target.aarch64-unknown-linux-gnu]
2+
linker = "aarch64-linux-gnu-gcc"
3+
4+
[target.arm-unknown-linux-gnueabihf]
5+
linker = "arm-linux-gnueabihf-gcc"
6+
7+
[target.armv7-unknown-linux-gnueabihf]
8+
linker = "arm-linux-gnueabihf-gcc"

.github/workflows/cd.yml

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ jobs:
1010
strategy:
1111
fail-fast: false
1212
matrix:
13-
os: [ubuntu-latest, macos-latest, windows-latest]
13+
os: [ubuntu-latest, macos-latest, windows-latest, ubuntu-22.04]
1414
runs-on: ${{ matrix.os }}
15-
15+
1616
steps:
1717
- uses: actions/checkout@v2
1818

@@ -29,10 +29,13 @@ jobs:
2929
components: clippy
3030

3131
- name: Build
32+
if: matrix.os != 'ubuntu-22.04'
3233
run: cargo build
3334
- name: Run tests
35+
if: matrix.os != 'ubuntu-22.04'
3436
run: make test
3537
- name: Run clippy
38+
if: matrix.os != 'ubuntu-22.04'
3639
run: |
3740
cargo clean
3841
make clippy
@@ -43,6 +46,22 @@ jobs:
4346
rustup target add x86_64-unknown-linux-musl
4447
sudo apt-get -qq install musl-tools
4548
49+
- name: Setup ARM toolchain
50+
if: matrix.os == 'ubuntu-22.04'
51+
run: |
52+
rustup target add aarch64-unknown-linux-gnu
53+
rustup target add armv7-unknown-linux-gnueabihf
54+
rustup target add arm-unknown-linux-gnueabihf
55+
56+
curl -o $GITHUB_WORKSPACE/aarch64.tar.xz https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-a/8.2-2018.08/gcc-arm-8.2-2018.08-x86_64-aarch64-linux-gnu.tar.xz
57+
curl -o $GITHUB_WORKSPACE/arm.tar.xz https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-a/8.2-2018.08/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf.tar.xz
58+
59+
tar xf $GITHUB_WORKSPACE/aarch64.tar.xz
60+
tar xf $GITHUB_WORKSPACE/arm.tar.xz
61+
62+
echo "$GITHUB_WORKSPACE/gcc-arm-8.2-2018.08-x86_64-aarch64-linux-gnu/bin" >> $GITHUB_PATH
63+
echo "$GITHUB_WORKSPACE/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf/bin" >> $GITHUB_PATH
64+
4665
- name: Build Release Mac
4766
if: matrix.os == 'macos-latest'
4867
run: make release-mac
@@ -52,6 +71,9 @@ jobs:
5271
- name: Build Release Win
5372
if: matrix.os == 'windows-latest'
5473
run: make release-win
74+
- name: Build Release Linux ARM
75+
if: matrix.os == 'ubuntu-22.04'
76+
run: make release-linux-arm
5577

5678
- name: Set SHA
5779
if: matrix.os == 'macos-latest'
@@ -72,7 +94,7 @@ jobs:
7294
./release/*.tar.gz
7395
./release/*.zip
7496
./release/*.msi
75-
97+
7698
env:
7799
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
78100

.github/workflows/ci.yml

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ jobs:
6767
if: matrix.os != 'windows-latest'
6868
run: |
6969
ls -l ./target/release/gitui
70-
70+
7171
- name: Binary Size (win)
7272
if: matrix.os == 'windows-latest'
7373
run: |
@@ -120,6 +120,45 @@ jobs:
120120
run: |
121121
make test-linux-musl
122122
123+
build-linux-arm:
124+
runs-on: ubuntu-latest
125+
strategy:
126+
fail-fast: false
127+
matrix:
128+
rust: [nightly, stable, '1.60']
129+
continue-on-error: ${{ matrix.rust == 'nightly' }}
130+
steps:
131+
- uses: actions/checkout@master
132+
- name: Install Rust
133+
uses: actions-rs/toolchain@v1
134+
with:
135+
toolchain: ${{ matrix.rust }}
136+
profile: minimal
137+
default: true
138+
override: true
139+
- name: Setup ARM toolchain
140+
run: |
141+
rustup target add aarch64-unknown-linux-gnu
142+
rustup target add armv7-unknown-linux-gnueabihf
143+
rustup target add arm-unknown-linux-gnueabihf
144+
145+
curl -o $GITHUB_WORKSPACE/aarch64.tar.xz https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-a/8.2-2018.08/gcc-arm-8.2-2018.08-x86_64-aarch64-linux-gnu.tar.xz
146+
curl -o $GITHUB_WORKSPACE/arm.tar.xz https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-a/8.2-2018.08/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf.tar.xz
147+
148+
tar xf $GITHUB_WORKSPACE/aarch64.tar.xz
149+
tar xf $GITHUB_WORKSPACE/arm.tar.xz
150+
151+
echo "$GITHUB_WORKSPACE/gcc-arm-8.2-2018.08-x86_64-aarch64-linux-gnu/bin" >> $GITHUB_PATH
152+
echo "$GITHUB_WORKSPACE/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf/bin" >> $GITHUB_PATH
153+
154+
- name: Build Debug
155+
run: |
156+
make build-linux-arm-debug
157+
- name: Build Release
158+
run: |
159+
make build-linux-arm-release
160+
ls -l ./target/aarch64-unknown-linux-gnu/release/gitui || ls -l ./target/armv7-unknown-linux-gnueabihf/release/gitui || ls -l ./target/arm-unknown-linux-gnueabihf/release/gitui
161+
123162
linting:
124163
name: Lints
125164
runs-on: ubuntu-latest
@@ -131,7 +170,7 @@ jobs:
131170
toolchain: stable
132171
override: true
133172
components: rustfmt
134-
173+
135174
- run: cargo fmt -- --check
136175

137176
- name: cargo-sort

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3030
* Feedback for success/failure of copying hash commit [[@sergioribera]](https://github.com/sergioribera)([#1160](https://github.com/extrawurst/gitui/issues/1160))
3131
* display tags and branches in the log view [[@alexmaco]](https://github.com/alexmaco)([#1371](https://github.com/extrawurst/gitui/pull/1371))
3232
* display current repository path in the top-right corner [[@alexmaco]](https://github.com/alexmaco)([#1387](https://github.com/extrawurst/gitui/pull/1387))
33+
* Add Linux targets for ARM, ARMv7 and AARCH64 [@adur1990](https://github.com/adur1990) ([#1419](https://github.com/extrawurst/gitui/pull/1419))
3334

3435
### Fixes
3536
* remove insecure dependency `ansi_term` ([#1290](https://github.com/extrawurst/gitui/issues/1290))

Makefile

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,27 @@ build-linux-musl-release:
4545
test-linux-musl:
4646
cargo test --workspace --target=x86_64-unknown-linux-musl
4747

48+
release-linux-arm: build-linux-arm-release
49+
mkdir -p release
50+
51+
aarch64-linux-gnu-strip target/aarch64-unknown-linux-gnu/release/gitui
52+
arm-linux-gnueabihf-strip target/armv7-unknown-linux-gnueabihf/release/gitui
53+
arm-linux-gnueabihf-strip target/arm-unknown-linux-gnueabihf/release/gitui
54+
55+
tar -C ./target/aarch64-unknown-linux-gnu/release/ -czvf ./release/gitui-linux-aarch64.tar.gz ./gitui
56+
tar -C ./target/armv7-unknown-linux-gnueabihf/release/ -czvf ./release/gitui-linux-armv7.tar.gz ./gitui
57+
tar -C ./target/arm-unknown-linux-gnueabihf/release/ -czvf ./release/gitui-linux-arm.tar.gz ./gitui
58+
59+
build-linux-arm-debug:
60+
cargo build --target=aarch64-unknown-linux-gnu
61+
cargo build --target=armv7-unknown-linux-gnueabihf
62+
cargo build --target=arm-unknown-linux-gnueabihf
63+
64+
build-linux-arm-release:
65+
cargo build --release --target=aarch64-unknown-linux-gnu
66+
cargo build --release --target=armv7-unknown-linux-gnueabihf
67+
cargo build --release --target=arm-unknown-linux-gnueabihf
68+
4869
test:
4970
cargo test --workspace
5071

0 commit comments

Comments
 (0)