[openwrt/openwrt] ucode: update to Git HEAD (2025-11-07)

LEDE Commits lede-commits at lists.infradead.org
Tue Nov 11 12:28:27 PST 2025


hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/985394bf264075ffb2c6b84fecc2940329eac008

commit 985394bf264075ffb2c6b84fecc2940329eac008
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Mon Nov 10 00:42:32 2025 +0100

    ucode: update to Git HEAD (2025-11-07)
    
    e8a7290e55c0 socket: fix `recv()` incorrectly reporting unrelated errors
    ddde611fb9d4 socket: fix convertion of hw addresses to ucode strings
    924ccc95be32 vm: make sure uc_vm_insn_to_name() always returns a value
    754590d26f23 lexer: fix parsing \xHH and \0OOO escape sequences
    623f550e579a fs: add dup2() function
    6c9385a99edd fs: add mkdtemp() method for creating temporary directories
    ea579046a619 fs: reset errno to zero in get_fd()
    
    The removed patches are integrated upstream.
    
    Fixes: https://github.com/jow-/ucode/issues/332
    Fixes: https://github.com/jow-/ucode/issues/337
    Link: https://github.com/openwrt/openwrt/pull/20718
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 package/utils/ucode/Makefile                       |   6 +-
 ...fix-parsing-xHH-and-0OOO-escape-sequences.patch |  29 ------
 .../ucode/patches/120-fs-add-dup2-function.patch   |  75 ---------------
 ...add-read_nb-method-for-non-blocking-reads.patch |   4 +-
 ...emp-method-for-creating-temporary-directo.patch | 107 ---------------------
 5 files changed, 5 insertions(+), 216 deletions(-)

diff --git a/package/utils/ucode/Makefile b/package/utils/ucode/Makefile
index 5cd0a762a2..45740848fb 100644
--- a/package/utils/ucode/Makefile
+++ b/package/utils/ucode/Makefile
@@ -12,9 +12,9 @@ PKG_RELEASE:=1
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=https://github.com/jow-/ucode.git
-PKG_SOURCE_DATE:=2025-09-29
-PKG_SOURCE_VERSION:=1090abb125490d2f541f68453cc251daf94f8b04
-PKG_MIRROR_HASH:=b68d893867add47b92d519a631c4e3bacec52eafae088b6a64ba3935f169bb15
+PKG_SOURCE_DATE:=2025-11-07
+PKG_SOURCE_VERSION:=ea579046a619e5325b994780bf2ce1ffde448794
+PKG_MIRROR_HASH:=4c152c337963eda588650f439f7633fc1ead20864d8939e45fd95563ea2b0b4f
 PKG_MAINTAINER:=Jo-Philipp Wich <jo at mein.io>
 PKG_LICENSE:=ISC
 
diff --git a/package/utils/ucode/patches/100-lexer-fix-parsing-xHH-and-0OOO-escape-sequences.patch b/package/utils/ucode/patches/100-lexer-fix-parsing-xHH-and-0OOO-escape-sequences.patch
deleted file mode 100644
index 70845259f7..0000000000
--- a/package/utils/ucode/patches/100-lexer-fix-parsing-xHH-and-0OOO-escape-sequences.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From: Felix Fietkau <nbd at nbd.name>
-Date: Sun, 5 Oct 2025 11:25:15 +0200
-Subject: [PATCH] lexer: fix parsing \xHH and \0OOO escape sequences
-
-Both need to add add bytes, not UTF-8 sequences.
-
-Signed-off-by: Felix Fietkau <nbd at nbd.name>
----
-
---- a/lexer.c
-+++ b/lexer.c
-@@ -277,7 +277,7 @@ parse_escape(uc_lexer_t *lex, const char
- 			code = code * 16 + hex(ch);
- 		}
- 
--		append_utf8(lex, code);
-+		uc_vector_push(&lex->buffer, code);
- 	}
- 
- 	/* octal or letter */
-@@ -293,7 +293,7 @@ parse_escape(uc_lexer_t *lex, const char
- 			if (code > 255)
- 				return emit_op(lex, -3, TK_ERROR, ucv_string_new("Invalid escape sequence"));
- 
--			append_utf8(lex, code);
-+			uc_vector_push(&lex->buffer, code);
- 		}
- 
- 		/* ... no octal sequence, handle potential regex macros */
diff --git a/package/utils/ucode/patches/120-fs-add-dup2-function.patch b/package/utils/ucode/patches/120-fs-add-dup2-function.patch
deleted file mode 100644
index e3097f136c..0000000000
--- a/package/utils/ucode/patches/120-fs-add-dup2-function.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From: Felix Fietkau <nbd at nbd.name>
-Date: Wed, 8 Oct 2025 22:15:42 +0200
-Subject: [PATCH] fs: add dup2() function
-
-Add dup2() function to duplicate file descriptors, useful for redirecting
-standard streams in child processes.
-
-Signed-off-by: Felix Fietkau <nbd at nbd.name>
----
-
---- a/lib/fs.c
-+++ b/lib/fs.c
-@@ -1278,6 +1278,54 @@ uc_fs_fdopen(uc_vm_t *vm, size_t nargs)
- 	return ucv_resource_create(vm, "fs.file", fp);
- }
- 
-+/**
-+ * Duplicates a file descriptor.
-+ *
-+ * This function duplicates the file descriptor `oldfd` to `newfd`. If `newfd`
-+ * was previously open, it is silently closed before being reused.
-+ *
-+ * Returns `true` on success.
-+ * Returns `null` on error.
-+ *
-+ * @function module:fs#dup2
-+ *
-+ * @param {number} oldfd
-+ * The file descriptor to duplicate.
-+ *
-+ * @param {number} newfd
-+ * The file descriptor number to duplicate to.
-+ *
-+ * @returns {?boolean}
-+ *
-+ * @example
-+ * // Redirect stderr to a log file
-+ * const logfile = open('/tmp/error.log', 'w');
-+ * dup2(logfile.fileno(), 2);
-+ * logfile.close();
-+ */
-+static uc_value_t *
-+uc_fs_dup2(uc_vm_t *vm, size_t nargs)
-+{
-+	uc_value_t *oldfd_arg = uc_fn_arg(0);
-+	uc_value_t *newfd_arg = uc_fn_arg(1);
-+	int oldfd, newfd;
-+
-+	oldfd = get_fd(vm, oldfd_arg);
-+
-+	if (oldfd == -1)
-+		err_return(errno ? errno : EBADF);
-+
-+	newfd = get_fd(vm, newfd_arg);
-+
-+	if (newfd == -1)
-+		err_return(errno ? errno : EBADF);
-+
-+	if (dup2(oldfd, newfd) == -1)
-+		err_return(errno);
-+
-+	return ucv_boolean_new(true);
-+}
-+
- 
- /**
-  * Represents a handle for interacting with a directory opened by `opendir()`.
-@@ -2890,6 +2938,7 @@ static const uc_function_list_t global_f
- 	{ "error",		uc_fs_error },
- 	{ "open",		uc_fs_open },
- 	{ "fdopen",		uc_fs_fdopen },
-+	{ "dup2",		uc_fs_dup2 },
- 	{ "opendir",	uc_fs_opendir },
- 	{ "popen",		uc_fs_popen },
- 	{ "readlink",	uc_fs_readlink },
diff --git a/package/utils/ucode/patches/121-fs-add-read_nb-method-for-non-blocking-reads.patch b/package/utils/ucode/patches/121-fs-add-read_nb-method-for-non-blocking-reads.patch
index f258869239..483a631528 100644
--- a/package/utils/ucode/patches/121-fs-add-read_nb-method-for-non-blocking-reads.patch
+++ b/package/utils/ucode/patches/121-fs-add-read_nb-method-for-non-blocking-reads.patch
@@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/lib/fs.c
 +++ b/lib/fs.c
-@@ -674,6 +674,116 @@ uc_fs_read(uc_vm_t *vm, size_t nargs)
+@@ -675,6 +675,116 @@ uc_fs_read(uc_vm_t *vm, size_t nargs)
  }
  
  /**
@@ -127,7 +127,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
   * Writes a chunk of data to the file handle.
   *
   * In case the given data is not a string, it is converted to a string before
-@@ -2910,6 +3020,7 @@ static const uc_function_list_t proc_fns
+@@ -2991,6 +3101,7 @@ static const uc_function_list_t proc_fns
  
  static const uc_function_list_t file_fns[] = {
  	{ "read",		uc_fs_read },
diff --git a/package/utils/ucode/patches/122-fs-add-mkdtemp-method-for-creating-temporary-directo.patch b/package/utils/ucode/patches/122-fs-add-mkdtemp-method-for-creating-temporary-directo.patch
deleted file mode 100644
index e6da8bf525..0000000000
--- a/package/utils/ucode/patches/122-fs-add-mkdtemp-method-for-creating-temporary-directo.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-From: Felix Fietkau <nbd at nbd.name>
-Date: Thu, 9 Oct 2025 14:11:55 +0200
-Subject: [PATCH] fs: add mkdtemp() method for creating temporary directories
-
-Returns the directory path as a string, following the same template
-handling pattern as mkstemp().
-
-Signed-off-by: Felix Fietkau <nbd at nbd.name>
----
-
---- a/lib/fs.c
-+++ b/lib/fs.c
-@@ -2636,6 +2636,86 @@ uc_fs_mkstemp(uc_vm_t *vm, size_t nargs)
- }
- 
- /**
-+ * Creates a unique temporary directory based on the given template.
-+ *
-+ * If the template argument is given and contains a relative path, the created
-+ * directory will be placed relative to the current working directory.
-+ *
-+ * If the template argument is given and contains an absolute path, the created
-+ * directory will be placed relative to the given directory.
-+ *
-+ * If the template argument is given but does not contain a directory separator,
-+ * the directory will be placed in `/tmp/`.
-+ *
-+ * If no template argument is given, the default `/tmp/XXXXXX` is used.
-+ *
-+ * The template argument must end with six consecutive X characters (`XXXXXX`),
-+ * which will be replaced with a random string to create the unique directory name.
-+ * If the template does not end with `XXXXXX`, it will be automatically appended.
-+ *
-+ * Returns a string containing the path of the created directory on success.
-+ *
-+ * Returns `null` if an error occurred, e.g. on insufficient permissions or
-+ * inaccessible directory.
-+ *
-+ * @function module:fs#mkdtemp
-+ *
-+ * @param {string} [template="/tmp/XXXXXX"]
-+ * The path template to use when forming the temporary directory name.
-+ *
-+ * @returns {?string}
-+ *
-+ * @example
-+ * // Create a unique temporary directory in the current working directory
-+ * const tempDir = mkdtemp('./data-XXXXXX');
-+ */
-+static uc_value_t *
-+uc_fs_mkdtemp(uc_vm_t *vm, size_t nargs)
-+{
-+	uc_value_t *template = uc_fn_arg(0);
-+	bool ends_with_template = false;
-+	char *path, *t, *result;
-+	uc_value_t *rv;
-+	size_t l;
-+
-+	if (template && ucv_type(template) != UC_STRING)
-+		err_return(EINVAL);
-+
-+	t = ucv_string_get(template);
-+	l = ucv_string_length(template);
-+
-+	ends_with_template = (l >= 6 && strcmp(&t[l - 6], "XXXXXX") == 0);
-+
-+	if (t && strchr(t, '/')) {
-+		if (ends_with_template)
-+			xasprintf(&path, "%s", t);
-+		else
-+			xasprintf(&path, "%s.XXXXXX", t);
-+	}
-+	else if (t) {
-+		if (ends_with_template)
-+			xasprintf(&path, "/tmp/%s", t);
-+		else
-+			xasprintf(&path, "/tmp/%s.XXXXXX", t);
-+	}
-+	else {
-+		xasprintf(&path, "/tmp/XXXXXX");
-+	}
-+
-+	result = mkdtemp(path);
-+
-+	if (!result) {
-+		free(path);
-+		err_return(errno);
-+	}
-+
-+	rv = ucv_string_new(result);
-+	free(path);
-+
-+	return rv;
-+}
-+
-+/**
-  * Checks the accessibility of a file or directory.
-  *
-  * The optional modes argument specifies the access modes which should be
-@@ -3069,6 +3149,7 @@ static const uc_function_list_t global_f
- 	{ "basename",	uc_fs_basename },
- 	{ "lsdir",		uc_fs_lsdir },
- 	{ "mkstemp",	uc_fs_mkstemp },
-+	{ "mkdtemp",	uc_fs_mkdtemp },
- 	{ "access",		uc_fs_access },
- 	{ "readfile",	uc_fs_readfile },
- 	{ "writefile",	uc_fs_writefile },




More information about the lede-commits mailing list