* update gvfs to 1.56.1-2

This commit is contained in:
Alexander Baldeck 2025-02-19 22:51:41 +01:00
parent dce00d4e87
commit e1d2d6d98d
3 changed files with 283 additions and 3 deletions

View File

@ -1,7 +1,7 @@
pkgbase = gvfs
pkgdesc = Virtual filesystem implementation for GIO
pkgver = 1.56.1
pkgrel = 1
pkgrel = 2
url = https://gitlab.gnome.org/GNOME/gvfs
arch = x86_64
arch = powerpc64le
@ -50,8 +50,10 @@ pkgbase = gvfs
depends = udisks2
source = git+https://gitlab.gnome.org/GNOME/gvfs.git#tag=1.56.1
source = gvfsd.hook
source = 0001-nfs-Support-libnfs-6-backport-to-1.56.patch
b2sums = 27f18f387c73244db68995cea5d8b25f95588d3ec78a3a245b8facbfba551f2959339356fe58b1a49f035282379c6f067a2ed2b0f6836ea28f64996949f2a050
b2sums = a0356a49c419dc69466c591d5e69701b865bb97ca336ea6d8bca0f0d9173b832b73d9f2c701d572a0245957d39c9a38ab6dff4ea7c737c34f2a1a28d93c0427f
b2sums = 22a0f4868f1c5e7a920b3c88f6191e3f79f90a43ee7b79c0bc00a5c63fc8ab1fb08f3aa7febb2e0e8562c7201ccfe91ddbb2b0ca0206e484b0d8186948b11e93
pkgname = gvfs
optdepends = gvfs-afc: AFC support (Apple mobile devices)

View File

@ -0,0 +1,275 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: "Jan Alexander Steffens (heftig)" <heftig@archlinux.org>
Date: Sun, 19 Jan 2025 14:28:25 +0100
Subject: [PATCH] nfs: Support libnfs 6 (backport to 1.56)
---
daemon/gvfsbackendnfs.c | 79 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 79 insertions(+)
diff --git a/daemon/gvfsbackendnfs.c b/daemon/gvfsbackendnfs.c
index c9e9ed60b938..1b66bb040e1d 100644
--- a/daemon/gvfsbackendnfs.c
+++ b/daemon/gvfsbackendnfs.c
@@ -407,27 +407,33 @@ read_cb (int err, struct nfs_context *ctx, void *data, void *private_data)
{
GVfsJobRead *op_job = G_VFS_JOB_READ (job);
+#ifndef LIBNFS_API_V2
memcpy (op_job->buffer, data, err);
+#endif
g_vfs_job_read_set_size (op_job, err);
g_vfs_job_succeeded (job);
}
else
{
g_vfs_job_failed_from_errno (job, -err);
}
}
static gboolean
try_read (GVfsBackend *backend,
GVfsJobRead *job,
GVfsBackendHandle _handle,
char *buffer,
gsize bytes_requested)
{
GVfsBackendNfs *op_backend = G_VFS_BACKEND_NFS (backend);
struct nfsfh *fh = _handle;
+#ifdef LIBNFS_API_V2
+ nfs_read_async (op_backend->ctx, fh, buffer, bytes_requested, read_cb, job);
+#else
nfs_read_async (op_backend->ctx, fh, bytes_requested, read_cb, job);
+#endif
return TRUE;
}
@@ -755,29 +761,40 @@ try_append_to (GVfsBackend *backend,
{
GVfsBackendNfs *op_backend = G_VFS_BACKEND_NFS (backend);
+#ifdef LIBNFS_API_V2
+ nfs_open2_async (op_backend->ctx,
+ filename,
+ O_CREAT | O_APPEND,
+ (flags & G_FILE_CREATE_PRIVATE ? 0600 : 0666) & ~op_backend->umask,
+ append_cb, job);
+#else
nfs_create_async (op_backend->ctx,
filename,
O_APPEND,
(flags & G_FILE_CREATE_PRIVATE ? 0600 : 0666) & ~op_backend->umask,
append_cb, job);
+#endif
return TRUE;
}
/* The following types and functions implement an asynchronous copy which calls
* a callback function with a boolean success or failure. This is used in some
* cases for backup files when replacing. */
#define COPY_BLKSIZE (64 * 1024)
typedef void (*CopyFileCallback) (gboolean success, void *private_data);
typedef struct
{
struct nfsfh *srcfh;
struct nfsfh *destfh;
char *dest;
int mode;
CopyFileCallback cb;
void *private_data;
+#ifdef LIBNFS_API_V2
+ char buffer[COPY_BLKSIZE];
+#endif
} CopyHandle;
static void
@@ -805,56 +822,74 @@ copy_write_cb (int err,
CopyHandle *handle = private_data;
if (err > 0)
+#ifdef LIBNFS_API_V2
+ nfs_read_async (ctx, handle->srcfh, handle->buffer, COPY_BLKSIZE, copy_read_cb, handle);
+#else
nfs_read_async (ctx, handle->srcfh, COPY_BLKSIZE, copy_read_cb, handle);
+#endif
else
copy_handle_complete (ctx, handle, FALSE);
}
static void
copy_read_cb (int err, struct nfs_context *ctx, void *data, void *private_data)
{
CopyHandle *handle = private_data;
if (err == 0)
copy_handle_complete (ctx, handle, TRUE);
else if (err > 0)
+#ifdef LIBNFS_API_V2
+ nfs_write_async (ctx, handle->destfh, handle->buffer, err, copy_write_cb, handle);
+#else
nfs_write_async (ctx, handle->destfh, err, data, copy_write_cb, handle);
+#endif
else
copy_handle_complete (ctx, handle, FALSE);
}
static void
copy_open_dest_cb (int err,
struct nfs_context *ctx,
void *data, void *private_data)
{
CopyHandle *handle = private_data;
if (err == 0)
{
handle->destfh = data;
+#ifdef LIBNFS_API_V2
+ nfs_read_async (ctx, handle->srcfh, handle->buffer, COPY_BLKSIZE, copy_read_cb, handle);
+#else
nfs_read_async (ctx, handle->srcfh, COPY_BLKSIZE, copy_read_cb, handle);
+#endif
}
else
{
copy_handle_complete (ctx, handle, FALSE);
}
}
static void
copy_open_source_cb (int err,
struct nfs_context *ctx,
void *data, void *private_data)
{
CopyHandle *handle = private_data;
if (err == 0)
{
handle->srcfh = data;
+#ifdef LIBNFS_API_V2
+ nfs_open2_async (ctx,
+ handle->dest, O_CREAT | O_TRUNC, handle->mode & 0777,
+ copy_open_dest_cb, handle);
+#else
nfs_create_async (ctx,
handle->dest, O_TRUNC, handle->mode & 0777,
copy_open_dest_cb, handle);
+#endif
g_free (handle->dest);
}
else
@@ -935,11 +970,19 @@ replace_backup_chown_cb (int err,
GVfsJobOpenForWrite *op_job = G_VFS_JOB_OPEN_FOR_WRITE (job);
GVfsBackendNfs *op_backend = G_VFS_BACKEND_NFS (op_job->backend);
+#ifdef LIBNFS_API_V2
+ nfs_open2_async (op_backend->ctx,
+ op_job->filename,
+ O_CREAT | O_TRUNC,
+ (op_job->flags & G_FILE_CREATE_PRIVATE ? 0600 : 0666) & ~op_backend->umask,
+ replace_trunc_cb, handle);
+#else
nfs_create_async (op_backend->ctx,
op_job->filename,
O_TRUNC,
(op_job->flags & G_FILE_CREATE_PRIVATE ? 0600 : 0666) & ~op_backend->umask,
replace_trunc_cb, handle);
+#endif
}
else
{
@@ -1019,11 +1062,19 @@ replace_truncate (struct nfs_context *ctx, WriteHandle *handle)
}
else
{
+#ifdef LIBNFS_API_V2
+ nfs_open2_async (ctx,
+ op_job->filename,
+ O_CREAT | O_TRUNC,
+ (op_job->flags & G_FILE_CREATE_PRIVATE ? 0600 : 0666) & ~op_backend->umask,
+ replace_trunc_cb, handle);
+#else
nfs_create_async (ctx,
op_job->filename,
O_TRUNC,
(op_job->flags & G_FILE_CREATE_PRIVATE ? 0600 : 0666) & ~op_backend->umask,
replace_trunc_cb, handle);
+#endif
}
}
@@ -1211,11 +1262,19 @@ replace_stat_cb (int err,
handle->tempname = g_build_filename (dirname, basename, NULL);
g_free (dirname);
+#ifdef LIBNFS_API_V2
+ nfs_open2_async (ctx,
+ handle->tempname,
+ O_CREAT | O_EXCL,
+ (op_job->flags & G_FILE_CREATE_PRIVATE ? 0600 : 0666) & ~op_backend->umask,
+ replace_temp_cb, handle);
+#else
nfs_create_async (ctx,
handle->tempname,
O_EXCL,
(op_job->flags & G_FILE_CREATE_PRIVATE ? 0600 : 0666) & ~op_backend->umask,
replace_temp_cb, handle);
+#endif
}
else
{
@@ -1299,11 +1358,19 @@ try_replace (GVfsBackend *backend,
{
GVfsBackendNfs *op_backend = G_VFS_BACKEND_NFS (backend);
+#ifdef LIBNFS_API_V2
+ nfs_open2_async (op_backend->ctx,
+ filename,
+ O_CREAT | O_EXCL,
+ (flags & G_FILE_CREATE_PRIVATE ? 0600 : 0666) & ~op_backend->umask,
+ replace_create_cb, job);
+#else
nfs_create_async (op_backend->ctx,
filename,
O_EXCL,
(flags & G_FILE_CREATE_PRIVATE ? 0600 : 0666) & ~op_backend->umask,
replace_create_cb, job);
+#endif
return TRUE;
}
@@ -1337,11 +1404,19 @@ try_create (GVfsBackend *backend,
{
GVfsBackendNfs *op_backend = G_VFS_BACKEND_NFS (backend);
+#ifdef LIBNFS_API_V2
+ nfs_open2_async (op_backend->ctx,
+ filename,
+ O_CREAT | O_EXCL,
+ (flags & G_FILE_CREATE_PRIVATE ? 0600 : 0666) & ~op_backend->umask,
+ create_cb, job);
+#else
nfs_create_async (op_backend->ctx,
filename,
O_EXCL,
(flags & G_FILE_CREATE_PRIVATE ? 0600 : 0666) & ~op_backend->umask,
create_cb, job);
+#endif
return TRUE;
}
@@ -1372,7 +1447,11 @@ try_write (GVfsBackend *backend,
WriteHandle *handle = _handle;
struct nfsfh *fh = handle->fh;
+#ifdef LIBNFS_API_V2
+ nfs_write_async (op_backend->ctx, fh, buffer, buffer_size, write_cb, job);
+#else
nfs_write_async (op_backend->ctx, fh, buffer_size, buffer, write_cb, job);
+#endif
return TRUE;
}

View File

@ -18,7 +18,7 @@ pkgname=(
gvfs-wsdd
)
pkgver=1.56.1
pkgrel=1
pkgrel=2
pkgdesc="Virtual filesystem implementation for GIO"
url="https://gitlab.gnome.org/GNOME/gvfs"
arch=(x86_64 powerpc64le powerpc64 powerpc riscv64)
@ -69,12 +69,15 @@ groups=(gnome)
source=(
"git+https://gitlab.gnome.org/GNOME/gvfs.git#tag=$pkgver"
gvfsd.hook
0001-nfs-Support-libnfs-6-backport-to-1.56.patch
)
b2sums=('27f18f387c73244db68995cea5d8b25f95588d3ec78a3a245b8facbfba551f2959339356fe58b1a49f035282379c6f067a2ed2b0f6836ea28f64996949f2a050'
'a0356a49c419dc69466c591d5e69701b865bb97ca336ea6d8bca0f0d9173b832b73d9f2c701d572a0245957d39c9a38ab6dff4ea7c737c34f2a1a28d93c0427f')
'a0356a49c419dc69466c591d5e69701b865bb97ca336ea6d8bca0f0d9173b832b73d9f2c701d572a0245957d39c9a38ab6dff4ea7c737c34f2a1a28d93c0427f'
'22a0f4868f1c5e7a920b3c88f6191e3f79f90a43ee7b79c0bc00a5c63fc8ab1fb08f3aa7febb2e0e8562c7201ccfe91ddbb2b0ca0206e484b0d8186948b11e93')
prepare() {
cd gvfs
git apply -3 ../0001-nfs-Support-libnfs-6-backport-to-1.56.patch
}
build() {