diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..fefcd75 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,112 @@ +name: Build and Release + +on: + push: + tags: + - 'v*' + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: + - toolchain: arm-hisiv300-linux + archive: arm-hisiv300-linux.tar.bz2 + cross_compile: arm-hisiv300-linux-uclibcgnueabi- + - toolchain: arm-hisiv500-linux + archive: arm-hisiv500-linux.tgz + cross_compile: arm-hisiv500-linux-uclibcgnueabi- + - toolchain: arm-hisiv510-linux + archive: arm-hisiv510-linux.tgz + cross_compile: arm-hisiv510-linux-uclibcgnueabi- + - toolchain: arm-hisiv600-linux + archive: arm-hisiv600-linux.tgz + cross_compile: arm-hisiv600-linux-gnueabi- + - toolchain: arm-himix100-linux + archive: arm-himix100-linux.tgz + cross_compile: arm-himix100-linux- + - toolchain: arm-himix200-linux + archive: arm-himix200-linux.tgz + cross_compile: arm-himix200-linux- + steps: + - uses: actions/checkout@v4 + + - name: Install dependencies + run: sudo apt-get update && sudo apt-get install -y upx-ucl lib32z1 gcc-multilib + + - name: Download toolchain + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + if [ "${{ matrix.toolchain }}" = "arm-himix200-linux" ]; then + gh release download v1 -R OpenIPC/toolchains -p 'arm-himix200-linux.tgz.part*' + cat arm-himix200-linux.tgz.part* > arm-himix200-linux.tgz + rm arm-himix200-linux.tgz.part* + else + gh release download v1 -R OpenIPC/toolchains -p '${{ matrix.archive }}' + fi + + - name: Extract toolchain + run: | + if [ "${{ matrix.archive }}" = "arm-hisiv300-linux.tar.bz2" ]; then + tar xjf arm-hisiv300-linux.tar.bz2 + else + tar xzf ${{ matrix.toolchain }}.tgz + tar xjf ${{ matrix.toolchain }}/${{ matrix.toolchain }}.tar.bz2 + fi + + - name: Build bin2sh (native) + run: make bin2sh + + - name: Build uget (cross-compile) + run: | + export PATH="$PWD/${{ matrix.toolchain }}/bin:$PATH" + make uget CROSS_COMPILE=${{ matrix.cross_compile }} + + - name: Generate uget.sh + run: ./bin2sh uget > uget.sh + + - name: Rename artifacts + run: | + mv uget uget.${{ matrix.toolchain }} + mv uget.sh uget.${{ matrix.toolchain }}.sh + + - name: Upload build artifacts + uses: actions/upload-artifact@v4 + with: + name: uget-${{ matrix.toolchain }} + path: | + uget.${{ matrix.toolchain }} + uget.${{ matrix.toolchain }}.sh + + release: + if: startsWith(github.ref, 'refs/tags/') + needs: build + runs-on: ubuntu-latest + steps: + - name: Download all artifacts + uses: actions/download-artifact@v4 + + - name: Create release + uses: softprops/action-gh-release@v2 + with: + files: uget-*/* + body: | + ## Which binary do I need? + + | Your SoC | Libc | Binary | + |----------|------|--------| + | Hi3516Av100, Hi3518Ev200 | uClibc | `uget.arm-hisiv300-linux` | + | Hi3516Cv300, Hi3518Ev201 | uClibc | `uget.arm-hisiv500-linux` | + | Hi3516Cv300, Hi3518Ev201 | glibc | `uget.arm-hisiv600-linux` | + | Hi3516Av200, Hi3519v101 | uClibc | `uget.arm-hisiv510-linux` | + | Hi3516Av200, Hi3519v101 | glibc | `uget.arm-hisiv600-linux` | + | Hi3516EV200, Hi3516EV300, Hi3518EV300, Hi3516DV200 | uClibc | `uget.arm-himix100-linux` | + | Hi3516CV500, Hi3516DV300, Hi3519Av100 | glibc | `uget.arm-himix200-linux` | + + If unsure about libc, try the uClibc variant first — it has fewer dependencies. + + Each binary also has a matching `.sh` file (e.g., `uget.arm-hisiv510-linux.sh`) for transferring via telnet copy-paste. diff --git a/Makefile b/Makefile index b374892..2d6e841 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ all: $(BINARIES) uget: uget.o $(CC) $(CFLAGS) -o $@ $^ $(STRIP) -R .comment -R .note -R .note.ABI-tag $@ - upx $@ + -upx $@ bin2sh: bin2sh.c cc -o $@ $^