From 14d9642d3c1914356e18c6bf418172967fcc8d7e Mon Sep 17 00:00:00 2001 From: BerryMC <148406068+BerryMC@users.noreply.github.com> Date: Sat, 29 Nov 2025 11:35:32 +0800 Subject: [PATCH] feat: add RPM package build (#1190) --- .github/workflows/build.yml | 47 +++++++++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0727b255..63882aef 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -198,7 +198,7 @@ jobs: name: Build Amd64 Libraries run: | mkdir -p ui/flutter/macos/Frameworks - + cp ui/flutter/lib-amd64/libgopeed.dylib ui/flutter/macos/Frameworks/libgopeed.dylib cp ui/flutter/lib-amd64/host ui/flutter/assets/exec/host cp ui/flutter/lib-amd64/updater ui/flutter/assets/exec/updater @@ -206,17 +206,17 @@ jobs: name: Build Universal Libraries run: | mkdir -p ui/flutter/macos/Frameworks - + # arm64 lib go build -tags nosqlite -ldflags="-w -s -X github.com/GopeedLab/gopeed/pkg/base.Version=$VERSION" -buildmode=c-shared -o ui/flutter/.temp/libgopeed.dylib.arm64 github.com/GopeedLab/gopeed/bind/desktop go build -ldflags="-w -s" -o ui/flutter/.temp/host.arm64 github.com/GopeedLab/gopeed/cmd/host go build -ldflags="-w -s" -o ui/flutter/.temp/updater.arm64 github.com/GopeedLab/gopeed/cmd/updater - + # amd64 lib cp ui/flutter/lib-amd64/libgopeed.dylib ui/flutter/.temp/libgopeed.dylib.amd64 cp ui/flutter/lib-amd64/host ui/flutter/.temp/host.amd64 cp ui/flutter/lib-amd64/updater ui/flutter/.temp/updater.amd64 - + # universal lib lipo -create -output ui/flutter/macos/Frameworks/libgopeed.dylib ui/flutter/.temp/libgopeed.dylib.arm64 ui/flutter/.temp/libgopeed.dylib.amd64 lipo -create -output ui/flutter/assets/exec/host ui/flutter/.temp/host.arm64 ui/flutter/.temp/host.amd64 @@ -240,7 +240,7 @@ jobs: EOF mkdir dist appdmg appdmg.json dist/Gopeed-v$VERSION-macos.dmg - + if [[ "${{ matrix.channel }}" == "arm64" ]]; then mv dist/Gopeed-v$VERSION-macos.dmg dist/Gopeed-v$VERSION-macos-arm64.dmg fi @@ -271,10 +271,7 @@ jobs: channel: master - run: | sudo apt update -y - # flutter build dependencies - sudo apt install -y ninja-build libgtk-3-dev libayatana-appindicator3-1 libayatana-appindicator3-dev - # appimage build dependencies - sudo apt install -y libfuse2 locate + sudo apt install -y ninja-build libgtk-3-dev libayatana-appindicator3-1 libayatana-appindicator3-dev rpm patchelf libfuse2 locate imagemagick potrace arch=$(uname -m) wget -O appimagetool "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-${arch}.AppImage" chmod +x appimagetool @@ -288,6 +285,29 @@ jobs: go build -ldflags="-w -s" -o ui/flutter/assets/exec/updater github.com/GopeedLab/gopeed/cmd/updater cd ui/flutter + + ICON_PATH=$(find assets -name "logo.png" -o -name "icon.png" | head -n 1) + [ -z "$ICON_PATH" ] && ICON_PATH="assets/icon.png" && touch assets/icon.png + + convert "$ICON_PATH" assets/icon.svg + ICON_PATH="assets/icon.svg" + + RPM_ARCH=$(uname -m) + + mkdir -p linux/packaging/rpm + cat << EOF > linux/packaging/rpm/make_config.yaml + display_name: Gopeed + icon: $ICON_PATH + summary: High speed downloader. + description: A high speed downloader that supports all platforms. + group: Applications/Internet + license: GPL-3.0 + url: https://github.com/GopeedLab/gopeed + vendor: GopeedLab + maintainer: GopeedLab + build_arch: $RPM_ARCH + EOF + cat << EOF > distribute_options.yaml output: dist/ releases: @@ -307,12 +327,18 @@ jobs: build_args: dart-define: UPDATE_CHANNEL: linuxDeb + - name: rpm + package: + platform: linux + target: rpm + build_args: + dart-define: + UPDATE_CHANNEL: linuxRpm EOF dart pub global activate -sgit https://github.com/GopeedLab/flutter_distributor.git --git-path packages/flutter_distributor flutter_distributor release --name linux cd dist/* - # Get current running architecture, x86_64 -> amd64 and aarch64 -> arm64 ARCH="amd64" if [[ "${{ matrix.os }}" == *-arm ]]; then ARCH="arm64" @@ -320,6 +346,7 @@ jobs: mv gopeed-*-linux.AppImage Gopeed-v${VERSION}-linux-${ARCH}.AppImage mv gopeed-*-linux.deb Gopeed-v${VERSION}-linux-${ARCH}.deb + mv gopeed-*-linux.rpm Gopeed-v${VERSION}-linux-${ARCH}.rpm - name: Upload uses: shogo82148/actions-upload-release-asset@v1 with: