From: UsernameRandomlyGenerated <UsernameRandomlyGenerated@users.noreply.github.com>
To: ml@inbox.vuxu.org
Subject: Re: [PR PATCH] [Updated] bubblewrap: update to 0.5.0.
Date: Sun, 19 Dec 2021 21:53:45 +0100 [thread overview]
Message-ID: <20211219205345.BP5mv1jUp6cUBlREBuG0_XsQxQyJIT0B68ewVbB6pxc@z> (raw)
In-Reply-To: <gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-33372@inbox.vuxu.org>
[-- Attachment #1: Type: text/plain, Size: 1707 bytes --]
There is an updated pull request by UsernameRandomlyGenerated against master on the void-packages repository
https://github.com/UsernameRandomlyGenerated/void-packages bwrap050
https://github.com/void-linux/void-packages/pull/33372
bubblewrap: update to 0.5.0.
Musl problem seems to be resolved, tested flatpak steam, runs fine.
<!-- Mark items with [x] where applicable -->
#### General
- [ ] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)
#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR
<!--
If GitHub CI cannot be used to validate the build result (for example, if the
build is likely to take several hours), make sure to
[skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration).
When skipping CI, uncomment and fill out the following section.
Note: for builds that are likely to complete in less than 2 hours, it is not
acceptable to skip CI.
-->
<!--
#### Does it build and run successfully?
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [ ] I built this PR locally for my native architecture, (ARCH-LIBC)
- [ ] I built this PR locally for these architectures (if supported. mark crossbuilds):
- [ ] aarch64-musl
- [ ] armv7l
- [ ] armv6l-musl
-->
A patch file from https://github.com/void-linux/void-packages/pull/33372.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-bwrap050-33372.patch --]
[-- Type: text/x-diff, Size: 18493 bytes --]
From c4742c68ea703bd793e0533a0fe2704eb9db354c Mon Sep 17 00:00:00 2001
From: UsernameRandomlyGenerated <overtwist_wt@aleeas.com>
Date: Sun, 19 Dec 2021 22:53:15 +0100
Subject: [PATCH] bubblewrap: update to 0.5.0.
---
.../fix-TEMP_FAILTURE_RETRY-musl.patch | 19 --
.../patches/realpath-workaround.patch | 249 ------------------
srcpkgs/bubblewrap/template | 12 +-
srcpkgs/musl/patches/readlink.patch | 41 +++
srcpkgs/musl/patches/realpath.patch | 184 +++++++++++++
5 files changed, 228 insertions(+), 277 deletions(-)
delete mode 100644 srcpkgs/bubblewrap/patches/fix-TEMP_FAILTURE_RETRY-musl.patch
delete mode 100644 srcpkgs/bubblewrap/patches/realpath-workaround.patch
create mode 100644 srcpkgs/musl/patches/readlink.patch
create mode 100644 srcpkgs/musl/patches/realpath.patch
diff --git a/srcpkgs/bubblewrap/patches/fix-TEMP_FAILTURE_RETRY-musl.patch b/srcpkgs/bubblewrap/patches/fix-TEMP_FAILTURE_RETRY-musl.patch
deleted file mode 100644
index 1afa9e4f9832..000000000000
--- a/srcpkgs/bubblewrap/patches/fix-TEMP_FAILTURE_RETRY-musl.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- a/bubblewrap.c
-+++ b/bubblewrap.c
-@@ -42,6 +42,16 @@
- #define CLONE_NEWCGROUP 0x02000000 /* New cgroup namespace */
- #endif
-
-+/* taken from glibc unistd.h and fixes musl */
-+#ifndef TEMP_FAILURE_RETRY
-+#define TEMP_FAILURE_RETRY(expression) \
-+ (__extension__ \
-+ ({ long int __result; \
-+ do __result = (long int) (expression); \
-+ while (__result == -1L && errno == EINTR); \
-+ __result; }))
-+#endif
-+
- /* Globals to avoid having to use getuid(), since the uid/gid changes during runtime */
- static uid_t real_uid;
- static gid_t real_gid;
diff --git a/srcpkgs/bubblewrap/patches/realpath-workaround.patch b/srcpkgs/bubblewrap/patches/realpath-workaround.patch
deleted file mode 100644
index 45d1fd6231b6..000000000000
--- a/srcpkgs/bubblewrap/patches/realpath-workaround.patch
+++ /dev/null
@@ -1,249 +0,0 @@
---- /dev/null 2020-10-18 09:26:32.312745755 +0200
-+++ b/LICENSE.realpath 2020-10-18 11:09:14.119929076 +0200
-@@ -0,0 +1,29 @@
-+Copyright (c) 1989, 1991, 1993, 1995
-+ The Regents of the University of California. All rights reserved.
-+
-+This code is derived from software contributed to Berkeley by
-+Jan-Simon Pendry.
-+
-+Redistribution and use in source and binary forms, with or without
-+modification, are permitted provided that the following conditions
-+are met:
-+1. Redistributions of source code must retain the above copyright
-+ notice, this list of conditions and the following disclaimer.
-+2. Redistributions in binary form must reproduce the above copyright
-+ notice, this list of conditions and the following disclaimer in the
-+ documentation and/or other materials provided with the distribution.
-+3. Neither the name of the University nor the names of its contributors
-+ may be used to endorse or promote products derived from this software
-+ without specific prior written permission.
-+
-+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+SUCH DAMAGE.
---- a/bind-mount.c 2018-09-26 14:55:17.000000000 +0200
-+++ b/bind-mount.c 2020-10-18 11:08:37.822931452 +0200
-@@ -22,6 +22,198 @@
-
- #include "utils.h"
- #include "bind-mount.h"
-+#include <stdlib.h>
-+#include <string.h>
-+#include <limits.h>
-+#include <unistd.h>
-+#include <sys/stat.h>
-+#include <errno.h>
-+#include <fcntl.h>
-+#include <sys/param.h>
-+
-+#ifndef __GLIBC__
-+/*
-+ * Copyright (c) 1989, 1991, 1993, 1995
-+ * The Regents of the University of California. All rights reserved.
-+ *
-+ * This code is derived from software contributed to Berkeley by
-+ * Jan-Simon Pendry.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ * 3. Neither the name of the University nor the names of its contributors
-+ * may be used to endorse or promote products derived from this software
-+ * without specific prior written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+ */
-+char *realpath_int(const char *, char*);
-+char *
-+realpath_int(const char * path, char * resolved)
-+{
-+ struct stat sb;
-+ int idx = 0, nlnk = 0;
-+ const char *q;
-+ char *p, wbuf[2][MAXPATHLEN], *fres;
-+ size_t len;
-+ ssize_t n;
-+
-+ /* POSIX sez we must test for this */
-+ if (path == NULL) {
-+ errno = EINVAL;
-+ return NULL;
-+ }
-+
-+ if (resolved == NULL) {
-+ fres = resolved = malloc(MAXPATHLEN);
-+ if (resolved == NULL)
-+ return NULL;
-+ } else
-+ fres = NULL;
-+
-+
-+ /*
-+ * Build real path one by one with paying an attention to .,
-+ * .. and symbolic link.
-+ */
-+
-+ /*
-+ * `p' is where we'll put a new component with prepending
-+ * a delimiter.
-+ */
-+ p = resolved;
-+
-+ if (*path == '\0') {
-+ *p = '\0';
-+ errno = ENOENT;
-+ goto out;
-+ }
-+
-+ /* If relative path, start from current working directory. */
-+ if (*path != '/') {
-+ /* check for resolved pointer to appease coverity */
-+ if (resolved && getcwd(resolved, MAXPATHLEN) == NULL) {
-+ p[0] = '.';
-+ p[1] = '\0';
-+ goto out;
-+ }
-+ len = strlen(resolved);
-+ if (len > 1)
-+ p += len;
-+ }
-+
-+loop:
-+ /* Skip any slash. */
-+ while (*path == '/')
-+ path++;
-+
-+ if (*path == '\0') {
-+ if (p == resolved)
-+ *p++ = '/';
-+ *p = '\0';
-+ return resolved;
-+ }
-+
-+ /* Find the end of this component. */
-+ q = path;
-+ do
-+ q++;
-+ while (*q != '/' && *q != '\0');
-+
-+ /* Test . or .. */
-+ if (path[0] == '.') {
-+ if (q - path == 1) {
-+ path = q;
-+ goto loop;
-+ }
-+ if (path[1] == '.' && q - path == 2) {
-+ /* Trim the last component. */
-+ if (p != resolved)
-+ while (*--p != '/')
-+ continue;
-+ path = q;
-+ goto loop;
-+ }
-+ }
-+
-+ /* Append this component. */
-+ if (p - resolved + 1 + q - path + 1 > MAXPATHLEN) {
-+ errno = ENAMETOOLONG;
-+ if (p == resolved)
-+ *p++ = '/';
-+ *p = '\0';
-+ goto out;
-+ }
-+ p[0] = '/';
-+ memcpy(&p[1], path,
-+ /* LINTED We know q > path. */
-+ q - path);
-+ p[1 + q - path] = '\0';
-+
-+ /*
-+ * If this component is a symlink, toss it and prepend link
-+ * target to unresolved path.
-+ */
-+ if (lstat(resolved, &sb) == -1)
-+ goto out;
-+
-+ if (S_ISLNK(sb.st_mode)) {
-+ if (nlnk++ >= MAXSYMLINKS) {
-+ errno = ELOOP;
-+ goto out;
-+ }
-+ n = readlink(resolved, wbuf[idx], sizeof(wbuf[0]) - 1);
-+ if (n < 0)
-+ goto out;
-+ if (n == 0) {
-+ errno = ENOENT;
-+ goto out;
-+ }
-+
-+ /* Append unresolved path to link target and switch to it. */
-+ if (n + (len = strlen(q)) + 1 > sizeof(wbuf[0])) {
-+ errno = ENAMETOOLONG;
-+ goto out;
-+ }
-+ memcpy(&wbuf[idx][n], q, len + 1);
-+ path = wbuf[idx];
-+ idx ^= 1;
-+
-+ /* If absolute symlink, start from root. */
-+ if (*path == '/')
-+ p = resolved;
-+ goto loop;
-+ }
-+ if (*q == '/' && !S_ISDIR(sb.st_mode)) {
-+ errno = ENOTDIR;
-+ goto out;
-+ }
-+
-+ /* Advance both resolved and unresolved path. */
-+ p += 1 + q - path;
-+ path = q;
-+ goto loop;
-+out:
-+ free(fres);
-+ return NULL;
-+}
-+#endif
-
- static char *
- skip_token (char *line, bool eat_whitespace)
-@@ -395,9 +587,14 @@
-
- /* The mount operation will resolve any symlinks in the destination
- path, so to find it in the mount table we need to do that too. */
-+#ifdef __GLIBC__
- resolved_dest = realpath (dest, NULL);
-- if (resolved_dest == NULL)
-+#else
-+ resolved_dest = realpath_int (dest, NULL);
-+#endif
-+ if (resolved_dest == NULL) {
- return 2;
-+ }
-
- mount_tab = parse_mountinfo (proc_fd, resolved_dest);
- if (mount_tab[0].mountpoint == NULL)
diff --git a/srcpkgs/bubblewrap/template b/srcpkgs/bubblewrap/template
index 4df1dac59395..32a7aad50457 100644
--- a/srcpkgs/bubblewrap/template
+++ b/srcpkgs/bubblewrap/template
@@ -1,7 +1,7 @@
# Template file for 'bubblewrap'
pkgname=bubblewrap
-version=0.4.1
-revision=2
+version=0.5.0
+revision=1
build_style=gnu-configure
hostmakedepends="libxslt docbook-xsl pkg-config"
makedepends="libcap-devel"
@@ -10,10 +10,4 @@ maintainer="Duncaen <duncaen@voidlinux.org>"
license="LGPL-2.0-or-later"
homepage="https://github.com/containers/bubblewrap"
distfiles="${homepage}/releases/download/v${version}/${pkgname}-${version}.tar.xz"
-checksum=b9c69b9b1c61a608f34325c8e1a495229bacf6e4a07cbb0c80cf7a814d7ccc03
-
-post_install() {
- if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
- vlicense LICENSE.realpath
- fi
-}
+checksum=16fdaf33799d63104e347e0133f909196fe90d0c50515d010bcb422eb5a00818
diff --git a/srcpkgs/musl/patches/readlink.patch b/srcpkgs/musl/patches/readlink.patch
new file mode 100644
index 000000000000..06f359168a2d
--- /dev/null
+++ b/srcpkgs/musl/patches/readlink.patch
@@ -0,0 +1,41 @@
+diff --git a/src/unistd/readlink.c b/src/unistd/readlink.c
+index a152d524..32f4537f 100644
+--- a/src/unistd/readlink.c
++++ b/src/unistd/readlink.c
+@@ -4,9 +4,16 @@
+
+ ssize_t readlink(const char *restrict path, char *restrict buf, size_t bufsize)
+ {
++ char dummy[1];
++ if (!bufsize) {
++ buf = dummy;
++ bufsize = 1;
++ }
+ #ifdef SYS_readlink
+- return syscall(SYS_readlink, path, buf, bufsize);
++ int r = __syscall(SYS_readlink, path, buf, bufsize);
+ #else
+- return syscall(SYS_readlinkat, AT_FDCWD, path, buf, bufsize);
++ int r = __syscall(SYS_readlinkat, AT_FDCWD, path, buf, bufsize);
+ #endif
++ if (buf == dummy && r > 0) r = 0;
++ return __syscall_ret(r);
+ }
+diff --git a/src/unistd/readlinkat.c b/src/unistd/readlinkat.c
+index 9af45cd5..f79d3d14 100644
+--- a/src/unistd/readlinkat.c
++++ b/src/unistd/readlinkat.c
+@@ -3,5 +3,12 @@
+
+ ssize_t readlinkat(int fd, const char *restrict path, char *restrict buf, size_t bufsize)
+ {
+- return syscall(SYS_readlinkat, fd, path, buf, bufsize);
++ char dummy[1];
++ if (!bufsize) {
++ buf = dummy;
++ bufsize = 1;
++ }
++ int r = __syscall(SYS_readlinkat, fd, path, buf, bufsize);
++ if (buf == dummy && r > 0) r = 0;
++ return __syscall_ret(r);
+ }
diff --git a/srcpkgs/musl/patches/realpath.patch b/srcpkgs/musl/patches/realpath.patch
new file mode 100644
index 000000000000..3d4bc9ae079d
--- /dev/null
+++ b/srcpkgs/musl/patches/realpath.patch
@@ -0,0 +1,184 @@
+diff --git a/src/misc/realpath.c b/src/misc/realpath.c
+index d2708e59..db8b74dc 100644
+--- a/src/misc/realpath.c
++++ b/src/misc/realpath.c
+@@ -1,43 +1,156 @@
+ #include <stdlib.h>
+ #include <limits.h>
+-#include <sys/stat.h>
+-#include <fcntl.h>
+ #include <errno.h>
+ #include <unistd.h>
+ #include <string.h>
+-#include "syscall.h"
++
++static size_t slash_len(const char *s)
++{
++ const char *s0 = s;
++ while (*s == '/') s++;
++ return s-s0;
++}
+
+ char *realpath(const char *restrict filename, char *restrict resolved)
+ {
+- int fd;
+- ssize_t r;
+- struct stat st1, st2;
+- char buf[15+3*sizeof(int)];
+- char tmp[PATH_MAX];
++ char stack[PATH_MAX+1];
++ char output[PATH_MAX];
++ size_t p, q, l, l0, cnt=0, nup=0;
++ int check_dir=0;
+
+ if (!filename) {
+ errno = EINVAL;
+ return 0;
+ }
++ l = strnlen(filename, sizeof stack);
++ if (!l) {
++ errno = ENOENT;
++ return 0;
++ }
++ if (l >= PATH_MAX) goto toolong;
++ p = sizeof stack - l - 1;
++ q = 0;
++ memcpy(stack+p, filename, l+1);
++
++ /* Main loop. Each iteration pops the next part from stack of
++ * remaining path components and consumes any slashes that follow.
++ * If not a link, it's moved to output; if a link, contents are
++ * pushed to the stack. */
++restart:
++ for (; ; p+=slash_len(stack+p)) {
++ /* If stack starts with /, the whole component is / or //
++ * and the output state must be reset. */
++ if (stack[p] == '/') {
++ check_dir=0;
++ nup=0;
++ q=0;
++ output[q++] = '/';
++ p++;
++ /* Initial // is special. */
++ if (stack[p] == '/' && stack[p+1] != '/')
++ output[q++] = '/';
++ continue;
++ }
++
++ char *z = __strchrnul(stack+p, '/');
++ l0 = l = z-(stack+p);
+
+- fd = sys_open(filename, O_PATH|O_NONBLOCK|O_CLOEXEC);
+- if (fd < 0) return 0;
+- __procfdname(buf, fd);
++ if (!l && !check_dir) break;
+
+- r = readlink(buf, tmp, sizeof tmp - 1);
+- if (r < 0) goto err;
+- tmp[r] = 0;
++ /* Skip any . component but preserve check_dir status. */
++ if (l==1 && stack[p]=='.') {
++ p += l;
++ continue;
++ }
+
+- fstat(fd, &st1);
+- r = stat(tmp, &st2);
+- if (r<0 || st1.st_dev != st2.st_dev || st1.st_ino != st2.st_ino) {
+- if (!r) errno = ELOOP;
+- goto err;
++ /* Copy next component onto output at least temporarily, to
++ * call readlink, but wait to advance output position until
++ * determining it's not a link. */
++ if (q && output[q-1] != '/') {
++ if (!p) goto toolong;
++ stack[--p] = '/';
++ l++;
++ }
++ if (q+l >= PATH_MAX) goto toolong;
++ memcpy(output+q, stack+p, l);
++ output[q+l] = 0;
++ p += l;
++
++ int up = 0;
++ if (l0==2 && stack[p-2]=='.' && stack[p-1]=='.') {
++ up = 1;
++ /* Any non-.. path components we could cancel start
++ * after nup repetitions of the 3-byte string "../";
++ * if there are none, accumulate .. components to
++ * later apply to cwd, if needed. */
++ if (q <= 3*nup) {
++ nup++;
++ q += l;
++ continue;
++ }
++ /* When previous components are already known to be
++ * directories, processing .. can skip readlink. */
++ if (!check_dir) goto skip_readlink;
++ }
++ ssize_t k = readlink(output, stack, p);
++ if (k==p) goto toolong;
++ if (!k) {
++ errno = ENOENT;
++ return 0;
++ }
++ if (k<0) {
++ if (errno != EINVAL) return 0;
++skip_readlink:
++ check_dir = 0;
++ if (up) {
++ while(q && output[q-1]!='/') q--;
++ if (q>1 && (q>2 || output[0]!='/')) q--;
++ continue;
++ }
++ if (l0) q += l;
++ check_dir = stack[p];
++ continue;
++ }
++ if (++cnt == SYMLOOP_MAX) {
++ errno = ELOOP;
++ return 0;
++ }
++
++ /* If link contents end in /, strip any slashes already on
++ * stack to avoid /->// or //->/// or spurious toolong. */
++ if (stack[k-1]=='/') while (stack[p]=='/') p++;
++ p -= k;
++ memmove(stack+p, stack, k);
++
++ /* Skip the stack advancement in case we have a new
++ * absolute base path. */
++ goto restart;
+ }
+
+- __syscall(SYS_close, fd);
+- return resolved ? strcpy(resolved, tmp) : strdup(tmp);
+-err:
+- __syscall(SYS_close, fd);
++ output[q] = 0;
++
++ if (output[0] != '/') {
++ if (!getcwd(stack, sizeof stack)) return 0;
++ l = strlen(stack);
++ /* Cancel any initial .. components. */
++ p = 0;
++ while (nup--) {
++ while(l>1 && stack[l-1]!='/') l--;
++ if (l>1) l--;
++ p += 2;
++ if (p<q) p++;
++ }
++ if (q-p && stack[l-1]!='/') stack[l++] = '/';
++ if (l + (q-p) + 1 >= PATH_MAX) goto toolong;
++ memmove(output + l, output + p, q - p + 1);
++ memcpy(output, stack, l);
++ q = l + q-p;
++ }
++
++ if (resolved) return memcpy(resolved, output, q+1);
++ else return strdup(output);
++
++toolong:
++ errno = ENAMETOOLONG;
+ return 0;
+ }
next prev parent reply other threads:[~2021-12-19 20:53 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-06 7:14 [PR PATCH] " UsernameRandomlyGenerated
2021-10-06 7:17 ` [PR PATCH] [Updated] " UsernameRandomlyGenerated
2021-10-06 10:42 ` q66
2021-10-06 21:52 ` Johnnynator
2021-10-06 22:04 ` q66
2021-10-07 0:32 ` ericonr
2021-10-07 8:04 ` UsernameRandomlyGenerated
2021-10-07 11:27 ` leahneukirchen
2021-10-07 11:27 ` leahneukirchen
2021-10-07 12:39 ` ericonr
2021-11-18 4:18 ` NoEiBk3
2021-12-02 10:21 ` UsernameRandomlyGenerated
2021-12-19 20:41 ` [PR PATCH] [Updated] " UsernameRandomlyGenerated
2021-12-19 20:46 ` UsernameRandomlyGenerated
2021-12-19 20:53 ` UsernameRandomlyGenerated [this message]
2021-12-19 20:57 ` UsernameRandomlyGenerated
2021-12-19 21:01 ` UsernameRandomlyGenerated
2022-01-03 8:53 ` [PR PATCH] [Updated] " UsernameRandomlyGenerated
2022-02-05 14:32 ` UsernameRandomlyGenerated
2022-02-05 15:20 ` UsernameRandomlyGenerated
2022-02-05 16:07 ` paper42
2022-02-05 16:47 ` [PR PATCH] [Updated] " UsernameRandomlyGenerated
2022-02-05 16:50 ` UsernameRandomlyGenerated
2022-02-05 16:51 ` UsernameRandomlyGenerated
2022-02-05 19:16 ` q66
2022-04-18 13:51 ` [PR PATCH] [Updated] " UsernameRandomlyGenerated
2022-04-18 13:52 ` UsernameRandomlyGenerated
2022-06-17 18:20 ` [PR PATCH] [Closed]: " UsernameRandomlyGenerated
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211219205345.BP5mv1jUp6cUBlREBuG0_XsQxQyJIT0B68ewVbB6pxc@z \
--to=usernamerandomlygenerated@users.noreply.github.com \
--cc=ml@inbox.vuxu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).