Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package dtc for openSUSE:Factory checked in at 2025-02-11 21:20:59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/dtc (Old) and /work/SRC/openSUSE:Factory/.dtc.new.19470 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "dtc" Tue Feb 11 21:20:59 2025 rev:43 rq:1244773 version:1.7.2 Changes: -------- --- /work/SRC/openSUSE:Factory/dtc/dtc.changes 2025-02-06 22:02:06.517935650 +0100 +++ /work/SRC/openSUSE:Factory/.dtc.new.19470/dtc.changes 2025-02-11 21:21:25.430314083 +0100 @@ -1,0 +2,13 @@ +Fri Feb 7 15:24:23 UTC 2025 - Guillaume GARDET <guillaume.gar...@opensuse.org> + +- Update to 1.7.2: + * pylibfdt: Don't emit warnings from swig generate C code + * fdtoverlay: provide better error message for missing /__symbols__ + * pylibfdt/libfdt.i: Use SWIG_AppendOutput + * Escape spaces in depfile with backslashes. + * libfdt.h: whitespace consistency fixups + * libfdt.h: typo and consistency fixes +- Revert previous commit and use upstream fix for glibc 2.41: + * ce1d858.patch + +------------------------------------------------------------------- Old: ---- dtc-1.7.1.tar.gz dtc-1.7.1.tar.sign New: ---- ce1d858.patch dtc-1.7.2.tar.gz dtc-1.7.2.tar.sign BETA DEBUG BEGIN: New:- Revert previous commit and use upstream fix for glibc 2.41: * ce1d858.patch BETA DEBUG END: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ dtc.spec ++++++ --- /var/tmp/diff_new_pack.ecAWCB/_old 2025-02-11 21:21:26.086341145 +0100 +++ /var/tmp/diff_new_pack.ecAWCB/_new 2025-02-11 21:21:26.086341145 +0100 @@ -18,7 +18,7 @@ %define sover 1 Name: dtc -Version: 1.7.1 +Version: 1.7.2 Release: 0 Summary: Device-tree compiler License: GPL-2.0-or-later @@ -28,6 +28,8 @@ Source20: baselibs.conf # From http://gibson.dropbear.id.au/ Source21: dtc.keyring +# PATCH-FIX-UPSTREAM - https://github.com/dgibson/dtc/commit/ce1d858 +Patch1: ce1d858.patch BuildRequires: bison BuildRequires: flex BuildRequires: libyaml-devel @@ -59,7 +61,7 @@ This package provides development files for libfdt %prep -%setup -q +%autosetup -p1 %build %make_build EXTRA_CFLAGS="%{optflags} -pie" LDFLAGS="%{optflags}" @@ -72,7 +74,6 @@ %check export EXTRA_CFLAGS="%{optflags}" -export CC="gcc -Wa,--noexecstack" %make_build check %files ++++++ ce1d858.patch ++++++ >From ce1d8588880aecd7af264e422a16a8b33617cef7 Mon Sep 17 00:00:00 2001 From: David Gibson <da...@gibson.dropbear.id.au> Date: Wed, 5 Feb 2025 13:39:43 +1100 Subject: [PATCH] tests: When building .so from -O asm output mark as non-executable stack For certain tests, we take the output from dtc -O asm and build it into a .so shared library which we then dlopen() for further tests. Because we don't mark it otherwise, it's treated as requiring an executable stack, which dlopen() refuses to open as of glibc-2.41. Of course, the library is pure data, no code, so it certainly doesn't need an executable stack. Add the -znoexecstack linker option to avoid the error. Fixes: https://github.com/dgibson/dtc/issues/163 Reported-by: Xi Ruoyao <xry...@xry111.site> Signed-off-by: David Gibson <da...@gibson.dropbear.id.a> --- tests/run_tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/run_tests.sh b/tests/run_tests.sh index 937b1288..f0b51c04 100755 --- a/tests/run_tests.sh +++ b/tests/run_tests.sh @@ -201,7 +201,7 @@ run_dtc_test () { } asm_to_so () { - $CC -shared -o $1.test.so "$SRCDIR/data.S" $1.test.s + $CC -shared -Wl,-znoexecstack -o $1.test.so "$SRCDIR/data.S" $1.test.s } asm_to_so_test () { ++++++ dtc-1.7.1.tar.gz -> dtc-1.7.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dtc-1.7.1/VERSION.txt new/dtc-1.7.2/VERSION.txt --- old/dtc-1.7.1/VERSION.txt 2024-08-17 10:22:16.000000000 +0200 +++ new/dtc-1.7.2/VERSION.txt 2024-11-06 04:01:37.000000000 +0100 @@ -1 +1 @@ -1.7.1 +1.7.2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dtc-1.7.1/dtc.c new/dtc-1.7.2/dtc.c --- old/dtc-1.7.1/dtc.c 2024-08-17 10:22:16.000000000 +0200 +++ new/dtc-1.7.2/dtc.c 2024-11-06 04:01:37.000000000 +0100 @@ -289,7 +289,9 @@ if (!depfile) die("Couldn't open dependency file %s: %s\n", depname, strerror(errno)); - fprintf(depfile, "%s:", outname); + + fprint_path_escaped(depfile, outname); + fputc(':', depfile); } if (inform == NULL) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dtc-1.7.1/fdtoverlay.c new/dtc-1.7.2/fdtoverlay.c --- old/dtc-1.7.1/fdtoverlay.c 2024-08-17 10:22:16.000000000 +0200 +++ new/dtc-1.7.2/fdtoverlay.c 2024-11-06 04:01:37.000000000 +0100 @@ -46,6 +46,7 @@ char *tmp = NULL; char *tmpo; int ret; + bool has_symbols; /* * We take copies first, because a failed apply can trash @@ -62,6 +63,8 @@ fdt_strerror(ret)); goto fail; } + ret = fdt_path_offset(tmp, "/__symbols__"); + has_symbols = ret >= 0; memcpy(tmpo, overlay, fdt_totalsize(overlay)); @@ -74,6 +77,11 @@ if (ret) { fprintf(stderr, "\nFailed to apply '%s': %s\n", name, fdt_strerror(ret)); + if (!has_symbols) { + fprintf(stderr, + "base blob does not have a '/__symbols__' node, " + "make sure you have compiled the base blob with '-@' option\n"); + } goto fail; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dtc-1.7.1/libfdt/libfdt.h new/dtc-1.7.2/libfdt/libfdt.h --- old/dtc-1.7.1/libfdt/libfdt.h 2024-08-17 10:22:16.000000000 +0200 +++ new/dtc-1.7.2/libfdt/libfdt.h 2024-11-06 04:01:37.000000000 +0100 @@ -14,7 +14,7 @@ #endif #define FDT_FIRST_SUPPORTED_VERSION 0x02 -#define FDT_LAST_COMPATIBLE_VERSION 0x10 +#define FDT_LAST_COMPATIBLE_VERSION 0x10 #define FDT_LAST_SUPPORTED_VERSION 0x11 /* Error codes: informative error codes */ @@ -285,7 +285,7 @@ /** * fdt_header_size_ - internal function to get header size from a version number - * @version: devicetree version number + * @version: device tree version number * * Return: size of DTB header in bytes */ @@ -554,7 +554,7 @@ * -FDT_ERR_BADPATH, given path does not begin with '/' and the first * component is not a valid alias * -FDT_ERR_NOTFOUND, if the requested node does not exist - * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADMAGIC, * -FDT_ERR_BADVERSION, * -FDT_ERR_BADSTATE, * -FDT_ERR_BADSTRUCTURE, @@ -599,7 +599,7 @@ * structure block offset of the property (>=0), on success * -FDT_ERR_NOTFOUND, if the requested node has no properties * -FDT_ERR_BADOFFSET, if nodeoffset did not point to an FDT_BEGIN_NODE tag - * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADMAGIC, * -FDT_ERR_BADVERSION, * -FDT_ERR_BADSTATE, * -FDT_ERR_BADSTRUCTURE, @@ -620,7 +620,7 @@ * structure block offset of the next property (>=0), on success * -FDT_ERR_NOTFOUND, if the given property is the last in its node * -FDT_ERR_BADOFFSET, if nodeoffset did not point to an FDT_PROP tag - * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADMAGIC, * -FDT_ERR_BADVERSION, * -FDT_ERR_BADSTATE, * -FDT_ERR_BADSTRUCTURE, @@ -764,7 +764,7 @@ * to within the device blob itself, not a copy of the value). If * lenp is non-NULL, the length of the property value is also * returned, in the integer pointed to by lenp. If namep is non-NULL, - * the property's namne will also be returned in the char * pointed to + * the property's name will also be returned in the char * pointed to * by namep (this will be a pointer to within the device tree's string * block, not a new copy of the name). * @@ -772,7 +772,7 @@ * pointer to the property's value * if lenp is non-NULL, *lenp contains the length of the property * value (>=0) - * if namep is non-NULL *namep contiains a pointer to the property + * if namep is non-NULL *namep contains a pointer to the property * name. * NULL, on error * if lenp is non-NULL, *lenp contains an error code (<0): @@ -866,7 +866,7 @@ /** * fdt_get_alias_namelen - get alias based on substring * @fdt: pointer to the device tree blob - * @name: name of the alias th look up + * @name: name of the alias to look up * @namelen: number of characters of name to consider * * Identical to fdt_get_alias(), but only examine the first @namelen @@ -883,7 +883,7 @@ /** * fdt_get_alias - retrieve the path referenced by a given alias * @fdt: pointer to the device tree blob - * @name: name of the alias th look up + * @name: name of the alias to look up * * fdt_get_alias() retrieves the value of a given alias. That is, the * value of the property named @name in the node /aliases. @@ -1259,8 +1259,8 @@ * * returns: * 0 <= n < FDT_MAX_NCELLS, on success - * 2, if the node has no #address-cells property - * -FDT_ERR_BADNCELLS, if the node has a badly formatted or invalid + * 2, if the node has no #address-cells property + * -FDT_ERR_BADNCELLS, if the node has a badly formatted or invalid * #address-cells property * -FDT_ERR_BADMAGIC, * -FDT_ERR_BADVERSION, @@ -1280,8 +1280,8 @@ * * returns: * 0 <= n < FDT_MAX_NCELLS, on success - * 1, if the node has no #size-cells property - * -FDT_ERR_BADNCELLS, if the node has a badly formatted or invalid + * 1, if the node has no #size-cells property + * -FDT_ERR_BADNCELLS, if the node has a badly formatted or invalid * #size-cells property * -FDT_ERR_BADMAGIC, * -FDT_ERR_BADVERSION, @@ -1698,7 +1698,7 @@ * @len: length of the property value * @prop_data: return pointer to property data * - * fdt_setprop_placeholer() allocates the named property in the given node. + * fdt_setprop_placeholder() allocates the named property in the given node. * If the property exists it is resized. In either case a pointer to the * property data is returned. * @@ -2059,7 +2059,7 @@ * @nodeoffset: offset of the node whose property to nop * @name: name of the property to nop * - * fdt_del_property() will delete the given property. + * fdt_delprop() will delete the given property. * * This function will delete data from the blob, and will therefore * change the offsets of some existing nodes. @@ -2111,8 +2111,7 @@ * change the offsets of some existing nodes. * * returns: - * structure block offset of the created nodeequested subnode (>=0), on - * success + * structure block offset of the created subnode (>=0), on success * -FDT_ERR_NOTFOUND, if the requested subnode does not exist * -FDT_ERR_BADOFFSET, if parentoffset did not point to an FDT_BEGIN_NODE * tag @@ -2122,7 +2121,7 @@ * blob to contain the new node * -FDT_ERR_NOSPACE * -FDT_ERR_BADLAYOUT - * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADMAGIC, * -FDT_ERR_BADVERSION, * -FDT_ERR_BADSTATE, * -FDT_ERR_BADSTRUCTURE, @@ -2167,7 +2166,7 @@ * returns: * 0, on success * -FDT_ERR_NOSPACE, there's not enough space in the base device tree - * -FDT_ERR_NOTFOUND, the overlay points to some inexistant nodes or + * -FDT_ERR_NOTFOUND, the overlay points to some nonexistent nodes or * properties in the base DT * -FDT_ERR_BADPHANDLE, * -FDT_ERR_BADOVERLAY, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dtc-1.7.1/pylibfdt/Makefile.pylibfdt new/dtc-1.7.2/pylibfdt/Makefile.pylibfdt --- old/dtc-1.7.1/pylibfdt/Makefile.pylibfdt 2024-08-17 10:22:16.000000000 +0200 +++ new/dtc-1.7.2/pylibfdt/Makefile.pylibfdt 2024-11-06 04:01:37.000000000 +0100 @@ -15,6 +15,7 @@ SETUPFLAGS += --quiet endif +$(PYMODULE): WARNINGS = # suppress warnings from generated code $(PYMODULE): $(PYLIBFDT_srcs) $(LIBFDT_archive) $(SETUP) @$(VECHO) PYMOD $@ CFLAGS="$(CFLAGS) -Wno-error" $(PYTHON) $(SETUP) $(SETUPFLAGS) build_ext diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dtc-1.7.1/pylibfdt/libfdt.i new/dtc-1.7.2/pylibfdt/libfdt.i --- old/dtc-1.7.1/pylibfdt/libfdt.i 2024-08-17 10:22:16.000000000 +0200 +++ new/dtc-1.7.2/pylibfdt/libfdt.i 2024-11-06 04:01:37.000000000 +0100 @@ -1137,7 +1137,7 @@ fdt_string(fdt1, fdt32_to_cpu($1->nameoff))); buff = PyByteArray_FromStringAndSize( (const char *)($1 + 1), fdt32_to_cpu($1->len)); - resultobj = SWIG_Python_AppendOutput(resultobj, buff); + resultobj = SWIG_AppendOutput(resultobj, buff); } } @@ -1178,7 +1178,7 @@ %typemap(argout) int *depth { PyObject *val = Py_BuildValue("i", *arg$argnum); - resultobj = SWIG_Python_AppendOutput(resultobj, val); + resultobj = SWIG_AppendOutput(resultobj, val); } %apply int *depth { int *depth }; @@ -1190,7 +1190,7 @@ %typemap(argout) uint64_t * { PyObject *val = PyLong_FromUnsignedLongLong(*arg$argnum); - resultobj = SWIG_Python_AppendOutput(resultobj, val); + resultobj = SWIG_AppendOutput(resultobj, val); } %include "cstring.i" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dtc-1.7.1/srcpos.c new/dtc-1.7.2/srcpos.c --- old/dtc-1.7.1/srcpos.c 2024-08-17 10:22:16.000000000 +0200 +++ new/dtc-1.7.2/srcpos.c 2024-11-06 04:01:37.000000000 +0100 @@ -160,8 +160,10 @@ strerror(errno)); } - if (depfile) - fprintf(depfile, " %s", fullname); + if (depfile) { + fputc(' ', depfile); + fprint_path_escaped(depfile, fullname); + } if (fullnamep) *fullnamep = fullname; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dtc-1.7.1/util.c new/dtc-1.7.2/util.c --- old/dtc-1.7.1/util.c 2024-08-17 10:22:16.000000000 +0200 +++ new/dtc-1.7.2/util.c 2024-11-06 04:01:37.000000000 +0100 @@ -23,6 +23,22 @@ #include "util.h" #include "version_gen.h" +void fprint_path_escaped(FILE *fp, const char *path) +{ + const char *p = path; + + while (*p) { + if (*p == ' ') { + fputc('\\', fp); + fputc(' ', fp); + } else { + fputc(*p, fp); + } + + p++; + } +} + char *xstrdup(const char *s) { int len = strlen(s) + 1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dtc-1.7.1/util.h new/dtc-1.7.2/util.h --- old/dtc-1.7.1/util.h 2024-08-17 10:22:16.000000000 +0200 +++ new/dtc-1.7.2/util.h 2024-11-06 04:01:37.000000000 +0100 @@ -42,6 +42,11 @@ exit(1); } +/** + * Writes path to fp, escaping spaces with a backslash. + */ +void fprint_path_escaped(FILE *fp, const char *path); + static inline void *xmalloc(size_t len) { void *new = malloc(len);