Compare commits

...
Author SHA1 Message Date
nvrl d13042b550 Merge branch 'main' into fix/capture 2026-07-19 23:25:10 +02:00
nvrl 0323fdc44d Merge pull request #7 from kacperpaczos/fedora-packaging
Add Fedora packaging
2026-07-19 22:26:46 +02:00
nvrl 2b2a49c679 Merge branch 'main' into fedora-packaging 2026-07-19 22:26:28 +02:00
Kacper PaczosandCursor b90b7e4b9c Add Fedora packaging and fix crates.io SDK build.
Remove the local proton-sdk path patch so the workspace builds from published crates, and document Fedora 44 build/runtime plus a local RPM spec.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-19 19:46:56 +02:00
3 changed files with 348 additions and 261 deletions

No files matched your search

Generated
+252 -231
View File
File diff suppressed because it is too large. Load diff
+30
View File
@@ -63,6 +63,22 @@ sudo apt-get install -y \
sudo pacman -S --needed pkgconf fuse3 gtk4 libadwaita libsecret dbus
```
### Fedora (44+)
```bash
sudo dnf install -y \
pkgconf-pkg-config fuse3-devel gtk4-devel libadwaita-devel \
libsecret-devel dbus-devel glib2-devel cargo rust
```
Runtime extras (pick your desktop):
```bash
# GNOME — keyring + tray (AppIndicator)
sudo dnf install -y gnome-keyring gnome-shell-extension-appindicator xdg-utils
# KDE Plasma — KWallet (Secret Service); tray works via built-in SNI
sudo dnf install -y kwallet xdg-utils
```
---
## Building from Source
@@ -101,6 +117,20 @@ A local `PKGBUILD` is available under the `packaging/` directory. You can build
cd packaging && makepkg -fi
```
### 3. Fedora (local RPM)
A local `.spec` is available under `packaging/`. From the repository root:
```bash
sudo dnf install -y rpm-build
rpmbuild -bb packaging/proton-drive-linux.spec \
--define "git_dir $PWD" \
--define "_rpmdir $PWD/packaging/out" \
--define "_builddir $PWD/packaging/build" \
--define "_sourcedir $PWD" \
--define "_specdir $PWD/packaging" \
--define "_srcrpmdir $PWD/packaging/out"
sudo dnf install packaging/out/x86_64/proton-drive-linux-*.rpm
```
---
## Automated Releases (CI/CD)
+66 -30
View File
@@ -1,45 +1,78 @@
Name: proton-drive-linux
Version: %{version}
Release: 1%{?dist}
Summary: Proton Drive client for Linux (unofficial)
# Local in-tree RPM (mirrors packaging/PKGBUILD).
# From the repository root:
# rpmbuild -bb packaging/proton-drive-linux.spec --define "git_dir $PWD" ...
# %build needs network so cargo can fetch crates.io (same trade-off as the Arch PKGBUILD).
%global debug_package %{nil}
# Match Arch PKGBUILD `!lto` — LTO has broken some GTK/Rust links in practice.
%global _lto_cflags %{nil}
Name: proton-drive-linux
Version: 0.4.0
Release: 1%{?dist}
Summary: Proton Drive client for Linux (FUSE, CLI, GTK4 app + tray)
License: MIT
URL: https://github.com/narl/proton-drive-linux
ExclusiveArch: x86_64
# 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}
BuildRequires: cargo
BuildRequires: rust
BuildRequires: pkgconf-pkg-config
BuildRequires: fuse3-devel
BuildRequires: gtk4-devel
BuildRequires: libadwaita-devel
BuildRequires: libsecret-devel
BuildRequires: dbus-devel
BuildRequires: glib2-devel
Requires: fuse3
Requires: gtk4 >= 4.12.0
Requires: libadwaita >= 1.5.0
Requires: gtk4
Requires: libadwaita
Requires: libsecret
Requires: dbus
Requires: xdg-utils
# DE-specific; do not Require a single desktop environment.
Recommends: gnome-keyring
Recommends: gnome-shell-extension-appindicator
Recommends: kwallet
Provides: pdfs = %{version}-%{release}
%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.
Unofficial Proton Drive client featuring a FUSE files-on-demand mount,
CLI, GTK4/Libadwaita GUI, system tray, and search launcher.
%prep
# In-tree build: no Source tarball. Pass --define "git_dir /path/to/checkout".
test -n "%{?git_dir}" || (echo 'Pass --define "git_dir $PWD" from the repo root' >&2; exit 1)
test -f %{git_dir}/Cargo.toml
cp -a %{git_dir}/LICENSE .
%build
cd %{git_dir}
cargo build --release --locked \
--bin pdfs \
--bin pdfs-tray \
--bin pdfs-app \
--bin pdfs-prompt
%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
rel=%{git_dir}/target/release
install -D -m0755 "$rel/pdfs" %{buildroot}%{_bindir}/pdfs
install -D -m0755 "$rel/pdfs-tray" %{buildroot}%{_bindir}/pdfs-tray
install -D -m0755 "$rel/pdfs-app" %{buildroot}%{_bindir}/pdfs-app
install -D -m0755 "$rel/pdfs-prompt" %{buildroot}%{_bindir}/pdfs-prompt
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/
install -D -m0644 %{git_dir}/packaging/io.narl.proton-drive-linux.desktop \
%{buildroot}%{_datadir}/applications/io.narl.proton-drive-linux.desktop
install -D -m0644 %{git_dir}/packaging/io.narl.proton-drive-linux-tray.desktop \
%{buildroot}%{_sysconfdir}/xdg/autostart/io.narl.proton-drive-linux-tray.desktop
install -D -m0644 %{git_dir}/packaging/io.narl.proton-drive-linux.svg \
%{buildroot}%{_datadir}/icons/hicolor/scalable/apps/io.narl.proton-drive-linux.svg
install -D -m0644 %{git_dir}/packaging/proton-drive.service \
%{buildroot}/usr/lib/systemd/user/proton-drive.service
%files
%license LICENSE
%{_bindir}/pdfs
%{_bindir}/pdfs-tray
%{_bindir}/pdfs-app
@@ -47,5 +80,8 @@ cp %{_sourcedir}/LICENSE %{buildroot}%{_datadir}/licenses/proton-drive-linux/
%{_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
/usr/lib/systemd/user/proton-drive.service
%changelog
* Sun Jul 19 2026 Local Packager - 0.4.0-1
- Initial Fedora local package (in-tree cargo build).