summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta-gnome/recipes-gnome/gvfs/gvfs/0001-nfs-Support-libnfs-6-backport-to-1.56.patch278
-rw-r--r--meta-gnome/recipes-gnome/gvfs/gvfs_1.56.1.bb2
2 files changed, 279 insertions, 1 deletions
diff --git a/meta-gnome/recipes-gnome/gvfs/gvfs/0001-nfs-Support-libnfs-6-backport-to-1.56.patch b/meta-gnome/recipes-gnome/gvfs/gvfs/0001-nfs-Support-libnfs-6-backport-to-1.56.patch
new file mode 100644
index 0000000000..63fb5a0e89
--- /dev/null
+++ b/meta-gnome/recipes-gnome/gvfs/gvfs/0001-nfs-Support-libnfs-6-backport-to-1.56.patch
@@ -0,0 +1,278 @@
1From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2From: "Jan Alexander Steffens (heftig)" <heftig@archlinux.org>
3Date: Sun, 19 Jan 2025 14:28:25 +0100
4Subject: [PATCH] nfs: Support libnfs 6 (backport to 1.56)
5
6Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/gvfs/-/commit/50c0845928983830ebe12d1d2ba82a6735cec77b]
7
8Signed-off-by: Markus Volk <f_l_k@t-online.de>
9---
10 daemon/gvfsbackendnfs.c | 79 +++++++++++++++++++++++++++++++++++++++++
11 1 file changed, 79 insertions(+)
12
13diff --git a/daemon/gvfsbackendnfs.c b/daemon/gvfsbackendnfs.c
14index c9e9ed60b938..1b66bb040e1d 100644
15--- a/daemon/gvfsbackendnfs.c
16+++ b/daemon/gvfsbackendnfs.c
17@@ -407,27 +407,33 @@ read_cb (int err, struct nfs_context *ctx, void *data, void *private_data)
18 {
19 GVfsJobRead *op_job = G_VFS_JOB_READ (job);
20
21+#ifndef LIBNFS_API_V2
22 memcpy (op_job->buffer, data, err);
23+#endif
24 g_vfs_job_read_set_size (op_job, err);
25 g_vfs_job_succeeded (job);
26 }
27 else
28 {
29 g_vfs_job_failed_from_errno (job, -err);
30 }
31 }
32
33 static gboolean
34 try_read (GVfsBackend *backend,
35 GVfsJobRead *job,
36 GVfsBackendHandle _handle,
37 char *buffer,
38 gsize bytes_requested)
39 {
40 GVfsBackendNfs *op_backend = G_VFS_BACKEND_NFS (backend);
41 struct nfsfh *fh = _handle;
42
43+#ifdef LIBNFS_API_V2
44+ nfs_read_async (op_backend->ctx, fh, buffer, bytes_requested, read_cb, job);
45+#else
46 nfs_read_async (op_backend->ctx, fh, bytes_requested, read_cb, job);
47+#endif
48 return TRUE;
49 }
50
51@@ -755,29 +761,40 @@ try_append_to (GVfsBackend *backend,
52 {
53 GVfsBackendNfs *op_backend = G_VFS_BACKEND_NFS (backend);
54
55+#ifdef LIBNFS_API_V2
56+ nfs_open2_async (op_backend->ctx,
57+ filename,
58+ O_CREAT | O_APPEND,
59+ (flags & G_FILE_CREATE_PRIVATE ? 0600 : 0666) & ~op_backend->umask,
60+ append_cb, job);
61+#else
62 nfs_create_async (op_backend->ctx,
63 filename,
64 O_APPEND,
65 (flags & G_FILE_CREATE_PRIVATE ? 0600 : 0666) & ~op_backend->umask,
66 append_cb, job);
67+#endif
68 return TRUE;
69 }
70
71 /* The following types and functions implement an asynchronous copy which calls
72 * a callback function with a boolean success or failure. This is used in some
73 * cases for backup files when replacing. */
74 #define COPY_BLKSIZE (64 * 1024)
75
76 typedef void (*CopyFileCallback) (gboolean success, void *private_data);
77
78 typedef struct
79 {
80 struct nfsfh *srcfh;
81 struct nfsfh *destfh;
82 char *dest;
83 int mode;
84 CopyFileCallback cb;
85 void *private_data;
86+#ifdef LIBNFS_API_V2
87+ char buffer[COPY_BLKSIZE];
88+#endif
89 } CopyHandle;
90
91 static void
92@@ -805,56 +822,74 @@ copy_write_cb (int err,
93 CopyHandle *handle = private_data;
94
95 if (err > 0)
96+#ifdef LIBNFS_API_V2
97+ nfs_read_async (ctx, handle->srcfh, handle->buffer, COPY_BLKSIZE, copy_read_cb, handle);
98+#else
99 nfs_read_async (ctx, handle->srcfh, COPY_BLKSIZE, copy_read_cb, handle);
100+#endif
101 else
102 copy_handle_complete (ctx, handle, FALSE);
103 }
104
105 static void
106 copy_read_cb (int err, struct nfs_context *ctx, void *data, void *private_data)
107 {
108 CopyHandle *handle = private_data;
109
110 if (err == 0)
111 copy_handle_complete (ctx, handle, TRUE);
112 else if (err > 0)
113+#ifdef LIBNFS_API_V2
114+ nfs_write_async (ctx, handle->destfh, handle->buffer, err, copy_write_cb, handle);
115+#else
116 nfs_write_async (ctx, handle->destfh, err, data, copy_write_cb, handle);
117+#endif
118 else
119 copy_handle_complete (ctx, handle, FALSE);
120 }
121
122 static void
123 copy_open_dest_cb (int err,
124 struct nfs_context *ctx,
125 void *data, void *private_data)
126 {
127 CopyHandle *handle = private_data;
128
129 if (err == 0)
130 {
131 handle->destfh = data;
132
133+#ifdef LIBNFS_API_V2
134+ nfs_read_async (ctx, handle->srcfh, handle->buffer, COPY_BLKSIZE, copy_read_cb, handle);
135+#else
136 nfs_read_async (ctx, handle->srcfh, COPY_BLKSIZE, copy_read_cb, handle);
137+#endif
138 }
139 else
140 {
141 copy_handle_complete (ctx, handle, FALSE);
142 }
143 }
144
145 static void
146 copy_open_source_cb (int err,
147 struct nfs_context *ctx,
148 void *data, void *private_data)
149 {
150 CopyHandle *handle = private_data;
151
152 if (err == 0)
153 {
154 handle->srcfh = data;
155+#ifdef LIBNFS_API_V2
156+ nfs_open2_async (ctx,
157+ handle->dest, O_CREAT | O_TRUNC, handle->mode & 0777,
158+ copy_open_dest_cb, handle);
159+#else
160 nfs_create_async (ctx,
161 handle->dest, O_TRUNC, handle->mode & 0777,
162 copy_open_dest_cb, handle);
163+#endif
164 g_free (handle->dest);
165 }
166 else
167@@ -935,11 +970,19 @@ replace_backup_chown_cb (int err,
168 GVfsJobOpenForWrite *op_job = G_VFS_JOB_OPEN_FOR_WRITE (job);
169 GVfsBackendNfs *op_backend = G_VFS_BACKEND_NFS (op_job->backend);
170
171+#ifdef LIBNFS_API_V2
172+ nfs_open2_async (op_backend->ctx,
173+ op_job->filename,
174+ O_CREAT | O_TRUNC,
175+ (op_job->flags & G_FILE_CREATE_PRIVATE ? 0600 : 0666) & ~op_backend->umask,
176+ replace_trunc_cb, handle);
177+#else
178 nfs_create_async (op_backend->ctx,
179 op_job->filename,
180 O_TRUNC,
181 (op_job->flags & G_FILE_CREATE_PRIVATE ? 0600 : 0666) & ~op_backend->umask,
182 replace_trunc_cb, handle);
183+#endif
184 }
185 else
186 {
187@@ -1019,11 +1062,19 @@ replace_truncate (struct nfs_context *ctx, WriteHandle *handle)
188 }
189 else
190 {
191+#ifdef LIBNFS_API_V2
192+ nfs_open2_async (ctx,
193+ op_job->filename,
194+ O_CREAT | O_TRUNC,
195+ (op_job->flags & G_FILE_CREATE_PRIVATE ? 0600 : 0666) & ~op_backend->umask,
196+ replace_trunc_cb, handle);
197+#else
198 nfs_create_async (ctx,
199 op_job->filename,
200 O_TRUNC,
201 (op_job->flags & G_FILE_CREATE_PRIVATE ? 0600 : 0666) & ~op_backend->umask,
202 replace_trunc_cb, handle);
203+#endif
204 }
205 }
206
207@@ -1211,11 +1262,19 @@ replace_stat_cb (int err,
208 handle->tempname = g_build_filename (dirname, basename, NULL);
209 g_free (dirname);
210
211+#ifdef LIBNFS_API_V2
212+ nfs_open2_async (ctx,
213+ handle->tempname,
214+ O_CREAT | O_EXCL,
215+ (op_job->flags & G_FILE_CREATE_PRIVATE ? 0600 : 0666) & ~op_backend->umask,
216+ replace_temp_cb, handle);
217+#else
218 nfs_create_async (ctx,
219 handle->tempname,
220 O_EXCL,
221 (op_job->flags & G_FILE_CREATE_PRIVATE ? 0600 : 0666) & ~op_backend->umask,
222 replace_temp_cb, handle);
223+#endif
224 }
225 else
226 {
227@@ -1299,11 +1358,19 @@ try_replace (GVfsBackend *backend,
228 {
229 GVfsBackendNfs *op_backend = G_VFS_BACKEND_NFS (backend);
230
231+#ifdef LIBNFS_API_V2
232+ nfs_open2_async (op_backend->ctx,
233+ filename,
234+ O_CREAT | O_EXCL,
235+ (flags & G_FILE_CREATE_PRIVATE ? 0600 : 0666) & ~op_backend->umask,
236+ replace_create_cb, job);
237+#else
238 nfs_create_async (op_backend->ctx,
239 filename,
240 O_EXCL,
241 (flags & G_FILE_CREATE_PRIVATE ? 0600 : 0666) & ~op_backend->umask,
242 replace_create_cb, job);
243+#endif
244 return TRUE;
245 }
246
247@@ -1337,11 +1404,19 @@ try_create (GVfsBackend *backend,
248 {
249 GVfsBackendNfs *op_backend = G_VFS_BACKEND_NFS (backend);
250
251+#ifdef LIBNFS_API_V2
252+ nfs_open2_async (op_backend->ctx,
253+ filename,
254+ O_CREAT | O_EXCL,
255+ (flags & G_FILE_CREATE_PRIVATE ? 0600 : 0666) & ~op_backend->umask,
256+ create_cb, job);
257+#else
258 nfs_create_async (op_backend->ctx,
259 filename,
260 O_EXCL,
261 (flags & G_FILE_CREATE_PRIVATE ? 0600 : 0666) & ~op_backend->umask,
262 create_cb, job);
263+#endif
264 return TRUE;
265 }
266
267@@ -1372,7 +1447,11 @@ try_write (GVfsBackend *backend,
268 WriteHandle *handle = _handle;
269 struct nfsfh *fh = handle->fh;
270
271+#ifdef LIBNFS_API_V2
272+ nfs_write_async (op_backend->ctx, fh, buffer, buffer_size, write_cb, job);
273+#else
274 nfs_write_async (op_backend->ctx, fh, buffer_size, buffer, write_cb, job);
275+#endif
276 return TRUE;
277 }
278
diff --git a/meta-gnome/recipes-gnome/gvfs/gvfs_1.56.1.bb b/meta-gnome/recipes-gnome/gvfs/gvfs_1.56.1.bb
index 9c1e77ac25..97c83f751c 100644
--- a/meta-gnome/recipes-gnome/gvfs/gvfs_1.56.1.bb
+++ b/meta-gnome/recipes-gnome/gvfs/gvfs_1.56.1.bb
@@ -18,7 +18,7 @@ DEPENDS += "\
18RDEPENDS:${PN} += "gsettings-desktop-schemas" 18RDEPENDS:${PN} += "gsettings-desktop-schemas"
19 19
20SRC_URI = "https://download.gnome.org/sources/${BPN}/${@gnome_verdir("${PV}")}/${BPN}-${PV}.tar.xz;name=archive" 20SRC_URI = "https://download.gnome.org/sources/${BPN}/${@gnome_verdir("${PV}")}/${BPN}-${PV}.tar.xz;name=archive"
21 21SRC_URI += "file://0001-nfs-Support-libnfs-6-backport-to-1.56.patch"
22SRC_URI[archive.sha256sum] = "86731ccec679648f8734e237b1de190ebdee6e4c8c0f56f454c31588e509aa10" 22SRC_URI[archive.sha256sum] = "86731ccec679648f8734e237b1de190ebdee6e4c8c0f56f454c31588e509aa10"
23 23
24ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}" 24ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"