forked from jstaf/onedriver
-
Notifications
You must be signed in to change notification settings - Fork 0
/
onedriver.spec
197 lines (170 loc) · 9.84 KB
/
onedriver.spec
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
Name: onedriver
Version: 0.14.1
Release: 1%{?dist}
Summary: A native Linux filesystem for Microsoft Onedrive
License: GPL-3.0-or-later
URL: https://github.com/jstaf/onedriver
Source0: https://github.com/jstaf/onedriver/archive/refs/tags/v%{version}.tar.gz
%if 0%{?suse_version}
BuildRequires: go >= 1.17
%else
BuildRequires: golang >= 1.17.0
%endif
BuildRequires: git
BuildRequires: gcc
BuildRequires: pkg-config
BuildRequires: webkit2gtk3-devel
Requires: fuse3
%description
Onedriver is a native Linux filesystem for Microsoft Onedrive. Files and
metadata are downloaded on-demand instead of syncing the entire drive to
your local computer.
%prep
%autosetup
%build
bash cgo-helper.sh
if rpm -q pango | grep -q 1.42; then
BUILD_TAGS=-tags=pango_1_42,gtk_3_22
fi
go build -v -mod=vendor $BUILD_TAGS \
-ldflags="-X github.com/jstaf/onedriver/cmd/common.commit=$(cat .commit)" \
./cmd/onedriver
go build -v -mod=vendor $BUILD_TAGS \
-ldflags="-X github.com/jstaf/onedriver/cmd/common.commit=$(cat .commit)" \
./cmd/onedriver-launcher
gzip pkg/resources/onedriver.1
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p %{buildroot}/%{_bindir}
mkdir -p %{buildroot}/usr/share/icons/%{name}
mkdir -p %{buildroot}/usr/share/applications
mkdir -p %{buildroot}/usr/lib/systemd/user
mkdir -p %{buildroot}/usr/share/man/man1
cp %{name} %{buildroot}/%{_bindir}
cp %{name}-launcher %{buildroot}/%{_bindir}
cp pkg/resources/%{name}.png %{buildroot}/usr/share/icons/%{name}
cp pkg/resources/%{name}-128.png %{buildroot}/usr/share/icons/%{name}
cp pkg/resources/%{name}.svg %{buildroot}/usr/share/icons/%{name}
cp pkg/resources/%{name}-launcher.desktop %{buildroot}/usr/share/applications
cp pkg/resources/%{name}@.service %{buildroot}/usr/lib/systemd/user
cp pkg/resources/%{name}.1.gz %{buildroot}/usr/share/man/man1
# fix for el8 build in mock
%define _empty_manifest_terminate_build 0
%files
%defattr(-,root,root,-)
%attr(755, root, root) %{_bindir}/%{name}
%attr(755, root, root) %{_bindir}/%{name}-launcher
%dir /usr/share/icons/%{name}
%attr(644, root, root) /usr/share/icons/%{name}/%{name}.png
%attr(644, root, root) /usr/share/icons/%{name}/%{name}-128.png
%attr(644, root, root) /usr/share/icons/%{name}/%{name}.svg
%attr(644, root, root) /usr/share/applications/%{name}-launcher.desktop
%attr(644, root, root) /usr/lib/systemd/user/%{name}@.service
%doc
%attr(644, root, root) /usr/share/man/man1/%{name}.1.gz
%changelog
* Wed Oct 18 2023 Jeff Stafford <jeff.stafford@protonmail.com> - 0.14.1
- Fixes a bug with file corruption in some scenarios from version 0.14.0.
* Fri Jul 14 2023 Jeff Stafford <jeff.stafford@protonmail.com> - 0.14.0
- We now use quickxorhash checksums for both personal and business accounts.
- The cache for file contents has been moved out of boltdb and onto the local filesystem.
This makes accessing, reading, and writing files faster than before.
- onedriver no longer allows you to create filenames that are not allowed by OneDrive.
* Tue Nov 1 2022 Jeff Stafford <jeff.stafford@protonmail.com> - 0.13.0
- The GUI has been rewritten in golang for ease of maintenance and code sharing with
the rest of the onedriver application.
- onedriver can now be configured with a config file at "~/.config/onedriver/config.yml".
- There is now a configuration menu in the GUI. You can now set a couple configuration
options that were previously only possible with "systemctl edit".
- The onedriver CLI now stores its cache in the same path that the GUI expects,
meaning that invoking the onedriver filesystem directly and via the GUI will share the
cache as long as the mountpoint is the same.
- onedriver now prefers multipart downloads for files >10MB instead of a single massive
GET request. This should significantly improve reliability when working with large files.
* Tue Nov 2 2021 Jeff Stafford <jeff.stafford@protonmail.com> - 0.12.0
- Major internal rewrite - onedriver now talks directly to the kernel instead of using
go-fuse/fs as an intermediary. This makes metadata operations a bit faster.
- onedriver better handles completion of multipart uploads and does not repeatedly
upload files on success. This significantly improves upload speed.
- Fixes a crash when writes begin at an offset beyond maximum file length. This fixes a
bug where running ld inside the filesystem would cause it to crash.
- Switch to using zerolog instead of logrus for logging. Though zerolog is supposedly
faster, the real reason to switch is that it's much easier for me (and hopefully you)
to read! Also, pretty colors!
- onedriver now gives you the option to choose to authenticate via the terminal when
authenticating via the new --no-browser option (this is the functionality from the
old "headless" build).
- Add a workaround for the TLS cert authentication issue from
https://bugzilla.redhat.com/show_bug.cgi?id=2024296
* Tue Aug 17 2021 Jeff Stafford <jeff.stafford@protonmail.com> - 0.11.2
- onedriver now disallows rmdir on nonempty directories.
- The filesystem now detects if it is offline more reliably.
* Sun Jul 11 2021 Jeff Stafford <jeff.stafford@protonmail.com> - 0.11.1
- Fix startup crash in onedriver-launcher when onedriver has not been launched before.
* Sat Jul 3 2021 Jeff Stafford <jeff.stafford@protonmail.com> - 0.11.0
- Now includes a snazzy GUI for managing your mountpoints. No terminal skills are required
to use onedriver now.
- The upload logic has been rewritten to no longer use 0-byte files as placeholders in
any scenario. This fixes a race condition where software like LibreOffice, KeepassXC, or
Krita could generate a 0-byte file instead of the intended file when the file was 4MB or
larger.
- onedriver now uses etags AND modification times when syncing server-side changes back to
the client. This reduces the number of times that files must be redownloaded because of
bad timestamp data from the Microsoft API.
* Mon May 17 2021 Jeff Stafford <jeff.stafford@protonmail.com> - 0.10.1
- Fix the onedriver .desktop launcher so it uses the new systemd unit name.
* Mon May 17 2021 Jeff Stafford <jeff.stafford@protonmail.com> - 0.10.0
- Add AUR installation method for Arch-based distros - thanks fmoledina!
- Add manpage for onedriver - thanks GenericGuy!
- The onedriver systemd service now restarts itself in the event of a crash -
thanks dipunm!
- Fix a rare crash while syncing server-side changes missing checksums.
- Fix a race-condition that caused uploaded files to occasionally be replaced by a 0-byte
copy (most commonly caused by the way LibreOffice saves files).
- Cap number of uploads that can be in-progress at any time to 5. This makes uploading
uploading directories with lots of files appear to go a bit faster.
- The account name is now displayed in the title bar if you need to reauthenticate to
OneDrive (makes it easier to know which credentials to use when prompted).
* Tue Sep 29 2020 Jeff Stafford <jeff.stafford@protonmail.com> - 0.9.2
- Adds fix for server-side update to Microsoft's authentication APIs.
- Fix a crash on auth renewal after computer suspend or other network interruption.
* Sat Jun 6 2020 Jeff Stafford <jeff.stafford@protonmail.com> - 0.9.1
- Filenames are now sanitized when uploading new files.
- onedriver now only syncs metadata changes for a file from server to client if its
contents have changed as well. This means that programs like LibreOffice will no longer
complain about their lockfiles being updated while saving.
* Wed Jun 3 2020 Jeff Stafford <jeff.stafford@protonmail.com> - 0.9.0
- Multiple OneDrive drives can now be mounted simultaneously via systemd.
- Uploads are now retried, with failed uploads retried automatically.
- In-progress uploads are now cached on disk and resumed the next time onedriver starts
if the upload is terminated prematurely (for instance, if a user shuts down their computer)
- All uploads are now verified against checksums of their local content.
* Thu Apr 2 2020 Jeff Stafford <jeff.stafford@protonmail.com> - 0.8.0
- Add a desktop launcher for single drive scenarios (better multi-drive support coming soon!).
- Fix for directories containing more than 200 items.
- Miscellaneous fixes and tests for OneDrive for Business
- Compatibility with Go 1.14
* Mon Feb 17 2020 Jeff Stafford <jeff.stafford@protonmail.com> - 0.7.2
- Allow use of disk cache after filesystem transitions from offline to online.
* Mon Feb 17 2020 Jeff Stafford <jeff.stafford@protonmail.com> - 0.7.1
- Fix for filesystem coming up blank after user systemd session start.
* Wed Feb 12 2020 Jeff Stafford <jeff.stafford@protonmail.com> - 0.7.0
- Now has drive username in Nautilus sidebar and small OneDrive logo on mountpoint.
- No longer requires manually closing the authentication window.
- Add systemd user service for automount on boot.
- Now transitions gracefully from online to offline (or vice-versa) depending on network availability.
* Thu Jan 16 2020 Jeff Stafford <jeff.stafford@protonmail.com> - 0.6
- Filesystem metadata is now serialized to disk at regular intervals.
- Using on-disk metadata, onedriver can now be used in read-only mode while offline.
- onedriver now stores its on-disk cache and auth tokens under the normal user cache directory.
* Mon Nov 4 2019 Jeff Stafford <jeff.stafford@protonmail.com> - 0.5
- Add a dedicated thread responsible for syncing remote changes to local cache every 30s.
- Add a dedicated thread to monitor, deduplicate, and retry uploads.
- Now all HTTP requests will retry server-side 5xx errors a single time by default.
- Print HTTP status code with Graph API errors where they occur.
- Purge file contents from memory on flush() and store them on disk.
- onedriver now validates on-disk file contents using checksums before using them.
* Sun Sep 15 2019 Jeff Stafford <jeff.stafford@protonmail.com> - 0.4
- Port to go-fuse version 2 and the new nodefs API for improved performance.
* Sat Sep 7 2019 Jeff Stafford <jeff.stafford@protonmail.com> - 0.3
- Initial .spec file