diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b90af0e..4cdf6d9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -28,7 +28,8 @@ jobs: libadwaita-1-dev \ libsecret-1-dev \ libdbus-1-dev \ - desktop-file-utils + desktop-file-utils \ + rpm - name: Set up Rust uses: actions-rust-lang/setup-rust-toolchain@v1 @@ -109,6 +110,26 @@ jobs: # Build Debian package dpkg-deb --build deb proton-drive-linux_${{ env.VERSION }}_amd64.deb + - name: Package Fedora package (.rpm) + run: | + # Sanitize version (replace hyphens with dots for RPM compatibility) + RPM_VERSION=$(echo "${{ env.VERSION }}" | tr '-' '.') + + # Create RPM build directories + mkdir -p rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS,BUILDROOT,db} + + # Build RPM package + rpmbuild -bb \ + --define "_topdir $PWD/rpmbuild" \ + --define "_sourcedir $PWD" \ + --define "version ${RPM_VERSION}" \ + --define "_dbpath $PWD/rpmbuild/db" \ + packaging/proton-drive-linux.spec + + # Copy built RPM to root directory + cp rpmbuild/RPMS/x86_64/*.rpm . + + - name: Upload Workflow Artifacts uses: actions/upload-artifact@v4 with: @@ -116,6 +137,7 @@ jobs: path: | *.deb *.tar.gz + *.rpm if-no-files-found: error - name: Create GitHub Release @@ -125,6 +147,7 @@ jobs: files: | *.deb *.tar.gz + *.rpm draft: false prerelease: false env: diff --git a/.gitignore b/.gitignore index 9323bb6..600dec9 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ **/*.rs.bk *.pdb .env +/rpmbuild diff --git a/Cargo.lock b/Cargo.lock index da458b7..27c0737 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3495,7 +3495,7 @@ checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec" [[package]] name = "pdfs-cli" -version = "0.6.0" +version = "0.6.1" dependencies = [ "anyhow", "clap 4.6.1", @@ -3510,7 +3510,7 @@ dependencies = [ [[package]] name = "pdfs-core" -version = "0.6.0" +version = "0.6.1" dependencies = [ "directories", "ignore", @@ -3529,7 +3529,7 @@ dependencies = [ [[package]] name = "pdfs-fuse" -version = "0.6.0" +version = "0.6.1" dependencies = [ "fuser", "image", @@ -3545,7 +3545,7 @@ dependencies = [ [[package]] name = "pdfs-gui" -version = "0.6.0" +version = "0.6.1" dependencies = [ "anyhow", "async-channel", diff --git a/Cargo.toml b/Cargo.toml index 8934b01..e495213 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ resolver = "2" members = ["crates/pdfs-core", "crates/pdfs-fuse", "crates/pdfs-cli", "crates/pdfs-gui"] [workspace.package] -version = "0.6.0" +version = "0.6.1" edition = "2024" license = "MIT" authors = ["Nils Pukropp "] diff --git a/packaging/proton-drive-linux.spec b/packaging/proton-drive-linux.spec new file mode 100644 index 0000000..871b7fb --- /dev/null +++ b/packaging/proton-drive-linux.spec @@ -0,0 +1,51 @@ +Name: proton-drive-linux +Version: %{version} +Release: 1%{?dist} +Summary: Proton Drive client for Linux (unofficial) + +License: MIT +URL: https://github.com/narl/proton-drive-linux + +# Disable debuginfo package generation since we package pre-built release binaries +%global debug_package %{nil} +# Disable binary strip/post-processing checks to avoid issues with pre-compiled binaries +%global __os_install_post %{nil} + +Requires: fuse3 +Requires: gtk4 >= 4.12.0 +Requires: libadwaita >= 1.5.0 +Requires: libsecret +Requires: dbus + +%description +A fast, unofficial Proton Drive client for Linux. This client features an advanced files-on-demand FUSE virtual mount with block-level caching, a command-line interface (CLI), and a fully non-blocking GTK4 desktop application with system tray integration. + +%install +mkdir -p %{buildroot}%{_bindir} +mkdir -p %{buildroot}%{_datadir}/applications +mkdir -p %{buildroot}%{_sysconfdir}/xdg/autostart +mkdir -p %{buildroot}%{_datadir}/icons/hicolor/scalable/apps +mkdir -p %{buildroot}%{_usr}/lib/systemd/user +mkdir -p %{buildroot}%{_datadir}/licenses/proton-drive-linux + +cp %{_sourcedir}/target/release/pdfs %{buildroot}%{_bindir}/ +cp %{_sourcedir}/target/release/pdfs-tray %{buildroot}%{_bindir}/ +cp %{_sourcedir}/target/release/pdfs-app %{buildroot}%{_bindir}/ +cp %{_sourcedir}/target/release/pdfs-prompt %{buildroot}%{_bindir}/ + +cp %{_sourcedir}/packaging/io.narl.proton-drive-linux.desktop %{buildroot}%{_datadir}/applications/ +cp %{_sourcedir}/packaging/io.narl.proton-drive-linux-tray.desktop %{buildroot}%{_sysconfdir}/xdg/autostart/ +cp %{_sourcedir}/packaging/io.narl.proton-drive-linux.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/ +cp %{_sourcedir}/packaging/proton-drive.service %{buildroot}%{_usr}/lib/systemd/user/ +cp %{_sourcedir}/LICENSE %{buildroot}%{_datadir}/licenses/proton-drive-linux/ + +%files +%{_bindir}/pdfs +%{_bindir}/pdfs-tray +%{_bindir}/pdfs-app +%{_bindir}/pdfs-prompt +%{_datadir}/applications/io.narl.proton-drive-linux.desktop +%{_sysconfdir}/xdg/autostart/io.narl.proton-drive-linux-tray.desktop +%{_datadir}/icons/hicolor/scalable/apps/io.narl.proton-drive-linux.svg +%{_usr}/lib/systemd/user/proton-drive.service +%{_datadir}/licenses/proton-drive-linux/LICENSE