diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 91254b0..2196cb3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -200,19 +200,37 @@ jobs: - uses: actions/checkout@v6 - name: Setup Flutter uses: ./.github/actions/setup-flutter - - name: Deps + - name: Install system dependencies run: | sudo apt-get update -y && sudo apt-get upgrade -y - sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev libstdc++-12-dev + sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev libstdc++-12-dev rpm patchelf + - name: Install Flutter dependencies + run: | flutter pub get flutter gen-l10n - - name: Build Linux + - name: Activate fastforge + run: dart pub global activate fastforge + - name: Build Linux binary run: flutter build linux --release + - name: Build DEB package + run: fastforge package --platform linux --targets deb + - name: Build RPM package + run: fastforge package --platform linux --targets rpm - name: Upload binary artifact uses: actions/upload-artifact@v5 with: name: linux path: ./build/linux/x64/release/bundle + - name: Upload DEB package + uses: actions/upload-artifact@v5 + with: + name: linux-deb + path: ./dist/**/*.deb + - name: Upload RPM package + uses: actions/upload-artifact@v5 + with: + name: linux-rpm + path: ./dist/**/*.rpm build-ios: runs-on: macos-26 diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index c4ad78a..140c024 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -39,6 +39,18 @@ jobs: name: android-apk path: ./artifacts/android + - name: Download Linux DEB artifact + uses: actions/download-artifact@v6 + with: + name: linux-deb + path: ./artifacts/linux + + - name: Download Linux RPM artifact + uses: actions/download-artifact@v6 + with: + name: linux-rpm + path: ./artifacts/linux + - name: Extract changelog for current version id: changelog run: | @@ -74,3 +86,5 @@ jobs: ./artifacts/android/wormhole-android-openSource-x86_64.apk ./artifacts/windows/wormhole.zip ./artifacts/macos/wormhole.dmg + ./artifacts/linux/*.deb + ./artifacts/linux/*.rpm diff --git a/README.md b/README.md index 7e629ee..3dc6b8c 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,26 @@ An open source Android, iOS, macOS, and Windows App for sending/receiveing files (feel free to add yours) +## Installation + +### Linux + +**Debian/Ubuntu:** +```bash +# Download the .deb package from releases, then install: +sudo apt install ./wormhole_{version}_amd64.deb +``` + +**Fedora/RHEL/openSUSE:** +```bash +# Download the .rpm package from releases, then install: +sudo rpm -i wormhole-{version}.x86_64.rpm +# Or on Fedora: +sudo dnf localinstall ./wormhole-{version}.x86_64.rpm +``` + +Download the latest packages from the [Releases](https://github.com/wormhole-app/wormhole/releases) page. + # Translation We use [Codeberg Translate](https://translate.codeberg.org/projects/wormhole/). @@ -64,6 +84,20 @@ Build APK + App Bundle:\ Dev build:\ `just linux` +Create distribution packages:\ +```bash +# Activate fastforge first (one-time setup) +dart pub global activate fastforge + +# Build DEB package (for Debian/Ubuntu) +fastforge package --platform linux --targets deb + +# Build RPM package (for Fedora/RHEL) +fastforge package --platform linux --targets rpm +``` + +Packages will be created in the `dist/` directory. + #### macOS Dev build:\ diff --git a/distribute_options.yaml b/distribute_options.yaml new file mode 100644 index 0000000..9a9e617 --- /dev/null +++ b/distribute_options.yaml @@ -0,0 +1,45 @@ +# Flutter Distributor / Fastforge configuration for Wormhole +# Defines packaging jobs for Linux DEB and RPM distributions + +output: dist/ + +releases: + # Production release (triggered by git tags in CI/CD) + - name: production + jobs: + # Debian package for Ubuntu/Debian-based distributions + - name: release-linux-deb + package: + platform: linux + target: deb + build_args: + build-name: "1.1.6" + build-number: "1" + + # RPM package for Fedora/openSUSE/RHEL-based distributions + - name: release-linux-rpm + package: + platform: linux + target: rpm + build_args: + build-name: "1.1.6" + build-number: "1" + + # Development release (for testing locally) + - name: dev + jobs: + - name: dev-linux-deb + package: + platform: linux + target: deb + build_args: + dart-define: + APP_ENV: dev + + - name: dev-linux-rpm + package: + platform: linux + target: rpm + build_args: + dart-define: + APP_ENV: dev diff --git a/linux/packaging/deb/eu.heili.wormhole.desktop b/linux/packaging/deb/eu.heili.wormhole.desktop new file mode 100644 index 0000000..cfd5bd3 --- /dev/null +++ b/linux/packaging/deb/eu.heili.wormhole.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Name=Wormhole +Comment=Send and receive files using magic-wormhole +GenericName=File Transfer +Exec=wormhole +Icon=wormhole +Terminal=false +Type=Application +Categories=Network;FileTransfer;Utility; +Keywords=wormhole;magic-wormhole;file;transfer;send;receive;p2p; +StartupNotify=true diff --git a/linux/packaging/deb/make_config.yaml b/linux/packaging/deb/make_config.yaml new file mode 100644 index 0000000..1c3de6d --- /dev/null +++ b/linux/packaging/deb/make_config.yaml @@ -0,0 +1,35 @@ +# Debian package configuration for Wormhole +# Reference: https://fastforge.dev/makers/deb + +display_name: Wormhole +package_name: wormhole + +maintainer: + name: emmabyte + email: emma@emmabyte.de + +priority: optional +section: Network +installed_size: 50000 + +icon: assets/bitmap.png + +keywords: + - wormhole + - magic-wormhole + - file + - transfer + - send + - receive + - p2p + +generic_name: File Transfer +categories: + - Network + - FileTransfer + - Utility + +dependencies: + - libgtk-3-0 + - libblkid1 + - liblzma5 diff --git a/linux/packaging/rpm/eu.heili.wormhole.desktop b/linux/packaging/rpm/eu.heili.wormhole.desktop new file mode 100644 index 0000000..cfd5bd3 --- /dev/null +++ b/linux/packaging/rpm/eu.heili.wormhole.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Name=Wormhole +Comment=Send and receive files using magic-wormhole +GenericName=File Transfer +Exec=wormhole +Icon=wormhole +Terminal=false +Type=Application +Categories=Network;FileTransfer;Utility; +Keywords=wormhole;magic-wormhole;file;transfer;send;receive;p2p; +StartupNotify=true diff --git a/linux/packaging/rpm/make_config.yaml b/linux/packaging/rpm/make_config.yaml new file mode 100644 index 0000000..0931b82 --- /dev/null +++ b/linux/packaging/rpm/make_config.yaml @@ -0,0 +1,35 @@ +# RPM package configuration for Wormhole +# Reference: https://fastforge.dev/makers/rpm + +display_name: Wormhole + +icon: assets/bitmap.png +summary: Send and receive files using magic-wormhole +group: Applications/Internet +vendor: emmabyte +packager: emmabyte +packagerEmail: emma@emmabyte.de +license: GPL-3.0 +url: https://github.com/wormhole-app/wormhole + +keywords: + - wormhole + - magic-wormhole + - file + - transfer + - send + - receive + - p2p + +generic_name: File Transfer +categories: + - Network + - FileTransfer + - Utility + +startup_notify: true + +requires: + - gtk3 + - libblkid + - xz-libs