From geoff at infradead.org Wed May 1 02:53:05 2024 From: geoff at infradead.org (Geoff Levand) Date: Wed, 1 May 2024 11:53:05 +0900 Subject: [Buildroot] [PATCH] package/flannel: Bump to version 0.25.1 Message-ID: Signed-off-by: Geoff Levand diff --git a/package/flannel/flannel.hash b/package/flannel/flannel.hash index 2e0198debe..97700d37ec 100644 --- a/package/flannel/flannel.hash +++ b/package/flannel/flannel.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 98dde4eda016fec9aa6394cb4b283bdd972deda6ef9e1f2c3669dd2719ea1fe9 flannel-0.24.4.tar.gz +sha256 c0de130efa2b14bc0f057a17df07bfd61154b30ce4a5eca24594c5b533ce661d flannel-0.25.1.tar.gz sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/flannel/flannel.mk b/package/flannel/flannel.mk index 5cdfa0e09e..aa24644764 100644 --- a/package/flannel/flannel.mk +++ b/package/flannel/flannel.mk @@ -4,7 +4,7 @@ # ################################################################################ -FLANNEL_VERSION = 0.24.4 +FLANNEL_VERSION = 0.25.1 FLANNEL_SITE = $(call github,flannel-io,flannel,v$(FLANNEL_VERSION)) FLANNEL_LICENSE = Apache-2.0 From thomas.petazzoni at bootlin.com Wed May 1 03:59:29 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 01 May 2024 03:59:29 -0000 Subject: [Buildroot] [autobuild.buildroot.net] Daily results for 2024-04-30 Message-ID: Hello, Autobuild statistics for 2024-04-30 =================================== branch | OK | NOK | TIM | TOT | 2024.02.x | 10 | 4 | 0 | 14 | master | 19 | 37 | 0 | 56 | Classification of failures by reason for master ----------------------------------------------- apcupsd-3.14.14 | 5 libressl-3.8.4 | 4 unknown | 3 libcamera-apps-1.2.1 | 2 linux-6.8.6 | 2 asterisk-20.7.0 | 1 containerd-1.7.14 | 1 coreutils-9.3 | 1 dmraid-1.0.0.rc16-3 | 1 docker-cli-26.0.2 | 1 elfutils-0.189 | 1 freeipmi-1.6.14 | 1 gdk-pixbuf-2.42.10 | 1 gobject-introspection-1.76.1 | 1 host-delve-1.22.1 | 1 host-fakeroot-1.34 | 1 libffi-3.4.6 | 1 libgeotiff-1.7.1 | 1 libsepol-3.5 | 1 libvorbis-1.3.7 | 1 linux-5.10.162-cip24-rt10 | 1 linux-pam-1.6.0 | 1 ncmpc-0.49 | 1 package/python-pillow/pytho... | 1 python-grpcio-1.60.0 | 1 tpm2-tss-3.2.2 | 1 Detail of failures for master ----------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- sparc | apcupsd-3.14.14 | NOK | http://autobuild.buildroot.net/results/24e73bbccf35b20d131b88e24cc6efc5c724ac79 | s390x | apcupsd-3.14.14 | NOK | http://autobuild.buildroot.net/results/3a880ae8ffae5210041aad88790976902183b278 | arc | apcupsd-3.14.14 | NOK | http://autobuild.buildroot.net/results/3327ccaa36ba465006d0564f02d75dfd3451c349 | arm | apcupsd-3.14.14 | NOK | http://autobuild.buildroot.net/results/12e6ce21f5920becf71fc2a7180e00bdc8800931 | powerpc | apcupsd-3.14.14 | NOK | http://autobuild.buildroot.net/results/a89bafbc93d482b6bcf6548a77abdcd708d71b30 | sparc | asterisk-20.7.0 | NOK | http://autobuild.buildroot.net/results/d16e4ca4bd26234f84d17da24c04a8c19faba6c5 | riscv64 | containerd-1.7.14 | NOK | http://autobuild.buildroot.net/results/1b4fbebbb366f8267b114324320f48915c9ea9d3 | arc | coreutils-9.3 | NOK | http://autobuild.buildroot.net/results/e80bef4b58e096487901fa9af8ed5754cd6d31ff | ORPH mipsel | dmraid-1.0.0.rc16-3 | NOK | http://autobuild.buildroot.net/results/027a4aac2fbe5a5155714a5ccb179aacd40fb959 | ORPH riscv64 | docker-cli-26.0.2 | NOK | http://autobuild.buildroot.net/results/a14a3e666648c54c3764a693e252abed28a82d19 | microblaze | elfutils-0.189 | NOK | http://autobuild.buildroot.net/results/0f0bc6c0ef52a6cbbca2e763f75bfeaf99bb2452 | ORPH sh4 | freeipmi-1.6.14 | NOK | http://autobuild.buildroot.net/results/918e041885d4765496be72b41d4c7a540621711d | microblaze | gdk-pixbuf-2.42.10 | NOK | http://autobuild.buildroot.net/results/72a02676abbe55050e7ed11e847fe5ab003d4dbe | ORPH m68k | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/5fc7b6b84dc293ac4bcd5a450ffa6e09285d21bf | ORPH arm | host-delve-1.22.1 | NOK | http://autobuild.buildroot.net/results/fe63967abf6b081140552b2e922632bd82709d61 | mips64el | host-fakeroot-1.34 | NOK | http://autobuild.buildroot.net/results/3eed99fbd4ad111eab4ff8477b50c942f0686a9f | ORPH s390x | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/66a2e5c6df5d4ac5cda16ec41d559095b021404a | aarch64 | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/5eb014e211ee4a93b5e4ccb53132fb2796cdf8ea | arceb | libffi-3.4.6 | NOK | http://autobuild.buildroot.net/results/ed4c6a3ffcc1cf909e22f7a8b8750387a018199f | or1k | libgeotiff-1.7.1 | NOK | http://autobuild.buildroot.net/results/492f6e71e82eebd5dbbd95f12df2eb41016cbeac | m68k | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/9d2fa14df8bba3cb9c00e9cc697fb90117e0ff0b | ORPH mips64 | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/4a233cc3a62d7f1eadd82c92b2c37d3b6e17d184 | ORPH microblazeel | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/5168ff125ce1af1931e4cc4d916e4fb047ed56f8 | ORPH powerpc64le | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/25c8591bebfcbddd57d3860eca70b7afa4814de3 | ORPH armeb | libsepol-3.5 | NOK | http://autobuild.buildroot.net/results/e2921d3ca5a91b6a761896cccb6e559588523e32 | powerpc | libvorbis-1.3.7 | NOK | http://autobuild.buildroot.net/results/efaaa54b4efef029654a629df372139cfe797be4 | microblaze | linux-5.10.162-cip24-rt10 | NOK | http://autobuild.buildroot.net/results/e590b7884fbad5d311da87ae8cbea0140b15ba67 | ORPH microblazeel | linux-6.8.6 | NOK | http://autobuild.buildroot.net/results/a7409d0c6550c6502d1feb919f69f8e4b2d3cf20 | ORPH powerpc | linux-6.8.6 | NOK | http://autobuild.buildroot.net/results/94defc2db527d060100202cd6ebce060833d6a1e | ORPH arceb | linux-pam-1.6.0 | NOK | http://autobuild.buildroot.net/results/856ae5ee8241e8b2b6a787c2dc2180143bfb29a2 | ORPH aarch64_be | ncmpc-0.49 | NOK | http://autobuild.buildroot.net/results/d3fcf3e09d990ad57c23616e23be523f8ea3c12b | mipsel | package/python-pillow/pytho... | NOK | http://autobuild.buildroot.net/results/4c933419c0dc6f5ab5ca9f5bf99eb87ea38d79b4 | i586 | python-grpcio-1.60.0 | NOK | http://autobuild.buildroot.net/results/5a2594a3e7ccb80368cb0dc58ac34017c3e170be | sh4 | tpm2-tss-3.2.2 | NOK | http://autobuild.buildroot.net/results/8619963db75c9929e3a29019f045e90eb023387e | ORPH powerpc | unknown | NOK | http://autobuild.buildroot.net/results/ceadc2af25de8412a5626df4451753c058d773be | i686 | unknown | NOK | http://autobuild.buildroot.net/results/30b07951651703ce93e055256a5975496aea7277 | nios2 | unknown | NOK | http://autobuild.buildroot.net/results/b7a35699d60a923db6c8930a94ed91610cb2a830 | Classification of failures by reason for 2024.02.x -------------------------------------------------- host-heimdal-f4faaeaba371ff... | 1 libarchive-3.7.2 | 1 libressl-3.8.2 | 1 unknown | 1 Detail of failures for 2024.02.x -------------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- mips64el | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/db0eb2b709881a75d352147170ecf4d1b5b19164 | ORPH powerpc | libarchive-3.7.2 | NOK | http://autobuild.buildroot.net/results/8d40d4d6bc7b5f9d2f5c3f00eea7c0ecd3de0517 | arceb | libressl-3.8.2 | NOK | http://autobuild.buildroot.net/results/b549e57b9a37c095749cd0a7edc144668b319d75 | ORPH arm | unknown | NOK | http://autobuild.buildroot.net/results/b893f5b56a3078ed10332b0f72d297d1a325094a | -- http://autobuild.buildroot.net From bugzilla at busybox.net Wed May 1 05:30:52 2024 From: bugzilla at busybox.net (bugzilla at busybox.net) Date: Wed, 01 May 2024 05:30:52 +0000 Subject: [Buildroot] [Bug 16027] problems building on fedora-40 In-Reply-To: References: Message-ID: https://bugs.busybox.net/show_bug.cgi?id=16027 swerve_olive366 at simplelogin.com changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|INVALID |--- Status|RESOLVED |REOPENED --- Comment #6 from swerve_olive366 at simplelogin.com --- Indeed, ncurses is working again. What about the error in comment #2? Is it working for you? I have fedora 40 too, but after running `make` I still get an error: Unknown option 'passive-ftp' make: *** [package/pkg-generic.mk:179: /buildroot/output/build/host-pkgconf-1.6.3/.stamp_downloaded] Error 1 -- You are receiving this mail because: You are on the CC list for the bug. From bugzilla at busybox.net Wed May 1 07:25:58 2024 From: bugzilla at busybox.net (bugzilla at busybox.net) Date: Wed, 01 May 2024 07:25:58 +0000 Subject: [Buildroot] [Bug 16027] problems building on fedora-40 In-Reply-To: References: Message-ID: https://bugs.busybox.net/show_bug.cgi?id=16027 --- Comment #7 from stsp --- Ah, completely forgot about this one! Since menuconfig now works, please navigate to "Build options" -> "Commands" -> "Wget command" and remove "passive-ftp" from there. -- You are receiving this mail because: You are on the CC list for the bug. From buildroot at busybox.net Wed May 1 07:46:36 2024 From: buildroot at busybox.net (cPanel on busybox.net) Date: 1 May 2024 10:46:36 +0300 Subject: [Buildroot] =?utf-8?q?WARNING=3A_The_=E2=80=9C?= Message-ID: <20240501104636.CDAA08F338AC01B7@busybox.net> An HTML attachment was scrubbed... URL: From dm.chestnykh at gmail.com Wed May 1 09:23:26 2024 From: dm.chestnykh at gmail.com (Dmitry Chestnykh) Date: Wed, 1 May 2024 12:23:26 +0300 Subject: [Buildroot] [PATCH 1/3] package/uclibc: Bump to 1.0.48. Message-ID: <20240501092328.323236-1-dm.chestnykh@gmail.com> In 1.0.48 release uClibc-ng has provided the fix for SPARC related to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784 Signed-off-by: Dmitry Chestnykh --- package/uclibc/uclibc.hash | 4 ++-- package/uclibc/uclibc.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/uclibc/uclibc.hash b/package/uclibc/uclibc.hash index a10ceab54c..571bb7333c 100644 --- a/package/uclibc/uclibc.hash +++ b/package/uclibc/uclibc.hash @@ -1,4 +1,4 @@ -# From https://downloads.uclibc-ng.org/releases/1.0.47/uClibc-ng-1.0.47.tar.xz.sha256 -sha256 29a4d684a06da344ee3ee09acc2ca7649d592ae3ff848f698145c46def05efcb uClibc-ng-1.0.47.tar.xz +# From https://downloads.uclibc-ng.org/releases/1.0.47/uClibc-ng-1.0.48.tar.xz.sha256 +sha256 3bf5fc6cc5cbc454b6c478424755c6f71e7c15578a2c966f02606aa5c5596e21 uClibc-ng-1.0.48.tar.xz # Locally calculated sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 COPYING.LIB diff --git a/package/uclibc/uclibc.mk b/package/uclibc/uclibc.mk index a7b18133ff..9593e18d45 100644 --- a/package/uclibc/uclibc.mk +++ b/package/uclibc/uclibc.mk @@ -4,7 +4,7 @@ # ################################################################################ -UCLIBC_VERSION = 1.0.47 +UCLIBC_VERSION = 1.0.48 UCLIBC_SOURCE = uClibc-ng-$(UCLIBC_VERSION).tar.xz UCLIBC_SITE = https://downloads.uclibc-ng.org/releases/$(UCLIBC_VERSION) UCLIBC_LICENSE = LGPL-2.1+ -- 2.44.0 From dm.chestnykh at gmail.com Wed May 1 09:23:27 2024 From: dm.chestnykh at gmail.com (Dmitry Chestnykh) Date: Wed, 1 May 2024 12:23:27 +0300 Subject: [Buildroot] [PATCH 2/3] configs/qemu_sparc_ss10_defconfig: Restore. In-Reply-To: <20240501092328.323236-1-dm.chestnykh@gmail.com> References: <20240501092328.323236-1-dm.chestnykh@gmail.com> Message-ID: <20240501092328.323236-2-dm.chestnykh@gmail.com> With uClibc-ng-1.0.48 we can restore this config because now sparc systems work without reverting GCC commits. Signed-off-by: Dmitry Chestnykh --- arch/Config.in | 5 ----- configs/qemu_sparc_ss10_defconfig | 28 ++++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 configs/qemu_sparc_ss10_defconfig diff --git a/arch/Config.in b/arch/Config.in index 9912f9fce6..e7349e83ae 100644 --- a/arch/Config.in +++ b/arch/Config.in @@ -216,11 +216,6 @@ config BR2_sh config BR2_sparc bool "SPARC" select BR2_USE_MMU - # uClibc-ng broken on sparc due to recent gcc changes - # that need to be reverted since gcc 8.4, 9.3 and 10.1. - # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784 - # gcc <= 10.x has been removed from Buildroot. - select BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT help SPARC (from Scalable Processor Architecture) is a RISC instruction set architecture (ISA) developed by Sun diff --git a/configs/qemu_sparc_ss10_defconfig b/configs/qemu_sparc_ss10_defconfig new file mode 100644 index 0000000000..a8e3df9180 --- /dev/null +++ b/configs/qemu_sparc_ss10_defconfig @@ -0,0 +1,28 @@ +# Architecture +BR2_sparc=y +BR2_sparc_v8=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_AS_KERNEL=y + +# Linux kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.6" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sparc-ss10/linux.config" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y -- 2.44.0 From dm.chestnykh at gmail.com Wed May 1 09:23:28 2024 From: dm.chestnykh at gmail.com (Dmitry Chestnykh) Date: Wed, 1 May 2024 12:23:28 +0300 Subject: [Buildroot] [PATCH 3/3] package/gcc: Remove unneeded patch. In-Reply-To: <20240501092328.323236-1-dm.chestnykh@gmail.com> References: <20240501092328.323236-1-dm.chestnykh@gmail.com> Message-ID: <20240501092328.323236-3-dm.chestnykh@gmail.com> sparc systems work with uClibc-ng-1.0.48. Signed-off-by: Dmitry Chestnykh --- ...get-92095-internal-error-with-O1-mcp.patch | 322 ------------------ 1 file changed, 322 deletions(-) delete mode 100644 package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch diff --git a/package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch b/package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch deleted file mode 100644 index ec2bf8835d..0000000000 --- a/package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch +++ /dev/null @@ -1,322 +0,0 @@ -From bb9b71752267444b4360442b89129bfc0ae938d3 Mon Sep 17 00:00:00 2001 -From: Romain Naour -Date: Wed, 20 Jan 2021 23:06:07 +0100 -Subject: [PATCH] Revert "re PR target/92095 (internal error with -O1 - -mcpu=niagara2 -fPIE)" - -This reverts commit 3fcce773f0f914c0499b130c6e9efa0e45ee54a0. - -Building the Buildroot defconfig qemu_sparc_ss10_defconfig using -gcc 8.4, 9.3 and 10 produce a broken rootfs that trigger illegal -instruction messages. - -gcc 8.3, 9.2 are the latest working gcc version. -git bisect between gcc 8.4 and 8.4 allowed to identify -the commit that introcuce the regression. - -Reverting this patch allowed to produce a working rootfs. - -Signed-off-by: Romain Naour -Cc: Eric Botcazou ---- - gcc/config/sparc/sparc-protos.h | 1 - - gcc/config/sparc/sparc.c | 121 +++++++----------- - gcc/config/sparc/sparc.md | 5 +- - .../gcc.c-torture/compile/20191108-1.c | 14 -- - gcc/testsuite/gcc.target/sparc/overflow-3.c | 2 +- - gcc/testsuite/gcc.target/sparc/overflow-4.c | 2 +- - gcc/testsuite/gcc.target/sparc/overflow-5.c | 2 +- - 7 files changed, 53 insertions(+), 94 deletions(-) - delete mode 100644 gcc/testsuite/gcc.c-torture/compile/20191108-1.c - -diff --git a/gcc/config/sparc/sparc-protos.h b/gcc/config/sparc/sparc-protos.h -index b3f73c2f2bf..71a067e871c 100644 ---- a/gcc/config/sparc/sparc-protos.h -+++ b/gcc/config/sparc/sparc-protos.h -@@ -69,7 +69,6 @@ extern void sparc_split_reg_mem (rtx, rtx, machine_mode); - extern void sparc_split_mem_reg (rtx, rtx, machine_mode); - extern int sparc_split_reg_reg_legitimate (rtx, rtx); - extern void sparc_split_reg_reg (rtx, rtx, machine_mode); --extern const char *output_load_pcrel_sym (rtx *); - extern const char *output_ubranch (rtx, rtx_insn *); - extern const char *output_cbranch (rtx, rtx, int, int, int, rtx_insn *); - extern const char *output_return (rtx_insn *); -diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c -index 73032d33596..db1b428db90 100644 ---- a/gcc/config/sparc/sparc.c -+++ b/gcc/config/sparc/sparc.c -@@ -4200,6 +4200,13 @@ eligible_for_sibcall_delay (rtx_insn *trial) - static bool - sparc_cannot_force_const_mem (machine_mode mode, rtx x) - { -+ /* After IRA has run in PIC mode, it is too late to put anything into the -+ constant pool if the PIC register hasn't already been initialized. */ -+ if ((lra_in_progress || reload_in_progress) -+ && flag_pic -+ && !crtl->uses_pic_offset_table) -+ return true; -+ - switch (GET_CODE (x)) - { - case CONST_INT: -@@ -4235,11 +4242,9 @@ sparc_cannot_force_const_mem (machine_mode mode, rtx x) - } - - /* Global Offset Table support. */ --static GTY(()) rtx got_symbol_rtx = NULL_RTX; --static GTY(()) rtx got_register_rtx = NULL_RTX; - static GTY(()) rtx got_helper_rtx = NULL_RTX; -- --static GTY(()) bool got_helper_needed = false; -+static GTY(()) rtx got_register_rtx = NULL_RTX; -+static GTY(()) rtx got_symbol_rtx = NULL_RTX; - - /* Return the SYMBOL_REF for the Global Offset Table. */ - -@@ -4252,6 +4257,27 @@ sparc_got (void) - return got_symbol_rtx; - } - -+#ifdef HAVE_GAS_HIDDEN -+# define USE_HIDDEN_LINKONCE 1 -+#else -+# define USE_HIDDEN_LINKONCE 0 -+#endif -+ -+static void -+get_pc_thunk_name (char name[32], unsigned int regno) -+{ -+ const char *reg_name = reg_names[regno]; -+ -+ /* Skip the leading '%' as that cannot be used in a -+ symbol name. */ -+ reg_name += 1; -+ -+ if (USE_HIDDEN_LINKONCE) -+ sprintf (name, "__sparc_get_pc_thunk.%s", reg_name); -+ else -+ ASM_GENERATE_INTERNAL_LABEL (name, "LADDPC", regno); -+} -+ - /* Wrapper around the load_pcrel_sym{si,di} patterns. */ - - static rtx -@@ -4271,78 +4297,30 @@ gen_load_pcrel_sym (rtx op0, rtx op1, rtx op2) - return insn; - } - --/* Output the load_pcrel_sym{si,di} patterns. */ -- --const char * --output_load_pcrel_sym (rtx *operands) --{ -- if (flag_delayed_branch) -- { -- output_asm_insn ("sethi\t%%hi(%a1-4), %0", operands); -- output_asm_insn ("call\t%a2", operands); -- output_asm_insn (" add\t%0, %%lo(%a1+4), %0", operands); -- } -- else -- { -- output_asm_insn ("sethi\t%%hi(%a1-8), %0", operands); -- output_asm_insn ("add\t%0, %%lo(%a1-4), %0", operands); -- output_asm_insn ("call\t%a2", operands); -- output_asm_insn (" nop", NULL); -- } -- -- if (operands[2] == got_helper_rtx) -- got_helper_needed = true; -- -- return ""; --} -- --#ifdef HAVE_GAS_HIDDEN --# define USE_HIDDEN_LINKONCE 1 --#else --# define USE_HIDDEN_LINKONCE 0 --#endif -- - /* Emit code to load the GOT register. */ - - void - load_got_register (void) - { -- rtx insn; -+ if (!got_register_rtx) -+ got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM); - - if (TARGET_VXWORKS_RTP) -- { -- if (!got_register_rtx) -- got_register_rtx = pic_offset_table_rtx; -- -- insn = gen_vxworks_load_got (); -- } -+ emit_insn (gen_vxworks_load_got ()); - else - { -- if (!got_register_rtx) -- got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM); -- - /* The GOT symbol is subject to a PC-relative relocation so we need a - helper function to add the PC value and thus get the final value. */ - if (!got_helper_rtx) - { - char name[32]; -- -- /* Skip the leading '%' as that cannot be used in a symbol name. */ -- if (USE_HIDDEN_LINKONCE) -- sprintf (name, "__sparc_get_pc_thunk.%s", -- reg_names[REGNO (got_register_rtx)] + 1); -- else -- ASM_GENERATE_INTERNAL_LABEL (name, "LADDPC", -- REGNO (got_register_rtx)); -- -+ get_pc_thunk_name (name, GLOBAL_OFFSET_TABLE_REGNUM); - got_helper_rtx = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name)); - } - -- insn -- = gen_load_pcrel_sym (got_register_rtx, sparc_got (), got_helper_rtx); -+ emit_insn (gen_load_pcrel_sym (got_register_rtx, sparc_got (), -+ got_helper_rtx)); - } -- -- emit_insn (insn); - } - - /* Ensure that we are not using patterns that are not OK with PIC. */ -@@ -5494,7 +5472,7 @@ save_local_or_in_reg_p (unsigned int regno, int leaf_function) - return true; - - /* GOT register (%l7) if needed. */ -- if (got_register_rtx && regno == REGNO (got_register_rtx)) -+ if (regno == GLOBAL_OFFSET_TABLE_REGNUM && got_register_rtx) - return true; - - /* If the function accesses prior frames, the frame pointer and the return -@@ -12475,9 +12453,10 @@ static void - sparc_file_end (void) - { - /* If we need to emit the special GOT helper function, do so now. */ -- if (got_helper_needed) -+ if (got_helper_rtx) - { - const char *name = XSTR (got_helper_rtx, 0); -+ const char *reg_name = reg_names[GLOBAL_OFFSET_TABLE_REGNUM]; - #ifdef DWARF2_UNWIND_INFO - bool do_cfi; - #endif -@@ -12514,22 +12493,17 @@ sparc_file_end (void) - #ifdef DWARF2_UNWIND_INFO - do_cfi = dwarf2out_do_cfi_asm (); - if (do_cfi) -- output_asm_insn (".cfi_startproc", NULL); -+ fprintf (asm_out_file, "\t.cfi_startproc\n"); - #endif - if (flag_delayed_branch) -- { -- output_asm_insn ("jmp\t%%o7+8", NULL); -- output_asm_insn (" add\t%%o7, %0, %0", &got_register_rtx); -- } -+ fprintf (asm_out_file, "\tjmp\t%%o7+8\n\t add\t%%o7, %s, %s\n", -+ reg_name, reg_name); - else -- { -- output_asm_insn ("add\t%%o7, %0, %0", &got_register_rtx); -- output_asm_insn ("jmp\t%%o7+8", NULL); -- output_asm_insn (" nop", NULL); -- } -+ fprintf (asm_out_file, "\tadd\t%%o7, %s, %s\n\tjmp\t%%o7+8\n\t nop\n", -+ reg_name, reg_name); - #ifdef DWARF2_UNWIND_INFO - if (do_cfi) -- output_asm_insn (".cfi_endproc", NULL); -+ fprintf (asm_out_file, "\t.cfi_endproc\n"); - #endif - } - -@@ -13035,10 +13009,7 @@ sparc_init_pic_reg (void) - edge entry_edge; - rtx_insn *seq; - -- /* In PIC mode, we need to always initialize the PIC register if optimization -- is enabled, because we are called from IRA and LRA may later force things -- to the constant pool for optimization purposes. */ -- if (!flag_pic || (!crtl->uses_pic_offset_table && !optimize)) -+ if (!crtl->uses_pic_offset_table) - return; - - start_sequence (); -diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md -index 468e2cc5d3b..25134bd1148 100644 ---- a/gcc/config/sparc/sparc.md -+++ b/gcc/config/sparc/sparc.md -@@ -1601,7 +1601,10 @@ - (clobber (reg:P O7_REG))] - "REGNO (operands[0]) == INTVAL (operands[3])" - { -- return output_load_pcrel_sym (operands); -+ if (flag_delayed_branch) -+ return "sethi\t%%hi(%a1-4), %0\n\tcall\t%a2\n\t add\t%0, %%lo(%a1+4), %0"; -+ else -+ return "sethi\t%%hi(%a1-8), %0\n\tadd\t%0, %%lo(%a1-4), %0\n\tcall\t%a2\n\t nop"; - } - [(set (attr "type") (const_string "multi")) - (set (attr "length") -diff --git a/gcc/testsuite/gcc.c-torture/compile/20191108-1.c b/gcc/testsuite/gcc.c-torture/compile/20191108-1.c -deleted file mode 100644 -index 7929751bb06..00000000000 ---- a/gcc/testsuite/gcc.c-torture/compile/20191108-1.c -+++ /dev/null -@@ -1,14 +0,0 @@ --/* PR target/92095 */ --/* Testcase by Sergei Trofimovich */ -- --typedef union { -- double a; -- int b[2]; --} c; -- --double d(int e) --{ -- c f; -- (&f)->b[0] = 15728640; -- return e ? -(&f)->a : (&f)->a; --} -diff --git a/gcc/testsuite/gcc.target/sparc/overflow-3.c b/gcc/testsuite/gcc.target/sparc/overflow-3.c -index 18253bb6e5e..8cb24f52f7b 100644 ---- a/gcc/testsuite/gcc.target/sparc/overflow-3.c -+++ b/gcc/testsuite/gcc.target/sparc/overflow-3.c -@@ -1,5 +1,5 @@ - /* { dg-do compile } */ --/* { dg-options "-O -fno-pie" } */ -+/* { dg-options "-O" } */ - /* { dg-require-effective-target lp64 } */ - - #include -diff --git a/gcc/testsuite/gcc.target/sparc/overflow-4.c b/gcc/testsuite/gcc.target/sparc/overflow-4.c -index fb30877efb9..868edea2b9e 100644 ---- a/gcc/testsuite/gcc.target/sparc/overflow-4.c -+++ b/gcc/testsuite/gcc.target/sparc/overflow-4.c -@@ -1,5 +1,5 @@ - /* { dg-do compile } */ --/* { dg-options "-O -fno-pie -mno-vis3" } */ -+/* { dg-options "-O -mno-vis3" } */ - /* { dg-require-effective-target lp64 } */ - - #include -diff --git a/gcc/testsuite/gcc.target/sparc/overflow-5.c b/gcc/testsuite/gcc.target/sparc/overflow-5.c -index 509d957715d..501ce04f7a1 100644 ---- a/gcc/testsuite/gcc.target/sparc/overflow-5.c -+++ b/gcc/testsuite/gcc.target/sparc/overflow-5.c -@@ -1,5 +1,5 @@ - /* { dg-do compile } */ --/* { dg-options "-O -fno-pie -mvis3" } */ -+/* { dg-options "-O -mvis3" } */ - /* { dg-require-effective-target lp64 } */ - - #include --- -2.25.4 - -- 2.44.0 From dm.chestnykh at gmail.com Wed May 1 09:37:25 2024 From: dm.chestnykh at gmail.com (Dmitry Chestnykh) Date: Wed, 1 May 2024 12:37:25 +0300 Subject: [Buildroot] [PATCH v2 1/3] package/uclibc: Bump to 1.0.48. Message-ID: <20240501093725.325194-1-dm.chestnykh@gmail.com> In 1.0.48 release uClibc-ng has provided the fix for SPARC related to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784 Signed-off-by: Dmitry Chestnykh --- package/uclibc/uclibc.hash | 6 +++--- package/uclibc/uclibc.mk | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/uclibc/uclibc.hash b/package/uclibc/uclibc.hash index a10ceab54c..7097bbf99a 100644 --- a/package/uclibc/uclibc.hash +++ b/package/uclibc/uclibc.hash @@ -1,4 +1,4 @@ -# From https://downloads.uclibc-ng.org/releases/1.0.47/uClibc-ng-1.0.47.tar.xz.sha256 -sha256 29a4d684a06da344ee3ee09acc2ca7649d592ae3ff848f698145c46def05efcb uClibc-ng-1.0.47.tar.xz +# From https://downloads.uclibc-ng.org/releases/1.0.47/uClibc-ng-1.0.48.tar.xz.sha256 +sha256 3bf5fc6cc5cbc454b6c478424755c6f71e7c15578a2c966f02606aa5c5596e21 uClibc-ng-1.0.48.tar.xz # Locally calculated -sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 COPYING.LIB +sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING.LIB diff --git a/package/uclibc/uclibc.mk b/package/uclibc/uclibc.mk index a7b18133ff..9593e18d45 100644 --- a/package/uclibc/uclibc.mk +++ b/package/uclibc/uclibc.mk @@ -4,7 +4,7 @@ # ################################################################################ -UCLIBC_VERSION = 1.0.47 +UCLIBC_VERSION = 1.0.48 UCLIBC_SOURCE = uClibc-ng-$(UCLIBC_VERSION).tar.xz UCLIBC_SITE = https://downloads.uclibc-ng.org/releases/$(UCLIBC_VERSION) UCLIBC_LICENSE = LGPL-2.1+ -- 2.44.0 From bugzilla at busybox.net Wed May 1 09:53:51 2024 From: bugzilla at busybox.net (bugzilla at busybox.net) Date: Wed, 01 May 2024 09:53:51 +0000 Subject: [Buildroot] [Bug 16027] problems building on fedora-40 In-Reply-To: References: Message-ID: https://bugs.busybox.net/show_bug.cgi?id=16027 Yann E. MORIN changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |yann.morin.1998 at free.fr --- Comment #8 from Yann E. MORIN --- stsp, All, Thanks for the report. The menuconfig issue has been fixed with commit a6210d28db (kconfig/lxdialog: fix check() with GCC14). As for the wget issue, please refer to the release notes of your distribution: https://docs.fedoraproject.org/en-US/fedora/latest/release-notes/ Quoting: The wget command in Fedora 40 uses Wget2. Amd a little trivial web-search turns up: https://fedoraproject.org/wiki/Changes/Wget2asWget And of course, it all quickly leads to: https://gitlab.com/gnuwget/wget2/-/wikis/Home#different-behavior-of-wget2 The current workaround is indeed to remove --passive-ftp from the wget command line, but thisis not a vial long-term solution, because it means it is no longer possible to do ftp downloads (which although legacy, still exist). The proper solution would be to contribute a patch that solves the issue. I think a good solution would be two fold: - introduce a new download backend specifically for ftp - drop --passive-ftp from the default wget command line Regards, Yann E. MORIN. -- You are receiving this mail because: You are on the CC list for the bug. From bugzilla at busybox.net Wed May 1 10:08:04 2024 From: bugzilla at busybox.net (bugzilla at busybox.net) Date: Wed, 01 May 2024 10:08:04 +0000 Subject: [Buildroot] [Bug 16027] problems building on fedora-40 In-Reply-To: References: Message-ID: https://bugs.busybox.net/show_bug.cgi?id=16027 --- Comment #9 from stsp --- How about just switching to curl, instead of playing around the legacy stuff as wget is? Ok maybe wget2 is not legacy, but you never know, as now debian-based distros will have wget1, and fedora-based - wget2, all under the same name. -- You are receiving this mail because: You are on the CC list for the bug. From dario.binacchi at amarulasolutions.com Wed May 1 12:00:49 2024 From: dario.binacchi at amarulasolutions.com (Dario Binacchi) Date: Wed, 1 May 2024 14:00:49 +0200 Subject: [Buildroot] [PATCH 1/2] package/qemu: fix disabling fp-bench test compilation Message-ID: <20240501120050.670109-1-dario.binacchi@amarulasolutions.com> With the bump to version 8.1.1, the patch that disabled the compilation of the fp-bench test is no longer applicable, even though the package compilation process does not report any errors in applying the patch itself. The new patch does not disable the test by default but only if the file fenv.h is not missing, with the hope that this approach will be considered acceptable by the maintainer and merged upstream. The patch is an adaptation of the one sent upstream. Signed-off-by: Dario Binacchi --- .checkpackageignore | 2 +- ...fp-disable-fp-bench-build-by-default.patch | 28 ----------- ...on-t-build-fp-bench-test-if-fenv.h-i.patch | 49 +++++++++++++++++++ 3 files changed, 50 insertions(+), 29 deletions(-) delete mode 100644 package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch create mode 100644 package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch diff --git a/.checkpackageignore b/.checkpackageignore index 1b336ce7a3ee..c16e17cc35e4 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -1073,7 +1073,7 @@ package/python3/0028-fix-building-on-older-distributions.patch lib_patch.Upstrea package/python3/0029-configure.ac-fixup-CC-print-multiarch-output-for-mus.patch lib_patch.Upstream package/python3/0030-Add-an-option-to-disable-the-berkeleydb-module.patch lib_patch.Upstream package/python3/0031-lib-crypt-uClibc-ng-doesn-t-set-errno-when-encryptio.patch lib_patch.Upstream -package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch lib_patch.Upstream +package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch lib_patch.Upstream package/qemu/0002-softmmu-qemu-seccomp.c-add-missing-header-for-CLONE_.patch lib_patch.Upstream package/qextserialport/0001-Create-a-main-include-file-QExtSerialPort.patch lib_patch.Upstream package/qextserialport/0002-Tell-qmake-to-add-a-pkgconfig-file-to-ease-usage-wit.patch lib_patch.Upstream diff --git a/package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch b/package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch deleted file mode 100644 index fb7a9a69897b..000000000000 --- a/package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 83d976d6d7f0357659d5daa0f01c52048a609e88 Mon Sep 17 00:00:00 2001 -From: Romain Naour -Date: Wed, 25 Aug 2021 21:55:53 +0200 -Subject: [PATCH] tests/fp: disable fp-bench build by default - -Fixes: -https://lists.nongnu.org/archive/html/qemu-devel/2021-03/msg00947.html - -Signed-off-by: Romain Naour ---- - tests/fp/meson.build | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/tests/fp/meson.build b/tests/fp/meson.build -index 8bd0979f67..2fe019d2c6 100644 ---- a/tests/fp/meson.build -+++ b/tests/fp/meson.build -@@ -640,6 +640,7 @@ fpbench = executable( - dependencies: [qemuutil], - include_directories: [sfinc, include_directories(tfdir)], - c_args: fpcflags, -+ build_by_default: false, - ) - - fptestlog2 = executable( --- -2.35.1 - diff --git a/package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch b/package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch new file mode 100644 index 000000000000..836754ba231a --- /dev/null +++ b/package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch @@ -0,0 +1,49 @@ +From b4a692f46135af1011bf0adbfeb19abf354ca191 Mon Sep 17 00:00:00 2001 +From: Dario Binacchi +Date: Tue, 30 Apr 2024 09:40:55 +0200 +Subject: [PATCH] tests/fp/meson: don't build fp-bench test if fenv.h is + missing + +The fp-bench test (i. e. tests/fp/fp-bench.c) use fenv.h that is not +always provided by the libc (uClibc). The patch disables its compilation +in case the header is not available. + +The patch is based on a suggestion from Paolo Bonzini, which you can +find at the following link. + +Link: https://lists.nongnu.org/archive/html/qemu-devel/2021-03/msg00492.html +Suggested-by: Paolo Bonzini +Signed-off-by: Dario Binacchi +[Upstream status: https://patchwork.ozlabs.org/project/qemu-devel/patch/20240430164752.645521-1-dario.binacchi at amarulasolutions.com/] +--- + tests/fp/meson.build | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +diff --git a/tests/fp/meson.build b/tests/fp/meson.build +index cbc17392d678..cd052667e940 100644 +--- a/tests/fp/meson.build ++++ b/tests/fp/meson.build +@@ -126,12 +126,14 @@ test('fp-test-mulAdd', fptest, + ['f16_mulAdd', 'f32_mulAdd', 'f64_mulAdd', 'f128_mulAdd'], + suite: ['softfloat-slow', 'softfloat-ops-slow', 'slow'], timeout: 90) + +-executable( +- 'fp-bench', +- ['fp-bench.c', '../../fpu/softfloat.c'], +- dependencies: [qemuutil, libtestfloat, libsoftfloat], +- c_args: fpcflags, +-) ++if cc.has_header('fenv.h') ++ executable( ++ 'fp-bench', ++ ['fp-bench.c', '../../fpu/softfloat.c'], ++ dependencies: [qemuutil, libtestfloat, libsoftfloat], ++ c_args: fpcflags, ++ ) ++endif + + fptestlog2 = executable( + 'fp-test-log2', +-- +2.43.0 + -- 2.43.0 From dario.binacchi at amarulasolutions.com Wed May 1 12:00:50 2024 From: dario.binacchi at amarulasolutions.com (Dario Binacchi) Date: Wed, 1 May 2024 14:00:50 +0200 Subject: [Buildroot] [PATCH 2/2] package/qemu: renumber patch In-Reply-To: <20240501120050.670109-1-dario.binacchi@amarulasolutions.com> References: <20240501120050.670109-1-dario.binacchi@amarulasolutions.com> Message-ID: <20240501120050.670109-2-dario.binacchi@amarulasolutions.com> Commit 3fa1ae00681ca ("package/qemu: add option to enable tracing") added a patch with a wrong number. The patch also updates the upstream trailer of the renumbered patch to ensure successful completion of the `utils/docker-run make check-package` command checks. The patch also modifies the upstream trailer of the renumbered patch to successfully pass the checks of the `utils/docker-run make check-package` command. Signed-off-by: Dario Binacchi --- .checkpackageignore | 1 + ...3-tracing-install-trace-events-file-only-if-necessary.patch} | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) rename package/qemu/{0004-tracing-install-trace-events-file-only-if-necessary.patch => 0003-tracing-install-trace-events-file-only-if-necessary.patch} (90%) diff --git a/.checkpackageignore b/.checkpackageignore index c16e17cc35e4..e4f9139d665a 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -1075,6 +1075,7 @@ package/python3/0030-Add-an-option-to-disable-the-berkeleydb-module.patch lib_pa package/python3/0031-lib-crypt-uClibc-ng-doesn-t-set-errno-when-encryptio.patch lib_patch.Upstream package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch lib_patch.Upstream package/qemu/0002-softmmu-qemu-seccomp.c-add-missing-header-for-CLONE_.patch lib_patch.Upstream +package/qemu/0003-tracing-install-trace-events-file-only-if-necessary.patch lib_patch.Upstream package/qextserialport/0001-Create-a-main-include-file-QExtSerialPort.patch lib_patch.Upstream package/qextserialport/0002-Tell-qmake-to-add-a-pkgconfig-file-to-ease-usage-wit.patch lib_patch.Upstream package/qt5/qt5base/0001-qtbase-Fix-build-error-when-using-EGL.patch lib_patch.Upstream diff --git a/package/qemu/0004-tracing-install-trace-events-file-only-if-necessary.patch b/package/qemu/0003-tracing-install-trace-events-file-only-if-necessary.patch similarity index 90% rename from package/qemu/0004-tracing-install-trace-events-file-only-if-necessary.patch rename to package/qemu/0003-tracing-install-trace-events-file-only-if-necessary.patch index 36bdaa4978ad..f9b82865ce16 100644 --- a/package/qemu/0004-tracing-install-trace-events-file-only-if-necessary.patch +++ b/package/qemu/0003-tracing-install-trace-events-file-only-if-necessary.patch @@ -5,7 +5,7 @@ Subject: [PATCH] tracing: install trace events file only if necessary It is not useful when configuring with --enable-trace-backends=nop. -Upstream: https://patchwork.kernel.org/project/qemu-devel/patch/20230408010410.281263-1-casantos at redhat.com/ +[Upstream status: https://patchwork.kernel.org/project/qemu-devel/patch/20230408010410.281263-1-casantos at redhat.com/] Signed-off-by: Carlos Santos Signed-off-by: Carlos Santos --- -- 2.43.0 From wbx at openadk.org Wed May 1 12:10:11 2024 From: wbx at openadk.org (Waldemar Brodkorb) Date: Wed, 1 May 2024 14:10:11 +0200 Subject: [Buildroot] [PATCH v2 1/3] package/uclibc: Bump to 1.0.48. In-Reply-To: <20240501093725.325194-1-dm.chestnykh@gmail.com> References: <20240501093725.325194-1-dm.chestnykh@gmail.com> Message-ID: Hi Dmitry, Dmitry Chestnykh wrote, > In 1.0.48 release uClibc-ng has provided the fix > for SPARC related to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784 > > Signed-off-by: Dmitry Chestnykh Tested-by: Waldemar Brodkorb best regards Waldemar From wbx at openadk.org Wed May 1 12:11:27 2024 From: wbx at openadk.org (Waldemar Brodkorb) Date: Wed, 1 May 2024 14:11:27 +0200 Subject: [Buildroot] [PATCH 2/3] configs/qemu_sparc_ss10_defconfig: Restore. In-Reply-To: <20240501092328.323236-2-dm.chestnykh@gmail.com> References: <20240501092328.323236-1-dm.chestnykh@gmail.com> <20240501092328.323236-2-dm.chestnykh@gmail.com> Message-ID: Hi Dmitry, Dmitry Chestnykh wrote, > With uClibc-ng-1.0.48 we can restore this config > because now sparc systems work without reverting GCC commits. > > Signed-off-by: Dmitry Chestnykh Tested-by: Waldemar Brodkorb best regards Waldemar From wbx at openadk.org Wed May 1 12:12:28 2024 From: wbx at openadk.org (Waldemar Brodkorb) Date: Wed, 1 May 2024 14:12:28 +0200 Subject: [Buildroot] [PATCH 3/3] package/gcc: Remove unneeded patch. In-Reply-To: <20240501092328.323236-3-dm.chestnykh@gmail.com> References: <20240501092328.323236-1-dm.chestnykh@gmail.com> <20240501092328.323236-3-dm.chestnykh@gmail.com> Message-ID: Hi Dmitry, Dmitry Chestnykh wrote, > sparc systems work with uClibc-ng-1.0.48. > > Signed-off-by: Dmitry Chestnykh Tested-by: Waldemar Brodkorb best regards Waldemar From wbx at openadk.org Wed May 1 12:41:14 2024 From: wbx at openadk.org (Waldemar Brodkorb) Date: Wed, 1 May 2024 14:41:14 +0200 Subject: [Buildroot] [PATCH v2] package/asterisk: fix compile issue Message-ID: Fix a compile issue when libyuv and libjpeg is enabled. Detection of following function fails: checking for pjsip_dlg_create_uas_and_inc_lock in -lpjsip... no In config.log you see that libjpeg is missing. Fixes: http://autobuild.buildroot.net/results/7bed9fc68fc9331ad12942c3eab9742ee8a7a4c4 Signed-off-by: Waldemar Brodkorb --- v1->v2: package libjpeg must be enabled, too --- package/asterisk/asterisk.mk | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/package/asterisk/asterisk.mk b/package/asterisk/asterisk.mk index 33d2e78bcf..c37aa5ec9d 100644 --- a/package/asterisk/asterisk.mk +++ b/package/asterisk/asterisk.mk @@ -113,9 +113,15 @@ ASTERISK_CONF_ENV = \ # Uses __atomic_fetch_add_4 ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) -ASTERISK_CONF_ENV += LIBS="-latomic" +ASTERISK_LIBS += -latomic endif +ifeq ($(BR2_PACKAGE_LIBYUV)$(BR2_PACKAGE_JPEG),yy) +ASTERISK_LIBS += -ljpeg +endif + +ASTERISK_CONF_ENV += LIBS="$(ASTERISK_LIBS)" + ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y) ASTERISK_CONF_OPTS += --with-execinfo else -- 2.39.2 From fontaine.fabrice at gmail.com Wed May 1 15:00:42 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Wed, 1 May 2024 17:00:42 +0200 Subject: [Buildroot] [PATCH 1/1] package/asterisk: fix uclibc-ng build Message-ID: <20240501150042.281549-1-fontaine.fabrice@gmail.com> Fix the following uclibc-ng build failure raised since bump to version 20.7.0 in commit 0e6d4d2171ce70d3aa6693f860a36ff08fc4d2b3 and https://github.com/asterisk/asterisk/commit/2694792e13c7f3ab1911c4a69fba0df32c544177: stasis/control.c: In function 'exec_command_on_condition': stasis/control.c:313:3: warning: implicit declaration of function 'pthread_kill'; did you mean 'pthread_yield'? [-Wimplicit-function-declaration] 313 | pthread_kill(control->control_thread, SIGURG); | ^~~~~~~~~~~~ | pthread_yield stasis/control.c:313:41: error: 'SIGURG' undeclared (first use in this function) 313 | pthread_kill(control->control_thread, SIGURG); | ^~~~~~ Fixes: 0e6d4d2171ce70d3aa6693f860a36ff08fc4d2b3 - http://autobuild.buildroot.org/results/d16e4ca4bd26234f84d17da24c04a8c19faba6c5 Signed-off-by: Fabrice Fontaine --- ...es-stasis-control.c-include-signal.h.patch | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 package/asterisk/0005-res-stasis-control.c-include-signal.h.patch diff --git a/package/asterisk/0005-res-stasis-control.c-include-signal.h.patch b/package/asterisk/0005-res-stasis-control.c-include-signal.h.patch new file mode 100644 index 0000000000..fc615c4a19 --- /dev/null +++ b/package/asterisk/0005-res-stasis-control.c-include-signal.h.patch @@ -0,0 +1,43 @@ +From 8391dc3891337ecff8becefe1927a30d3922b848 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 1 May 2024 16:50:50 +0200 +Subject: [PATCH] res/stasis/control.c: include signal.h + +Include signal.h to avoid the following build failure with uclibc-ng +raised since +https://github.com/asterisk/asterisk/commit/2694792e13c7f3ab1911c4a69fba0df32c544177: + +stasis/control.c: In function 'exec_command_on_condition': +stasis/control.c:313:3: warning: implicit declaration of function 'pthread_kill'; did you mean 'pthread_yield'? [-Wimplicit-function-declaration] + 313 | pthread_kill(control->control_thread, SIGURG); + | ^~~~~~~~~~~~ + | pthread_yield +stasis/control.c:313:41: error: 'SIGURG' undeclared (first use in this function) + 313 | pthread_kill(control->control_thread, SIGURG); + | ^~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/d16e4ca4bd26234f84d17da24c04a8c19faba6c5 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/asterisk/asterisk/pull/728 +--- + res/stasis/control.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/res/stasis/control.c b/res/stasis/control.c +index 360f20790..4ed0e2af1 100644 +--- a/res/stasis/control.c ++++ b/res/stasis/control.c +@@ -41,6 +41,8 @@ + #include "asterisk/musiconhold.h" + #include "asterisk/app.h" + ++#include ++ + AST_LIST_HEAD(app_control_rules, stasis_app_control_rule); + + /*! +-- +2.43.0 + -- 2.43.0 From fontaine.fabrice at gmail.com Wed May 1 15:05:07 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Wed, 1 May 2024 17:05:07 +0200 Subject: [Buildroot] [PATCH 1/1] package/libjwt: add CPE variables Message-ID: <20240501150507.284189-1-fontaine.fabrice@gmail.com> cpe:2.3:a:bencollins:jwt_c_library is a valid CPE identifier for this package: https://nvd.nist.gov/products/cpe/detail/6335E595-6F38-4837-83BB-C78B687BB75B Signed-off-by: Fabrice Fontaine --- package/libjwt/libjwt.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package/libjwt/libjwt.mk b/package/libjwt/libjwt.mk index 1643aa7b7a..8929904d10 100644 --- a/package/libjwt/libjwt.mk +++ b/package/libjwt/libjwt.mk @@ -11,6 +11,8 @@ LIBJWT_AUTORECONF = YES LIBJWT_INSTALL_STAGING = YES LIBJWT_LICENSE = MPL-2.0 LIBJWT_LICENSE_FILES = LICENSE +LIBJWT_CPE_ID_VENDOR = bencollins +LIBJWT_CPE_ID_PRODUCT = jwt_c_library LIBJWT_CONF_OPTS = --without-examples ifeq ($(BR2_PACKAGE_OPENSSL),y) -- 2.43.0 From bugzilla at busybox.net Wed May 1 15:08:52 2024 From: bugzilla at busybox.net (bugzilla at busybox.net) Date: Wed, 01 May 2024 15:08:52 +0000 Subject: [Buildroot] [Bug 16027] problems building on fedora-40 In-Reply-To: References: Message-ID: https://bugs.busybox.net/show_bug.cgi?id=16027 --- Comment #10 from Yann E. MORIN --- Hello. > How about just switching to curl, instead > of playing around the legacy stuff as wget is? 1. wget is not legacy. cURL and wget were initialy released at about the same period, in 1996 [0] [1]; both saw their latest release in March 2024. Hard to say that wget is legacy without saying so for cURL. [0] https://en.wikipedia.org/wiki/Wget => January 1996 [1] https://en.wikipedia.org/wiki/CURL => November 1996 2. cURL can be configured without FTP support [2], so if switching from wget to wget2 was done, knowing that FTP was dropped, and considering that was acceptable on the basis that FTP is legacy (broken, insecure...), then it is not inconceivalbe that distros may consider truning FTP off in their builds of cURL, ion the same basis (broken, insecure...). Switching to cURL would not solve the issue. Yes, it is a bit far-fetched, but given the reasoning behind wget2 switch, it is legit to consider it for other tools that are not FTP-only. [2] https://github.com/curl/curl/blob/master/configure.ac#L631 3. Existing packages (in external trees) may use wget's authentication options yo authenticate to an HTTP server; switching to cURL would break them. That also applies to existing (def)config files that use non-standard options, like --no-proxy to talk to internal servers, or --load-cookies with a pre-build script that authenticates against an internal server or filled by a CI/CD job, etc... 4. For all things HTTP-related, wget2 is expected to be option-compatible with wget. 5. As a consequence, it feels more appropriate to keep using wget for HTTP/S downloads, and use a tool dedicated to FTP for FTP downloads, and implemented as a separate backend in Buildroot. Regards, Yann E. MORIN, -- You are receiving this mail because: You are on the CC list for the bug. From bb at ti.com Wed May 1 15:27:23 2024 From: bb at ti.com (Bryan Brattlof) Date: Wed, 1 May 2024 10:27:23 -0500 Subject: [Buildroot] [PATCH 00/11] update bsp binaries for TI SoCs Message-ID: <20240430-optee-update-v1-0-6f73c4903ec3@ti.com> Hello everyone! This series updates all the boot binaries (U-Boot, OP-TEE, TF-A, and Linux) to their latest versions to pull in all bug fixes and new features additions in these projects. This also includes a patch I send out a while ago just to keep things organized. https://lore.kernel.org/buildroot/20240402153328.1859642-1-bb at ti.com/ and finally some proof I didn't completely break something ;) https://paste.sr.ht/~bryanb/b666adef7da412de76efb5e4a68e68e0651f7928 Thanks for reviewing ~Bryan Signed-off-by: Bryan Brattlof --- Bryan Brattlof (10): boot/optee-os: bump to release v4.2.0 boot/uboot: bump to latest v2024.04 release of U-Boot boot/ti-k3-r5-loader: bump to latest U-Boot release configs/ti_am62x_sk_defconfig: update TFA to latest lts release configs/ti_am64x_sk_defconfig: update TFA to latest lts release configs/ti_am62x_sk_defconfig: update uboot to latest release configs/ti_am64x_sk_defconfig: update uboot to latest release configs/ti_am62x_sk_defconfig: update to latest kernel configs/ti_am64x_sk_defconfig: update to latest kernel DEVELOPERS: add myself to TI's packages and reference boards Bryan Brattlof via buildroot (1): boot/ti-k3-boot-firmware: bump to latest version DEVELOPERS | 8 ++++++++ .../patches/arm-trusted-firmware/arm-trusted-firmware.hash | 2 +- board/ti/am62x-sk/patches/linux/linux.hash | 2 +- .../patches/arm-trusted-firmware/arm-trusted-firmware.hash | 2 +- board/ti/am64x-sk/patches/linux/linux.hash | 2 +- boot/optee-os/Config.in | 4 ++-- boot/optee-os/optee-os.hash | 4 ++-- boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash | 2 +- boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk | 4 +--- boot/ti-k3-r5-loader/Config.in | 4 ++-- boot/ti-k3-r5-loader/ti-k3-r5-loader.hash | 2 +- boot/ti-k3-r5-loader/ti-k3-r5-loader.mk | 1 + boot/uboot/Config.in | 6 +++--- boot/uboot/uboot.hash | 2 +- configs/ti_am62x_sk_defconfig | 9 ++++----- configs/ti_am64x_sk_defconfig | 9 ++++----- 16 files changed, 34 insertions(+), 29 deletions(-) --- base-commit: 39ed602169ecf7677328d1387d30869baeb28cea change-id: 20240430-optee-update-b9c1bc4e9f29 Best regards, -- Bryan Brattlof From bb at ti.com Wed May 1 15:27:27 2024 From: bb at ti.com (Bryan Brattlof) Date: Wed, 1 May 2024 10:27:27 -0500 Subject: [Buildroot] [PATCH 04/11] boot/ti-k3-boot-firmware: bump to latest version In-Reply-To: <20240430-optee-update-v1-0-6f73c4903ec3@ti.com> References: <20240430-optee-update-v1-0-6f73c4903ec3@ti.com> Message-ID: <20240430-optee-update-v1-4-6f73c4903ec3@ti.com> From: Bryan Brattlof via buildroot The 09.02.00.009 release of ti-linux-firmware has the latest updates to TI's TIFS, DM and DMSC firmware needed for the K3 generation of processors. Update to pull in these latest updates. Reviewed-by: Heiko Thiery Tested-by: Andreas Dannenberg Signed-off-by: Bryan Brattlof --- boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash | 2 +- boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash index 95131180ef400..2398d02da258a 100644 --- a/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash +++ b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash @@ -1,3 +1,3 @@ # Locally calculated sha256 ab20ffbe7bba7e94be246b3417d33a914b3f07c16c47ef5a7f7602349a666a61 LICENSE.ti -sha256 6032a258ce731d987576115f5de44c677a6b0cf8bddcd61a9a2852928bdfff92 ti-linux-firmware-08.06.00.006.tar.xz +sha256 ae888a0a22f8c5b8fe841236d6e40bb2f821d9a4161dab6924fd989e1467ef0e ti-linux-firmware-09.02.00.009.tar.xz diff --git a/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk index 1f8ade207c13a..9332732ad4a32 100644 --- a/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk +++ b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk @@ -4,9 +4,7 @@ # ################################################################################ -# The hash 340194800a581baf976360386dfc7b5acab8d948 defined in the -# Makefile of ti-k3-image-gen corresponds to the tag 08.06.00.006. -TI_K3_BOOT_FIRMWARE_VERSION = 08.06.00.006 +TI_K3_BOOT_FIRMWARE_VERSION = 09.02.00.009 TI_K3_BOOT_FIRMWARE_SITE = https://git.ti.com/cgit/processor-firmware/ti-linux-firmware/snapshot TI_K3_BOOT_FIRMWARE_SOURCE = ti-linux-firmware-$(TI_K3_BOOT_FIRMWARE_VERSION).tar.xz TI_K3_BOOT_FIRMWARE_INSTALL_IMAGES = YES -- 2.43.2 From yann.morin.1998 at free.fr Wed May 1 16:21:21 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 18:21:21 +0200 Subject: [Buildroot] [git commit] package/asterisk: fix compile issue Message-ID: <20240501162718.8370686382@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=07b7d8708d0c8302ad5407acf81df974050f0f5c branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fix a compile issue when libyuv and libjpeg is enabled. Detection of following function fails: checking for pjsip_dlg_create_uas_and_inc_lock in -lpjsip... no In config.log you see that libjpeg is missing. Fixes: http://autobuild.buildroot.net/results/7bed9fc68fc9331ad12942c3eab9742ee8a7a4c4 Signed-off-by: Waldemar Brodkorb Signed-off-by: Yann E. MORIN --- package/asterisk/asterisk.mk | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/package/asterisk/asterisk.mk b/package/asterisk/asterisk.mk index 33d2e78bcf..c37aa5ec9d 100644 --- a/package/asterisk/asterisk.mk +++ b/package/asterisk/asterisk.mk @@ -113,9 +113,15 @@ ASTERISK_CONF_ENV = \ # Uses __atomic_fetch_add_4 ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) -ASTERISK_CONF_ENV += LIBS="-latomic" +ASTERISK_LIBS += -latomic endif +ifeq ($(BR2_PACKAGE_LIBYUV)$(BR2_PACKAGE_JPEG),yy) +ASTERISK_LIBS += -ljpeg +endif + +ASTERISK_CONF_ENV += LIBS="$(ASTERISK_LIBS)" + ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y) ASTERISK_CONF_OPTS += --with-execinfo else From yann.morin.1998 at free.fr Wed May 1 16:25:48 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 18:25:48 +0200 Subject: [Buildroot] [git commit] package/asterisk: fix uclibc-ng build Message-ID: <20240501162718.8C83586384@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=ebd44d7c5b8b4e24e401863bb779adea2ff3a226 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fix the following uclibc-ng build failure raised since bump to version 20.7.0 in commit 0e6d4d2171ce70d3aa6693f860a36ff08fc4d2b3 and https://github.com/asterisk/asterisk/commit/2694792e13c7f3ab1911c4a69fba0df32c544177: stasis/control.c: In function 'exec_command_on_condition': stasis/control.c:313:3: warning: implicit declaration of function 'pthread_kill'; did you mean 'pthread_yield'? [-Wimplicit-function-declaration] 313 | pthread_kill(control->control_thread, SIGURG); | ^~~~~~~~~~~~ | pthread_yield stasis/control.c:313:41: error: 'SIGURG' undeclared (first use in this function) 313 | pthread_kill(control->control_thread, SIGURG); | ^~~~~~ Fixes: 0e6d4d2171ce70d3aa6693f860a36ff08fc4d2b3 - http://autobuild.buildroot.org/results/d16e4ca4bd26234f84d17da24c04a8c19faba6c5 Signed-off-by: Fabrice Fontaine Signed-off-by: Yann E. MORIN --- ...005-res-stasis-control.c-include-signal.h.patch | 43 ++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/package/asterisk/0005-res-stasis-control.c-include-signal.h.patch b/package/asterisk/0005-res-stasis-control.c-include-signal.h.patch new file mode 100644 index 0000000000..fc615c4a19 --- /dev/null +++ b/package/asterisk/0005-res-stasis-control.c-include-signal.h.patch @@ -0,0 +1,43 @@ +From 8391dc3891337ecff8becefe1927a30d3922b848 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 1 May 2024 16:50:50 +0200 +Subject: [PATCH] res/stasis/control.c: include signal.h + +Include signal.h to avoid the following build failure with uclibc-ng +raised since +https://github.com/asterisk/asterisk/commit/2694792e13c7f3ab1911c4a69fba0df32c544177: + +stasis/control.c: In function 'exec_command_on_condition': +stasis/control.c:313:3: warning: implicit declaration of function 'pthread_kill'; did you mean 'pthread_yield'? [-Wimplicit-function-declaration] + 313 | pthread_kill(control->control_thread, SIGURG); + | ^~~~~~~~~~~~ + | pthread_yield +stasis/control.c:313:41: error: 'SIGURG' undeclared (first use in this function) + 313 | pthread_kill(control->control_thread, SIGURG); + | ^~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/d16e4ca4bd26234f84d17da24c04a8c19faba6c5 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/asterisk/asterisk/pull/728 +--- + res/stasis/control.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/res/stasis/control.c b/res/stasis/control.c +index 360f20790..4ed0e2af1 100644 +--- a/res/stasis/control.c ++++ b/res/stasis/control.c +@@ -41,6 +41,8 @@ + #include "asterisk/musiconhold.h" + #include "asterisk/app.h" + ++#include ++ + AST_LIST_HEAD(app_control_rules, stasis_app_control_rule); + + /*! +-- +2.43.0 + From yann.morin.1998 at free.fr Wed May 1 16:27:22 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 18:27:22 +0200 Subject: [Buildroot] [PATCH 1/1] package/asterisk: fix uclibc-ng build In-Reply-To: <20240501150042.281549-1-fontaine.fabrice@gmail.com> References: <20240501150042.281549-1-fontaine.fabrice@gmail.com> Message-ID: Fabrice, All, On 2024-05-01 17:00 +0200, Fabrice Fontaine spake thusly: > Fix the following uclibc-ng build failure raised since bump to version > 20.7.0 in commit 0e6d4d2171ce70d3aa6693f860a36ff08fc4d2b3 and > https://github.com/asterisk/asterisk/commit/2694792e13c7f3ab1911c4a69fba0df32c544177: > > stasis/control.c: In function 'exec_command_on_condition': > stasis/control.c:313:3: warning: implicit declaration of function 'pthread_kill'; did you mean 'pthread_yield'? [-Wimplicit-function-declaration] > 313 | pthread_kill(control->control_thread, SIGURG); > | ^~~~~~~~~~~~ > | pthread_yield > stasis/control.c:313:41: error: 'SIGURG' undeclared (first use in this function) > 313 | pthread_kill(control->control_thread, SIGURG); > | ^~~~~~ > > Fixes: 0e6d4d2171ce70d3aa6693f860a36ff08fc4d2b3 > - http://autobuild.buildroot.org/results/d16e4ca4bd26234f84d17da24c04a8c19faba6c5 > > Signed-off-by: Fabrice Fontaine Applied to master, thanks. Regards, Yann E. MORIN. > --- > ...es-stasis-control.c-include-signal.h.patch | 43 +++++++++++++++++++ > 1 file changed, 43 insertions(+) > create mode 100644 package/asterisk/0005-res-stasis-control.c-include-signal.h.patch > > diff --git a/package/asterisk/0005-res-stasis-control.c-include-signal.h.patch b/package/asterisk/0005-res-stasis-control.c-include-signal.h.patch > new file mode 100644 > index 0000000000..fc615c4a19 > --- /dev/null > +++ b/package/asterisk/0005-res-stasis-control.c-include-signal.h.patch > @@ -0,0 +1,43 @@ > +From 8391dc3891337ecff8becefe1927a30d3922b848 Mon Sep 17 00:00:00 2001 > +From: Fabrice Fontaine > +Date: Wed, 1 May 2024 16:50:50 +0200 > +Subject: [PATCH] res/stasis/control.c: include signal.h > + > +Include signal.h to avoid the following build failure with uclibc-ng > +raised since > +https://github.com/asterisk/asterisk/commit/2694792e13c7f3ab1911c4a69fba0df32c544177: > + > +stasis/control.c: In function 'exec_command_on_condition': > +stasis/control.c:313:3: warning: implicit declaration of function 'pthread_kill'; did you mean 'pthread_yield'? [-Wimplicit-function-declaration] > + 313 | pthread_kill(control->control_thread, SIGURG); > + | ^~~~~~~~~~~~ > + | pthread_yield > +stasis/control.c:313:41: error: 'SIGURG' undeclared (first use in this function) > + 313 | pthread_kill(control->control_thread, SIGURG); > + | ^~~~~~ > + > +Fixes: > + - http://autobuild.buildroot.org/results/d16e4ca4bd26234f84d17da24c04a8c19faba6c5 > + > +Signed-off-by: Fabrice Fontaine > +Upstream: https://github.com/asterisk/asterisk/pull/728 > +--- > + res/stasis/control.c | 2 ++ > + 1 file changed, 2 insertions(+) > + > +diff --git a/res/stasis/control.c b/res/stasis/control.c > +index 360f20790..4ed0e2af1 100644 > +--- a/res/stasis/control.c > ++++ b/res/stasis/control.c > +@@ -41,6 +41,8 @@ > + #include "asterisk/musiconhold.h" > + #include "asterisk/app.h" > + > ++#include > ++ > + AST_LIST_HEAD(app_control_rules, stasis_app_control_rule); > + > + /*! > +-- > +2.43.0 > + > -- > 2.43.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Wed May 1 16:27:55 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 18:27:55 +0200 Subject: [Buildroot] [PATCH v2] package/asterisk: fix compile issue In-Reply-To: References: Message-ID: Waldemar, All, On 2024-05-01 14:41 +0200, Waldemar Brodkorb spake thusly: > Fix a compile issue when libyuv and libjpeg is enabled. > Detection of following function fails: > checking for pjsip_dlg_create_uas_and_inc_lock in -lpjsip... no > > In config.log you see that libjpeg is missing. > > Fixes: > http://autobuild.buildroot.net/results/7bed9fc68fc9331ad12942c3eab9742ee8a7a4c4 > > Signed-off-by: Waldemar Brodkorb Applied to master, thanks. Regards, Yann E. MORIN. > --- > v1->v2: package libjpeg must be enabled, too > --- > package/asterisk/asterisk.mk | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/package/asterisk/asterisk.mk b/package/asterisk/asterisk.mk > index 33d2e78bcf..c37aa5ec9d 100644 > --- a/package/asterisk/asterisk.mk > +++ b/package/asterisk/asterisk.mk > @@ -113,9 +113,15 @@ ASTERISK_CONF_ENV = \ > > # Uses __atomic_fetch_add_4 > ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) > -ASTERISK_CONF_ENV += LIBS="-latomic" > +ASTERISK_LIBS += -latomic > endif > > +ifeq ($(BR2_PACKAGE_LIBYUV)$(BR2_PACKAGE_JPEG),yy) > +ASTERISK_LIBS += -ljpeg > +endif > + > +ASTERISK_CONF_ENV += LIBS="$(ASTERISK_LIBS)" > + > ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y) > ASTERISK_CONF_OPTS += --with-execinfo > else > -- > 2.39.2 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Wed May 1 16:40:05 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 18:40:05 +0200 Subject: [Buildroot] [git commit] package/asterisk: needs libxcrypt with glibc Message-ID: <20240501164207.C2BEB8638E@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=8996fedefbba7e5dfded9b7389062aba4469deaa branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master We unconditionally configure asterisk with --with-crypt, so the build currently fails under glibc since it removed crypt in 2.39, and we explicitly remove it from external toolchains as well, whatever the version, causing build failures such as: checking for mandatory modules: OPENSSL BKTR CRYPT ILBC JANSSON LIBEDIT LIBJWT LIBXML2 PJPROJECT SQLITE3 ZLIB... fail configure: *** configure: *** The CRYPT installation appears to be missing or broken. configure: *** Either correct the installation, or run configure configure: *** including --without-crypt. Fixing this could be done in two ways: either make libxcrypt a mandatory dependency under glibc, and continue unconditionally enabling crypt support, or only enable crypt support when libxcrypt is available or this was a non-glibc toolchain. We chose the first option, to keep the existing behaviour (crypt support is always enabled), to be aligned with other packages (libxcrypt is selected under glibc toolchains), and because it is also the simplest. Signed-off-by: Yann E. MORIN --- package/asterisk/Config.in | 1 + package/asterisk/asterisk.mk | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/package/asterisk/Config.in b/package/asterisk/Config.in index ba5a574042..71c741acfd 100644 --- a/package/asterisk/Config.in +++ b/package/asterisk/Config.in @@ -12,6 +12,7 @@ config BR2_PACKAGE_ASTERISK select BR2_PACKAGE_LIBILBC select BR2_PACKAGE_LIBJWT select BR2_PACKAGE_LIBPJSIP + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC select BR2_PACKAGE_LIBXML2 select BR2_PACKAGE_SQLITE select BR2_PACKAGE_UTIL_LINUX diff --git a/package/asterisk/asterisk.mk b/package/asterisk/asterisk.mk index c37aa5ec9d..be27509441 100644 --- a/package/asterisk/asterisk.mk +++ b/package/asterisk/asterisk.mk @@ -238,6 +238,11 @@ else ASTERISK_CONF_OPTS += --without-ssl endif +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +# --with-crypt is unconditional, relies on the C library if present +ASTERISK_DEPENDENCIES += libxcrypt +endif + ifeq ($(BR2_PACKAGE_SPEEX)$(BR2_PACKAGE_SPEEXDSP),yy) ASTERISK_DEPENDENCIES += speex ASTERISK_CONF_OPTS += --with-speex --with-speexdsp From yann.morin.1998 at free.fr Wed May 1 18:10:30 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 20:10:30 +0200 Subject: [Buildroot] [PATCH 3/3] package/gcc: Remove unneeded patch. In-Reply-To: <20240501092328.323236-3-dm.chestnykh@gmail.com> References: <20240501092328.323236-1-dm.chestnykh@gmail.com> <20240501092328.323236-3-dm.chestnykh@gmail.com> Message-ID: dmitry, All, On 2024-05-01 12:23 +0300, Dmitry Chestnykh spake thusly: > sparc systems work with uClibc-ng-1.0.48. Right, but... > Signed-off-by: Dmitry Chestnykh > --- > ...get-92095-internal-error-with-O1-mcp.patch | 322 ------------------ > 1 file changed, 322 deletions(-) > delete mode 100644 package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch gcc 8.4.0 is only ever used for PowerPC SPE: package/gcc/Config.in.host 76 config BR2_GCC_VERSION 77 string 78 default "8.4.0" if BR2_GCC_VERSION_POWERPC_SPE So gcc 8.4.0 can't be used for sparc, so any sparc-rleated patch there is totally unused. Which IMHO should be the actual reason for dropping it... Regards, Yann E. MORIN. > diff --git a/package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch b/package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch > deleted file mode 100644 > index ec2bf8835d..0000000000 > --- a/package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch > +++ /dev/null > @@ -1,322 +0,0 @@ > -From bb9b71752267444b4360442b89129bfc0ae938d3 Mon Sep 17 00:00:00 2001 > -From: Romain Naour > -Date: Wed, 20 Jan 2021 23:06:07 +0100 > -Subject: [PATCH] Revert "re PR target/92095 (internal error with -O1 > - -mcpu=niagara2 -fPIE)" > - > -This reverts commit 3fcce773f0f914c0499b130c6e9efa0e45ee54a0. > - > -Building the Buildroot defconfig qemu_sparc_ss10_defconfig using > -gcc 8.4, 9.3 and 10 produce a broken rootfs that trigger illegal > -instruction messages. > - > -gcc 8.3, 9.2 are the latest working gcc version. > -git bisect between gcc 8.4 and 8.4 allowed to identify > -the commit that introcuce the regression. > - > -Reverting this patch allowed to produce a working rootfs. > - > -Signed-off-by: Romain Naour > -Cc: Eric Botcazou > ---- > - gcc/config/sparc/sparc-protos.h | 1 - > - gcc/config/sparc/sparc.c | 121 +++++++----------- > - gcc/config/sparc/sparc.md | 5 +- > - .../gcc.c-torture/compile/20191108-1.c | 14 -- > - gcc/testsuite/gcc.target/sparc/overflow-3.c | 2 +- > - gcc/testsuite/gcc.target/sparc/overflow-4.c | 2 +- > - gcc/testsuite/gcc.target/sparc/overflow-5.c | 2 +- > - 7 files changed, 53 insertions(+), 94 deletions(-) > - delete mode 100644 gcc/testsuite/gcc.c-torture/compile/20191108-1.c > - > -diff --git a/gcc/config/sparc/sparc-protos.h b/gcc/config/sparc/sparc-protos.h > -index b3f73c2f2bf..71a067e871c 100644 > ---- a/gcc/config/sparc/sparc-protos.h > -+++ b/gcc/config/sparc/sparc-protos.h > -@@ -69,7 +69,6 @@ extern void sparc_split_reg_mem (rtx, rtx, machine_mode); > - extern void sparc_split_mem_reg (rtx, rtx, machine_mode); > - extern int sparc_split_reg_reg_legitimate (rtx, rtx); > - extern void sparc_split_reg_reg (rtx, rtx, machine_mode); > --extern const char *output_load_pcrel_sym (rtx *); > - extern const char *output_ubranch (rtx, rtx_insn *); > - extern const char *output_cbranch (rtx, rtx, int, int, int, rtx_insn *); > - extern const char *output_return (rtx_insn *); > -diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c > -index 73032d33596..db1b428db90 100644 > ---- a/gcc/config/sparc/sparc.c > -+++ b/gcc/config/sparc/sparc.c > -@@ -4200,6 +4200,13 @@ eligible_for_sibcall_delay (rtx_insn *trial) > - static bool > - sparc_cannot_force_const_mem (machine_mode mode, rtx x) > - { > -+ /* After IRA has run in PIC mode, it is too late to put anything into the > -+ constant pool if the PIC register hasn't already been initialized. */ > -+ if ((lra_in_progress || reload_in_progress) > -+ && flag_pic > -+ && !crtl->uses_pic_offset_table) > -+ return true; > -+ > - switch (GET_CODE (x)) > - { > - case CONST_INT: > -@@ -4235,11 +4242,9 @@ sparc_cannot_force_const_mem (machine_mode mode, rtx x) > - } > - > - /* Global Offset Table support. */ > --static GTY(()) rtx got_symbol_rtx = NULL_RTX; > --static GTY(()) rtx got_register_rtx = NULL_RTX; > - static GTY(()) rtx got_helper_rtx = NULL_RTX; > -- > --static GTY(()) bool got_helper_needed = false; > -+static GTY(()) rtx got_register_rtx = NULL_RTX; > -+static GTY(()) rtx got_symbol_rtx = NULL_RTX; > - > - /* Return the SYMBOL_REF for the Global Offset Table. */ > - > -@@ -4252,6 +4257,27 @@ sparc_got (void) > - return got_symbol_rtx; > - } > - > -+#ifdef HAVE_GAS_HIDDEN > -+# define USE_HIDDEN_LINKONCE 1 > -+#else > -+# define USE_HIDDEN_LINKONCE 0 > -+#endif > -+ > -+static void > -+get_pc_thunk_name (char name[32], unsigned int regno) > -+{ > -+ const char *reg_name = reg_names[regno]; > -+ > -+ /* Skip the leading '%' as that cannot be used in a > -+ symbol name. */ > -+ reg_name += 1; > -+ > -+ if (USE_HIDDEN_LINKONCE) > -+ sprintf (name, "__sparc_get_pc_thunk.%s", reg_name); > -+ else > -+ ASM_GENERATE_INTERNAL_LABEL (name, "LADDPC", regno); > -+} > -+ > - /* Wrapper around the load_pcrel_sym{si,di} patterns. */ > - > - static rtx > -@@ -4271,78 +4297,30 @@ gen_load_pcrel_sym (rtx op0, rtx op1, rtx op2) > - return insn; > - } > - > --/* Output the load_pcrel_sym{si,di} patterns. */ > -- > --const char * > --output_load_pcrel_sym (rtx *operands) > --{ > -- if (flag_delayed_branch) > -- { > -- output_asm_insn ("sethi\t%%hi(%a1-4), %0", operands); > -- output_asm_insn ("call\t%a2", operands); > -- output_asm_insn (" add\t%0, %%lo(%a1+4), %0", operands); > -- } > -- else > -- { > -- output_asm_insn ("sethi\t%%hi(%a1-8), %0", operands); > -- output_asm_insn ("add\t%0, %%lo(%a1-4), %0", operands); > -- output_asm_insn ("call\t%a2", operands); > -- output_asm_insn (" nop", NULL); > -- } > -- > -- if (operands[2] == got_helper_rtx) > -- got_helper_needed = true; > -- > -- return ""; > --} > -- > --#ifdef HAVE_GAS_HIDDEN > --# define USE_HIDDEN_LINKONCE 1 > --#else > --# define USE_HIDDEN_LINKONCE 0 > --#endif > -- > - /* Emit code to load the GOT register. */ > - > - void > - load_got_register (void) > - { > -- rtx insn; > -+ if (!got_register_rtx) > -+ got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM); > - > - if (TARGET_VXWORKS_RTP) > -- { > -- if (!got_register_rtx) > -- got_register_rtx = pic_offset_table_rtx; > -- > -- insn = gen_vxworks_load_got (); > -- } > -+ emit_insn (gen_vxworks_load_got ()); > - else > - { > -- if (!got_register_rtx) > -- got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM); > -- > - /* The GOT symbol is subject to a PC-relative relocation so we need a > - helper function to add the PC value and thus get the final value. */ > - if (!got_helper_rtx) > - { > - char name[32]; > -- > -- /* Skip the leading '%' as that cannot be used in a symbol name. */ > -- if (USE_HIDDEN_LINKONCE) > -- sprintf (name, "__sparc_get_pc_thunk.%s", > -- reg_names[REGNO (got_register_rtx)] + 1); > -- else > -- ASM_GENERATE_INTERNAL_LABEL (name, "LADDPC", > -- REGNO (got_register_rtx)); > -- > -+ get_pc_thunk_name (name, GLOBAL_OFFSET_TABLE_REGNUM); > - got_helper_rtx = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name)); > - } > - > -- insn > -- = gen_load_pcrel_sym (got_register_rtx, sparc_got (), got_helper_rtx); > -+ emit_insn (gen_load_pcrel_sym (got_register_rtx, sparc_got (), > -+ got_helper_rtx)); > - } > -- > -- emit_insn (insn); > - } > - > - /* Ensure that we are not using patterns that are not OK with PIC. */ > -@@ -5494,7 +5472,7 @@ save_local_or_in_reg_p (unsigned int regno, int leaf_function) > - return true; > - > - /* GOT register (%l7) if needed. */ > -- if (got_register_rtx && regno == REGNO (got_register_rtx)) > -+ if (regno == GLOBAL_OFFSET_TABLE_REGNUM && got_register_rtx) > - return true; > - > - /* If the function accesses prior frames, the frame pointer and the return > -@@ -12475,9 +12453,10 @@ static void > - sparc_file_end (void) > - { > - /* If we need to emit the special GOT helper function, do so now. */ > -- if (got_helper_needed) > -+ if (got_helper_rtx) > - { > - const char *name = XSTR (got_helper_rtx, 0); > -+ const char *reg_name = reg_names[GLOBAL_OFFSET_TABLE_REGNUM]; > - #ifdef DWARF2_UNWIND_INFO > - bool do_cfi; > - #endif > -@@ -12514,22 +12493,17 @@ sparc_file_end (void) > - #ifdef DWARF2_UNWIND_INFO > - do_cfi = dwarf2out_do_cfi_asm (); > - if (do_cfi) > -- output_asm_insn (".cfi_startproc", NULL); > -+ fprintf (asm_out_file, "\t.cfi_startproc\n"); > - #endif > - if (flag_delayed_branch) > -- { > -- output_asm_insn ("jmp\t%%o7+8", NULL); > -- output_asm_insn (" add\t%%o7, %0, %0", &got_register_rtx); > -- } > -+ fprintf (asm_out_file, "\tjmp\t%%o7+8\n\t add\t%%o7, %s, %s\n", > -+ reg_name, reg_name); > - else > -- { > -- output_asm_insn ("add\t%%o7, %0, %0", &got_register_rtx); > -- output_asm_insn ("jmp\t%%o7+8", NULL); > -- output_asm_insn (" nop", NULL); > -- } > -+ fprintf (asm_out_file, "\tadd\t%%o7, %s, %s\n\tjmp\t%%o7+8\n\t nop\n", > -+ reg_name, reg_name); > - #ifdef DWARF2_UNWIND_INFO > - if (do_cfi) > -- output_asm_insn (".cfi_endproc", NULL); > -+ fprintf (asm_out_file, "\t.cfi_endproc\n"); > - #endif > - } > - > -@@ -13035,10 +13009,7 @@ sparc_init_pic_reg (void) > - edge entry_edge; > - rtx_insn *seq; > - > -- /* In PIC mode, we need to always initialize the PIC register if optimization > -- is enabled, because we are called from IRA and LRA may later force things > -- to the constant pool for optimization purposes. */ > -- if (!flag_pic || (!crtl->uses_pic_offset_table && !optimize)) > -+ if (!crtl->uses_pic_offset_table) > - return; > - > - start_sequence (); > -diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md > -index 468e2cc5d3b..25134bd1148 100644 > ---- a/gcc/config/sparc/sparc.md > -+++ b/gcc/config/sparc/sparc.md > -@@ -1601,7 +1601,10 @@ > - (clobber (reg:P O7_REG))] > - "REGNO (operands[0]) == INTVAL (operands[3])" > - { > -- return output_load_pcrel_sym (operands); > -+ if (flag_delayed_branch) > -+ return "sethi\t%%hi(%a1-4), %0\n\tcall\t%a2\n\t add\t%0, %%lo(%a1+4), %0"; > -+ else > -+ return "sethi\t%%hi(%a1-8), %0\n\tadd\t%0, %%lo(%a1-4), %0\n\tcall\t%a2\n\t nop"; > - } > - [(set (attr "type") (const_string "multi")) > - (set (attr "length") > -diff --git a/gcc/testsuite/gcc.c-torture/compile/20191108-1.c b/gcc/testsuite/gcc.c-torture/compile/20191108-1.c > -deleted file mode 100644 > -index 7929751bb06..00000000000 > ---- a/gcc/testsuite/gcc.c-torture/compile/20191108-1.c > -+++ /dev/null > -@@ -1,14 +0,0 @@ > --/* PR target/92095 */ > --/* Testcase by Sergei Trofimovich */ > -- > --typedef union { > -- double a; > -- int b[2]; > --} c; > -- > --double d(int e) > --{ > -- c f; > -- (&f)->b[0] = 15728640; > -- return e ? -(&f)->a : (&f)->a; > --} > -diff --git a/gcc/testsuite/gcc.target/sparc/overflow-3.c b/gcc/testsuite/gcc.target/sparc/overflow-3.c > -index 18253bb6e5e..8cb24f52f7b 100644 > ---- a/gcc/testsuite/gcc.target/sparc/overflow-3.c > -+++ b/gcc/testsuite/gcc.target/sparc/overflow-3.c > -@@ -1,5 +1,5 @@ > - /* { dg-do compile } */ > --/* { dg-options "-O -fno-pie" } */ > -+/* { dg-options "-O" } */ > - /* { dg-require-effective-target lp64 } */ > - > - #include > -diff --git a/gcc/testsuite/gcc.target/sparc/overflow-4.c b/gcc/testsuite/gcc.target/sparc/overflow-4.c > -index fb30877efb9..868edea2b9e 100644 > ---- a/gcc/testsuite/gcc.target/sparc/overflow-4.c > -+++ b/gcc/testsuite/gcc.target/sparc/overflow-4.c > -@@ -1,5 +1,5 @@ > - /* { dg-do compile } */ > --/* { dg-options "-O -fno-pie -mno-vis3" } */ > -+/* { dg-options "-O -mno-vis3" } */ > - /* { dg-require-effective-target lp64 } */ > - > - #include > -diff --git a/gcc/testsuite/gcc.target/sparc/overflow-5.c b/gcc/testsuite/gcc.target/sparc/overflow-5.c > -index 509d957715d..501ce04f7a1 100644 > ---- a/gcc/testsuite/gcc.target/sparc/overflow-5.c > -+++ b/gcc/testsuite/gcc.target/sparc/overflow-5.c > -@@ -1,5 +1,5 @@ > - /* { dg-do compile } */ > --/* { dg-options "-O -fno-pie -mvis3" } */ > -+/* { dg-options "-O -mvis3" } */ > - /* { dg-require-effective-target lp64 } */ > - > - #include > --- > -2.25.4 > - > -- > 2.44.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Wed May 1 18:11:25 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 20:11:25 +0200 Subject: [Buildroot] [PATCH 2/3] configs/qemu_sparc_ss10_defconfig: Restore. In-Reply-To: <20240501092328.323236-2-dm.chestnykh@gmail.com> References: <20240501092328.323236-1-dm.chestnykh@gmail.com> <20240501092328.323236-2-dm.chestnykh@gmail.com> Message-ID: Dmitry, All, On 2024-05-01 12:23 +0300, Dmitry Chestnykh spake thusly: > With uClibc-ng-1.0.48 we can restore this config > because now sparc systems work without reverting GCC commits. > > Signed-off-by: Dmitry Chestnykh > --- > arch/Config.in | 5 ----- > configs/qemu_sparc_ss10_defconfig | 28 ++++++++++++++++++++++++++++ > 2 files changed, 28 insertions(+), 5 deletions(-) > create mode 100644 configs/qemu_sparc_ss10_defconfig This patch is doing two things: 1. allow building an internal toolchain for sparc; 2. (re)introduce a defconfig. It should be two different patches, in the order above. Regards, Yann E. MORIN. > diff --git a/arch/Config.in b/arch/Config.in > index 9912f9fce6..e7349e83ae 100644 > --- a/arch/Config.in > +++ b/arch/Config.in > @@ -216,11 +216,6 @@ config BR2_sh > config BR2_sparc > bool "SPARC" > select BR2_USE_MMU > - # uClibc-ng broken on sparc due to recent gcc changes > - # that need to be reverted since gcc 8.4, 9.3 and 10.1. > - # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784 > - # gcc <= 10.x has been removed from Buildroot. > - select BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT > help > SPARC (from Scalable Processor Architecture) is a RISC > instruction set architecture (ISA) developed by Sun > diff --git a/configs/qemu_sparc_ss10_defconfig b/configs/qemu_sparc_ss10_defconfig > new file mode 100644 > index 0000000000..a8e3df9180 > --- /dev/null > +++ b/configs/qemu_sparc_ss10_defconfig > @@ -0,0 +1,28 @@ > +# Architecture > +BR2_sparc=y > +BR2_sparc_v8=y > + > +# System > +BR2_SYSTEM_DHCP="eth0" > + > +# Filesystem > +BR2_TARGET_ROOTFS_EXT2=y > +# BR2_TARGET_ROOTFS_TAR is not set > + > +# Image > +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" > +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" > + > +# Linux headers same as kernel > +BR2_PACKAGE_HOST_LINUX_HEADERS_AS_KERNEL=y > + > +# Linux kernel > +BR2_LINUX_KERNEL=y > +BR2_LINUX_KERNEL_CUSTOM_VERSION=y > +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.6" > +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y > +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sparc-ss10/linux.config" > + > +# host-qemu for gitlab testing > +BR2_PACKAGE_HOST_QEMU=y > +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y > -- > 2.44.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Wed May 1 18:20:45 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 20:20:45 +0200 Subject: [Buildroot] [PATCH v2 1/3] package/uclibc: Bump to 1.0.48. In-Reply-To: <20240501093725.325194-1-dm.chestnykh@gmail.com> References: <20240501093725.325194-1-dm.chestnykh@gmail.com> Message-ID: Dimitry, All, Thanks for working on this version bump! :-) When resending a patch in a series, resend the full series, not just the fixed patch. Also... On 2024-05-01 12:37 +0300, Dmitry Chestnykh spake thusly: > In 1.0.48 release uClibc-ng has provided the fix > for SPARC related to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784 > > Signed-off-by: Dmitry Chestnykh > --- ... when you send a v2 (v3...) of a patch, you must include a little explanations about what changed between the versions. See for example: https://lore.kernel.org/buildroot/ZjI4anypCjkVxtjO at waldemar-brodkorb.de/ It would have helped spot the fact that the licnese hash has changed, see below... > package/uclibc/uclibc.hash | 6 +++--- > package/uclibc/uclibc.mk | 2 +- > 2 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/package/uclibc/uclibc.hash b/package/uclibc/uclibc.hash > index a10ceab54c..7097bbf99a 100644 > --- a/package/uclibc/uclibc.hash > +++ b/package/uclibc/uclibc.hash > @@ -1,4 +1,4 @@ > -# From https://downloads.uclibc-ng.org/releases/1.0.47/uClibc-ng-1.0.47.tar.xz.sha256 > -sha256 29a4d684a06da344ee3ee09acc2ca7649d592ae3ff848f698145c46def05efcb uClibc-ng-1.0.47.tar.xz > +# From https://downloads.uclibc-ng.org/releases/1.0.47/uClibc-ng-1.0.48.tar.xz.sha256 > +sha256 3bf5fc6cc5cbc454b6c478424755c6f71e7c15578a2c966f02606aa5c5596e21 uClibc-ng-1.0.48.tar.xz > # Locally calculated > -sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 COPYING.LIB > +sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING.LIB We have hashes for license files, so that we notice when the license file changes. In which case we must assess the reason for that change, and it must be explained in the commit log, even if briefly: - did the licensing terms change, and if so, what is the new license? - was there just a minor update, like copyright years? - something else? In any case, updating the hash of a license file should not be done without explanations. Can you respin your series with the requested changes, please? Do not hesitate to carry Waldemar's tested-by tags where appropriate (i.e. on the version bump, the patch drop, but not on the internal toolchain backend and defconfig, because it is not obvious what it applies to). Regards, Yann E. MORIN. > diff --git a/package/uclibc/uclibc.mk b/package/uclibc/uclibc.mk > index a7b18133ff..9593e18d45 100644 > --- a/package/uclibc/uclibc.mk > +++ b/package/uclibc/uclibc.mk > @@ -4,7 +4,7 @@ > # > ################################################################################ > > -UCLIBC_VERSION = 1.0.47 > +UCLIBC_VERSION = 1.0.48 > UCLIBC_SOURCE = uClibc-ng-$(UCLIBC_VERSION).tar.xz > UCLIBC_SITE = https://downloads.uclibc-ng.org/releases/$(UCLIBC_VERSION) > UCLIBC_LICENSE = LGPL-2.1+ > -- > 2.44.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From thomas.petazzoni at bootlin.com Wed May 1 18:30:31 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 20:30:31 +0200 Subject: [Buildroot] [git commit] package/starfive-spltool: new package Message-ID: <20240501185220.E9E9A863B4@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=6c4a99205094dea87986c0e12e955e9ef0676771 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master This patch adds a new package for the Starfive SPL tool. It is used to add a header to the Secondary Program Loader for platforms based on the Starfive JH7110 SoC. Signed-off-by: Thomas Bonnefille Signed-off-by: Thomas Petazzoni --- DEVELOPERS | 3 +++ package/Config.in.host | 1 + package/starfive-spltool/Config.in.host | 8 ++++++++ package/starfive-spltool/starfive-spltool.hash | 2 ++ package/starfive-spltool/starfive-spltool.mk | 20 ++++++++++++++++++++ 5 files changed, 34 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index 51a5cad167..6180d238f0 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2960,6 +2960,9 @@ N: Thijs Vermeir F: package/ranger/ F: package/x265/ +N: Thomas Bonnefille +F: package/starfive-spltool/ + N: Thomas Claveirole F: package/fcgiwrap/ F: package/openlayers/ diff --git a/package/Config.in.host b/package/Config.in.host index 9543a22ffc..986b2854d0 100644 --- a/package/Config.in.host +++ b/package/Config.in.host @@ -107,6 +107,7 @@ menu "Host utilities" source "package/sentry-cli/Config.in.host" source "package/sloci-image/Config.in.host" source "package/squashfs/Config.in.host" + source "package/starfive-spltool/Config.in.host" source "package/sunxi-tools/Config.in.host" source "package/swig/Config.in.host" source "package/swugenerator/Config.in.host" diff --git a/package/starfive-spltool/Config.in.host b/package/starfive-spltool/Config.in.host new file mode 100644 index 0000000000..afb2777ca6 --- /dev/null +++ b/package/starfive-spltool/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_STARFIVE_SPLTOOL + bool "host starfive-spltool" + depends on BR2_riscv + help + Add header to the Secondary Program Loader with the 3rd party + software given by Starfive-Tech for their SoCs. + + https://github.com/starfive-tech/soft_3rdpart/tree/JH7110_VisionFive2_devel/spl_tool diff --git a/package/starfive-spltool/starfive-spltool.hash b/package/starfive-spltool/starfive-spltool.hash new file mode 100644 index 0000000000..55835de310 --- /dev/null +++ b/package/starfive-spltool/starfive-spltool.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 f5466225021fbe4e983cc85f32ce11d92ad30689b18e0d1390d16f6bfab74477 starfive-spltool-JH7110_VF2_515_v5.11.3.tar.gz diff --git a/package/starfive-spltool/starfive-spltool.mk b/package/starfive-spltool/starfive-spltool.mk new file mode 100644 index 0000000000..559df35074 --- /dev/null +++ b/package/starfive-spltool/starfive-spltool.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# starfive-spltool +# +################################################################################ + +STARFIVE_SPLTOOL_VERSION = JH7110_VF2_515_v5.11.3 +STARFIVE_SPLTOOL_SITE = $(call github,starfive-tech,soft_3rdpart,$(STARFIVE_SPLTOOL_VERSION)) +STARFIVE_SPLTOOL_LICENSE = GPL-2.0+ +STARFIVE_SPLTOOL_FILES = spl_tool/LICENSE + +define HOST_STARFIVE_SPLTOOL_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D)/spl_tool +endef + +define HOST_STARFIVE_SPLTOOL_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/spl_tool/spl_tool $(HOST_DIR)/bin/spl_tool +endef + +$(eval $(host-generic-package)) From thomas.petazzoni at bootlin.com Wed May 1 18:51:57 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 20:51:57 +0200 Subject: [Buildroot] [git commit] configs/pine64_star64: new defconfig Message-ID: <20240501185221.03508863B6@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=35635cdc5b59a146928b82812d1c3c6db40b09f1 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master This patch adds a new defconfig for the Star64 board made by Pine64. This board is based on the Starfive JH7110 RISC-V 64 bits SoC. See: https://wiki.pine64.org/wiki/STAR64. This patch uses a custom Kernel and U-Boot made for this board. The SPL has to be signed with the Starfive SPL-Tool which is a software provided by the vendor to get the necessary headers on the SPL. The image configuration is based on the work done by Ivan Velickovic . Signed-off-by: Thomas Bonnefille Signed-off-by: Thomas Petazzoni --- DEVELOPERS | 2 ++ board/pine64/star64/genimage.cfg | 24 +++++++++++++ .../star64/overlay/boot/extlinux/extlinux.conf | 4 +++ board/pine64/star64/post-build.sh | 9 +++++ board/pine64/star64/readme.txt | 32 +++++++++++++++++ board/pine64/star64/star64-uboot-fit-image.its | 29 ++++++++++++++++ configs/pine64_star64_defconfig | 40 ++++++++++++++++++++++ 7 files changed, 140 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index 6180d238f0..c132b61f2a 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2961,6 +2961,8 @@ F: package/ranger/ F: package/x265/ N: Thomas Bonnefille +F: board/pine64/star64 +F: configs/pine64_star64_defconfig F: package/starfive-spltool/ N: Thomas Claveirole diff --git a/board/pine64/star64/genimage.cfg b/board/pine64/star64/genimage.cfg new file mode 100644 index 0000000000..74940016f4 --- /dev/null +++ b/board/pine64/star64/genimage.cfg @@ -0,0 +1,24 @@ +# SD card image for the Pine64 Star64 board + +image sdcard.img { + hdimage { + partition-table-type = "gpt" + } + + partition spl { + image = "u-boot-spl.bin.normal.out" + partition-type-uuid = 2E54B353-1271-4842-806F-E436D6AF6985 + offset = 2M + } + + partition uboot { + image = "opensbi_uboot_payload.img" + partition-type-uuid = 5B193300-FC78-40CD-8002-E86C45580B47 + offset = 4M + } + + partition rootfs { + image = "rootfs.ext4" + bootable = true + } +} diff --git a/board/pine64/star64/overlay/boot/extlinux/extlinux.conf b/board/pine64/star64/overlay/boot/extlinux/extlinux.conf new file mode 100644 index 0000000000..db7cfb7b8b --- /dev/null +++ b/board/pine64/star64/overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,4 @@ +label star64 + kernel /boot/Image + devicetree /boot/jh7110-pine64-star64.dtb + append root=/dev/mmcblk1p3 earlycon=sbi diff --git a/board/pine64/star64/post-build.sh b/board/pine64/star64/post-build.sh new file mode 100755 index 0000000000..ed0a6ebd52 --- /dev/null +++ b/board/pine64/star64/post-build.sh @@ -0,0 +1,9 @@ +#!/bin/bash +BOARD_DIR="$CONFIG_DIR"/board/pine64/star64 + +# Add header to the SPL +"$HOST_DIR"/bin/spl_tool -c -f "$BINARIES_DIR"/u-boot-spl.bin + +# Create the u-boot FIT image +cp "$BOARD_DIR"/star64-uboot-fit-image.its "$BINARIES_DIR" +mkimage -f "$BINARIES_DIR"/star64-uboot-fit-image.its -A riscv -O u-boot -T firmware "$BINARIES_DIR"/opensbi_uboot_payload.img diff --git a/board/pine64/star64/readme.txt b/board/pine64/star64/readme.txt new file mode 100644 index 0000000000..5e6ce25108 --- /dev/null +++ b/board/pine64/star64/readme.txt @@ -0,0 +1,32 @@ +Pine64 Star64 +============= + +The Star64 is a low-cost RISC-V 64-bit based platform, powered by a +Starfive JH7110 processor. + +https://wiki.pine64.org/wiki/STAR64 + +How to build +============ + +$ make pine64_star64_defconfig +$ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX conv=fdatasync + +Preparing the board +=================== + +Connect a TTL UART cable to pin 6 (GND), 8 (TX) and 10 (RX). + +Insert your SD card. + +Power-up the board using a 12V power supply. diff --git a/board/pine64/star64/star64-uboot-fit-image.its b/board/pine64/star64/star64-uboot-fit-image.its new file mode 100644 index 0000000000..08f603163a --- /dev/null +++ b/board/pine64/star64/star64-uboot-fit-image.its @@ -0,0 +1,29 @@ +/dts-v1/; + +/ { + description = "U-boot-spl FIT image for JH7110 Pine64 Star64"; + #address-cells = <2>; + + images { + firmware { + description = "u-boot"; + data = /incbin/("fw_payload.bin"); + type = "firmware"; + arch = "riscv"; + os = "u-boot"; + load = <0x0 0x40000000>; + entry = <0x0 0x40000000>; + compression = "none"; + }; + }; + + configurations { + default = "config-1"; + + config-1 { + description = "U-boot-spl FIT config for JH7110 Pine64 Star64"; + firmware = "firmware"; + }; + }; +}; + diff --git a/configs/pine64_star64_defconfig b/configs/pine64_star64_defconfig new file mode 100644 index 0000000000..2c0c17ad62 --- /dev/null +++ b/configs/pine64_star64_defconfig @@ -0,0 +1,40 @@ +BR2_riscv=y + +# Linux headers same as kernel, a 5.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y + +# Kernel configuration +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,Fishwaldo,Star64_linux,1456c984f15e21e28fb8a9ce96d0ca10e61a71c4)/linux-1456c984f15e21e28fb8a9ce96d0ca10e61a71c4.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="pine64_star64" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="starfive/jh7110-pine64-star64" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# OpenSBI configuration +BR2_TARGET_OPENSBI=y +BR2_TARGET_OPENSBI_UBOOT_PAYLOAD=y +BR2_TARGET_OPENSBI_PLAT="generic" + +# U-Boot configuration +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,Fishwaldo,u-boot,172b47f62039605d6806fa96bd403c21cda28996)/u-boot-172b47f62039605d6806fa96bd403c21cda28996.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="pine64_star64" +BR2_TARGET_UBOOT_SPL=y + +# Misc +BR2_ROOTFS_OVERLAY="board/pine64/star64/overlay/" +BR2_PACKAGE_HOST_STARFIVE_SPLTOOL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="100M" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/pine64/star64/genimage.cfg" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/pine64/star64/post-build.sh" +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y From thomas.petazzoni at bootlin.com Wed May 1 18:53:47 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 20:53:47 +0200 Subject: [Buildroot] [PATCH 1/2] package/starfive_spltool: new package In-Reply-To: <20240403091952.653698-2-thomas.bonnefille@bootlin.com> References: <20240403091952.653698-1-thomas.bonnefille@bootlin.com> <20240403091952.653698-2-thomas.bonnefille@bootlin.com> Message-ID: <20240501205347.41b44d6d@windsurf> On Wed, 3 Apr 2024 11:14:39 +0200 Thomas Bonnefille via buildroot wrote: > This patch adds a new package for the Starfive SPL tool. It is used to > add header to the Secondary Program Loader for board based on the > Starfive JH7110 SoC. > > Signed-off-by: Thomas Bonnefille > --- > DEVELOPERS | 3 +++ > package/Config.in.host | 1 + > package/starfive-spltool/Config.in.host | 8 ++++++++ > .../starfive-spltool.hash | 2 ++ > package/starfive-spltool/starfive-spltool.mk | 20 +++++++++++++++++++ > 5 files changed, 34 insertions(+) > create mode 100644 package/starfive-spltool/Config.in.host > create mode 100644 package/starfive-spltool/JH7110_VF2_515_v5.11.3/starfive-spltool.hash > create mode 100644 package/starfive-spltool/starfive-spltool.mk Thanks, I've applied to master after: - fixing the commit title starfive_spltool -> starfive-spltool - moving the .hash file directly under package/starfive-spltool/, using a versioned directory is only useful for packages for which multiple versions are supported, which is not the case here Thanks! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Wed May 1 18:54:55 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 20:54:55 +0200 Subject: [Buildroot] [PATCH 2/2] configs/pine64-star64: new defconfig In-Reply-To: <20240403091952.653698-3-thomas.bonnefille@bootlin.com> References: <20240403091952.653698-1-thomas.bonnefille@bootlin.com> <20240403091952.653698-3-thomas.bonnefille@bootlin.com> Message-ID: <20240501205455.2f5c46e6@windsurf> Hello Thomas, On Wed, 3 Apr 2024 11:14:40 +0200 Thomas Bonnefille via buildroot wrote: > This patch adds a new defconfig for the Star64 board made by Pine64. This > board is based on the Starfive JH7110 RISC-V 64 bits SoC. > https://wiki.pine64.org/wiki/STAR64 > This patch uses a custom Kernel and U-Boot made for this board. The SPL > has to be signed with the Starfive SPL-Tool which is a software > provided by the vendor to get the necessary headers on the SPL. > The image configuration is based on the work done by Ivan Velickovic > . > > Signed-off-by: Thomas Bonnefille Thanks, I've applied after: - adjusting the commit title pine64-star64 -> pine64_star64 (to match the name of the defconfig) - adding the host-uboot-tools package with FIT support to the defconfig, so that it gets built. Otherwise the build fails at the end when the post-build script calls mkimage as mkimage is not available. Probably it was working on your machine because you had mkimage installed system-wide, but Buildroot shouldn't depend on this. Thanks a lot! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Wed May 1 18:56:22 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 20:56:22 +0200 Subject: [Buildroot] [git commit] package/lua-lsdbus: new package Message-ID: <20240501190033.B03F1863C9@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=119cfd836ed11c2fcdf9d7de32ad5803402b79b1 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Francois Perrad Signed-off-by: Thomas Petazzoni --- package/Config.in | 1 + package/lua-lsdbus/Config.in | 12 ++++++++++++ package/lua-lsdbus/lua-lsdbus.hash | 3 +++ package/lua-lsdbus/lua-lsdbus.mk | 17 +++++++++++++++++ 4 files changed, 33 insertions(+) diff --git a/package/Config.in b/package/Config.in index 1935077f0f..38e9c94198 100644 --- a/package/Config.in +++ b/package/Config.in @@ -751,6 +751,7 @@ menu "Lua libraries/modules" source "package/lua-livr/Config.in" source "package/lua-livr-extra/Config.in" source "package/lua-lpeg-patterns/Config.in" + source "package/lua-lsdbus/Config.in" source "package/lua-lunitx/Config.in" source "package/lua-lunix/Config.in" source "package/lua-lyaml/Config.in" diff --git a/package/lua-lsdbus/Config.in b/package/lua-lsdbus/Config.in new file mode 100644 index 0000000000..f4eda20d6e --- /dev/null +++ b/package/lua-lsdbus/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LUA_LSDBUS + bool "lua-lsdbus" + depends on BR2_PACKAGE_SYSTEMD + select BR2_PACKAGE_MXML + select BR2_PACKAGE_LUA_COMPAT53 if BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_1 + help + Lua D-Bus bindings based on sd-bus and sd-event + + https://github.com/kmarkus/lsdbus + +comment "lua-lsdbus needs systemd" + depends on !BR2_PACKAGE_SYSTEMD diff --git a/package/lua-lsdbus/lua-lsdbus.hash b/package/lua-lsdbus/lua-lsdbus.hash new file mode 100644 index 0000000000..369370d63a --- /dev/null +++ b/package/lua-lsdbus/lua-lsdbus.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 b515cd00c844abc80993e9552d884c71a80a680e47b90a628f1f7bd18b9b821a lua-lsdbus-d132f8b2bd390d0b1c7d17b300190279f92bd494.tar.gz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/lua-lsdbus/lua-lsdbus.mk b/package/lua-lsdbus/lua-lsdbus.mk new file mode 100644 index 0000000000..cbd7ee9d4b --- /dev/null +++ b/package/lua-lsdbus/lua-lsdbus.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# lua-lsdbus +# +################################################################################ + +LUA_LSDBUS_VERSION = d132f8b2bd390d0b1c7d17b300190279f92bd494 +LUA_LSDBUS_SITE = $(call github,kmarkus,lsdbus,$(LUA_LSDBUS_VERSION)) +LUA_LSDBUS_DEPENDENCIES = luainterpreter mxml systemd +LUA_LSDBUS_LICENSE = LGPL-2.1 +LUA_LSDBUS_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_LUA_COMPAT53),y) +LUA_LSDBUS_DEPENDENCIES += lua-compat53 +endif + +$(eval $(cmake-package)) From thomas.petazzoni at bootlin.com Wed May 1 19:02:02 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:02:02 +0200 Subject: [Buildroot] [PATCH] package/lua-lsdbus: new package In-Reply-To: <20240403085524.1650692-1-francois.perrad@gadz.org> References: <20240403085524.1650692-1-francois.perrad@gadz.org> Message-ID: <20240501210202.03f37cf8@windsurf> On Wed, 3 Apr 2024 10:55:24 +0200 Francois Perrad wrote: > Signed-off-by: Francois Perrad > --- > package/Config.in | 1 + > package/lua-lsdbus/Config.in | 12 ++++++++++++ > package/lua-lsdbus/lua-lsdbus.hash | 3 +++ > package/lua-lsdbus/lua-lsdbus.mk | 17 +++++++++++++++++ > 4 files changed, 33 insertions(+) > create mode 100644 package/lua-lsdbus/Config.in > create mode 100644 package/lua-lsdbus/lua-lsdbus.hash > create mode 100644 package/lua-lsdbus/lua-lsdbus.mk Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From tekieli.lukasz at gmail.com Wed May 1 19:04:41 2024 From: tekieli.lukasz at gmail.com (Lukasz Tekieli) Date: Wed, 1 May 2024 21:04:41 +0200 Subject: [Buildroot] [PATCH 1/1] configs/visionfive2_defconfig: add hashes for linux/opensbi/u-boot Message-ID: <20240501190441.496683-1-tekieli.lukasz@gmail.com> Enable BR2_DOWNLOAD_FORCE_CHECK_HASHES and set the patch directory. Signed-off-by: Lukasz Tekieli --- board/visionfive2/patches/linux-headers/linux-headers.hash | 1 + board/visionfive2/patches/linux/linux.hash | 2 ++ board/visionfive2/patches/opensbi/opensbi.hash | 2 ++ board/visionfive2/patches/uboot/uboot.hash | 2 ++ configs/visionfive2_defconfig | 2 ++ 5 files changed, 9 insertions(+) create mode 120000 board/visionfive2/patches/linux-headers/linux-headers.hash create mode 100644 board/visionfive2/patches/linux/linux.hash create mode 100644 board/visionfive2/patches/opensbi/opensbi.hash create mode 100644 board/visionfive2/patches/uboot/uboot.hash diff --git a/board/visionfive2/patches/linux-headers/linux-headers.hash b/board/visionfive2/patches/linux-headers/linux-headers.hash new file mode 120000 index 0000000000..5808d92afe --- /dev/null +++ b/board/visionfive2/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/visionfive2/patches/linux/linux.hash b/board/visionfive2/patches/linux/linux.hash new file mode 100644 index 0000000000..ccad8068dd --- /dev/null +++ b/board/visionfive2/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9ac322d85bcf98a04667d929f5c2666b15bd58c6c2d68dd512c72acbced07d04 linux-6.8.2.tar.xz diff --git a/board/visionfive2/patches/opensbi/opensbi.hash b/board/visionfive2/patches/opensbi/opensbi.hash new file mode 100644 index 0000000000..bc4058abe6 --- /dev/null +++ b/board/visionfive2/patches/opensbi/opensbi.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 319b62a4186fbce9b81a0c5f0ec9f003a10c808397a72138bc9745d9b87b1eb1 opensbi-1.4.tar.gz diff --git a/board/visionfive2/patches/uboot/uboot.hash b/board/visionfive2/patches/uboot/uboot.hash new file mode 100644 index 0000000000..97a2b4eaf9 --- /dev/null +++ b/board/visionfive2/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 diff --git a/configs/visionfive2_defconfig b/configs/visionfive2_defconfig index 69c44dfbdd..bb8ab082af 100644 --- a/configs/visionfive2_defconfig +++ b/configs/visionfive2_defconfig @@ -1,4 +1,6 @@ BR2_riscv=y +BR2_GLOBAL_PATCH_DIR="board/visionfive2/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y BR2_SYSTEM_DHCP="eth0" BR2_ROOTFS_OVERLAY="board/visionfive2/overlay" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/visionfive2/post-image.sh" -- 2.40.1 From thomas.petazzoni at bootlin.com Wed May 1 19:05:38 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:05:38 +0200 Subject: [Buildroot] [git commit] configs/pc_x86_64_{bios, efi}_defconfig: add wireless regdb Message-ID: <20240501190715.612B7863D6@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=16e9f514905a12caab1d1b308dd95f8b79977828 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Wireless regulatory database lists the allowed radio frequencies for each local jurisdiction. Since linux-4.15 the kernel supports loading the files regulatory.db/regulatory.db.p7s directly from the /lib/firmware directory. Currently this package is not enabled and kernel complains with the following message on every boot: """ platform regulatory.0: Direct firmware load for regulatory.db failed with error -2 cfg80211: failed to load regulatory.db """ Add wireless regulatory database package to fix the issue. Signed-off-by: Konstantin Aladyshev Signed-off-by: Thomas Petazzoni --- configs/pc_x86_64_bios_defconfig | 1 + configs/pc_x86_64_efi_defconfig | 1 + 2 files changed, 2 insertions(+) diff --git a/configs/pc_x86_64_bios_defconfig b/configs/pc_x86_64_bios_defconfig index 6032544d2d..cba92ad93d 100644 --- a/configs/pc_x86_64_bios_defconfig +++ b/configs/pc_x86_64_bios_defconfig @@ -62,3 +62,4 @@ BR2_PACKAGE_ACPID=y BR2_PACKAGE_CONNMAN=y BR2_PACKAGE_CONNMAN_CLIENT=y BR2_PACKAGE_CONNMAN_WIFI=y +BR2_PACKAGE_WIRELESS_REGDB=y diff --git a/configs/pc_x86_64_efi_defconfig b/configs/pc_x86_64_efi_defconfig index afb652f3fc..fe6686b4a2 100644 --- a/configs/pc_x86_64_efi_defconfig +++ b/configs/pc_x86_64_efi_defconfig @@ -63,3 +63,4 @@ BR2_PACKAGE_ACPID=y BR2_PACKAGE_CONNMAN=y BR2_PACKAGE_CONNMAN_CLIENT=y BR2_PACKAGE_CONNMAN_WIFI=y +BR2_PACKAGE_WIRELESS_REGDB=y From thomas.petazzoni at bootlin.com Wed May 1 19:07:28 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:07:28 +0200 Subject: [Buildroot] [PATCH] configs/pc_x86_64_{bios, efi}_defconfig: add wireless regdb In-Reply-To: <20240330212200.794927-1-aladyshev22@gmail.com> References: <20240330212200.794927-1-aladyshev22@gmail.com> Message-ID: <20240501210728.7fe0ab6a@windsurf> On Sun, 31 Mar 2024 00:22:00 +0300 Konstantin Aladyshev wrote: > Wireless regulatory database lists the allowed radio frequencies for > each local jurisdiction. Since linux-4.15 the kernel supports loading > the files regulatory.db/regulatory.db.p7s directly from the > /lib/firmware directory. Currently this package is not enabled and > kernel complains with the following message on every boot: > """ > platform regulatory.0: Direct firmware load for regulatory.db failed > with error -2 > cfg80211: failed to load regulatory.db > """ > Add wireless regulatory database package to fix the issue. > > Signed-off-by: Konstantin Aladyshev > --- > configs/pc_x86_64_bios_defconfig | 1 + > configs/pc_x86_64_efi_defconfig | 1 + > 2 files changed, 2 insertions(+) Sorry for the long delay: patch applied. Thanks! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From arnout at mind.be Wed May 1 19:09:22 2024 From: arnout at mind.be (Arnout Vandecappelle) Date: Wed, 1 May 2024 21:09:22 +0200 Subject: [Buildroot] [PATCH 1/1] package/pkg-download: add per package download fallback disable In-Reply-To: <6338e428-df6e-40db-8a99-9390d150131d@newtesc.com.br> References: <20220917205253.3737d1c6@windsurf> <6338e428-df6e-40db-8a99-9390d150131d@newtesc.com.br> Message-ID: <0e92066e-ce6f-4d69-9f43-979c62a4d40c@mind.be> On 30/04/2024 19:56, Fl?vio Tapaj?s wrote: > Sorry to necrobump, but such a feature would be handy when using FOO_DL_OPTS to > ensure http authentication. > > Tokens, usernames or passwords will be leaked to the fallback server in case of > failure of the primary source. This could be some source of vulnerability I don't see how any of these would be leaked... A token is passed either as a password or as a header. There's no way to specify per-package wget options anyway, so I guess it will be passed as a password. A password can either be passed in .netrc or .wgetrc (in which case it is site-specific so won't be sent to PRIMARY_SITE or BACKUP_SITE), or it can be passed in the URL, as https://user:pass at server.com/path/source.tar.gz The whole user:pass part also doesn't get used in PRIMARY_SITE or BACKUP_SITE. The above applies to http downloads. For other downloads, it doesn't even matter at all, because that download method won't be used for PRIMARY_SITE and SECONDARY_SITE so any authentication stuff won't be used either. So how does leaking take place? Regards, Arnout > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot From peter at korsgaard.com Wed May 1 19:13:08 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 01 May 2024 21:13:08 +0200 Subject: [Buildroot] [PATCH 1/1] support/testing: add lvm2 runtime test In-Reply-To: <20240213204915.27898-1-ju.o@free.fr> (Julien Olivain's message of "Tue, 13 Feb 2024 21:49:15 +0100") References: <20240213204915.27898-1-ju.o@free.fr> Message-ID: <87msp99whn.fsf@dell.be.48ers.dk> >>>>> "Julien" == Julien Olivain writes: > Signed-off-by: Julien Olivain Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From thomas.petazzoni at bootlin.com Wed May 1 19:08:27 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:08:27 +0200 Subject: [Buildroot] [git commit] package/esp-hosted: bump version to 2024-04-01 Message-ID: <20240501191737.47564863DF@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=9fb4ed3a041eceffdc40139b33de697ca9afa30e branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Add support for Linux 6.9 Signed-off-by: Giulio Benetti Signed-off-by: Thomas Petazzoni --- ...osted_ng-fix-build-failure-on-Linux-6.9.0.patch | 37 ++++++++++++++++++++++ package/esp-hosted/esp-hosted.hash | 2 +- package/esp-hosted/esp-hosted.mk | 2 +- 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/package/esp-hosted/0001-esp_hosted_ng-fix-build-failure-on-Linux-6.9.0.patch b/package/esp-hosted/0001-esp_hosted_ng-fix-build-failure-on-Linux-6.9.0.patch new file mode 100644 index 0000000000..21e8730d37 --- /dev/null +++ b/package/esp-hosted/0001-esp_hosted_ng-fix-build-failure-on-Linux-6.9.0.patch @@ -0,0 +1,37 @@ +From 1cd8671eb64a1278466e7a9c90ceca1be0f8c0d5 Mon Sep 17 00:00:00 2001 +From: Giulio Benetti +Date: Mon, 1 Apr 2024 17:15:19 +0200 +Subject: [PATCH] esp_hosted_ng: fix build failure on Linux 6.9.0 + +With Linux commit: +https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=620d269f29a569ba37419cc03cf1da2d55f6252a +spi_master compatibility has gone, so let's redefine missing needed +macros spi_master and spi_master_put() locally if Linux version is >= +6.9.0. + +Upstream: https://github.com/espressif/esp-hosted/pull/358 + +Signed-off-by: Giulio Benetti +--- + esp_hosted_ng/host/spi/esp_spi.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/esp_hosted_ng/host/spi/esp_spi.c b/esp_hosted_ng/host/spi/esp_spi.c +index d0bd513bd6..9817056b2d 100644 +--- a/esp_hosted_ng/host/spi/esp_spi.c ++++ b/esp_hosted_ng/host/spi/esp_spi.c +@@ -378,6 +378,11 @@ static int __spi_controller_match(struct device *dev, const void *data) + return ctlr->bus_num == *bus_num; + } + ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 9, 0)) ++#define spi_master spi_controller ++#define spi_master_put(_ctlr) spi_controller_put(_ctlr) ++#endif ++ + static struct spi_controller *spi_busnum_to_master(u16 bus_num) + { + struct platform_device *pdev = NULL; +-- +2.34.1 + diff --git a/package/esp-hosted/esp-hosted.hash b/package/esp-hosted/esp-hosted.hash index ff0839076e..d449f5030e 100644 --- a/package/esp-hosted/esp-hosted.hash +++ b/package/esp-hosted/esp-hosted.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 1c4df08132d5204a01adc2797e8f6f6d7ff945609b288cfe2dc2ea50789e8af4 esp-hosted-6a25417fc880fd744b3b0d93c11659c3e7d86384.tar.gz +sha256 8f25c01522fdcb2003ffbfcc0ccf4981f27bddc8080ba978e33590d56f5ae20b esp-hosted-669fd9cd1892bb8b364701968d5f06225346eea9.tar.gz sha256 ed57d96d27be775b22f9571d3724ef84e0d0b8f24b805ec7f87a32189de19a9c LICENSE diff --git a/package/esp-hosted/esp-hosted.mk b/package/esp-hosted/esp-hosted.mk index cc61e39b36..520ad5dc8c 100644 --- a/package/esp-hosted/esp-hosted.mk +++ b/package/esp-hosted/esp-hosted.mk @@ -4,7 +4,7 @@ # ################################################################################ -ESP_HOSTED_VERSION = 6a25417fc880fd744b3b0d93c11659c3e7d86384 +ESP_HOSTED_VERSION = 669fd9cd1892bb8b364701968d5f06225346eea9 ESP_HOSTED_SITE = $(call github,espressif,esp-hosted,$(ESP_HOSTED_VERSION)) ESP_HOSTED_DEPENDENCIES = linux ESP_HOSTED_LICENSE = GPL-2.0 From peter at korsgaard.com Wed May 1 19:17:53 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 01 May 2024 21:17:53 +0200 Subject: [Buildroot] [PATCH 1/1] package/{mesa3d, mesa3d-headers}: bump version to 24.0.4 In-Reply-To: <20240328214954.2249481-1-bernd@kuhls.net> (Bernd Kuhls's message of "Thu, 28 Mar 2024 22:49:54 +0100") References: <20240328214954.2249481-1-bernd@kuhls.net> Message-ID: <87ikzx9w9q.fsf@dell.be.48ers.dk> >>>>> "Bernd" == Bernd Kuhls writes: > Release notes: > https://lists.freedesktop.org/archives/mesa-dev/2024-March/226176.html > Signed-off-by: Bernd Kuhls Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From thomas.petazzoni at bootlin.com Wed May 1 19:18:38 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:18:38 +0200 Subject: [Buildroot] [PATCH] package/esp-hosted: bump version to 2024-04-01 In-Reply-To: <20240401152312.72881-1-giulio.benetti@benettiengineering.com> References: <20240401152312.72881-1-giulio.benetti@benettiengineering.com> Message-ID: <20240501211838.1596d8a1@windsurf> On Mon, 1 Apr 2024 17:23:12 +0200 Giulio Benetti wrote: > Add support for Linux 6.9 > > Signed-off-by: Giulio Benetti > --- > ..._ng-fix-build-failure-on-Linux-6.9.0.patch | 37 +++++++++++++++++++ > package/esp-hosted/esp-hosted.hash | 2 +- > package/esp-hosted/esp-hosted.mk | 2 +- > 3 files changed, 39 insertions(+), 2 deletions(-) > create mode 100644 package/esp-hosted/0001-esp_hosted_ng-fix-build-failure-on-Linux-6.9.0.patch Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From romain.naour at smile.fr Wed May 1 19:20:36 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 21:20:36 +0200 Subject: [Buildroot] [PATCH 00/11] update bsp binaries for TI SoCs In-Reply-To: <20240430-optee-update-v1-0-6f73c4903ec3@ti.com> References: <20240430-optee-update-v1-0-6f73c4903ec3@ti.com> Message-ID: Hello Bryan, All, Le 01/05/2024 ? 17:27, Bryan Brattlof via buildroot a ?crit?: > Hello everyone! > > This series updates all the boot binaries (U-Boot, OP-TEE, TF-A, and > Linux) to their latest versions to pull in all bug fixes and new > features additions in these projects. > > This also includes a patch I send out a while ago just to keep things > organized. > > https://lore.kernel.org/buildroot/20240402153328.1859642-1-bb at ti.com/ > > and finally some proof I didn't completely break something ;) > > https://paste.sr.ht/~bryanb/b666adef7da412de76efb5e4a68e68e0651f7928 We received only patch [4/11] boot/ti-k3-boot-firmware: bump to latest version Can you try to resend the series? Note: It would be better to use "boot/ti-k3-boot-firmware: bump to version 09.02.00.009" Best regards, Romain > > Thanks for reviewing > ~Bryan > > Signed-off-by: Bryan Brattlof > --- > Bryan Brattlof (10): > boot/optee-os: bump to release v4.2.0 > boot/uboot: bump to latest v2024.04 release of U-Boot > boot/ti-k3-r5-loader: bump to latest U-Boot release > configs/ti_am62x_sk_defconfig: update TFA to latest lts release > configs/ti_am64x_sk_defconfig: update TFA to latest lts release > configs/ti_am62x_sk_defconfig: update uboot to latest release > configs/ti_am64x_sk_defconfig: update uboot to latest release > configs/ti_am62x_sk_defconfig: update to latest kernel > configs/ti_am64x_sk_defconfig: update to latest kernel > DEVELOPERS: add myself to TI's packages and reference boards > > Bryan Brattlof via buildroot (1): > boot/ti-k3-boot-firmware: bump to latest version > > DEVELOPERS | 8 ++++++++ > .../patches/arm-trusted-firmware/arm-trusted-firmware.hash | 2 +- > board/ti/am62x-sk/patches/linux/linux.hash | 2 +- > .../patches/arm-trusted-firmware/arm-trusted-firmware.hash | 2 +- > board/ti/am64x-sk/patches/linux/linux.hash | 2 +- > boot/optee-os/Config.in | 4 ++-- > boot/optee-os/optee-os.hash | 4 ++-- > boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash | 2 +- > boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk | 4 +--- > boot/ti-k3-r5-loader/Config.in | 4 ++-- > boot/ti-k3-r5-loader/ti-k3-r5-loader.hash | 2 +- > boot/ti-k3-r5-loader/ti-k3-r5-loader.mk | 1 + > boot/uboot/Config.in | 6 +++--- > boot/uboot/uboot.hash | 2 +- > configs/ti_am62x_sk_defconfig | 9 ++++----- > configs/ti_am64x_sk_defconfig | 9 ++++----- > 16 files changed, 34 insertions(+), 29 deletions(-) > --- > base-commit: 39ed602169ecf7677328d1387d30869baeb28cea > change-id: 20240430-optee-update-b9c1bc4e9f29 > > Best regards, From peter at korsgaard.com Wed May 1 19:21:13 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 01 May 2024 21:21:13 +0200 Subject: [Buildroot] [PATCH 1/1] package/freeipmi: bump to version 1.6.14 In-Reply-To: <20240328215547.67028-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Thu, 28 Mar 2024 22:55:47 +0100") References: <20240328215547.67028-1-fontaine.fabrice@gmail.com> Message-ID: <87edal9w46.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > https://lists.gnu.org/archive/html/freeipmi-announce/2024-01/msg00001.html > https://lists.gnu.org/archive/html/freeipmi-announce/2024-01/msg00000.html > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 1 19:22:39 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 01 May 2024 21:22:39 +0200 Subject: [Buildroot] [git commit] docs/manual: fix host-python-setuptools typo In-Reply-To: <20240403195358.107E8846CD@busybox.osuosl.org> (Thomas Petazzoni via buildroot's message of "Wed, 3 Apr 2024 21:53:41 +0200") References: <20240403195358.107E8846CD@busybox.osuosl.org> Message-ID: <87a5l99w1s.fsf@dell.be.48ers.dk> >>>>> "Thomas" == Thomas Petazzoni via buildroot writes: > commit: https://git.buildroot.net/buildroot/commit/?id=f12c77442e1184427eee0960646833728a4c47db > branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master > Signed-off-by: Rapha?l M?lotte > Signed-off-by: Thomas Petazzoni Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From thomas.petazzoni at bootlin.com Wed May 1 19:18:52 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:18:52 +0200 Subject: [Buildroot] [git commit] package/fluidsynth: bump to version 2.3.5 Message-ID: <20240501192323.AA755863E5@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=0215a6d6f68e03909f54f4bbb160161b8d80503d branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master For change log since v2.3.4, see: - https://github.com/FluidSynth/fluidsynth/releases/tag/v2.3.5 Signed-off-by: Julien Olivain Signed-off-by: Thomas Petazzoni --- package/fluidsynth/fluidsynth.hash | 2 +- package/fluidsynth/fluidsynth.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/fluidsynth/fluidsynth.hash b/package/fluidsynth/fluidsynth.hash index 824f246a2c..91d8778cbf 100644 --- a/package/fluidsynth/fluidsynth.hash +++ b/package/fluidsynth/fluidsynth.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 1529ef5bc3b9ef3adc2a7964505912f7305103e269e50cc0316f500b22053ac9 fluidsynth-2.3.4.tar.gz +sha256 f89e8e983ecfb4a5b4f5d8c2b9157ed18d15ed2e36246fa782f18abaea550e0d fluidsynth-2.3.5.tar.gz sha256 9b872a8a070b8ad329c4bd380fb1bf0000f564c75023ec8e1e6803f15364b9e9 LICENSE diff --git a/package/fluidsynth/fluidsynth.mk b/package/fluidsynth/fluidsynth.mk index 4317c6e460..ef05b6a569 100644 --- a/package/fluidsynth/fluidsynth.mk +++ b/package/fluidsynth/fluidsynth.mk @@ -4,7 +4,7 @@ # ################################################################################ -FLUIDSYNTH_VERSION = 2.3.4 +FLUIDSYNTH_VERSION = 2.3.5 FLUIDSYNTH_SITE = $(call github,FluidSynth,fluidsynth,v$(FLUIDSYNTH_VERSION)) FLUIDSYNTH_LICENSE = LGPL-2.1+ FLUIDSYNTH_LICENSE_FILES = LICENSE From thomas.petazzoni at bootlin.com Wed May 1 19:23:38 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:23:38 +0200 Subject: [Buildroot] [PATCH 1/1] package/fluidsynth: bump to version 2.3.5 In-Reply-To: <20240401191720.141576-1-ju.o@free.fr> References: <20240401191720.141576-1-ju.o@free.fr> Message-ID: <20240501212338.6680bb2e@windsurf> On Mon, 1 Apr 2024 21:17:20 +0200 Julien Olivain wrote: > For change log since v2.3.4, see: > - https://github.com/FluidSynth/fluidsynth/releases/tag/v2.3.5 > > Signed-off-by: Julien Olivain > --- > package/fluidsynth/fluidsynth.hash | 2 +- > package/fluidsynth/fluidsynth.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From peter at korsgaard.com Wed May 1 18:49:28 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 1 May 2024 20:49:28 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] support/testing: add lvm2 runtime test Message-ID: <20240501192441.EE7C1863F8@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=bcafe4be058074848d661f5a38d6a2b4a3ad73d2 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: Julien Olivain Signed-off-by: Arnout Vandecappelle (cherry picked from commit 79f7d71640061f65aedfa4f8845a6757e8b0f3fc) Signed-off-by: Peter Korsgaard --- DEVELOPERS | 2 + support/testing/tests/package/test_lvm2.py | 163 +++++++++++++++++++++ .../tests/package/test_lvm2/linux-lvm2.fragment | 2 + 3 files changed, 167 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index a38b681a8a..8ccf6ff46c 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -1805,6 +1805,8 @@ F: support/testing/tests/package/test_libgpgme.py F: support/testing/tests/package/test_libjxl.py F: support/testing/tests/package/test_lrzip.py F: support/testing/tests/package/test_ltrace.py +F: support/testing/tests/package/test_lvm2.py +F: support/testing/tests/package/test_lvm2/ F: support/testing/tests/package/test_lzip.py F: support/testing/tests/package/test_lsof.py F: support/testing/tests/package/test_lz4.py diff --git a/support/testing/tests/package/test_lvm2.py b/support/testing/tests/package/test_lvm2.py new file mode 100644 index 0000000000..bdbae7a4ec --- /dev/null +++ b/support/testing/tests/package/test_lvm2.py @@ -0,0 +1,163 @@ +import os +import subprocess + +import infra.basetest + + +class TestLvm2(infra.basetest.BRTest): + # This test creates a lvm2 volume. A specific Kernel need to be + # built with a config fragment enabling this support. This test + # also uses resize2fs from e2fsprogs. + kernel_fragment = \ + infra.filepath("tests/package/test_lvm2/linux-lvm2.fragment") + config = \ + f""" + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.77" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{kernel_fragment}" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_PACKAGE_E2FSPROGS=y + BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y + BR2_PACKAGE_LVM2=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ROOTFS_CPIO_GZIP=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def get_free_disk_space(self, path): + out, ret = self.emulator.run(f"df -k {path}") + self.assertEqual(ret, 0) + return int(out[1].split()[3]) + + def test_run(self): + # Test configuration: + storage_devs = ["/dev/vda", "/dev/vdb", "/dev/vdc"] + storage_size = 16 # Mega Bytes + lvm_vg = "br_vg" # Volume Group name + lvm_lv = "br_lv" # Logical Volume name + lv_dev = f"/dev/{lvm_vg}/{lvm_lv}" # Logical Volume dev name + mnt_pt = "/mnt/lvm2-storage" + data_file = f"{mnt_pt}/data.bin" + + qemu_storage_opts = [] + for i in range(len(storage_devs)): + disk_file = os.path.join(self.builddir, "images", f"disk{i}.img") + self.emulator.logfile.write(f"Creating disk image: {disk_file}\n") + self.emulator.logfile.flush() + subprocess.check_call( + ["dd", "if=/dev/zero", f"of={disk_file}", + "bs=1M", f"count={storage_size}"], + stdout=self.emulator.logfile, + stderr=self.emulator.logfile) + opts = ["-drive", f"file={disk_file},if=virtio,format=raw"] + qemu_storage_opts += opts + + img = os.path.join(self.builddir, "images", "rootfs.cpio.gz") + kern = os.path.join(self.builddir, "images", "Image") + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["console=ttyAMA0"], + options=["-M", "virt", "-cpu", "cortex-a57", "-m", "256M", + "-initrd", img] + qemu_storage_opts) + self.emulator.login() + + # Test the program can execute. + self.assertRunOk("lvm version") + + # We did not created any Physical Volume yet. We should NOT + # see any of our storage devices in a pvscan. + out, ret = self.emulator.run("pvscan") + self.assertEqual(ret, 0) + for dev in storage_devs: + self.assertNotIn(dev, "\n".join(out)) + + # We initialize our Physical Volumes (PVs). + pv_devs = " ".join(storage_devs) + self.assertRunOk(f"pvcreate {pv_devs}") + + # We run few diagnostic commands related to PVs. + self.assertRunOk(f"pvck {pv_devs}") + self.assertRunOk(f"pvdisplay {pv_devs}") + self.assertRunOk("pvs") + + # Now we initialized the PVs, we should see them in a pvscan. + out, ret = self.emulator.run("pvscan") + self.assertEqual(ret, 0) + for dev in storage_devs: + self.assertIn(dev, "\n".join(out)) + + # We create a Volume Group (VG) including two of our three + # PVs. + cmd = f"vgcreate {lvm_vg} {storage_devs[0]} {storage_devs[1]}" + self.assertRunOk(cmd) + + # We run few diagnostic commands related to VGs. + self.assertRunOk(f"vgck {lvm_vg}") + self.assertRunOk(f"vgdisplay {lvm_vg}") + self.assertRunOk("vgscan") + self.assertRunOk("vgs") + + # We create a Logical Volume (LV) in our VG. + self.assertRunOk(f"lvcreate -l 100%FREE -n {lvm_lv} {lvm_vg}") + + # We check LVM created the LV device. + self.assertRunOk(f"ls -al {lv_dev}") + + # We run few diagnostic commands related to LVs. + self.assertRunOk("lvscan") + self.assertRunOk("lvs") + + # We create a ext4 filesystem on our LV. + self.assertRunOk(f"mkfs.ext4 {lv_dev}") + + # We create a mount point directory and mount the device. + self.assertRunOk(f"mkdir -p {mnt_pt}") + self.assertRunOk(f"mount {lv_dev} {mnt_pt}") + + # We create a data file in our new filesystem. Note: this file + # is slightly larger than a single PV. This data file should + # span over the two PVs in the VG. + data_size = storage_size + 4 + cmd = f"dd if=/dev/urandom of={data_file} bs=1M count={data_size}" + self.assertRunOk(cmd) + + # We compute the hash of our data, and save it for later. + hash_cmd = f"sha256sum {data_file}" + out, ret = self.emulator.run(hash_cmd) + self.assertEqual(ret, 0) + data_sha256 = out[0] + + # We compute the free space of the mount point. + fs_free_space = self.get_free_disk_space(mnt_pt) + + # We extend of VG with our third PV. + self.assertRunOk(f"vgextend {lvm_vg} {storage_devs[2]}") + + # We grow the LV to use all the space of the VG. + self.assertRunOk(f"lvresize -l +100%FREE {lvm_vg}/{lvm_lv}") + + # We resize the filesystem to use all the LV space. + self.assertRunOk(f"resize2fs {lv_dev}") + + # Now we grew the LV and resized the filesystem, we recompute + # the free space and check we have more. + fs2_free_space = self.get_free_disk_space(mnt_pt) + self.assertGreater(fs2_free_space, fs_free_space) + + # With all those on-the-fly operations on the mounted + # filesystem, the data file should be intact. We should + # recompute the same data checksum as before. + out, ret = self.emulator.run(hash_cmd) + self.assertEqual(ret, 0) + self.assertEqual(out[0], data_sha256) + + # Finally, we unmount the filesystem. It should not contain + # any error. + self.assertRunOk(f"umount {mnt_pt}") + self.assertRunOk(f"e2fsck -f -n {lv_dev}") diff --git a/support/testing/tests/package/test_lvm2/linux-lvm2.fragment b/support/testing/tests/package/test_lvm2/linux-lvm2.fragment new file mode 100644 index 0000000000..0fade167a3 --- /dev/null +++ b/support/testing/tests/package/test_lvm2/linux-lvm2.fragment @@ -0,0 +1,2 @@ +CONFIG_MD=y +CONFIG_BLK_DEV_DM=y From peter at korsgaard.com Wed May 1 19:16:53 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 1 May 2024 21:16:53 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/{mesa3d, mesa3d-headers}: bump version to 24.0.4 Message-ID: <20240501192442.1C941863F8@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=2ab350b279742e802efae973c55f7e485bd1c841 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Release notes: https://lists.freedesktop.org/archives/mesa-dev/2024-March/226176.html Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni (cherry picked from commit eedba64ab217a5b15dffe77565ffc129f1097ac3) Signed-off-by: Peter Korsgaard --- package/mesa3d-headers/mesa3d-headers.mk | 2 +- package/mesa3d/mesa3d.hash | 6 +++--- package/mesa3d/mesa3d.mk | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package/mesa3d-headers/mesa3d-headers.mk b/package/mesa3d-headers/mesa3d-headers.mk index 7f39fefaf5..0756296a01 100644 --- a/package/mesa3d-headers/mesa3d-headers.mk +++ b/package/mesa3d-headers/mesa3d-headers.mk @@ -12,7 +12,7 @@ endif # Not possible to directly refer to mesa3d variables, because of # first/second expansion trickery... -MESA3D_HEADERS_VERSION = 24.0.3 +MESA3D_HEADERS_VERSION = 24.0.4 MESA3D_HEADERS_SOURCE = mesa-$(MESA3D_HEADERS_VERSION).tar.xz MESA3D_HEADERS_SITE = https://archive.mesa3d.org MESA3D_HEADERS_DL_SUBDIR = mesa3d diff --git a/package/mesa3d/mesa3d.hash b/package/mesa3d/mesa3d.hash index 1e94c2c612..e2e0be2641 100644 --- a/package/mesa3d/mesa3d.hash +++ b/package/mesa3d/mesa3d.hash @@ -1,5 +1,5 @@ -# From https://lists.freedesktop.org/archives/mesa-announce/2024-March/000752.html -sha256 77aec9a2a37b7d3596ea1640b3cc53d0b5d9b3b52abed89de07e3717e91bfdbe mesa-24.0.3.tar.xz -sha512 76b3b479877c40f729d7f530af4e3577fa74363edcd3d9474350d498a51dbb761fc034b39bee8547e97c30fd3a520cbc50c742d5a187746e83ddab1df44f37e9 mesa-24.0.3.tar.xz +# From https://lists.freedesktop.org/archives/mesa-dev/2024-March/226176.html +sha256 90febd30a098cbcd97ff62ecc3dcf5c93d76f7fa314de944cfce81951ba745f0 mesa-24.0.4.tar.xz +sha512 1d05b07026417fbe9cf18f7b18f2db9fe5fe327555c590283d87f69bbdd51f64135928a1dbe155d750187fc268bbdbb070bc1ae9ffc3e013b8707b391969d515 mesa-24.0.4.tar.xz # License sha256 a00275a53178e2645fb65be99a785c110513446a5071ff2c698ed260ad917d75 docs/license.rst diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk index bdb7ea9a6c..c2343488ed 100644 --- a/package/mesa3d/mesa3d.mk +++ b/package/mesa3d/mesa3d.mk @@ -5,7 +5,7 @@ ################################################################################ # When updating the version, please also update mesa3d-headers -MESA3D_VERSION = 24.0.3 +MESA3D_VERSION = 24.0.4 MESA3D_SOURCE = mesa-$(MESA3D_VERSION).tar.xz MESA3D_SITE = https://archive.mesa3d.org MESA3D_LICENSE = MIT, SGI, Khronos From peter at korsgaard.com Wed May 1 19:22:10 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 1 May 2024 21:22:10 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] docs/manual: fix host-python-setuptools typo Message-ID: <20240501192442.381DE863FA@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=81764dcfc66f5f50444994fd8706e887c4026153 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: Rapha??l M??lotte Signed-off-by: Thomas Petazzoni (cherry picked from commit f12c77442e1184427eee0960646833728a4c47db) Signed-off-by: Peter Korsgaard --- docs/manual/adding-packages-python.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/manual/adding-packages-python.adoc b/docs/manual/adding-packages-python.adoc index 9953be6639..67f2f6081d 100644 --- a/docs/manual/adding-packages-python.adoc +++ b/docs/manual/adding-packages-python.adoc @@ -92,7 +92,7 @@ Note that: dependencies are automatically added as needed by the Python package infrastructure. - * Similarly, it is not needed to add +host-setuptools+ to + * Similarly, it is not needed to add +host-python-setuptools+ to +PYTHON_FOO_DEPENDENCIES+ for setuptools-based packages, since it's automatically added by the Python infrastructure as needed. From peter at korsgaard.com Wed May 1 19:21:01 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 1 May 2024 21:21:01 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/freeipmi: bump to version 1.6.14 Message-ID: <20240501192442.26623863F9@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=6f5451096b523ffc331696393d057b095252266c branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x https://lists.gnu.org/archive/html/freeipmi-announce/2024-01/msg00001.html https://lists.gnu.org/archive/html/freeipmi-announce/2024-01/msg00000.html Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni (cherry picked from commit 38db0df41a8989226a7170f8998982a1173c6b58) Signed-off-by: Peter Korsgaard --- package/freeipmi/freeipmi.hash | 2 +- package/freeipmi/freeipmi.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/freeipmi/freeipmi.hash b/package/freeipmi/freeipmi.hash index ac24b7c64e..2f81d90c1d 100644 --- a/package/freeipmi/freeipmi.hash +++ b/package/freeipmi/freeipmi.hash @@ -1,5 +1,5 @@ # Locally computed: -sha256 65fbd6910fc010457748695414f27c5755b4e8d75734221221f3858c6230a897 freeipmi-1.6.11.tar.gz +sha256 1a3dac5c76b7ccc4d4f86aa12b8ef9b212baef7489bf05e899b89abb7e14edb5 freeipmi-1.6.14.tar.gz sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING.bmc-watchdog sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING.ipmiconsole diff --git a/package/freeipmi/freeipmi.mk b/package/freeipmi/freeipmi.mk index ecff6f9925..e28f63f715 100644 --- a/package/freeipmi/freeipmi.mk +++ b/package/freeipmi/freeipmi.mk @@ -4,7 +4,7 @@ # ################################################################################ -FREEIPMI_VERSION = 1.6.11 +FREEIPMI_VERSION = 1.6.14 FREEIPMI_SITE = https://ftp.gnu.org/gnu/freeipmi FREEIPMI_LICENSE = GPL-3.0+, BSD-like (sunbmc) FREEIPMI_LICENSE_FILES = \ From thomas.petazzoni at bootlin.com Wed May 1 19:27:16 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:27:16 +0200 Subject: [Buildroot] [git commit] package/python-pycrate: bump to version 0.7.2 Message-ID: <20240501192801.CE8C4863FF@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=653bd0d28b39aee415d38494accc1dc64aea432c branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master The license.txt file is now part of the release tarball, so it is no longer needed to download it separately, and re-add it to the source tree. The https://github.com/P1sec/pycrate/ repository has been archived, so use the new official location, as referenced by https://pypi.org/project/pycrate/. Signed-off-by: Nasser Afshin Signed-off-by: Thomas Petazzoni --- package/python-pycrate/Config.in | 2 +- package/python-pycrate/python-pycrate.hash | 4 ++-- package/python-pycrate/python-pycrate.mk | 10 ++-------- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/package/python-pycrate/Config.in b/package/python-pycrate/Config.in index bbd6873938..e78df43fcd 100644 --- a/package/python-pycrate/Config.in +++ b/package/python-pycrate/Config.in @@ -4,4 +4,4 @@ config BR2_PACKAGE_PYTHON_PYCRATE A software suite to handle various data and protocol formats. - https://github.com/P1sec/pycrate/ + https://github.com/pycrate-org/pycrate/ diff --git a/package/python-pycrate/python-pycrate.hash b/package/python-pycrate/python-pycrate.hash index 94ec99b738..5489f9290f 100644 --- a/package/python-pycrate/python-pycrate.hash +++ b/package/python-pycrate/python-pycrate.hash @@ -1,5 +1,5 @@ # md5, sha256 from https://pypi.org/pypi/pycrate/json -md5 bd21fa697ecff7ad93bec4943230d281 pycrate-0.7.0.tar.gz -sha256 c83232f522b5bbc3b3eeaca2cf38ee63cd3c25d0c15f3ba221e6dafa89b9a763 pycrate-0.7.0.tar.gz +md5 37e1bda10f41fe947512e9d5f8289518 pycrate-0.7.2.tar.gz +sha256 8abd3fb9f3e7a2dc62061490f01e99b2a6185e88b1c9bf30db68853b748b8f61 pycrate-0.7.2.tar.gz # Locally computed sha256 checksums sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 license.txt diff --git a/package/python-pycrate/python-pycrate.mk b/package/python-pycrate/python-pycrate.mk index 1645eaf52c..41ad30fcc8 100644 --- a/package/python-pycrate/python-pycrate.mk +++ b/package/python-pycrate/python-pycrate.mk @@ -4,17 +4,11 @@ # ################################################################################ -PYTHON_PYCRATE_VERSION = 0.7.0 +PYTHON_PYCRATE_VERSION = 0.7.2 PYTHON_PYCRATE_SOURCE = pycrate-$(PYTHON_PYCRATE_VERSION).tar.gz -PYTHON_PYCRATE_SITE = https://files.pythonhosted.org/packages/a6/a5/aab94e6bb8b3281cc450dde3961b417bd56abde2401955a9a4904df44c68 +PYTHON_PYCRATE_SITE = https://files.pythonhosted.org/packages/f4/01/09aac6ea758ca7b7b1b4832c0c39003752ef7b6c1478e6db2f34171db3fe PYTHON_PYCRATE_SETUP_TYPE = setuptools -PYTHON_PYCRATE_EXTRA_DOWNLOADS = https://raw.githubusercontent.com/P1sec/pycrate/$(PYTHON_PYCRATE_VERSION)/license.txt PYTHON_PYCRATE_LICENSE = LGPL-2.1+ PYTHON_PYCRATE_LICENSE_FILES = license.txt -define PYTHON_PYCRATE_ADD_LICENSE_FILE - cp $(PYTHON_PYCRATE_DL_DIR)/license.txt $(@D) -endef -PYTHON_PYCRATE_POST_EXTRACT_HOOKS += PYTHON_PYCRATE_ADD_LICENSE_FILE - $(eval $(python-package)) From thomas.petazzoni at bootlin.com Wed May 1 19:33:31 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:33:31 +0200 Subject: [Buildroot] [PATCH] package/python-pycrate: bump to version 0.7.2 In-Reply-To: <20240401192629.932481-1-afshin.nasser@gmail.com> References: <20240401192629.932481-1-afshin.nasser@gmail.com> Message-ID: <20240501213331.48643919@windsurf> Hello Nasser, On Mon, 1 Apr 2024 22:56:29 +0330 Nasser Afshin wrote: > Signed-off-by: Nasser Afshin Thanks for the patch. However, your empty commit log really wasn't enough. It's not just a version bump, it does a number of other changes that should have been explained in the commit log. So I've expanded it as such: The license.txt file is now part of the release tarball, so it is no longer needed to download it separately, and re-add it to the source tree. The https://github.com/P1sec/pycrate/ repository has been archived, so use the new official location, as referenced by https://pypi.org/project/pycrate/. > -PYTHON_PYCRATE_LICENSE = LGPL-2.1+ > +PYTHON_PYCRATE_LICENSE = LGPL-2.1 This change looked incorrect to me. Files I've looked at in the tree do have the (or later) statement, so I kept LGPL-2.1+. If you have a good justification for this change, could you submit a patch with a non-empty commit log giving some explanation? Applied to master with those changes, thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Wed May 1 19:35:17 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:35:17 +0200 Subject: [Buildroot] [git commit] package/apcupsd: set ac_cv_path_SHUTDOWN Message-ID: <20240501193552.D51608640F@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=640a79000b028eef3f54ba18e450c27bbeea9f56 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Set ac_cv_path_SHUTDOWN to /sbin/shutdown to avoid the following build failure when shutdown is not available on host raised since the addition of the package in commit d12b63b741586b89c4017551308c43512a617287: configure: error: Missing required tool; need any one of: shutdown shutdown.bsd Fixes: d12b63b741586b89c4017551308c43512a617287 - http://autobuild.buildroot.org/results/a8bbb5ced8343e08070361f260050de422144710 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/apcupsd/apcupsd.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/package/apcupsd/apcupsd.mk b/package/apcupsd/apcupsd.mk index 97e6d6a558..43a016678d 100644 --- a/package/apcupsd/apcupsd.mk +++ b/package/apcupsd/apcupsd.mk @@ -11,6 +11,7 @@ APCUPSD_LICENSE_FILES = COPYING APCUPSD_CPE_ID_VENDOR = apcupsd APCUPSD_SELINUX_MODULES = apache apcupsd APCUPSD_CONF_OPTS = --disable-test +APCUPSD_CONF_ENV = ac_cv_path_SHUTDOWN=/sbin/shutdown ifneq ($(BR2_PACKAGE_APCUPSD_MODBUS_USB)$(BR2_PACKAGE_APCUPSD_USB),) APCUPSD_CONF_ENV += ac_cv_path_usbcfg=$(STAGING_DIR)/usr/bin/libusb-config From thomas.petazzoni at bootlin.com Wed May 1 19:36:54 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:36:54 +0200 Subject: [Buildroot] [PATCH 1/1] package/apcupsd: set ac_cv_path_SHUTDOWN In-Reply-To: <20240330221122.1112448-1-fontaine.fabrice@gmail.com> References: <20240330221122.1112448-1-fontaine.fabrice@gmail.com> Message-ID: <20240501213654.4ee4e9c9@windsurf> On Sat, 30 Mar 2024 23:11:22 +0100 Fabrice Fontaine wrote: > Set ac_cv_path_SHUTDOWN to /sbin/shutdown to avoid the following build > failure when shutdown is not available on host raised since the addition > of the package in commit d12b63b741586b89c4017551308c43512a617287: > > configure: error: Missing required tool; need any one of: shutdown shutdown.bsd > > Fixes: d12b63b741586b89c4017551308c43512a617287 > - http://autobuild.buildroot.org/results/a8bbb5ced8343e08070361f260050de422144710 > > Signed-off-by: Fabrice Fontaine > --- > package/apcupsd/apcupsd.mk | 1 + > 1 file changed, 1 insertion(+) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From yann.morin.1998 at free.fr Wed May 1 19:46:27 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 21:46:27 +0200 Subject: [Buildroot] [PATCH 1/1] package/pkg-download: add per package download fallback disable In-Reply-To: <0e92066e-ce6f-4d69-9f43-979c62a4d40c@mind.be> References: <20220917205253.3737d1c6@windsurf> <6338e428-df6e-40db-8a99-9390d150131d@newtesc.com.br> <0e92066e-ce6f-4d69-9f43-979c62a4d40c@mind.be> Message-ID: Arnout, All, On 2024-05-01 21:09 +0200, Arnout Vandecappelle via buildroot spake thusly: > On 30/04/2024 19:56, Fl?vio Tapaj?s wrote: > > Sorry to necrobump, but such a feature would be handy when using > > FOO_DL_OPTS to ensure http authentication. > > > > Tokens, usernames or passwords will be leaked to the fallback server in > > case of failure of the primary source. This could be some source of > > vulnerability > > I don't see how any of these would be leaked... > > A token is passed either as a password or as a header. There's no way to > specify per-package wget options anyway, It *is* possible to pass per-package download options: FOO_DL_OPTS = --header 'Auth-Token: my-secret' And those options are passed to all the downloads tentatives. This of course only works properly when the main download is done with wget, though, as options for git-as-main are not valid for wget-as-primary or wget-as-backup. Note that we used to have such a package in Buildroot, amd-catalyst, but it was removed a while ago. Still, we're testing that in outr download runtime tests, for sftp and scp, so we know it works... Regards, Yann E. MORIN. > so I guess it will be passed as a > password. > > A password can either be passed in .netrc or .wgetrc (in which case it is > site-specific so won't be sent to PRIMARY_SITE or BACKUP_SITE), or it can be > passed in the URL, as https://user:pass at server.com/path/source.tar.gz > The whole user:pass part also doesn't get used in PRIMARY_SITE or BACKUP_SITE. > > The above applies to http downloads. For other downloads, it doesn't even > matter at all, because that download method won't be used for PRIMARY_SITE > and SECONDARY_SITE so any authentication stuff won't be used either. > > So how does leaking take place? > > Regards, > Arnout > > > > > _______________________________________________ > > buildroot mailing list > > buildroot at buildroot.org > > https://lists.buildroot.org/mailman/listinfo/buildroot > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From thomas.petazzoni at bootlin.com Wed May 1 19:41:27 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:41:27 +0200 Subject: [Buildroot] [git commit] utils/check-package: new check for Buildroot's defconfig files Message-ID: <20240501195108.92FC78641A@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=7931f78c16f08f7a850181ce4b316e2be7522f26 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Now that we do have support for checking hashes for custom versions (for the few packages for which we do support custom versions, like the kernel, some bootloaders...), we want to ensure that our defconfig files, when they enable one or more such custom version, do enable checking the hashes for those versions, and thus we want to require all our defconfigs do enable BR2_DOWNLOAD_FORCE_CHECK_HASHES. Add a check for that condition. We need to be careful that we only check Buildroot's defconfig, whether in-tree or in a br2-external, and not kernel or other kconfig-based defconfig files, like those in board/ sub-directories. So we only match defconfig files that are in a configs/ directory, whether at the toplevel (for in-tree defconfigs), or not (for br2-external defconfigs). Since we only have two defconfigs that check hashes for custom versions, regnerate .checkpackageignore to ignore all so-far broken defconfigs. Suggested-by: Arnout Vandecappelle (Essensium/Mind) Signed-off-by: Yann E. MORIN Cc: Ricardo Martincoski Signed-off-by: Thomas Petazzoni --- .checkpackageignore | 288 +++++++++++++++++++++++++++++++++ utils/check-package | 9 ++ utils/checkpackagelib/lib_defconfig.py | 20 +++ 3 files changed, 317 insertions(+) diff --git a/.checkpackageignore b/.checkpackageignore index 1b336ce7a3..0b169ea2f1 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -116,6 +116,294 @@ boot/syslinux/0013-Fix-build-with-gnu-efi-version-3.0.9.patch lib_patch.Upstream boot/syslinux/0014-Fix-build-with-binutils-note-gnu-property-section.patch lib_patch.Upstream boot/syslinux/0016-Workaround-multiple-definition-of-symbol-errors.patch lib_patch.Upstream boot/syslinux/0017-Replace-builtin-strlen-that-appears-to-get-optimized.patch lib_patch.Upstream +configs/aarch64_efi_defconfig lib_defconfig.ForceCheckHash +configs/acmesystems_acqua_a5_256mb_defconfig lib_defconfig.ForceCheckHash +configs/acmesystems_acqua_a5_512mb_defconfig lib_defconfig.ForceCheckHash +configs/acmesystems_aria_g25_128mb_defconfig lib_defconfig.ForceCheckHash +configs/acmesystems_aria_g25_256mb_defconfig lib_defconfig.ForceCheckHash +configs/acmesystems_arietta_g25_128mb_defconfig lib_defconfig.ForceCheckHash +configs/acmesystems_arietta_g25_256mb_defconfig lib_defconfig.ForceCheckHash +configs/am574x_idk_defconfig lib_defconfig.ForceCheckHash +configs/amarula_vyasa_rk3288_defconfig lib_defconfig.ForceCheckHash +configs/andes_ae350_45_defconfig lib_defconfig.ForceCheckHash +configs/arcturus_ucls1012a_defconfig lib_defconfig.ForceCheckHash +configs/arcturus_ucp1020_defconfig lib_defconfig.ForceCheckHash +configs/arm_foundationv8_defconfig lib_defconfig.ForceCheckHash +configs/armadeus_apf27_defconfig lib_defconfig.ForceCheckHash +configs/armadeus_apf28_defconfig lib_defconfig.ForceCheckHash +configs/armadeus_apf51_defconfig lib_defconfig.ForceCheckHash +configs/aspeed_ast2500evb_defconfig lib_defconfig.ForceCheckHash +configs/aspeed_ast2600evb_defconfig lib_defconfig.ForceCheckHash +configs/asus_tinker-s_rk3288_defconfig lib_defconfig.ForceCheckHash +configs/asus_tinker_rk3288_defconfig lib_defconfig.ForceCheckHash +configs/at91sam9260eknf_defconfig lib_defconfig.ForceCheckHash +configs/at91sam9g20dfc_defconfig lib_defconfig.ForceCheckHash +configs/at91sam9g45m10ek_defconfig lib_defconfig.ForceCheckHash +configs/at91sam9rlek_defconfig lib_defconfig.ForceCheckHash +configs/at91sam9x5ek_defconfig lib_defconfig.ForceCheckHash +configs/at91sam9x5ek_dev_defconfig lib_defconfig.ForceCheckHash +configs/at91sam9x5ek_mmc_defconfig lib_defconfig.ForceCheckHash +configs/at91sam9x5ek_mmc_dev_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d27_som1_ek_mmc_dev_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d2_xplained_mmc_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d2_xplained_mmc_dev_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d3_xplained_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d3_xplained_dev_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d3_xplained_mmc_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d3_xplained_mmc_dev_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d3xek_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d4_xplained_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d4_xplained_dev_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d4_xplained_mmc_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d4_xplained_mmc_dev_defconfig lib_defconfig.ForceCheckHash +configs/avenger96_defconfig lib_defconfig.ForceCheckHash +configs/avnet_rzboard_v2l_defconfig lib_defconfig.ForceCheckHash +configs/bananapi_m2_berry_defconfig lib_defconfig.ForceCheckHash +configs/bananapi_m2_ultra_defconfig lib_defconfig.ForceCheckHash +configs/bananapi_m2_zero_defconfig lib_defconfig.ForceCheckHash +configs/bananapro_defconfig lib_defconfig.ForceCheckHash +configs/beagleboardx15_defconfig lib_defconfig.ForceCheckHash +configs/beaglebone_defconfig lib_defconfig.ForceCheckHash +configs/beaglebone_qt5_defconfig lib_defconfig.ForceCheckHash +configs/beagleboneai_defconfig lib_defconfig.ForceCheckHash +configs/beaglev_defconfig lib_defconfig.ForceCheckHash +configs/beelink_gs1_defconfig lib_defconfig.ForceCheckHash +configs/broadcom_northstar_defconfig lib_defconfig.ForceCheckHash +configs/canaan_kd233_defconfig lib_defconfig.ForceCheckHash +configs/chromebook_elm_defconfig lib_defconfig.ForceCheckHash +configs/chromebook_snow_defconfig lib_defconfig.ForceCheckHash +configs/ci20_defconfig lib_defconfig.ForceCheckHash +configs/cubieboard2_defconfig lib_defconfig.ForceCheckHash +configs/engicam_imx6qdl_icore_defconfig lib_defconfig.ForceCheckHash +configs/engicam_imx6qdl_icore_qt5_defconfig lib_defconfig.ForceCheckHash +configs/engicam_imx6qdl_icore_rqs_defconfig lib_defconfig.ForceCheckHash +configs/engicam_imx6ul_geam_defconfig lib_defconfig.ForceCheckHash +configs/engicam_imx6ul_isiot_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx28evk_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx6dlsabreauto_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx6dlsabresd_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx6qsabreauto_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx6qsabresd_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx6sxsabresd_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx6ullevk_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx7dsabresd_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx8dxlevk_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx8mmevk_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx8mnevk_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx8mpevk_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx8mqevk_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx8qmmek_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx8qxpmek_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx93evk_defconfig lib_defconfig.ForceCheckHash +configs/freescale_p1025twr_defconfig lib_defconfig.ForceCheckHash +configs/freescale_t1040d4rdb_defconfig lib_defconfig.ForceCheckHash +configs/freescale_t2080_qds_rdb_defconfig lib_defconfig.ForceCheckHash +configs/friendlyarm_nanopi_r2s_defconfig lib_defconfig.ForceCheckHash +configs/galileo_defconfig lib_defconfig.ForceCheckHash +configs/globalscale_espressobin_defconfig lib_defconfig.ForceCheckHash +configs/grinn_chiliboard_defconfig lib_defconfig.ForceCheckHash +configs/grinn_liteboard_defconfig lib_defconfig.ForceCheckHash +configs/hifive_unleashed_defconfig lib_defconfig.ForceCheckHash +configs/icnova-a20-adb4006_defconfig lib_defconfig.ForceCheckHash +configs/imx23evk_defconfig lib_defconfig.ForceCheckHash +configs/imx6-sabreauto_defconfig lib_defconfig.ForceCheckHash +configs/imx6-sabresd_defconfig lib_defconfig.ForceCheckHash +configs/imx6-sabresd_qt5_defconfig lib_defconfig.ForceCheckHash +configs/imx6slevk_defconfig lib_defconfig.ForceCheckHash +configs/imx6sx-sdb_defconfig lib_defconfig.ForceCheckHash +configs/imx6ulevk_defconfig lib_defconfig.ForceCheckHash +configs/imx6ullevk_defconfig lib_defconfig.ForceCheckHash +configs/imx6ulpico_defconfig lib_defconfig.ForceCheckHash +configs/imx7d-sdb_defconfig lib_defconfig.ForceCheckHash +configs/imx7dpico_defconfig lib_defconfig.ForceCheckHash +configs/imx8mmpico_defconfig lib_defconfig.ForceCheckHash +configs/imx8mn_bsh_smm_s2_defconfig lib_defconfig.ForceCheckHash +configs/imx8mn_bsh_smm_s2_pro_defconfig lib_defconfig.ForceCheckHash +configs/imx8mpico_defconfig lib_defconfig.ForceCheckHash +configs/imx8mqevk_defconfig lib_defconfig.ForceCheckHash +configs/imxrt1050-evk_defconfig lib_defconfig.ForceCheckHash +configs/khadas_vim3_defconfig lib_defconfig.ForceCheckHash +configs/kontron_bl_imx8mm_defconfig lib_defconfig.ForceCheckHash +configs/kontron_pitx_imx8m_defconfig lib_defconfig.ForceCheckHash +configs/kontron_smarc_sal28_defconfig lib_defconfig.ForceCheckHash +configs/lego_ev3_defconfig lib_defconfig.ForceCheckHash +configs/linksprite_pcduino_defconfig lib_defconfig.ForceCheckHash +configs/ls1028ardb_defconfig lib_defconfig.ForceCheckHash +configs/ls1046a-frwy_defconfig lib_defconfig.ForceCheckHash +configs/mangopi_mq1rdw2_defconfig lib_defconfig.ForceCheckHash +configs/mender_x86_64_efi_defconfig lib_defconfig.ForceCheckHash +configs/microchip_mpfs_icicle_defconfig lib_defconfig.ForceCheckHash +configs/microchip_sam9x60ek_mmc_defconfig lib_defconfig.ForceCheckHash +configs/microchip_sam9x60ek_mmc_dev_defconfig lib_defconfig.ForceCheckHash +configs/microchip_sama5d27_wlsom1_ek_mmc_defconfig lib_defconfig.ForceCheckHash +configs/microchip_sama5d27_wlsom1_ek_mmc_dev_defconfig lib_defconfig.ForceCheckHash +configs/microchip_sama5d2_icp_mmc_defconfig lib_defconfig.ForceCheckHash +configs/microchip_sama5d2_icp_mmc_dev_defconfig lib_defconfig.ForceCheckHash +configs/microchip_sama7g5ek_mmc_defconfig lib_defconfig.ForceCheckHash +configs/microchip_sama7g5ek_mmc_dev_defconfig lib_defconfig.ForceCheckHash +configs/minnowboard_max_defconfig lib_defconfig.ForceCheckHash +configs/mx25pdk_defconfig lib_defconfig.ForceCheckHash +configs/mx51evk_defconfig lib_defconfig.ForceCheckHash +configs/mx53loco_defconfig lib_defconfig.ForceCheckHash +configs/mx6cubox_defconfig lib_defconfig.ForceCheckHash +configs/mx6sx_udoo_neo_defconfig lib_defconfig.ForceCheckHash +configs/mx6udoo_defconfig lib_defconfig.ForceCheckHash +configs/nexbox_a95x_defconfig lib_defconfig.ForceCheckHash +configs/nitrogen6sx_defconfig lib_defconfig.ForceCheckHash +configs/nitrogen6x_defconfig lib_defconfig.ForceCheckHash +configs/nitrogen7_defconfig lib_defconfig.ForceCheckHash +configs/nitrogen8m_defconfig lib_defconfig.ForceCheckHash +configs/nitrogen8mm_defconfig lib_defconfig.ForceCheckHash +configs/nitrogen8mn_defconfig lib_defconfig.ForceCheckHash +configs/nitrogen8mp_defconfig lib_defconfig.ForceCheckHash +configs/octavo_osd32mp1_brk_defconfig lib_defconfig.ForceCheckHash +configs/octavo_osd32mp1_red_defconfig lib_defconfig.ForceCheckHash +configs/odroidc2_defconfig lib_defconfig.ForceCheckHash +configs/odroidxu4_defconfig lib_defconfig.ForceCheckHash +configs/olimex_a10_olinuxino_lime_defconfig lib_defconfig.ForceCheckHash +configs/olimex_a13_olinuxino_defconfig lib_defconfig.ForceCheckHash +configs/olimex_a20_olinuxino_lime2_defconfig lib_defconfig.ForceCheckHash +configs/olimex_a20_olinuxino_lime_defconfig lib_defconfig.ForceCheckHash +configs/olimex_a20_olinuxino_micro_defconfig lib_defconfig.ForceCheckHash +configs/olimex_a33_olinuxino_defconfig lib_defconfig.ForceCheckHash +configs/olimex_a64_olinuxino_defconfig lib_defconfig.ForceCheckHash +configs/olimex_imx233_olinuxino_defconfig lib_defconfig.ForceCheckHash +configs/olimex_stmp157_olinuxino_lime_defconfig lib_defconfig.ForceCheckHash +configs/olpc_xo175_defconfig lib_defconfig.ForceCheckHash +configs/olpc_xo1_defconfig lib_defconfig.ForceCheckHash +configs/openblocks_a6_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_lite2_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_lite_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_one_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_one_plus_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_pc2_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_pc_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_pc_plus_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_r1_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_zero3_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_zero_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_zero_plus2_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_zero_plus_defconfig lib_defconfig.ForceCheckHash +configs/pandaboard_defconfig lib_defconfig.ForceCheckHash +configs/pc_x86_64_bios_defconfig lib_defconfig.ForceCheckHash +configs/pc_x86_64_efi_defconfig lib_defconfig.ForceCheckHash +configs/pcengines_apu2_defconfig lib_defconfig.ForceCheckHash +configs/pine64_defconfig lib_defconfig.ForceCheckHash +configs/pine64_pinecube_defconfig lib_defconfig.ForceCheckHash +configs/pine64_sopine_defconfig lib_defconfig.ForceCheckHash +configs/pine64_star64_defconfig lib_defconfig.ForceCheckHash +configs/qemu_aarch64_ebbr_defconfig lib_defconfig.ForceCheckHash +configs/qemu_aarch64_sbsa_defconfig lib_defconfig.ForceCheckHash +configs/qemu_aarch64_virt_defconfig lib_defconfig.ForceCheckHash +configs/qemu_arm_ebbr_defconfig lib_defconfig.ForceCheckHash +configs/qemu_arm_versatile_defconfig lib_defconfig.ForceCheckHash +configs/qemu_arm_vexpress_defconfig lib_defconfig.ForceCheckHash +configs/qemu_arm_vexpress_tz_defconfig lib_defconfig.ForceCheckHash +configs/qemu_m68k_mcf5208_defconfig lib_defconfig.ForceCheckHash +configs/qemu_m68k_q800_defconfig lib_defconfig.ForceCheckHash +configs/qemu_microblazebe_mmu_defconfig lib_defconfig.ForceCheckHash +configs/qemu_microblazeel_mmu_defconfig lib_defconfig.ForceCheckHash +configs/qemu_mips32r2_malta_defconfig lib_defconfig.ForceCheckHash +configs/qemu_mips32r2el_malta_defconfig lib_defconfig.ForceCheckHash +configs/qemu_mips32r6_malta_defconfig lib_defconfig.ForceCheckHash +configs/qemu_mips32r6el_malta_defconfig lib_defconfig.ForceCheckHash +configs/qemu_mips64_malta_defconfig lib_defconfig.ForceCheckHash +configs/qemu_mips64el_malta_defconfig lib_defconfig.ForceCheckHash +configs/qemu_mips64r6_malta_defconfig lib_defconfig.ForceCheckHash +configs/qemu_mips64r6el_malta_defconfig lib_defconfig.ForceCheckHash +configs/qemu_nios2_10m50_defconfig lib_defconfig.ForceCheckHash +configs/qemu_or1k_defconfig lib_defconfig.ForceCheckHash +configs/qemu_ppc64_e5500_defconfig lib_defconfig.ForceCheckHash +configs/qemu_ppc64_pseries_defconfig lib_defconfig.ForceCheckHash +configs/qemu_ppc64le_powernv8_defconfig lib_defconfig.ForceCheckHash +configs/qemu_ppc64le_pseries_defconfig lib_defconfig.ForceCheckHash +configs/qemu_ppc_bamboo_defconfig lib_defconfig.ForceCheckHash +configs/qemu_ppc_e500mc_defconfig lib_defconfig.ForceCheckHash +configs/qemu_ppc_g3beige_defconfig lib_defconfig.ForceCheckHash +configs/qemu_ppc_mac99_defconfig lib_defconfig.ForceCheckHash +configs/qemu_ppc_mpc8544ds_defconfig lib_defconfig.ForceCheckHash +configs/qemu_riscv32_virt_defconfig lib_defconfig.ForceCheckHash +configs/qemu_riscv64_nommu_virt_defconfig lib_defconfig.ForceCheckHash +configs/qemu_riscv64_virt_defconfig lib_defconfig.ForceCheckHash +configs/qemu_riscv64_virt_efi_defconfig lib_defconfig.ForceCheckHash +configs/qemu_s390x_defconfig lib_defconfig.ForceCheckHash +configs/qemu_sh4_r2d_defconfig lib_defconfig.ForceCheckHash +configs/qemu_sh4eb_r2d_defconfig lib_defconfig.ForceCheckHash +configs/qemu_sparc64_sun4u_defconfig lib_defconfig.ForceCheckHash +configs/qemu_x86_64_defconfig lib_defconfig.ForceCheckHash +configs/qemu_x86_defconfig lib_defconfig.ForceCheckHash +configs/qemu_xtensa_lx60_defconfig lib_defconfig.ForceCheckHash +configs/qemu_xtensa_lx60_nommu_defconfig lib_defconfig.ForceCheckHash +configs/raspberrypi0_defconfig lib_defconfig.ForceCheckHash +configs/raspberrypi0w_defconfig lib_defconfig.ForceCheckHash +configs/raspberrypi2_defconfig lib_defconfig.ForceCheckHash +configs/raspberrypi3_64_defconfig lib_defconfig.ForceCheckHash +configs/raspberrypi3_defconfig lib_defconfig.ForceCheckHash +configs/raspberrypi3_qt5we_defconfig lib_defconfig.ForceCheckHash +configs/raspberrypi4_64_defconfig lib_defconfig.ForceCheckHash +configs/raspberrypi4_defconfig lib_defconfig.ForceCheckHash +configs/raspberrypi_defconfig lib_defconfig.ForceCheckHash +configs/raspberrypicm4io_64_defconfig lib_defconfig.ForceCheckHash +configs/raspberrypicm4io_defconfig lib_defconfig.ForceCheckHash +configs/raspberrypizero2w_defconfig lib_defconfig.ForceCheckHash +configs/riotboard_defconfig lib_defconfig.ForceCheckHash +configs/roc_pc_rk3399_defconfig lib_defconfig.ForceCheckHash +configs/rock64_defconfig lib_defconfig.ForceCheckHash +configs/rock_pi_n8_defconfig lib_defconfig.ForceCheckHash +configs/rockpro64_defconfig lib_defconfig.ForceCheckHash +configs/roseapplepi_defconfig lib_defconfig.ForceCheckHash +configs/s6lx9_microboard_defconfig lib_defconfig.ForceCheckHash +configs/sheevaplug_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_lichee_rv_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_lichee_rv_dock_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_licheepi_nano_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_licheepi_zero_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_maix_bit_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_maix_bit_sdcard_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_maix_dock_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_maix_dock_sdcard_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_maix_go_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_maix_go_sdcard_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_maixduino_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_maixduino_sdcard_defconfig lib_defconfig.ForceCheckHash +configs/snps_arc700_axs101_defconfig lib_defconfig.ForceCheckHash +configs/snps_arc700_nsim_defconfig lib_defconfig.ForceCheckHash +configs/snps_archs38_axs103_defconfig lib_defconfig.ForceCheckHash +configs/snps_archs38_haps_defconfig lib_defconfig.ForceCheckHash +configs/snps_archs38_hsdk_defconfig lib_defconfig.ForceCheckHash +configs/socrates_cyclone5_defconfig lib_defconfig.ForceCheckHash +configs/solidrun_clearfog_defconfig lib_defconfig.ForceCheckHash +configs/solidrun_clearfog_gt_8k_defconfig lib_defconfig.ForceCheckHash +configs/solidrun_macchiatobin_defconfig lib_defconfig.ForceCheckHash +configs/spike_riscv64_defconfig lib_defconfig.ForceCheckHash +configs/stm32f429_disco_xip_defconfig lib_defconfig.ForceCheckHash +configs/stm32f469_disco_sd_defconfig lib_defconfig.ForceCheckHash +configs/stm32f469_disco_xip_defconfig lib_defconfig.ForceCheckHash +configs/stm32f769_disco_sd_defconfig lib_defconfig.ForceCheckHash +configs/stm32mp157a_dk1_defconfig lib_defconfig.ForceCheckHash +configs/stm32mp157c_dk2_defconfig lib_defconfig.ForceCheckHash +configs/stm32mp157c_odyssey_defconfig lib_defconfig.ForceCheckHash +configs/terasic_de10nano_cyclone5_defconfig lib_defconfig.ForceCheckHash +configs/toradex_apalis_imx6_defconfig lib_defconfig.ForceCheckHash +configs/ts4900_defconfig lib_defconfig.ForceCheckHash +configs/ts5500_defconfig lib_defconfig.ForceCheckHash +configs/ts7680_defconfig lib_defconfig.ForceCheckHash +configs/uevm5432_defconfig lib_defconfig.ForceCheckHash +configs/versal_vck190_defconfig lib_defconfig.ForceCheckHash +configs/visionfive2_defconfig lib_defconfig.ForceCheckHash +configs/visionfive_defconfig lib_defconfig.ForceCheckHash +configs/wandboard_defconfig lib_defconfig.ForceCheckHash +configs/warp7_defconfig lib_defconfig.ForceCheckHash +configs/zynq_microzed_defconfig lib_defconfig.ForceCheckHash +configs/zynq_zc702_defconfig lib_defconfig.ForceCheckHash +configs/zynq_zc706_defconfig lib_defconfig.ForceCheckHash +configs/zynq_zed_defconfig lib_defconfig.ForceCheckHash +configs/zynqmp_kria_kd240_defconfig lib_defconfig.ForceCheckHash +configs/zynqmp_kria_kr260_defconfig lib_defconfig.ForceCheckHash +configs/zynqmp_kria_kv260_defconfig lib_defconfig.ForceCheckHash +configs/zynqmp_zcu102_defconfig lib_defconfig.ForceCheckHash +configs/zynqmp_zcu104_defconfig lib_defconfig.ForceCheckHash +configs/zynqmp_zcu106_defconfig lib_defconfig.ForceCheckHash linux/5.10.162-cip24-rt10/0001-arch-microblaze-mm-init.c-fix-build.patch lib_patch.Upstream package/18xx-ti-utils/0001-plt.h-fix-build-with-gcc-10.patch lib_patch.Upstream package/4th/0001-avoid-regen-during-install.patch lib_patch.Upstream diff --git a/utils/check-package b/utils/check-package index 61b66a8a67..cbb3613e19 100755 --- a/utils/check-package +++ b/utils/check-package @@ -10,6 +10,7 @@ import sys import checkpackagelib.base import checkpackagelib.lib_config +import checkpackagelib.lib_defconfig import checkpackagelib.lib_hash import checkpackagelib.lib_ignore import checkpackagelib.lib_mk @@ -113,6 +114,7 @@ DO_CHECK_INTREE = re.compile(r"|".join([ r"arch/", r"board/", r"boot/", + r"configs/", r"fs/", r"linux/", r"package/", @@ -137,6 +139,11 @@ DO_NOT_CHECK_INTREE = re.compile(r"|".join([ SYSV_INIT_SCRIPT_FILENAME = re.compile(r"/S\d\d[^/]+$") +# For defconfigs: avoid matching kernel, uboot... defconfig files, so +# limit to defconfig files in a configs/ directory, either in-tree or +# in a br2-external tree. +BR_DEFCONFIG_FILENAME = re.compile(r"^(.+/)?configs/[^/]+_defconfig$") + def get_lib_from_filename(fname): if flags.intree_only: @@ -152,6 +159,8 @@ def get_lib_from_filename(fname): return checkpackagelib.lib_ignore if CONFIG_IN_FILENAME.search(fname): return checkpackagelib.lib_config + if BR_DEFCONFIG_FILENAME.search(fname): + return checkpackagelib.lib_defconfig if fname.endswith(".hash"): return checkpackagelib.lib_hash if fname.endswith(".mk"): diff --git a/utils/checkpackagelib/lib_defconfig.py b/utils/checkpackagelib/lib_defconfig.py new file mode 100644 index 0000000000..ab0e361b57 --- /dev/null +++ b/utils/checkpackagelib/lib_defconfig.py @@ -0,0 +1,20 @@ +# See utils/checkpackagelib/readme.txt before editing this file. + +from checkpackagelib.base import _CheckFunction + + +class ForceCheckHash(_CheckFunction): + """Checks that a defconfig does force checking all hashes""" + + def before(self): + self.forces = False + + def check_line(self, lineno, text): + if self.forces: + return + if text == "BR2_DOWNLOAD_FORCE_CHECK_HASHES=y\n": + self.forces = True + + def after(self): + if not self.forces: + return [f"{self.filename}:0: missing BR2_DOWNLOAD_FORCE_CHECK_HASHES"] From thomas.petazzoni at bootlin.com Wed May 1 19:51:27 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:51:27 +0200 Subject: [Buildroot] [PATCH] utils/check-package: new check for Buildroot's defconfig files In-Reply-To: <20240331203403.815497-1-yann.morin.1998@free.fr> References: <20240331203403.815497-1-yann.morin.1998@free.fr> Message-ID: <20240501215127.2d729695@windsurf> On Sun, 31 Mar 2024 22:34:03 +0200 "Yann E. MORIN" wrote: > Now that we do have support for checking hashes for custom versions > (for the few packages for which we do support custom versions, like the > kernel, some bootloaders...), we want to ensure that our defconfig > files, when they enable one or more such custom version, do enable > checking the hashes for those versions, and thus we want to require all > our defconfigs do enable BR2_DOWNLOAD_FORCE_CHECK_HASHES. > > Add a check for that condition. > > We need to be careful that we only check Buildroot's defconfig, whether > in-tree or in a br2-external, and not kernel or other kconfig-based > defconfig files, like those in board/ sub-directories. So we only match > defconfig files that are in a configs/ directory, whether at the > toplevel (for in-tree defconfigs), or not (for br2-external defconfigs). > > Since we only have two defconfigs that check hashes for custom versions, > regnerate .checkpackageignore to ignore all so-far broken defconfigs. > > Suggested-by: Arnout Vandecappelle (Essensium/Mind) > Signed-off-by: Yann E. MORIN > Cc: Ricardo Martincoski > > --- > Note: this patch does not contain a regenerated .checkpackageignore, for > ease of review; I can resubmit with it regenerated after reviews, or a > committer may regenerate when applying. > --- > utils/check-package | 9 +++++++++ > utils/checkpackagelib/lib_defconfig.py | 20 ++++++++++++++++++++ > 2 files changed, 29 insertions(+) > create mode 100644 utils/checkpackagelib/lib_defconfig.py Applied to master, after updating .checkpackageignore of course. Thanks! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Wed May 1 19:51:56 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:51:56 +0200 Subject: [Buildroot] [PATCH 1/1] package/coreutils: drop gmp optional dependency In-Reply-To: <20240330185620.995961-1-fontaine.fabrice@gmail.com> References: <20240330185620.995961-1-fontaine.fabrice@gmail.com> Message-ID: <20240501215156.2f942c7e@windsurf> On Sat, 30 Mar 2024 19:56:20 +0100 Fabrice Fontaine wrote: > libgmp is included in coreutils (through bootstrap.conf) since bump to > version 9.0 in commit 2ee43bad85693d1c96e14f5b39ccb13a8982f50a and > https://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=13046444888a7e96f48d28fdd5a6ffe03d4ab036: > > configure: WARNING: unrecognized options: --disable-gtk-doc, --disable-gtk-doc-html, --disable-doc, --disable-docs, --disable-documentation, --with-xmlto, --with-fop, --enable-ipv6, --enable-static, --enable-shared, --without-gmp > > Fixes: 2ee43bad85693d1c96e14f5b39ccb13a8982f50a > > Signed-off-by: Fabrice Fontaine > --- > package/coreutils/coreutils.mk | 6 ------ > 1 file changed, 6 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Wed May 1 19:51:41 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:51:41 +0200 Subject: [Buildroot] [git commit] package/coreutils: drop gmp optional dependency Message-ID: <20240501195256.35BC68641F@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=16463a00affa0ba4814e583bcd544174528f371e branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master libgmp is included in coreutils (through bootstrap.conf) since bump to version 9.0 in commit 2ee43bad85693d1c96e14f5b39ccb13a8982f50a and https://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=13046444888a7e96f48d28fdd5a6ffe03d4ab036: configure: WARNING: unrecognized options: --disable-gtk-doc, --disable-gtk-doc-html, --disable-doc, --disable-docs, --disable-documentation, --with-xmlto, --with-fop, --enable-ipv6, --enable-static, --enable-shared, --without-gmp Fixes: 2ee43bad85693d1c96e14f5b39ccb13a8982f50a Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/coreutils/coreutils.mk | 6 ------ 1 file changed, 6 deletions(-) diff --git a/package/coreutils/coreutils.mk b/package/coreutils/coreutils.mk index e9cb7b67cb..846d4fa567 100644 --- a/package/coreutils/coreutils.mk +++ b/package/coreutils/coreutils.mk @@ -75,12 +75,6 @@ ifeq ($(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y) COREUTILS_CONF_OPTS += --with-libintl-prefix=$(STAGING_DIR)/usr endif -ifeq ($(BR2_PACKAGE_GMP),y) -COREUTILS_DEPENDENCIES += gmp -else -COREUTILS_CONF_OPTS += --without-gmp -endif - ifeq ($(BR2_PACKAGE_LIBCAP),y) COREUTILS_DEPENDENCIES += libcap else From thomas.petazzoni at bootlin.com Wed May 1 19:52:58 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:52:58 +0200 Subject: [Buildroot] [PATCH 1/1] package/acpica: bump to version 20240321 In-Reply-To: <20240419215212.1025654-1-ju.o@free.fr> References: <20240419215212.1025654-1-ju.o@free.fr> Message-ID: <20240501215258.2d29767e@windsurf> On Fri, 19 Apr 2024 23:52:12 +0200 Julien Olivain wrote: > For change log since 20230628, see [1]. > > License file hash changed in [2], due to year update. > > The upstream download page also changed the published hash from sha1 > to sha256. This change is reflected in the hash file. > > [1] https://github.com/acpica/acpica/blob/G20240322/documents/changes.txt > [2] https://github.com/acpica/acpica/commit/c18edfb1abfb50521a363f811bc8e1e64213bd00 > > Signed-off-by: Julien Olivain > --- > Patch tested on master branch at commit 256aa8e with commands: Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Wed May 1 19:53:33 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:53:33 +0200 Subject: [Buildroot] [PATCH 1/1] package/iperf: bump to version 2.2.0 In-Reply-To: <20240420105230.34710-1-ju.o@free.fr> References: <20240420105230.34710-1-ju.o@free.fr> Message-ID: <20240501215333.22c0c30e@windsurf> On Sat, 20 Apr 2024 12:52:30 +0200 Julien Olivain wrote: > For release note, see after the file list at: > https://sourceforge.net/projects/iperf2/files/ > > Note: the md5 file hash is also added, because it is published on > download page. > > Signed-off-by: Julien Olivain > --- > package/iperf/iperf.hash | 5 +++-- > package/iperf/iperf.mk | 2 +- > 2 files changed, 4 insertions(+), 3 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Wed May 1 19:54:08 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:54:08 +0200 Subject: [Buildroot] [PATCH 1/1] support/testing: add iperf runtime test In-Reply-To: <20240420105441.35505-1-ju.o@free.fr> References: <20240420105441.35505-1-ju.o@free.fr> Message-ID: <20240501215408.73ee6720@windsurf> On Sat, 20 Apr 2024 12:54:41 +0200 Julien Olivain wrote: > Signed-off-by: Julien Olivain > --- > DEVELOPERS | 1 + > support/testing/tests/package/test_iperf.py | 23 +++++++++++++++++++++ > 2 files changed, 24 insertions(+) > create mode 100644 support/testing/tests/package/test_iperf.py Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From romain.naour at smile.fr Wed May 1 19:54:19 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 21:54:19 +0200 Subject: [Buildroot] [PATCH v3 1/9] toolchain/toolchain-external: drop external codesourcery niosII toolchain In-Reply-To: <20240306213606.2149683-2-giulio.benetti@benettiengineering.com> References: <20240306213606.2149683-1-giulio.benetti@benettiengineering.com> <20240306213606.2149683-2-giulio.benetti@benettiengineering.com> Message-ID: Hello Giulio, All, Le 06/03/2024 ? 22:35, Giulio Benetti a ?crit?: > This toolchain is pretty old and unlikely used. It's also affected by > binutils bug 27597, so let's remove it. We need to remove this toolchain from toolchain-configs.csv first. No need to respin for that, I added a commit before merging your series. About NiosII, nios2 target will be obsolete in GCC 14: https://sourceware.org/pipermail/binutils/2024-April/133675.html Maybe we should stop supporting it soon. Best regards, Romain > > Signed-off-by: Giulio Benetti > --- > toolchain/toolchain-external/Config.in | 6 ------ > .../toolchain-external/pkg-toolchain-external.mk | 2 +- > .../Config.in | 16 ---------------- > .../Config.in.options | 9 --------- > .../toolchain-external-codesourcery-niosII.hash | 6 ------ > .../toolchain-external-codesourcery-niosII.mk | 13 ------------- > 6 files changed, 1 insertion(+), 51 deletions(-) > delete mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in > delete mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options > delete mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash > delete mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk > > diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in > index c1c159cb8e..cb678b7886 100644 > --- a/toolchain/toolchain-external/Config.in > +++ b/toolchain/toolchain-external/Config.in > @@ -33,9 +33,6 @@ source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config > source "toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in" > source "toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in" > > -# NIOSII > -source "toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in" > - > # Bootlin toolchains, available for virtually all architectures > source "toolchain/toolchain-external/toolchain-external-bootlin/Config.in" > > @@ -137,9 +134,6 @@ source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config > source "toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in.options" > source "toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in.options" > > -# NIOSII > -source "toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options" > - > # Bootlin toolchains > source "toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options" > > diff --git a/toolchain/toolchain-external/pkg-toolchain-external.mk b/toolchain/toolchain-external/pkg-toolchain-external.mk > index ddf1d70ab4..aa5365b5bd 100644 > --- a/toolchain/toolchain-external/pkg-toolchain-external.mk > +++ b/toolchain/toolchain-external/pkg-toolchain-external.mk > @@ -13,7 +13,7 @@ > # * Toolchains provided by Linaro for the ARM and AArch64 > # architectures > # * Sourcery CodeBench toolchains (from Mentor Graphics) for the ARM, > -# MIPS, PowerPC, x86_64 and NIOS 2 architectures. For the MIPS > +# MIPS, PowerPC, and x86_64 architectures. For the MIPS > # toolchain, the -muclibc variant isn't supported yet, only the > # default glibc-based variant is. > # * Synopsys DesignWare toolchains for ARC cores > diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in > deleted file mode 100644 > index cf3ce69a68..0000000000 > --- a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in > +++ /dev/null > @@ -1,16 +0,0 @@ > -config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII > - bool "Sourcery CodeBench Nios-II 2018.05" > - depends on BR2_nios2 > - depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_8 > - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" > - select BR2_TOOLCHAIN_EXTERNAL_GLIBC > - select BR2_TOOLCHAIN_HAS_SSP > - select BR2_TOOLCHAIN_HAS_NATIVE_RPC > - select BR2_INSTALL_LIBSTDCPP > - select BR2_HOSTARCH_NEEDS_IA32_LIBS > - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15 > - select BR2_TOOLCHAIN_GCC_AT_LEAST_7 > - help > - Sourcery CodeBench toolchain for the Nios-II architecture, > - from Mentor Graphics. It uses gcc 7.3, binutils 2.28, > - glibc 2.27, gdb 8.0.1 and kernel headers 4.15.5. > diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options > deleted file mode 100644 > index 07cc5ede94..0000000000 > --- a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options > +++ /dev/null > @@ -1,9 +0,0 @@ > -if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII > - > -config BR2_TOOLCHAIN_EXTERNAL_PREFIX > - default "nios2-linux-gnu" > - > -config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL > - default "toolchain-external-codesourcery-niosII" > - > -endif > diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash > deleted file mode 100644 > index 47893ab7e2..0000000000 > --- a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash > +++ /dev/null > @@ -1,6 +0,0 @@ > -# From https://sourcery.mentor.com/GNUToolchain/release3374 > -md5 4f536b3b9b4e00f483e82e304c0a27ae sourceryg++-2018.05-5-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2 > -md5 be42ab83da2e8db7b73dc890c2549570 sourceryg++-2018.05-5-nios2-linux-gnu.src.tar.bz2 > -# Locally calculated > -sha256 c19afb432b5b23f8d5d639831d3a423a3ea3c9cc62e0015020d20ea2eb36dd1b sourceryg++-2018.05-5-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2 > -sha256 d73a6364106dd62352711f932d3be8e97fdaaa548995678b5d38d9f21e22437a sourceryg++-2018.05-5-nios2-linux-gnu.src.tar.bz2 > diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk > deleted file mode 100644 > index cb0fe760ff..0000000000 > --- a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk > +++ /dev/null > @@ -1,13 +0,0 @@ > -################################################################################ > -# > -# toolchain-external-codesourcery-niosII > -# > -################################################################################ > - > -TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION = 2018.05-5 > - > -TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_SITE = https://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX) > -TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_SOURCE = sourceryg++-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2 > -TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_ACTUAL_SOURCE_TARBALL = sourceryg++-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2 > - > -$(eval $(toolchain-external-package)) From thomas.petazzoni at bootlin.com Wed May 1 19:55:23 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:55:23 +0200 Subject: [Buildroot] [PATCH 1/1] package/fwts: disable parallel build In-Reply-To: <20240420132251.1349622-1-ju.o@free.fr> References: <20240420132251.1349622-1-ju.o@free.fr> Message-ID: <20240501215523.5bc7ce23@windsurf> On Sat, 20 Apr 2024 15:22:51 +0200 Julien Olivain wrote: > fwts randomly fail to build in parallel with error: > > mv: cannot stat 'dtcompilerparser.tab.c': No such file or directory > mv: cannot stat 'prparser.tab.c': No such file or directory > > This is a known upstream issue. See: > https://github.com/fwts/fwts/issues/7 > > This commit workaround this issue by disabling parallel builds. > > Signed-off-by: Julien Olivain > --- > package/fwts/fwts.mk | 3 +++ > 1 file changed, 3 insertions(+) Hm, I don't see any failures in the autobuilders. Did you encounter this issue personally? Why don't we see it in the autobuilders? Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Wed May 1 19:57:01 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:57:01 +0200 Subject: [Buildroot] [PATCH 1/1] support/testing: add fwts runtime test In-Reply-To: <20240420132817.1352847-1-ju.o@free.fr> References: <20240420132817.1352847-1-ju.o@free.fr> Message-ID: <20240501215701.7b2ce70e@windsurf> On Sat, 20 Apr 2024 15:28:17 +0200 Julien Olivain wrote: > Signed-off-by: Julien Olivain > --- > DEVELOPERS | 1 + > support/testing/tests/package/test_fwts.py | 67 ++++++++++++++++++++++ > 2 files changed, 68 insertions(+) > create mode 100644 support/testing/tests/package/test_fwts.py Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From romain.naour at smile.fr Wed May 1 19:54:38 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 21:54:38 +0200 Subject: [Buildroot] [git commit] support/config-fragments: remove sourcery-nios2.config Message-ID: <20240501195824.0CDD886484@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=65fe2a8f02c694975065c890c0e6038619c025ff branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master The Sourcery CodeBench Nios-II 2018.05 external toolchain will be removed, first remove it from toolchain-configs.csv used by test-pkg and genrandconfig scripts. Signed-off-by: Romain Naour --- support/config-fragments/autobuild/sourcery-nios2.config | 3 --- support/config-fragments/autobuild/toolchain-configs.csv | 1 - 2 files changed, 4 deletions(-) diff --git a/support/config-fragments/autobuild/sourcery-nios2.config b/support/config-fragments/autobuild/sourcery-nios2.config deleted file mode 100644 index d58407d513..0000000000 --- a/support/config-fragments/autobuild/sourcery-nios2.config +++ /dev/null @@ -1,3 +0,0 @@ -BR2_nios2=y -BR2_TOOLCHAIN_EXTERNAL=y -BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII=y diff --git a/support/config-fragments/autobuild/toolchain-configs.csv b/support/config-fragments/autobuild/toolchain-configs.csv index 2c4fa45fe7..47d5fddfbd 100644 --- a/support/config-fragments/autobuild/toolchain-configs.csv +++ b/support/config-fragments/autobuild/toolchain-configs.csv @@ -65,4 +65,3 @@ support/config-fragments/autobuild/linaro-aarch64-be.config,x86 support/config-fragments/autobuild/linaro-arm.config,x86 support/config-fragments/autobuild/sourcery-mips64.config,x86 support/config-fragments/autobuild/sourcery-mips.config,x86 -support/config-fragments/autobuild/sourcery-nios2.config,x86 From romain.naour at smile.fr Wed May 1 19:57:21 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 21:57:21 +0200 Subject: [Buildroot] [git commit] package/kf5/kf5-kcoreaddons: drop nios2 binutils bug 27597 dependency Message-ID: <20240501195824.50C8E86485@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=f9e4c41c19707d0cdb30c5607350ad80cd53e8e8 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Now that binutils patch has been backported to every Buildroot binutils version we can drop nios2 binutils bug 27597 dependency. Signed-off-by: Giulio Benetti Signed-off-by: Romain Naour --- package/kf5/kf5-kcoreaddons/Config.in | 1 - 1 file changed, 1 deletion(-) diff --git a/package/kf5/kf5-kcoreaddons/Config.in b/package/kf5/kf5-kcoreaddons/Config.in index 02bd38e395..88fda03ee0 100644 --- a/package/kf5/kf5-kcoreaddons/Config.in +++ b/package/kf5/kf5-kcoreaddons/Config.in @@ -1,6 +1,5 @@ config BR2_PACKAGE_KF5_KCOREADDONS bool "kf5-kcoreaddons" - depends on !BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597 select BR2_PACKAGE_KF5_EXTRA_CMAKE_MODULES select BR2_PACKAGE_QT5TOOLS select BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS From romain.naour at smile.fr Wed May 1 19:57:24 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 21:57:24 +0200 Subject: [Buildroot] [git commit] package/libcamera: drop nios2 binutils bug 27597 dependency Message-ID: <20240501195824.5E3908641E@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=138b06cd22b67e48ea801689b269757d4b296c44 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Now that binutils patch has been backported to every Buildroot binutils version we can drop nios2 binutils bug 27597 dependency. Signed-off-by: Giulio Benetti Signed-off-by: Romain Naour --- package/libcamera/Config.in | 1 - 1 file changed, 1 deletion(-) diff --git a/package/libcamera/Config.in b/package/libcamera/Config.in index ccb5281b4b..e84b8d342e 100644 --- a/package/libcamera/Config.in +++ b/package/libcamera/Config.in @@ -3,7 +3,6 @@ config BR2_PACKAGE_LIBCAMERA_ARCH_SUPPORTS default y # Invalid packing size of ControlValue struct on m68k depends on !BR2_m68k - depends on !BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597 menuconfig BR2_PACKAGE_LIBCAMERA bool "libcamera" From romain.naour at smile.fr Wed May 1 19:57:19 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 21:57:19 +0200 Subject: [Buildroot] [git commit] package/gdal: drop nios2 binutils bug 27597 dependency Message-ID: <20240501195824.457BE86484@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=e983a6404814292092ab797d3983fa97aea76741 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Now that binutils patch has been backported to every Buildroot binutils version we can drop nios2 binutils bug 27597 dependency. Signed-off-by: Giulio Benetti Reviewed-by: Maxim Kochetkov Signed-off-by: Romain Naour --- package/gdal/Config.in | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/package/gdal/Config.in b/package/gdal/Config.in index 24a1f06af2..839a1bd7ea 100644 --- a/package/gdal/Config.in +++ b/package/gdal/Config.in @@ -5,7 +5,6 @@ config BR2_PACKAGE_GDAL # configure can't find proj, when linking statically depends on !BR2_STATIC_LIBS depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11, proj - depends on !BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597 depends on BR2_TOOLCHAIN_HAS_THREADS # proj depends on BR2_USE_WCHAR # proj select BR2_PACKAGE_GIFLIB @@ -26,9 +25,8 @@ config BR2_PACKAGE_GDAL https://gdal.org/ -comment "gdal needs a toolchain w/ C++, dynamic library, gcc >= 4.7, not binutils bug 27597, threads, wchar" +comment "gdal needs a toolchain w/ C++, dynamic library, gcc >= 4.7, threads, wchar" depends on BR2_TOOLCHAIN_HAS_SYNC_4 depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 || \ - BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597 || \ !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR From romain.naour at smile.fr Wed May 1 19:57:16 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 21:57:16 +0200 Subject: [Buildroot] [git commit] package/binutils: add local patches to fix Nios2 bug 27597 Message-ID: <20240501195824.2B4DD86486@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=83339a69e4ce03fccbd4d6bebd6a606f3e330085 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master These backported patches fix Nios2 linker bug 27597 that affects packages gdal, kf5-kcoreaddons, libgeos, libcamera, pistache. Signed-off-by: Giulio Benetti Signed-off-by: Romain Naour --- ...s-assertion-fail-in-nios2_elf32_install_i.patch | 125 +++++++++++++++++++++ ...s-assertion-fail-in-nios2_elf32_install_i.patch | 125 +++++++++++++++++++++ ...s-assertion-fail-in-nios2_elf32_install_i.patch | 125 +++++++++++++++++++++ 3 files changed, 375 insertions(+) diff --git a/package/binutils/2.40/0003-PR27597-nios-assertion-fail-in-nios2_elf32_install_i.patch b/package/binutils/2.40/0003-PR27597-nios-assertion-fail-in-nios2_elf32_install_i.patch new file mode 100644 index 0000000000..4753ae13c4 --- /dev/null +++ b/package/binutils/2.40/0003-PR27597-nios-assertion-fail-in-nios2_elf32_install_i.patch @@ -0,0 +1,125 @@ +From 900c0f0aa3d78cd9e67ccd26fbc86224cef4c5b1 Mon Sep 17 00:00:00 2001 +From: Alan Modra +Date: Fri, 16 Feb 2024 22:33:29 +1030 +Subject: [PATCH] PR27597, nios: assertion fail in nios2_elf32_install_imm16 + +The assertion in nios2_elf32_install_imm16 triggers when the PLT is +twice the maximum allowable size for a branch from PLTn to reach +.PLTresolve, and on no other call to nios2_elf32_install_imm16. That +makes the assertion completely useless. We can handle a PIC PLT +exceeding 0x8000 in size by bouncing branches that won't reach through +previous branches. + + PR 27597 + * elf32-nios2.c (nios2_elf32_install_imm16): Delete BFD_ASSERT. + (nios2_build_one_stub): Don't bother masking value passed to + nios2_elf32_install_imm16. + (nios2_elf32_finish_dynamic_symbol): Likewise. Handle overflow + of PLTn branch to .PLTresolve by bouncing through prior branches. + +Upstream: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=900c0f0aa3d78cd9e67ccd26fbc86224cef4c5b1 + +Signed-off-by: Giulio Benetti +--- + bfd/elf32-nios2.c | 40 ++++++++++++++++++++++++---------------- + 1 file changed, 24 insertions(+), 16 deletions(-) + +diff --git a/bfd/elf32-nios2.c b/bfd/elf32-nios2.c +index bebf4239958..7f61e2f8507 100644 +--- a/bfd/elf32-nios2.c ++++ b/bfd/elf32-nios2.c +@@ -1878,8 +1878,6 @@ nios2_elf32_install_imm16 (asection *sec, bfd_vma offset, bfd_vma value) + { + bfd_vma word = bfd_get_32 (sec->owner, sec->contents + offset); + +- BFD_ASSERT (value <= 0xffff || ((bfd_signed_vma) value) >= -0xffff); +- + bfd_put_32 (sec->owner, word | ((value & 0xffff) << 6), + sec->contents + offset); + } +@@ -2518,7 +2516,7 @@ nios2_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg ATTRIBUTE_U + nios2_elf32_install_imm16 (stub_sec, hsh->stub_offset, + hiadj (sym_value)); + nios2_elf32_install_imm16 (stub_sec, hsh->stub_offset + 4, +- (sym_value & 0xffff)); ++ sym_value); + stub_sec->size += 12; + break; + default: +@@ -4986,16 +4984,28 @@ nios2_elf32_finish_dynamic_symbol (bfd *output_bfd, + /* Emit the PLT entry. */ + if (bfd_link_pic (info)) + { ++ bfd_vma br_offset; ++ + nios2_elf32_install_data (splt, nios2_so_plt_entry, h->plt.offset, + 3); + plt_index = (h->plt.offset - 24) / 12; + got_offset = (plt_index + 3) * 4; + nios2_elf32_install_imm16 (splt, h->plt.offset, +- hiadj(plt_index * 4)); ++ hiadj (plt_index * 4)); + nios2_elf32_install_imm16 (splt, h->plt.offset + 4, +- (plt_index * 4) & 0xffff); +- nios2_elf32_install_imm16 (splt, h->plt.offset + 8, +- 0xfff4 - h->plt.offset); ++ plt_index * 4); ++ br_offset = -(h->plt.offset + 12); ++ /* If this plt entry is too far away from the start of .plt ++ for the "br" to reach .PLTresolve, bounce through one or ++ more of the previous "br" instructions. */ ++ if (br_offset < (bfd_vma) -32768) ++ { ++ br_offset += 32768 / 12 * 12 - 4; ++ while (br_offset < (bfd_vma) -32768) ++ br_offset += 32768 / 12 * 12; ++ } ++ nios2_elf32_install_imm16 (splt, h->plt.offset + 8, br_offset); ++ + got_address = (sgotplt->output_section->vma + sgotplt->output_offset + + got_offset); + +@@ -5014,9 +5024,8 @@ nios2_elf32_finish_dynamic_symbol (bfd *output_bfd, + nios2_elf32_install_data (splt, nios2_plt_entry, h->plt.offset, 3); + got_address = (sgotplt->output_section->vma + sgotplt->output_offset + + got_offset); +- nios2_elf32_install_imm16 (splt, h->plt.offset, hiadj(got_address)); +- nios2_elf32_install_imm16 (splt, h->plt.offset + 4, +- got_address & 0xffff); ++ nios2_elf32_install_imm16 (splt, h->plt.offset, hiadj (got_address)); ++ nios2_elf32_install_imm16 (splt, h->plt.offset + 4, got_address); + + /* Fill in the entry in the global offset table. */ + bfd_put_32 (output_bfd, +@@ -5217,8 +5226,8 @@ nios2_elf32_finish_dynamic_sections (bfd *output_bfd, + BFD_ASSERT ((got_pcrel & 0xf) == 0); + nios2_elf32_install_data (splt, nios2_so_plt0_entry, 0, 6); + nios2_elf32_install_imm16 (splt, 4, hiadj (got_pcrel)); +- nios2_elf32_install_imm16 (splt, 12, got_pcrel & 0xffff); +- nios2_elf32_install_imm16 (splt, 16, (got_pcrel + 4) & 0xffff); ++ nios2_elf32_install_imm16 (splt, 12, got_pcrel); ++ nios2_elf32_install_imm16 (splt, 16, got_pcrel + 4); + } + else + { +@@ -5240,14 +5249,13 @@ nios2_elf32_finish_dynamic_sections (bfd *output_bfd, + + nios2_elf32_install_data (splt, nios2_plt0_entry, res_size, 7); + nios2_elf32_install_imm16 (splt, res_size, hiadj (res_start)); +- nios2_elf32_install_imm16 (splt, res_size + 4, +- res_start & 0xffff); ++ nios2_elf32_install_imm16 (splt, res_size + 4, res_start); + nios2_elf32_install_imm16 (splt, res_size + 12, + hiadj (got_address)); + nios2_elf32_install_imm16 (splt, res_size + 16, +- (got_address + 4) & 0xffff); ++ got_address + 4); + nios2_elf32_install_imm16 (splt, res_size + 20, +- (got_address + 8) & 0xffff); ++ got_address + 8); + } + } + } +-- +2.34.1 + diff --git a/package/binutils/2.41/0003-PR27597-nios-assertion-fail-in-nios2_elf32_install_i.patch b/package/binutils/2.41/0003-PR27597-nios-assertion-fail-in-nios2_elf32_install_i.patch new file mode 100644 index 0000000000..4753ae13c4 --- /dev/null +++ b/package/binutils/2.41/0003-PR27597-nios-assertion-fail-in-nios2_elf32_install_i.patch @@ -0,0 +1,125 @@ +From 900c0f0aa3d78cd9e67ccd26fbc86224cef4c5b1 Mon Sep 17 00:00:00 2001 +From: Alan Modra +Date: Fri, 16 Feb 2024 22:33:29 +1030 +Subject: [PATCH] PR27597, nios: assertion fail in nios2_elf32_install_imm16 + +The assertion in nios2_elf32_install_imm16 triggers when the PLT is +twice the maximum allowable size for a branch from PLTn to reach +.PLTresolve, and on no other call to nios2_elf32_install_imm16. That +makes the assertion completely useless. We can handle a PIC PLT +exceeding 0x8000 in size by bouncing branches that won't reach through +previous branches. + + PR 27597 + * elf32-nios2.c (nios2_elf32_install_imm16): Delete BFD_ASSERT. + (nios2_build_one_stub): Don't bother masking value passed to + nios2_elf32_install_imm16. + (nios2_elf32_finish_dynamic_symbol): Likewise. Handle overflow + of PLTn branch to .PLTresolve by bouncing through prior branches. + +Upstream: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=900c0f0aa3d78cd9e67ccd26fbc86224cef4c5b1 + +Signed-off-by: Giulio Benetti +--- + bfd/elf32-nios2.c | 40 ++++++++++++++++++++++++---------------- + 1 file changed, 24 insertions(+), 16 deletions(-) + +diff --git a/bfd/elf32-nios2.c b/bfd/elf32-nios2.c +index bebf4239958..7f61e2f8507 100644 +--- a/bfd/elf32-nios2.c ++++ b/bfd/elf32-nios2.c +@@ -1878,8 +1878,6 @@ nios2_elf32_install_imm16 (asection *sec, bfd_vma offset, bfd_vma value) + { + bfd_vma word = bfd_get_32 (sec->owner, sec->contents + offset); + +- BFD_ASSERT (value <= 0xffff || ((bfd_signed_vma) value) >= -0xffff); +- + bfd_put_32 (sec->owner, word | ((value & 0xffff) << 6), + sec->contents + offset); + } +@@ -2518,7 +2516,7 @@ nios2_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg ATTRIBUTE_U + nios2_elf32_install_imm16 (stub_sec, hsh->stub_offset, + hiadj (sym_value)); + nios2_elf32_install_imm16 (stub_sec, hsh->stub_offset + 4, +- (sym_value & 0xffff)); ++ sym_value); + stub_sec->size += 12; + break; + default: +@@ -4986,16 +4984,28 @@ nios2_elf32_finish_dynamic_symbol (bfd *output_bfd, + /* Emit the PLT entry. */ + if (bfd_link_pic (info)) + { ++ bfd_vma br_offset; ++ + nios2_elf32_install_data (splt, nios2_so_plt_entry, h->plt.offset, + 3); + plt_index = (h->plt.offset - 24) / 12; + got_offset = (plt_index + 3) * 4; + nios2_elf32_install_imm16 (splt, h->plt.offset, +- hiadj(plt_index * 4)); ++ hiadj (plt_index * 4)); + nios2_elf32_install_imm16 (splt, h->plt.offset + 4, +- (plt_index * 4) & 0xffff); +- nios2_elf32_install_imm16 (splt, h->plt.offset + 8, +- 0xfff4 - h->plt.offset); ++ plt_index * 4); ++ br_offset = -(h->plt.offset + 12); ++ /* If this plt entry is too far away from the start of .plt ++ for the "br" to reach .PLTresolve, bounce through one or ++ more of the previous "br" instructions. */ ++ if (br_offset < (bfd_vma) -32768) ++ { ++ br_offset += 32768 / 12 * 12 - 4; ++ while (br_offset < (bfd_vma) -32768) ++ br_offset += 32768 / 12 * 12; ++ } ++ nios2_elf32_install_imm16 (splt, h->plt.offset + 8, br_offset); ++ + got_address = (sgotplt->output_section->vma + sgotplt->output_offset + + got_offset); + +@@ -5014,9 +5024,8 @@ nios2_elf32_finish_dynamic_symbol (bfd *output_bfd, + nios2_elf32_install_data (splt, nios2_plt_entry, h->plt.offset, 3); + got_address = (sgotplt->output_section->vma + sgotplt->output_offset + + got_offset); +- nios2_elf32_install_imm16 (splt, h->plt.offset, hiadj(got_address)); +- nios2_elf32_install_imm16 (splt, h->plt.offset + 4, +- got_address & 0xffff); ++ nios2_elf32_install_imm16 (splt, h->plt.offset, hiadj (got_address)); ++ nios2_elf32_install_imm16 (splt, h->plt.offset + 4, got_address); + + /* Fill in the entry in the global offset table. */ + bfd_put_32 (output_bfd, +@@ -5217,8 +5226,8 @@ nios2_elf32_finish_dynamic_sections (bfd *output_bfd, + BFD_ASSERT ((got_pcrel & 0xf) == 0); + nios2_elf32_install_data (splt, nios2_so_plt0_entry, 0, 6); + nios2_elf32_install_imm16 (splt, 4, hiadj (got_pcrel)); +- nios2_elf32_install_imm16 (splt, 12, got_pcrel & 0xffff); +- nios2_elf32_install_imm16 (splt, 16, (got_pcrel + 4) & 0xffff); ++ nios2_elf32_install_imm16 (splt, 12, got_pcrel); ++ nios2_elf32_install_imm16 (splt, 16, got_pcrel + 4); + } + else + { +@@ -5240,14 +5249,13 @@ nios2_elf32_finish_dynamic_sections (bfd *output_bfd, + + nios2_elf32_install_data (splt, nios2_plt0_entry, res_size, 7); + nios2_elf32_install_imm16 (splt, res_size, hiadj (res_start)); +- nios2_elf32_install_imm16 (splt, res_size + 4, +- res_start & 0xffff); ++ nios2_elf32_install_imm16 (splt, res_size + 4, res_start); + nios2_elf32_install_imm16 (splt, res_size + 12, + hiadj (got_address)); + nios2_elf32_install_imm16 (splt, res_size + 16, +- (got_address + 4) & 0xffff); ++ got_address + 4); + nios2_elf32_install_imm16 (splt, res_size + 20, +- (got_address + 8) & 0xffff); ++ got_address + 8); + } + } + } +-- +2.34.1 + diff --git a/package/binutils/2.42/0003-PR27597-nios-assertion-fail-in-nios2_elf32_install_i.patch b/package/binutils/2.42/0003-PR27597-nios-assertion-fail-in-nios2_elf32_install_i.patch new file mode 100644 index 0000000000..4753ae13c4 --- /dev/null +++ b/package/binutils/2.42/0003-PR27597-nios-assertion-fail-in-nios2_elf32_install_i.patch @@ -0,0 +1,125 @@ +From 900c0f0aa3d78cd9e67ccd26fbc86224cef4c5b1 Mon Sep 17 00:00:00 2001 +From: Alan Modra +Date: Fri, 16 Feb 2024 22:33:29 +1030 +Subject: [PATCH] PR27597, nios: assertion fail in nios2_elf32_install_imm16 + +The assertion in nios2_elf32_install_imm16 triggers when the PLT is +twice the maximum allowable size for a branch from PLTn to reach +.PLTresolve, and on no other call to nios2_elf32_install_imm16. That +makes the assertion completely useless. We can handle a PIC PLT +exceeding 0x8000 in size by bouncing branches that won't reach through +previous branches. + + PR 27597 + * elf32-nios2.c (nios2_elf32_install_imm16): Delete BFD_ASSERT. + (nios2_build_one_stub): Don't bother masking value passed to + nios2_elf32_install_imm16. + (nios2_elf32_finish_dynamic_symbol): Likewise. Handle overflow + of PLTn branch to .PLTresolve by bouncing through prior branches. + +Upstream: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=900c0f0aa3d78cd9e67ccd26fbc86224cef4c5b1 + +Signed-off-by: Giulio Benetti +--- + bfd/elf32-nios2.c | 40 ++++++++++++++++++++++++---------------- + 1 file changed, 24 insertions(+), 16 deletions(-) + +diff --git a/bfd/elf32-nios2.c b/bfd/elf32-nios2.c +index bebf4239958..7f61e2f8507 100644 +--- a/bfd/elf32-nios2.c ++++ b/bfd/elf32-nios2.c +@@ -1878,8 +1878,6 @@ nios2_elf32_install_imm16 (asection *sec, bfd_vma offset, bfd_vma value) + { + bfd_vma word = bfd_get_32 (sec->owner, sec->contents + offset); + +- BFD_ASSERT (value <= 0xffff || ((bfd_signed_vma) value) >= -0xffff); +- + bfd_put_32 (sec->owner, word | ((value & 0xffff) << 6), + sec->contents + offset); + } +@@ -2518,7 +2516,7 @@ nios2_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg ATTRIBUTE_U + nios2_elf32_install_imm16 (stub_sec, hsh->stub_offset, + hiadj (sym_value)); + nios2_elf32_install_imm16 (stub_sec, hsh->stub_offset + 4, +- (sym_value & 0xffff)); ++ sym_value); + stub_sec->size += 12; + break; + default: +@@ -4986,16 +4984,28 @@ nios2_elf32_finish_dynamic_symbol (bfd *output_bfd, + /* Emit the PLT entry. */ + if (bfd_link_pic (info)) + { ++ bfd_vma br_offset; ++ + nios2_elf32_install_data (splt, nios2_so_plt_entry, h->plt.offset, + 3); + plt_index = (h->plt.offset - 24) / 12; + got_offset = (plt_index + 3) * 4; + nios2_elf32_install_imm16 (splt, h->plt.offset, +- hiadj(plt_index * 4)); ++ hiadj (plt_index * 4)); + nios2_elf32_install_imm16 (splt, h->plt.offset + 4, +- (plt_index * 4) & 0xffff); +- nios2_elf32_install_imm16 (splt, h->plt.offset + 8, +- 0xfff4 - h->plt.offset); ++ plt_index * 4); ++ br_offset = -(h->plt.offset + 12); ++ /* If this plt entry is too far away from the start of .plt ++ for the "br" to reach .PLTresolve, bounce through one or ++ more of the previous "br" instructions. */ ++ if (br_offset < (bfd_vma) -32768) ++ { ++ br_offset += 32768 / 12 * 12 - 4; ++ while (br_offset < (bfd_vma) -32768) ++ br_offset += 32768 / 12 * 12; ++ } ++ nios2_elf32_install_imm16 (splt, h->plt.offset + 8, br_offset); ++ + got_address = (sgotplt->output_section->vma + sgotplt->output_offset + + got_offset); + +@@ -5014,9 +5024,8 @@ nios2_elf32_finish_dynamic_symbol (bfd *output_bfd, + nios2_elf32_install_data (splt, nios2_plt_entry, h->plt.offset, 3); + got_address = (sgotplt->output_section->vma + sgotplt->output_offset + + got_offset); +- nios2_elf32_install_imm16 (splt, h->plt.offset, hiadj(got_address)); +- nios2_elf32_install_imm16 (splt, h->plt.offset + 4, +- got_address & 0xffff); ++ nios2_elf32_install_imm16 (splt, h->plt.offset, hiadj (got_address)); ++ nios2_elf32_install_imm16 (splt, h->plt.offset + 4, got_address); + + /* Fill in the entry in the global offset table. */ + bfd_put_32 (output_bfd, +@@ -5217,8 +5226,8 @@ nios2_elf32_finish_dynamic_sections (bfd *output_bfd, + BFD_ASSERT ((got_pcrel & 0xf) == 0); + nios2_elf32_install_data (splt, nios2_so_plt0_entry, 0, 6); + nios2_elf32_install_imm16 (splt, 4, hiadj (got_pcrel)); +- nios2_elf32_install_imm16 (splt, 12, got_pcrel & 0xffff); +- nios2_elf32_install_imm16 (splt, 16, (got_pcrel + 4) & 0xffff); ++ nios2_elf32_install_imm16 (splt, 12, got_pcrel); ++ nios2_elf32_install_imm16 (splt, 16, got_pcrel + 4); + } + else + { +@@ -5240,14 +5249,13 @@ nios2_elf32_finish_dynamic_sections (bfd *output_bfd, + + nios2_elf32_install_data (splt, nios2_plt0_entry, res_size, 7); + nios2_elf32_install_imm16 (splt, res_size, hiadj (res_start)); +- nios2_elf32_install_imm16 (splt, res_size + 4, +- res_start & 0xffff); ++ nios2_elf32_install_imm16 (splt, res_size + 4, res_start); + nios2_elf32_install_imm16 (splt, res_size + 12, + hiadj (got_address)); + nios2_elf32_install_imm16 (splt, res_size + 16, +- (got_address + 4) & 0xffff); ++ got_address + 4); + nios2_elf32_install_imm16 (splt, res_size + 20, +- (got_address + 8) & 0xffff); ++ got_address + 8); + } + } + } +-- +2.34.1 + From romain.naour at smile.fr Wed May 1 19:56:13 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 21:56:13 +0200 Subject: [Buildroot] [git commit] toolchain/toolchain-external: drop external codesourcery niosII toolchain Message-ID: <20240501195824.1D5E78641E@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=7fa0159a5055363d002089f0c451a84594732cf2 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master This toolchain is pretty old and unlikely used. It's also affected by binutils bug 27597, so let's remove it. Remove BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII from pixman package. Signed-off-by: Giulio Benetti [Romain: remove BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII] Signed-off-by: Romain Naour --- package/pixman/pixman.mk | 7 ------- toolchain/toolchain-external/Config.in | 6 ------ toolchain/toolchain-external/pkg-toolchain-external.mk | 2 +- .../toolchain-external-codesourcery-niosII/Config.in | 16 ---------------- .../Config.in.options | 9 --------- .../toolchain-external-codesourcery-niosII.hash | 6 ------ .../toolchain-external-codesourcery-niosII.mk | 13 ------------- 7 files changed, 1 insertion(+), 58 deletions(-) diff --git a/package/pixman/pixman.mk b/package/pixman/pixman.mk index 37eb974c46..8a4f16318f 100644 --- a/package/pixman/pixman.mk +++ b/package/pixman/pixman.mk @@ -50,13 +50,6 @@ endif PIXMAN_CFLAGS = $(TARGET_CFLAGS) -# toolchain gets confused about TLS access through GOT (PIC), so disable TLS -# movhi r4, %got_hiadj(%tls_ldo(fast_path_cache)) -# {standard input}:172: Error: bad expression -ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII),y) -PIXMAN_CFLAGS += -DPIXMAN_NO_TLS -endif - ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_101737),y) PIXMAN_CFLAGS += -O0 endif diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in index af9082cf6e..e91aa16326 100644 --- a/toolchain/toolchain-external/Config.in +++ b/toolchain/toolchain-external/Config.in @@ -29,9 +29,6 @@ source "toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in" # MIPS source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in" -# NIOSII -source "toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in" - # Bootlin toolchains, available for virtually all architectures source "toolchain/toolchain-external/toolchain-external-bootlin/Config.in" @@ -129,9 +126,6 @@ source "toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in.o # MIPS source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in.options" -# NIOSII -source "toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options" - # Bootlin toolchains source "toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options" diff --git a/toolchain/toolchain-external/pkg-toolchain-external.mk b/toolchain/toolchain-external/pkg-toolchain-external.mk index 5343f257e0..c08bf0a653 100644 --- a/toolchain/toolchain-external/pkg-toolchain-external.mk +++ b/toolchain/toolchain-external/pkg-toolchain-external.mk @@ -13,7 +13,7 @@ # * Toolchains provided by Linaro for the ARM and AArch64 # architectures # * Sourcery CodeBench toolchains (from Mentor Graphics) for the ARM, -# MIPS, PowerPC, x86_64 and NIOS 2 architectures. For the MIPS +# MIPS, PowerPC, and x86_64 architectures. For the MIPS # toolchain, the -muclibc variant isn't supported yet, only the # default glibc-based variant is. # * Synopsys DesignWare toolchains for ARC cores diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in deleted file mode 100644 index cf3ce69a68..0000000000 --- a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in +++ /dev/null @@ -1,16 +0,0 @@ -config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII - bool "Sourcery CodeBench Nios-II 2018.05" - depends on BR2_nios2 - depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_8 - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" - select BR2_TOOLCHAIN_EXTERNAL_GLIBC - select BR2_TOOLCHAIN_HAS_SSP - select BR2_TOOLCHAIN_HAS_NATIVE_RPC - select BR2_INSTALL_LIBSTDCPP - select BR2_HOSTARCH_NEEDS_IA32_LIBS - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15 - select BR2_TOOLCHAIN_GCC_AT_LEAST_7 - help - Sourcery CodeBench toolchain for the Nios-II architecture, - from Mentor Graphics. It uses gcc 7.3, binutils 2.28, - glibc 2.27, gdb 8.0.1 and kernel headers 4.15.5. diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options deleted file mode 100644 index 07cc5ede94..0000000000 --- a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options +++ /dev/null @@ -1,9 +0,0 @@ -if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII - -config BR2_TOOLCHAIN_EXTERNAL_PREFIX - default "nios2-linux-gnu" - -config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL - default "toolchain-external-codesourcery-niosII" - -endif diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash deleted file mode 100644 index 47893ab7e2..0000000000 --- a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash +++ /dev/null @@ -1,6 +0,0 @@ -# From https://sourcery.mentor.com/GNUToolchain/release3374 -md5 4f536b3b9b4e00f483e82e304c0a27ae sourceryg++-2018.05-5-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2 -md5 be42ab83da2e8db7b73dc890c2549570 sourceryg++-2018.05-5-nios2-linux-gnu.src.tar.bz2 -# Locally calculated -sha256 c19afb432b5b23f8d5d639831d3a423a3ea3c9cc62e0015020d20ea2eb36dd1b sourceryg++-2018.05-5-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2 -sha256 d73a6364106dd62352711f932d3be8e97fdaaa548995678b5d38d9f21e22437a sourceryg++-2018.05-5-nios2-linux-gnu.src.tar.bz2 diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk deleted file mode 100644 index cb0fe760ff..0000000000 --- a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk +++ /dev/null @@ -1,13 +0,0 @@ -################################################################################ -# -# toolchain-external-codesourcery-niosII -# -################################################################################ - -TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION = 2018.05-5 - -TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_SITE = https://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX) -TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_SOURCE = sourceryg++-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2 -TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_ACTUAL_SOURCE_TARBALL = sourceryg++-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2 - -$(eval $(toolchain-external-package)) From romain.naour at smile.fr Wed May 1 19:57:29 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 21:57:29 +0200 Subject: [Buildroot] [git commit] package/pistache: drop nios2 binutils bug 27597 dependency Message-ID: <20240501195824.83D1086485@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=3b7a8ebefcccb6355f7c5b2d1958bfe408da7452 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Now that binutils patch has been backported to every Buildroot binutils version we can drop nios2 binutils bug 27597 dependency. Signed-off-by: Giulio Benetti Signed-off-by: Romain Naour --- package/pistache/Config.in | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/package/pistache/Config.in b/package/pistache/Config.in index 3acf1f53f0..ca2d2833cd 100644 --- a/package/pistache/Config.in +++ b/package/pistache/Config.in @@ -4,7 +4,6 @@ config BR2_PACKAGE_PISTACHE depends on BR2_USE_WCHAR depends on BR2_TOOLCHAIN_HAS_THREADS depends on BR2_INSTALL_LIBSTDCPP - depends on !BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597 select BR2_PACKAGE_RAPIDJSON help Pistache is a modern and elegant HTTP and REST framework @@ -13,9 +12,8 @@ config BR2_PACKAGE_PISTACHE https://github.com/oktal/pistache -comment "pistache needs a toolchain w/ C++, gcc >= 7, threads, wchar, not binutils bug 27597" +comment "pistache needs a toolchain w/ C++, gcc >= 7, threads, wchar" depends on !BR2_INSTALL_LIBSTDCPP || \ !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || \ !BR2_TOOLCHAIN_HAS_THREADS || \ - !BR2_USE_WCHAR || \ - BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597 + !BR2_USE_WCHAR From romain.naour at smile.fr Wed May 1 19:57:31 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 21:57:31 +0200 Subject: [Buildroot] [git commit] package/postgis: drop nios2 binutils bug 27597 dependency Message-ID: <20240501195824.9054A86484@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=c34e40fb65952c6f1a681e88dcd2995a90e83031 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Now that binutils patch has been backported to every Buildroot binutils version we can drop nios2 binutils bug 27597 dependency. Signed-off-by: Giulio Benetti Reviewed-by: Maxim Kochetkov Signed-off-by: Romain Naour --- package/postgis/Config.in | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/package/postgis/Config.in b/package/postgis/Config.in index 7d42390677..78569d63be 100644 --- a/package/postgis/Config.in +++ b/package/postgis/Config.in @@ -5,7 +5,6 @@ config BR2_PACKAGE_POSTGIS depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libgeos depends on BR2_TOOLCHAIN_HAS_THREADS # libgeos, proj depends on BR2_USE_WCHAR # libgeos, proj - depends on !BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597 # libgeos select BR2_PACKAGE_LIBGEOS select BR2_PACKAGE_PROJ select BR2_PACKAGE_LIBXML2 @@ -18,7 +17,6 @@ config BR2_PACKAGE_POSTGIS https://postgis.net/ -comment "postgis needs a toolchain w/ C++, threads, wchar, gcc >= 4.9, not binutils bug 27597" +comment "postgis needs a toolchain w/ C++, threads, wchar, gcc >= 4.9" depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ - !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \ - BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597 + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR From romain.naour at smile.fr Wed May 1 19:57:26 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 21:57:26 +0200 Subject: [Buildroot] [git commit] package/libgeos: drop nios2 binutils bug 27597 dependency Message-ID: <20240501195824.69E3186487@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=a5f10b35fd2e46ca559c97d0389e9c37497a2cb7 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Now that binutils patch has been backported to every Buildroot binutils version we can drop nios2 binutils bug 27597 dependency. Signed-off-by: Giulio Benetti Reviewed-by: Maxim Kochetkov Signed-off-by: Romain Naour --- package/libgeos/Config.in | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/package/libgeos/Config.in b/package/libgeos/Config.in index 2a27c6f2a4..76cbb9bdcd 100644 --- a/package/libgeos/Config.in +++ b/package/libgeos/Config.in @@ -4,7 +4,6 @@ config BR2_PACKAGE_LIBGEOS depends on BR2_USE_WCHAR depends on BR2_TOOLCHAIN_HAS_THREADS depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++14 - depends on !BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597 help GEOS (Geometry Engine - Open Source) is a C++ port of the JTS Topology Suite (JTS). It aims to contain the complete @@ -14,8 +13,7 @@ config BR2_PACKAGE_LIBGEOS https://trac.osgeo.org/geos -comment "libgeos needs a toolchain w/ C++, wchar, gcc >= 4.9, threads not binutils bug 27597" +comment "libgeos needs a toolchain w/ C++, wchar, gcc >= 4.9, threads" depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ !BR2_TOOLCHAIN_HAS_THREADS || \ - !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ - BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597 + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 From romain.naour at smile.fr Wed May 1 19:57:33 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 21:57:33 +0200 Subject: [Buildroot] [git commit] toolchain: remove binutils bug 27597 Message-ID: <20240501195824.9BF0486486@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=13602787bc17ead55f30456d8932d705e927ddc7 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Binutils bug 27597 is not present anymore in Buildroot so let's remove it. Signed-off-by: Giulio Benetti Signed-off-by: Romain Naour --- toolchain/Config.in | 6 ------ 1 file changed, 6 deletions(-) diff --git a/toolchain/Config.in b/toolchain/Config.in index e8b3db64fb..944e573f82 100644 --- a/toolchain/Config.in +++ b/toolchain/Config.in @@ -70,12 +70,6 @@ source "package/gdb/Config.in.host" comment "Toolchain Generic Options" -# https://sourceware.org/bugzilla/show_bug.cgi?id=27597 -# Affect toolchains built with binutils 2.36.1, still not fixed. -config BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597 - bool - default y if BR2_nios2 - # https://sourceware.org/bugzilla/show_bug.cgi?id=30730 # Affect toolchains built with binutils 2.40, still not fixed. config BR2_TOOLCHAIN_HAS_BINUTILS_BUG_30730 From romain.naour at smile.fr Wed May 1 20:03:02 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 22:03:02 +0200 Subject: [Buildroot] [PATCH] utils/genrandconfig: remove Sourcery CodeBench Nios-II exclusion Message-ID: <20240501200302.1585821-1-romain.naour@smile.fr> BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII has been removed by [1]. [1] 7fa0159a5055363d002089f0c451a84594732cf2 Cc: Giulio Benetti Signed-off-by: Romain Naour --- utils/genrandconfig | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/utils/genrandconfig b/utils/genrandconfig index 5ebec415b5..df6bede158 100755 --- a/utils/genrandconfig +++ b/utils/genrandconfig @@ -294,18 +294,6 @@ def fixup_config(sysinfo, configfile): if 'BR2_PACKAGE_WESTON=y\n' in configlines and \ BR2_TOOLCHAIN_EXTERNAL_URL + 'mipsel-ctng-linux-uclibc.tar.xz"\n' in configlines: return False - # The cs nios2 2017.02 toolchain is affected by binutils PR19405 - if 'BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII=y\n' in configlines and \ - 'BR2_PACKAGE_BOOST=y\n' in configlines: - return False - # The cs nios2 2017.02 toolchain is affected by binutils PR19405 - if 'BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII=y\n' in configlines and \ - 'BR2_PACKAGE_QT5BASE_GUI=y\n' in configlines: - return False - # The cs nios2 2017.02 toolchain is affected by binutils PR19405 - if 'BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII=y\n' in configlines and \ - 'BR2_PACKAGE_FLANN=y\n' in configlines: - return False # No C library for internal toolchain if 'BR2_TOOLCHAIN_BUILDROOT_NONE=y' in configlines: return False -- 2.44.0 From romain.naour at smile.fr Wed May 1 20:05:55 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 22:05:55 +0200 Subject: [Buildroot] [PATCH v3 1/9] toolchain/toolchain-external: drop external codesourcery niosII toolchain In-Reply-To: References: <20240306213606.2149683-1-giulio.benetti@benettiengineering.com> <20240306213606.2149683-2-giulio.benetti@benettiengineering.com> Message-ID: <379408f7-3eee-47a8-81f6-9a93e8780873@smile.fr> Le 01/05/2024 ? 21:54, Romain Naour a ?crit?: > Hello Giulio, All, > > Le 06/03/2024 ? 22:35, Giulio Benetti a ?crit?: >> This toolchain is pretty old and unlikely used. It's also affected by >> binutils bug 27597, so let's remove it. > > We need to remove this toolchain from toolchain-configs.csv first. > > No need to respin for that, I added a commit before merging your series. > > About NiosII, nios2 target will be obsolete in GCC 14: > > https://sourceware.org/pipermail/binutils/2024-April/133675.html > > Maybe we should stop supporting it soon. I also removed BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII from pixman package. There are still some remaining Sourcery CodeBench Nios-II exclusion in utils/genrandconfig script. See: http://patchwork.ozlabs.org/project/buildroot/patch/20240501200302.1585821-1-romain.naour at smile.fr/ Best regards, Romain > > Best regards, > Romain > >> >> Signed-off-by: Giulio Benetti >> --- >> toolchain/toolchain-external/Config.in | 6 ------ >> .../toolchain-external/pkg-toolchain-external.mk | 2 +- >> .../Config.in | 16 ---------------- >> .../Config.in.options | 9 --------- >> .../toolchain-external-codesourcery-niosII.hash | 6 ------ >> .../toolchain-external-codesourcery-niosII.mk | 13 ------------- >> 6 files changed, 1 insertion(+), 51 deletions(-) >> delete mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in >> delete mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options >> delete mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash >> delete mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk >> >> diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in >> index c1c159cb8e..cb678b7886 100644 >> --- a/toolchain/toolchain-external/Config.in >> +++ b/toolchain/toolchain-external/Config.in >> @@ -33,9 +33,6 @@ source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config >> source "toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in" >> source "toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in" >> >> -# NIOSII >> -source "toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in" >> - >> # Bootlin toolchains, available for virtually all architectures >> source "toolchain/toolchain-external/toolchain-external-bootlin/Config.in" >> >> @@ -137,9 +134,6 @@ source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config >> source "toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in.options" >> source "toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in.options" >> >> -# NIOSII >> -source "toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options" >> - >> # Bootlin toolchains >> source "toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options" >> >> diff --git a/toolchain/toolchain-external/pkg-toolchain-external.mk b/toolchain/toolchain-external/pkg-toolchain-external.mk >> index ddf1d70ab4..aa5365b5bd 100644 >> --- a/toolchain/toolchain-external/pkg-toolchain-external.mk >> +++ b/toolchain/toolchain-external/pkg-toolchain-external.mk >> @@ -13,7 +13,7 @@ >> # * Toolchains provided by Linaro for the ARM and AArch64 >> # architectures >> # * Sourcery CodeBench toolchains (from Mentor Graphics) for the ARM, >> -# MIPS, PowerPC, x86_64 and NIOS 2 architectures. For the MIPS >> +# MIPS, PowerPC, and x86_64 architectures. For the MIPS >> # toolchain, the -muclibc variant isn't supported yet, only the >> # default glibc-based variant is. >> # * Synopsys DesignWare toolchains for ARC cores >> diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in >> deleted file mode 100644 >> index cf3ce69a68..0000000000 >> --- a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in >> +++ /dev/null >> @@ -1,16 +0,0 @@ >> -config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII >> - bool "Sourcery CodeBench Nios-II 2018.05" >> - depends on BR2_nios2 >> - depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_8 >> - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" >> - select BR2_TOOLCHAIN_EXTERNAL_GLIBC >> - select BR2_TOOLCHAIN_HAS_SSP >> - select BR2_TOOLCHAIN_HAS_NATIVE_RPC >> - select BR2_INSTALL_LIBSTDCPP >> - select BR2_HOSTARCH_NEEDS_IA32_LIBS >> - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15 >> - select BR2_TOOLCHAIN_GCC_AT_LEAST_7 >> - help >> - Sourcery CodeBench toolchain for the Nios-II architecture, >> - from Mentor Graphics. It uses gcc 7.3, binutils 2.28, >> - glibc 2.27, gdb 8.0.1 and kernel headers 4.15.5. >> diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options >> deleted file mode 100644 >> index 07cc5ede94..0000000000 >> --- a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options >> +++ /dev/null >> @@ -1,9 +0,0 @@ >> -if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII >> - >> -config BR2_TOOLCHAIN_EXTERNAL_PREFIX >> - default "nios2-linux-gnu" >> - >> -config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL >> - default "toolchain-external-codesourcery-niosII" >> - >> -endif >> diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash >> deleted file mode 100644 >> index 47893ab7e2..0000000000 >> --- a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash >> +++ /dev/null >> @@ -1,6 +0,0 @@ >> -# From https://sourcery.mentor.com/GNUToolchain/release3374 >> -md5 4f536b3b9b4e00f483e82e304c0a27ae sourceryg++-2018.05-5-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2 >> -md5 be42ab83da2e8db7b73dc890c2549570 sourceryg++-2018.05-5-nios2-linux-gnu.src.tar.bz2 >> -# Locally calculated >> -sha256 c19afb432b5b23f8d5d639831d3a423a3ea3c9cc62e0015020d20ea2eb36dd1b sourceryg++-2018.05-5-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2 >> -sha256 d73a6364106dd62352711f932d3be8e97fdaaa548995678b5d38d9f21e22437a sourceryg++-2018.05-5-nios2-linux-gnu.src.tar.bz2 >> diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk >> deleted file mode 100644 >> index cb0fe760ff..0000000000 >> --- a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk >> +++ /dev/null >> @@ -1,13 +0,0 @@ >> -################################################################################ >> -# >> -# toolchain-external-codesourcery-niosII >> -# >> -################################################################################ >> - >> -TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION = 2018.05-5 >> - >> -TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_SITE = https://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX) >> -TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_SOURCE = sourceryg++-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2 >> -TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_ACTUAL_SOURCE_TARBALL = sourceryg++-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2 >> - >> -$(eval $(toolchain-external-package)) > From thomas.petazzoni at bootlin.com Wed May 1 20:06:41 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:06:41 +0200 Subject: [Buildroot] [PATCH 1/2] package/fwts: update _SITE url to use https In-Reply-To: <20240420143618.1809745-1-ju.o@free.fr> References: <20240420143618.1809745-1-ju.o@free.fr> Message-ID: <20240501220641.4303d7b1@windsurf> On Sat, 20 Apr 2024 16:36:17 +0200 Julien Olivain wrote: > The http URL redirects to https. This commit updates this URL to > directly use https. > > Signed-off-by: Julien Olivain > --- > package/fwts/fwts.mk | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Both applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From peter at korsgaard.com Wed May 1 20:15:08 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 01 May 2024 22:15:08 +0200 Subject: [Buildroot] [PATCH 1/5] package/gnupg2: bump to version 2.4.5 In-Reply-To: <20240401131300.511245-1-francois.perrad@gadz.org> (Francois Perrad's message of "Mon, 1 Apr 2024 15:12:56 +0200") References: <20240401131300.511245-1-francois.perrad@gadz.org> Message-ID: <875xvx9tmb.fsf@dell.be.48ers.dk> >>>>> "Francois" == Francois Perrad writes: > Signed-off-by: Francois Perrad Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 1 20:15:35 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 01 May 2024 22:15:35 +0200 Subject: [Buildroot] [PATCH 2/5] package/libassuan: bump to version 2.5.7 In-Reply-To: <20240403084033.512286-2-francois.perrad@gadz.org> (Francois Perrad's message of "Wed, 3 Apr 2024 10:40:30 +0200") References: <20240403084033.512286-1-francois.perrad@gadz.org> <20240403084033.512286-2-francois.perrad@gadz.org> Message-ID: <871q6l9tlk.fsf@dell.be.48ers.dk> >>>>> "Francois" == Francois Perrad writes: > Signed-off-by: Francois Perrad Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 1 20:15:52 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 01 May 2024 22:15:52 +0200 Subject: [Buildroot] [PATCH 3/5] package/libksba: bump to version 1.6.6 In-Reply-To: <20240403084033.512286-3-francois.perrad@gadz.org> (Francois Perrad's message of "Wed, 3 Apr 2024 10:40:31 +0200") References: <20240403084033.512286-1-francois.perrad@gadz.org> <20240403084033.512286-3-francois.perrad@gadz.org> Message-ID: <87wmod8f0n.fsf@dell.be.48ers.dk> >>>>> "Francois" == Francois Perrad writes: > Signed-off-by: Francois Perrad Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 1 20:16:16 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 01 May 2024 22:16:16 +0200 Subject: [Buildroot] [PATCH 4/5] package/libnpth: bump to version 1.7 In-Reply-To: <20240403084033.512286-4-francois.perrad@gadz.org> (Francois Perrad's message of "Wed, 3 Apr 2024 10:40:32 +0200") References: <20240403084033.512286-1-francois.perrad@gadz.org> <20240403084033.512286-4-francois.perrad@gadz.org> Message-ID: <87sez18ezz.fsf@dell.be.48ers.dk> >>>>> "Francois" == Francois Perrad writes: > Signed-off-by: Francois Perrad Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 1 20:16:31 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 01 May 2024 22:16:31 +0200 Subject: [Buildroot] [PATCH 5/5] package/libgpg-error: bump to version 1.48 In-Reply-To: <20240403084033.512286-5-francois.perrad@gadz.org> (Francois Perrad's message of "Wed, 3 Apr 2024 10:40:33 +0200") References: <20240403084033.512286-1-francois.perrad@gadz.org> <20240403084033.512286-5-francois.perrad@gadz.org> Message-ID: <87o79p8ezk.fsf@dell.be.48ers.dk> >>>>> "Francois" == Francois Perrad writes: > Signed-off-by: Francois Perrad Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 1 20:17:51 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 01 May 2024 22:17:51 +0200 Subject: [Buildroot] [PATCH] package/libressl: bump to version 3.8.4 In-Reply-To: <20240403084203.512309-1-francois.perrad@gadz.org> (Francois Perrad's message of "Wed, 3 Apr 2024 10:42:03 +0200") References: <20240403084203.512309-1-francois.perrad@gadz.org> Message-ID: <87jzkd8exc.fsf@dell.be.48ers.dk> >>>>> "Francois" == Francois Perrad writes: > Signed-off-by: Francois Perrad Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 1 20:15:00 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 1 May 2024 22:15:00 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/gnupg2: bump to version 2.4.5 Message-ID: <20240501201812.6F2348649C@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=907bbae1e4b146c47c4e48fbd43ecd12a55c7b1a branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: Francois Perrad Signed-off-by: Yann E. MORIN (cherry picked from commit e5d0543292817341b0ca2e9d2f4486954f1f3dac) Signed-off-by: Peter Korsgaard --- package/gnupg2/gnupg2.hash | 4 ++-- package/gnupg2/gnupg2.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/gnupg2/gnupg2.hash b/package/gnupg2/gnupg2.hash index c821afb55e..8bb64c9eda 100644 --- a/package/gnupg2/gnupg2.hash +++ b/package/gnupg2/gnupg2.hash @@ -1,5 +1,5 @@ # From https://www.gnupg.org/download/integrity_check.html -sha1 228b3984325fdeebc5e3f2d165c6419a5ebc28de gnupg-2.4.4.tar.bz2 -sha256 67ebe016ca90fa7688ce67a387ebd82c6261e95897db7b23df24ff335be85bc6 gnupg-2.4.4.tar.bz2 +sha1 ae0935ead29a2dfa34d6b48d70808652bc3ca73b gnupg-2.4.5.tar.bz2 +sha256 f68f7d75d06cb1635c336d34d844af97436c3f64ea14bcb7c869782f96f44277 gnupg-2.4.5.tar.bz2 # Locally calculated sha256 bc2d6664f6276fa0a72d57633b3ae68dc7dcb677b71018bf08c8e93e509f1357 COPYING diff --git a/package/gnupg2/gnupg2.mk b/package/gnupg2/gnupg2.mk index 986da4790c..39b0a066f6 100644 --- a/package/gnupg2/gnupg2.mk +++ b/package/gnupg2/gnupg2.mk @@ -4,7 +4,7 @@ # ################################################################################ -GNUPG2_VERSION = 2.4.4 +GNUPG2_VERSION = 2.4.5 GNUPG2_SOURCE = gnupg-$(GNUPG2_VERSION).tar.bz2 GNUPG2_SITE = https://gnupg.org/ftp/gcrypt/gnupg GNUPG2_LICENSE = GPL-3.0+ From peter at korsgaard.com Wed May 1 20:15:29 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 1 May 2024 22:15:29 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/libassuan: bump to version 2.5.7 Message-ID: <20240501201812.80BD67FE0C@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=2acbf5f16776e372c37b857ada883348640ee5f6 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: Francois Perrad Signed-off-by: Yann E. MORIN (cherry picked from commit 439525ced972299c8fa60d5e68e710075b9dce79) Signed-off-by: Peter Korsgaard --- package/libassuan/libassuan.hash | 4 ++-- package/libassuan/libassuan.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/libassuan/libassuan.hash b/package/libassuan/libassuan.hash index 084a09848c..6bb5022d13 100644 --- a/package/libassuan/libassuan.hash +++ b/package/libassuan/libassuan.hash @@ -1,6 +1,6 @@ # From https://www.gnupg.org/download/integrity_check.html -sha1 b1e8754dbf89b3a3eb175f5df75048dbca1fce57 libassuan-2.5.6.tar.bz2 -sha256 e9fd27218d5394904e4e39788f9b1742711c3e6b41689a31aa3380bd5aa4f426 libassuan-2.5.6.tar.bz2 +sha1 b6ccd955085dac902a09871f94a3d41a7667d0c8 libassuan-2.5.7.tar.bz2 +sha256 0103081ffc27838a2e50479153ca105e873d3d65d8a9593282e9c94c7e6afb76 libassuan-2.5.7.tar.bz2 # Locally calculated sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING.LIB sha256 fc82ca8b6fdb18d4e3e85cfd8ab58d1bcd3f1b29abe782895abd91d64763f8e7 COPYING diff --git a/package/libassuan/libassuan.mk b/package/libassuan/libassuan.mk index fb95a6fd67..9553c630a2 100644 --- a/package/libassuan/libassuan.mk +++ b/package/libassuan/libassuan.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBASSUAN_VERSION = 2.5.6 +LIBASSUAN_VERSION = 2.5.7 LIBASSUAN_SITE = https://gnupg.org/ftp/gcrypt/libassuan LIBASSUAN_SOURCE = libassuan-$(LIBASSUAN_VERSION).tar.bz2 LIBASSUAN_LICENSE = LGPL-2.1+ (library), GPL-3.0 (tests, doc) From peter at korsgaard.com Wed May 1 20:15:47 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 1 May 2024 22:15:47 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/libksba: bump to version 1.6.6 Message-ID: <20240501201812.8F78E8649D@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=cd6e65ff1e9b441dda86daf800be3a7978e70653 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: Francois Perrad Signed-off-by: Yann E. MORIN (cherry picked from commit dd5d0240d241f8bf88af2c9799b9f13f0e99b515) Signed-off-by: Peter Korsgaard --- package/libksba/libksba.hash | 4 ++-- package/libksba/libksba.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/libksba/libksba.hash b/package/libksba/libksba.hash index 3ac36e19ca..e74cde2cc0 100644 --- a/package/libksba/libksba.hash +++ b/package/libksba/libksba.hash @@ -1,6 +1,6 @@ # From https://www.gnupg.org/download/integrity_check.html -sha1 0ada15ac00baa7df677a05bcb517621708f9c2f2 libksba-1.6.5.tar.bz2 -sha256 a564628c574c99287998753f98d750babd91a4e9db451f46ad140466ef2a6d16 libksba-1.6.5.tar.bz2 +sha1 1db4222e052656700021a30d517f5aa2f882da4a libksba-1.6.6.tar.bz2 +sha256 5dec033d211559338838c0c4957c73dfdc3ee86f73977d6279640c9cd08ce6a4 libksba-1.6.6.tar.bz2 # Hash for license files: sha256 f9c59ea5a5e1dfdeebcd134e6a594c21eb088cc95f6653ee99ff2e187c105380 AUTHORS diff --git a/package/libksba/libksba.mk b/package/libksba/libksba.mk index 52ad5fbeec..b87efda226 100644 --- a/package/libksba/libksba.mk +++ b/package/libksba/libksba.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBKSBA_VERSION = 1.6.5 +LIBKSBA_VERSION = 1.6.6 LIBKSBA_SOURCE = libksba-$(LIBKSBA_VERSION).tar.bz2 LIBKSBA_SITE = https://gnupg.org/ftp/gcrypt/libksba LIBKSBA_LICENSE = LGPL-3.0+ or GPL-2.0+ (library, headers), GPL-3.0+ (manual, tests, build system) From peter at korsgaard.com Wed May 1 20:16:11 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 1 May 2024 22:16:11 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/libnpth: bump to version 1.7 Message-ID: <20240501201812.9D1A98649C@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=3909492646dbd69a771c24808474f3c7fae4b90d branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: Francois Perrad Signed-off-by: Yann E. MORIN (cherry picked from commit 3ef4d24192b20bd1eb5e34c9fa2a6aa5bde91f91) Signed-off-by: Peter Korsgaard --- package/libnpth/libnpth.hash | 7 +++---- package/libnpth/libnpth.mk | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/package/libnpth/libnpth.hash b/package/libnpth/libnpth.hash index b9f72e0770..a140a23f64 100644 --- a/package/libnpth/libnpth.hash +++ b/package/libnpth/libnpth.hash @@ -1,7 +1,6 @@ -# Locally calculated after checking signature -# https://gnupg.org/ftp/gcrypt/npth/npth-1.6.tar.bz2.sig -# using key D8692123C4065DEA5E0F3AB5249B39D24F25E3B6 -sha256 1393abd9adcf0762d34798dc34fdcf4d0d22a8410721e76f1e3afcd1daa4e2d1 npth-1.6.tar.bz2 +# From https://www.gnupg.org/download/integrity_check.html +sha1 a9f7adc1b1f6707071d29bfb3338c28b995ca1ce npth-1.7.tar.bz2 +sha256 8589f56937b75ce33b28d312fccbf302b3b71ec3f3945fde6aaa74027914ad05 npth-1.7.tar.bz2 # Hash for license file: sha256 ce64d5f7b49ea6d80fdb6d4cdee6839d1a94274f7493dc797c3b55b65ec8e9ed COPYING.LIB diff --git a/package/libnpth/libnpth.mk b/package/libnpth/libnpth.mk index ecfef863f4..dc603b607f 100644 --- a/package/libnpth/libnpth.mk +++ b/package/libnpth/libnpth.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBNPTH_VERSION = 1.6 +LIBNPTH_VERSION = 1.7 LIBNPTH_SOURCE = npth-$(LIBNPTH_VERSION).tar.bz2 LIBNPTH_SITE = https://www.gnupg.org/ftp/gcrypt/npth LIBNPTH_LICENSE = LGPL-2.0+ From peter at korsgaard.com Wed May 1 20:16:49 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 1 May 2024 22:16:49 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/libressl: bump to version 3.8.4 Message-ID: <20240501201812.B69BC8649E@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=db08c123305cd22ea60b03ebf322410fd70cbbfc branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: Francois Perrad Signed-off-by: Yann E. MORIN (cherry picked from commit 9d8f9c73a2fd087dd2e8d8853a80da605fa64e4b) Signed-off-by: Peter Korsgaard --- package/libressl/libressl.hash | 2 +- package/libressl/libressl.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/libressl/libressl.hash b/package/libressl/libressl.hash index 40b49dbb82..5d3b54ea9c 100644 --- a/package/libressl/libressl.hash +++ b/package/libressl/libressl.hash @@ -1,4 +1,4 @@ # From https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/SHA256 -sha256 6d4b8d5bbb25a1f8336639e56ec5088052d43a95256697a85c4ce91323c25954 libressl-3.8.2.tar.gz +sha256 c0cef9cfe174ac366ce482f542fddb07721e7fa0caface34b49a8720fa37fe7d libressl-3.8.4.tar.gz # Locally computed sha256 5c63613f008f16a9c0025c096bbd736cecf720494d121b5c5203e0ec6e5955b1 COPYING diff --git a/package/libressl/libressl.mk b/package/libressl/libressl.mk index b72f3b38ce..1d90aa853d 100644 --- a/package/libressl/libressl.mk +++ b/package/libressl/libressl.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBRESSL_VERSION = 3.8.2 +LIBRESSL_VERSION = 3.8.4 LIBRESSL_SITE = https://ftp.openbsd.org/pub/OpenBSD/LibreSSL LIBRESSL_LICENSE = ISC (new additions), OpenSSL or SSLeay (original OpenSSL code) LIBRESSL_LICENSE_FILES = COPYING From peter at korsgaard.com Wed May 1 20:16:24 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 1 May 2024 22:16:24 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/libgpg-error: bump to version 1.48 Message-ID: <20240501201812.AA266863F7@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=1ecaf17202a9aea9d390ada5ce8b16a5e4ec2ac7 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: Francois Perrad Signed-off-by: Yann E. MORIN (cherry picked from commit 6f663219d0368f9367bdd133aad43987fff3b916) Signed-off-by: Peter Korsgaard --- package/libgpg-error/libgpg-error.hash | 5 +++-- package/libgpg-error/libgpg-error.mk | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/package/libgpg-error/libgpg-error.hash b/package/libgpg-error/libgpg-error.hash index 5c445ba0b2..3b3464592a 100644 --- a/package/libgpg-error/libgpg-error.hash +++ b/package/libgpg-error/libgpg-error.hash @@ -1,6 +1,7 @@ # From https://www.gnupg.org/download/integrity_check.html -sha1 94668233fd7bd8e7c0ec5e363134cd53c575da60 libgpg-error-1.47.tar.bz2 -sha256 9e3c670966b96ecc746c28c2c419541e3bcb787d1a73930f5e5f5e1bcbbb9bdb libgpg-error-1.47.tar.bz2 +sha1 8bdb504750b4da9e7daffa164cf1ed9900671f32 libgpg-error-1.48.tar.bz2 +sha256 89ce1ae893e122924b858de84dc4f67aae29ffa610ebf668d5aa539045663d6f libgpg-error-1.48.tar.bz2 + # Locally calculated sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING.LIB diff --git a/package/libgpg-error/libgpg-error.mk b/package/libgpg-error/libgpg-error.mk index 60e3da9de1..3dd0ec94da 100644 --- a/package/libgpg-error/libgpg-error.mk +++ b/package/libgpg-error/libgpg-error.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBGPG_ERROR_VERSION = 1.47 +LIBGPG_ERROR_VERSION = 1.48 LIBGPG_ERROR_SITE = https://www.gnupg.org/ftp/gcrypt/libgpg-error LIBGPG_ERROR_SOURCE = libgpg-error-$(LIBGPG_ERROR_VERSION).tar.bz2 LIBGPG_ERROR_LICENSE = GPL-2.0+, LGPL-2.1+ From thomas.petazzoni at bootlin.com Wed May 1 20:18:38 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:18:38 +0200 Subject: [Buildroot] [PATCH] package/busybox: refresh busybox.config In-Reply-To: <20240426-refresh-busybox-config-v1-1-c70cb5b60243@microchip.com> References: <20240426-refresh-busybox-config-v1-1-c70cb5b60243@microchip.com> Message-ID: <20240501221838.07cb2684@windsurf> Hello Nayab, +Arnout in Cc (question below). On Fri, 26 Apr 2024 14:10:58 +0530 Nayab Sayed via buildroot wrote: > Refresh busybox.config to current version (1.36.1) default values. > > Signed-off-by: Nayab Sayed > --- > When `make busybox-update-config` is executed, the config > CONFIG_UDHCPC6_DEFAULT_SCRIPT became empty. But it's updated to reuse the > value from earlier bump as mentioned in the commit d68b617993bd > (package/busybox: update to 1.36.0). Arnout: I don't really understand the reasoning in commit d68b617993bd. The commit log says: Refresh busybox.config. All configs are set to the new defaults, except for CONFIG_UDHCPC_DEFAULT_SCRIPT: for this one, reuse the script we also use for DHCPv4. This is matches the behaviour previous to the bump, where we had a single script handling both. Did you mean to say CONFIG_UDHCPC6_DEFAULT_SCRIPT instead? In the commit, you do: +CONFIG_UDHCPC6_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" But then, why do we do that? udhcpc6 is not enabled in our busybox.config. Due to this, when we refresh busybox.config, this CONFIG_UDHCPC6_DEFAULT_SCRIPT gets dropped. > @@ -336,7 +336,7 @@ CONFIG_TEST=y > CONFIG_TEST1=y > CONFIG_TEST2=y > CONFIG_FEATURE_TEST_64=y > -# CONFIG_TIMEOUT is not set > +CONFIG_TIMEOUT=y Nayab: this doesn't show up here when I refresh the file. Are you sure this isn't a custom change on your side, unrelated to the Busybox file refresh? Best regards, Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From ju.o at free.fr Wed May 1 20:27:54 2024 From: ju.o at free.fr (Julien Olivain) Date: Wed, 01 May 2024 22:27:54 +0200 Subject: [Buildroot] [PATCH 1/1] package/fwts: disable parallel build In-Reply-To: <20240501215523.5bc7ce23@windsurf> References: <20240420132251.1349622-1-ju.o@free.fr> <20240501215523.5bc7ce23@windsurf> Message-ID: Hi Thomas, On 01/05/2024 21:55, Thomas Petazzoni wrote: > On Sat, 20 Apr 2024 15:22:51 +0200 > Julien Olivain wrote: > >> fwts randomly fail to build in parallel with error: >> >> mv: cannot stat 'dtcompilerparser.tab.c': No such file or >> directory >> mv: cannot stat 'prparser.tab.c': No such file or directory >> >> This is a known upstream issue. See: >> https://github.com/fwts/fwts/issues/7 >> >> This commit workaround this issue by disabling parallel builds. >> >> Signed-off-by: Julien Olivain >> --- >> package/fwts/fwts.mk | 3 +++ >> 1 file changed, 3 insertions(+) > > Hm, I don't see any failures in the autobuilders. Did you encounter > this issue personally? Why don't we see it in the autobuilders? On my side, I see those failures on systems with with 20 cores and more on an idle system doing only the Buildroot build. Maybe the autobuilders have a different load, or less cores? > > Thomas > -- > Thomas Petazzoni, CTO, Bootlin > Embedded Linux and Kernel engineering > https://bootlin.com Best regards, Julien. From romain.naour at smile.fr Wed May 1 20:28:38 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 22:28:38 +0200 Subject: [Buildroot] [PATCH 1/2] package/qemu: fix disabling fp-bench test compilation In-Reply-To: <20240501120050.670109-1-dario.binacchi@amarulasolutions.com> References: <20240501120050.670109-1-dario.binacchi@amarulasolutions.com> Message-ID: Hello Dario, All, Le 01/05/2024 ? 14:00, Dario Binacchi a ?crit?: > With the bump to version 8.1.1, the patch that disabled the compilation > of the fp-bench test is no longer applicable, even though the package > compilation process does not report any errors in applying the patch > itself. The new patch does not disable the test by default but only if > the file fenv.h is not missing, with the hope that this approach will be > considered acceptable by the maintainer and merged upstream. > > The patch is an adaptation of the one sent upstream. Thanks for sending it upstream. > > Signed-off-by: Dario Binacchi > --- > .checkpackageignore | 2 +- > ...fp-disable-fp-bench-build-by-default.patch | 28 ----------- > ...on-t-build-fp-bench-test-if-fenv.h-i.patch | 49 +++++++++++++++++++ > 3 files changed, 50 insertions(+), 29 deletions(-) > delete mode 100644 package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch > create mode 100644 package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch > > diff --git a/.checkpackageignore b/.checkpackageignore > index 1b336ce7a3ee..c16e17cc35e4 100644 > --- a/.checkpackageignore > +++ b/.checkpackageignore > @@ -1073,7 +1073,7 @@ package/python3/0028-fix-building-on-older-distributions.patch lib_patch.Upstrea > package/python3/0029-configure.ac-fixup-CC-print-multiarch-output-for-mus.patch lib_patch.Upstream > package/python3/0030-Add-an-option-to-disable-the-berkeleydb-module.patch lib_patch.Upstream > package/python3/0031-lib-crypt-uClibc-ng-doesn-t-set-errno-when-encryptio.patch lib_patch.Upstream > -package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch lib_patch.Upstream > +package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch lib_patch.Upstream We want to remove .checkpackageignore file. All patches listed here are not yet using "Upstream:" tag. See: https://nightly.buildroot.org/manual.html#_additional_patch_documentation > package/qemu/0002-softmmu-qemu-seccomp.c-add-missing-header-for-CLONE_.patch lib_patch.Upstream > package/qextserialport/0001-Create-a-main-include-file-QExtSerialPort.patch lib_patch.Upstream > package/qextserialport/0002-Tell-qmake-to-add-a-pkgconfig-file-to-ease-usage-wit.patch lib_patch.Upstream > diff --git a/package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch b/package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch > deleted file mode 100644 > index fb7a9a69897b..000000000000 > --- a/package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch > +++ /dev/null > @@ -1,28 +0,0 @@ > -From 83d976d6d7f0357659d5daa0f01c52048a609e88 Mon Sep 17 00:00:00 2001 > -From: Romain Naour > -Date: Wed, 25 Aug 2021 21:55:53 +0200 > -Subject: [PATCH] tests/fp: disable fp-bench build by default > - > -Fixes: > -https://lists.nongnu.org/archive/html/qemu-devel/2021-03/msg00947.html > - > -Signed-off-by: Romain Naour > ---- > - tests/fp/meson.build | 1 + > - 1 file changed, 1 insertion(+) > - > -diff --git a/tests/fp/meson.build b/tests/fp/meson.build > -index 8bd0979f67..2fe019d2c6 100644 > ---- a/tests/fp/meson.build > -+++ b/tests/fp/meson.build > -@@ -640,6 +640,7 @@ fpbench = executable( > - dependencies: [qemuutil], > - include_directories: [sfinc, include_directories(tfdir)], > - c_args: fpcflags, > -+ build_by_default: false, > - ) > - > - fptestlog2 = executable( > --- > -2.35.1 > - > diff --git a/package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch b/package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch > new file mode 100644 > index 000000000000..836754ba231a > --- /dev/null > +++ b/package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch > @@ -0,0 +1,49 @@ > +From b4a692f46135af1011bf0adbfeb19abf354ca191 Mon Sep 17 00:00:00 2001 > +From: Dario Binacchi > +Date: Tue, 30 Apr 2024 09:40:55 +0200 > +Subject: [PATCH] tests/fp/meson: don't build fp-bench test if fenv.h is > + missing > + > +The fp-bench test (i. e. tests/fp/fp-bench.c) use fenv.h that is not > +always provided by the libc (uClibc). The patch disables its compilation > +in case the header is not available. > + > +The patch is based on a suggestion from Paolo Bonzini, which you can > +find at the following link. > + > +Link: https://lists.nongnu.org/archive/html/qemu-devel/2021-03/msg00492.html > +Suggested-by: Paolo Bonzini > +Signed-off-by: Dario Binacchi > +[Upstream status: https://patchwork.ozlabs.org/project/qemu-devel/patch/20240430164752.645521-1-dario.binacchi at amarulasolutions.com/] Please, use "Upstream:" tag instead (without [...]) Upstream: https://patchwork.ozlabs.org/project/qemu-devel/patch/20240430164752.645521-1-dario.binacchi at amarulasolutions.com/ Best regards, Romain > +--- > + tests/fp/meson.build | 14 ++++++++------ > + 1 file changed, 8 insertions(+), 6 deletions(-) > + > +diff --git a/tests/fp/meson.build b/tests/fp/meson.build > +index cbc17392d678..cd052667e940 100644 > +--- a/tests/fp/meson.build > ++++ b/tests/fp/meson.build > +@@ -126,12 +126,14 @@ test('fp-test-mulAdd', fptest, > + ['f16_mulAdd', 'f32_mulAdd', 'f64_mulAdd', 'f128_mulAdd'], > + suite: ['softfloat-slow', 'softfloat-ops-slow', 'slow'], timeout: 90) > + > +-executable( > +- 'fp-bench', > +- ['fp-bench.c', '../../fpu/softfloat.c'], > +- dependencies: [qemuutil, libtestfloat, libsoftfloat], > +- c_args: fpcflags, > +-) > ++if cc.has_header('fenv.h') > ++ executable( > ++ 'fp-bench', > ++ ['fp-bench.c', '../../fpu/softfloat.c'], > ++ dependencies: [qemuutil, libtestfloat, libsoftfloat], > ++ c_args: fpcflags, > ++ ) > ++endif > + > + fptestlog2 = executable( > + 'fp-test-log2', > +-- > +2.43.0 > + From romain.naour at smile.fr Wed May 1 20:29:56 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 22:29:56 +0200 Subject: [Buildroot] [PATCH 2/2] package/qemu: renumber patch In-Reply-To: <20240501120050.670109-2-dario.binacchi@amarulasolutions.com> References: <20240501120050.670109-1-dario.binacchi@amarulasolutions.com> <20240501120050.670109-2-dario.binacchi@amarulasolutions.com> Message-ID: <5ae27bc5-21b0-41c3-a931-a43678bce93d@smile.fr> Hello Dario, All, Le 01/05/2024 ? 14:00, Dario Binacchi a ?crit?: > Commit 3fa1ae00681ca ("package/qemu: add option to enable tracing") > added a patch with a wrong number. > > The patch also updates the upstream trailer of the renumbered patch to > ensure successful completion of the `utils/docker-run make check-package` > command checks. > > The patch also modifies the upstream trailer of the renumbered patch to > successfully pass the checks of the `utils/docker-run make check-package` > command. > > Signed-off-by: Dario Binacchi > --- > .checkpackageignore | 1 + > ...3-tracing-install-trace-events-file-only-if-necessary.patch} | 2 +- > 2 files changed, 2 insertions(+), 1 deletion(-) > rename package/qemu/{0004-tracing-install-trace-events-file-only-if-necessary.patch => 0003-tracing-install-trace-events-file-only-if-necessary.patch} (90%) > > diff --git a/.checkpackageignore b/.checkpackageignore > index c16e17cc35e4..e4f9139d665a 100644 > --- a/.checkpackageignore > +++ b/.checkpackageignore > @@ -1075,6 +1075,7 @@ package/python3/0030-Add-an-option-to-disable-the-berkeleydb-module.patch lib_pa > package/python3/0031-lib-crypt-uClibc-ng-doesn-t-set-errno-when-encryptio.patch lib_patch.Upstream > package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch lib_patch.Upstream > package/qemu/0002-softmmu-qemu-seccomp.c-add-missing-header-for-CLONE_.patch lib_patch.Upstream > +package/qemu/0003-tracing-install-trace-events-file-only-if-necessary.patch lib_patch.Upstream > package/qextserialport/0001-Create-a-main-include-file-QExtSerialPort.patch lib_patch.Upstream > package/qextserialport/0002-Tell-qmake-to-add-a-pkgconfig-file-to-ease-usage-wit.patch lib_patch.Upstream > package/qt5/qt5base/0001-qtbase-Fix-build-error-when-using-EGL.patch lib_patch.Upstream > diff --git a/package/qemu/0004-tracing-install-trace-events-file-only-if-necessary.patch b/package/qemu/0003-tracing-install-trace-events-file-only-if-necessary.patch > similarity index 90% > rename from package/qemu/0004-tracing-install-trace-events-file-only-if-necessary.patch > rename to package/qemu/0003-tracing-install-trace-events-file-only-if-necessary.patch > index 36bdaa4978ad..f9b82865ce16 100644 > --- a/package/qemu/0004-tracing-install-trace-events-file-only-if-necessary.patch > +++ b/package/qemu/0003-tracing-install-trace-events-file-only-if-necessary.patch > @@ -5,7 +5,7 @@ Subject: [PATCH] tracing: install trace events file only if necessary > > It is not useful when configuring with --enable-trace-backends=nop. > > -Upstream: https://patchwork.kernel.org/project/qemu-devel/patch/20230408010410.281263-1-casantos at redhat.com/ > +[Upstream status: https://patchwork.kernel.org/project/qemu-devel/patch/20230408010410.281263-1-casantos at redhat.com/] Same comment, use Upstream: to avoid the check-package warning. Best regards, Romain > Signed-off-by: Carlos Santos > Signed-off-by: Carlos Santos > --- From thomas.petazzoni at bootlin.com Wed May 1 20:06:36 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:06:36 +0200 Subject: [Buildroot] [git commit] package/acpica: bump to version 20240321 Message-ID: <20240501204616.F1151864D0@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=05a4e5d5a5a4c6f9fabcf65bb1b46840dc305e29 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master For change log since 20230628, see [1]. License file hash changed in [2], due to year update. The upstream download page also changed the published hash from sha1 to sha256. This change is reflected in the hash file. [1] https://github.com/acpica/acpica/blob/G20240322/documents/changes.txt [2] https://github.com/acpica/acpica/commit/c18edfb1abfb50521a363f811bc8e1e64213bd00 Signed-off-by: Julien Olivain Signed-off-by: Thomas Petazzoni --- package/acpica/acpica.hash | 5 ++--- package/acpica/acpica.mk | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/package/acpica/acpica.hash b/package/acpica/acpica.hash index dd9f8a1d22..4170587f3a 100644 --- a/package/acpica/acpica.hash +++ b/package/acpica/acpica.hash @@ -1,5 +1,4 @@ # From: https://www.intel.com/content/www/us/en/download/776303/acpi-component-architecture-downloads-unix-format-source-code-and-build-environment-with-an-intel-license.html -sha1 3b893fb771cf3fbd3531de3036e1a5bfc624c9d2 acpica-unix-20230628.tar.gz +sha256 54a299487925fd3e0551c95f9d5cee4f4984930273983eff67aa5cd46f8f338b acpica-unix-20240321.tar.gz # locally computed hash -sha256 86876a745e3d224dcfd222ed3de465b47559e85811df2db9820ef09a9dff5cce acpica-unix-20230628.tar.gz -sha256 905d6f191f3c29aa673602d9c66eb8df00f7e1b35064a081e0de81284ff17ee6 source/include/acpi.h +sha256 b28f54dc421531bbe269afd8c28bf6fdfd6affbe50c2831464f777ec1766d4a5 source/include/acpi.h diff --git a/package/acpica/acpica.mk b/package/acpica/acpica.mk index bbabd9de69..a3d682257d 100644 --- a/package/acpica/acpica.mk +++ b/package/acpica/acpica.mk @@ -4,9 +4,9 @@ # ################################################################################ -ACPICA_VERSION = 20230628 +ACPICA_VERSION = 20240321 ACPICA_SOURCE = acpica-unix-$(ACPICA_VERSION).tar.gz -ACPICA_SITE = https://downloadmirror.intel.com/783534 +ACPICA_SITE = https://downloadmirror.intel.com/819451 ACPICA_LICENSE = BSD-3-Clause or GPL-2.0 ACPICA_LICENSE_FILES = source/include/acpi.h ACPICA_DEPENDENCIES = host-bison host-flex From thomas.petazzoni at bootlin.com Wed May 1 20:06:38 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:06:38 +0200 Subject: [Buildroot] [git commit] support/testing: add iperf runtime test Message-ID: <20240501204617.15FF9864D4@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=6317f6c9a4107d3409530b653c5900bff17ffb6e branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Julien Olivain Signed-off-by: Thomas Petazzoni --- DEVELOPERS | 1 + support/testing/tests/package/test_iperf.py | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index c132b61f2a..6bfad23442 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -1799,6 +1799,7 @@ F: support/testing/tests/package/test_gzip.py F: support/testing/tests/package/test_highway.py F: support/testing/tests/package/test_hwloc.py F: support/testing/tests/package/test_iozone.py +F: support/testing/tests/package/test_iperf.py F: support/testing/tests/package/test_iperf3.py F: support/testing/tests/package/test_iptables.py F: support/testing/tests/package/test_jailhouse.py diff --git a/support/testing/tests/package/test_iperf.py b/support/testing/tests/package/test_iperf.py new file mode 100644 index 0000000000..31f04d9896 --- /dev/null +++ b/support/testing/tests/package/test_iperf.py @@ -0,0 +1,23 @@ +import os + +import infra.basetest + + +class TestIperf(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_IPERF=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + self.assertRunOk("iperf --version") + self.assertRunOk("iperf -s -D") + self.assertRunOk("iperf -c 127.0.0.1 -t 3") From thomas.petazzoni at bootlin.com Wed May 1 20:06:40 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:06:40 +0200 Subject: [Buildroot] [git commit] package/fwts: update _SITE url to use https Message-ID: <20240501204617.3412E864D1@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=2aa3a23bbe755ef73af7dfbb65dd8ec60c8c1865 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master The http URL redirects to https. This commit updates this URL to directly use https. Signed-off-by: Julien Olivain Signed-off-by: Thomas Petazzoni --- package/fwts/fwts.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/fwts/fwts.mk b/package/fwts/fwts.mk index f06609777d..a3f91ee495 100644 --- a/package/fwts/fwts.mk +++ b/package/fwts/fwts.mk @@ -6,7 +6,7 @@ FWTS_VERSION = 23.07.00 FWTS_SOURCE = fwts-V$(FWTS_VERSION).tar.gz -FWTS_SITE = http://fwts.ubuntu.com/release +FWTS_SITE = https://fwts.ubuntu.com/release FWTS_STRIP_COMPONENTS = 0 FWTS_LICENSE = GPL-2.0, LGPL-2.1, Custom FWTS_LICENSE_FILES = debian/copyright From thomas.petazzoni at bootlin.com Wed May 1 20:06:41 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:06:41 +0200 Subject: [Buildroot] [git commit] package/fwts: bump to version 24.03.00 Message-ID: <20240501204617.4133686482@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=17a04da7d4fdfe44547e9b50a62c2f4af49e9ae8 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master For release notes since version 23.07.00, see: https://wiki.ubuntu.com/FirmwareTestSuite/ReleaseNotes/24.03.00 https://wiki.ubuntu.com/FirmwareTestSuite/ReleaseNotes/24.01.00 https://wiki.ubuntu.com/FirmwareTestSuite/ReleaseNotes/23.11.00 License file hash changed, due to year update in: https://github.com/fwts/fwts/commit/cb2014e17f3fab0b2a2921e59e6b7acaa089cffe Signed-off-by: Julien Olivain Signed-off-by: Thomas Petazzoni --- package/fwts/fwts.hash | 4 ++-- package/fwts/fwts.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/fwts/fwts.hash b/package/fwts/fwts.hash index 8525d47ecb..0c0dd58c15 100644 --- a/package/fwts/fwts.hash +++ b/package/fwts/fwts.hash @@ -1,5 +1,5 @@ # Hash from: http://fwts.ubuntu.com/release/SHA256SUMS -sha256 a15e11c42856e9dfcf7ac23ed370618d2777eb996dd7843accf12d45b21b551c fwts-V23.07.00.tar.gz +sha256 d7f2642b1ec3697be798409decd6593d52bb1438f0d2dc697cbc85f52d19b41e fwts-V24.03.00.tar.gz # Hash for license file -sha256 b9e44b1f9f65178e037a59a31b051b51dbd6a531d27c8775d3438a6ce53fc874 debian/copyright +sha256 3cd2c5d12f024ff2aa203e37d7e972c4d5ab7bf1a65e3e09aebccf71e64b525b debian/copyright diff --git a/package/fwts/fwts.mk b/package/fwts/fwts.mk index a3f91ee495..0692121421 100644 --- a/package/fwts/fwts.mk +++ b/package/fwts/fwts.mk @@ -4,7 +4,7 @@ # ################################################################################ -FWTS_VERSION = 23.07.00 +FWTS_VERSION = 24.03.00 FWTS_SOURCE = fwts-V$(FWTS_VERSION).tar.gz FWTS_SITE = https://fwts.ubuntu.com/release FWTS_STRIP_COMPONENTS = 0 From thomas.petazzoni at bootlin.com Wed May 1 20:06:37 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:06:37 +0200 Subject: [Buildroot] [git commit] package/iperf: bump to version 2.2.0 Message-ID: <20240501204617.086F0864D1@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=4d9a3f1a32e743fd5bb267442be98b4e0a2d0e14 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master For release note, see after the file list at: https://sourceforge.net/projects/iperf2/files/ Note: the md5 file hash is also added, because it is published on download page. Signed-off-by: Julien Olivain Signed-off-by: Thomas Petazzoni --- package/iperf/iperf.hash | 5 +++-- package/iperf/iperf.mk | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/package/iperf/iperf.hash b/package/iperf/iperf.hash index eb6088649d..e4d40d5940 100644 --- a/package/iperf/iperf.hash +++ b/package/iperf/iperf.hash @@ -1,6 +1,7 @@ # From https://sourceforge.net/projects/iperf2/files/ -sha1 e7b669c2e8747df95b59956e83ff53d3971d7a5f iperf-2.1.9.tar.gz +md5 34bb6ac1abeb801bf3f729794dc5ac36 iperf-2.2.0.tar.gz +sha1 bcbd101ab36f3faacaab1a765a96806ca49a1495 iperf-2.2.0.tar.gz # Locally computed: -sha256 5c0771aab00ef14520013aef01675977816e23bb8f5d9fde016f90eb2f1be788 iperf-2.1.9.tar.gz +sha256 16810a9575e4c6dd65e4a18ab5df3cdac6730b3c832cf080a8990f132f68364a iperf-2.2.0.tar.gz sha256 5f9f5c4feca3347c3b3c0ada8b16b4e6b698aac4e6f016a24adf61a5915336d1 COPYING diff --git a/package/iperf/iperf.mk b/package/iperf/iperf.mk index 1347f766d1..303614668a 100644 --- a/package/iperf/iperf.mk +++ b/package/iperf/iperf.mk @@ -4,7 +4,7 @@ # ################################################################################ -IPERF_VERSION = 2.1.9 +IPERF_VERSION = 2.2.0 IPERF_SITE = https://downloads.sourceforge.net/project/iperf2 IPERF_LICENSE = MIT-like IPERF_LICENSE_FILES = COPYING From thomas.petazzoni at bootlin.com Wed May 1 20:06:39 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:06:39 +0200 Subject: [Buildroot] [git commit] support/testing: add fwts runtime test Message-ID: <20240501204617.26036864D0@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=7c1faf997f868586a40a9cb6f03166d85a67b8f8 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Julien Olivain Signed-off-by: Thomas Petazzoni --- DEVELOPERS | 1 + support/testing/tests/package/test_fwts.py | 67 ++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index 6bfad23442..726641b513 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -1787,6 +1787,7 @@ F: support/testing/tests/package/test_file/ F: support/testing/tests/package/test_fluidsynth.py F: support/testing/tests/package/test_fluidsynth/ F: support/testing/tests/package/test_fping.py +F: support/testing/tests/package/test_fwts.py F: support/testing/tests/package/test_gawk.py F: support/testing/tests/package/test_ghostscript.py F: support/testing/tests/package/test_ghostscript/ diff --git a/support/testing/tests/package/test_fwts.py b/support/testing/tests/package/test_fwts.py new file mode 100644 index 0000000000..ef792136c2 --- /dev/null +++ b/support/testing/tests/package/test_fwts.py @@ -0,0 +1,67 @@ +import os + +import infra.basetest + + +class TestFwts(infra.basetest.BRTest): + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_4=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_TARGET_ROOTFS_EXT2_SIZE="128M" + BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/aarch64-sbsa/assemble-flash-images support/scripts/genimage.sh" + BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/qemu/aarch64-sbsa/genimage.cfg" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.28" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y + BR2_TARGET_EDK2=y + BR2_TARGET_EDK2_PLATFORM_QEMU_SBSA=y + BR2_TARGET_GRUB2=y + BR2_TARGET_GRUB2_ARM64_EFI=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.9" + BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="qemu_sbsa" + BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y + BR2_PACKAGE_FWTS=y + BR2_PACKAGE_FWTS_EFI_RUNTIME_MODULE=y + BR2_PACKAGE_HOST_GENIMAGE=y + BR2_PACKAGE_HOST_DOSFSTOOLS=y + BR2_PACKAGE_HOST_MTOOLS=y + """ + + def test_run(self): + hda = os.path.join(self.builddir, "images", "disk.img") + flash0 = os.path.join(self.builddir, "images", "SBSA_FLASH0.fd") + flash1 = os.path.join(self.builddir, "images", "SBSA_FLASH1.fd") + self.emulator.boot(arch="aarch64", + options=["-M", "sbsa-ref", + "-cpu", "cortex-a57", + "-m", "512M", + "-pflash", flash0, + "-pflash", flash1, + "-hda", hda]) + self.emulator.login() + + # Check the program can execute. + self.assertRunOk("fwts --version") + + # We run a simple UEFI runtime service variable interface test + # suite. Those tests are using the fwts efi_runtime kernel + # module. + self.assertRunOk("fwts -q uefirtvariable", timeout=30) + + # The previous fwts invocation is expected to have created a + # "results.log" report. We check the file exists and contains + # a known header string. + expected_str = "Results generated by fwts:" + cmd = f"grep -F '{expected_str}' results.log" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + self.assertTrue(out[0].startswith(expected_str)) From thomas.petazzoni at bootlin.com Wed May 1 20:21:16 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:21:16 +0200 Subject: [Buildroot] [git commit] package/{bluez5_utils, bluez5_utils-headers}: bump to version 5.75 Message-ID: <20240501204617.5A219864D4@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=b890206876588ed0d16187abf49d35a45177cc3d branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Bump to version 5.75 containing various fixes. Added a patch to fix build with disabled CUPS (failing since 5.73, waiting to be reviewed and merged) and enabled autoreconf which is needed for that patch. Changelog: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/ChangeLog Signed-off-by: Jan ??erm??k Signed-off-by: Thomas Petazzoni --- .../bluez5_utils-headers/bluez5_utils-headers.mk | 2 +- .../0001-configure.ac-Fix-disable-cups.patch | 41 ++++++++++++++++++++++ package/bluez5_utils/bluez5_utils.hash | 2 +- package/bluez5_utils/bluez5_utils.mk | 4 ++- 4 files changed, 46 insertions(+), 3 deletions(-) diff --git a/package/bluez5_utils-headers/bluez5_utils-headers.mk b/package/bluez5_utils-headers/bluez5_utils-headers.mk index 74b385e110..2f07a7b422 100644 --- a/package/bluez5_utils-headers/bluez5_utils-headers.mk +++ b/package/bluez5_utils-headers/bluez5_utils-headers.mk @@ -5,7 +5,7 @@ ################################################################################ # Keep the version and patches in sync with bluez5_utils -BLUEZ5_UTILS_HEADERS_VERSION = 5.72 +BLUEZ5_UTILS_HEADERS_VERSION = 5.75 BLUEZ5_UTILS_HEADERS_SOURCE = bluez-$(BLUEZ5_UTILS_VERSION).tar.xz BLUEZ5_UTILS_HEADERS_SITE = $(BR2_KERNEL_MIRROR)/linux/bluetooth BLUEZ5_UTILS_HEADERS_DL_SUBDIR = bluez5_utils diff --git a/package/bluez5_utils/0001-configure.ac-Fix-disable-cups.patch b/package/bluez5_utils/0001-configure.ac-Fix-disable-cups.patch new file mode 100644 index 0000000000..2c6c46f6fd --- /dev/null +++ b/package/bluez5_utils/0001-configure.ac-Fix-disable-cups.patch @@ -0,0 +1,41 @@ +From cb0de49bc6f8a6bf8f01a24599b499aa4bf18032 Mon Sep 17 00:00:00 2001 +From: Lars Wendler +Date: Tue, 16 Apr 2024 07:26:04 +0200 +Subject: [PATCH] configure.ac: Fix --disable-cups +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +or else we get: + configure: error: conditional "CUPS_SERVERBIN" was never defined. + Usually this means the macro was only invoked conditionally. + +Fixes: https://github.com/bluez/bluez/issues/773 + +Upstream: https://patchwork.kernel.org/project/bluetooth/list/?series=844910 +Signed-off-by: Jan ??erm??k +--- + configure.ac | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 9dea70d..dbba759 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -249,12 +249,12 @@ AM_CONDITIONAL(CUPS, test "${enable_cups}" != "no") + if (test "${enable_cups}" != "no"); then + AC_MSG_CHECKING([cups directory]) + cups_serverbin=`$PKG_CONFIG cups --variable=cups_serverbin` +- AM_CONDITIONAL(CUPS_SERVERBIN, test "${cups_serverbin}" != "") +- if (test "${cups_serverbin}" != ""); then +- AC_SUBST(CUPS_SERVERBIN, ${cups_serverbin}) +- fi + AC_MSG_RESULT([${cups_serverbin}]) + fi ++AM_CONDITIONAL(CUPS_SERVERBIN, test "${cups_serverbin}" != "") ++AS_IF([test "${cups_serverbin}" != ""],[ ++ AC_SUBST(CUPS_SERVERBIN, ${cups_serverbin}) ++]) + + AC_ARG_ENABLE(mesh, AS_HELP_STRING([--enable-mesh], + [enable Mesh profile support]), [enable_mesh=${enableval}]) diff --git a/package/bluez5_utils/bluez5_utils.hash b/package/bluez5_utils/bluez5_utils.hash index 46680cf3c9..9cc19f87dd 100644 --- a/package/bluez5_utils/bluez5_utils.hash +++ b/package/bluez5_utils/bluez5_utils.hash @@ -1,5 +1,5 @@ # From https://www.kernel.org/pub/linux/bluetooth/sha256sums.asc: -sha256 499d7fa345a996c1bb650f5c6749e1d929111fa6ece0be0e98687fee6124536e bluez-5.72.tar.xz +sha256 988cb3c4551f6e3a667708a578f5ca9f93fc896508f98f08709be4f8ab033c2f bluez-5.75.tar.xz # Locally computed sha256 b499eddebda05a8859e32b820a64577d91f1de2b52efa2a1575a2cb4000bc259 COPYING sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING.LIB diff --git a/package/bluez5_utils/bluez5_utils.mk b/package/bluez5_utils/bluez5_utils.mk index 3ccb63948c..26f0f4afd4 100644 --- a/package/bluez5_utils/bluez5_utils.mk +++ b/package/bluez5_utils/bluez5_utils.mk @@ -5,9 +5,11 @@ ################################################################################ # Keep the version and patches in sync with bluez5_utils-headers -BLUEZ5_UTILS_VERSION = 5.72 +BLUEZ5_UTILS_VERSION = 5.75 BLUEZ5_UTILS_SOURCE = bluez-$(BLUEZ5_UTILS_VERSION).tar.xz BLUEZ5_UTILS_SITE = $(BR2_KERNEL_MIRROR)/linux/bluetooth +# 0001-configure.ac-Fix-disable-cups.patch +BLUEZ5_UTILS_AUTORECONF = YES BLUEZ5_UTILS_INSTALL_STAGING = YES BLUEZ5_UTILS_LICENSE = GPL-2.0+, LGPL-2.1+ BLUEZ5_UTILS_LICENSE_FILES = COPYING COPYING.LIB From thomas.petazzoni at bootlin.com Wed May 1 20:46:26 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:46:26 +0200 Subject: [Buildroot] [PATCH] package/{bluez5_utils, bluez5_utils-headers}: bump to version 5.75 In-Reply-To: <20240426071443.2565112-1-sairon@sairon.cz> References: <20240426071443.2565112-1-sairon@sairon.cz> Message-ID: <20240501224626.1ae78fa5@windsurf> On Fri, 26 Apr 2024 09:14:43 +0200 Jan ?erm?k wrote: > Bump to version 5.75 containing various fixes. Added a patch to fix > build with disabled CUPS (failing since 5.73, waiting to be reviewed and > merged) and enabled autoreconf which is needed for that patch. > > Changelog: > https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/ChangeLog > > Signed-off-by: Jan ?erm?k > --- > .../bluez5_utils-headers.mk | 2 +- > .../0001-configure.ac-Fix-disable-cups.patch | 41 +++++++++++++++++++ > package/bluez5_utils/bluez5_utils.hash | 2 +- > package/bluez5_utils/bluez5_utils.mk | 4 +- > 4 files changed, 46 insertions(+), 3 deletions(-) > create mode 100644 package/bluez5_utils/0001-configure.ac-Fix-disable-cups.patch Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Wed May 1 20:47:05 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:47:05 +0200 Subject: [Buildroot] [PATCH] package/linux-pam: bump to version 1.6.1 In-Reply-To: <20240426071304.2564147-1-sairon@sairon.cz> References: <20240426071304.2564147-1-sairon@sairon.cz> Message-ID: <20240501224705.29e35b6f@windsurf> On Fri, 26 Apr 2024 09:13:03 +0200 Jan ?erm?k wrote: > Bump to latest version, fixing couple of bugs. Remove patch already > included in this release. > > https://github.com/linux-pam/linux-pam/releases/tag/v1.6.1 > > Signed-off-by: Jan ?erm?k > --- > .../0001-pam_namespace-include-stdint-h.patch | 42 ------------------- > package/linux-pam/linux-pam.hash | 4 +- > package/linux-pam/linux-pam.mk | 2 +- > 3 files changed, 3 insertions(+), 45 deletions(-) > delete mode 100644 package/linux-pam/0001-pam_namespace-include-stdint-h.patch Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Wed May 1 20:47:38 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:47:38 +0200 Subject: [Buildroot] [PATCH] package/spdlog: bump to version 1.14.0 In-Reply-To: <20240426113540.534475-1-buildroot@heine.tech> References: <20240426113540.534475-1-buildroot@heine.tech> Message-ID: <20240501224738.5f8a693d@windsurf> On Fri, 26 Apr 2024 13:35:38 +0200 Michael Nosthoff via buildroot wrote: > Signed-off-by: Michael Nosthoff > --- > package/spdlog/spdlog.hash | 2 +- > package/spdlog/spdlog.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Wed May 1 20:47:18 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:47:18 +0200 Subject: [Buildroot] [git commit] package/spdlog: bump to version 1.14.0 Message-ID: <20240501204801.16BEB864CF@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=36841b5f37105a82fceeeda3312ec77323998f43 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Michael Nosthoff Signed-off-by: Thomas Petazzoni --- package/spdlog/spdlog.hash | 2 +- package/spdlog/spdlog.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/spdlog/spdlog.hash b/package/spdlog/spdlog.hash index 3dbe43ac2d..7a0f442ab0 100644 --- a/package/spdlog/spdlog.hash +++ b/package/spdlog/spdlog.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 534f2ee1a4dcbeb22249856edfb2be76a1cf4f708a20b0ac2ed090ee24cfdbc9 spdlog-1.13.0.tar.gz +sha256 429a6b73ade8285cb21f83bacf89e2821dd1720ea7faa3cb518ffe04b4e00efc spdlog-1.14.0.tar.gz sha256 4ccecab18d1ff0b61174fe3d6c430541625d3ddb865b0d5887db296f883c76e7 LICENSE diff --git a/package/spdlog/spdlog.mk b/package/spdlog/spdlog.mk index b45ae0a17d..c435633f41 100644 --- a/package/spdlog/spdlog.mk +++ b/package/spdlog/spdlog.mk @@ -4,7 +4,7 @@ # ################################################################################ -SPDLOG_VERSION = 1.13.0 +SPDLOG_VERSION = 1.14.0 SPDLOG_SITE = $(call github,gabime,spdlog,v$(SPDLOG_VERSION)) SPDLOG_LICENSE = MIT SPDLOG_LICENSE_FILES = LICENSE From thomas.petazzoni at bootlin.com Wed May 1 20:46:39 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:46:39 +0200 Subject: [Buildroot] [git commit] package/linux-pam: bump to version 1.6.1 Message-ID: <20240501204801.0C4A7864DF@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=0d394c39b8f26ba6e65771cd4afdcc4fac0ed0e8 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Bump to latest version, fixing couple of bugs. Remove patch already included in this release. https://github.com/linux-pam/linux-pam/releases/tag/v1.6.1 Signed-off-by: Jan ??erm??k Signed-off-by: Thomas Petazzoni --- .../0001-pam_namespace-include-stdint-h.patch | 42 ---------------------- package/linux-pam/linux-pam.hash | 4 +-- package/linux-pam/linux-pam.mk | 2 +- 3 files changed, 3 insertions(+), 45 deletions(-) diff --git a/package/linux-pam/0001-pam_namespace-include-stdint-h.patch b/package/linux-pam/0001-pam_namespace-include-stdint-h.patch deleted file mode 100644 index 5eda619505..0000000000 --- a/package/linux-pam/0001-pam_namespace-include-stdint-h.patch +++ /dev/null @@ -1,42 +0,0 @@ -From cc9d40b7cdbd3e15ccaa324a0dda1680ef9dea13 Mon Sep 17 00:00:00 2001 -From: Jacob Heider -Date: Wed, 17 Jan 2024 11:49:26 -0500 -Subject: [PATCH] pam_namespace: include stdint.h - -pam_namespace.c makes use of SIZE_MAX but doesn't include stdint.h, -resulting in the following build failures on 1.6.0: - - pam_namespace.c: In function 'process_line': - pam_namespace.c:649:41: error: 'SIZE_MAX' undeclared (first use in this function) - 649 | if (count > UINT_MAX || count > SIZE_MAX / sizeof(uid_t)) { - | ^~~~~~~~ - pam_namespace.c:41:1: note: 'SIZE_MAX' is defined in header ''; did you forget to '#include '? - 40 | #include "argv_parse.h" - +++ |+#include - 41 | - pam_namespace.c:649:41: note: each undeclared identifier is reported only once for each function it appears in - 649 | if (count > UINT_MAX || count > SIZE_MAX / sizeof(uid_t)) { - | ^~~~~~~~ - -Fixes: v1.6.0~100 ("pam_namespace: validate amount of uids in config") -Resolves: https://github.com/linux-pam/linux-pam/issues/733 - -Upstream: https://github.com/linux-pam/linux-pam/commit/cc9d40b7cdbd3e15ccaa324a0dda1680ef9dea13 -Signed-off-by: Fabrice Fontaine ---- - modules/pam_namespace/pam_namespace.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/modules/pam_namespace/pam_namespace.c b/modules/pam_namespace/pam_namespace.c -index f72d67189..b16731c22 100644 ---- a/modules/pam_namespace/pam_namespace.c -+++ b/modules/pam_namespace/pam_namespace.c -@@ -34,6 +34,8 @@ - - #define _ATFILE_SOURCE - -+#include "config.h" -+#include - #include "pam_cc_compat.h" - #include "pam_inline.h" - #include "pam_namespace.h" diff --git a/package/linux-pam/linux-pam.hash b/package/linux-pam/linux-pam.hash index cd882715cb..353613e6e6 100644 --- a/package/linux-pam/linux-pam.hash +++ b/package/linux-pam/linux-pam.hash @@ -1,6 +1,6 @@ # Locally computed hashes after checking signature at -# https://github.com/linux-pam/linux-pam/releases/download/v1.6.0/Linux-PAM-1.6.0.tar.xz.asc +# https://github.com/linux-pam/linux-pam/releases/download/v1.6.1/Linux-PAM-1.6.1.tar.xz.asc # signed with the key 8C6BFD92EE0F42EDF91A6A736D1A7F052E5924BB -sha256 fff4a34e5bbee77e2e8f1992f27631e2329bcbf8a0563ddeb5c3389b4e3169ad Linux-PAM-1.6.0.tar.xz +sha256 f8923c740159052d719dbfc2a2f81942d68dd34fcaf61c706a02c9b80feeef8e Linux-PAM-1.6.1.tar.xz # Locally computed sha256 133d98e7a2ab3ffd330b4debb0bfc10fea21e4b2b5a5b09de2e924293be5ff08 Copyright diff --git a/package/linux-pam/linux-pam.mk b/package/linux-pam/linux-pam.mk index 89a46e81df..a205d67c54 100644 --- a/package/linux-pam/linux-pam.mk +++ b/package/linux-pam/linux-pam.mk @@ -4,7 +4,7 @@ # ################################################################################ -LINUX_PAM_VERSION = 1.6.0 +LINUX_PAM_VERSION = 1.6.1 LINUX_PAM_SOURCE = Linux-PAM-$(LINUX_PAM_VERSION).tar.xz LINUX_PAM_SITE = https://github.com/linux-pam/linux-pam/releases/download/v$(LINUX_PAM_VERSION) LINUX_PAM_INSTALL_STAGING = YES From arnout at mind.be Wed May 1 20:53:46 2024 From: arnout at mind.be (Arnout Vandecappelle) Date: Wed, 1 May 2024 22:53:46 +0200 Subject: [Buildroot] [PATCH 06/15 v2] package/luajit: use the git download for known-reproducible tarball In-Reply-To: <41552f4a1dc68983bb3edfd6a2b466581f5f91e5.1714243078.git.yann.morin.1998@free.fr> References: <41552f4a1dc68983bb3edfd6a2b466581f5f91e5.1714243078.git.yann.morin.1998@free.fr> Message-ID: On 27/04/2024 20:37, Yann E. MORIN wrote: > Since version 2.1, LuaJIT follows a rolling-release scheme, which means > that any commit is as good as any other; LuaJIT uses the comitter's UNIX > timestamp as its semver patch level. It uses the git-attribute > export-subst for the .relver file that contains the %ct placeholderfor > git-archive to expand it. > > We have had various instances of GitHub changing the way it generates > archives on the fly, and although it is hard to foresee a way the UNIX > timestamp could change (it's clearly defined as the number of seconds > elapsed since 1970-01-01T00:00:00Z), it's not inconceivable that GitHub > may decide to no longer expand the export-subst attributes in the > future... Although I don't really disagree with the principle, I think we should instead stop using github-generated tarballs entirely. Or, put differently: I think the risk of a github-generated tarball to change hash for _other_ reasons is much higher than that it would stop expanding export-subst. So I will not apply this patch of the series. Regards, Arnout > > To avoid any confusion, and to be future-proof, switch over to using the > git download helper, which now has support for handling export-subst in > a reproducible way. Drop the post-extract hooks as they are not needed. > > Signed-off-by: Yann E. MORIN > Cc: Francois Perrad > Cc: Thomas Petazzoni > --- > package/luajit/luajit.hash | 2 +- > package/luajit/luajit.mk | 3 ++- > 2 files changed, 3 insertions(+), 2 deletions(-) > > diff --git a/package/luajit/luajit.hash b/package/luajit/luajit.hash > index 578bb7a3e2..da243d8c2a 100644 > --- a/package/luajit/luajit.hash > +++ b/package/luajit/luajit.hash > @@ -1,5 +1,5 @@ > # Locally calculated > -sha256 b518721280390e4cec1af30f6819d86756ce4234d82410a55a4e121855f64e08 luajit-41fb94defa8f830ce69a8122b03f6ac3216d392a.tar.gz > +sha256 df50bfe78919691ce9a630c8312386a8cb6ca49f327922a833e77656e82ef6c6 luajit-41fb94defa8f830ce69a8122b03f6ac3216d392a-br2.tar.gz > > # Locally calculated > sha256 1130331ac861a4b4520e9c8ad0814efdc6f1e79ea55ea9c460c73733d13ccb5f COPYRIGHT > diff --git a/package/luajit/luajit.mk b/package/luajit/luajit.mk > index 693e22630b..6b1c6b3386 100644 > --- a/package/luajit/luajit.mk > +++ b/package/luajit/luajit.mk > @@ -5,7 +5,8 @@ > ################################################################################ > > LUAJIT_VERSION = 41fb94defa8f830ce69a8122b03f6ac3216d392a > -LUAJIT_SITE = $(call github,LuaJIT,LuaJIT,$(LUAJIT_VERSION)) > +LUAJIT_SITE = https://github.com/LuaJIT/LuaJIT > +LUAJIT_SITE_METHOD = git > LUAJIT_LICENSE = MIT > LUAJIT_LICENSE_FILES = COPYRIGHT > LUAJIT_CPE_ID_VENDOR = luajit From thomas.petazzoni at bootlin.com Wed May 1 20:49:45 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:49:45 +0200 Subject: [Buildroot] [git commit] package/dropbear: bump to version 2024.85 Message-ID: <20240501205444.77338864E7@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=2fbffc610ef9d54b38fefd171fde93de136f7477 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Francois Perrad Signed-off-by: Thomas Petazzoni --- package/dropbear/dropbear.hash | 2 +- package/dropbear/dropbear.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/dropbear/dropbear.hash b/package/dropbear/dropbear.hash index 675715ddec..a901656e5d 100644 --- a/package/dropbear/dropbear.hash +++ b/package/dropbear/dropbear.hash @@ -1,5 +1,5 @@ # From https://matt.ucc.asn.au/dropbear/releases/SHA256SUM.asc -sha256 16e22b66b333d6b7e504c43679d04ed6ca30f2838db40a21f935c850dfc01009 dropbear-2024.84.tar.bz2 +sha256 86b036c433a69d89ce51ebae335d65c47738ccf90d13e5eb0fea832e556da502 dropbear-2024.85.tar.bz2 # License file, locally computed sha256 a99ce657d790b761c132ee7e0de18edb437ae6361e536d991c6a12f36e770445 LICENSE diff --git a/package/dropbear/dropbear.mk b/package/dropbear/dropbear.mk index 1571c5d957..d9504c5525 100644 --- a/package/dropbear/dropbear.mk +++ b/package/dropbear/dropbear.mk @@ -4,7 +4,7 @@ # ################################################################################ -DROPBEAR_VERSION = 2024.84 +DROPBEAR_VERSION = 2024.85 DROPBEAR_SITE = https://matt.ucc.asn.au/dropbear/releases DROPBEAR_SOURCE = dropbear-$(DROPBEAR_VERSION).tar.bz2 DROPBEAR_LICENSE = MIT, BSD-2-Clause, Public domain From thomas.petazzoni at bootlin.com Wed May 1 20:54:52 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:54:52 +0200 Subject: [Buildroot] [PATCH] package/dropbear: bump to version 2024.85 In-Reply-To: <20240426180217.20885-1-francois.perrad@gadz.org> References: <20240426180217.20885-1-francois.perrad@gadz.org> Message-ID: <20240501225452.790225c7@windsurf> On Fri, 26 Apr 2024 20:02:17 +0200 Francois Perrad wrote: > Signed-off-by: Francois Perrad > --- > package/dropbear/dropbear.hash | 2 +- > package/dropbear/dropbear.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Wed May 1 20:58:53 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:58:53 +0200 Subject: [Buildroot] [git commit] package/bats-core: bump to version 1.11.0 Message-ID: <20240501210602.CD0EB864F2@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=804abf536e5f8ab86160cc4f2066b42eeeb4ec39 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master https://github.com/bats-core/bats-core/releases/tag/v1.11.0 https://github.com/bats-core/bats-core/releases/tag/v1.10.0 https://github.com/bats-core/bats-core/releases/tag/v1.9.0 Signed-off-by: Brandon Maier Signed-off-by: Thomas Petazzoni --- package/bats-core/bats-core.hash | 2 +- package/bats-core/bats-core.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/bats-core/bats-core.hash b/package/bats-core/bats-core.hash index 81c0229af4..25b2b60339 100644 --- a/package/bats-core/bats-core.hash +++ b/package/bats-core/bats-core.hash @@ -1,5 +1,5 @@ # Locally calculated -sha256 0f2df311a536e625a72bff64c838e67c7b5032e6ea9edcdf32758303062b2f3b bats-core-1.8.2.tar.gz +sha256 aeff09fdc8b0c88b3087c99de00cf549356d7a2f6a69e3fcec5e0e861d2f9063 bats-core-1.11.0.tar.gz # License files sha256 55074b2b3b87809105034e1468e59076554d76a80c67bcc592000cc3d929852d LICENSE.md diff --git a/package/bats-core/bats-core.mk b/package/bats-core/bats-core.mk index e172445930..716b167c00 100644 --- a/package/bats-core/bats-core.mk +++ b/package/bats-core/bats-core.mk @@ -4,7 +4,7 @@ # ################################################################################ -BATS_CORE_VERSION = 1.8.2 +BATS_CORE_VERSION = 1.11.0 BATS_CORE_SITE = $(call github,bats-core,bats-core,v$(BATS_CORE_VERSION)) BATS_CORE_LICENSE = MIT BATS_CORE_LICENSE_FILES = LICENSE.md From romain.naour at smile.fr Wed May 1 21:07:30 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 23:07:30 +0200 Subject: [Buildroot] [git commit] DEVELOPERS: add myself for Armadeus boards Message-ID: <20240501210905.06691864F5@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=74c0cf2152415ab99c93d4d03acd7bfec39fd511 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: S??bastien Szymanski Signed-off-by: Romain Naour --- DEVELOPERS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index 726641b513..11ffe17f92 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2778,6 +2778,8 @@ F: support/testing/tests/package/sample_nu.nu F: support/testing/tests/package/test_nu.py N: S??bastien Szymanski +F: board/armadeus/ +F: configs/armadeus* F: package/mmc-utils/ F: package/python-flask-jsonrpc/ F: package/python-flask-login/ From romain.naour at smile.fr Wed May 1 21:09:33 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 23:09:33 +0200 Subject: [Buildroot] [PATCH 1/1] DEVELOPERS: add myself for Armadeus boards In-Reply-To: <20240418133035.30749-1-sebastien.szymanski@armadeus.com> References: <20240418133035.30749-1-sebastien.szymanski@armadeus.com> Message-ID: <2a3bb6ef-f536-4257-b5bf-382e0882f945@smile.fr> Hello S?bastien, Le 18/04/2024 ? 15:30, S?bastien Szymanski a ?crit?: > Signed-off-by: S?bastien Szymanski > --- > DEVELOPERS | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/DEVELOPERS b/DEVELOPERS > index 399b2931ff3d..7a1fa43f4b0d 100644 > --- a/DEVELOPERS > +++ b/DEVELOPERS > @@ -2777,6 +2777,8 @@ F: support/testing/tests/package/sample_nu.nu > F: support/testing/tests/package/test_nu.py > > N: S?bastien Szymanski > +F: board/armadeus/ > +F: configs/armadeus* > F: package/mmc-utils/ > F: package/python-flask-jsonrpc/ > F: package/python-flask-login/ Applied to master, thanks. Best regards, Romain From thomas.petazzoni at bootlin.com Wed May 1 21:09:35 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 23:09:35 +0200 Subject: [Buildroot] [PATCH v2 1/4] package/bats-core: bump to version 1.11.0 In-Reply-To: <20240425195816.2758964-1-brandon.maier@collins.com> References: <20240412210850.17265-1-brandon.maier@collins.com> <20240425195816.2758964-1-brandon.maier@collins.com> Message-ID: <20240501230935.360d87e6@windsurf> On Thu, 25 Apr 2024 19:58:13 +0000 Brandon Maier via buildroot wrote: > https://github.com/bats-core/bats-core/releases/tag/v1.11.0 > https://github.com/bats-core/bats-core/releases/tag/v1.10.0 > https://github.com/bats-core/bats-core/releases/tag/v1.9.0 > > Signed-off-by: Brandon Maier > --- > package/bats-core/bats-core.hash | 2 +- > package/bats-core/bats-core.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From romain.naour at smile.fr Wed May 1 21:12:43 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 23:12:43 +0200 Subject: [Buildroot] [PATCH] DEVELOPERS: remove Sebastian Weyer Message-ID: <20240501211300.1590881-1-romain.naour@smile.fr> Sebastian email address at Smile is bouncing, so drop it from the DEVELOPERS file. Signed-off-by: Romain Naour --- DEVELOPERS | 8 -------- 1 file changed, 8 deletions(-) diff --git a/DEVELOPERS b/DEVELOPERS index 11ffe17f92..5d198567d8 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2769,14 +2769,6 @@ F: support/misc/toolchainfile.cmake.in N: Sam Voss F: package/ripgrep/ -N: Sebastian Weyer -F: package/amlogic-boot-fip/ -F: package/nushell/ -F: package/rust-bindgen/ -F: package/spirv-headers/ -F: support/testing/tests/package/sample_nu.nu -F: support/testing/tests/package/test_nu.py - N: S?bastien Szymanski F: board/armadeus/ F: configs/armadeus* -- 2.44.0 From arnout at mind.be Wed May 1 21:13:38 2024 From: arnout at mind.be (Arnout Vandecappelle) Date: Wed, 1 May 2024 23:13:38 +0200 Subject: [Buildroot] [PATCH 07/15 v2] support/testing: add test for export-subst support in git-download In-Reply-To: References: Message-ID: On 27/04/2024 20:37, Yann E. MORIN wrote: > Signed-off-by: Yann E. MORIN > --- > .../package/export-subst/export-subst.hash | 1 + > .../git-hash/package/export-subst/export-subst.mk | 10 ++++++++++ > .../05/482df734b3715b849ef4a3147a9b1b1f8cca38 | Bin 0 -> 35 bytes > .../0f/db95cf4f3c5ed4003287649cabb33c5f843e26 | Bin 0 -> 197 bytes > .../68/28f88dcb0e88b8cd738ad6044ce74d7a9a13c8 | Bin 0 -> 28 bytes > .../6d/a12b257e47f6089612fe97a8746d2d9c4ca0e0 | Bin 0 -> 112 bytes Since the git repo is included as binary, we can't see what is in there. It's basically the following commit: From 0fdb95cf4f3c5ed4003287649cabb33c5f843e26 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN" Date: Tue, 12 Sep 2023 23:25:48 +0200 Subject: [PATCH] file2: test export-subst Signed-off-by: Yann E. MORIN --- .gitattributes | 1 + file2 | 1 + 2 files changed, 2 insertions(+) create mode 100644 .gitattributes create mode 100644 file2 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..05482df --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +file2 export-subst diff --git a/file2 b/file2 new file mode 100644 index 0000000..6828f88 --- /dev/null +++ b/file2 @@ -0,0 +1 @@ +$Format:%H$ -- 2.44.0 I think it would be worth to change is in order to test that no recursive expansion takes place. I.e., use this as the commit message: Subject: [PATCH] file2: test export-subst Test that strings like $Format:%H$ are expanded when the export-subst attribute is set on a file. Signed-off-by: Yann E. MORIN And in the file, put this: $Format:%B$ I haven't made this change though. (BTW, another nice change would be to generate the git repository on the fly from the test infrastructure, based on a series of patches that are git-am'ed and with GIT_COMMITTER_NAME, GIT_COMMITER_EMAIL and GIT_COMMITTER_DATE values set to fixed values.) Regards, Arnout > .../git-remote/repo.git/refs/heads/master | 2 +- > support/testing/tests/download/test_git.py | 4 ++++ > 8 files changed, 16 insertions(+), 1 deletion(-) > create mode 100644 support/testing/tests/download/br2-external/git-hash/package/export-subst/export-subst.hash > create mode 100644 support/testing/tests/download/br2-external/git-hash/package/export-subst/export-subst.mk > create mode 100644 support/testing/tests/download/git-remote/repo.git/objects/05/482df734b3715b849ef4a3147a9b1b1f8cca38 > create mode 100644 support/testing/tests/download/git-remote/repo.git/objects/0f/db95cf4f3c5ed4003287649cabb33c5f843e26 > create mode 100644 support/testing/tests/download/git-remote/repo.git/objects/68/28f88dcb0e88b8cd738ad6044ce74d7a9a13c8 > create mode 100644 support/testing/tests/download/git-remote/repo.git/objects/6d/a12b257e47f6089612fe97a8746d2d9c4ca0e0 > > diff --git a/support/testing/tests/download/br2-external/git-hash/package/export-subst/export-subst.hash b/support/testing/tests/download/br2-external/git-hash/package/export-subst/export-subst.hash > new file mode 100644 > index 0000000000..1926236993 > --- /dev/null > +++ b/support/testing/tests/download/br2-external/git-hash/package/export-subst/export-subst.hash > @@ -0,0 +1 @@ > +sha256 9d359f9ae9a9e65dd4ccfe7170aa6fda24e17dfc81238972957b4b7fe97168a7 export-subst-0fdb95cf4f3c5ed4003287649cabb33c5f843e26-br2.tar.gz > diff --git a/support/testing/tests/download/br2-external/git-hash/package/export-subst/export-subst.mk b/support/testing/tests/download/br2-external/git-hash/package/export-subst/export-subst.mk > new file mode 100644 > index 0000000000..8d7d3ff970 > --- /dev/null > +++ b/support/testing/tests/download/br2-external/git-hash/package/export-subst/export-subst.mk > @@ -0,0 +1,10 @@ > +################################################################################ > +# > +# export-subst > +# > +################################################################################ > + > +EXPORT_SUBST_VERSION = 0fdb95cf4f3c5ed4003287649cabb33c5f843e26 > +EXPORT_SUBST_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git > + > +$(eval $(generic-package)) > diff --git a/support/testing/tests/download/git-remote/repo.git/objects/05/482df734b3715b849ef4a3147a9b1b1f8cca38 b/support/testing/tests/download/git-remote/repo.git/objects/05/482df734b3715b849ef4a3147a9b1b1f8cca38 > new file mode 100644 > index 0000000000000000000000000000000000000000..404bb1397cf8ec58f5e21a86e311e3b3884a55d5 > GIT binary patch > literal 35 > rcmbjYhBdU^VQOO$iz_nm{Sb^1FsEl > > literal 0 > HcmV?d00001 > > diff --git a/support/testing/tests/download/git-remote/repo.git/objects/0f/db95cf4f3c5ed4003287649cabb33c5f843e26 b/support/testing/tests/download/git-remote/repo.git/objects/0f/db95cf4f3c5ed4003287649cabb33c5f843e26 > new file mode 100644 > index 0000000000000000000000000000000000000000..3a4cc4ead6ce5a7e90a38e025896bc66da85a242 > GIT binary patch > literal 197 > zcmV;$06PD80j18pN(3?%TWg1cK#h > z4qtBDwhqwJ-;B--j*`L!t!LwllOZ~Vg`-cw8%Ibno17#|aY~)*fP^|Mib|${mW-#M > zO)5HDL~WGM!6-#hl1S(A**birTH$eq=hwHV7r47zbKY8C>#Sl759Ml at OTP!@qOn#- > z6W~^&lp_B^2mfOs%KF84fWi9!{yw!nrv1F^Lx}hFSed3)%CuY#e^rVfqgY-S2z_Jg > > literal 0 > HcmV?d00001 > > diff --git a/support/testing/tests/download/git-remote/repo.git/objects/68/28f88dcb0e88b8cd738ad6044ce74d7a9a13c8 b/support/testing/tests/download/git-remote/repo.git/objects/68/28f88dcb0e88b8cd738ad6044ce74d7a9a13c8 > new file mode 100644 > index 0000000000000000000000000000000000000000..fdc4a37651a4ad195f8f106f3496d5df0b3bb6a5 > GIT binary patch > literal 28 > kcmb > literal 0 > HcmV?d00001 > > diff --git a/support/testing/tests/download/git-remote/repo.git/objects/6d/a12b257e47f6089612fe97a8746d2d9c4ca0e0 b/support/testing/tests/download/git-remote/repo.git/objects/6d/a12b257e47f6089612fe97a8746d2d9c4ca0e0 > new file mode 100644 > index 0000000000000000000000000000000000000000..932f73602f5927ae985829cdd301b1ed40350137 > GIT binary patch > literal 112 > zcmV-$0FVE80V^p=O;s>7FlR6{FfcPQQP4}zEJ-XWDauSLElDkAVD- at bZnC*Bx at F#% > z#UfR+rR950SwK~$W#*(ZJf9QSKh0&bCYQsEj;oGV#dUqLSCQn67&0_|^q%JH*m1VF > S>l%yCbKk02!Y2Svbu0l+hckcx > > literal 0 > HcmV?d00001 > > diff --git a/support/testing/tests/download/git-remote/repo.git/refs/heads/master b/support/testing/tests/download/git-remote/repo.git/refs/heads/master > index b6bccc1c17..b6e37260fb 100644 > --- a/support/testing/tests/download/git-remote/repo.git/refs/heads/master > +++ b/support/testing/tests/download/git-remote/repo.git/refs/heads/master > @@ -1 +1 @@ > -a238b1dfcd825d47d834af3c5223417c8411d90d > +0fdb95cf4f3c5ed4003287649cabb33c5f843e26 > diff --git a/support/testing/tests/download/test_git.py b/support/testing/tests/download/test_git.py > index ec5b8f3fdd..ba52e03ef5 100644 > --- a/support/testing/tests/download/test_git.py > +++ b/support/testing/tests/download/test_git.py > @@ -56,6 +56,10 @@ class TestGitHash(GitTestBase): > self.check_hash("bad") > self.check_hash("good") > self.check_hash("nohash") > + self.check_hash("export-subst") > + with open(os.path.join(self.builddir, "dl", "export-subst", "git", "file2"), "r") as f: > + blob = f.read() > + self.assertEqual(blob, "0fdb95cf4f3c5ed4003287649cabb33c5f843e26\n") > > > class TestGitRefs(GitTestBase): From thomas.petazzoni at bootlin.com Wed May 1 21:13:46 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 23:13:46 +0200 Subject: [Buildroot] [PATCH v2 2/4] package/bats-support: add bats support library In-Reply-To: <20240425195816.2758964-2-brandon.maier@collins.com> References: <20240412210850.17265-1-brandon.maier@collins.com> <20240425195816.2758964-2-brandon.maier@collins.com> Message-ID: <20240501231346.442f0182@windsurf> Hello Brandon, Thanks for the patch! Commit title should be: package/bats-support: new package More comments below. On Thu, 25 Apr 2024 19:58:14 +0000 Brandon Maier via buildroot wrote: > This library provides support functions needed by the bats-assert and > bats-file libraries. > > This library does not provide an installer. Manually install the files > under /usr/lib/bats/bats-support which is what the Arch Linux package > does[1]. This makes the library loadable using `bats_load_library`[2]. > > [1] https://gitlab.archlinux.org/archlinux/packaging/packages/bats-support/-/blob/main/PKGBUILD?ref_type=heads > [2] https://bats-core.readthedocs.io/en/stable/writing-tests.html#bats-load-library-load-system-wide-libraries > > Signed-off-by: Brandon Maier > --- > Changes v1 -> v2: > - fix older versions of `install` that don't support -D Hu? We use the -D option of install everywhere in Buildroot. How can your build work if you have a version of install that doesn't support -D ? > +define BATS_SUPPORT_INSTALL_TARGET_CMDS > + install -d -m 0755 $(TARGET_DIR)/usr/lib/bats/bats-support/src > + install -m 0644 $(@D)/*.bash -t "$(TARGET_DIR)/usr/lib/bats/bats-support" > + install -m 0644 $(@D)/src/*.bash -t "$(TARGET_DIR)/usr/lib/bats/bats-support/src" Use $(INSTALL) instead of install. You can skip the double quotes around the file paths. We don't double quotes the paths in any other Buildroot .mk file. Also, -m 0644 is not consistent with how the files from bats-core are installed: $ ls -l output/target/usr/lib/bats-core/ total 68 -rwxr-xr-x. 1 thomas thomas 7988 1 mai 23:03 common.bash -rwxr-xr-x. 1 thomas thomas 6058 1 mai 23:03 formatter.bash -rwxr-xr-x. 1 thomas thomas 838 1 mai 23:03 preprocessing.bash -rwxr-xr-x. 1 thomas thomas 3722 1 mai 23:03 semaphore.bash -rwxr-xr-x. 1 thomas thomas 16483 1 mai 23:03 test_functions.bash -rwxr-xr-x. 1 thomas thomas 14979 1 mai 23:03 tracing.bash -rwxr-xr-x. 1 thomas thomas 1019 1 mai 23:03 validator.bash -rwxr-xr-x. 1 thomas thomas 1900 1 mai 23:03 warnings.bash They are installed 0755. Should we try to be consistent with this? Or it doesn't make sense for a specific reason? Also, while not mandatory at all, it would be nice to have small runtime tests for these bats-* packages. Nothing fancy, just something stupid/simple that exercises a bit those packages. These comments apply in a completely identical way to the other 2 patches in this series. Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From yann.morin.1998 at free.fr Wed May 1 21:19:23 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 23:19:23 +0200 Subject: [Buildroot] [PATCH 06/15 v2] package/luajit: use the git download for known-reproducible tarball In-Reply-To: References: <41552f4a1dc68983bb3edfd6a2b466581f5f91e5.1714243078.git.yann.morin.1998@free.fr> Message-ID: Arnout, All, On 2024-05-01 22:53 +0200, Arnout Vandecappelle spake thusly: > On 27/04/2024 20:37, Yann E. MORIN wrote: > > Since version 2.1, LuaJIT follows a rolling-release scheme, which means > > that any commit is as good as any other; LuaJIT uses the comitter's UNIX > > timestamp as its semver patch level. It uses the git-attribute > > export-subst for the .relver file that contains the %ct placeholderfor > > git-archive to expand it. > > > > We have had various instances of GitHub changing the way it generates > > archives on the fly, and although it is hard to foresee a way the UNIX > > timestamp could change (it's clearly defined as the number of seconds > > elapsed since 1970-01-01T00:00:00Z), it's not inconceivable that GitHub > > may decide to no longer expand the export-subst attributes in the > > future... > > Although I don't really disagree with the principle, I think we should > instead stop using github-generated tarballs entirely. 100% agreed. I was contemplating doing a mass conversion one of those rainy days... > Or, put differently: > I think the risk of a github-generated tarball to change hash for _other_ > reasons is much higher than that it would stop expanding export-subst. Yup, export-subst makes it only slightly more likely. :-] > So I will not apply this patch of the series. This patch is mostly for correctness, and did fit with the purpose of the series. But it is not strictly needed. So ACK. Thanks! Regards, Yann E. MORIN. > Regards, > Arnout > > > > > To avoid any confusion, and to be future-proof, switch over to using the > > git download helper, which now has support for handling export-subst in > > a reproducible way. Drop the post-extract hooks as they are not needed. > > > > Signed-off-by: Yann E. MORIN > > Cc: Francois Perrad > > Cc: Thomas Petazzoni > > --- > > package/luajit/luajit.hash | 2 +- > > package/luajit/luajit.mk | 3 ++- > > 2 files changed, 3 insertions(+), 2 deletions(-) > > > > diff --git a/package/luajit/luajit.hash b/package/luajit/luajit.hash > > index 578bb7a3e2..da243d8c2a 100644 > > --- a/package/luajit/luajit.hash > > +++ b/package/luajit/luajit.hash > > @@ -1,5 +1,5 @@ > > # Locally calculated > > -sha256 b518721280390e4cec1af30f6819d86756ce4234d82410a55a4e121855f64e08 luajit-41fb94defa8f830ce69a8122b03f6ac3216d392a.tar.gz > > +sha256 df50bfe78919691ce9a630c8312386a8cb6ca49f327922a833e77656e82ef6c6 luajit-41fb94defa8f830ce69a8122b03f6ac3216d392a-br2.tar.gz > > # Locally calculated > > sha256 1130331ac861a4b4520e9c8ad0814efdc6f1e79ea55ea9c460c73733d13ccb5f COPYRIGHT > > diff --git a/package/luajit/luajit.mk b/package/luajit/luajit.mk > > index 693e22630b..6b1c6b3386 100644 > > --- a/package/luajit/luajit.mk > > +++ b/package/luajit/luajit.mk > > @@ -5,7 +5,8 @@ > > ################################################################################ > > LUAJIT_VERSION = 41fb94defa8f830ce69a8122b03f6ac3216d392a > > -LUAJIT_SITE = $(call github,LuaJIT,LuaJIT,$(LUAJIT_VERSION)) > > +LUAJIT_SITE = https://github.com/LuaJIT/LuaJIT > > +LUAJIT_SITE_METHOD = git > > LUAJIT_LICENSE = MIT > > LUAJIT_LICENSE_FILES = COPYRIGHT > > LUAJIT_CPE_ID_VENDOR = luajit -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Wed May 1 21:23:43 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 23:23:43 +0200 Subject: [Buildroot] [PATCH 07/15 v2] support/testing: add test for export-subst support in git-download In-Reply-To: References: Message-ID: Arnout, All, On 2024-05-01 23:13 +0200, Arnout Vandecappelle spake thusly: > On 27/04/2024 20:37, Yann E. MORIN wrote: > > Signed-off-by: Yann E. MORIN > > --- > > .../package/export-subst/export-subst.hash | 1 + > > .../git-hash/package/export-subst/export-subst.mk | 10 ++++++++++ > > .../05/482df734b3715b849ef4a3147a9b1b1f8cca38 | Bin 0 -> 35 bytes > > .../0f/db95cf4f3c5ed4003287649cabb33c5f843e26 | Bin 0 -> 197 bytes > > .../68/28f88dcb0e88b8cd738ad6044ce74d7a9a13c8 | Bin 0 -> 28 bytes > > .../6d/a12b257e47f6089612fe97a8746d2d9c4ca0e0 | Bin 0 -> 112 bytes > > Since the git repo is included as binary, we can't see what is in there. Yes, I did that way before the xz fiasco... :-/ See below. [--SNIP--] > I think it would be worth to change is in order to test that no recursive > expansion takes place. I.e., use this as the commit message: > > Subject: [PATCH] file2: test export-subst > > Test that strings like $Format:%H$ are expanded when the export-subst > attribute is set on a file. > > Signed-off-by: Yann E. MORIN > > > And in the file, put this: > > $Format:%B$ > > I haven't made this change though. Worth a try. Can we do that in a follow-up patch? > (BTW, another nice change would be to generate the git repository on the > fly from the test infrastructure, based on a series of patches that are > git-am'ed and with GIT_COMMITTER_NAME, GIT_COMMITER_EMAIL and > GIT_COMMITTER_DATE values set to fixed values.) Yes, this is on my todo-list, and I have alsready testedt that indeed that generates a reproducible git tree. Regards, Yann E. MORIN. -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From fontaine.fabrice at gmail.com Wed May 1 21:26:27 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Wed, 1 May 2024 23:26:27 +0200 Subject: [Buildroot] [PATCH 1/1] package/python-pillow: fix legal info Message-ID: <20240501212627.17988-1-fontaine.fabrice@gmail.com> Commit dfaa34ddd3398f22718f7361d617d98d53b51630 forgot to update hash of LICENSE file: ERROR: LICENSE has wrong sha256 hash: ERROR: expected: e706384c6f299d1b6fa782ae657740b372b4bd7938a1a318bf94ac249114758a ERROR: got : cf234c27a3f275f5a050f4df3946f8855704226fe4e7ca8b33928cbcecbced37 LICENSE file has been updated to clean up authors and contributors: https://github.com/python-pillow/Pillow/commit/4197263dff19a79f13cd86f6cdc9a0ec6c06da92 Fixes: dfaa34ddd3398f22718f7361d617d98d53b51630 - http://autobuild.buildroot.org/results/5a35d83c73367e1b20534b1bc7f2f564cf653a38 Signed-off-by: Fabrice Fontaine --- package/python-pillow/python-pillow.hash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/python-pillow/python-pillow.hash b/package/python-pillow/python-pillow.hash index 073b758dfe..352536a035 100644 --- a/package/python-pillow/python-pillow.hash +++ b/package/python-pillow/python-pillow.hash @@ -3,4 +3,4 @@ md5 6c21a12849ae42f93881f614d8f6f651 pillow-10.3.0.tar.gz sha256 9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d pillow-10.3.0.tar.gz # Locally computed sha256 checksums -sha256 e706384c6f299d1b6fa782ae657740b372b4bd7938a1a318bf94ac249114758a LICENSE +sha256 cf234c27a3f275f5a050f4df3946f8855704226fe4e7ca8b33928cbcecbced37 LICENSE -- 2.43.0 From thomas.petazzoni at bootlin.com Wed May 1 21:28:47 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 23:28:47 +0200 Subject: [Buildroot] [PATCH] package/libarchive: bump to version 3.7.3 In-Reply-To: <20240415170556.35245-1-francois.perrad@gadz.org> References: <20240415170556.35245-1-francois.perrad@gadz.org> Message-ID: <20240501232847.6558267b@windsurf> On Mon, 15 Apr 2024 19:05:56 +0200 Francois Perrad wrote: > Signed-off-by: Francois Perrad > --- > .../0002-autotools-do-not-add-iconv-for-Requires.private.patch | 2 +- > package/libarchive/libarchive.hash | 2 +- > package/libarchive/libarchive.mk | 2 +- > 3 files changed, 3 insertions(+), 3 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From romain.naour at smile.fr Wed May 1 21:29:55 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 23:29:55 +0200 Subject: [Buildroot] [PATCH 1/1] configs/ti_am62x_sk_defconfig: reorder defconfig In-Reply-To: <20240415124616.3817152-1-dario.binacchi@amarulasolutions.com> References: <20240415124616.3817152-1-dario.binacchi@amarulasolutions.com> Message-ID: Hello Dario, All, Le 15/04/2024 ? 14:46, Dario Binacchi a ?crit?: > The patch doesn't introduce any functional changes but reorganizes the > code to prevent the execution of the commands: > > make ti_am62x_sk_defconfig > make savedefconfig > > from showing a change in the defconfig. > > Signed-off-by: Dario Binacchi > --- > configs/ti_am62x_sk_defconfig | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/configs/ti_am62x_sk_defconfig b/configs/ti_am62x_sk_defconfig > index 5c7b97b3b0b1..405016818438 100644 > --- a/configs/ti_am62x_sk_defconfig > +++ b/configs/ti_am62x_sk_defconfig > @@ -3,8 +3,8 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y > BR2_GLOBAL_PATCH_DIR="board/ti/am62x-sk/patches" > BR2_DOWNLOAD_FORCE_CHECK_HASHES=y > BR2_ROOTFS_POST_BUILD_SCRIPT="board/ti/common/am6xx/post-build.sh" > -BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS="-c ttyS2,115200n8 -d k3-am625-sk.dtb -l am62x-sk-buildroot -r /dev/mmcblk1p2 -x earlycon=ns16550a,mmio32,0x02800000" > BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" > +BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS="-c ttyS2,115200n8 -d k3-am625-sk.dtb -l am62x-sk-buildroot -r /dev/mmcblk1p2 -x earlycon=ns16550a,mmio32,0x02800000" > BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS="-c board/ti/am62x-sk/genimage.cfg" > BR2_LINUX_KERNEL=y > BR2_LINUX_KERNEL_CUSTOM_VERSION=y defconfig in Buildroot are not always generated by savedefconfig, some of them contains comments. Applied to master, thanks. Best regards, Romain From romain.naour at smile.fr Wed May 1 21:25:11 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 23:25:11 +0200 Subject: [Buildroot] [git commit] configs/ti_am62x_sk_defconfig: reorder defconfig Message-ID: <20240501213000.7A432864F9@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=20a5c02235ae956ffa938968f0ee8ff39d887319 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master The patch doesn't introduce any functional changes but reorganizes the code to prevent the execution of the commands: make ti_am62x_sk_defconfig make savedefconfig from showing a change in the defconfig. Signed-off-by: Dario Binacchi Reviewed-by: Gero Schw??ricke Signed-off-by: Romain Naour --- configs/ti_am62x_sk_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/ti_am62x_sk_defconfig b/configs/ti_am62x_sk_defconfig index 5c7b97b3b0..4050168184 100644 --- a/configs/ti_am62x_sk_defconfig +++ b/configs/ti_am62x_sk_defconfig @@ -3,8 +3,8 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y BR2_GLOBAL_PATCH_DIR="board/ti/am62x-sk/patches" BR2_DOWNLOAD_FORCE_CHECK_HASHES=y BR2_ROOTFS_POST_BUILD_SCRIPT="board/ti/common/am6xx/post-build.sh" -BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS="-c ttyS2,115200n8 -d k3-am625-sk.dtb -l am62x-sk-buildroot -r /dev/mmcblk1p2 -x earlycon=ns16550a,mmio32,0x02800000" BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS="-c ttyS2,115200n8 -d k3-am625-sk.dtb -l am62x-sk-buildroot -r /dev/mmcblk1p2 -x earlycon=ns16550a,mmio32,0x02800000" BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS="-c board/ti/am62x-sk/genimage.cfg" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y From thomas.petazzoni at bootlin.com Wed May 1 21:31:27 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 23:31:27 +0200 Subject: [Buildroot] [PATCH 1/1] support/testing: fs: f2fs: bump test Kernel to 6.6.27 In-Reply-To: <20240415193522.7719-1-ju.o@free.fr> References: <20240415193522.7719-1-ju.o@free.fr> Message-ID: <20240501233127.78a845c8@windsurf> On Mon, 15 Apr 2024 21:35:22 +0200 Julien Olivain wrote: > Since the toolchain Bootlin update to 2023.11-1 [1], the arm Linux > kernel build is broken with binutils >= 2.41 with: > > arch/arm/mm/proc-v7.S: Assembler messages: > arch/arm/mm/proc-v7.S:640: Error: junk at end of line, first unrecognized character is '#' > > This commit fixes the issue by bumping the test Kernel version to the > latest LTS version 6.6.27. We bump to the 6.6.x series to refresh the > test, as the 4.19.x series is planned to be end-of-life soon, in > December 2024. > > Fixes: > https://gitlab.com/buildroot.org/buildroot/-/jobs/6623401447 > > [1] https://gitlab.com/buildroot.org/buildroot/-/commit/7e0e6e3b8618ab942f25b11ee72fbc5a4deefdf1 > > Signed-off-by: Julien Olivain > --- > support/testing/tests/fs/test_f2fs.py | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Applied to master after rebasing, and adjusting the commit message as the change is no longer fixing the build, it was already done by Romain Naour. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From yann.morin.1998 at free.fr Wed May 1 21:31:53 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 23:31:53 +0200 Subject: [Buildroot] [git commit] package/python-pillow: fix legal info Message-ID: <20240501213215.1204886505@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=b8a86f5a8fcf2930b17a165ead7274618b7aba75 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Commit dfaa34ddd3398f22718f7361d617d98d53b51630 forgot to update hash of LICENSE file: ERROR: LICENSE has wrong sha256 hash: ERROR: expected: e706384c6f299d1b6fa782ae657740b372b4bd7938a1a318bf94ac249114758a ERROR: got : cf234c27a3f275f5a050f4df3946f8855704226fe4e7ca8b33928cbcecbced37 LICENSE file has been updated to clean up authors and contributors: https://github.com/python-pillow/Pillow/commit/4197263dff19a79f13cd86f6cdc9a0ec6c06da92 Fixes: dfaa34ddd3398f22718f7361d617d98d53b51630 - http://autobuild.buildroot.org/results/5a35d83c73367e1b20534b1bc7f2f564cf653a38 Signed-off-by: Fabrice Fontaine Signed-off-by: Yann E. MORIN --- package/python-pillow/python-pillow.hash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/python-pillow/python-pillow.hash b/package/python-pillow/python-pillow.hash index 073b758dfe..352536a035 100644 --- a/package/python-pillow/python-pillow.hash +++ b/package/python-pillow/python-pillow.hash @@ -3,4 +3,4 @@ md5 6c21a12849ae42f93881f614d8f6f651 pillow-10.3.0.tar.gz sha256 9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d pillow-10.3.0.tar.gz # Locally computed sha256 checksums -sha256 e706384c6f299d1b6fa782ae657740b372b4bd7938a1a318bf94ac249114758a LICENSE +sha256 cf234c27a3f275f5a050f4df3946f8855704226fe4e7ca8b33928cbcecbced37 LICENSE From yann.morin.1998 at free.fr Wed May 1 21:31:54 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 23:31:54 +0200 Subject: [Buildroot] [git commit] DEVELOPERS: remove Sebastian Weyer Message-ID: <20240501213215.27B5186506@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=7b973daac3f24ffce0246c5bbf80541499d86189 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Sebastian email address at Smile is bouncing, so drop it from the DEVELOPERS file. Signed-off-by: Romain Naour Signed-off-by: Yann E. MORIN --- DEVELOPERS | 8 -------- 1 file changed, 8 deletions(-) diff --git a/DEVELOPERS b/DEVELOPERS index 11ffe17f92..5d198567d8 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2769,14 +2769,6 @@ F: support/misc/toolchainfile.cmake.in N: Sam Voss F: package/ripgrep/ -N: Sebastian Weyer -F: package/amlogic-boot-fip/ -F: package/nushell/ -F: package/rust-bindgen/ -F: package/spirv-headers/ -F: support/testing/tests/package/sample_nu.nu -F: support/testing/tests/package/test_nu.py - N: S??bastien Szymanski F: board/armadeus/ F: configs/armadeus* From yann.morin.1998 at free.fr Wed May 1 21:32:29 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 23:32:29 +0200 Subject: [Buildroot] [PATCH 1/1] package/python-pillow: fix legal info In-Reply-To: <20240501212627.17988-1-fontaine.fabrice@gmail.com> References: <20240501212627.17988-1-fontaine.fabrice@gmail.com> Message-ID: Fabrice, All, On 2024-05-01 23:26 +0200, Fabrice Fontaine spake thusly: > Commit dfaa34ddd3398f22718f7361d617d98d53b51630 forgot to update hash of > LICENSE file: > > ERROR: LICENSE has wrong sha256 hash: > ERROR: expected: e706384c6f299d1b6fa782ae657740b372b4bd7938a1a318bf94ac249114758a > ERROR: got : cf234c27a3f275f5a050f4df3946f8855704226fe4e7ca8b33928cbcecbced37 > > LICENSE file has been updated to clean up authors and contributors: > https://github.com/python-pillow/Pillow/commit/4197263dff19a79f13cd86f6cdc9a0ec6c06da92 > > Fixes: dfaa34ddd3398f22718f7361d617d98d53b51630 > - http://autobuild.buildroot.org/results/5a35d83c73367e1b20534b1bc7f2f564cf653a38 > > Signed-off-by: Fabrice Fontaine Applied to master, thanks. Regards, Yann E. MORIN. > --- > package/python-pillow/python-pillow.hash | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/package/python-pillow/python-pillow.hash b/package/python-pillow/python-pillow.hash > index 073b758dfe..352536a035 100644 > --- a/package/python-pillow/python-pillow.hash > +++ b/package/python-pillow/python-pillow.hash > @@ -3,4 +3,4 @@ md5 6c21a12849ae42f93881f614d8f6f651 pillow-10.3.0.tar.gz > sha256 9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d pillow-10.3.0.tar.gz > > # Locally computed sha256 checksums > -sha256 e706384c6f299d1b6fa782ae657740b372b4bd7938a1a318bf94ac249114758a LICENSE > +sha256 cf234c27a3f275f5a050f4df3946f8855704226fe4e7ca8b33928cbcecbced37 LICENSE > -- > 2.43.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From gael.portay at rtone.fr Wed May 1 21:32:34 2024 From: gael.portay at rtone.fr (=?utf-8?q?Ga=C3=ABl_PORTAY?=) Date: Wed, 01 May 2024 23:32:34 +0200 Subject: [Buildroot] [RESEND PATCH 1/1] board/raspberrypi_{3_qt5we, cm4io*}: autoprobe of bluetooth driver In-Reply-To: <20240427211939.520ab908@gmx.net> References: <20240427015517.413015-1-gael.portay@rtone.fr> <20240427211939.520ab908@gmx.net> Message-ID: Hello Peter, On Sat Apr 27, 2024 at 9:19 PM CEST, Peter Seiderer wrote: > Or remove the the krnbt parameter from all RPi defconfigs as the > default changed since linux kernel 6.1.x, see [2]... > Oh, so true. Now, I remember to have sent that patch before (or right after) the kernel was bump to 6.1; it was intended to get merged in the branch 2023.11 :/ And, I should have the change removing the krnbt dtparam somewhere... Do you make the change yourself? > Regards, > Peter > > [2] https://github.com/raspberrypi/linux/commit/ec08e93837efa2e75e5cab4d80427fdf7ea23da1 Regards, Ga?l From yann.morin.1998 at free.fr Wed May 1 21:32:51 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 23:32:51 +0200 Subject: [Buildroot] [PATCH] DEVELOPERS: remove Sebastian Weyer In-Reply-To: <20240501211300.1590881-1-romain.naour@smile.fr> References: <20240501211300.1590881-1-romain.naour@smile.fr> Message-ID: Romain, All, On 2024-05-01 23:12 +0200, Romain Naour spake thusly: > Sebastian email address at Smile is bouncing, so drop it > from the DEVELOPERS file. > > Signed-off-by: Romain Naour Applied to master, thanks. Regards, Yann E. MORIN. > --- > DEVELOPERS | 8 -------- > 1 file changed, 8 deletions(-) > > diff --git a/DEVELOPERS b/DEVELOPERS > index 11ffe17f92..5d198567d8 100644 > --- a/DEVELOPERS > +++ b/DEVELOPERS > @@ -2769,14 +2769,6 @@ F: support/misc/toolchainfile.cmake.in > N: Sam Voss > F: package/ripgrep/ > > -N: Sebastian Weyer > -F: package/amlogic-boot-fip/ > -F: package/nushell/ > -F: package/rust-bindgen/ > -F: package/spirv-headers/ > -F: support/testing/tests/package/sample_nu.nu > -F: support/testing/tests/package/test_nu.py > - > N: S?bastien Szymanski > F: board/armadeus/ > F: configs/armadeus* > -- > 2.44.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From thomas.petazzoni at bootlin.com Wed May 1 21:32:14 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 23:32:14 +0200 Subject: [Buildroot] [git commit] package/libarchive: bump to version 3.7.3 Message-ID: <20240501213325.CB68C86521@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=566eb38bdff666a11034e6543c42647d655e1e73 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Francois Perrad Signed-off-by: Thomas Petazzoni --- .../0002-autotools-do-not-add-iconv-for-Requires.private.patch | 2 +- package/libarchive/libarchive.hash | 2 +- package/libarchive/libarchive.mk | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/libarchive/0002-autotools-do-not-add-iconv-for-Requires.private.patch b/package/libarchive/0002-autotools-do-not-add-iconv-for-Requires.private.patch index 338dad46e0..3cbd304109 100644 --- a/package/libarchive/0002-autotools-do-not-add-iconv-for-Requires.private.patch +++ b/package/libarchive/0002-autotools-do-not-add-iconv-for-Requires.private.patch @@ -17,7 +17,7 @@ diff --git a/configure.ac b/configure.ac index 99bff20d1..f245d0c55 100644 --- a/configure.ac +++ b/configure.ac -@@ -378,7 +378,6 @@ if test "x$with_iconv" != "xno"; then +@@ -434,7 +434,6 @@ if test "x$with_iconv" != "xno"; then AC_CHECK_HEADERS([localcharset.h]) am_save_LIBS="$LIBS" LIBS="${LIBS} ${LIBICONV}" diff --git a/package/libarchive/libarchive.hash b/package/libarchive/libarchive.hash index 818113585e..ab6813686e 100644 --- a/package/libarchive/libarchive.hash +++ b/package/libarchive/libarchive.hash @@ -1,4 +1,4 @@ # From https://www.libarchive.de/downloads/sha256sums -sha256 04357661e6717b6941682cde02ad741ae4819c67a260593dfb2431861b251acb libarchive-3.7.2.tar.xz +sha256 63e7a7174638fc7d6b79b4c8b0ad954e0f4f45abe7239c1ecb200232aa9a43d2 libarchive-3.7.3.tar.xz # Locally computed: sha256 b2cdf763345de2de34cebf54394df3c61a105c3b71288603c251f2fa638200ba COPYING diff --git a/package/libarchive/libarchive.mk b/package/libarchive/libarchive.mk index 136f7a9c09..9c35856ff9 100644 --- a/package/libarchive/libarchive.mk +++ b/package/libarchive/libarchive.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBARCHIVE_VERSION = 3.7.2 +LIBARCHIVE_VERSION = 3.7.3 LIBARCHIVE_SOURCE = libarchive-$(LIBARCHIVE_VERSION).tar.xz LIBARCHIVE_SITE = https://www.libarchive.de/downloads LIBARCHIVE_INSTALL_STAGING = YES From thomas.petazzoni at bootlin.com Wed May 1 21:32:15 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 23:32:15 +0200 Subject: [Buildroot] [git commit] support/testing/tests/fs/test_f2fs.py: bump test k to 6.6.27 Message-ID: <20240501213325.D570486522@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=7d1aaddb2bd2f1a6636e93909fe55218e8bfd3ea branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master This commit bumps to the 6.6.x series to refresh the test, as the 4.19.x series is planned to be end-of-life soon, in December 2024. Signed-off-by: Julien Olivain Signed-off-by: Thomas Petazzoni --- support/testing/tests/fs/test_f2fs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/support/testing/tests/fs/test_f2fs.py b/support/testing/tests/fs/test_f2fs.py index 826077ac94..5918fe8ca8 100644 --- a/support/testing/tests/fs/test_f2fs.py +++ b/support/testing/tests/fs/test_f2fs.py @@ -20,7 +20,7 @@ class TestF2FS(infra.basetest.BRTest): # BR2_TARGET_ROOTFS_TAR is not set BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y - BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.310" + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.27" BR2_LINUX_KERNEL_USE_DEFCONFIG=y BR2_LINUX_KERNEL_DEFCONFIG="vexpress" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}" From thomas.petazzoni at bootlin.com Wed May 1 21:32:34 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 23:32:34 +0200 Subject: [Buildroot] [git commit] package/gnu-efi: enable on RISC-V 64-bit Message-ID: <20240501213325.DF96886525@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=1f7c58145497ed01d566e08734a62feef1696807 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master gnu-efi RISC-V 64bit support was introduced in commit [1], first included in version 3.0.14. This commit adds this architecture in _ARCH_SUPPORTS. [1] https://sourceforge.net/p/gnu-efi/code/ci/b95f138fa1550040e68ac3dd34cfce7d148d7984 Signed-off-by: Julien Olivain Signed-off-by: Thomas Petazzoni --- package/gnu-efi/Config.in | 1 + package/gnu-efi/gnu-efi.mk | 2 ++ 2 files changed, 3 insertions(+) diff --git a/package/gnu-efi/Config.in b/package/gnu-efi/Config.in index d456a23837..4f44cf9f64 100644 --- a/package/gnu-efi/Config.in +++ b/package/gnu-efi/Config.in @@ -1,6 +1,7 @@ config BR2_PACKAGE_GNU_EFI_ARCH_SUPPORTS bool default y if BR2_ARM_CPU_HAS_ARM + default y if BR2_RISCV_64 default y if BR2_aarch64 default y if BR2_aarch64_be default y if BR2_i386 diff --git a/package/gnu-efi/gnu-efi.mk b/package/gnu-efi/gnu-efi.mk index 96caaeb933..2eed4e40d2 100644 --- a/package/gnu-efi/gnu-efi.mk +++ b/package/gnu-efi/gnu-efi.mk @@ -24,6 +24,8 @@ else ifeq ($(BR2_arm)$(BR2_armeb),y) GNU_EFI_PLATFORM = arm else ifeq ($(BR2_aarch64)$(BR2_aarch64_be),y) GNU_EFI_PLATFORM = aarch64 +else ifeq ($(BR2_RISCV_64),y) +GNU_EFI_PLATFORM = riscv64 endif GNU_EFI_MAKE_OPTS = \ From thomas.petazzoni at bootlin.com Wed May 1 21:33:33 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 23:33:33 +0200 Subject: [Buildroot] [PATCH 1/1] package/gnu-efi: add BR2_RISCV_64 in _ARCH_SUPPORTS In-Reply-To: <20240415220237.333222-1-ju.o@free.fr> References: <20240415220237.333222-1-ju.o@free.fr> Message-ID: <20240501233333.7bf8f247@windsurf> On Tue, 16 Apr 2024 00:02:37 +0200 Julien Olivain wrote: > gnu-efi RISC-V 64bit support was introduced in commit [1], first > included in version 3.0.14. > > This commit adds this architecture in _ARCH_SUPPORTS. > > [1] https://sourceforge.net/p/gnu-efi/code/ci/b95f138fa1550040e68ac3dd34cfce7d148d7984 > > Signed-off-by: Julien Olivain > --- > package/gnu-efi/Config.in | 1 + > package/gnu-efi/gnu-efi.mk | 2 ++ > 2 files changed, 3 insertions(+) Applied to master after changing the commit title to "enable on RISC-V 64-bit". Indeed your title "add BR2_RISCV_64 in _ARCH_SUPPORTS" is how we do this, but really the aim of the commit is to make the package available on RISC-V 64-bit. Thanks! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Wed May 1 21:34:18 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 23:34:18 +0200 Subject: [Buildroot] [git commit] configs/mx6cubox: update U-Boot and kernel Message-ID: <20240501213429.8D62486527@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=00522a5022a11a05b21a9e3690c093e3aecb4753 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Update to U-Boot 2024.04 and kernel 6.6.27 versions. Signed-off-by: Fabio Estevam Signed-off-by: Thomas Petazzoni --- configs/mx6cubox_defconfig | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/configs/mx6cubox_defconfig b/configs/mx6cubox_defconfig index cbd9378064..46a1400d9f 100644 --- a/configs/mx6cubox_defconfig +++ b/configs/mx6cubox_defconfig @@ -6,8 +6,8 @@ BR2_ARM_ENABLE_VFP=y BR2_ARM_FPU_VFPV3=y # Toolchain -# Linux headers same as kernel, a 5.15 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y # System configuration BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" @@ -17,10 +17,10 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.71" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.27" BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-cubox-i imx6dl-cubox-i-emmc-som-v15 imx6dl-cubox-i-som-v15 imx6dl-hummingboard imx6dl-hummingboard-emmc-som-v15 imx6dl-hummingboard-som-v15 imx6q-cubox-i imx6q-cubox-i-emmc-som-v15 imx6q-cubox-i-som-v15 imx6q-hummingboard imx6q-hummingboard-emmc-som-v15 imx6q-hummingboard-som-v15" +BR2_LINUX_KERNEL_INTREE_DTS_NAME="nxp/imx/imx6dl-cubox-i nxp/imx/imx6dl-cubox-i-emmc-som-v15 nxp/imx/imx6dl-cubox-i-som-v15 nxp/imx/imx6dl-hummingboard nxp/imx/imx6dl-hummingboard-emmc-som-v15 nxp/imx/imx6dl-hummingboard-som-v15 nxp/imx/imx6q-cubox-i nxp/imx/imx6q-cubox-i-emmc-som-v15 nxp/imx/imx6q-cubox-i-som-v15 nxp/imx/imx6q-hummingboard nxp/imx/imx6q-hummingboard-emmc-som-v15 nxp/imx/imx6q-hummingboard-som-v15" BR2_LINUX_KERNEL_INSTALL_TARGET=y BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y @@ -32,7 +32,7 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.10" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="mx6cuboxi" BR2_TARGET_UBOOT_NEEDS_PYTHON3=y BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y From thomas.petazzoni at bootlin.com Wed May 1 21:34:29 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 23:34:29 +0200 Subject: [Buildroot] [PATCH] configs/mx6cubox: update U-Boot and kernel In-Reply-To: <20240416000105.95779-1-festevam@gmail.com> References: <20240416000105.95779-1-festevam@gmail.com> Message-ID: <20240501233429.055e5225@windsurf> On Mon, 15 Apr 2024 21:01:05 -0300 Fabio Estevam wrote: > Update to U-Boot 2024.04 and kernel 6.6.27 versions. > > Signed-off-by: Fabio Estevam > --- > configs/mx6cubox_defconfig | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From yann.morin.1998 at free.fr Wed May 1 21:35:15 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 23:35:15 +0200 Subject: [Buildroot] [git commit] utils/genrandconfig: remove Sourcery CodeBench Nios-II exclusion Message-ID: <20240501213539.329AD8652D@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=c6784ea0e17db4aa1505792b29587bef91f1d59d branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII has been removed by [1]. [1] 7fa0159a5055363d002089f0c451a84594732cf2 Cc: Giulio Benetti Signed-off-by: Romain Naour Signed-off-by: Yann E. MORIN --- utils/genrandconfig | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/utils/genrandconfig b/utils/genrandconfig index 5ebec415b5..df6bede158 100755 --- a/utils/genrandconfig +++ b/utils/genrandconfig @@ -294,18 +294,6 @@ def fixup_config(sysinfo, configfile): if 'BR2_PACKAGE_WESTON=y\n' in configlines and \ BR2_TOOLCHAIN_EXTERNAL_URL + 'mipsel-ctng-linux-uclibc.tar.xz"\n' in configlines: return False - # The cs nios2 2017.02 toolchain is affected by binutils PR19405 - if 'BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII=y\n' in configlines and \ - 'BR2_PACKAGE_BOOST=y\n' in configlines: - return False - # The cs nios2 2017.02 toolchain is affected by binutils PR19405 - if 'BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII=y\n' in configlines and \ - 'BR2_PACKAGE_QT5BASE_GUI=y\n' in configlines: - return False - # The cs nios2 2017.02 toolchain is affected by binutils PR19405 - if 'BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII=y\n' in configlines and \ - 'BR2_PACKAGE_FLANN=y\n' in configlines: - return False # No C library for internal toolchain if 'BR2_TOOLCHAIN_BUILDROOT_NONE=y' in configlines: return False From thomas.petazzoni at bootlin.com Wed May 1 21:35:53 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 23:35:53 +0200 Subject: [Buildroot] [PATCH] package/catch2: bump to version 3.5.4 In-Reply-To: <20240415120820.465163-1-buildroot@heine.tech> References: <20240415120820.465163-1-buildroot@heine.tech> Message-ID: <20240501233553.3ee07ef3@windsurf> On Mon, 15 Apr 2024 14:08:19 +0200 Michael Nosthoff via buildroot wrote: > Signed-off-by: Michael Nosthoff > --- > package/catch2/catch2.hash | 2 +- > package/catch2/catch2.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From yann.morin.1998 at free.fr Wed May 1 21:39:12 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 23:39:12 +0200 Subject: [Buildroot] [git commit] package/libnetconf2: add libxcrypt optional dependency Message-ID: <20240501214237.D6DED8653A@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=4d57014449e6e5b32e5373aa2afd4fd8cd3a9883 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fix the following build failure raised since bump of glibc to version 2.39 in commit b5680f53d60acf8ff6010082f873438a39bd5d97: /home/buildroot/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/sparc64-buildroot-linux-gnu/12.3.0/../../../../sparc64-buildroot-linux-gnu/bin/ld: cannot find -lcrypt: No such file or directory Fixes: b5680f53d60acf8ff6010082f873438a39bd5d97 - http://autobuild.buildroot.org/results/c84e27815cc607ad78a1901cb2be591df2686ac7 Signed-off-by: Fabrice Fontaine Signed-off-by: Yann E. MORIN --- package/libnetconf2/Config.in | 1 + package/libnetconf2/libnetconf2.mk | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/package/libnetconf2/Config.in b/package/libnetconf2/Config.in index 7865f9e487..34934325fa 100644 --- a/package/libnetconf2/Config.in +++ b/package/libnetconf2/Config.in @@ -4,6 +4,7 @@ config BR2_PACKAGE_LIBNETCONF2 depends on BR2_TOOLCHAIN_HAS_THREADS depends on !BR2_STATIC_LIBS depends on BR2_USE_MMU + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC select BR2_PACKAGE_LIBYANG help libnetconf2 is a NETCONF library in C intended for building diff --git a/package/libnetconf2/libnetconf2.mk b/package/libnetconf2/libnetconf2.mk index e349c1bce4..88163926c0 100644 --- a/package/libnetconf2/libnetconf2.mk +++ b/package/libnetconf2/libnetconf2.mk @@ -30,6 +30,10 @@ else LIBNETCONF2_CONF_OPTS += -DENABLE_TLS=OFF endif +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +LIBNETCONF2_DEPENDENCIES += libxcrypt +endif + HOST_LIBNETCONF2_CONF_OPTS = \ -DENABLE_TESTS=OFF \ -DENABLE_VALGRIND_TESTS=OFF \ From yann.morin.1998 at free.fr Wed May 1 21:36:07 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 23:36:07 +0200 Subject: [Buildroot] [git commit] package/petitboot: add libxcrypt optional dependency Message-ID: <20240501214237.C937186539@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=20ddf2fe65e8ed29c661a949c5d535d2983fe561 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fix the following build failure raised since bump of glibc to version 2.39 in commit b5680f53d60acf8ff6010082f873438a39bd5d97: checking for crypt in -lcrypt... no configure: error: in `/home/arbab/src/buildroot/output/build/petitboot-1.15': configure: error: shadow/crypt libs required Signed-off-by: Reza Arbab Signed-off-by: Yann E. MORIN --- package/petitboot/Config.in | 1 + package/petitboot/petitboot.mk | 1 + 2 files changed, 2 insertions(+) diff --git a/package/petitboot/Config.in b/package/petitboot/Config.in index 533c7a9f29..66836f31ac 100644 --- a/package/petitboot/Config.in +++ b/package/petitboot/Config.in @@ -14,6 +14,7 @@ config BR2_PACKAGE_PETITBOOT # run-time dependencies select BR2_PACKAGE_KEXEC if !BR2_PACKAGE_KEXEC_LITE_ARCH_SUPPORTS select BR2_PACKAGE_KEXEC_LITE if BR2_PACKAGE_KEXEC_LITE_ARCH_SUPPORTS && !BR2_PACKAGE_KEXEC + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC select BR2_PACKAGE_NVME if ( BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le ) select BR2_PACKAGE_POWERPC_UTILS if ( BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le ) help diff --git a/package/petitboot/petitboot.mk b/package/petitboot/petitboot.mk index cd7631fa5c..2eb6461144 100644 --- a/package/petitboot/petitboot.mk +++ b/package/petitboot/petitboot.mk @@ -14,6 +14,7 @@ PETITBOOT_DEPENDENCIES = \ host-bison \ host-flex \ lvm2 \ + $(if $(BR2_PACKAGE_LIBXCRYPT),libxcrypt) \ $(TARGET_NLS_DEPENDENCIES) PETITBOOT_LICENSE = GPL-2.0 PETITBOOT_LICENSE_FILES = COPYING From yann.morin.1998 at free.fr Wed May 1 21:44:10 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 23:44:10 +0200 Subject: [Buildroot] [PATCH 1/1] package/libnetconf2: add libxcrypt optional dependency In-Reply-To: <20240408192953.194898-1-fontaine.fabrice@gmail.com> References: <20240408192953.194898-1-fontaine.fabrice@gmail.com> Message-ID: fabrice, All, On 2024-04-08 21:29 +0200, Fabrice Fontaine spake thusly: > Fix the following build failure raised since bump of glibc to version > 2.39 in commit b5680f53d60acf8ff6010082f873438a39bd5d97: > > /home/buildroot/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/sparc64-buildroot-linux-gnu/12.3.0/../../../../sparc64-buildroot-linux-gnu/bin/ld: cannot find -lcrypt: No such file or directory > > Fixes: b5680f53d60acf8ff6010082f873438a39bd5d97 > - http://autobuild.buildroot.org/results/c84e27815cc607ad78a1901cb2be591df2686ac7 > > Signed-off-by: Fabrice Fontaine Applied to master, thanks. Regards, Yann E. MORIN. > --- > package/libnetconf2/Config.in | 1 + > package/libnetconf2/libnetconf2.mk | 4 ++++ > 2 files changed, 5 insertions(+) > > diff --git a/package/libnetconf2/Config.in b/package/libnetconf2/Config.in > index 7865f9e487..34934325fa 100644 > --- a/package/libnetconf2/Config.in > +++ b/package/libnetconf2/Config.in > @@ -4,6 +4,7 @@ config BR2_PACKAGE_LIBNETCONF2 > depends on BR2_TOOLCHAIN_HAS_THREADS > depends on !BR2_STATIC_LIBS > depends on BR2_USE_MMU > + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC > select BR2_PACKAGE_LIBYANG > help > libnetconf2 is a NETCONF library in C intended for building > diff --git a/package/libnetconf2/libnetconf2.mk b/package/libnetconf2/libnetconf2.mk > index e349c1bce4..88163926c0 100644 > --- a/package/libnetconf2/libnetconf2.mk > +++ b/package/libnetconf2/libnetconf2.mk > @@ -30,6 +30,10 @@ else > LIBNETCONF2_CONF_OPTS += -DENABLE_TLS=OFF > endif > > +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) > +LIBNETCONF2_DEPENDENCIES += libxcrypt > +endif > + > HOST_LIBNETCONF2_CONF_OPTS = \ > -DENABLE_TESTS=OFF \ > -DENABLE_VALGRIND_TESTS=OFF \ > -- > 2.43.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Wed May 1 21:44:40 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 23:44:40 +0200 Subject: [Buildroot] [PATCH] package/petitboot: add libxcrypt optional dependency In-Reply-To: <20240416144818.681220-1-arbab@linux.ibm.com> References: <20240416144818.681220-1-arbab@linux.ibm.com> Message-ID: Reza, All, On 2024-04-16 09:48 -0500, Reza Arbab spake thusly: > Fix the following build failure raised since bump of glibc to version > 2.39 in commit b5680f53d60acf8ff6010082f873438a39bd5d97: > > checking for crypt in -lcrypt... no > configure: error: in `/home/arbab/src/buildroot/output/build/petitboot-1.15': > configure: error: shadow/crypt libs required > > Signed-off-by: Reza Arbab Applied to master, thanks. Regards, Yann E. MORIN. > --- > package/petitboot/Config.in | 1 + > package/petitboot/petitboot.mk | 1 + > 2 files changed, 2 insertions(+) > > diff --git a/package/petitboot/Config.in b/package/petitboot/Config.in > index 533c7a9f2980..66836f31acd8 100644 > --- a/package/petitboot/Config.in > +++ b/package/petitboot/Config.in > @@ -14,6 +14,7 @@ config BR2_PACKAGE_PETITBOOT > # run-time dependencies > select BR2_PACKAGE_KEXEC if !BR2_PACKAGE_KEXEC_LITE_ARCH_SUPPORTS > select BR2_PACKAGE_KEXEC_LITE if BR2_PACKAGE_KEXEC_LITE_ARCH_SUPPORTS && !BR2_PACKAGE_KEXEC > + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC > select BR2_PACKAGE_NVME if ( BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le ) > select BR2_PACKAGE_POWERPC_UTILS if ( BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le ) > help > diff --git a/package/petitboot/petitboot.mk b/package/petitboot/petitboot.mk > index cd7631fa5cae..2eb6461144cd 100644 > --- a/package/petitboot/petitboot.mk > +++ b/package/petitboot/petitboot.mk > @@ -14,6 +14,7 @@ PETITBOOT_DEPENDENCIES = \ > host-bison \ > host-flex \ > lvm2 \ > + $(if $(BR2_PACKAGE_LIBXCRYPT),libxcrypt) \ > $(TARGET_NLS_DEPENDENCIES) > PETITBOOT_LICENSE = GPL-2.0 > PETITBOOT_LICENSE_FILES = COPYING > -- > 2.39.3 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From romain.naour at smile.fr Wed May 1 21:50:26 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 23:50:26 +0200 Subject: [Buildroot] [git commit] ti-k3-r5-loader: support devicetree customization Message-ID: <20240501215206.4C41586542@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=e4981d6756c711e2034072247912bc85d3edae02 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master This is duplicated from the U-Boot makefile & Kconfig. Similarly to U-Boot custom boards sometimes need to adjust the U-Boot devicetree. For example, the AM64x SDRAM controller supports inline ECC which needs to be enabled in the R5 loader devicetree. Please note that some versions of U-Boot have broken external devicetree support and may require manual patching to build. See commit [1] in the U-Boot tree. [1] https://source.denx.de/u-boot/u-boot/-/commit/3609e1dc5f4d4c238dcd23e045ba6223310feffa Signed-off-by: Patrick Oppenlander Signed-off-by: Gero Schw??ricke [Romain: add gitlab URL] Signed-off-by: Romain Naour --- boot/ti-k3-r5-loader/Config.in | 10 ++++++++++ boot/ti-k3-r5-loader/ti-k3-r5-loader.mk | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/boot/ti-k3-r5-loader/Config.in b/boot/ti-k3-r5-loader/Config.in index 6d1adbeac3..df885cc2af 100644 --- a/boot/ti-k3-r5-loader/Config.in +++ b/boot/ti-k3-r5-loader/Config.in @@ -95,6 +95,16 @@ config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_CONFIG_FILE help Path to the TI K3 R5 Loader configuration file. +config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_DTS_PATH + string "Device Tree Source file paths" + help + Space-separated list of paths to device tree source files + that will be copied to arch/arm/dts/ before starting the + build. + + To use this device tree source file, the U-Boot configuration + file must refer to it. + config BR2_TARGET_TI_K3_R5_LOADER_TIBOOT3_BIN string "tiboot3.bin binary name" default "tiboot3.bin" diff --git a/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk b/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk index 891783e40f..98a6d473f1 100644 --- a/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk +++ b/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk @@ -88,7 +88,12 @@ define TI_K3_R5_LOADER_INSTALL_SWSFW_ITB fi endef +TI_K3_R5_LOADER_CUSTOM_DTS_PATH = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_DTS_PATH)) + define TI_K3_R5_LOADER_BUILD_CMDS + $(if $(TI_K3_R5_LOADER_CUSTOM_DTS_PATH), + cp -f $(TI_K3_R5_LOADER_CUSTOM_DTS_PATH) $(@D)/arch/arm/dts/ + ) $(TARGET_CONFIGURE_OPTS) $(TI_K3_R5_LOADER_MAKE) -C $(@D) $(TI_K3_R5_LOADER_MAKE_OPTS) endef From romain.naour at smile.fr Wed May 1 21:53:55 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 23:53:55 +0200 Subject: [Buildroot] [PATCH v2] ti-k3-r5-loader: support devicetree customization In-Reply-To: <20240430133754.1288162-1-gero.schwaericke@grandcentrix.net> References: <20230907003002.474334-1-patrick.oppenlander@gmail.com> <20240430133754.1288162-1-gero.schwaericke@grandcentrix.net> Message-ID: <7b20fc6a-04be-449f-b304-23505c32d4d2@smile.fr> Hello Gero, Le 30/04/2024 ? 15:37, Gero Schw?ricke via buildroot a ?crit?: > This is duplicated from the U-Boot makefile & Kconfig. > > Similarly to U-Boot custom boards sometimes need to adjust the U-Boot > devicetree. For example, the AM64x SDRAM controller supports inline ECC > which needs to be enabled in the R5 loader devicetree. > > Please note that some versions of U-Boot have broken external devicetree > support and may require manual patching to build. See commit > 3609e1dc5f4d4c238dcd23e045ba6223310feffa in the U-Boot tree. I added the URL to gitlab instead: https://source.denx.de/u-boot/u-boot/-/commit/3609e1dc5f4d4c238dcd23e045ba6223310feffa Applied to master, thanks. Best regards, Romain > > Signed-off-by: Patrick Oppenlander > Signed-off-by: Gero Schw?ricke > --- > v1 -> v2: > - make it apply on current master > - move the config option into if BR2_TARGET_TI_K3_R5_LOADER > - fix help string mentioning ARCH though it's fixed to arm in .mk > --- > boot/ti-k3-r5-loader/Config.in | 10 ++++++++++ > boot/ti-k3-r5-loader/ti-k3-r5-loader.mk | 5 +++++ > 2 files changed, 15 insertions(+) > > diff --git a/boot/ti-k3-r5-loader/Config.in b/boot/ti-k3-r5-loader/Config.in > index 6d1adbeac3..df885cc2af 100644 > --- a/boot/ti-k3-r5-loader/Config.in > +++ b/boot/ti-k3-r5-loader/Config.in > @@ -95,6 +95,16 @@ config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_CONFIG_FILE > help > Path to the TI K3 R5 Loader configuration file. > > +config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_DTS_PATH > + string "Device Tree Source file paths" > + help > + Space-separated list of paths to device tree source files > + that will be copied to arch/arm/dts/ before starting the > + build. > + > + To use this device tree source file, the U-Boot configuration > + file must refer to it. > + > config BR2_TARGET_TI_K3_R5_LOADER_TIBOOT3_BIN > string "tiboot3.bin binary name" > default "tiboot3.bin" > diff --git a/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk b/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk > index 891783e40f..98a6d473f1 100644 > --- a/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk > +++ b/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk > @@ -88,7 +88,12 @@ define TI_K3_R5_LOADER_INSTALL_SWSFW_ITB > fi > endef > > +TI_K3_R5_LOADER_CUSTOM_DTS_PATH = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_DTS_PATH)) > + > define TI_K3_R5_LOADER_BUILD_CMDS > + $(if $(TI_K3_R5_LOADER_CUSTOM_DTS_PATH), > + cp -f $(TI_K3_R5_LOADER_CUSTOM_DTS_PATH) $(@D)/arch/arm/dts/ > + ) > $(TARGET_CONFIGURE_OPTS) $(TI_K3_R5_LOADER_MAKE) -C $(@D) $(TI_K3_R5_LOADER_MAKE_OPTS) > endef > From romain.naour at smile.fr Wed May 1 22:01:06 2024 From: romain.naour at smile.fr (Romain Naour) Date: Thu, 2 May 2024 00:01:06 +0200 Subject: [Buildroot] [git commit] configs/visionfive2_defconfig: add hashes for linux/opensbi/u-boot Message-ID: <20240501220202.0E82186550@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=c94df402d52ef656dbe957c3ac20f656f2fb9505 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Enable BR2_DOWNLOAD_FORCE_CHECK_HASHES and set the patch directory. Signed-off-by: Lukasz Tekieli [Romain: remove .checkpackageignore entry] Signed-off-by: Romain Naour --- .checkpackageignore | 1 - board/visionfive2/patches/linux-headers/linux-headers.hash | 1 + board/visionfive2/patches/linux/linux.hash | 2 ++ board/visionfive2/patches/opensbi/opensbi.hash | 2 ++ board/visionfive2/patches/uboot/uboot.hash | 2 ++ configs/visionfive2_defconfig | 2 ++ 6 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.checkpackageignore b/.checkpackageignore index 0b169ea2f1..db23450f03 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -390,7 +390,6 @@ configs/ts5500_defconfig lib_defconfig.ForceCheckHash configs/ts7680_defconfig lib_defconfig.ForceCheckHash configs/uevm5432_defconfig lib_defconfig.ForceCheckHash configs/versal_vck190_defconfig lib_defconfig.ForceCheckHash -configs/visionfive2_defconfig lib_defconfig.ForceCheckHash configs/visionfive_defconfig lib_defconfig.ForceCheckHash configs/wandboard_defconfig lib_defconfig.ForceCheckHash configs/warp7_defconfig lib_defconfig.ForceCheckHash diff --git a/board/visionfive2/patches/linux-headers/linux-headers.hash b/board/visionfive2/patches/linux-headers/linux-headers.hash new file mode 120000 index 0000000000..5808d92afe --- /dev/null +++ b/board/visionfive2/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/visionfive2/patches/linux/linux.hash b/board/visionfive2/patches/linux/linux.hash new file mode 100644 index 0000000000..ccad8068dd --- /dev/null +++ b/board/visionfive2/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9ac322d85bcf98a04667d929f5c2666b15bd58c6c2d68dd512c72acbced07d04 linux-6.8.2.tar.xz diff --git a/board/visionfive2/patches/opensbi/opensbi.hash b/board/visionfive2/patches/opensbi/opensbi.hash new file mode 100644 index 0000000000..bc4058abe6 --- /dev/null +++ b/board/visionfive2/patches/opensbi/opensbi.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 319b62a4186fbce9b81a0c5f0ec9f003a10c808397a72138bc9745d9b87b1eb1 opensbi-1.4.tar.gz diff --git a/board/visionfive2/patches/uboot/uboot.hash b/board/visionfive2/patches/uboot/uboot.hash new file mode 100644 index 0000000000..97a2b4eaf9 --- /dev/null +++ b/board/visionfive2/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 diff --git a/configs/visionfive2_defconfig b/configs/visionfive2_defconfig index 69c44dfbdd..bb8ab082af 100644 --- a/configs/visionfive2_defconfig +++ b/configs/visionfive2_defconfig @@ -1,4 +1,6 @@ BR2_riscv=y +BR2_GLOBAL_PATCH_DIR="board/visionfive2/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y BR2_SYSTEM_DHCP="eth0" BR2_ROOTFS_OVERLAY="board/visionfive2/overlay" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/visionfive2/post-image.sh" From romain.naour at smile.fr Wed May 1 22:03:14 2024 From: romain.naour at smile.fr (Romain Naour) Date: Thu, 2 May 2024 00:03:14 +0200 Subject: [Buildroot] [PATCH 1/1] configs/visionfive2_defconfig: add hashes for linux/opensbi/u-boot In-Reply-To: <20240501190441.496683-1-tekieli.lukasz@gmail.com> References: <20240501190441.496683-1-tekieli.lukasz@gmail.com> Message-ID: Hello Lukasz, Le 01/05/2024 ? 21:04, Lukasz Tekieli a ?crit?: > Enable BR2_DOWNLOAD_FORCE_CHECK_HASHES and set the patch directory. > > Signed-off-by: Lukasz Tekieli Applied to master, thanks. Best regards, Romain > --- > board/visionfive2/patches/linux-headers/linux-headers.hash | 1 + > board/visionfive2/patches/linux/linux.hash | 2 ++ > board/visionfive2/patches/opensbi/opensbi.hash | 2 ++ > board/visionfive2/patches/uboot/uboot.hash | 2 ++ > configs/visionfive2_defconfig | 2 ++ > 5 files changed, 9 insertions(+) > create mode 120000 board/visionfive2/patches/linux-headers/linux-headers.hash > create mode 100644 board/visionfive2/patches/linux/linux.hash > create mode 100644 board/visionfive2/patches/opensbi/opensbi.hash > create mode 100644 board/visionfive2/patches/uboot/uboot.hash > > diff --git a/board/visionfive2/patches/linux-headers/linux-headers.hash b/board/visionfive2/patches/linux-headers/linux-headers.hash > new file mode 120000 > index 0000000000..5808d92afe > --- /dev/null > +++ b/board/visionfive2/patches/linux-headers/linux-headers.hash > @@ -0,0 +1 @@ > +../linux/linux.hash > \ No newline at end of file > diff --git a/board/visionfive2/patches/linux/linux.hash b/board/visionfive2/patches/linux/linux.hash > new file mode 100644 > index 0000000000..ccad8068dd > --- /dev/null > +++ b/board/visionfive2/patches/linux/linux.hash > @@ -0,0 +1,2 @@ > +# Locally calculated > +sha256 9ac322d85bcf98a04667d929f5c2666b15bd58c6c2d68dd512c72acbced07d04 linux-6.8.2.tar.xz > diff --git a/board/visionfive2/patches/opensbi/opensbi.hash b/board/visionfive2/patches/opensbi/opensbi.hash > new file mode 100644 > index 0000000000..bc4058abe6 > --- /dev/null > +++ b/board/visionfive2/patches/opensbi/opensbi.hash > @@ -0,0 +1,2 @@ > +# Locally calculated > +sha256 319b62a4186fbce9b81a0c5f0ec9f003a10c808397a72138bc9745d9b87b1eb1 opensbi-1.4.tar.gz > diff --git a/board/visionfive2/patches/uboot/uboot.hash b/board/visionfive2/patches/uboot/uboot.hash > new file mode 100644 > index 0000000000..97a2b4eaf9 > --- /dev/null > +++ b/board/visionfive2/patches/uboot/uboot.hash > @@ -0,0 +1,2 @@ > +# Locally calculated > +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 > diff --git a/configs/visionfive2_defconfig b/configs/visionfive2_defconfig > index 69c44dfbdd..bb8ab082af 100644 > --- a/configs/visionfive2_defconfig > +++ b/configs/visionfive2_defconfig > @@ -1,4 +1,6 @@ > BR2_riscv=y > +BR2_GLOBAL_PATCH_DIR="board/visionfive2/patches" > +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y > BR2_SYSTEM_DHCP="eth0" > BR2_ROOTFS_OVERLAY="board/visionfive2/overlay" > BR2_ROOTFS_POST_IMAGE_SCRIPT="board/visionfive2/post-image.sh" From romain.naour at smile.fr Wed May 1 22:15:47 2024 From: romain.naour at smile.fr (Romain Naour) Date: Thu, 2 May 2024 00:15:47 +0200 Subject: [Buildroot] [git commit] package/cmake: add BR2_HOST_CMAKE_AT_LEAST_3_28 Message-ID: <20240501221627.18B5986558@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=81d7103a10b6837bfb22c314c90b46adda78bf7d branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Buildroot commit 38d07349daece6393800619ecb3ef98299711819 forgot to add the corresponding BR2_HOST_CMAKE_AT_LEAST_X_Y option. Signed-off-by: Bernd Kuhls Signed-off-by: Romain Naour --- package/cmake/Config.in.host | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/package/cmake/Config.in.host b/package/cmake/Config.in.host index 0935e9a564..c38bb9daaa 100644 --- a/package/cmake/Config.in.host +++ b/package/cmake/Config.in.host @@ -47,10 +47,15 @@ config BR2_HOST_CMAKE_AT_LEAST_3_27 bool select BR2_HOST_CMAKE_AT_LEAST_3_26 +config BR2_HOST_CMAKE_AT_LEAST_3_28 + bool + select BR2_HOST_CMAKE_AT_LEAST_3_27 + # This order guarantees that the highest version is set, as kconfig # stops affecting a value on the first matching default. config BR2_HOST_CMAKE_AT_LEAST string + default "3.28" if BR2_HOST_CMAKE_AT_LEAST_3_28 default "3.27" if BR2_HOST_CMAKE_AT_LEAST_3_27 default "3.26" if BR2_HOST_CMAKE_AT_LEAST_3_26 default "3.25" if BR2_HOST_CMAKE_AT_LEAST_3_25 From romain.naour at smile.fr Wed May 1 22:17:08 2024 From: romain.naour at smile.fr (Romain Naour) Date: Thu, 2 May 2024 00:17:08 +0200 Subject: [Buildroot] [PATCH 1/1] package/cmake: add BR2_HOST_CMAKE_AT_LEAST_3_28 In-Reply-To: <20240413064203.53781-1-bernd@kuhls.net> References: <20240413064203.53781-1-bernd@kuhls.net> Message-ID: <680ac1d8-d61b-4f82-9b04-a24fb2d3e782@smile.fr> Hello Bernd, Le 13/04/2024 ? 08:42, Bernd Kuhls a ?crit?: > Buildroot commit 38d07349daece6393800619ecb3ef98299711819 forgot to > add the corresponding BR2_HOST_CMAKE_AT_LEAST_X_Y option. > > Signed-off-by: Bernd Kuhls > --- > package/cmake/Config.in.host | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/package/cmake/Config.in.host b/package/cmake/Config.in.host > index 0935e9a564..c38bb9daaa 100644 > --- a/package/cmake/Config.in.host > +++ b/package/cmake/Config.in.host > @@ -47,10 +47,15 @@ config BR2_HOST_CMAKE_AT_LEAST_3_27 > bool > select BR2_HOST_CMAKE_AT_LEAST_3_26 > > +config BR2_HOST_CMAKE_AT_LEAST_3_28 > + bool > + select BR2_HOST_CMAKE_AT_LEAST_3_27 > + > # This order guarantees that the highest version is set, as kconfig > # stops affecting a value on the first matching default. > config BR2_HOST_CMAKE_AT_LEAST > string > + default "3.28" if BR2_HOST_CMAKE_AT_LEAST_3_28 > default "3.27" if BR2_HOST_CMAKE_AT_LEAST_3_27 > default "3.26" if BR2_HOST_CMAKE_AT_LEAST_3_26 > default "3.25" if BR2_HOST_CMAKE_AT_LEAST_3_25 Applied to master, thanks. Best regards, Romain From wilfred.opensource at gmail.com Thu May 2 00:27:16 2024 From: wilfred.opensource at gmail.com (Wilfred Mallawa) Date: Thu, 02 May 2024 10:27:16 +1000 Subject: [Buildroot] [PATCH v2 1/1] package/spdm-utils: new package In-Reply-To: <20240402035140.71770-2-wilfred.mallawa@wdc.com> References: <20240402035140.71770-2-wilfred.mallawa@wdc.com> Message-ID: ping! On Tue, 2024-04-02 at 13:51 +1000, Wilfred Mallawa via buildroot wrote: > Signed-off-by: Alistair Francis > Signed-off-by: Wilfred Mallawa > --- > Changes in V2:?????????????????????????????????????????????????? > ??????? - Added required python3 dependencies > ??????? - Now depends on `udev` instead of selecting `eudev` > ??????? - Now depends on `libspdm` > ??????? - Hook define moved below the hook, stylistically similar to > ??????????? other packages > ??????? - Removed cargo package re-vendoring as we aren't patching > ??????? - Changed certificate/manifest installation path to be system > wide. > > ?package/Config.in????????????????? |? 1 + > ?package/spdm-utils/Config.in?????? | 24 ++++++++++++++++++++ > ?package/spdm-utils/spdm-utils.hash |? 2 ++ > ?package/spdm-utils/spdm-utils.mk?? | 36 > ++++++++++++++++++++++++++++++ > ?4 files changed, 63 insertions(+) > ?create mode 100644 package/spdm-utils/Config.in > ?create mode 100644 package/spdm-utils/spdm-utils.hash > ?create mode 100644 package/spdm-utils/spdm-utils.mk > > diff --git a/package/Config.in b/package/Config.in > index 410fe0f493..9572a884e7 100644 > --- a/package/Config.in > +++ b/package/Config.in > @@ -2698,6 +2698,7 @@ comment "Utilities" > ? source "package/screen/Config.in" > ? source "package/screenfetch/Config.in" > ? source "package/sexpect/Config.in" > + source "package/spdm-utils/Config.in" > ? source "package/sudo/Config.in" > ? source "package/terminology/Config.in" > ? source "package/time/Config.in" > diff --git a/package/spdm-utils/Config.in b/package/spdm- > utils/Config.in > new file mode 100644 > index 0000000000..b96365451f > --- /dev/null > +++ b/package/spdm-utils/Config.in > @@ -0,0 +1,24 @@ > +config BR2_PACKAGE_SPDM_UTILS > + bool "spdm-utils" > + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS > + depends on BR2_TOOLCHAIN_HAS_THREADS # python3 > + depends on BR2_USE_WCHAR # eudev > + depends on !BR2_STATIC_LIBS > + depends on BR2_USE_MMU # eudev > + depends on !BR2_STATIC_LIBS? # python3 > + depends on BR2_USE_MMU? # eudev, python3 > + depends on BR2_PACKAGE_HAS_UDEV > + depends on BR2_PACKAGE_LIBSPDM > + select BR2_PACKAGE_HOST_RUSTC > + select BR2_PACKAGE_OPENSSL > + select BR2_PACKAGE_PCIUTILS > + select BR2_PACKAGE_EUDEV > + select BR2_PACKAGE_PYTHON3 > + help > + ? SPDM-Utils is a Linux application designed to support, > + ? test and develop SPDM requesters and responders. > + ? SPDM-Utils uses libspdm as the backend to perform SPDM > + ? communication. SPDM-Utils currently supports the > + ? PCIe Data Object Exchange (DOE) Capability. > + > + ? https://github.com/westerndigitalcorporation/spdm-utils > diff --git a/package/spdm-utils/spdm-utils.hash b/package/spdm- > utils/spdm-utils.hash > new file mode 100644 > index 0000000000..aaa243315e > --- /dev/null > +++ b/package/spdm-utils/spdm-utils.hash > @@ -0,0 +1,2 @@ > +# Locally calculated > +sha256? > 3f06f087220b126262a2becf68c9e06a59d8d613816f82a168c81093de087d1a? > spdm-utils-0.3.0.tar.gz > diff --git a/package/spdm-utils/spdm-utils.mk b/package/spdm- > utils/spdm-utils.mk > new file mode 100644 > index 0000000000..4176f61871 > --- /dev/null > +++ b/package/spdm-utils/spdm-utils.mk > @@ -0,0 +1,36 @@ > +#################################################################### > ############ > +# > +# spdm-utils > +# > +#################################################################### > ############ > + > +SPDM_UTILS_VERSION = 0.3.0 > +SPDM_UTILS_SITE = $(call github,westerndigitalcorporation,spdm- > utils,v$(SPDM_UTILS_VERSION)) > +SPDM_UTILS_LICENSE = Apache-2.0 or MIT > +SPDM_UTILS_DEPENDENCIES += pciutils libspdm openssl udev > + > +# Note that we also copy `setup_certs.sh` and `generate_certs.sh`. > +# `setup_certs.sh` shall be used by a responder to regenerate it's > mutable > +# certificate chain. `generate_certs.sh` can be used to generate a > new > +# certificate chain, which maybe useful in testing and development. > +define SPDM_UTILS_INSTALL_CERTS > + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/local/spdm_certs > + cp -r $(@D)/certs/generate_certs.sh > $(TARGET_DIR)/usr/local/spdm_certs > + cp -r $(@D)/certs/openssl.cnf > $(TARGET_DIR)/usr/local/spdm_certs > + cp -r $(@D)/certs/setup_certs.sh > $(TARGET_DIR)/usr/local/spdm_certs > + > + $(INSTALL) -d -m 0755 > $(TARGET_DIR)/usr/local/spdm_certs/slot0 > + cp $(@D)/certs/slot0/immutable.der > $(TARGET_DIR)/usr/local/spdm_certs/slot0 > + cp $(@D)/certs/slot0/device.cert.der > $(TARGET_DIR)/usr/local/spdm_certs/slot0 > + cp $(@D)/certs/slot0/device.der > $(TARGET_DIR)/usr/local/spdm_certs/slot0 > + cp $(@D)/certs/slot0/device.key > $(TARGET_DIR)/usr/local/spdm_certs/slot0 > + cp $(@D)/certs/slot0/param.pem > $(TARGET_DIR)/usr/local/spdm_certs/slot0 > + cp $(@D)/certs/slot0/bundle_responder.certchain.der > $(TARGET_DIR)/usr/local/spdm_certs/slot0 > + > + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/local/spdm_manifest/ > + cp $(@D)/manifest/manifest.out.cbor > $(TARGET_DIR)/usr/local/spdm_manifest/ > +endef > + > +SPDM_UTILS_POST_INSTALL_TARGET_HOOKS += SPDM_UTILS_INSTALL_CERTS > + > +$(eval $(cargo-package)) From thomas.petazzoni at bootlin.com Thu May 2 04:01:17 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 02 May 2024 04:01:17 -0000 Subject: [Buildroot] [autobuild.buildroot.net] Daily results for 2024-05-01 Message-ID: Hello, Autobuild statistics for 2024-05-01 =================================== branch | OK | NOK | TIM | TOT | 2024.02.x | 5 | 2 | 0 | 7 | master | 20 | 30 | 1 | 51 | Classification of failures by reason for master ----------------------------------------------- unknown | 4 host-heimdal-f4faaeaba371ff... | 2 libressl-3.8.4 | 2 ncmpc-0.49 | 2 python-remi-2022.7.27 | 2 apcupsd-3.14.14 | 1 docker-cli-26.0.2 | 1 fcft-3.1.6 | 1 gnupg2-2.4.5 | 1 gobject-introspection | 1 gobject-introspection-1.76.1 | 1 gst1-plugins-base-1.22.9 | 1 libcamera-apps-1.2.1 | 1 libffi-3.4.6 | 1 libglib2-2.76.1 | 1 linux-6.8.6 | 1 mdadm-4.3 | 1 package/python-pillow/pytho... | 1 pppd-2.5.0 | 1 python-grpcio-1.60.0 | 1 python-numpy-1.25.0 | 1 python-unittest-xml-reporti... | 1 rtty-8.1.0 | 1 util-linux-2.39.3 | 1 Detail of failures for master ----------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- s390x | apcupsd-3.14.14 | NOK | http://autobuild.buildroot.net/results/840c604aa397a17c02d13d4da8d62dd2c3d0a7f3 | riscv64 | docker-cli-26.0.2 | NOK | http://autobuild.buildroot.net/results/a9810f6955c0ba1ea88dfac9d24f11ad87f9d15c | aarch64 | fcft-3.1.6 | NOK | http://autobuild.buildroot.net/results/250d49380776cb4e375697950da317a72bc0702f | mips | gnupg2-2.4.5 | NOK | http://autobuild.buildroot.net/results/c0e9d215885d72da15e4aea7cfe745e884a4eedb | microblazeel | gobject-introspection | TIM | http://autobuild.buildroot.net/results/4e9c73235235325d95195a58818829706ae2ff0a | or1k | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/6c22e40a7894535ea5a7ec1968b347281ef70099 | ORPH sparc | gst1-plugins-base-1.22.9 | NOK | http://autobuild.buildroot.net/results/904f13e64b0cc55281b2494a7358a7e024f84cfb | ORPH mipsel | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/c037a3cd55364373f04b7ab04c3811a138601543 | ORPH mipsel | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/8651ea1a2d4227c578f0bbdc29c62dd406e18850 | ORPH riscv32 | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/b2b5f248147b83235a239e4a98491534f2630e40 | arceb | libffi-3.4.6 | NOK | http://autobuild.buildroot.net/results/cdcb74b5dd38cddd3d572d7896941ea941e1bdbb | arc | libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/4b272a00a51fed049de3ca230c1d8eccad0f0f95 | sh4a | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/4af728083a74e05ec212fe7b0e9c5536888af54f | ORPH powerpc64le | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/85469717aaf9a392b6d01351c946cd9f4feb5ffa | ORPH mips64el | linux-6.8.6 | NOK | http://autobuild.buildroot.net/results/6e7489859056e2c463a6fdce922779a54b9545bc | ORPH sparc | mdadm-4.3 | NOK | http://autobuild.buildroot.net/results/1a9dfa8284c7d40600e627e199b790137e0e8b69 | ORPH sparc64 | ncmpc-0.49 | NOK | http://autobuild.buildroot.net/results/8ced1eaadf2f0791d4a41534ea7d422dd129f5fc | riscv32 | ncmpc-0.49 | NOK | http://autobuild.buildroot.net/results/9498202579ba4b5cdfb53a44b12b360a092b9222 | arm | package/python-pillow/pytho... | NOK | http://autobuild.buildroot.net/results/5a35d83c73367e1b20534b1bc7f2f564cf653a38 | i686 | pppd-2.5.0 | NOK | http://autobuild.buildroot.net/results/9c94c7ba1c647dfa5acc1b3ac119dc430a1c3323 | i686 | python-grpcio-1.60.0 | NOK | http://autobuild.buildroot.net/results/97379583f6ad5bb5f5eaba27cc5cb088c72426b0 | x86_64 | python-numpy-1.25.0 | NOK | http://autobuild.buildroot.net/results/941ca83ff4b0917a544e9504928c1c20df0af407 | mipsel | python-remi-2022.7.27 | NOK | http://autobuild.buildroot.net/results/5762af9b2135e4fc37e51af644ee8ecd2fdd6194 | powerpc64le | python-remi-2022.7.27 | NOK | http://autobuild.buildroot.net/results/e5b6f74548e30a1671f0f461831debb935b46548 | mips64el | python-unittest-xml-reporti... | NOK | http://autobuild.buildroot.net/results/b46d6a36aed395ff17146f642ba8bf204d523d0f | mips64el | rtty-8.1.0 | NOK | http://autobuild.buildroot.net/results/da46149b389d03c54b5c9fb6cfdbfe519ee76f5d | microblazeel | unknown | NOK | http://autobuild.buildroot.net/results/3549652c813380f6ae3ff12fca6a174b3cffe47f | arceb | unknown | NOK | http://autobuild.buildroot.net/results/e7ed01ce4680468eb44312ae6bfa9872b1327919 | arm | unknown | NOK | http://autobuild.buildroot.net/results/5a604753b53ac14a507415fea9645cd156fd1552 | or1k | unknown | NOK | http://autobuild.buildroot.net/results/27ddf3d79e06df38afda8501866bd3166df41290 | arm | util-linux-2.39.3 | NOK | http://autobuild.buildroot.net/results/5183fc3b834d23a2df82bb10caa518510a34d031 | ORPH Classification of failures by reason for 2024.02.x -------------------------------------------------- apcupsd-3.14.14 | 1 libcamera-apps-1.2.1 | 1 Detail of failures for 2024.02.x -------------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- x86_64 | apcupsd-3.14.14 | NOK | http://autobuild.buildroot.net/results/52aedc9f581140570aa2654717badfd49d925a4f | sparc | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/49f7edc0e43f01ea711c2fac689a6111a4d659c8 | -- http://autobuild.buildroot.net From dm.chestnykh at gmail.com Thu May 2 04:55:16 2024 From: dm.chestnykh at gmail.com (Dmitry Chestnykh) Date: Thu, 2 May 2024 07:55:16 +0300 Subject: [Buildroot] [PATCH v2 1/3] package/uclibc: Bump to 1.0.48. Message-ID: <20240502045518.4875-1-dm.chestnykh@gmail.com> - In 1.0.48 release uClibc-ng has provided the fix for SPARC related to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784 - The hash for COPYING.LIB was changed because '^L' (0x0C) characters were removed from COPYING.LIB in uClibc-ng repo. Signed-off-by: Dmitry Chestnykh --- v1 -> v2: - Describe the change of COPYING.LIB hash. --- package/uclibc/uclibc.hash | 6 +++--- package/uclibc/uclibc.mk | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/uclibc/uclibc.hash b/package/uclibc/uclibc.hash index a10ceab54c..7097bbf99a 100644 --- a/package/uclibc/uclibc.hash +++ b/package/uclibc/uclibc.hash @@ -1,4 +1,4 @@ -# From https://downloads.uclibc-ng.org/releases/1.0.47/uClibc-ng-1.0.47.tar.xz.sha256 -sha256 29a4d684a06da344ee3ee09acc2ca7649d592ae3ff848f698145c46def05efcb uClibc-ng-1.0.47.tar.xz +# From https://downloads.uclibc-ng.org/releases/1.0.47/uClibc-ng-1.0.48.tar.xz.sha256 +sha256 3bf5fc6cc5cbc454b6c478424755c6f71e7c15578a2c966f02606aa5c5596e21 uClibc-ng-1.0.48.tar.xz # Locally calculated -sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 COPYING.LIB +sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING.LIB diff --git a/package/uclibc/uclibc.mk b/package/uclibc/uclibc.mk index a7b18133ff..9593e18d45 100644 --- a/package/uclibc/uclibc.mk +++ b/package/uclibc/uclibc.mk @@ -4,7 +4,7 @@ # ################################################################################ -UCLIBC_VERSION = 1.0.47 +UCLIBC_VERSION = 1.0.48 UCLIBC_SOURCE = uClibc-ng-$(UCLIBC_VERSION).tar.xz UCLIBC_SITE = https://downloads.uclibc-ng.org/releases/$(UCLIBC_VERSION) UCLIBC_LICENSE = LGPL-2.1+ -- 2.44.0 From dm.chestnykh at gmail.com Thu May 2 04:55:17 2024 From: dm.chestnykh at gmail.com (Dmitry Chestnykh) Date: Thu, 2 May 2024 07:55:17 +0300 Subject: [Buildroot] [PATCH v2 2/3] arch/Config.in: Allow building buildroot toolchain. In-Reply-To: <20240502045518.4875-1-dm.chestnykh@gmail.com> References: <20240502045518.4875-1-dm.chestnykh@gmail.com> Message-ID: <20240502045518.4875-2-dm.chestnykh@gmail.com> With this patch series we allow it again because SPARC was fixed in uClibc-ng so SPARC systems works fine now. Signed-off-by: Dmitry Chestnykh --- v1 -> v2: - Split the patch into two parts: this part allows building buildroot toolchain for SPARC. --- arch/Config.in | 5 ----- 1 file changed, 5 deletions(-) diff --git a/arch/Config.in b/arch/Config.in index 9912f9fce6..e7349e83ae 100644 --- a/arch/Config.in +++ b/arch/Config.in @@ -216,11 +216,6 @@ config BR2_sh config BR2_sparc bool "SPARC" select BR2_USE_MMU - # uClibc-ng broken on sparc due to recent gcc changes - # that need to be reverted since gcc 8.4, 9.3 and 10.1. - # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784 - # gcc <= 10.x has been removed from Buildroot. - select BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT help SPARC (from Scalable Processor Architecture) is a RISC instruction set architecture (ISA) developed by Sun -- 2.44.0 From dm.chestnykh at gmail.com Thu May 2 04:55:18 2024 From: dm.chestnykh at gmail.com (Dmitry Chestnykh) Date: Thu, 2 May 2024 07:55:18 +0300 Subject: [Buildroot] [PATCH v2 3/3] configs/qemu_sparc_ss10_defconfig: Re-introduce. In-Reply-To: <20240502045518.4875-1-dm.chestnykh@gmail.com> References: <20240502045518.4875-1-dm.chestnykh@gmail.com> Message-ID: <20240502045518.4875-3-dm.chestnykh@gmail.com> With uClibc-ng-1.0.48 we can restore this config because uClibc-ng was provided the fix for SPARC. Signed-off-by: Dmitry Chestnykh --- v1 -> v2: - Split the patch into two parts: This part re-introduces defconfig. - Removal of GCC patch was rejected because gcc-8.4 is only used for PowerPC. --- configs/qemu_sparc_ss10_defconfig | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 configs/qemu_sparc_ss10_defconfig diff --git a/configs/qemu_sparc_ss10_defconfig b/configs/qemu_sparc_ss10_defconfig new file mode 100644 index 0000000000..a8e3df9180 --- /dev/null +++ b/configs/qemu_sparc_ss10_defconfig @@ -0,0 +1,28 @@ +# Architecture +BR2_sparc=y +BR2_sparc_v8=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_AS_KERNEL=y + +# Linux kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.6" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sparc-ss10/linux.config" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y -- 2.44.0 From arnout at mind.be Thu May 2 07:00:49 2024 From: arnout at mind.be (Arnout Vandecappelle) Date: Thu, 2 May 2024 09:00:49 +0200 Subject: [Buildroot] [PATCH 07/15 v2] support/testing: add test for export-subst support in git-download In-Reply-To: References: Message-ID: On 01/05/2024 23:23, Yann E. MORIN wrote: > Arnout, All, > > On 2024-05-01 23:13 +0200, Arnout Vandecappelle spake thusly: >> On 27/04/2024 20:37, Yann E. MORIN wrote: >>> Signed-off-by: Yann E. MORIN >>> --- >>> .../package/export-subst/export-subst.hash | 1 + >>> .../git-hash/package/export-subst/export-subst.mk | 10 ++++++++++ >>> .../05/482df734b3715b849ef4a3147a9b1b1f8cca38 | Bin 0 -> 35 bytes >>> .../0f/db95cf4f3c5ed4003287649cabb33c5f843e26 | Bin 0 -> 197 bytes >>> .../68/28f88dcb0e88b8cd738ad6044ce74d7a9a13c8 | Bin 0 -> 28 bytes >>> .../6d/a12b257e47f6089612fe97a8746d2d9c4ca0e0 | Bin 0 -> 112 bytes >> >> Since the git repo is included as binary, we can't see what is in there. > > Yes, I did that way before the xz fiasco... :-/ > See below. > > [--SNIP--] >> I think it would be worth to change is in order to test that no recursive >> expansion takes place. I.e., use this as the commit message: >> >> Subject: [PATCH] file2: test export-subst >> >> Test that strings like $Format:%H$ are expanded when the export-subst >> attribute is set on a file. >> >> Signed-off-by: Yann E. MORIN >> >> >> And in the file, put this: >> >> $Format:%B$ >> >> I haven't made this change though. > > Worth a try. Can we do that in a follow-up patch? Of course, that was the idea. I had hoped that by the time you would reply I would already have pushed the series :-) >> (BTW, another nice change would be to generate the git repository on the >> fly from the test infrastructure, based on a series of patches that are >> git-am'ed and with GIT_COMMITTER_NAME, GIT_COMMITER_EMAIL and >> GIT_COMMITTER_DATE values set to fixed values.) > > Yes, this is on my todo-list, I know, this was more for the benefit of the list :-) > and I have alsready testedt that indeed > that generates a reproducible git tree. Note that for the runtime tests, it isn't actually necessary that the git repository is exactly the same. We only need the commit hashes to be the same, so we do need the GIT_COMMITTER_NAME etc. to be set. I think it would be very hard to make sure the repository is bit-for-bit identical, because git decides pretty much autonomously when to e.g. create a pack. Regards, Arnout From dario.binacchi at amarulasolutions.com Thu May 2 07:23:26 2024 From: dario.binacchi at amarulasolutions.com (Dario Binacchi) Date: Thu, 2 May 2024 09:23:26 +0200 Subject: [Buildroot] [PATCH v2 1/2] package/qemu: fix disabling fp-bench test compilation Message-ID: <20240502072327.741463-1-dario.binacchi@amarulasolutions.com> With the bump to version 8.1.1, the patch that disabled the compilation of the fp-bench test is no longer applicable, even though the package compilation process does not report any errors in applying the patch itself. The new patch does not disable the test by default but only if the file fenv.h is not missing, with the hope that this approach will be considered acceptable by the maintainer and merged upstream. The patch is an adaptation of the one sent upstream. Link: https://lists.nongnu.org/archive/html/qemu-devel/2021-03/msg00492.html Signed-off-by: Dario Binacchi --- Changes v1 -> v2 - Replace [Upstream status: ] with Upstream: - Drop the added line to .checkpackageignore .checkpackageignore | 1 - ...fp-disable-fp-bench-build-by-default.patch | 28 ----------- ...on-t-build-fp-bench-test-if-fenv.h-i.patch | 49 +++++++++++++++++++ 3 files changed, 49 insertions(+), 29 deletions(-) delete mode 100644 package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch create mode 100644 package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch diff --git a/.checkpackageignore b/.checkpackageignore index db23450f0381..3693b770cf4d 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -1360,7 +1360,6 @@ package/python3/0028-fix-building-on-older-distributions.patch lib_patch.Upstrea package/python3/0029-configure.ac-fixup-CC-print-multiarch-output-for-mus.patch lib_patch.Upstream package/python3/0030-Add-an-option-to-disable-the-berkeleydb-module.patch lib_patch.Upstream package/python3/0031-lib-crypt-uClibc-ng-doesn-t-set-errno-when-encryptio.patch lib_patch.Upstream -package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch lib_patch.Upstream package/qemu/0002-softmmu-qemu-seccomp.c-add-missing-header-for-CLONE_.patch lib_patch.Upstream package/qextserialport/0001-Create-a-main-include-file-QExtSerialPort.patch lib_patch.Upstream package/qextserialport/0002-Tell-qmake-to-add-a-pkgconfig-file-to-ease-usage-wit.patch lib_patch.Upstream diff --git a/package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch b/package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch deleted file mode 100644 index fb7a9a69897b..000000000000 --- a/package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 83d976d6d7f0357659d5daa0f01c52048a609e88 Mon Sep 17 00:00:00 2001 -From: Romain Naour -Date: Wed, 25 Aug 2021 21:55:53 +0200 -Subject: [PATCH] tests/fp: disable fp-bench build by default - -Fixes: -https://lists.nongnu.org/archive/html/qemu-devel/2021-03/msg00947.html - -Signed-off-by: Romain Naour ---- - tests/fp/meson.build | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/tests/fp/meson.build b/tests/fp/meson.build -index 8bd0979f67..2fe019d2c6 100644 ---- a/tests/fp/meson.build -+++ b/tests/fp/meson.build -@@ -640,6 +640,7 @@ fpbench = executable( - dependencies: [qemuutil], - include_directories: [sfinc, include_directories(tfdir)], - c_args: fpcflags, -+ build_by_default: false, - ) - - fptestlog2 = executable( --- -2.35.1 - diff --git a/package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch b/package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch new file mode 100644 index 000000000000..b7e41d6f232c --- /dev/null +++ b/package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch @@ -0,0 +1,49 @@ +From b4a692f46135af1011bf0adbfeb19abf354ca191 Mon Sep 17 00:00:00 2001 +From: Dario Binacchi +Date: Tue, 30 Apr 2024 09:40:55 +0200 +Subject: [PATCH] tests/fp/meson: don't build fp-bench test if fenv.h is + missing + +The fp-bench test (i. e. tests/fp/fp-bench.c) use fenv.h that is not +always provided by the libc (uClibc). The patch disables its compilation +in case the header is not available. + +The patch is based on a suggestion from Paolo Bonzini, which you can +find at the following link. + +Link: https://lists.nongnu.org/archive/html/qemu-devel/2021-03/msg00492.html +Suggested-by: Paolo Bonzini +Signed-off-by: Dario Binacchi +Upstream: https://patchwork.ozlabs.org/project/qemu-devel/patch/20240430164752.645521-1-dario.binacchi at amarulasolutions.com/ +--- + tests/fp/meson.build | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +diff --git a/tests/fp/meson.build b/tests/fp/meson.build +index cbc17392d678..cd052667e940 100644 +--- a/tests/fp/meson.build ++++ b/tests/fp/meson.build +@@ -126,12 +126,14 @@ test('fp-test-mulAdd', fptest, + ['f16_mulAdd', 'f32_mulAdd', 'f64_mulAdd', 'f128_mulAdd'], + suite: ['softfloat-slow', 'softfloat-ops-slow', 'slow'], timeout: 90) + +-executable( +- 'fp-bench', +- ['fp-bench.c', '../../fpu/softfloat.c'], +- dependencies: [qemuutil, libtestfloat, libsoftfloat], +- c_args: fpcflags, +-) ++if cc.has_header('fenv.h') ++ executable( ++ 'fp-bench', ++ ['fp-bench.c', '../../fpu/softfloat.c'], ++ dependencies: [qemuutil, libtestfloat, libsoftfloat], ++ c_args: fpcflags, ++ ) ++endif + + fptestlog2 = executable( + 'fp-test-log2', +-- +2.43.0 + -- 2.43.0 From dario.binacchi at amarulasolutions.com Thu May 2 07:23:27 2024 From: dario.binacchi at amarulasolutions.com (Dario Binacchi) Date: Thu, 2 May 2024 09:23:27 +0200 Subject: [Buildroot] [PATCH v2 2/2] package/qemu: renumber patch In-Reply-To: <20240502072327.741463-1-dario.binacchi@amarulasolutions.com> References: <20240502072327.741463-1-dario.binacchi@amarulasolutions.com> Message-ID: <20240502072327.741463-2-dario.binacchi@amarulasolutions.com> Commit 3fa1ae00681ca ("package/qemu: add option to enable tracing") added a patch with a wrong number. Signed-off-by: Dario Binacchi --- Changes v1 -> v2 - Replace [Upstream status: ] with Upstream: - Drop the added line to .checkpackageignore ...003-tracing-install-trace-events-file-only-if-necessary.patch} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename package/qemu/{0004-tracing-install-trace-events-file-only-if-necessary.patch => 0003-tracing-install-trace-events-file-only-if-necessary.patch} (100%) diff --git a/package/qemu/0004-tracing-install-trace-events-file-only-if-necessary.patch b/package/qemu/0003-tracing-install-trace-events-file-only-if-necessary.patch similarity index 100% rename from package/qemu/0004-tracing-install-trace-events-file-only-if-necessary.patch rename to package/qemu/0003-tracing-install-trace-events-file-only-if-necessary.patch -- 2.43.0 From thomas.petazzoni at bootlin.com Thu May 2 07:43:37 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:43:37 +0200 Subject: [Buildroot] [git commit] package/catch2: bump to version 3.5.4 Message-ID: <20240502074354.65A5886582@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=30a88f4ab07a1ae7e9860d2f07960d994c6008dc branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Michael Nosthoff Signed-off-by: Thomas Petazzoni --- package/catch2/catch2.hash | 2 +- package/catch2/catch2.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/catch2/catch2.hash b/package/catch2/catch2.hash index 5136785513..ec3450836a 100644 --- a/package/catch2/catch2.hash +++ b/package/catch2/catch2.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 269543a49eb76f40b3f93ff231d4c24c27a7e16c90e47d2e45bcc564de470c6e catch2-3.5.2.tar.gz +sha256 b7754b711242c167d8f60b890695347f90a1ebc95949a045385114165d606dbb catch2-3.5.4.tar.gz sha256 c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566 LICENSE.txt diff --git a/package/catch2/catch2.mk b/package/catch2/catch2.mk index ee0940642f..918f1b4319 100644 --- a/package/catch2/catch2.mk +++ b/package/catch2/catch2.mk @@ -4,7 +4,7 @@ # ################################################################################ -CATCH2_VERSION = 3.5.2 +CATCH2_VERSION = 3.5.4 CATCH2_SITE = $(call github,catchorg,Catch2,v$(CATCH2_VERSION)) CATCH2_INSTALL_STAGING = YES CATCH2_INSTALL_TARGET = NO From thomas.petazzoni at bootlin.com Thu May 2 07:43:38 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:43:38 +0200 Subject: [Buildroot] [git commit] package/uuu: bump to version 1.5.179 Message-ID: <20240502074354.7581D86556@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=6c1b31ff1a0793e44a8ab6d057ff2e80c14a1e1f branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master - Provide macos arm prebuild version. Release notes: https://github.com/nxp-imx/mfgtools/releases/tag/uuu_1.5.179 Signed-off-by: Dario Binacchi Signed-off-by: Thomas Petazzoni --- package/uuu/uuu.hash | 2 +- package/uuu/uuu.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/uuu/uuu.hash b/package/uuu/uuu.hash index 0f746a7633..cc78f6785b 100644 --- a/package/uuu/uuu.hash +++ b/package/uuu/uuu.hash @@ -1,3 +1,3 @@ # locally computed -sha256 fac38e93714181fbfb0ff52b9cd29395c7eb342def5c3857da87e5429beb3927 uuu_source-uuu_1.5.177.tar.gz +sha256 6742a0c3b1e5b3b892963473f65e2770462f3bf2871424b800ffa0ed159feb84 uuu_source-uuu_1.5.179.tar.gz sha256 cc8d47f7b9260f6669ecd41c24554c552f17581d81ee8fc602c6d23edb8bf495 LICENSE diff --git a/package/uuu/uuu.mk b/package/uuu/uuu.mk index b6611dc3d4..b633bd70db 100644 --- a/package/uuu/uuu.mk +++ b/package/uuu/uuu.mk @@ -4,7 +4,7 @@ # ################################################################################ -UUU_VERSION = 1.5.177 +UUU_VERSION = 1.5.179 UUU_SOURCE = uuu_source-uuu_$(UUU_VERSION).tar.gz UUU_SITE = https://github.com/NXPmicro/mfgtools/releases/download/uuu_$(UUU_VERSION) UUU_LICENSE = BSD 3-Clause "New" or "Revised" License From thomas.petazzoni at bootlin.com Thu May 2 07:45:05 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:45:05 +0200 Subject: [Buildroot] [PATCH 1/1] package/uuu: bump to version 1.5.179 In-Reply-To: <20240415083612.3754176-1-dario.binacchi@amarulasolutions.com> References: <20240415083612.3754176-1-dario.binacchi@amarulasolutions.com> Message-ID: <20240502094505.116b8a3c@windsurf> On Mon, 15 Apr 2024 10:36:12 +0200 Dario Binacchi wrote: > - Provide macos arm prebuild version. > > Release notes: > https://github.com/nxp-imx/mfgtools/releases/tag/uuu_1.5.179 > > Signed-off-by: Dario Binacchi > --- > package/uuu/uuu.hash | 2 +- > package/uuu/uuu.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 07:45:09 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:45:09 +0200 Subject: [Buildroot] [PATCH] package/shadow: enable on uclibc In-Reply-To: References: Message-ID: <20240502094509.2ab81b47@windsurf> On Mon, 15 Apr 2024 06:36:23 +0200 Waldemar Brodkorb wrote: > Package was disabled with commit > 8035ea0a712eaa16d2ac96cd29db0e8726b0f685 because of missing features > in uClibc-ng. In uClibc-ng 1.0.47 the missing feature were added, > so enable shadow again. > > Signed-off-by: Waldemar Brodkorb > --- > package/shadow/Config.in | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 07:44:27 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:44:27 +0200 Subject: [Buildroot] [git commit] package/shadow: enable on uclibc Message-ID: <20240502074550.DFCB686587@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=7e3963cb5e0cbabacb27f763c4ad9e283ecae4fe branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Package was disabled with commit 8035ea0a712eaa16d2ac96cd29db0e8726b0f685 because of missing features in uClibc-ng. In uClibc-ng 1.0.47 the missing feature were added, so enable shadow again. Signed-off-by: Waldemar Brodkorb Signed-off-by: Thomas Petazzoni --- package/shadow/Config.in | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/package/shadow/Config.in b/package/shadow/Config.in index 987605c7fa..bbbea811ce 100644 --- a/package/shadow/Config.in +++ b/package/shadow/Config.in @@ -2,7 +2,6 @@ menuconfig BR2_PACKAGE_SHADOW bool "shadow" depends on !BR2_STATIC_LIBS depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 - depends on !BR2_TOOLCHAIN_USES_UCLIBC # reallocarray, explicit_bzero select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC help Utilities to deal with user accounts. @@ -57,6 +56,5 @@ config BR2_PACKAGE_SHADOW_YESCRYPT endif # BR2_PACKAGE_SHADOW -comment "shadow needs a glibc or musl toolchain w/ headers >= 4.14, dynamic library" - depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 || \ - BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_UCLIBC +comment "shadow needs a toolchain w/ headers >= 4.14, dynamic library" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 || BR2_STATIC_LIBS From thomas.petazzoni at bootlin.com Thu May 2 07:45:19 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:45:19 +0200 Subject: [Buildroot] [git commit] package/intel-gmmlib: bump version to 22.3.19 Message-ID: <20240502074841.81842865E2@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=d476d2e7e53a92d4e2c038875cb3255dfb11d167 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/intel-gmmlib/intel-gmmlib.hash | 2 +- package/intel-gmmlib/intel-gmmlib.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/intel-gmmlib/intel-gmmlib.hash b/package/intel-gmmlib/intel-gmmlib.hash index d9cad026c4..aadf01a169 100644 --- a/package/intel-gmmlib/intel-gmmlib.hash +++ b/package/intel-gmmlib/intel-gmmlib.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 381f7ad104e3d0d8dd6c3ec0c8304e410a479c439e72db35c83fb7e2b0ec556f intel-gmmlib-22.3.18.tar.gz +sha256 ea9c418b0fd84a982850f230cb2d783dfe2e1f9923065f54b2fcaad1e9b33417 intel-gmmlib-22.3.19.tar.gz sha256 8b7446825df3f8b0268307e272aa6aaaf78351c83161d860d02c913c22666c48 LICENSE.md diff --git a/package/intel-gmmlib/intel-gmmlib.mk b/package/intel-gmmlib/intel-gmmlib.mk index 94a07ebfb8..74e19e93fd 100644 --- a/package/intel-gmmlib/intel-gmmlib.mk +++ b/package/intel-gmmlib/intel-gmmlib.mk @@ -4,7 +4,7 @@ # ################################################################################ -INTEL_GMMLIB_VERSION = 22.3.18 +INTEL_GMMLIB_VERSION = 22.3.19 INTEL_GMMLIB_SITE = https://github.com/intel/gmmlib/archive INTEL_GMMLIB_LICENSE = MIT INTEL_GMMLIB_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Thu May 2 07:45:28 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:45:28 +0200 Subject: [Buildroot] [git commit] package/libcap-ng: bump version to 0.8.5 Message-ID: <20240502074841.9486386586@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=ce486bf62ad4e6f00a6e2bab16b55a960cbbc079 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Switched _SITE to https. Changelog: https://people.redhat.com/sgrubb/libcap-ng/ChangeLog Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/libcap-ng/Config.in | 2 +- package/libcap-ng/libcap-ng.hash | 2 +- package/libcap-ng/libcap-ng.mk | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/libcap-ng/Config.in b/package/libcap-ng/Config.in index 46f0b69ca4..bee66b3357 100644 --- a/package/libcap-ng/Config.in +++ b/package/libcap-ng/Config.in @@ -7,4 +7,4 @@ config BR2_PACKAGE_LIBCAP_NG running applications and print out any capabilities and whether or not it has an open ended bounding set. - http://people.redhat.com/sgrubb/libcap-ng/ + https://people.redhat.com/sgrubb/libcap-ng/ diff --git a/package/libcap-ng/libcap-ng.hash b/package/libcap-ng/libcap-ng.hash index bb4280368d..022dd1f895 100644 --- a/package/libcap-ng/libcap-ng.hash +++ b/package/libcap-ng/libcap-ng.hash @@ -1,4 +1,4 @@ # Locally calculated -sha256 68581d3b38e7553cb6f6ddf7813b1fc99e52856f21421f7b477ce5abd2605a8a libcap-ng-0.8.4.tar.gz +sha256 3ba5294d1cbdfa98afaacfbc00b6af9ed2b83e8a21817185dfd844cc8c7ac6ff libcap-ng-0.8.5.tar.gz sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING sha256 f18a0811fa0e220ccbc42f661545e77f0388631e209585ed582a1c693029c6aa COPYING.LIB diff --git a/package/libcap-ng/libcap-ng.mk b/package/libcap-ng/libcap-ng.mk index 2ec88810b4..9c8012b238 100644 --- a/package/libcap-ng/libcap-ng.mk +++ b/package/libcap-ng/libcap-ng.mk @@ -4,8 +4,8 @@ # ################################################################################ -LIBCAP_NG_VERSION = 0.8.4 -LIBCAP_NG_SITE = http://people.redhat.com/sgrubb/libcap-ng +LIBCAP_NG_VERSION = 0.8.5 +LIBCAP_NG_SITE = https://people.redhat.com/sgrubb/libcap-ng LIBCAP_NG_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (library) LIBCAP_NG_LICENSE_FILES = COPYING COPYING.LIB LIBCAP_NG_CPE_ID_VALID = YES From thomas.petazzoni at bootlin.com Thu May 2 07:45:44 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:45:44 +0200 Subject: [Buildroot] [git commit] package/libinput: bump version to 1.25.0 Message-ID: <20240502074841.B3CF4865E7@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=61bb21db97637b36acb4d6b874aa4a41c665cc54 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Release notes: https://lists.freedesktop.org/archives/wayland-devel/2023-August/042967.html https://lists.freedesktop.org/archives/wayland-devel/2024-January/043396.html Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/libinput/libinput.hash | 2 +- package/libinput/libinput.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/libinput/libinput.hash b/package/libinput/libinput.hash index f6a67fc1ed..643cb16213 100644 --- a/package/libinput/libinput.hash +++ b/package/libinput/libinput.hash @@ -1,5 +1,5 @@ # Locally computed -sha256 fad7011705a21f500229199f789f3e3e794b4c9826b70073745cdaec23bc1d0b libinput-1.23.0.tar.bz2 +sha256 193bd592298bd9e369c0ef3e5d83a6a9d68ddc4cd3dfc84bbe77920a8d0d57df libinput-1.25.0.tar.bz2 # License files sha256 80de50b2022a840db044c56db804ca3565600a692c0714babface587acc6d1b0 COPYING diff --git a/package/libinput/libinput.mk b/package/libinput/libinput.mk index a4d30b5910..499ed5ff4b 100644 --- a/package/libinput/libinput.mk +++ b/package/libinput/libinput.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBINPUT_VERSION = 1.23.0 +LIBINPUT_VERSION = 1.25.0 LIBINPUT_SOURCE = libinput-$(LIBINPUT_VERSION).tar.bz2 LIBINPUT_SITE = https://gitlab.freedesktop.org/libinput/libinput/-/archive/$(LIBINPUT_VERSION) LIBINPUT_DEPENDENCIES = host-pkgconf libevdev mtdev udev From thomas.petazzoni at bootlin.com Thu May 2 07:45:16 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:45:16 +0200 Subject: [Buildroot] [git commit] package/tor: bump version to 0.4.8.11 Message-ID: <20240502074841.7242B865E0@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=f1723c93b59c021f16181b3ac62397b128cb9677 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Release notes: https://gitlab.torproject.org/tpo/core/tor/-/raw/release-0.4.8/ReleaseNotes https://forum.torproject.org/t/stable-release-0-4-8-11/12265 Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/tor/tor.hash | 4 ++-- package/tor/tor.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/tor/tor.hash b/package/tor/tor.hash index 8cc8eb435f..4052f11736 100644 --- a/package/tor/tor.hash +++ b/package/tor/tor.hash @@ -1,4 +1,4 @@ -# From https://dist.torproject.org/tor-0.4.8.10.tar.gz.sha256sum -sha256 e628b4fab70edb4727715b23cf2931375a9f7685ac08f2c59ea498a178463a86 tor-0.4.8.10.tar.gz +# From https://dist.torproject.org/tor-0.4.8.11.tar.gz.sha256sum +sha256 8f2bdf90e63380781235aa7d604e159570f283ecee674670873d8bb7052c8e07 tor-0.4.8.11.tar.gz # Locally computed sha256 47b54ed17e8fdcab3c44729a1789a09b208f9a63a845a7e50def9df729eebad0 LICENSE diff --git a/package/tor/tor.mk b/package/tor/tor.mk index 12dcf3f07c..9986a5f472 100644 --- a/package/tor/tor.mk +++ b/package/tor/tor.mk @@ -4,7 +4,7 @@ # ################################################################################ -TOR_VERSION = 0.4.8.10 +TOR_VERSION = 0.4.8.11 TOR_SITE = https://dist.torproject.org TOR_LICENSE = BSD-3-Clause TOR_LICENSE_FILES = LICENSE From thomas.petazzoni at bootlin.com Thu May 2 07:45:35 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:45:35 +0200 Subject: [Buildroot] [git commit] package/libdeflate: bump version to 1.20 Message-ID: <20240502074841.9F75E865E3@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=20b4739c4e113cfd41898f2f1cf3f3c2a06ba21b branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Release notes: ttps://github.com/ebiggers/libdeflate/blob/master/NEWS.md Build-tested using this defconfig BR2_PACKAGE_LIBDEFLATE=y arm-aarch64 [ 1/42]: OK bootlin-aarch64-glibc [ 2/42]: OK bootlin-arcle-hs38-uclibc [ 3/42]: OK bootlin-armv5-uclibc [ 4/42]: OK bootlin-armv7-glibc [ 5/42]: OK bootlin-armv7m-uclibc [ 6/42]: OK bootlin-armv7-musl [ 7/42]: OK bootlin-m68k-5208-uclibc [ 8/42]: OK bootlin-m68k-68040-uclibc [ 9/42]: OK bootlin-microblazeel-uclibc [10/42]: OK bootlin-mipsel32r6-glibc [11/42]: OK bootlin-mipsel-uclibc [12/42]: OK bootlin-nios2-glibc [13/42]: OK bootlin-openrisc-uclibc [14/42]: OK bootlin-powerpc64le-power8-glibc [15/42]: OK bootlin-powerpc-e500mc-uclibc [16/42]: OK bootlin-riscv32-glibc [17/42]: OK bootlin-riscv64-glibc [18/42]: OK bootlin-riscv64-musl [19/42]: OK bootlin-s390x-z13-glibc [20/42]: OK bootlin-sh4-uclibc [21/42]: OK bootlin-sparc64-glibc [22/42]: OK bootlin-sparc-uclibc [23/42]: OK bootlin-x86-64-glibc [24/42]: OK bootlin-x86-64-musl [25/42]: OK bootlin-x86-64-uclibc [26/42]: OK bootlin-xtensa-uclibc [27/42]: OK br-arm-basic [28/42]: OK br-arm-full-nothread [29/42]: OK br-arm-full-static [30/42]: OK br-i386-pentium4-full [31/42]: OK br-i386-pentium-mmx-musl [32/42]: OK br-mips64-n64-full [33/42]: OK br-mips64r6-el-hf-glibc [34/42]: OK br-powerpc-603e-basic-cpp [35/42]: OK br-powerpc64-power7-glibc [36/42]: OK linaro-aarch64-be [37/42]: OK linaro-aarch64 [38/42]: OK linaro-arm [39/42]: OK sourcery-mips64 [40/42]: OK sourcery-mips [41/42]: OK sourcery-nios2 [42/42]: OK 42 builds, 0 skipped, 0 build failed, 0 legal-info failed, 0 show-info failed Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/libdeflate/libdeflate.hash | 2 +- package/libdeflate/libdeflate.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/libdeflate/libdeflate.hash b/package/libdeflate/libdeflate.hash index 8609f5ab02..46afa96635 100644 --- a/package/libdeflate/libdeflate.hash +++ b/package/libdeflate/libdeflate.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 27bf62d71cd64728ff43a9feb92f2ac2f2bf748986d856133cc1e51992428c25 libdeflate-1.19.tar.gz +sha256 ed1454166ced78913ff3809870a4005b7170a6fd30767dc478a09b96847b9c2a libdeflate-1.20.tar.gz sha256 5d246dd2537307b80fed9ba5fdddf5d0fe7a8f023393a071182b9daed56b40fe COPYING diff --git a/package/libdeflate/libdeflate.mk b/package/libdeflate/libdeflate.mk index 3000a58407..4597dc5a8c 100644 --- a/package/libdeflate/libdeflate.mk +++ b/package/libdeflate/libdeflate.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBDEFLATE_VERSION = 1.19 +LIBDEFLATE_VERSION = 1.20 LIBDEFLATE_SITE = $(call github,ebiggers,libdeflate,v$(LIBDEFLATE_VERSION)) LIBDEFLATE_LICENSE = MIT LIBDEFLATE_LICENSE_FILES = COPYING From thomas.petazzoni at bootlin.com Thu May 2 07:45:39 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:45:39 +0200 Subject: [Buildroot] [git commit] package/libedit: bump version to 20230828-3.1 Message-ID: <20240502074841.A9D44865E2@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=5e2e0fedc842dd43aae9c0d2b37140d5c97db51b branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Changelog: https://www.thrysoee.dk/editline/ Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/libedit/libedit.hash | 2 +- package/libedit/libedit.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/libedit/libedit.hash b/package/libedit/libedit.hash index 2e7363d828..c2ed7f773f 100644 --- a/package/libedit/libedit.hash +++ b/package/libedit/libedit.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 f0925a5adf4b1bf116ee19766b7daa766917aec198747943b1c4edf67a4be2bb libedit-20221030-3.1.tar.gz +sha256 4ee8182b6e569290e7d1f44f0f78dac8716b35f656b76528f699c69c98814dad libedit-20230828-3.1.tar.gz sha256 9da6c9c74987a36c84302982799d17d2f748ba1c1c0c471425716173c1d07649 COPYING diff --git a/package/libedit/libedit.mk b/package/libedit/libedit.mk index 576a163173..ea7f98fdbd 100644 --- a/package/libedit/libedit.mk +++ b/package/libedit/libedit.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBEDIT_VERSION = 20221030-3.1 +LIBEDIT_VERSION = 20230828-3.1 LIBEDIT_SITE = https://www.thrysoee.dk/editline LIBEDIT_INSTALL_STAGING = YES LIBEDIT_DEPENDENCIES = ncurses From thomas.petazzoni at bootlin.com Thu May 2 07:45:49 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:45:49 +0200 Subject: [Buildroot] [git commit] package/libmicrohttpd: bump version to 1.0.1 Message-ID: <20240502074841.BED8C865E0@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=0d5be689b4ecd21e2562bf90f96732a6a703ae67 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Release notes: https://lists.gnu.org/archive/html/info-gnu/2024-02/msg00000.html https://lists.gnu.org/archive/html/info-gnu/2024-02/msg00003.html Changelog: https://git.gnunet.org/libmicrohttpd.git/tree/ChangeLog Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/libmicrohttpd/libmicrohttpd.hash | 2 +- package/libmicrohttpd/libmicrohttpd.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/libmicrohttpd/libmicrohttpd.hash b/package/libmicrohttpd/libmicrohttpd.hash index a4c8fbca5b..f1b3f8b7d8 100644 --- a/package/libmicrohttpd/libmicrohttpd.hash +++ b/package/libmicrohttpd/libmicrohttpd.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 9e7023a151120060d2806a6ea4c13ca9933ece4eacfc5c9464d20edddb76b0a0 libmicrohttpd-0.9.77.tar.gz +sha256 a89e09fc9b4de34dde19f4fcb4faaa1ce10299b9908db1132bbfa1de47882b94 libmicrohttpd-1.0.1.tar.gz sha256 7399547209438c93f9b90297954698773d4846cea44cde5ca982c84c45952a3b COPYING diff --git a/package/libmicrohttpd/libmicrohttpd.mk b/package/libmicrohttpd/libmicrohttpd.mk index 72b2bbafd8..6998ffd1ae 100644 --- a/package/libmicrohttpd/libmicrohttpd.mk +++ b/package/libmicrohttpd/libmicrohttpd.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBMICROHTTPD_VERSION = 0.9.77 +LIBMICROHTTPD_VERSION = 1.0.1 LIBMICROHTTPD_SITE = $(BR2_GNU_MIRROR)/libmicrohttpd LIBMICROHTTPD_LICENSE_FILES = COPYING LIBMICROHTTPD_CPE_ID_VENDOR = gnu From thomas.petazzoni at bootlin.com Thu May 2 07:46:34 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:46:34 +0200 Subject: [Buildroot] [git commit] package/libopenssl: bump version to 3.3.0 Message-ID: <20240502074841.D3ED8865E2@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=6d5ce8609f17a3403d1148a0bbf7a2bdb5ec7f67 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Changelog: https://www.openssl.org/news/cl33.txt Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/libopenssl/libopenssl.hash | 4 ++-- package/libopenssl/libopenssl.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/libopenssl/libopenssl.hash b/package/libopenssl/libopenssl.hash index 841d4b4cfd..aca75cf9e4 100644 --- a/package/libopenssl/libopenssl.hash +++ b/package/libopenssl/libopenssl.hash @@ -1,5 +1,5 @@ -# From https://www.openssl.org/source/openssl-3.2.1.tar.gz.sha256 -sha256 83c7329fe52c850677d75e5d0b0ca245309b97e8ecbcfdc1dfdc4ab9fac35b39 openssl-3.2.1.tar.gz +# From https://www.openssl.org/source/openssl-3.3.0.tar.gz.sha256 +sha256 53e66b043322a606abf0087e7699a0e033a37fa13feb9742df35c3a33b18fb02 openssl-3.3.0.tar.gz # License files sha256 7d5450cb2d142651b8afa315b5f238efc805dad827d91ba367d8516bc9d49e7a LICENSE.txt diff --git a/package/libopenssl/libopenssl.mk b/package/libopenssl/libopenssl.mk index feb5026c02..5ac6bf9713 100644 --- a/package/libopenssl/libopenssl.mk +++ b/package/libopenssl/libopenssl.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBOPENSSL_VERSION = 3.2.1 +LIBOPENSSL_VERSION = 3.3.0 LIBOPENSSL_SITE = https://www.openssl.org/source LIBOPENSSL_SOURCE = openssl-$(LIBOPENSSL_VERSION).tar.gz LIBOPENSSL_LICENSE = Apache-2.0 From thomas.petazzoni at bootlin.com Thu May 2 07:46:26 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:46:26 +0200 Subject: [Buildroot] [git commit] package/libminiupnpc: bump version to 2.2.7 Message-ID: <20240502074841.C8C7F865E8@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=b5c2b86ccf6236b0729016e0cfa98628078a6094 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Update license hash due to copyright year bump: https://github.com/miniupnp/miniupnp/commit/e370f25e911d7e37d57c07d62ba1f3e24d1479ab Changelog: https://github.com/miniupnp/miniupnp/blob/master/miniupnpc/Changelog.txt Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/libminiupnpc/libminiupnpc.hash | 4 ++-- package/libminiupnpc/libminiupnpc.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/libminiupnpc/libminiupnpc.hash b/package/libminiupnpc/libminiupnpc.hash index 21dac02dd3..4f7e7c7aa1 100644 --- a/package/libminiupnpc/libminiupnpc.hash +++ b/package/libminiupnpc/libminiupnpc.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 37fcd91953508c3e62d6964bb8ffbc5d47f3e13481fa54e6214fcc68704c66f1 miniupnpc-2.2.6.tar.gz -sha256 e143c6e207d0bb874c4be76b57689ffa408063a37a735c6dcec3dc600cb522c5 LICENSE +sha256 b0c3a27056840fd0ec9328a5a9bac3dc5e0ec6d2e8733349cf577b0aa1e70ac1 miniupnpc-2.2.7.tar.gz +sha256 7480ae23b082c05ad9823896163d78f3a96f1beadce51f29c96cf898545c27e5 LICENSE diff --git a/package/libminiupnpc/libminiupnpc.mk b/package/libminiupnpc/libminiupnpc.mk index dddbe6f81b..3bd4ee6a9f 100644 --- a/package/libminiupnpc/libminiupnpc.mk +++ b/package/libminiupnpc/libminiupnpc.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBMINIUPNPC_VERSION = 2.2.6 +LIBMINIUPNPC_VERSION = 2.2.7 LIBMINIUPNPC_SOURCE = miniupnpc-$(LIBMINIUPNPC_VERSION).tar.gz LIBMINIUPNPC_SITE = http://miniupnp.free.fr/files LIBMINIUPNPC_INSTALL_STAGING = YES From thomas.petazzoni at bootlin.com Thu May 2 07:47:27 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:47:27 +0200 Subject: [Buildroot] [git commit] package/libpng: bump version to 1.6.43 Message-ID: <20240502074842.01AD2865E2@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=ce3ce432feda336e4476eb930353fed8e3318539 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Release notes: https://sourceforge.net/p/png-mng/mailman/message/58741099/ Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/libpng/libpng.hash | 4 ++-- package/libpng/libpng.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/libpng/libpng.hash b/package/libpng/libpng.hash index fbae14c51d..356c0e3e5d 100644 --- a/package/libpng/libpng.hash +++ b/package/libpng/libpng.hash @@ -1,4 +1,4 @@ -# From https://sourceforge.net/p/png-mng/mailman/message/58731120/ -sha256 c919dbc11f4c03b05aba3f8884d8eb7adfe3572ad228af972bb60057bdb48450 libpng-1.6.42.tar.xz +# From https://sourceforge.net/p/png-mng/mailman/message/58741099/ +sha256 6a5ca0652392a2d7c9db2ae5b40210843c0bbc081cbd410825ab00cc59f14a6c libpng-1.6.43.tar.xz # Locally computed: sha256 7317e078e2d3b5d7ba5a6159e650945153262b44b76f6700f8e9edb261c5143e LICENSE diff --git a/package/libpng/libpng.mk b/package/libpng/libpng.mk index c4da9f89c7..af38afde47 100644 --- a/package/libpng/libpng.mk +++ b/package/libpng/libpng.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBPNG_VERSION = 1.6.42 +LIBPNG_VERSION = 1.6.43 LIBPNG_SERIES = 16 LIBPNG_SOURCE = libpng-$(LIBPNG_VERSION).tar.xz LIBPNG_SITE = http://downloads.sourceforge.net/project/libpng/libpng$(LIBPNG_SERIES)/$(LIBPNG_VERSION) From thomas.petazzoni at bootlin.com Thu May 2 07:47:22 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:47:22 +0200 Subject: [Buildroot] [git commit] package/libplist: bump version to 2.4.0 Message-ID: <20240502074841.EA9B9865E3@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=ab78b51d83d5593dac5c1e0772ac298228878d9e branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Release notes: https://github.com/libimobiledevice/libplist/blob/master/NEWS Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/libplist/libplist.hash | 2 +- package/libplist/libplist.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/libplist/libplist.hash b/package/libplist/libplist.hash index 460f63516a..9bc79bf3f0 100644 --- a/package/libplist/libplist.hash +++ b/package/libplist/libplist.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 4e8580d3f39d3dfa13cefab1a13f39ea85c4b0202e9305c5c8f63818182cac61 libplist-2.3.0.tar.bz2 +sha256 3f5868ae15b117320c1ff5e71be53d29469d4696c4085f89db1975705781a7cd libplist-2.4.0.tar.bz2 sha256 7619c753cac95d4740220223bde48a032606fcaccde5e546f9bc444c81ab356d COPYING diff --git a/package/libplist/libplist.mk b/package/libplist/libplist.mk index 8f094c133d..0b8a69455b 100644 --- a/package/libplist/libplist.mk +++ b/package/libplist/libplist.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBPLIST_VERSION = 2.3.0 +LIBPLIST_VERSION = 2.4.0 LIBPLIST_SOURCE = libplist-$(LIBPLIST_VERSION).tar.bz2 LIBPLIST_SITE = https://github.com/libimobiledevice/libplist/releases/download/$(LIBPLIST_VERSION) LIBPLIST_INSTALL_STAGING = YES From thomas.petazzoni at bootlin.com Thu May 2 07:47:17 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:47:17 +0200 Subject: [Buildroot] [git commit] package/libpciaccess: bump version to 0.18.1 Message-ID: <20240502074841.DE737865E0@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=4c4bb101ba61198a55cb29764e2d35053c216228 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Removed patch which is included in upstream release. Release notes: https://lists.x.org/archives/xorg-announce/2024-March/003483.html Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- ...w-building-static-library-not-just-shared.patch | 48 ---------------------- package/libpciaccess/libpciaccess.hash | 4 +- package/libpciaccess/libpciaccess.mk | 2 +- 3 files changed, 3 insertions(+), 51 deletions(-) diff --git a/package/libpciaccess/0001-meson-allow-building-static-library-not-just-shared.patch b/package/libpciaccess/0001-meson-allow-building-static-library-not-just-shared.patch deleted file mode 100644 index df1b4b415a..0000000000 --- a/package/libpciaccess/0001-meson-allow-building-static-library-not-just-shared.patch +++ /dev/null @@ -1,48 +0,0 @@ -From ad7e9cb4b291a46812eea321f0634cfc46fb94e2 Mon Sep 17 00:00:00 2001 -From: Alan Coopersmith -Date: Thu, 14 Mar 2024 13:55:55 -0700 -Subject: [PATCH] meson: allow building static library, not just shared - -Lets builders specify -Ddefault_library={shared,static,both} -to control which types of libpciaccess library are built - -Closes: #20 -Reported-by: Maxime Gauduin (@alucryd) -Signed-off-by: Alan Coopersmith - -Upstream: https://gitlab.freedesktop.org/xorg/lib/libpciaccess/-/commit/ad7e9cb4b291a46812eea321f0634cfc46fb94e2 -Signed-off-by: Fabrice Fontaine ---- - .gitlab-ci.yml | 2 +- - src/meson.build | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml -index bcb75cf..185edc2 100644 ---- a/.gitlab-ci.yml -+++ b/.gitlab-ci.yml -@@ -91,7 +91,7 @@ meson: - - MESON_OPTIONS: ['-Dzlib=disabled', '-Dzlib=enabled'] - script: - - mkdir -p ../_inst -- - meson setup builddir --prefix="$PWD/../_inst" -Dwarning_level=3 $MESON_OPTIONS -+ - meson setup builddir --prefix="$PWD/../_inst" -Dwarning_level=3 -Ddefault_library=both $MESON_OPTIONS - - meson configure builddir - - ninja -C builddir test - - ninja -C builddir install -diff --git a/src/meson.build b/src/meson.build -index 24eee04..e319688 100644 ---- a/src/meson.build -+++ b/src/meson.build -@@ -38,7 +38,7 @@ endif - - inc_src = include_directories('.') - --libpciaccess = shared_library( -+libpciaccess = library( - 'pciaccess', - [ - 'common_bridge.c', --- -GitLab - diff --git a/package/libpciaccess/libpciaccess.hash b/package/libpciaccess/libpciaccess.hash index 4662314509..e50aacc846 100644 --- a/package/libpciaccess/libpciaccess.hash +++ b/package/libpciaccess/libpciaccess.hash @@ -1,4 +1,4 @@ -# From https://lists.x.org/archives/xorg-announce/2024-February/003453.html -sha512 54dff9a493344586d072edf8c8eb8f7960c7dfd64aa5c51a8ec8d4e341f703fd39eb606ee41c4fdd9d5aad3372b7efe6e0fe96eadc575ea91de276320ebc3fbd libpciaccess-0.18.tar.xz +# From https://lists.x.org/archives/xorg-announce/2024-March/003483.html +sha512 ef27999446e735df2331e94219ee3dafe9198a2472bb452f63ef9c9c446d5431f9e231e224cfabdeba1402974a5a0064546f9abced4d1770f994f5fc0c2b3310 libpciaccess-0.18.1.tar.xz # Hash for license file: sha256 f33f360f8905940dac01aa21597fe8a6727ca6f4ffa43b380e2116fd0666aa8a COPYING diff --git a/package/libpciaccess/libpciaccess.mk b/package/libpciaccess/libpciaccess.mk index 04f3e2083b..cd35b27015 100644 --- a/package/libpciaccess/libpciaccess.mk +++ b/package/libpciaccess/libpciaccess.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBPCIACCESS_VERSION = 0.18 +LIBPCIACCESS_VERSION = 0.18.1 LIBPCIACCESS_SOURCE = libpciaccess-$(LIBPCIACCESS_VERSION).tar.xz LIBPCIACCESS_SITE = http://xorg.freedesktop.org/releases/individual/lib LIBPCIACCESS_LICENSE = MIT From peter at korsgaard.com Thu May 2 07:48:59 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 09:48:59 +0200 Subject: [Buildroot] [git commit] package/libdrm/intel: Remove dependency to x86 In-Reply-To: <20240403203909.1AB65848D4@busybox.osuosl.org> (Yann E. MORIN's message of "Wed, 3 Apr 2024 22:38:21 +0200") References: <20240403203909.1AB65848D4@busybox.osuosl.org> Message-ID: <87frv08xhw.fsf@dell.be.48ers.dk> >>>>> "Yann" == Yann E MORIN writes: > commit: https://git.buildroot.net/buildroot/commit/?id=02e30af0d059aabb694daa54cbad4cae900af29a > branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master > BR2_PACKAGE_LIBDRM_INTEL was dependent on BR2_i386 > or BR2_x86_64, which made sense for integrated GPUs. > This is no longer valid with discrete GPUs so remove > this dependency to allow building on other CPU > architectures. > Signed-off-by: Francois Dugast > Signed-off-by: Yann E. MORIN Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From thomas.petazzoni at bootlin.com Thu May 2 07:49:03 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:49:03 +0200 Subject: [Buildroot] [PATCH] package/tor: bump version to 0.4.8.11 In-Reply-To: <20240411205941.2127766-1-bernd@kuhls.net> References: <20240411205941.2127766-1-bernd@kuhls.net> Message-ID: <20240502094903.1703669e@windsurf> On Thu, 11 Apr 2024 22:59:41 +0200 Bernd Kuhls wrote: > Release notes: > https://gitlab.torproject.org/tpo/core/tor/-/raw/release-0.4.8/ReleaseNotes > https://forum.torproject.org/t/stable-release-0-4-8-11/12265 > > Signed-off-by: Bernd Kuhls > --- > package/tor/tor.hash | 4 ++-- > package/tor/tor.mk | 2 +- > 2 files changed, 3 insertions(+), 3 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 07:49:07 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:49:07 +0200 Subject: [Buildroot] [PATCH] package/intel-gmmlib: bump version to 22.3.19 In-Reply-To: <20240411210012.2127800-1-bernd@kuhls.net> References: <20240411210012.2127800-1-bernd@kuhls.net> Message-ID: <20240502094907.403cb6ed@windsurf> On Thu, 11 Apr 2024 23:00:12 +0200 Bernd Kuhls wrote: > Signed-off-by: Bernd Kuhls > --- > package/intel-gmmlib/intel-gmmlib.hash | 2 +- > package/intel-gmmlib/intel-gmmlib.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 07:49:11 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:49:11 +0200 Subject: [Buildroot] [PATCH] package/libcap-ng: bump version to 0.8.5 In-Reply-To: <20240411210028.2127823-1-bernd@kuhls.net> References: <20240411210028.2127823-1-bernd@kuhls.net> Message-ID: <20240502094911.40e41fc3@windsurf> On Thu, 11 Apr 2024 23:00:28 +0200 Bernd Kuhls wrote: > Switched _SITE to https. > > Changelog: https://people.redhat.com/sgrubb/libcap-ng/ChangeLog > > Signed-off-by: Bernd Kuhls > --- > package/libcap-ng/Config.in | 2 +- > package/libcap-ng/libcap-ng.hash | 2 +- > package/libcap-ng/libcap-ng.mk | 4 ++-- > 3 files changed, 4 insertions(+), 4 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 07:49:15 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:49:15 +0200 Subject: [Buildroot] [PATCH] package/libdeflate: bump version to 1.20 In-Reply-To: <20240411210045.2127843-1-bernd@kuhls.net> References: <20240411210045.2127843-1-bernd@kuhls.net> Message-ID: <20240502094915.36bc9096@windsurf> On Thu, 11 Apr 2024 23:00:45 +0200 Bernd Kuhls wrote: > Release notes: > ttps://github.com/ebiggers/libdeflate/blob/master/NEWS.md > > Build-tested using this defconfig > > BR2_PACKAGE_LIBDEFLATE=y > > arm-aarch64 [ 1/42]: OK > bootlin-aarch64-glibc [ 2/42]: OK > bootlin-arcle-hs38-uclibc [ 3/42]: OK > bootlin-armv5-uclibc [ 4/42]: OK > bootlin-armv7-glibc [ 5/42]: OK > bootlin-armv7m-uclibc [ 6/42]: OK > bootlin-armv7-musl [ 7/42]: OK > bootlin-m68k-5208-uclibc [ 8/42]: OK > bootlin-m68k-68040-uclibc [ 9/42]: OK > bootlin-microblazeel-uclibc [10/42]: OK > bootlin-mipsel32r6-glibc [11/42]: OK > bootlin-mipsel-uclibc [12/42]: OK > bootlin-nios2-glibc [13/42]: OK > bootlin-openrisc-uclibc [14/42]: OK > bootlin-powerpc64le-power8-glibc [15/42]: OK > bootlin-powerpc-e500mc-uclibc [16/42]: OK > bootlin-riscv32-glibc [17/42]: OK > bootlin-riscv64-glibc [18/42]: OK > bootlin-riscv64-musl [19/42]: OK > bootlin-s390x-z13-glibc [20/42]: OK > bootlin-sh4-uclibc [21/42]: OK > bootlin-sparc64-glibc [22/42]: OK > bootlin-sparc-uclibc [23/42]: OK > bootlin-x86-64-glibc [24/42]: OK > bootlin-x86-64-musl [25/42]: OK > bootlin-x86-64-uclibc [26/42]: OK > bootlin-xtensa-uclibc [27/42]: OK > br-arm-basic [28/42]: OK > br-arm-full-nothread [29/42]: OK > br-arm-full-static [30/42]: OK > br-i386-pentium4-full [31/42]: OK > br-i386-pentium-mmx-musl [32/42]: OK > br-mips64-n64-full [33/42]: OK > br-mips64r6-el-hf-glibc [34/42]: OK > br-powerpc-603e-basic-cpp [35/42]: OK > br-powerpc64-power7-glibc [36/42]: OK > linaro-aarch64-be [37/42]: OK > linaro-aarch64 [38/42]: OK > linaro-arm [39/42]: OK > sourcery-mips64 [40/42]: OK > sourcery-mips [41/42]: OK > sourcery-nios2 [42/42]: OK > 42 builds, 0 skipped, 0 build failed, 0 legal-info failed, 0 show-info failed > > Signed-off-by: Bernd Kuhls > --- > package/libdeflate/libdeflate.hash | 2 +- > package/libdeflate/libdeflate.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 07:49:19 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:49:19 +0200 Subject: [Buildroot] [PATCH] package/libedit: bump version to 20230828-3.1 In-Reply-To: <20240411210100.2127868-1-bernd@kuhls.net> References: <20240411210100.2127868-1-bernd@kuhls.net> Message-ID: <20240502094919.0e554514@windsurf> On Thu, 11 Apr 2024 23:01:00 +0200 Bernd Kuhls wrote: > Changelog: https://www.thrysoee.dk/editline/ > > Signed-off-by: Bernd Kuhls > --- > package/libedit/libedit.hash | 2 +- > package/libedit/libedit.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 07:49:22 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:49:22 +0200 Subject: [Buildroot] [PATCH] package/libinput: bump version to 1.25.0 In-Reply-To: <20240411210114.2127887-1-bernd@kuhls.net> References: <20240411210114.2127887-1-bernd@kuhls.net> Message-ID: <20240502094922.0cc0d5ab@windsurf> On Thu, 11 Apr 2024 23:01:14 +0200 Bernd Kuhls wrote: > Release notes: > https://lists.freedesktop.org/archives/wayland-devel/2023-August/042967.html > https://lists.freedesktop.org/archives/wayland-devel/2024-January/043396.html > > Signed-off-by: Bernd Kuhls > --- > package/libinput/libinput.hash | 2 +- > package/libinput/libinput.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 07:49:26 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:49:26 +0200 Subject: [Buildroot] [PATCH] package/libmicrohttpd: bump version to 1.0.1 In-Reply-To: <20240411210134.2127917-1-bernd@kuhls.net> References: <20240411210134.2127917-1-bernd@kuhls.net> Message-ID: <20240502094926.12787759@windsurf> On Thu, 11 Apr 2024 23:01:34 +0200 Bernd Kuhls wrote: > Release notes: > https://lists.gnu.org/archive/html/info-gnu/2024-02/msg00000.html > https://lists.gnu.org/archive/html/info-gnu/2024-02/msg00003.html > > Changelog: https://git.gnunet.org/libmicrohttpd.git/tree/ChangeLog > > Signed-off-by: Bernd Kuhls > --- > package/libmicrohttpd/libmicrohttpd.hash | 2 +- > package/libmicrohttpd/libmicrohttpd.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 07:49:30 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:49:30 +0200 Subject: [Buildroot] [PATCH] package/libminiupnpc: bump version to 2.2.7 In-Reply-To: <20240411210147.2127938-1-bernd@kuhls.net> References: <20240411210147.2127938-1-bernd@kuhls.net> Message-ID: <20240502094930.798b43da@windsurf> On Thu, 11 Apr 2024 23:01:47 +0200 Bernd Kuhls wrote: > Update license hash due to copyright year bump: > https://github.com/miniupnp/miniupnp/commit/e370f25e911d7e37d57c07d62ba1f3e24d1479ab > > Changelog: > https://github.com/miniupnp/miniupnp/blob/master/miniupnpc/Changelog.txt > > Signed-off-by: Bernd Kuhls > --- > package/libminiupnpc/libminiupnpc.hash | 4 ++-- > package/libminiupnpc/libminiupnpc.mk | 2 +- > 2 files changed, 3 insertions(+), 3 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 07:49:34 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:49:34 +0200 Subject: [Buildroot] [PATCH] package/libopenssl: bump version to 3.3.0 In-Reply-To: <20240411210204.2127966-1-bernd@kuhls.net> References: <20240411210204.2127966-1-bernd@kuhls.net> Message-ID: <20240502094934.7798190c@windsurf> On Thu, 11 Apr 2024 23:02:04 +0200 Bernd Kuhls wrote: > Changelog: https://www.openssl.org/news/cl33.txt > > Signed-off-by: Bernd Kuhls > --- > run-time tested using my usual defconfig Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 07:49:37 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:49:37 +0200 Subject: [Buildroot] [PATCH] package/libpciaccess: bump version to 0.18.1 In-Reply-To: <20240411210222.2127990-1-bernd@kuhls.net> References: <20240411210222.2127990-1-bernd@kuhls.net> Message-ID: <20240502094937.679fbd09@windsurf> On Thu, 11 Apr 2024 23:02:22 +0200 Bernd Kuhls wrote: > Removed patch which is included in upstream release. > > Release notes: > https://lists.x.org/archives/xorg-announce/2024-March/003483.html > > Signed-off-by: Bernd Kuhls > --- > ...lding-static-library-not-just-shared.patch | 48 ------------------- > package/libpciaccess/libpciaccess.hash | 4 +- > package/libpciaccess/libpciaccess.mk | 2 +- > 3 files changed, 3 insertions(+), 51 deletions(-) > delete mode 100644 package/libpciaccess/0001-meson-allow-building-static-library-not-just-shared.patch Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 07:49:41 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:49:41 +0200 Subject: [Buildroot] [PATCH] package/libplist: bump version to 2.4.0 In-Reply-To: <20240411210233.2128012-1-bernd@kuhls.net> References: <20240411210233.2128012-1-bernd@kuhls.net> Message-ID: <20240502094941.7d56d50c@windsurf> On Thu, 11 Apr 2024 23:02:33 +0200 Bernd Kuhls wrote: > Release notes: > https://github.com/libimobiledevice/libplist/blob/master/NEWS > > Signed-off-by: Bernd Kuhls > --- > package/libplist/libplist.hash | 2 +- > package/libplist/libplist.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 07:49:45 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:49:45 +0200 Subject: [Buildroot] [PATCH] package/libpng: bump version to 1.6.43 In-Reply-To: <20240411210245.2128044-1-bernd@kuhls.net> References: <20240411210245.2128044-1-bernd@kuhls.net> Message-ID: <20240502094945.376cede4@windsurf> On Thu, 11 Apr 2024 23:02:45 +0200 Bernd Kuhls wrote: > Release notes: > https://sourceforge.net/p/png-mng/mailman/message/58741099/ > > Signed-off-by: Bernd Kuhls > --- > package/libpng/libpng.hash | 4 ++-- > package/libpng/libpng.mk | 2 +- > 2 files changed, 3 insertions(+), 3 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From peter at korsgaard.com Thu May 2 07:50:26 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 09:50:26 +0200 Subject: [Buildroot] [PATCH 1/1] board/freescale/common/imx: imx8-bootloader-prepare: enable error checking In-Reply-To: <20240403230810.5e8b9e21@windsurf> (Thomas Petazzoni via buildroot's message of "Wed, 3 Apr 2024 23:08:10 +0200") References: <20230914165046.3687491-1-wojciech.nizinski@grinn-global.com> <20240403230810.5e8b9e21@windsurf> Message-ID: <87bk5o8xfh.fsf@dell.be.48ers.dk> >>>>> "Thomas" == Thomas Petazzoni via buildroot writes: > On Thu, 14 Sep 2023 18:50:46 +0200 > Wojciech Nizinski wrote: >> Run script with 'errexit' bash option to detect any errors from >> subcommands. >> >> It will fix situation where 'ddr_fw.bin' was missing but successfull >> build created broken boot image. Post image script report this by: >> >> cat: /home/user/buildroot/output/images/ddr_fw.bin: No such file or >> directory >> >> and build finish with success. >> >> Signed-off-by: Wojciech Nizinski >> --- >> board/freescale/common/imx/imx8-bootloader-prepare.sh | 1 + >> 1 file changed, 1 insertion(+) > Applied to master after changing to use set -e. Thanks! Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 07:51:58 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 09:51:58 +0200 Subject: [Buildroot] [PATCH] package/psplash: fix systemd unit ordering and dependencies In-Reply-To: <9644951a-0724-4163-9a93-4f0e066ce1f7@mind.be> (Arnout Vandecappelle via buildroot's message of "Wed, 3 Apr 2024 23:02:14 +0200") References: <20240116110002.2146885-1-nolange79@gmail.com> <9644951a-0724-4163-9a93-4f0e066ce1f7@mind.be> Message-ID: <877cgc8xcx.fsf@dell.be.48ers.dk> >>>>> "Arnout" == Arnout Vandecappelle via buildroot writes: > On 16/01/2024 12:00, Norbert Lange wrote: >> Fix a typo in the dependencies, and switch the type to 'exec'. >> This ensures that the psplash-systemd service will find the >> FIFO created by psplash. > It doesn't actually ensure that: systemd considers the unit ready as > soon as it has done execve, but the pipe will only be created later. > The solution is to make the psplash-systemd service wait until the > pipe actually exists, but I'm not sure how to do that. > Anyway, this is already an improvement, so applied to master, thanks. Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From thomas.petazzoni at bootlin.com Thu May 2 07:56:05 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:56:05 +0200 Subject: [Buildroot] [PATCH v1 1/8] package/libsoup3: fix reference to atomic In-Reply-To: <20240420185853.4134260-1-thomas@devoogdt.com> References: <20240420185853.4134260-1-thomas@devoogdt.com> Message-ID: <20240502095605.32987057@windsurf> Hello, On Sat, 20 Apr 2024 20:58:46 +0200 Thomas Devoogdt wrote: > gthread-posix.c:(.text+0x137c): undefined reference to `__atomic_compare_exchange_4' > collect2: error: ld returned 1 exit status > > Fixes: > - http://autobuild.buildroot.net/results/4fb9f4c49777dde3abc30bb9f324816d3ed87567 > > Signed-off-by: Thomas Devoogdt I think this whole patch series is not the right way to fix the problem. Indeed, what's using libatomic here is libglib2, and with your solution, you have to chase down *all* reverse dependencies of libglib2. Instead, what I'd like to see is that the glib-2.0.pc (pkg-config) file gets updated to include -latomic in the Libs.private flags, so that it gets automatically picked up by all reverse dependencies of libglib2 when they are static linking. This also brings the advantage that you're not linking say libsoup3 directly with libatomic, like you're doing with your patch. Instead, in a dynamic linking case, we keep on having libsoup3 linked just with libglib2, and libglib2 linked with libatomic. It's only in the static linking case that when we're building a final executable that uses libsoup3, we need to also bring libatomic.a into the mix. Could you have a look at fixing glib-2.0.pc instead? Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From fontaine.fabrice at gmail.com Thu May 2 08:15:53 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Thu, 2 May 2024 10:15:53 +0200 Subject: [Buildroot] [PATCH v1 1/8] package/libsoup3: fix reference to atomic In-Reply-To: <20240502095605.32987057@windsurf> References: <20240420185853.4134260-1-thomas@devoogdt.com> <20240502095605.32987057@windsurf> Message-ID: Hello Thomas, Le jeu. 2 mai 2024 ? 09:56, Thomas Petazzoni a ?crit : > > Hello, > > On Sat, 20 Apr 2024 20:58:46 +0200 > Thomas Devoogdt wrote: > > > gthread-posix.c:(.text+0x137c): undefined reference to `__atomic_compare_exchange_4' > > collect2: error: ld returned 1 exit status > > > > Fixes: > > - http://autobuild.buildroot.net/results/4fb9f4c49777dde3abc30bb9f324816d3ed87567 > > > > Signed-off-by: Thomas Devoogdt > > I think this whole patch series is not the right way to fix the > problem. Indeed, what's using libatomic here is libglib2, and with your > solution, you have to chase down *all* reverse dependencies of libglib2. > > Instead, what I'd like to see is that the glib-2.0.pc (pkg-config) file > gets updated to include -latomic in the Libs.private flags, so that it > gets automatically picked up by all reverse dependencies of libglib2 > when they are static linking. > > This also brings the advantage that you're not linking say libsoup3 > directly with libatomic, like you're doing with your patch. Instead, in > a dynamic linking case, we keep on having libsoup3 linked just with > libglib2, and libglib2 linked with libatomic. It's only in the static > linking case that when we're building a final executable that uses > libsoup3, we need to also bring libatomic.a into the mix. > > Could you have a look at fixing glib-2.0.pc instead? This patch is available since September 2023: https://patchwork.ozlabs.org/project/buildroot/patch/20230917185116.182810-1-fontaine.fabrice at gmail.com/ > > Thanks! > > Thomas > -- > Thomas Petazzoni, co-owner and CEO, Bootlin > Embedded Linux and Kernel engineering and training > https://bootlin.com Best Regards, Fabrice From peter at korsgaard.com Thu May 2 08:29:04 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 10:29:04 +0200 Subject: [Buildroot] [PATCH 1/1] package/apache: security bump version to 2.4.59 In-Reply-To: <20240404151115.56677-1-bernd@kuhls.net> (Bernd Kuhls's message of "Thu, 4 Apr 2024 17:11:15 +0200") References: <20240404151115.56677-1-bernd@kuhls.net> Message-ID: <8734r08vn3.fsf@dell.be.48ers.dk> >>>>> "Bernd" == Bernd Kuhls writes: > Changelog: https://dlcdn.apache.org/httpd/CHANGES_2.4.59 > Fixes CVE-2023-38709, CVE-2024-27316 & CVE-2024-24795. > Removed patch which is included in this release. > Updated _SITE and hash file URLs according to > https://httpd.apache.org/download.cgi#apache24 > Signed-off-by: Bernd Kuhls Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 08:29:18 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 10:29:18 +0200 Subject: [Buildroot] Fwd: [PATCH] DEVELOPERS: remove Thomas De Schampheleire In-Reply-To: <877chdqk74.fsf@48ers.dk> (Peter Korsgaard's message of "Thu, 04 Apr 2024 16:25:03 +0200") References: <877chdqk74.fsf@48ers.dk> Message-ID: <87y18s7h29.fsf@dell.be.48ers.dk> >>>>> "Peter" == Peter Korsgaard writes: >>>>> "Thomas" == Thomas De Schampheleire writes: >> Hi Peter, >> I sent this patch to the mailing list, but since I am no longer subscribed, it's >> probably stuck in the moderation queue. > Odd, I don't see it in mailman. >> Could I bother you to apply this patch or let my mail pass through the queue? > Sure, committed. > Sorry to see you go, thanks for all your work! Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 08:30:13 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 10:30:13 +0200 Subject: [Buildroot] [PATCH 1/2] package/tiff: explicitly disable lerc support for host and target In-Reply-To: <87plv3os1b.fsf@48ers.dk> (Peter Korsgaard's message of "Sat, 06 Apr 2024 09:43:12 +0200") References: <20240404153438.3337807-1-peter@korsgaard.com> <87plv3os1b.fsf@48ers.dk> Message-ID: <87ttjg7h0q.fsf@dell.be.48ers.dk> >>>>> "Peter" == Peter Korsgaard writes: >>>>> "Peter" == Peter Korsgaard writes: >> We do not have liblerc in Buildroot and it may cause linking issues for >> host-tiff on build hosts with liblerc: >> libtool: link: /usr/bin/gcc -O2 >> -I/home/dragon/src/ft/ftcommunity-TXT/output/build/rootfs/per-package/host-tiff/host/include >> -Wall -W -Wl,-rpath >> -Wl,/home/dragon/src/ft/ftcommunity-TXT/output/build/rootfs/per-package/host-tiff/host/lib >> -o tiffcp tiffcp.o >> -L/home/dragon/src/ft/ftcommunity-TXT/output/build/rootfs/per-package/host-tiff/host/lib >> ../libtiff/.libs/libtiff.so ../port/.libs/libport.a -lLerc -ljbig -lm >> -Wl,-rpath >> -Wl,/home/dragon/src/ft/ftcommunity-TXT/output/build/rootfs/build/host-tiff-4.6.0/libtiff/.libs >> -Wl,-rpath >> -Wl,/home/dragon/src/ft/ftcommunity-TXT/output/build/rootfs/per-package/host-tiff/host/lib >> /usr/bin/ld: ../libtiff/.libs/libtiff.so: undefined reference to >> `deflateInit_' >> /usr/bin/ld: ../libtiff/.libs/libtiff.so: undefined reference to `deflate' >> /usr/bin/ld: ../libtiff/.libs/libtiff.so: undefined reference to >> `deflateEnd' >> /usr/bin/ld: ../libtiff/.libs/libtiff.so: undefined reference to `inflate' >> Signed-off-by: Peter Korsgaard > Committed, thanks. Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 08:30:18 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 10:30:18 +0200 Subject: [Buildroot] [PATCH 2/2] package/tiff: explicitly disable jbig support for host and target In-Reply-To: <87le5ros14.fsf@48ers.dk> (Peter Korsgaard's message of "Sat, 06 Apr 2024 09:43:19 +0200") References: <20240404153438.3337807-1-peter@korsgaard.com> <20240404153438.3337807-2-peter@korsgaard.com> <87le5ros14.fsf@48ers.dk> Message-ID: <87plu47h0l.fsf@dell.be.48ers.dk> >>>>> "Peter" == Peter Korsgaard writes: >>>>> "Peter" == Peter Korsgaard writes: >> BR2_PACKAGE_TIFF_JBIG did actually not do anything, as no explicit >> --enable-jbig was passed to configure and there is no libjbig in Buildroot, >> so drop it and instead explicitly disable jbig support. >> Also add --disable-jbig for the host build, which was missed when host >> support was added in commit 91b16fbbf9db (tiff: add host variant). >> As the TIFF_JBIG option was a noop, do not add legacy handling for it. >> Signed-off-by: Peter Korsgaard > Committed, thanks. Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From thomas.petazzoni at bootlin.com Thu May 2 08:30:14 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 10:30:14 +0200 Subject: [Buildroot] [git commit] package/libglib2: fix atomic handling Message-ID: <20240502083036.30822865EC@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=929bffbf4bf8fcb91bda446777f907f32c782656 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Correctly fix atomic handling to avoid the following build failure with all users of libglib2 (e.g. gdk-pixbuf) raised since bump to version 2.76.1 in commit 3f9622fe3d85b4d9f734b879abc1d485afea19b2: /usr/lib/libglib-2.0.a(gthread-posix.c.o): in function `g_mutex_trylock': gthread-posix.c:(.text+0xda8): undefined reference to `__atomic_compare_exchange_4' Fixes: - http://autobuild.buildroot.org/results/24a358869b98d83ab374c7c3a185ced450064d35 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- .../0005-link-with-latomic-when-needed.patch | 45 ++++++++++++++++++++++ package/libglib2/libglib2.mk | 5 --- 2 files changed, 45 insertions(+), 5 deletions(-) diff --git a/package/libglib2/0005-link-with-latomic-when-needed.patch b/package/libglib2/0005-link-with-latomic-when-needed.patch new file mode 100644 index 0000000000..275d86032b --- /dev/null +++ b/package/libglib2/0005-link-with-latomic-when-needed.patch @@ -0,0 +1,45 @@ +From d1814dbd3a88c95a43d4c9805bb4a523cf62d97b Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 17 Sep 2023 20:42:00 +0200 +Subject: [PATCH] link with -latomic when needed + +Some architecture such as sparc and some flavors of arm needs -latomic +to avoid the following build failure: + +gthread-posix.c:(.text+0xda8): undefined reference to `__atomic_compare_exchange_4' + +Signed-off-by: Fabrice Fontaine +Upstream: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3586 +--- + glib/meson.build | 1 + + meson.build | 2 ++ + 2 files changed, 3 insertions(+) + +diff --git a/glib/meson.build b/glib/meson.build +index c26a35e42..7a761306b 100644 +--- a/glib/meson.build ++++ b/glib/meson.build +@@ -426,6 +426,7 @@ libglib = library('glib-2.0', + pcre2, + platform_deps, + thread_dep, ++ atomic_dep + ], + c_args : glib_c_args, + objc_args : glib_c_args, +diff --git a/meson.build b/meson.build +index 25ae10fc2..5ae84b3b3 100644 +--- a/meson.build ++++ b/meson.build +@@ -2130,6 +2130,8 @@ libffi_dep = dependency('libffi', version : '>= 3.0.0') + + libz_dep = dependency('zlib') + ++atomic_dep = cc.find_library('atomic', required: false) ++ + # First check in libc, fallback to libintl, and as last chance build + # proxy-libintl subproject. + # FIXME: glib-gettext.m4 has much more checks to detect broken/uncompatible +-- +2.40.1 + diff --git a/package/libglib2/libglib2.mk b/package/libglib2/libglib2.mk index c06ded2a5b..bffc565f11 100644 --- a/package/libglib2/libglib2.mk +++ b/package/libglib2/libglib2.mk @@ -64,11 +64,6 @@ ifeq ($(BR2_PACKAGE_ELFUTILS),y) LIBGLIB2_DEPENDENCIES += elfutils endif -# Uses __atomic_compare_exchange_4 -ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) -LIBGLIB2_LDFLAGS += -latomic -endif - ifeq ($(BR2_PACKAGE_LIBICONV),y) LIBGLIB2_DEPENDENCIES += libiconv endif From thomas.petazzoni at bootlin.com Thu May 2 08:30:49 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 10:30:49 +0200 Subject: [Buildroot] [PATCH v1 1/8] package/libsoup3: fix reference to atomic In-Reply-To: References: <20240420185853.4134260-1-thomas@devoogdt.com> <20240502095605.32987057@windsurf> Message-ID: <20240502103049.3a143975@windsurf> On Thu, 2 May 2024 10:15:53 +0200 Fabrice Fontaine wrote: > > Could you have a look at fixing glib-2.0.pc instead? > > This patch is available since September 2023: > https://patchwork.ozlabs.org/project/buildroot/patch/20230917185116.182810-1-fontaine.fabrice at gmail.com/ Awesome, I went ahead and applied this patch! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 08:31:39 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 10:31:39 +0200 Subject: [Buildroot] [PATCH 1/1] package/libglib2: fix atomic handling In-Reply-To: <20230917185116.182810-1-fontaine.fabrice@gmail.com> References: <20230917185116.182810-1-fontaine.fabrice@gmail.com> Message-ID: <20240502103139.62ca4812@windsurf> Hello Fabrice, On Sun, 17 Sep 2023 20:51:16 +0200 Fabrice Fontaine wrote: > Correctly fix atomic handling to avoid the following build failure with > all users of libglib2 (e.g. gdk-pixbuf) raised since bump to version > 2.76.1 in commit 3f9622fe3d85b4d9f734b879abc1d485afea19b2: > > /usr/lib/libglib-2.0.a(gthread-posix.c.o): in function `g_mutex_trylock': > gthread-posix.c:(.text+0xda8): undefined reference to `__atomic_compare_exchange_4' > > Fixes: > - http://autobuild.buildroot.org/results/24a358869b98d83ab374c7c3a185ced450064d35 > > Signed-off-by: Fabrice Fontaine > --- > .../0004-link-with-latomic-when-needed.patch | 45 +++++++++++++++++++ > package/libglib2/libglib2.mk | 5 --- > 2 files changed, 45 insertions(+), 5 deletions(-) > create mode 100644 package/libglib2/0004-link-with-latomic-when-needed.patch Applied to master, thanks. However, could you follow-up with upstream? They re-opened a MR at https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3606 but then had to close it because it broke the build in some situations. If you could have a look and submit a new iteration of the patch upstream, it'd be nice. Thanks! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From peter at korsgaard.com Thu May 2 08:36:31 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 10:36:31 +0200 Subject: [Buildroot] [PATCH] package/gdb: bump 14.x series from 14.1 to 14.2 In-Reply-To: <20240407093409.1273632-1-thomas.petazzoni@bootlin.com> (Thomas Petazzoni via buildroot's message of "Sun, 7 Apr 2024 11:34:07 +0200") References: <20240407093409.1273632-1-thomas.petazzoni@bootlin.com> Message-ID: <87le4s7gq8.fsf@dell.be.48ers.dk> >>>>> "Thomas" == Thomas Petazzoni via buildroot writes: > According to https://www.sourceware.org/gdb/: > This is a minor corrective release over GDB 14.1, fixing the following issues: > PR symtab/31112 (DLL export forwarding is broken) > PR c++/31128 (gdb crashes when trying to print a global variable stub without a running inferior) > PR tdep/31254 ([gdb/tdep, arm] FAIL: gdb.threads/staticthreads.exp: up 10) > PR gdb/31256 (Crash with basic 'list .') > PR python/31366 (Frame.static_link() segfaults) > Signed-off-by: Thomas Petazzoni Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 1 20:54:59 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 1 May 2024 22:54:59 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/libdrm/intel: Remove dependency to x86 Message-ID: <20240502083654.8D15C86608@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=7045d2905e67158f5fe2ae5e497bc923c114e4d5 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x BR2_PACKAGE_LIBDRM_INTEL was dependent on BR2_i386 or BR2_x86_64, which made sense for integrated GPUs. This is no longer valid with discrete GPUs so remove this dependency to allow building on other CPU architectures. Signed-off-by: Francois Dugast Signed-off-by: Yann E. MORIN (cherry picked from commit 02e30af0d059aabb694daa54cbad4cae900af29a) Signed-off-by: Peter Korsgaard --- package/libdrm/Config.in | 1 - 1 file changed, 1 deletion(-) diff --git a/package/libdrm/Config.in b/package/libdrm/Config.in index 3cb0e02a41..fab8289be6 100644 --- a/package/libdrm/Config.in +++ b/package/libdrm/Config.in @@ -20,7 +20,6 @@ config BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC config BR2_PACKAGE_LIBDRM_INTEL bool "intel" - depends on BR2_i386 || BR2_x86_64 depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC select BR2_PACKAGE_LIBPCIACCESS From peter at korsgaard.com Thu May 2 07:51:00 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 09:51:00 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/psplash: fix systemd unit ordering and dependencies Message-ID: <20240502083654.B33688660A@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=330386fef9179b169d3619818a6c692098f3f0e4 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Fix a typo in the dependencies, and switch the type to 'exec'. This ensures that the psplash-systemd service will find the FIFO created by psplash. Change the psplash-systemd dependency to BindsTo, so stopping psplash itself will also end this service and free resources. psplash-start service need to start early, otherwise it might try to compete/take away the framebuffer from the final graphical stack. Order it before sysinit.target. Signed-off-by: Norbert Lange Signed-off-by: Arnout Vandecappelle (cherry picked from commit 087115b96a6b053a333de2960aa75c6dd122f087) Signed-off-by: Peter Korsgaard --- package/psplash/psplash-start.service | 2 ++ package/psplash/psplash-systemd.service | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/package/psplash/psplash-start.service b/package/psplash/psplash-start.service index b97e883e54..74cbc33955 100644 --- a/package/psplash/psplash-start.service +++ b/package/psplash/psplash-start.service @@ -2,8 +2,10 @@ Description=Starts Psplash Boot screen DefaultDependencies=no RequiresMountsFor=/run +Before=sysinit.target [Service] +Type=exec ExecStart=/usr/bin/psplash -n [Install] diff --git a/package/psplash/psplash-systemd.service b/package/psplash/psplash-systemd.service index 249aa54039..f89bc5f4fe 100644 --- a/package/psplash/psplash-systemd.service +++ b/package/psplash/psplash-systemd.service @@ -1,8 +1,8 @@ [Unit] Description=Start psplash-systemd progress communication helper DefaultDependencies=no -After=systemd-start.service -Requires=psplash-start.service +After=psplash-start.service +BindsTo=psplash-start.service RequiresMountsFor=/run [Service] From peter at korsgaard.com Thu May 2 07:49:45 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 09:49:45 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] board/freescale/common/imx/imx8-bootloader-prepare.sh: enable error checking Message-ID: <20240502083654.97C4786609@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=99f6397a80d92bbaf64a07816a555d531655d799 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Run script with 'errexit' bash option to detect any errors from subcommands. It will fix situation where 'ddr_fw.bin' was missing but successfull build created broken boot image. Post image script report this by: cat: /home/user/buildroot/output/images/ddr_fw.bin: No such file or directory and build finish with success. Signed-off-by: Wojciech Nizinski Signed-off-by: Thomas Petazzoni (cherry picked from commit 4a1bcbe17e83c78de31a4cdf9161c1342d1021ae) Signed-off-by: Peter Korsgaard --- board/freescale/common/imx/imx8-bootloader-prepare.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/board/freescale/common/imx/imx8-bootloader-prepare.sh b/board/freescale/common/imx/imx8-bootloader-prepare.sh index 7ebf15b6ff..a9ee154e9c 100755 --- a/board/freescale/common/imx/imx8-bootloader-prepare.sh +++ b/board/freescale/common/imx/imx8-bootloader-prepare.sh @@ -73,4 +73,5 @@ main () exit $? } +set -e main $@ From peter at korsgaard.com Thu May 2 08:28:37 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 10:28:37 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/apache: security bump version to 2.4.59 Message-ID: <20240502083654.CB12F86609@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=f658e8c9f8ce715a225318fa6c58feeaace30d44 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Changelog: https://dlcdn.apache.org/httpd/CHANGES_2.4.59 Fixes CVE-2023-38709, CVE-2024-27316 & CVE-2024-24795. Removed patch which is included in this release. Updated _SITE and hash file URLs according to https://httpd.apache.org/download.cgi#apache24 Signed-off-by: Bernd Kuhls Signed-off-by: Peter Korsgaard (cherry picked from commit e0bbfaea0e983c1ce42a9c3085f3ca3dd796852f) Signed-off-by: Peter Korsgaard --- ...enc-remove-dependency-on-xmlstring-header.patch | 47 ---------------------- package/apache/apache.hash | 6 +-- package/apache/apache.mk | 4 +- 3 files changed, 5 insertions(+), 52 deletions(-) diff --git a/package/apache/0004-mod_xml2enc-remove-dependency-on-xmlstring-header.patch b/package/apache/0004-mod_xml2enc-remove-dependency-on-xmlstring-header.patch deleted file mode 100644 index 8ff7076589..0000000000 --- a/package/apache/0004-mod_xml2enc-remove-dependency-on-xmlstring-header.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 27a68e54b7c6d2ae80dca396fd2727852897dab1 Mon Sep 17 00:00:00 2001 -From: Eric Covener -Date: Tue, 21 Nov 2023 12:58:47 +0000 -Subject: [PATCH] mod_xml2enc: remove dependency on xmlstring header - -Submitted by: ttachi - -Github: closes #393 - -git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk at 1914013 13f79535-47bb-0310-9956-ffa450edef68 - -Upstream: https://github.com/apache/httpd/commit/27a68e54b7c6d2ae80dca396fd2727852897dab1 - -Signed-off-by: Bernd Kuhls ---- - changes-entries/xmlchar.txt | 2 ++ - modules/filters/mod_xml2enc.c | 6 +++--- - 2 files changed, 5 insertions(+), 3 deletions(-) - create mode 100644 changes-entries/xmlchar.txt - -diff --git a/changes-entries/xmlchar.txt b/changes-entries/xmlchar.txt -new file mode 100644 -index 00000000000..d0e06300411 ---- /dev/null -+++ b/changes-entries/xmlchar.txt -@@ -0,0 +1,2 @@ -+ *) mod_xml2enc: Tolerate libxml2 2.12.0 and later. -+ [ttachi ] -diff --git a/modules/filters/mod_xml2enc.c b/modules/filters/mod_xml2enc.c -index 34f8e8ee090..e8ee2647955 100644 ---- a/modules/filters/mod_xml2enc.c -+++ b/modules/filters/mod_xml2enc.c -@@ -206,11 +206,11 @@ static void sniff_encoding(request_rec* r, xml2ctx* ctx) - } - } - } -- -+ - /* to sniff, first we look for BOM */ - if (ctx->xml2enc == XML_CHAR_ENCODING_NONE) { -- ctx->xml2enc = xmlDetectCharEncoding((const xmlChar*)ctx->buf, -- ctx->bytes); -+ ctx->xml2enc = xmlDetectCharEncoding((const unsigned char*)ctx->buf, -+ ctx->bytes); - if (HAVE_ENCODING(ctx->xml2enc)) { - ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r, APLOGNO(01432) - "Got charset from XML rules.") ; diff --git a/package/apache/apache.hash b/package/apache/apache.hash index 854bc85dcc..84248761b9 100644 --- a/package/apache/apache.hash +++ b/package/apache/apache.hash @@ -1,5 +1,5 @@ -# From https://archive.apache.org/dist/httpd/httpd-2.4.58.tar.bz2.{sha256,sha512} -sha256 fa16d72a078210a54c47dd5bef2f8b9b8a01d94909a51453956b3ec6442ea4c5 httpd-2.4.58.tar.bz2 -sha512 d6e73bf413a507ec16b621ff635e178206207a9e9810ce3944b3dc98d39cde8f225307110167fc9da5822175796c8cb66f98be5b9f0d8b76dcd83a401d39b2c1 httpd-2.4.58.tar.bz2 +# From https://downloads.apache.org/httpd/httpd-2.4.59.tar.bz2.{sha256,sha512} +sha256 ec51501ec480284ff52f637258135d333230a7d229c3afa6f6c2f9040e321323 httpd-2.4.59.tar.bz2 +sha512 209da0bbac5e2564d4590302515b35495be6402273ff4024aa93e85e44554c95e053201d606383936425a41e1b5b97e6b40055dcbb385eb691a5029a6f3158c2 httpd-2.4.59.tar.bz2 # Locally computed sha256 47b8c2b6c3309282a99d4a3001575c790fead690cc14734628c4667d2bbffc43 LICENSE diff --git a/package/apache/apache.mk b/package/apache/apache.mk index 3efa6b0ac1..1b095c5eb1 100644 --- a/package/apache/apache.mk +++ b/package/apache/apache.mk @@ -4,9 +4,9 @@ # ################################################################################ -APACHE_VERSION = 2.4.58 +APACHE_VERSION = 2.4.59 APACHE_SOURCE = httpd-$(APACHE_VERSION).tar.bz2 -APACHE_SITE = https://downloads.apache.org/httpd +APACHE_SITE = https://dlcdn.apache.org/httpd APACHE_LICENSE = Apache-2.0 APACHE_LICENSE_FILES = LICENSE APACHE_CPE_ID_VENDOR = apache From peter at korsgaard.com Thu May 2 08:29:47 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 10:29:47 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/tiff: explicitly disable lerc support for host and target Message-ID: <20240502083654.D61CB8660A@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=b788c8cd0ae3a36d9f1cc3cd325b5e0e6d38f977 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x We do not have liblerc in Buildroot and it may cause linking issues for host-tiff on build hosts with liblerc: libtool: link: /usr/bin/gcc -O2 -I/home/dragon/src/ft/ftcommunity-TXT/output/build/rootfs/per-package/host-tiff/host/include -Wall -W -Wl,-rpath -Wl,/home/dragon/src/ft/ftcommunity-TXT/output/build/rootfs/per-package/host-tiff/host/lib -o tiffcp tiffcp.o -L/home/dragon/src/ft/ftcommunity-TXT/output/build/rootfs/per-package/host-tiff/host/lib ../libtiff/.libs/libtiff.so ../port/.libs/libport.a -lLerc -ljbig -lm -Wl,-rpath -Wl,/home/dragon/src/ft/ftcommunity-TXT/output/build/rootfs/build/host-tiff-4.6.0/libtiff/.libs -Wl,-rpath -Wl,/home/dragon/src/ft/ftcommunity-TXT/output/build/rootfs/per-package/host-tiff/host/lib /usr/bin/ld: ../libtiff/.libs/libtiff.so: undefined reference to `deflateInit_' /usr/bin/ld: ../libtiff/.libs/libtiff.so: undefined reference to `deflate' /usr/bin/ld: ../libtiff/.libs/libtiff.so: undefined reference to `deflateEnd' /usr/bin/ld: ../libtiff/.libs/libtiff.so: undefined reference to `inflate' Signed-off-by: Peter Korsgaard (cherry picked from commit a4011ec1e13baa1190a41d949ad2cd945a9ecbe2) Signed-off-by: Peter Korsgaard --- package/tiff/tiff.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package/tiff/tiff.mk b/package/tiff/tiff.mk index e384e8b814..8ec53d4fe1 100644 --- a/package/tiff/tiff.mk +++ b/package/tiff/tiff.mk @@ -16,6 +16,7 @@ TIFF_INSTALL_STAGING = YES # support in tiff, or that would create a circular dependency. TIFF_CONF_OPTS = \ --disable-contrib \ + --disable-lerc \ --disable-tests \ --disable-webp @@ -24,6 +25,7 @@ TIFF_DEPENDENCIES = host-pkgconf HOST_TIFF_CONF_OPTS = \ --disable-cxx \ --disable-zlib \ + --disable-lerc \ --disable-libdeflate \ --disable-lzma \ --disable-jpeg \ From peter at korsgaard.com Thu May 2 08:28:22 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 10:28:22 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] DEVELOPERS: remove Thomas De Schampheleire Message-ID: <20240502083654.BE55286608@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=aefc8730aaed3639692de8e0f93715d846a1100e branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x No longer active in Buildroot. Keeping my name in the list sets the wrong expectation regarding package updates or support. Signed-off-by: Thomas De Schampheleire Signed-off-by: Peter Korsgaard (cherry picked from commit 1a015540278ba742b5a77e90e80e2f858af14f04) Signed-off-by: Peter Korsgaard --- DEVELOPERS | 41 ----------------------------------------- 1 file changed, 41 deletions(-) diff --git a/DEVELOPERS b/DEVELOPERS index 8ccf6ff46c..a2a2c56a13 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2949,47 +2949,6 @@ F: package/openlayers/ F: package/vuejs/ F: package/vuejs-router/ -N: Thomas De Schampheleire -F: docs/manual/ -F: package/cereal/ -F: package/chartjs/ -F: package/datatables/ -F: package/datatables-buttons/ -F: package/datatables-fixedcolumns/ -F: package/datatables-responsive/ -F: package/jszip/ -F: package/libtelnet/ -F: package/opkg-utils/ -F: package/perl-convert-asn1/ -F: package/perl-crypt-blowfish/ -F: package/perl-crypt-cbc/ -F: package/perl-crypt-openssl-aes/ -F: package/perl-devel-cycle/ -F: package/perl-devel-size/ -F: package/perl-i18n/ -F: package/perl-locale-maketext-lexicon/ -F: package/perl-lwp-protocol-https/ -F: package/perl-math-int64/ -F: package/perl-math-prime-util/ -F: package/perl-mime-base64-urlsafe/ -F: package/perl-mojolicious-plugin-authentication/ -F: package/perl-mojolicious-plugin-authorization/ -F: package/perl-mojolicious-plugin-cspheader/ -F: package/perl-mojolicious-plugin-i18n/ -F: package/perl-mojolicious-plugin-securityheader/ -F: package/perl-mozilla-ca/ -F: package/perl-net-snmp/ -F: package/perl-net-ssh2/ -F: package/perl-net-telnet/ -F: package/perl-path-class/ -F: package/pigz/ -F: package/popperjs/ -F: package/xenomai/ -F: support/scripts/size-stats -F: support/testing/tests/package/test_perl_lwp_protocol_https.py -F: utils/size-stats-compare -F: toolchain/ - N: Thomas Devoogdt F: package/fluent-bit/ F: package/libsoup3/ From peter at korsgaard.com Thu May 2 08:29:58 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 10:29:58 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/tiff: explicitly disable jbig support for host and target Message-ID: <20240502083654.E26068660B@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=02ff38a44ac38b98ce7b15dedd7af82d1315ca90 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x BR2_PACKAGE_TIFF_JBIG did actually not do anything, as no explicit --enable-jbig was passed to configure and there is no libjbig in Buildroot, so drop it and instead explicitly disable jbig support. Also add --disable-jbig for the host build, which was missed when host support was added in commit 91b16fbbf9db (tiff: add host variant). As the TIFF_JBIG option was a noop, do not add legacy handling for it. Signed-off-by: Peter Korsgaard (cherry picked from commit a7d491b0ffc5c0876053cc94c4112e73096aa5c2) Signed-off-by: Peter Korsgaard --- package/tiff/Config.in | 4 ---- package/tiff/tiff.mk | 6 ++---- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/package/tiff/Config.in b/package/tiff/Config.in index d1004d6668..d357d08406 100644 --- a/package/tiff/Config.in +++ b/package/tiff/Config.in @@ -63,10 +63,6 @@ config BR2_PACKAGE_TIFF_OLD_JPEG bool "Old JPEG decompression" default y -config BR2_PACKAGE_TIFF_JBIG - bool "JBIG compression" - default y - config BR2_PACKAGE_TIFF_UTILITIES bool "tiff utilities" help diff --git a/package/tiff/tiff.mk b/package/tiff/tiff.mk index 8ec53d4fe1..0e5e0dd48a 100644 --- a/package/tiff/tiff.mk +++ b/package/tiff/tiff.mk @@ -17,6 +17,7 @@ TIFF_INSTALL_STAGING = YES TIFF_CONF_OPTS = \ --disable-contrib \ --disable-lerc \ + --disable-jbig \ --disable-tests \ --disable-webp @@ -28,6 +29,7 @@ HOST_TIFF_CONF_OPTS = \ --disable-lerc \ --disable-libdeflate \ --disable-lzma \ + --disable-jbig \ --disable-jpeg \ --disable-tests \ --disable-webp \ @@ -101,10 +103,6 @@ ifneq ($(BR2_PACKAGE_TIFF_OLD_JPEG),y) TIFF_CONF_OPTS += --disable-old-jpeg endif -ifneq ($(BR2_PACKAGE_TIFF_JBIG),y) -TIFF_CONF_OPTS += --disable-jbig -endif - ifeq ($(BR2_PACKAGE_TIFF_UTILITIES),y) TIFF_CONF_OPTS += --enable-tools else From peter at korsgaard.com Thu May 2 08:36:23 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 10:36:23 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/gdb: bump 14.x series from 14.1 to 14.2 Message-ID: <20240502083654.EEC1786608@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=fe8897edff7da06e71eb7abddd96aa69b30a4071 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x According to https://www.sourceware.org/gdb/: This is a minor corrective release over GDB 14.1, fixing the following issues: PR symtab/31112 (DLL export forwarding is broken) PR c++/31128 (gdb crashes when trying to print a global variable stub without a running inferior) PR tdep/31254 ([gdb/tdep, arm] FAIL: gdb.threads/staticthreads.exp: up 10) PR gdb/31256 (Crash with basic 'list .') PR python/31366 (Frame.static_link() segfaults) Signed-off-by: Thomas Petazzoni Signed-off-by: Yann E. MORIN (cherry picked from commit bfefed17a9e5a421b3217685003d3b22c99de4ab) Signed-off-by: Peter Korsgaard --- package/gdb/Config.in.host | 2 +- package/gdb/gdb.hash | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/gdb/Config.in.host b/package/gdb/Config.in.host index 891e45948e..53706cd3ee 100644 --- a/package/gdb/Config.in.host +++ b/package/gdb/Config.in.host @@ -67,5 +67,5 @@ config BR2_GDB_VERSION default "13.2" if BR2_GDB_VERSION_13 || !BR2_PACKAGE_HOST_GDB # When making 14.x the default, or 14.x becomes the oldest version, # be sure to update the target variant to properly select mpfr. - default "14.1" if BR2_GDB_VERSION_14 + default "14.2" if BR2_GDB_VERSION_14 depends on BR2_PACKAGE_GDB || BR2_PACKAGE_HOST_GDB diff --git a/package/gdb/gdb.hash b/package/gdb/gdb.hash index c62da28cbf..144f6da296 100644 --- a/package/gdb/gdb.hash +++ b/package/gdb/gdb.hash @@ -3,7 +3,7 @@ sha512 3653762ac008e065c37cd641653184c9ff7ce51ee2222ade1122bec9d6cc64dffd4fb748 sha512 07e9026423438049b11f4f784d57401ece4e940570f613bd6958b3714fe7fbc2c048470bcce3e7d7d9f93331cdf3881d30dcc964cb113a071143a02b28e5b127 gdb-11.2.tar.xz sha512 425568d2e84672177d0fb87b1ad7daafdde097648d605e30cf0656970f66adc6a82ca2d83375ea4be583e9683a340e5bfdf5819668ddf66728200141ae50ff2d gdb-12.1.tar.xz sha512 8185d3e11ab60dafff5860a5016577bfe7dd7547ef01ebc867bc247603d82b74ff74c4f29492c7d2aee57076f52be33e289f4c6b414a4b870d4b3004909f4c34 gdb-13.2.tar.xz -sha512 575e198105076fc4a88f68591aa114ab9c1196e84386a3f7b9b58fe5f30cdeed33f6a5f957b68f08c47284ec922bb60c964627e238471419673fd913575ce427 gdb-14.1.tar.xz +sha512 7e07941f1fe661288cc571b4964012ceabc1760624fce20320db2f470c01439b2386f859b5288da13204b758e2e3b22a74c68c012178db93b9529b06f1e22ede gdb-14.2.tar.xz # Locally calculated (fetched from Github) sha512 3518b47d5c11d1fb478ee152bde1719363f9391db73f3b9f5491217c17742bef8ebca6a51a40302dfaa9476c5a32a8b8f70a4bf64289422dea5f750ae53ab88d gdb-arc-2023.09-release.tar.gz From dario.binacchi at amarulasolutions.com Thu May 2 09:09:39 2024 From: dario.binacchi at amarulasolutions.com (Dario Binacchi) Date: Thu, 2 May 2024 11:09:39 +0200 Subject: [Buildroot] [RFC PATCH 1/1] support/scripts/apply-patches.sh: set the maximum fuzz factor to 1 Message-ID: <20240502090939.748610-1-dario.binacchi@amarulasolutions.com> This patch was created as a fix to a problem that occurred during the compilation of QEMU: >>> qemu 8.1.1 Patching Applying 0001-tests-fp-disable-fp-bench-build-by-default.patch using patch: patching file tests/fp/meson.build Hunk #1 succeeded at 138 with fuzz 2 (offset -502 lines). Applying 0002-softmmu-qemu-seccomp.c-add-missing-header-for-CLONE_.patch using patch: patching file softmmu/qemu-seccomp.c Applying 0004-tracing-install-trace-events-file-only-if-necessary.patch using patch: patching file trace/meson.build With the bump to version 8.1.1, the patch that disabled the compilation of the fp-bench test does not report any errors, even though the patch itself is no longer applicable. The only noticeable message is: "Hunk #1 succeeded at 138 with fuzz 2 (offset -502 lines)." As reported by the patch man page: "With context diffs, and to a lesser extent with normal diffs, patch can detect when the line numbers mentioned in the patch are incorrect, and attempts to find the correct place to apply each hunk of the patch. As a first guess, it takes the line number mentioned for the hunk, plus or minus any offset used in applying the previous hunk. If that is not the correct place, patch scans both forwards and backwards for a set of lines matching the context given in the hunk. First patch looks for a place where all lines of the context match. If no such place is found, and it's a context diff, and the maximum fuzz factor is set to 1 or more, then another scan takes place ignoring the first and last line of context. If that fails, and the maximum fuzz factor is set to 2 or more, the first two and last two lines of context are ignored, and another scan is made. The default maximum fuzz factor is 2. If the hunk is installed at a different line from the line number specified in the diff, you are told the offset. A single large offset may indicate that a hunk was installed in the wrong place. You are also told if a fuzz factor was used to make the match, in which case you should also be slightly suspicious." By setting the maximum fuzz factor to 1, we reduce the possibility that patches which cannot be applied are incorrectly reported as valid. Signed-off-by: Dario Binacchi --- support/scripts/apply-patches.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/support/scripts/apply-patches.sh b/support/scripts/apply-patches.sh index 6da83f6826e9..999384cbbd5b 100755 --- a/support/scripts/apply-patches.sh +++ b/support/scripts/apply-patches.sh @@ -114,7 +114,7 @@ function apply_patch { exit 1 fi echo "${path}/${patch}" >> ${builddir}/.applied_patches_list - ${uncomp} "${path}/$patch" | patch -g0 -p1 --no-backup-if-mismatch -d "${builddir}" -t -N $silent + ${uncomp} "${path}/$patch" | patch -F1 -g0 -p1 --no-backup-if-mismatch -d "${builddir}" -t -N $silent if [ $? != 0 ] ; then echo "Patch failed! Please fix ${patch}!" exit 1 -- 2.43.0 From ju.o at free.fr Thu May 2 10:02:36 2024 From: ju.o at free.fr (Julien Olivain) Date: Thu, 02 May 2024 12:02:36 +0200 Subject: [Buildroot] [PATCH 1/1] package/fwts: disable parallel build In-Reply-To: References: <20240420132251.1349622-1-ju.o@free.fr> <20240501215523.5bc7ce23@windsurf> Message-ID: Hi again Thomas, On 01/05/2024 22:27, Julien Olivain wrote: > Hi Thomas, > > On 01/05/2024 21:55, Thomas Petazzoni wrote: >> On Sat, 20 Apr 2024 15:22:51 +0200 >> Julien Olivain wrote: >> >>> fwts randomly fail to build in parallel with error: >>> >>> mv: cannot stat 'dtcompilerparser.tab.c': No such file or >>> directory >>> mv: cannot stat 'prparser.tab.c': No such file or directory >>> >>> This is a known upstream issue. See: >>> https://github.com/fwts/fwts/issues/7 >>> >>> This commit workaround this issue by disabling parallel builds. >>> >>> Signed-off-by: Julien Olivain >>> --- >>> package/fwts/fwts.mk | 3 +++ >>> 1 file changed, 3 insertions(+) >> >> Hm, I don't see any failures in the autobuilders. Did you encounter >> this issue personally? Why don't we see it in the autobuilders? > > On my side, I see those failures on systems with with 20 cores and more > on an > idle system doing only the Buildroot build. Maybe the autobuilders have > a > different load, or less cores? After testing a bit more, it appears the build always fail with GNU make 4.4.1. Testing in the Buildroot docker reference image with the same conditions (20+ cores, idle system), and which includes GNU make 4.3 does not fail. Looking at the host load, it seems GNU make 4.3 serializes some part of the build, whereas GNU make 4.4.1 parallelize most of the build (and fail). FWTS uses the .NOTPARALLEL special target with prerequisites: https://github.com/fwts/fwts/blob/V24.03.00/src/libfwtsiasl/Makefile.am#L67 It seems the two versions of GNU make are not honoring this the same way. It also seems the .NOTPARALLEL _with_ prerequisites is a feature added in GNU make 4.4. See: https://git.savannah.gnu.org/cgit/make.git/commit/?id=f6ea899d83bf00fe9201fde0ca9cf7af8e443677 https://lists.gnu.org/archive/html/help-make/2022-10/msg00020.html Finally, the FWTS Makefile rules might also be incorrect, at: https://github.com/fwts/fwts/blob/V24.03.00/src/libfwtsiasl/Makefile.am#L67 Quoting the Make manual: https://www.gnu.org/software/make/manual/html_node/Parallel-Disable.html """ If the .NOTPARALLEL special target has prerequisites, then each of those prerequisites will be considered a target and all prerequisites of these targets will be run serially. """ Note the serialization will happen on the prerequisites of the target set as prerequisites of .NOTPARALLEL. My current understanding is that GNU Make 4.3 just ignores the prerequisites of the .NOTPARALLEL and interprets it as if there was none, which makes it serialize a bigger part of the build. With this analysis, I may have an idea of a patch in the FWTS Makefile.am. I'll do some more tests and propose a new patch. Best regards, Julien. From peter at korsgaard.com Thu May 2 11:15:40 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 13:15:40 +0200 Subject: [Buildroot] [PATCH 1/1] package/cmake: bump version to 3.28.3 In-Reply-To: <20240224115922.234596-1-bernd@kuhls.net> (Bernd Kuhls's message of "Sat, 24 Feb 2024 12:59:22 +0100") References: <20240224115922.234596-1-bernd@kuhls.net> Message-ID: <87h6fg79cz.fsf@dell.be.48ers.dk> >>>>> "Bernd" == Bernd Kuhls writes: > Release notes: > https://www.kitware.com/cmake-3-28-3-available-for-download/ > https://www.kitware.com/cmake-3-28-2-available-for-download/ > Signed-off-by: Bernd Kuhls Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 11:16:33 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 13:16:33 +0200 Subject: [Buildroot] [PATCH 1/1] package/gdal: add openssl optional dependency In-Reply-To: <548dca9c-3ca1-4d36-93cc-e15a827eefa7@mind.be> (Arnout Vandecappelle via buildroot's message of "Sun, 7 Apr 2024 16:49:29 +0200") References: <20240225092425.783094-1-fontaine.fabrice@gmail.com> <548dca9c-3ca1-4d36-93cc-e15a827eefa7@mind.be> Message-ID: <87cyq479bi.fsf@dell.be.48ers.dk> >>>>> "Arnout" == Arnout Vandecappelle via buildroot writes: > On 25/02/2024 10:24, Fabrice Fontaine wrote: >> Signed-off-by: Fabrice Fontaine > Applied to master, thanks. Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 11:19:06 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 13:19:06 +0200 Subject: [Buildroot] [PATCH v3 1/1] package/brcmfmac_sdio-firmware-rpi: bump version to 26ff205 In-Reply-To: <15c47e9c-7ab6-4bc6-afd7-6afbfb8c88d7@mind.be> (Arnout Vandecappelle via buildroot's message of "Sun, 7 Apr 2024 17:12:17 +0200") References: <20240229052236.50171-1-nisargjhaveri@gmail.com> <15c47e9c-7ab6-4bc6-afd7-6afbfb8c88d7@mind.be> Message-ID: <878r0s7979.fsf@dell.be.48ers.dk> >>>>> "Arnout" == Arnout Vandecappelle via buildroot writes: > On 31/03/2024 22:03, Nisarg Jhaveri wrote: >> This should also be backported to?2024.02.1 as the builds for >> Raspberry Pi boards are broken >> since?13ba668a2da3a0dcb386578ce15b00a444101dbe. > The proper way to indicate this is with a Fixes: tag. >> Backport to:?2024.02.1 >> On Thu, Feb 29, 2024 at 10:53?AM Nisarg Jhaveri >> > wrote: >> The current version is more than 2 years old. Update to the >> latest. >> A lot of the files are symlinked. Instead of individually restoring the >> links, using `cp --remove-destination --no-dereference` and `chmod` instead >> of `install`. > Please make sure the commit message is wrapped at 72 columns. >> Signed-off-by: Nisarg Jhaveri > > >> --- >> Changes v2 -> v3: >> ? - Attempt to fix patch formatting >> Changes v1 -> v2: >> ? - Attempt to fix patch formatting >> --- >> ?.../brcmfmac_sdio-firmware-rpi.hash? ? ? ? ? ?|? 4 +-- >> ?.../brcmfmac_sdio-firmware-rpi.mk >> ? ? ? ? ? ?| 27 >> +++++++------------ >> ?2 files changed, 12 insertions(+), 19 deletions(-) >> diff --git >> a/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.hash >> b/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.hash >> index a12e92cbac..aa1043518b 100644 >> --- a/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.hash >> +++ b/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.hash >> @@ -1,3 +1,3 @@ >> ?# Locally calculated >> -sha256? >> e51b717c2a60ca29fcdd8e04e07c00996226cb48fa56a8ad1934b5f4ddee2e3d >> brcmfmac_sdio-firmware-rpi-ea9963f3f77b4bb6cd280577eb115152bdd67e8d.tar.gz >> -sha256? >> b16056fc91b82a0e3e8de8f86c2dac98201aa9dc3cbd33e8d38f1b087fcec30d >> LICENCE.broadcom_bcm43xx >> +sha256? >> 2f0917b104739455dd488dd8f5af2ee4430801a7ac8fe8d9866e74bfbb185356 >> brcmfmac_sdio-firmware-rpi-26ff205b45dc109b498a70aaf182804ad9dbfea5.tar.gz >> +sha256? >> ea8b7b7b6cfc6fd30587ed977100f6a542734ce53218b5b63de16180acddd599 >> LICENCE > The license file changed name from LICENCE to LICENSE. >> diff --git >> a/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.mk >> >> b/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.mk >> >> index 5332bf53d7..7860de3ef7 100644 >> --- a/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.mk >> >> +++ b/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.mk >> >> @@ -4,33 +4,26 @@ >> ?# >> ?################################################################################ >> -BRCMFMAC_SDIO_FIRMWARE_RPI_VERSION = >> ea9963f3f77b4bb6cd280577eb115152bdd67e8d >> +BRCMFMAC_SDIO_FIRMWARE_RPI_VERSION = 26ff205b45dc109b498a70aaf182804ad9dbfea5 >> ?BRCMFMAC_SDIO_FIRMWARE_RPI_SITE = $(call >> github,LibreELEC,brcmfmac_sdio-firmware-rpi,$(BRCMFMAC_SDIO_FIRMWARE_RPI_VERSION)) >> ?BRCMFMAC_SDIO_FIRMWARE_RPI_LICENSE = PROPRIETARY >> -BRCMFMAC_SDIO_FIRMWARE_RPI_LICENSE_FILES = LICENCE.broadcom_bcm43xx >> +BRCMFMAC_SDIO_FIRMWARE_RPI_LICENSE_FILES = LICENCE >> ?ifeq ($(BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_BT),y) >> ?define BRCMFMAC_SDIO_FIRMWARE_RPI_INSTALL_TARGET_BT >> -? ? ? ?$(INSTALL) -d $(TARGET_DIR)/lib/firmware/brcm >> -? ? ? ?$(INSTALL) -m 0644 $(@D)/firmware/brcm/*.hcd >> $(TARGET_DIR)/lib/firmware/brcm >> +? ? ? ?$(INSTALL) -d $(TARGET_DIR)/lib/firmware/brcm >> $(TARGET_DIR)/lib/firmware/synaptics > This synaptics directory is new, that should have been mentioned in > the commit message. > I added the license file rename and modified the commit message as follows. > package/brcmfmac_sdio-firmware-rpi: bump version to 26ff205 > The current version is more than 2 years old. Update to the latest. > This fixes runtime issues with the newer kernel used in our defconfigs > since commit 13ba668a2da3a0dcb386578ce15b00a444101dbe. > License file changed name from LICENCE to LICENSE but is otherwise > unchanged. > There is a new directory "synaptics", install this one as well. > A lot of the files are symlinks. "install" creates copies for these, > which consumes a lot of unnecessary space. Instead of individually > restoring the links, using `cp --remove-destination --no-dereference` > and `chmod` instead of `install`. > Fixes: 13ba668a2da3a0dcb386578ce15b00a444101dbe > Signed-off-by: Nisarg Jhaveri > [Arnout: correct license file name] > Signed-off-by: Arnout Vandecappelle > Applied to master, thanks. Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 11:20:07 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 13:20:07 +0200 Subject: [Buildroot] [PATCH 1/1] package/google-breakpad: needs C++17 In-Reply-To: <20240303132222.151704-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sun, 3 Mar 2024 14:22:22 +0100") References: <20240303132222.151704-1-fontaine.fabrice@gmail.com> Message-ID: <874jbg795k.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > Fix the following build failure raised since commit > 32c1fbad554d4c2bfbe56a652333195c8ae67904: > configure: error: *** A compiler with support for C++17 language features is required. > Fixes: 32c1fbad554d4c2bfbe56a652333195c8ae67904 > - http://autobuild.buildroot.org/results/451bae7151a74cbcb5d199b8516e9c255a0953fe > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 11:19:46 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 13:19:46 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/google-breakpad: needs C++17 Message-ID: <20240502112239.94AD38661A@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=eb80cd6563320cde6a9f7dd2b820c80d1360d728 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Fix the following build failure raised since commit 32c1fbad554d4c2bfbe56a652333195c8ae67904: configure: error: *** A compiler with support for C++17 language features is required. Fixes: 32c1fbad554d4c2bfbe56a652333195c8ae67904 - http://autobuild.buildroot.org/results/451bae7151a74cbcb5d199b8516e9c255a0953fe Signed-off-by: Fabrice Fontaine [Arnout: also update BR2_GOOGLE_BREAKPAD_ENABLE] Signed-off-by: Arnout Vandecappelle (cherry picked from commit 109362c90418d9595e3bab0c9ab6d1c8a24f01db) Signed-off-by: Peter Korsgaard --- Config.in | 2 +- package/google-breakpad/Config.in | 6 +++--- package/sentry-native/Config.in | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Config.in b/Config.in index 113adf0755..e4f58f3f66 100644 --- a/Config.in +++ b/Config.in @@ -586,7 +586,7 @@ config BR2_ENABLE_LTO config BR2_GOOGLE_BREAKPAD_ENABLE bool "Enable google-breakpad support" depends on BR2_INSTALL_LIBSTDCPP - depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17 depends on BR2_USE_WCHAR depends on BR2_TOOLCHAIN_HAS_THREADS depends on BR2_TOOLCHAIN_USES_GLIBC diff --git a/package/google-breakpad/Config.in b/package/google-breakpad/Config.in index 5c7f4bb7ba..4e2d98eb04 100644 --- a/package/google-breakpad/Config.in +++ b/package/google-breakpad/Config.in @@ -6,7 +6,7 @@ config BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS config BR2_PACKAGE_GOOGLE_BREAKPAD bool "google-breakpad" depends on BR2_INSTALL_LIBSTDCPP - depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17 depends on BR2_USE_WCHAR depends on BR2_TOOLCHAIN_HAS_THREADS depends on BR2_TOOLCHAIN_USES_GLIBC @@ -45,10 +45,10 @@ config BR2_PACKAGE_GOOGLE_BREAKPAD_TOOLS endif -comment "google-breakpad requires a glibc toolchain w/ wchar, thread, C++, gcc >= 4.8" +comment "google-breakpad requires a glibc toolchain w/ wchar, threads, C++, gcc >= 7" depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS depends on BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ !BR2_TOOLCHAIN_HAS_THREADS || \ !BR2_TOOLCHAIN_USES_GLIBC || \ - !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + !BR2_TOOLCHAIN_GCC_AT_LEAST_7 diff --git a/package/sentry-native/Config.in b/package/sentry-native/Config.in index 7a3cbd36ad..88db2779f1 100644 --- a/package/sentry-native/Config.in +++ b/package/sentry-native/Config.in @@ -1,7 +1,7 @@ config BR2_PACKAGE_SENTRY_NATIVE bool "sentry-native" depends on BR2_INSTALL_LIBSTDCPP # google-breakpad - depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # google-breakpad + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # google-breakpad depends on BR2_USE_WCHAR # google-breakpad depends on BR2_TOOLCHAIN_HAS_THREADS # google-breakpad # google-breakpad is restricted to glibc or uClibc, but @@ -19,10 +19,10 @@ config BR2_PACKAGE_SENTRY_NATIVE https://github.com/getsentry/sentry-native -comment "sentry-native needs a glibc toolchain with w/ wchar, thread, C++, gcc >= 4.8" +comment "sentry-native needs a glibc toolchain with w/ wchar, threads, C++, gcc >= 7" depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS depends on BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ !BR2_TOOLCHAIN_HAS_THREADS || \ !BR2_TOOLCHAIN_USES_GLIBC || \ - !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + !BR2_TOOLCHAIN_GCC_AT_LEAST_7 From peter at korsgaard.com Thu May 2 11:16:09 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 13:16:09 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/gdal: add openssl optional dependency Message-ID: <20240502112239.7C54E86618@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=a22a40a1dc7a459e0f8a503aae182f2c50791f05 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: Fabrice Fontaine Signed-off-by: Arnout Vandecappelle (cherry picked from commit d2f59ef0c4ae67827f62933a8db51eb0e2043b24) Signed-off-by: Peter Korsgaard --- package/gdal/gdal.mk | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/package/gdal/gdal.mk b/package/gdal/gdal.mk index 247e13663c..77ffb514c2 100644 --- a/package/gdal/gdal.mk +++ b/package/gdal/gdal.mk @@ -46,7 +46,6 @@ GDAL_CONF_OPTS = \ -DGDAL_USE_BLOSC=OFF \ -DGDAL_USE_BRUNSLI=OFF \ -DGDAL_USE_CFITSIO=OFF \ - -DGDAL_USE_OPENSSL=OFF \ -DGDAL_USE_CRYPTOPP=OFF \ -DGDAL_USE_CRNLIB=OFF \ -DGDAL_USE_ECW=OFF \ @@ -130,6 +129,13 @@ else GDAL_CONF_OPTS += -DENABLE_DEFLATE64=OFF endif +ifeq ($(BR2_PACKAGE_OPENSSL),y) +GDAL_DEPENDENCIES += openssl +GDAL_CONF_OPTS += -DGDAL_USE_OPENSSL=ON +else +GDAL_CONF_OPTS += -DGDAL_USE_OPENSSL=OFF +endif + ifeq ($(BR2_PACKAGE_POSTGRESQL),y) GDAL_DEPENDENCIES += postgresql GDAL_CONF_OPTS += -DGDAL_USE_POSTGRESQL=ON From peter at korsgaard.com Thu May 2 11:15:22 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 13:15:22 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/cmake: bump version to 3.28.3 Message-ID: <20240502112239.70AAA86617@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=f9ea43199dfbdcf654349e5675692d1b7059f115 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Release notes: https://www.kitware.com/cmake-3-28-3-available-for-download/ https://www.kitware.com/cmake-3-28-2-available-for-download/ Signed-off-by: Bernd Kuhls Signed-off-by: Arnout Vandecappelle (cherry picked from commit 529c47862e0dfc369605824716759cbbd1f0f87b) Signed-off-by: Peter Korsgaard --- package/cmake/cmake.hash | 4 ++-- package/cmake/cmake.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/cmake/cmake.hash b/package/cmake/cmake.hash index 51fff6c3ef..74b4a0a3a8 100644 --- a/package/cmake/cmake.hash +++ b/package/cmake/cmake.hash @@ -1,5 +1,5 @@ -# From https://cmake.org/files/v3.28/cmake-3.28.1-SHA-256.txt -sha256 15e94f83e647f7d620a140a7a5da76349fc47a1bfed66d0f5cdee8e7344079ad cmake-3.28.1.tar.gz +# From https://cmake.org/files/v3.28/cmake-3.28.3-SHA-256.txt +sha256 72b7570e5c8593de6ac4ab433b73eab18c5fb328880460c86ce32608141ad5c1 cmake-3.28.3.tar.gz # Locally calculated sha256 4a01ccf2dc580ba570d02bc015bbe0ec92f1f318717aae9540ba841ba7946756 Copyright.txt diff --git a/package/cmake/cmake.mk b/package/cmake/cmake.mk index 23d00b95c5..49d1f9fea5 100644 --- a/package/cmake/cmake.mk +++ b/package/cmake/cmake.mk @@ -6,7 +6,7 @@ # When updating the version, please also update BR2_HOST_CMAKE_AT_LEAST_X_Y CMAKE_VERSION_MAJOR = 3.28 -CMAKE_VERSION = $(CMAKE_VERSION_MAJOR).1 +CMAKE_VERSION = $(CMAKE_VERSION_MAJOR).3 CMAKE_SITE = https://cmake.org/files/v$(CMAKE_VERSION_MAJOR) CMAKE_LICENSE = BSD-3-Clause CMAKE_LICENSE_FILES = Copyright.txt From peter at korsgaard.com Thu May 2 11:18:23 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 13:18:23 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/brcmfmac_sdio-firmware-rpi: bump version to 26ff205 Message-ID: <20240502112239.87EE086619@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=762717fdcfc56664f5b4ff183d2faf90006f4337 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x The current version is more than 2 years old. Update to the latest. This fixes runtime issues with the newer kernel used in our defconfigs since commit 13ba668a2da3a0dcb386578ce15b00a444101dbe. License file changed name from LICENCE to LICENSE but is otherwise unchanged. There is a new directory "synaptics", install this one as well. A lot of the files are symlinks. "install" creates copies for these, which consumes a lot of unnecessary space. Instead of individually restoring the links, using `cp --remove-destination --no-dereference` and `chmod` instead of `install`. Fixes: 13ba668a2da3a0dcb386578ce15b00a444101dbe Signed-off-by: Nisarg Jhaveri [Arnout: correct license file name] Signed-off-by: Arnout Vandecappelle (cherry picked from commit ab2410053770b92ec1ee12d9da271b432053c38c) Signed-off-by: Peter Korsgaard --- .../brcmfmac_sdio-firmware-rpi.hash | 4 ++-- .../brcmfmac_sdio-firmware-rpi.mk | 27 ++++++++-------------- 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.hash b/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.hash index a12e92cbac..c20abfc26c 100644 --- a/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.hash +++ b/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 e51b717c2a60ca29fcdd8e04e07c00996226cb48fa56a8ad1934b5f4ddee2e3d brcmfmac_sdio-firmware-rpi-ea9963f3f77b4bb6cd280577eb115152bdd67e8d.tar.gz -sha256 b16056fc91b82a0e3e8de8f86c2dac98201aa9dc3cbd33e8d38f1b087fcec30d LICENCE.broadcom_bcm43xx +sha256 2f0917b104739455dd488dd8f5af2ee4430801a7ac8fe8d9866e74bfbb185356 brcmfmac_sdio-firmware-rpi-26ff205b45dc109b498a70aaf182804ad9dbfea5.tar.gz +sha256 ea8b7b7b6cfc6fd30587ed977100f6a542734ce53218b5b63de16180acddd599 LICENSE diff --git a/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.mk b/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.mk index 5332bf53d7..95707487a9 100644 --- a/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.mk +++ b/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.mk @@ -4,33 +4,26 @@ # ################################################################################ -BRCMFMAC_SDIO_FIRMWARE_RPI_VERSION = ea9963f3f77b4bb6cd280577eb115152bdd67e8d +BRCMFMAC_SDIO_FIRMWARE_RPI_VERSION = 26ff205b45dc109b498a70aaf182804ad9dbfea5 BRCMFMAC_SDIO_FIRMWARE_RPI_SITE = $(call github,LibreELEC,brcmfmac_sdio-firmware-rpi,$(BRCMFMAC_SDIO_FIRMWARE_RPI_VERSION)) BRCMFMAC_SDIO_FIRMWARE_RPI_LICENSE = PROPRIETARY -BRCMFMAC_SDIO_FIRMWARE_RPI_LICENSE_FILES = LICENCE.broadcom_bcm43xx +BRCMFMAC_SDIO_FIRMWARE_RPI_LICENSE_FILES = LICENSE ifeq ($(BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_BT),y) define BRCMFMAC_SDIO_FIRMWARE_RPI_INSTALL_TARGET_BT - $(INSTALL) -d $(TARGET_DIR)/lib/firmware/brcm - $(INSTALL) -m 0644 $(@D)/firmware/brcm/*.hcd $(TARGET_DIR)/lib/firmware/brcm + $(INSTALL) -d $(TARGET_DIR)/lib/firmware/brcm $(TARGET_DIR)/lib/firmware/synaptics + cp --remove-destination --no-dereference $(@D)/firmware/brcm/*.hcd $(TARGET_DIR)/lib/firmware/brcm + cp --remove-destination --no-dereference $(@D)/firmware/synaptics/*.hcd $(TARGET_DIR)/lib/firmware/synaptics + chmod 644 $(TARGET_DIR)/lib/firmware/brcm/*.hcd $(TARGET_DIR)/lib/firmware/synaptics/*.hcd endef endif ifeq ($(BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_WIFI),y) define BRCMFMAC_SDIO_FIRMWARE_RPI_INSTALL_TARGET_WIFI - $(INSTALL) -d $(TARGET_DIR)/lib/firmware/brcm - $(INSTALL) -m 0644 $(@D)/firmware/brcm/brcmfmac* $(TARGET_DIR)/lib/firmware/brcm - ln -sf ../cypress/cyfmac43430-sdio.bin $(TARGET_DIR)/lib/firmware/brcm/brcmfmac43430-sdio.bin - ln -sf ../cypress/cyfmac43430-sdio.clm_blob $(TARGET_DIR)/lib/firmware/brcm/brcmfmac43430-sdio.clm_blob - ln -sf brcmfmac43430-sdio.txt $(TARGET_DIR)/lib/firmware/brcm/brcmfmac43430-sdio.raspberrypi,3-model-b.txt - ln -sf brcmfmac43430-sdio.txt $(TARGET_DIR)/lib/firmware/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-w.txt - ln -sf ../cypress/cyfmac43455-sdio.bin $(TARGET_DIR)/lib/firmware/brcm/brcmfmac43455-sdio.bin - ln -sf ../cypress/cyfmac43455-sdio.clm_blob $(TARGET_DIR)/lib/firmware/brcm/brcmfmac43455-sdio.clm_blob - ln -sf brcmfmac43455-sdio.txt $(TARGET_DIR)/lib/firmware/brcm/brcmfmac43455-sdio.raspberrypi,3-model-a-plus.txt - ln -sf brcmfmac43455-sdio.txt $(TARGET_DIR)/lib/firmware/brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt - ln -sf brcmfmac43455-sdio.txt $(TARGET_DIR)/lib/firmware/brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.txt - $(INSTALL) -d $(TARGET_DIR)/lib/firmware/cypress - $(INSTALL) -m 0644 $(@D)/firmware/cypress/cyfmac* $(TARGET_DIR)/lib/firmware/cypress + $(INSTALL) -d $(TARGET_DIR)/lib/firmware/brcm $(TARGET_DIR)/lib/firmware/cypress + cp --remove-destination --no-dereference $(@D)/firmware/brcm/brcmfmac* $(TARGET_DIR)/lib/firmware/brcm + cp --remove-destination --no-dereference $(@D)/firmware/cypress/cyfmac* $(TARGET_DIR)/lib/firmware/cypress + chmod 644 $(TARGET_DIR)/lib/firmware/brcm/brcmfmac* $(TARGET_DIR)/lib/firmware/cypress/cyfmac* endef endif From peter at korsgaard.com Thu May 2 11:29:15 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 13:29:15 +0200 Subject: [Buildroot] [PATCH v2,1/1] package/libtracefs: fix musl build In-Reply-To: <3b2522a2-a2ea-42c0-b7ab-f8e33eca5b6d@mind.be> (Arnout Vandecappelle via buildroot's message of "Sun, 7 Apr 2024 17:44:42 +0200") References: <20240303173851.788985-1-fontaine.fabrice@gmail.com> <3b2522a2-a2ea-42c0-b7ab-f8e33eca5b6d@mind.be> Message-ID: <87zft85u5w.fsf@dell.be.48ers.dk> >>>>> "Arnout" == Arnout Vandecappelle via buildroot writes: > On 03/03/2024 18:38, Fabrice Fontaine wrote: >> Fix the following musl build failure raised since the addition of the >> package in commit b1dbd3f679e6660325472e3fdca72127d74e6929 if cunit is >> found: >> ../utest/tracefs-utest.c: In function 'test_uprobes_instance': >> ../utest/tracefs-utest.c:2492:19: error: 'PATH_MAX' undeclared (first use in this function) >> 2492 | char self[PATH_MAX] = { 0 }; >> | ^~~~~~~~ >> Fixes: b1dbd3f679e6660325472e3fdca72127d74e6929 >> - http://autobuild.buildroot.org/results/1a01883231dbc8a7688de26db9a08751165fe8fe >> Signed-off-by: Fabrice Fontaine > Applied to master, thanks. Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 11:29:34 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 13:29:34 +0200 Subject: [Buildroot] [PATCH 1/1] package/oatpp: disable tests In-Reply-To: <20240407135951.1868714-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sun, 7 Apr 2024 15:59:51 +0200") References: <20240407135951.1868714-1-fontaine.fabrice@gmail.com> Message-ID: <87v83w5u5d.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > Fix the following build failure raised since the addition of the package > in commit d5bba26801b352f591451cf73e0b7509de0e6850: > [100%] Linking CXX executable oatppAllTests > /home/buildroot/instance-0/output-1/per-package/oatpp/host/opt/ext-toolchain/m68k-buildroot-uclinux-uclibc/bin/ld.real: > cannot find -latomic: No such file or directory > Fixes: d5bba26801b352f591451cf73e0b7509de0e6850 > - http://autobuild.buildroot.org/results/1587b391baecdbb5a24a0c0b2c33d63cb71a2f7f > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 11:28:21 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 13:28:21 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/oatpp: disable tests Message-ID: <20240502113002.D762C86621@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=3b0771d4d5834eb39af313e065efd4623ec3f338 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Fix the following build failure raised since the addition of the package in commit d5bba26801b352f591451cf73e0b7509de0e6850: [100%] Linking CXX executable oatppAllTests /home/buildroot/instance-0/output-1/per-package/oatpp/host/opt/ext-toolchain/m68k-buildroot-uclinux-uclibc/bin/ld.real: cannot find -latomic: No such file or directory Fixes: d5bba26801b352f591451cf73e0b7509de0e6850 - http://autobuild.buildroot.org/results/1587b391baecdbb5a24a0c0b2c33d63cb71a2f7f Signed-off-by: Fabrice Fontaine Signed-off-by: Yann E. MORIN (cherry picked from commit 0af98ea2d889dd63bc6934236a625732ce28b059) Signed-off-by: Peter Korsgaard --- package/oatpp/oatpp.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/oatpp/oatpp.mk b/package/oatpp/oatpp.mk index c8b0c9694a..d3f6e1a9c2 100644 --- a/package/oatpp/oatpp.mk +++ b/package/oatpp/oatpp.mk @@ -8,7 +8,7 @@ OATPP_VERSION = 1.3.0 OATPP_SITE = $(call github,oatpp,oatpp,$(OATPP_VERSION)) OATPP_LICENSE = Apache-2.0 OATPP_LICENSE_FILES = LICENSE -OATPP_CONF_OPTS = -DBUILD_SHARED_LIBS=OFF +OATPP_CONF_OPTS = -DBUILD_SHARED_LIBS=OFF -DOATPP_BUILD_TESTS=OFF OATPP_INSTALL_STAGING = YES # Only builds a static lib and headers OATPP_INSTALL_TARGET = NO From peter at korsgaard.com Thu May 2 11:28:45 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 13:28:45 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/libtracefs: fix musl build Message-ID: <20240502113002.E8BB186622@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=344bcb651b944105cea6b5c3b7c442a1f135f9f2 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Fix the following musl build failure raised since the addition of the package in commit b1dbd3f679e6660325472e3fdca72127d74e6929 if cunit is found: ../utest/tracefs-utest.c: In function 'test_uprobes_instance': ../utest/tracefs-utest.c:2492:19: error: 'PATH_MAX' undeclared (first use in this function) 2492 | char self[PATH_MAX] = { 0 }; | ^~~~~~~~ Fixes: b1dbd3f679e6660325472e3fdca72127d74e6929 - http://autobuild.buildroot.org/results/1a01883231dbc8a7688de26db9a08751165fe8fe Signed-off-by: Fabrice Fontaine Signed-off-by: Arnout Vandecappelle (cherry picked from commit dece32b6f3957320bcb689394164151dd8707f3b) Signed-off-by: Peter Korsgaard --- ...Add-PATH_MAX-if-it-is-not-already-defined.patch | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/package/libtracefs/0002-libtracefs-utest-Add-PATH_MAX-if-it-is-not-already-defined.patch b/package/libtracefs/0002-libtracefs-utest-Add-PATH_MAX-if-it-is-not-already-defined.patch new file mode 100644 index 0000000000..121fee5adf --- /dev/null +++ b/package/libtracefs/0002-libtracefs-utest-Add-PATH_MAX-if-it-is-not-already-defined.patch @@ -0,0 +1,40 @@ +From ba750812f68f0f3314494558496c23f934f8faff Mon Sep 17 00:00:00 2001 +From: "Steven Rostedt (Google)" +Date: Thu, 22 Feb 2024 11:02:46 -0500 +Subject: libtracefs utest: Add PATH_MAX if it is not already defined + +In some setups PATH_MAX may not be defined (it is usually defined in +linux/limits.h), but we just use PATH_MAX as something to hold the paths +to the tracing files. In that case, just define it to 1024 if it's not +already defined. + +Link: https://lore.kernel.org/linux-trace-devel/20240222-utest-fixes-v2-1-7b8ee8dca0b7 at gmail.com/ + +Fixes: 845f16976929 ("libtracefs: Add unit tests") +Reported-by: Miko Larsson +Signed-off-by: Steven Rostedt (Google) + +Upstream: https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/commit/?id=ba750812f68f0f3314494558496c23f934f8faff +Signed-off-by: Fabrice Fontaine +--- + utest/tracefs-utest.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/utest/tracefs-utest.c b/utest/tracefs-utest.c +index 963fac7..07ecd32 100644 +--- a/utest/tracefs-utest.c ++++ b/utest/tracefs-utest.c +@@ -26,6 +26,10 @@ + + #define gettid() syscall(__NR_gettid) + ++#ifndef PATH_MAX ++#define PATH_MAX 1024 ++#endif ++ + #define TRACEFS_SUITE "tracefs library" + #define TEST_INSTANCE_NAME "cunit_test_iter" + #define TEST_TRACE_DIR "/tmp/trace_utest.XXXXXX" +-- +cgit 1.2.3-korg + From bb at ti.com Thu May 2 12:29:35 2024 From: bb at ti.com (Bryan Brattlof) Date: Thu, 2 May 2024 07:29:35 -0500 Subject: [Buildroot] [PATCH 00/11] update bsp binaries for TI SoCs In-Reply-To: References: <20240430-optee-update-v1-0-6f73c4903ec3@ti.com> Message-ID: <20240502122935.fgvb4otspby3hjz3@bryanbrattlof.com> Hi Romain, On May 1, 2024 thus sayeth Romain Naour: > Hello Bryan, All, > > Le 01/05/2024 ? 17:27, Bryan Brattlof via buildroot a ?crit?: > > Hello everyone! > > > > This series updates all the boot binaries (U-Boot, OP-TEE, TF-A, and > > Linux) to their latest versions to pull in all bug fixes and new > > features additions in these projects. > > > > This also includes a patch I send out a while ago just to keep things > > organized. > > > > https://lore.kernel.org/buildroot/20240402153328.1859642-1-bb at ti.com/ > > > > and finally some proof I didn't completely break something ;) > > > > https://paste.sr.ht/~bryanb/b666adef7da412de76efb5e4a68e68e0651f7928 > > We received only patch [4/11] boot/ti-k3-boot-firmware: bump to latest version > > Can you try to resend the series? > > Note: It would be better to use "boot/ti-k3-boot-firmware: bump to version > 09.02.00.009" > How odd, I didn't receive an error back from my client so I assumed they would show up eventually. Oh well. And yes I'll update the wording to be more explicit about which version we are switching to. ~Bryan From thomas at devoogdt.com Thu May 2 14:15:49 2024 From: thomas at devoogdt.com (Thomas Devoogdt) Date: Thu, 2 May 2024 16:15:49 +0200 Subject: [Buildroot] [PATCH v1 1/8] package/libsoup3: fix reference to atomic In-Reply-To: <20240502103049.3a143975@windsurf> References: <20240420185853.4134260-1-thomas@devoogdt.com> <20240502095605.32987057@windsurf> <20240502103049.3a143975@windsurf> Message-ID: Ah, Thanks, Thomas for pointing that out, and Fabrice for the patch. Kr, Thomas Op do 2 mei 2024 om 10:30 schreef Thomas Petazzoni : > > On Thu, 2 May 2024 10:15:53 +0200 > Fabrice Fontaine wrote: > > > > Could you have a look at fixing glib-2.0.pc instead? > > > > This patch is available since September 2023: > > https://patchwork.ozlabs.org/project/buildroot/patch/20230917185116.182810-1-fontaine.fabrice at gmail.com/ > > Awesome, I went ahead and applied this patch! > > Thomas > -- > Thomas Petazzoni, co-owner and CEO, Bootlin > Embedded Linux and Kernel engineering and training > https://bootlin.com > From romain.naour at smile.fr Thu May 2 14:18:09 2024 From: romain.naour at smile.fr (Romain Naour) Date: Thu, 2 May 2024 16:18:09 +0200 Subject: [Buildroot] [PATCH] configs/beagleboneai64_defconfig: new defconfig Message-ID: <20240502141809.2292787-1-romain.naour@smile.fr> Adds support for BeagleBone AI-64 board by introducing the beagleboneai64_defconfig file and related support files. Retrieve BSP settings from meta-ti (may be useful for other TI boards): - This defconfig requires u-boot binman support added in u-boot since 2023.10. See FOSDEM 2024 talk by TI folks about Binman and how it simplify the overall boot-loader build flow [1]. - Set BR2_TARGET_ARM_TRUSTED_FIRMWARE_TARGET_BOARD = "generic" meta-ti]$ git grep TFA_BOARD meta-ti-bsp/conf/machine/beagleplay.conf:TFA_BOARD = "lite" meta-ti-bsp/conf/machine/include/am62axx.inc:TFA_BOARD = "lite" meta-ti-bsp/conf/machine/include/am62pxx.inc:TFA_BOARD = "lite" meta-ti-bsp/conf/machine/include/am62xx.inc:TFA_BOARD = "lite" meta-ti-bsp/conf/machine/include/am64xx.inc:TFA_BOARD = "lite" meta-ti-bsp/conf/machine/include/am65xx.inc:TFA_BOARD = "generic" meta-ti-bsp/conf/machine/include/j7200.inc:TFA_BOARD = "generic" meta-ti-bsp/conf/machine/include/j721e.inc:TFA_BOARD = "generic" meta-ti-bsp/conf/machine/include/j721s2.inc:TFA_BOARD = "generic" meta-ti-bsp/conf/machine/include/j722s.inc:TFA_BOARD = "lite" meta-ti-bsp/conf/machine/include/j784s4.inc:TFA_BOARD = "j784s4" - Set BR2_TARGET_UBOOT_NEEDS_ATF_BL31 to provide BL31 variable pointing to ATF bl31.bin to the U-Boot build process [2]. - Set BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE to OP-TEE as BL32 secure payload. meta-ti set "SPD=opteed" to build ATF [3]. - Set BR2_TARGET_OPTEE_OS_PLATFORM to "k3-j721e". meta-ti uses the OPTEEMACHINE to set optee-os platform [4]. meta-ti]$ git grep OPTEEMACHINE meta-ti-bsp/conf/machine/am437x-hs-evm.conf:OPTEEMACHINE = "ti-am43xx" meta-ti-bsp/conf/machine/am57xx-hs-evm.conf:OPTEEMACHINE = "ti-am57xx" meta-ti-bsp/conf/machine/beagleplay.conf:OPTEEMACHINE = "k3-am62x" meta-ti-bsp/conf/machine/dra7xx-hs-evm.conf:OPTEEMACHINE = "ti-dra7xx" meta-ti-bsp/conf/machine/include/am62axx.inc:OPTEEMACHINE = "k3-am62x" meta-ti-bsp/conf/machine/include/am62pxx.inc:OPTEEMACHINE = "k3-am62x" meta-ti-bsp/conf/machine/include/am62xx.inc:OPTEEMACHINE = "k3-am62x" meta-ti-bsp/conf/machine/include/am64xx.inc:OPTEEMACHINE = "k3-am64x" meta-ti-bsp/conf/machine/include/am65xx.inc:OPTEEMACHINE = "k3-am65x" meta-ti-bsp/conf/machine/include/j7200.inc:OPTEEMACHINE = "k3-j721e" meta-ti-bsp/conf/machine/include/j721e.inc:OPTEEMACHINE = "k3-j721e" meta-ti-bsp/conf/machine/include/j721s2.inc:OPTEEMACHINE = "k3-j784s4" meta-ti-bsp/conf/machine/include/j722s.inc:OPTEEMACHINE = "k3-am62x" meta-ti-bsp/conf/machine/include/j784s4.inc:OPTEEMACHINE = "k3-j784s4" - u-boot is looking at /boot/dtb/ti for devicetree. But Buildroot strips the prefixes when installing them into /boot. Set BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME to keep "ti" directory used by the kernel to organize device tree sources. TI's mmc.env [5] uses "dtb" as additional subdirectory, so we need to create a symlink to make sure /boot/dtb/ti exist. (Yocto uses KERNEL_DTBDEST = "${KERNEL_IMAGEDEST}/dtb"). Using a symlink avoid to customize too much the u-boot environment. - At least, provide a custom uEnv.txt to avoid using "Standard boot" or "distroboot" [6] to boot. - Provide a hash file for all custom package version (arm-trusted-firmware, linux, ti-k3-r5-loader, uboot) to enable BR2_DOWNLOAD_FORCE_CHECK_HASHES. Note: Texas Instuments SK-TDA4VM [7] uses the same SoC than the BeagleBone AI-64, install the k3-j721e-sk.dtb in /boot/dtb/ti to support this board from this defconfig. [1] https://fosdem.org/2024/schedule/event/fosdem-2024-3067-standardizing-the-generation-and-signing-of-boot-images/ [2] https://git.yoctoproject.org/meta-ti/commit/?id=e74b9a1746d4d04757c87c1920a0f743e55ff096 [3] https://git.yoctoproject.org/meta-ti/tree/meta-ti-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-ti.inc?h=09.02.00.004#n7 [4] https://git.yoctoproject.org/meta-arm/tree/meta-arm/recipes-security/optee/optee-os.inc?h=4.0.3#n23 [5] https://source.denx.de/u-boot/u-boot/-/blob/v2024.04/include/env/ti/mmc.env?ref_type=tags#L18 [6] https://source.denx.de/u-boot/u-boot/-/blob/v2024.04/doc/develop/distro.rst?ref_type=tags [7] https://www.ti.com/tool/SK-TDA4VM More information about the board can be found at: https://www.beagleboard.org/boards/beaglebone-ai-64 Signed-off-by: Romain Naour --- Add "beagleboneai64" directory to board/beagleboard/ since we could move all other Beagleboard's boards (beagleboardx15, beaglebone, beagleboneai and beaglev) to the same subdirectory. --- DEVELOPERS | 2 + board/beagleboard/beagleboneai64/genimage.cfg | 29 +++++++++++ .../arm-trusted-firmware.hash | 2 + .../patches/linux-headers/linux-headers.hash | 1 + .../beagleboneai64/patches/linux/linux.hash | 2 + .../ti-k3-r5-loader/ti-k3-r5-loader.hash | 1 + .../beagleboneai64/patches/uboot/uboot.hash | 1 + .../beagleboard/beagleboneai64/post-build.sh | 15 ++++++ board/beagleboard/beagleboneai64/readme.txt | 39 +++++++++++++++ board/beagleboard/beagleboneai64/uEnv.txt | 6 +++ configs/beagleboneai64_defconfig | 50 +++++++++++++++++++ 11 files changed, 148 insertions(+) create mode 100644 board/beagleboard/beagleboneai64/genimage.cfg create mode 100644 board/beagleboard/beagleboneai64/patches/arm-trusted-firmware/arm-trusted-firmware.hash create mode 120000 board/beagleboard/beagleboneai64/patches/linux-headers/linux-headers.hash create mode 100644 board/beagleboard/beagleboneai64/patches/linux/linux.hash create mode 100644 board/beagleboard/beagleboneai64/patches/ti-k3-r5-loader/ti-k3-r5-loader.hash create mode 100644 board/beagleboard/beagleboneai64/patches/uboot/uboot.hash create mode 100755 board/beagleboard/beagleboneai64/post-build.sh create mode 100644 board/beagleboard/beagleboneai64/readme.txt create mode 100644 board/beagleboard/beagleboneai64/uEnv.txt create mode 100644 configs/beagleboneai64_defconfig diff --git a/DEVELOPERS b/DEVELOPERS index 5d198567d8..6c38cbdf2d 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2681,10 +2681,12 @@ F: package/irssi/ F: package/vnstat/ N: Romain Naour +F: board/beagleboard/beagleboneai64/ F: board/qemu/ F: board/ti/am574x-idk/ F: configs/qemu_* F: configs/am574x_idk_defconfig +F: configs/beagleboneai64_defconfig F: package/alure/ F: package/aubio/ F: package/bcc/ diff --git a/board/beagleboard/beagleboneai64/genimage.cfg b/board/beagleboard/beagleboneai64/genimage.cfg new file mode 100644 index 0000000000..be5b5c2e6d --- /dev/null +++ b/board/beagleboard/beagleboneai64/genimage.cfg @@ -0,0 +1,29 @@ +image boot.vfat { + vfat { + files = { + "sysfw.itb", + "tiboot3.bin", + "tispl.bin", + "u-boot.img", + "uEnv.txt", + } + } + + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/beagleboard/beagleboneai64/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/beagleboard/beagleboneai64/patches/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 0000000000..02714d06a0 --- /dev/null +++ b/board/beagleboard/beagleboneai64/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 2e18b881ada9198173238cca80086c787b1fa3f698944bde1743142823fc511c arm-trusted-firmware-v2.10.tar.gz diff --git a/board/beagleboard/beagleboneai64/patches/linux-headers/linux-headers.hash b/board/beagleboard/beagleboneai64/patches/linux-headers/linux-headers.hash new file mode 120000 index 0000000000..5808d92afe --- /dev/null +++ b/board/beagleboard/beagleboneai64/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/beagleboard/beagleboneai64/patches/linux/linux.hash b/board/beagleboard/beagleboneai64/patches/linux/linux.hash new file mode 100644 index 0000000000..cedae67f33 --- /dev/null +++ b/board/beagleboard/beagleboneai64/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 4e43d8c5fba14f7c82597838011648056487b7550fd83276ad534559e8499b1d linux-6.6.18.tar.xz diff --git a/board/beagleboard/beagleboneai64/patches/ti-k3-r5-loader/ti-k3-r5-loader.hash b/board/beagleboard/beagleboneai64/patches/ti-k3-r5-loader/ti-k3-r5-loader.hash new file mode 100644 index 0000000000..18d6169143 --- /dev/null +++ b/board/beagleboard/beagleboneai64/patches/ti-k3-r5-loader/ti-k3-r5-loader.hash @@ -0,0 +1 @@ +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 diff --git a/board/beagleboard/beagleboneai64/patches/uboot/uboot.hash b/board/beagleboard/beagleboneai64/patches/uboot/uboot.hash new file mode 100644 index 0000000000..18d6169143 --- /dev/null +++ b/board/beagleboard/beagleboneai64/patches/uboot/uboot.hash @@ -0,0 +1 @@ +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 diff --git a/board/beagleboard/beagleboneai64/post-build.sh b/board/beagleboard/beagleboneai64/post-build.sh new file mode 100755 index 0000000000..025fb79eff --- /dev/null +++ b/board/beagleboard/beagleboneai64/post-build.sh @@ -0,0 +1,15 @@ +#!/bin/sh +BOARD_DIR="$(dirname $0)" + +cp $BOARD_DIR/uEnv.txt $BINARIES_DIR/uEnv.txt + +# u-boot is looking at /boot/dtb/ti for devicetree in the rootfs +# partition while Buildroot install the kernel and its devicetree +# in /boot (BR2_LINUX_KERNEL_INSTALL_TARGET enabled). +# Enabling BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME allows to keep the +# "ti" subdirectory but "dts" is still missing. +# Make sure /boot/dtb/ti exist by creating a symlink in +# ${TARGET_DIR}/boot +# https://git.yoctoproject.org/meta-ti/tree/meta-ti-bsp/recipes-kernel/linux/ti-kernel.inc?h=09.02.00.004#n13 +# https://source.denx.de/u-boot/u-boot/-/blob/v2024.01/include/env/ti/mmc.env?ref_type=tags#L18 +ln -sfn . ${TARGET_DIR}/boot/dtb diff --git a/board/beagleboard/beagleboneai64/readme.txt b/board/beagleboard/beagleboneai64/readme.txt new file mode 100644 index 0000000000..fa4e189c44 --- /dev/null +++ b/board/beagleboard/beagleboneai64/readme.txt @@ -0,0 +1,39 @@ +BeagleBoard.org BeagleBone AI-64 Development Board + +Description +=========== + +This configuration will build a basic image for the BeagleBoard.org +BeagleBone AI-64. For more details about the board, visit: + +https://www.beagleboard.org/boards/beaglebone-ai-64 + +How to Build +============ + +Select the default configuration for the target: + +$ make beagleboneai64_defconfig + +Optional: modify the configuration: + +$ make menuconfig + +Build: + +$ make + +To copy the resultimg output image file to an SD card use dd: + +$ dd if=output/images/sdcard.img of=/dev/sdX bs=1M + +How to Run +========== + +Insert the SD card into the BeagleBone AI-64 board, and power it up +through the USB Type-C connector. The system should come up (make sure +to boot from the SD card not from the eMMC). You can use a USB to +serial adapter to connect to the connector labeled UART0 (J3) to +communicate with the board. + +https://docs.beagleboard.org/latest/boards/beaglebone/ai-64/02-quick-start.html diff --git a/board/beagleboard/beagleboneai64/uEnv.txt b/board/beagleboard/beagleboneai64/uEnv.txt new file mode 100644 index 0000000000..3fbaebf7de --- /dev/null +++ b/board/beagleboard/beagleboneai64/uEnv.txt @@ -0,0 +1,6 @@ +bootpart=1:2 +bootdir=/boot +devtype=mmc +boot=mmc +# define uenvcmd with bootcmd_ti_mmc to avoid booting with "standard boot" or "distroboot" +uenvcmd=run bootcmd_ti_mmc diff --git a/configs/beagleboneai64_defconfig b/configs/beagleboneai64_defconfig new file mode 100644 index 0000000000..5ea99631ca --- /dev/null +++ b/configs/beagleboneai64_defconfig @@ -0,0 +1,50 @@ +BR2_aarch64=y +BR2_cortex_a72=y +BR2_GLOBAL_PATCH_DIR="board/beagleboard/beagleboneai64/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/beagleboard/beagleboneai64/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/beagleboard/beagleboneai64/genimage.cfg" +BR2_SYSTEM_DHCP="eth0" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.18" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="ti/k3-j721e-beagleboneai64" +BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="256M" +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.10" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="k3" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_TARGET_BOARD="generic" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE=y +BR2_TARGET_OPTEE_OS=y +BR2_TARGET_OPTEE_OS_PLATFORM="k3-j721e" +BR2_TARGET_TI_K3_BOOT_FIRMWARE=y +BR2_TARGET_TI_K3_R5_LOADER=y +BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION=y +BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE="2024.04" +BR2_TARGET_TI_K3_R5_LOADER_BOARD_DEFCONFIG="j721e_evm_r5" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="j721e_evm_a72" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_USE_BINMAN=y +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="tispl.bin" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="TEE=$(BINARIES_DIR)/tee-pager_v2.bin" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y -- 2.44.0 From bb at ti.com Thu May 2 16:26:57 2024 From: bb at ti.com (Bryan Brattlof) Date: Thu, 2 May 2024 11:26:57 -0500 Subject: [Buildroot] [PATCH RESEND v2 07/11] configs/ti_am62x_sk_defconfig: update U-Boot to v2024.04 In-Reply-To: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> Message-ID: <20240430-optee-update-v2-7-5bdc2f940db1@ti.com> Bump to the latest release from U-Boot Signed-off-by: Bryan Brattlof --- configs/ti_am62x_sk_defconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configs/ti_am62x_sk_defconfig b/configs/ti_am62x_sk_defconfig index e169b6834d89c..fbceca791161e 100644 --- a/configs/ti_am62x_sk_defconfig +++ b/configs/ti_am62x_sk_defconfig @@ -27,12 +27,12 @@ BR2_TARGET_OPTEE_OS=y BR2_TARGET_OPTEE_OS_PLATFORM="k3-am62x" BR2_TARGET_TI_K3_R5_LOADER=y BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION=y -BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE="2024.04" BR2_TARGET_TI_K3_R5_LOADER_BOARD_DEFCONFIG="am62x_evm_r5" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="am62x_evm_a53" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_NEEDS_OPENSSL=y -- 2.43.2 From bb at ti.com Thu May 2 16:26:59 2024 From: bb at ti.com (Bryan Brattlof) Date: Thu, 2 May 2024 11:26:59 -0500 Subject: [Buildroot] [PATCH RESEND v2 09/11] configs/ti_am62x_sk_defconfig: bump kernel to v6.8.8 In-Reply-To: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> Message-ID: <20240430-optee-update-v2-9-5bdc2f940db1@ti.com> Update to the latest kernel to pull in the latest bug fixes and features for TI's SoCs and reference boards Signed-off-by: Bryan Brattlof --- board/ti/am62x-sk/patches/linux/linux.hash | 2 +- configs/ti_am62x_sk_defconfig | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/board/ti/am62x-sk/patches/linux/linux.hash b/board/ti/am62x-sk/patches/linux/linux.hash index cedae67f33f1c..2e9aad399ebe3 100644 --- a/board/ti/am62x-sk/patches/linux/linux.hash +++ b/board/ti/am62x-sk/patches/linux/linux.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 4e43d8c5fba14f7c82597838011648056487b7550fd83276ad534559e8499b1d linux-6.6.18.tar.xz +sha256 1c4cdcb9d560fad1fb95db2cb8afbedc922f9ead848371fe40363b13f9f631ba linux-6.8.8.tar.xz diff --git a/configs/ti_am62x_sk_defconfig b/configs/ti_am62x_sk_defconfig index fbceca791161e..070eaa42bfa7e 100644 --- a/configs/ti_am62x_sk_defconfig +++ b/configs/ti_am62x_sk_defconfig @@ -1,5 +1,4 @@ BR2_aarch64=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y BR2_GLOBAL_PATCH_DIR="board/ti/am62x-sk/patches" BR2_DOWNLOAD_FORCE_CHECK_HASHES=y BR2_ROOTFS_POST_BUILD_SCRIPT="board/ti/common/am6xx/post-build.sh" @@ -8,7 +7,7 @@ BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS="-c ttyS2,115200n8 -d k3-am625-sk.dtb -l am62x BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS="-c board/ti/am62x-sk/genimage.cfg" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.18" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.8" BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="ti/k3-am625-sk" -- 2.43.2 From bb at ti.com Thu May 2 16:27:00 2024 From: bb at ti.com (Bryan Brattlof) Date: Thu, 2 May 2024 11:27:00 -0500 Subject: [Buildroot] [PATCH RESEND v2 10/11] configs/ti_am64x_sk_defconfig: update kernel to v6.8.8 In-Reply-To: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> Message-ID: <20240430-optee-update-v2-10-5bdc2f940db1@ti.com> Update to the latest kernel to pull in the latest bug fixes and features for TI's SoCs and reference boards Signed-off-by: Bryan Brattlof --- board/ti/am64x-sk/patches/linux/linux.hash | 2 +- configs/ti_am64x_sk_defconfig | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/board/ti/am64x-sk/patches/linux/linux.hash b/board/ti/am64x-sk/patches/linux/linux.hash index cedae67f33f1c..2e9aad399ebe3 100644 --- a/board/ti/am64x-sk/patches/linux/linux.hash +++ b/board/ti/am64x-sk/patches/linux/linux.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 4e43d8c5fba14f7c82597838011648056487b7550fd83276ad534559e8499b1d linux-6.6.18.tar.xz +sha256 1c4cdcb9d560fad1fb95db2cb8afbedc922f9ead848371fe40363b13f9f631ba linux-6.8.8.tar.xz diff --git a/configs/ti_am64x_sk_defconfig b/configs/ti_am64x_sk_defconfig index bdd85f82a60e6..42df79768d7f7 100644 --- a/configs/ti_am64x_sk_defconfig +++ b/configs/ti_am64x_sk_defconfig @@ -1,5 +1,4 @@ BR2_aarch64=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y BR2_GLOBAL_PATCH_DIR="board/ti/am64x-sk/patches" BR2_DOWNLOAD_FORCE_CHECK_HASHES=y BR2_ROOTFS_POST_BUILD_SCRIPT="board/ti/common/am6xx/post-build.sh" @@ -8,7 +7,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS="-c board/ti/am64x-sk/genimage.cfg" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.18" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.8" BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="ti/k3-am642-sk" -- 2.43.2 From bb at ti.com Thu May 2 16:26:58 2024 From: bb at ti.com (Bryan Brattlof) Date: Thu, 2 May 2024 11:26:58 -0500 Subject: [Buildroot] [PATCH RESEND v2 08/11] configs/ti_am64x_sk_defconfig: update U-Boot to v2024.04 In-Reply-To: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> Message-ID: <20240430-optee-update-v2-8-5bdc2f940db1@ti.com> Bump to the latest release from U-Boot Signed-off-by: Bryan Brattlof --- configs/ti_am64x_sk_defconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configs/ti_am64x_sk_defconfig b/configs/ti_am64x_sk_defconfig index e0f48cd5bb062..bdd85f82a60e6 100644 --- a/configs/ti_am64x_sk_defconfig +++ b/configs/ti_am64x_sk_defconfig @@ -27,12 +27,12 @@ BR2_TARGET_OPTEE_OS=y BR2_TARGET_OPTEE_OS_PLATFORM="k3-am64x" BR2_TARGET_TI_K3_R5_LOADER=y BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION=y -BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE="2024.04" BR2_TARGET_TI_K3_R5_LOADER_BOARD_DEFCONFIG="am64x_evm_r5" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="am64x_evm_a53" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_NEEDS_OPENSSL=y -- 2.43.2 From bb at ti.com Thu May 2 16:26:51 2024 From: bb at ti.com (Bryan Brattlof) Date: Thu, 2 May 2024 11:26:51 -0500 Subject: [Buildroot] [PATCH RESEND v2 01/11] boot/optee-os: bump to release v4.2.0 In-Reply-To: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> Message-ID: <20240430-optee-update-v2-1-5bdc2f940db1@ti.com> Bump OP-TEE to the latest tagged release Signed-off-by: Bryan Brattlof --- boot/optee-os/Config.in | 4 ++-- boot/optee-os/optee-os.hash | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/boot/optee-os/Config.in b/boot/optee-os/Config.in index 75bf00d450916..34ea993136754 100644 --- a/boot/optee-os/Config.in +++ b/boot/optee-os/Config.in @@ -18,7 +18,7 @@ choice Select the version of OP-TEE OS you want to use config BR2_TARGET_OPTEE_OS_LATEST - bool "4.0.0" + bool "4.2.0" depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS select BR2_TARGET_OPTEE_OS_NEEDS_PYTHON_CRYPTOGRAPHY help @@ -70,7 +70,7 @@ endif config BR2_TARGET_OPTEE_OS_VERSION string - default "4.0.0" if BR2_TARGET_OPTEE_OS_LATEST + default "4.2.0" if BR2_TARGET_OPTEE_OS_LATEST default "custom" if BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL default BR2_TARGET_OPTEE_OS_CUSTOM_REPO_VERSION \ if BR2_TARGET_OPTEE_OS_CUSTOM_GIT diff --git a/boot/optee-os/optee-os.hash b/boot/optee-os/optee-os.hash index 1f13931ca20bd..663640b2cec2b 100644 --- a/boot/optee-os/optee-os.hash +++ b/boot/optee-os/optee-os.hash @@ -1,4 +1,4 @@ -# From https://github.com/OP-TEE/optee_os/archive/4.0.0/optee-os-4.0.0.tar.gz -sha256 2c2c9525b36c96dfad6216520721b8e9663e6cacc61d0108a0c8bffc0ea175f1 optee-os-4.0.0.tar.gz +# From https://github.com/OP-TEE/optee_os/archive/4.2.0/optee-os-4.2.0.tar.gz +sha256 ce70f0d177001bf4855cd6cd6396f515af6126e4bba9b12c716a437a5cb40c7b optee-os-4.2.0.tar.gz # Locally computed sha256 1247ee90858f4037b6cac63cbffddfed435d0d73c631b37d78c1e6e6ab3e5d1a LICENSE -- 2.43.2 From bb at ti.com Thu May 2 16:27:01 2024 From: bb at ti.com (Bryan Brattlof) Date: Thu, 2 May 2024 11:27:01 -0500 Subject: [Buildroot] [PATCH RESEND v2 11/11] DEVELOPERS: add myself to TI's packages and reference boards In-Reply-To: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> Message-ID: <20240430-optee-update-v2-11-5bdc2f940db1@ti.com> Add myself to the DEVELOPERS files to help review patches related to TI's reference boards. Signed-off-by: Bryan Brattlof --- DEVELOPERS | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index 5d198567d8323..1e3b13c01310d 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -548,6 +548,13 @@ F: package/vmtouch/ N: Brock Williams F: package/pdmenu/ +N: Bryan Brattlof +F: board/ti/ +F: boot/ti-k3-boot-firmware/ +F: boot/ti-k3-r5-loader/ +F: configs/ti_am62x_sk_defconfig +F: configs/ti_am64x_sk_defconfig + N: Carlo Caione F: package/jailhouse/ F: package/sunxi-boards/ -- 2.43.2 From bb at ti.com Thu May 2 16:26:54 2024 From: bb at ti.com (Bryan Brattlof) Date: Thu, 2 May 2024 11:26:54 -0500 Subject: [Buildroot] [PATCH RESEND v2 04/11] boot/ti-k3-boot-firmware: bump to version 09.02.00.009 In-Reply-To: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> Message-ID: <20240430-optee-update-v2-4-5bdc2f940db1@ti.com> The 09.02.00.009 release of ti-linux-firmware has the latest updates to TI's TIFS, DM and DMSC firmware needed for the K3 generation of processors. Update to pull in these latest updates. Reviewed-by: Heiko Thiery Tested-by: Andreas Dannenberg Signed-off-by: Bryan Brattlof --- boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash | 2 +- boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash index 95131180ef400..2398d02da258a 100644 --- a/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash +++ b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash @@ -1,3 +1,3 @@ # Locally calculated sha256 ab20ffbe7bba7e94be246b3417d33a914b3f07c16c47ef5a7f7602349a666a61 LICENSE.ti -sha256 6032a258ce731d987576115f5de44c677a6b0cf8bddcd61a9a2852928bdfff92 ti-linux-firmware-08.06.00.006.tar.xz +sha256 ae888a0a22f8c5b8fe841236d6e40bb2f821d9a4161dab6924fd989e1467ef0e ti-linux-firmware-09.02.00.009.tar.xz diff --git a/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk index 1f8ade207c13a..9332732ad4a32 100644 --- a/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk +++ b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk @@ -4,9 +4,7 @@ # ################################################################################ -# The hash 340194800a581baf976360386dfc7b5acab8d948 defined in the -# Makefile of ti-k3-image-gen corresponds to the tag 08.06.00.006. -TI_K3_BOOT_FIRMWARE_VERSION = 08.06.00.006 +TI_K3_BOOT_FIRMWARE_VERSION = 09.02.00.009 TI_K3_BOOT_FIRMWARE_SITE = https://git.ti.com/cgit/processor-firmware/ti-linux-firmware/snapshot TI_K3_BOOT_FIRMWARE_SOURCE = ti-linux-firmware-$(TI_K3_BOOT_FIRMWARE_VERSION).tar.xz TI_K3_BOOT_FIRMWARE_INSTALL_IMAGES = YES -- 2.43.2 From bb at ti.com Thu May 2 16:26:50 2024 From: bb at ti.com (Bryan Brattlof) Date: Thu, 2 May 2024 11:26:50 -0500 Subject: [Buildroot] [PATCH RESEND v2 00/11] update bsp binaries for TI SoCs Message-ID: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> Hello everyone! My apologies to everyone I just spammed with the first v2. I dropped the mailing list (still setting up my b4 configs) :/ This series updates all the boot binaries (U-Boot, OP-TEE, TF-A, and Linux) to their latest versions to pull in all bug fixes and new features additions in these projects. This also includes a patch I send out a while ago just to keep things organized. https://lore.kernel.org/buildroot/20240402153328.1859642-1-bb at ti.com/ and finally some proof I didn't completely break something ;) https://paste.sr.ht/~bryanb/b666adef7da412de76efb5e4a68e68e0651f7928 Thanks for reviewing ~Bryan Signed-off-by: Bryan Brattlof --- Changes in v2: - most emails never made it to the mailing list - updated commit messages to be more explicit about versions picked - Link to v1: https://lore.kernel.org/r/20240430-optee-update-v1-0-6f73c4903ec3 at ti.com --- Bryan Brattlof (11): boot/optee-os: bump to release v4.2.0 boot/uboot: bump to version v2024.04 boot/ti-k3-r5-loader: bump to version v2024.04 boot/ti-k3-boot-firmware: bump to version 09.02.00.009 configs/ti_am62x_sk_defconfig: update TFA to v2.10 configs/ti_am64x_sk_defconfig: update TFA to v2.10 configs/ti_am62x_sk_defconfig: update U-Boot to v2024.04 configs/ti_am64x_sk_defconfig: update U-Boot to v2024.04 configs/ti_am62x_sk_defconfig: bump kernel to v6.8.8 configs/ti_am64x_sk_defconfig: update kernel to v6.8.8 DEVELOPERS: add myself to TI's packages and reference boards DEVELOPERS | 7 +++++++ .../patches/arm-trusted-firmware/arm-trusted-firmware.hash | 2 +- board/ti/am62x-sk/patches/linux/linux.hash | 2 +- .../patches/arm-trusted-firmware/arm-trusted-firmware.hash | 2 +- board/ti/am64x-sk/patches/linux/linux.hash | 2 +- boot/optee-os/Config.in | 4 ++-- boot/optee-os/optee-os.hash | 4 ++-- boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash | 2 +- boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk | 4 +--- boot/ti-k3-r5-loader/Config.in | 4 ++-- boot/ti-k3-r5-loader/ti-k3-r5-loader.hash | 2 +- boot/ti-k3-r5-loader/ti-k3-r5-loader.mk | 1 + boot/uboot/Config.in | 6 +++--- boot/uboot/uboot.hash | 2 +- configs/ti_am62x_sk_defconfig | 9 ++++----- configs/ti_am64x_sk_defconfig | 9 ++++----- 16 files changed, 33 insertions(+), 29 deletions(-) --- base-commit: 929bffbf4bf8fcb91bda446777f907f32c782656 change-id: 20240430-optee-update-b9c1bc4e9f29 Best regards, -- Bryan Brattlof From bb at ti.com Thu May 2 16:26:56 2024 From: bb at ti.com (Bryan Brattlof) Date: Thu, 2 May 2024 11:26:56 -0500 Subject: [Buildroot] [PATCH RESEND v2 06/11] configs/ti_am64x_sk_defconfig: update TFA to v2.10 In-Reply-To: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> Message-ID: <20240430-optee-update-v2-6-5bdc2f940db1@ti.com> Update the TFA firmware to the latest LTS tag for v2.10 release of arm-trusted-firmware Signed-off-by: Bryan Brattlof --- .../ti/am64x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash | 2 +- configs/ti_am64x_sk_defconfig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/board/ti/am64x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/ti/am64x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash index 74fe35c9bc733..8f60864fbf67f 100644 --- a/board/ti/am64x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash +++ b/board/ti/am64x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -1,2 +1,2 @@ # Locally computed: -sha256 327c65b1bc231608a7a808b068b00c1a22310e9fc86158813cd10a9711d5725e arm-trusted-firmware-v2.7.tar.gz +sha256 ba215404fe9db26e5f2cef3fdce17b7c8ed344a2a1d592dd01a5f1c5e72cfdbd arm-trusted-firmware-lts-v2.10.4.tar.gz diff --git a/configs/ti_am64x_sk_defconfig b/configs/ti_am64x_sk_defconfig index 28e97f94e2f88..e0f48cd5bb062 100644 --- a/configs/ti_am64x_sk_defconfig +++ b/configs/ti_am64x_sk_defconfig @@ -19,7 +19,7 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_ROOTFS_EXT2_SIZE="120M" BR2_TARGET_ARM_TRUSTED_FIRMWARE=y BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y -BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.7" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="lts-v2.10.4" BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="k3" BR2_TARGET_ARM_TRUSTED_FIRMWARE_TARGET_BOARD="lite" BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE=y -- 2.43.2 From bb at ti.com Thu May 2 16:26:52 2024 From: bb at ti.com (Bryan Brattlof) Date: Thu, 2 May 2024 11:26:52 -0500 Subject: [Buildroot] [PATCH RESEND v2 02/11] boot/uboot: bump to version v2024.04 In-Reply-To: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> Message-ID: <20240430-optee-update-v2-2-5bdc2f940db1@ti.com> Update to the latest tagged release of U-Boot Signed-off-by: Bryan Brattlof --- boot/uboot/Config.in | 6 +++--- boot/uboot/uboot.hash | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/boot/uboot/Config.in b/boot/uboot/Config.in index 8d2228dc7dd45..00d3f3bfbbfdd 100644 --- a/boot/uboot/Config.in +++ b/boot/uboot/Config.in @@ -41,7 +41,7 @@ choice Select the specific U-Boot version you want to use config BR2_TARGET_UBOOT_LATEST_VERSION - bool "2024.01" + bool "2024.04" config BR2_TARGET_UBOOT_CUSTOM_VERSION bool "Custom version" @@ -85,7 +85,7 @@ endif config BR2_TARGET_UBOOT_VERSION string - default "2024.01" if BR2_TARGET_UBOOT_LATEST_VERSION + default "2024.04" if BR2_TARGET_UBOOT_LATEST_VERSION default BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE \ if BR2_TARGET_UBOOT_CUSTOM_VERSION default "custom" if BR2_TARGET_UBOOT_CUSTOM_TARBALL @@ -291,7 +291,7 @@ config BR2_TARGET_UBOOT_USE_BINMAN help Use binman tool for generation and signing of boot images. - https://docs.u-boot.org/en/v2024.01/develop/package/binman.html + https://docs.u-boot.org/en/v2024.04/develop/package/binman.html menu "U-Boot binary format" diff --git a/boot/uboot/uboot.hash b/boot/uboot/uboot.hash index fbe5d215409d2..a8021fb696b1a 100644 --- a/boot/uboot/uboot.hash +++ b/boot/uboot/uboot.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 b99611f1ed237bf3541bdc8434b68c96a6e05967061f992443cb30aabebef5b3 u-boot-2024.01.tar.bz2 +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 Licenses/gpl-2.0.txt -- 2.43.2 From bb at ti.com Thu May 2 16:26:55 2024 From: bb at ti.com (Bryan Brattlof) Date: Thu, 2 May 2024 11:26:55 -0500 Subject: [Buildroot] [PATCH RESEND v2 05/11] configs/ti_am62x_sk_defconfig: update TFA to v2.10 In-Reply-To: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> Message-ID: <20240430-optee-update-v2-5-5bdc2f940db1@ti.com> Update the TFA firmware to the latest LTS tag for v2.10 release of arm-trusted-firmware Signed-off-by: Bryan Brattlof --- .../ti/am62x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash | 2 +- configs/ti_am62x_sk_defconfig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/board/ti/am62x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/ti/am62x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash index 74fe35c9bc733..8f60864fbf67f 100644 --- a/board/ti/am62x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash +++ b/board/ti/am62x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -1,2 +1,2 @@ # Locally computed: -sha256 327c65b1bc231608a7a808b068b00c1a22310e9fc86158813cd10a9711d5725e arm-trusted-firmware-v2.7.tar.gz +sha256 ba215404fe9db26e5f2cef3fdce17b7c8ed344a2a1d592dd01a5f1c5e72cfdbd arm-trusted-firmware-lts-v2.10.4.tar.gz diff --git a/configs/ti_am62x_sk_defconfig b/configs/ti_am62x_sk_defconfig index 405016818438a..e169b6834d89c 100644 --- a/configs/ti_am62x_sk_defconfig +++ b/configs/ti_am62x_sk_defconfig @@ -19,7 +19,7 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_ROOTFS_EXT2_SIZE="256M" BR2_TARGET_ARM_TRUSTED_FIRMWARE=y BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y -BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.7" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="lts-v2.10.4" BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="k3" BR2_TARGET_ARM_TRUSTED_FIRMWARE_TARGET_BOARD="lite" BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE=y -- 2.43.2 From bb at ti.com Thu May 2 16:26:53 2024 From: bb at ti.com (Bryan Brattlof) Date: Thu, 2 May 2024 11:26:53 -0500 Subject: [Buildroot] [PATCH RESEND v2 03/11] boot/ti-k3-r5-loader: bump to version v2024.04 In-Reply-To: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> Message-ID: <20240430-optee-update-v2-3-5bdc2f940db1@ti.com> The ti-k3-r5-loader is just U-Boot with a different defconfig compiled for the 32b MCU cores needed for TI's K3 generation of SoCs. Update to match the U-Boot version Signed-off-by: Bryan Brattlof --- boot/ti-k3-r5-loader/Config.in | 4 ++-- boot/ti-k3-r5-loader/ti-k3-r5-loader.hash | 2 +- boot/ti-k3-r5-loader/ti-k3-r5-loader.mk | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/boot/ti-k3-r5-loader/Config.in b/boot/ti-k3-r5-loader/Config.in index df885cc2af601..2f2434e9db2a8 100644 --- a/boot/ti-k3-r5-loader/Config.in +++ b/boot/ti-k3-r5-loader/Config.in @@ -18,7 +18,7 @@ choice here as it is used to build the main U-Boot package. config BR2_TARGET_TI_K3_R5_LOADER_LATEST_VERSION - bool "2024.01" + bool "2024.04" config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION bool "Custom version" @@ -62,7 +62,7 @@ endif config BR2_TARGET_TI_K3_R5_LOADER_VERSION string - default "2024.01" if BR2_TARGET_TI_K3_R5_LOADER_LATEST_VERSION + default "2024.04" if BR2_TARGET_TI_K3_R5_LOADER_LATEST_VERSION default BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE \ if BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION default "custom" if BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_TARBALL diff --git a/boot/ti-k3-r5-loader/ti-k3-r5-loader.hash b/boot/ti-k3-r5-loader/ti-k3-r5-loader.hash index fbe5d215409d2..a8021fb696b1a 100644 --- a/boot/ti-k3-r5-loader/ti-k3-r5-loader.hash +++ b/boot/ti-k3-r5-loader/ti-k3-r5-loader.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 b99611f1ed237bf3541bdc8434b68c96a6e05967061f992443cb30aabebef5b3 u-boot-2024.01.tar.bz2 +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 Licenses/gpl-2.0.txt diff --git a/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk b/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk index 98a6d473f17f3..2ce053461038f 100644 --- a/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk +++ b/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk @@ -5,6 +5,7 @@ ################################################################################ TI_K3_R5_LOADER_VERSION = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_VERSION)) +TI_K3_R5_LOADER_DL_DIR = $(UBOOT_DL_DIR) ifeq ($(BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_TARBALL),y) # Handle custom U-Boot tarballs as specified by the configuration -- 2.43.2 From peter at korsgaard.com Thu May 2 16:28:14 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 18:28:14 +0200 Subject: [Buildroot] [PATCH 1/1] package/tcf-agent: fix x86 build In-Reply-To: <20240301213722.91942-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Fri, 1 Mar 2024 22:37:22 +0100") References: <20240301213722.91942-1-fontaine.fabrice@gmail.com> Message-ID: <87plu45gbl.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > Fix the following x86 build failure raised since bump to version 1.8.0 > in commit 81802e263a12e173e0e1028449d1e1e11b2e5974 and > https://gitlab.eclipse.org/eclipse/tcf/tcf.agent/-/commit/8df5540c53b862d516ac25f908c2fff4a547b4a6: > /home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c: > In function 'unpack_elf_symbol_info': > /home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c:2079:27: > error: 'STT_ARM_16BIT' undeclared (first use in this function) > 2079 | if (info->type == STT_ARM_16BIT) { > | ^~~~~~~~~~~~~ > /home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c:2079:27: > note: each undeclared identifier is reported only once for each > function it appears in > /home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c: > In function 'create_symbol_addr_search_index': > /home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c:2228:78: > error: 'STT_ARM_16BIT' undeclared (first use in this function) > 2228 | if (type == STT_FUNC || type == STT_ARM_TFUNC || type == STT_ARM_16BIT) { > | ^~~~~~~~~~~~~ > Fixes: 81802e263a12e173e0e1028449d1e1e11b2e5974 > - http://autobuild.buildroot.org/results/8388acf59689ed7e621bdf158483e3df1cf9bef7 > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 16:29:59 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 18:29:59 +0200 Subject: [Buildroot] [PATCH 1/1] support/scripts/pkg-stats: fix bug when sorting by hashfile In-Reply-To: <20240225220544.754965-1-sen@hastings.org> (Sen Hastings's message of "Sun, 25 Feb 2024 14:05:44 -0800") References: <20240225220544.754965-1-sen@hastings.org> Message-ID: <87ikzw5g8o.fsf@dell.be.48ers.dk> >>>>> "Sen" == Sen Hastings writes: > Because the div_class variable was not reassigned a value, > cells in the latest_version column were still being assigned > hash_file classes and so were being picked up as elements in > the hash_file sort. This lead to execessive grid gap elements > stacking up and creating huge blank spaces at the top of the page. > This is very noticable on pages with a large number of packages, > like the ones the autobuilder creates. > original behaviour(click the "Hash file" column label twice): > http://autobuild.buildroot.org/stats/master.html > demo of fixed behaviour: > https://sen-h.codeberg.page/pkg-stats-demos/@pages/fix-bug-when-sorting-by-hash-file.html > Signed-off-by: Sen Hastings Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 16:30:58 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 18:30:58 +0200 Subject: [Buildroot] [PATCH v2 1/1] support/scripts/pkg-stats: fix/improve git hash sorting In-Reply-To: <20240305093334.2233237-1-sen@hastings.org> (Sen Hastings's message of "Tue, 5 Mar 2024 01:33:34 -0800") References: <20240305093334.2233237-1-sen@hastings.org> Message-ID: <87bk5o5g71.fsf@dell.be.48ers.dk> >>>>> "Sen" == Sen Hastings writes: > sortGrid()'s handling of git hashes and other large hex numbers > has been inconsistent, they can be detected as strings or numbers > depending on what type of character they start with. > This patch fixes the behaviour by using a regex to capture everything > that looks like a big hex number and treat it as a string. > This means when you sort by current version ascending all the version > strings with big hex numbers should show up first, sorted 0-9,a-f. > First we check for a string length >= 39, and then apply a regex > to return an array with every char from that string that matched > the regex. If the length of this array is still >= 39 we can assume > we are looking at something containing a git hash. > The reason why the length is defined as ">= 39" and not "40" or > "39 or 40" is twofold: > Firstly, 39 was chosen as a minimum to match stuff with 39 char git > hashes, like the rockchip-mali package. > Secondly, there is no max because we actually want to catch not > just explicitly git hashes, but any verson string with big gnarly > hex numbers in it. > Stuff like: "1.4.2-168-ged3039cdbeeb28fc0011c3585d8f7dfb91038292" > Why? Well, the idea is less about git hashes and sorting > and more about grouping similarly formatted version strings. > It would be impossble (or at least annoyingly complicated) and of > dubious utility to get a real sequential sort out of the > current version column, so the attempt here is to at the very > least collect all the similarly formatted things together. > This isn't perfect, but it's a (arguably) more useful sorted > output than before. > A demo is available here: > https://sen-h.codeberg.page/pkg-stats-demos/@pages/fix-improve-git-hash-sorting.html > Signed-off-by: Sen Hastings > --- > Changes v1 -> v2: > - more detailed commit log (requested by Yann E. MORIN) Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 16:32:12 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 18:32:12 +0200 Subject: [Buildroot] [PATCH 1/1] package/dmenu-wayland: fix uclibc build In-Reply-To: <20240305111134.298279-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Tue, 5 Mar 2024 12:11:34 +0100") References: <20240305111134.298279-1-fontaine.fabrice@gmail.com> Message-ID: <877cgc5g4z.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > Set -std=gnu99 to fix the following uclibc build failure raised since > the addition of the package in commit > 2f6b1b8e6893003efcc72185cd468dcb0b088b2d: > ../draw.c:37:23: error: 'CLOCK_REALTIME' undeclared (first use in this function) > 37 | clock_gettime(CLOCK_REALTIME, &ts); > | ^~~~~~~~~~~~~~ > Fixes: 2f6b1b8e6893003efcc72185cd468dcb0b088b2d > - http://autobuild.buildroot.org/results/4b9db67fb444ec35d741e5d3e74263ac0c4d4a7d > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 16:33:32 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 18:33:32 +0200 Subject: [Buildroot] [PATCH 1/1] package/dmraid: fix musl build In-Reply-To: (Arnout Vandecappelle via buildroot's message of "Sun, 7 Apr 2024 18:08:14 +0200") References: <20240306091930.32801-1-fontaine.fabrice@gmail.com> Message-ID: <8734r05g2r.fsf@dell.be.48ers.dk> >>>>> "Arnout" == Arnout Vandecappelle via buildroot writes: > On 06/03/2024 10:19, Fabrice Fontaine wrote: >> dmraid is a very old package from 2010 with an awkward configure script >> which doesn't honor CFLAGS: >> ac_cv_env_CFLAGS_set=set >> ac_cv_env_CFLAGS_value='-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -g0 ' >> [...] >> ## ----------------- ## >> ## Output variables. ## >> ## ----------------- ## >> AWK='gawk' >> CC='/home/autobuild/autobuild/instance-3/output-1/host/bin/sh4a-buildroot-linux-musl-gcc' >> CFLAGS='-O2' >> resulting in the following build failure with musl >= 1.2.4 and >> https://github.com/bminor/musl/commit/25e6fee27f4a293728dd15b659170e7b9c7db9bc >> because _LARGEFILE64_SOURCE is not set: >> /home/autobuild/autobuild/instance-3/output-1/host/lib/gcc/sh4a-buildroot-linux-musl/12.3.0/../../../../sh4a-buildroot-linux-musl/bin/ld: >> misc/file.o: in function `rw_file': >> file.c:(.text+0x150): undefined reference to `lseek64' >> To fix this issue, pass TARGET_CONFIGURE_OPTS through >> DMRAID_MAKE_OPTS >> Fixes: >> - http://autobuild.buildroot.org/results/5c7c82959ce92db908d3ca20e2c1137509c2f981 >> Signed-off-by: Fabrice Fontaine > Applied to master, thanks. Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 16:31:43 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 18:31:43 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/dmenu-wayland: fix uclibc build Message-ID: <20240502163355.544F586639@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=e5c204820dcfec70e15ae904f7c629eecc732127 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Set -std=gnu99 to fix the following uclibc build failure raised since the addition of the package in commit 2f6b1b8e6893003efcc72185cd468dcb0b088b2d: ../draw.c:37:23: error: 'CLOCK_REALTIME' undeclared (first use in this function) 37 | clock_gettime(CLOCK_REALTIME, &ts); | ^~~~~~~~~~~~~~ Fixes: 2f6b1b8e6893003efcc72185cd468dcb0b088b2d - http://autobuild.buildroot.org/results/4b9db67fb444ec35d741e5d3e74263ac0c4d4a7d Signed-off-by: Fabrice Fontaine Signed-off-by: Arnout Vandecappelle (cherry picked from commit 46bb598f1a67ed2bf7acef8b17ea09ee0f425d8e) Signed-off-by: Peter Korsgaard --- package/dmenu-wayland/dmenu-wayland.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/package/dmenu-wayland/dmenu-wayland.mk b/package/dmenu-wayland/dmenu-wayland.mk index 33a73c0153..fec984194c 100644 --- a/package/dmenu-wayland/dmenu-wayland.mk +++ b/package/dmenu-wayland/dmenu-wayland.mk @@ -8,6 +8,7 @@ DMENU_WAYLAND_VERSION = a380201dff5bfac2dace553d7eaedb6cea6855f9 DMENU_WAYLAND_SITE = $(call github,nyyManni,dmenu-wayland,$(DMENU_WAYLAND_VERSION)) DMENU_WAYLAND_LICENSE = MIT DMENU_WAYLAND_LICENSE_FILES = LICENSE +DMENU_WAYLAND_CFLAGS = $(TARGET_CFLAGS) -std=gnu99 # host-wayland is for wayland-scanner DMENU_WAYLAND_DEPENDENCIES = \ From peter at korsgaard.com Thu May 2 16:28:38 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 18:28:38 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] support/scripts/pkg-stats: fix bug when sorting by hashfile Message-ID: <20240502163355.3A7D786636@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=59c153dbcd0b47e35f65dc911ee2bfb1bca0b895 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Because the div_class variable was not reassigned a value, cells in the latest_version column were still being assigned hash_file classes and so were being picked up as elements in the hash_file sort. This lead to execessive grid gap elements stacking up and creating huge blank spaces at the top of the page. This is very noticable on pages with a large number of packages, like the ones the autobuilder creates. original behaviour(click the "Hash file" column label twice): http://autobuild.buildroot.org/stats/master.html demo of fixed behaviour: https://sen-h.codeberg.page/pkg-stats-demos/@pages/fix-bug-when-sorting-by-hash-file.html Signed-off-by: Sen Hastings Signed-off-by: Arnout Vandecappelle (cherry picked from commit 6e3d79f52ef0e1b2b6fe1e660820cabdca6179c2) Signed-off-by: Peter Korsgaard --- support/scripts/pkg-stats | 1 + 1 file changed, 1 insertion(+) diff --git a/support/scripts/pkg-stats b/support/scripts/pkg-stats index 53898a36f2..3295eb7a48 100755 --- a/support/scripts/pkg-stats +++ b/support/scripts/pkg-stats @@ -977,6 +977,7 @@ def dump_html_pkg(f, pkg): # Latest version data_field_id = f'latest_version__{pkg_css_class}' + div_class = ["centered"] div_class.append(f'_{pkg_css_class}') div_class.append("latest_version data") if pkg.latest_version['status'] == RM_API_STATUS_ERROR: From peter at korsgaard.com Thu May 2 16:27:55 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 18:27:55 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/tcf-agent: fix x86 build Message-ID: <20240502163355.2C71386635@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=81deca8719c0fd5cd707df040dee7c525106c5ed branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Fix the following x86 build failure raised since bump to version 1.8.0 in commit 81802e263a12e173e0e1028449d1e1e11b2e5974 and https://gitlab.eclipse.org/eclipse/tcf/tcf.agent/-/commit/8df5540c53b862d516ac25f908c2fff4a547b4a6: /home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c: In function 'unpack_elf_symbol_info': /home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c:2079:27: error: 'STT_ARM_16BIT' undeclared (first use in this function) 2079 | if (info->type == STT_ARM_16BIT) { | ^~~~~~~~~~~~~ /home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c:2079:27: note: each undeclared identifier is reported only once for each function it appears in /home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c: In function 'create_symbol_addr_search_index': /home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c:2228:78: error: 'STT_ARM_16BIT' undeclared (first use in this function) 2228 | if (type == STT_FUNC || type == STT_ARM_TFUNC || type == STT_ARM_16BIT) { | ^~~~~~~~~~~~~ Fixes: 81802e263a12e173e0e1028449d1e1e11b2e5974 - http://autobuild.buildroot.org/results/8388acf59689ed7e621bdf158483e3df1cf9bef7 Signed-off-by: Fabrice Fontaine Signed-off-by: Arnout Vandecappelle (cherry picked from commit dd595d3b06a355f58efcc547ff1f001dd55c99c6) Signed-off-by: Peter Korsgaard --- ...gent-tcf-services-tcf_elf.c-fix-x86-build.patch | 60 ++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/package/tcf-agent/0001-agent-tcf-services-tcf_elf.c-fix-x86-build.patch b/package/tcf-agent/0001-agent-tcf-services-tcf_elf.c-fix-x86-build.patch new file mode 100644 index 0000000000..5f08fa485e --- /dev/null +++ b/package/tcf-agent/0001-agent-tcf-services-tcf_elf.c-fix-x86-build.patch @@ -0,0 +1,60 @@ +From 0a847ca035113540ee44d17f364bf4701fe78355 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 1 Mar 2024 22:31:05 +0100 +Subject: [PATCH] agent/tcf/services/tcf_elf.c: fix x86 build + +Fix the following x86 build failure raised since version 1.8.0 and +https://gitlab.eclipse.org/eclipse/tcf/tcf.agent/-/commit/8df5540c53b862d516ac25f908c2fff4a547b4a6: + +/home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c: In function 'unpack_elf_symbol_info': +/home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c:2079:27: error: 'STT_ARM_16BIT' undeclared (first use in this function) + 2079 | if (info->type == STT_ARM_16BIT) { + | ^~~~~~~~~~~~~ +/home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c:2079:27: note: each undeclared identifier is reported only once for each function it appears in +/home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c: In function 'create_symbol_addr_search_index': +/home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c:2228:78: error: 'STT_ARM_16BIT' undeclared (first use in this function) + 2228 | if (type == STT_FUNC || type == STT_ARM_TFUNC || type == STT_ARM_16BIT) { + | ^~~~~~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/8388acf59689ed7e621bdf158483e3df1cf9bef7 + +Signed-off-by: Fabrice Fontaine +Upstream: https://gitlab.eclipse.org/eclipse/tcf/tcf.agent/-/merge_requests/1 +--- + agent/tcf/services/tcf_elf.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/agent/tcf/services/tcf_elf.c b/agent/tcf/services/tcf_elf.c +index 1b3900ec..b0b948e4 100644 +--- a/agent/tcf/services/tcf_elf.c ++++ b/agent/tcf/services/tcf_elf.c +@@ -2076,10 +2076,12 @@ void unpack_elf_symbol_info(ELF_Section * sym_sec, U4_T index, ELF_SymbolInfo * + } + + if (file->machine == EM_ARM) { ++#ifdef STT_ARM_16BIT + if (info->type == STT_ARM_16BIT) { + info->type = STT_OBJECT; + info->type16bit = 1; + } ++#endif + if (info->type == STT_ARM_TFUNC) { + info->type = STT_FUNC; + info->type16bit = 1; +@@ -2225,7 +2227,11 @@ static void create_symbol_addr_search_index(ELF_Section * sec) { + } + add = add && type != STT_GNU_IFUNC; + if (add && file->machine == EM_ARM) { +- if (type == STT_FUNC || type == STT_ARM_TFUNC || type == STT_ARM_16BIT) { ++ if (type == STT_FUNC || type == STT_ARM_TFUNC ++#ifdef STT_ARM_16BIT ++ || type == STT_ARM_16BIT ++#endif ++ ) { + addr = addr & ~(U8_T)1; + } + } +-- +2.43.0 + From peter at korsgaard.com Thu May 2 16:30:18 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 18:30:18 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] support/scripts/pkg-stats: fix/improve git hash sorting Message-ID: <20240502163355.44E2E86620@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=7a5eda5009b13bd434521436f9a3fa68d25e29b2 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x sortGrid()'s handling of git hashes and other large hex numbers has been inconsistent, they can be detected as strings or numbers depending on what type of character they start with. This patch fixes the behaviour by using a regex to capture everything that looks like a big hex number and treat it as a string. This means when you sort by current version ascending all the version strings with big hex numbers should show up first, sorted 0-9,a-f. First we check for a string length >= 39, and then apply a regex to return an array with every char from that string that matched the regex. If the length of this array is still >= 39 we can assume we are looking at something containing a git hash. The reason why the length is defined as ">= 39" and not "40" or "39 or 40" is twofold: Firstly, 39 was chosen as a minimum to match stuff with 39 char git hashes, like the rockchip-mali package. Secondly, there is no max because we actually want to catch not just explicitly git hashes, but any verson string with big gnarly hex numbers in it. Stuff like: "1.4.2-168-ged3039cdbeeb28fc0011c3585d8f7dfb91038292" Why? Well, the idea is less about git hashes and sorting and more about grouping similarly formatted version strings. It would be impossble (or at least annoyingly complicated) and of dubious utility to get a real sequential sort out of the current version column, so the attempt here is to at the very least collect all the similarly formatted things together. This isn't perfect, but it's a (arguably) more useful sorted output than before. A demo is available here: https://sen-h.codeberg.page/pkg-stats-demos/@pages/fix-improve-git-hash-sorting.html Signed-off-by: Sen Hastings Signed-off-by: Arnout Vandecappelle (cherry picked from commit ce7363524c172e65571e4b5d76ef65a36f7c3020) Signed-off-by: Peter Korsgaard --- support/scripts/pkg-stats | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/support/scripts/pkg-stats b/support/scripts/pkg-stats index 3295eb7a48..4dc1857a9e 100755 --- a/support/scripts/pkg-stats +++ b/support/scripts/pkg-stats @@ -741,6 +741,7 @@ addedCSSRules.forEach(rule => styleSheet.insertRule(rule)); function sortGrid(sortLabel){ let i = 0; let pkgSortArray = [], sortedPkgArray = [], pkgStringSortArray = [], pkgNumSortArray = []; + const git_hash_regex = /[a-f,0-9]/gi; const columnValues = Array.from(document.getElementsByClassName(sortLabel)); const columnName = document.getElementById(sortLabel); let lastStyle = document.getElementById("sort-css"); @@ -765,7 +766,9 @@ function sortGrid(sortLabel){ pkgSortArray.push(sortArr); }); pkgSortArray.forEach((listing) => { - if ( isNaN(parseInt(listing[1], 10)) ){ + if ( listing[1].length >= 39 && listing[1].match(git_hash_regex).length >= 39){ + pkgStringSortArray.push(listing); + } else if ( isNaN(parseInt(listing[1], 10)) ){ pkgStringSortArray.push(listing); } else { listing[1] = parseFloat(listing[1]); From peter at korsgaard.com Thu May 2 16:33:18 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 18:33:18 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/dmraid: fix musl build Message-ID: <20240502163355.6243186637@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=3710b671cad96d81c85d91f2384b6c6f6280a507 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x dmraid is a very old package from 2010 with an awkward configure script which doesn't honor CFLAGS: ac_cv_env_CFLAGS_set=set ac_cv_env_CFLAGS_value='-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -g0 ' [...] ## ----------------- ## ## Output variables. ## ## ----------------- ## AWK='gawk' CC='/home/autobuild/autobuild/instance-3/output-1/host/bin/sh4a-buildroot-linux-musl-gcc' CFLAGS='-O2' resulting in the following build failure with musl >= 1.2.4 and https://github.com/bminor/musl/commit/25e6fee27f4a293728dd15b659170e7b9c7db9bc because _LARGEFILE64_SOURCE is not set: /home/autobuild/autobuild/instance-3/output-1/host/lib/gcc/sh4a-buildroot-linux-musl/12.3.0/../../../../sh4a-buildroot-linux-musl/bin/ld: misc/file.o: in function `rw_file': file.c:(.text+0x150): undefined reference to `lseek64' To fix this issue, pass TARGET_CONFIGURE_OPTS through DMRAID_MAKE_OPTS Fixes: - http://autobuild.buildroot.org/results/5c7c82959ce92db908d3ca20e2c1137509c2f981 Signed-off-by: Fabrice Fontaine Signed-off-by: Arnout Vandecappelle (cherry picked from commit de6415ad9c35b2013af1f1821bcac12ba3959674) Signed-off-by: Peter Korsgaard --- package/dmraid/dmraid.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/package/dmraid/dmraid.mk b/package/dmraid/dmraid.mk index 0382cd4d99..9a78c2ae07 100644 --- a/package/dmraid/dmraid.mk +++ b/package/dmraid/dmraid.mk @@ -13,6 +13,7 @@ DMRAID_MAKE = $(MAKE1) DMRAID_INSTALL_STAGING = YES DMRAID_LICENSE = GPL-2.0 DMRAID_LICENSE_FILES = $(DMRAID_SUBDIR)/LICENSE_GPL $(DMRAID_SUBDIR)/LICENSE +DMRAID_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS) DMRAID_DEPENDENCIES = lvm2 From peter at korsgaard.com Thu May 2 16:57:48 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 18:57:48 +0200 Subject: [Buildroot] [PATCH 1/1] package/imx-gpu-viv: fix masking fb option In-Reply-To: <834828e5-042f-4588-9ed6-10fa5a5e2502@mind.be> (Arnout Vandecappelle via buildroot's message of "Sun, 7 Apr 2024 18:11:13 +0200") References: <20240306111212.1331451-1-anaumann@ultratronik.de> <834828e5-042f-4588-9ed6-10fa5a5e2502@mind.be> Message-ID: <87y18s40dv.fsf@dell.be.48ers.dk> >>>>> "Arnout" == Arnout Vandecappelle via buildroot writes: > Hi Andreas, > On 06/03/2024 12:12, Andreas Naumann wrote: >> Only the 32bit ARM blob provides the framebuffer backend. This is >> apparently independent of which imx8 derivate is used, so changed >> the condition for the config option accordingly. > You should have included some references here so other people can > double-check this information. >> Signed-off-by: Andreas Naumann >> --- >> package/freescale-imx/imx-gpu-viv/Config.in | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> diff --git a/package/freescale-imx/imx-gpu-viv/Config.in >> b/package/freescale-imx/imx-gpu-viv/Config.in >> index 3e095b730cf..b8dff8f9ab6 100644 >> --- a/package/freescale-imx/imx-gpu-viv/Config.in >> +++ b/package/freescale-imx/imx-gpu-viv/Config.in >> @@ -45,8 +45,8 @@ choice >> config BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_FB >> bool "Framebuffer" >> - # The i.MX8 blob doesn't support FB output >> - depends on !BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M >> + # The i.MX8 aarch64 blob doesn't support FB output > Or you can still add that later in a comment here. > Applied to master, thanks. Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 16:58:39 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 18:58:39 +0200 Subject: [Buildroot] [PATCH 1/1] package/fmc: enable also for aarch64 QorIQ processors In-Reply-To: (Arnout Vandecappelle via buildroot's message of "Sun, 7 Apr 2024 18:12:57 +0200") References: <20240306113724.121900-1-dgouarin@gmail.com> Message-ID: <87ttjg40cg.fsf@dell.be.48ers.dk> >>>>> "Arnout" == Arnout Vandecappelle via buildroot writes: > On 06/03/2024 12:37, David Gouarin wrote: >> QorIQ processors family also includes LS Series wich are based on aarch64 >> Signed-off-by: David Gouarin > Applied to master, thanks. Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 16:59:40 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 18:59:40 +0200 Subject: [Buildroot] [PATCH 1/1] package/perl-net-ssleay: bump to version 1.94 In-Reply-To: <20240407124550.1282517-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sun, 7 Apr 2024 14:45:50 +0200") References: <20240407124550.1282517-1-fontaine.fabrice@gmail.com> Message-ID: <87plu440ar.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > This bump will fix the following build failure with libressl raised > since commit 9d8f9c73a2fd087dd2e8d8853a80da605fa64e4b: > SSLeay.c: In function 'XS_Net__SSLeay_X509_policy_tree_free': > SSLeay.c:17730:9: error: unknown type name 'X509_POLICY_TREE' > 17730 | X509_POLICY_TREE * tree = INT2PTR(X509_POLICY_TREE *,SvIV(ST(0))) > | ^~~~~~~~~~~~~~~~ > https://metacpan.org/dist/Net-SSLeay/changes > Fixes: 9d8f9c73a2fd087dd2e8d8853a80da605fa64e4b > - http://autobuild.buildroot.org/results/974b7cdd275249c888fc6205f6ca31a3cf28b18f > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 16:58:10 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 18:58:10 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/fmc: enable also for aarch64 QorIQ processors Message-ID: <20240502165955.18EFF86647@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=6e8ae6b661355bb56368fa8dc7fd9289e6d4d226 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x QorIQ processors family also includes LS Series wich are based on aarch64 Signed-off-by: David Gouarin Signed-off-by: Arnout Vandecappelle (cherry picked from commit 2656ca8912e151e874ceb366e6eef0bfe4228ac0) Signed-off-by: Peter Korsgaard --- package/fmc/Config.in | 6 +++--- package/fmlib/Config.in | 10 ++++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/package/fmc/Config.in b/package/fmc/Config.in index c89a87c99e..1c6ae5e80a 100644 --- a/package/fmc/Config.in +++ b/package/fmc/Config.in @@ -1,14 +1,14 @@ comment "fmc needs a toolchain w/ C++" - depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 + depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 || BR2_aarch64 depends on !BR2_INSTALL_LIBSTDCPP comment "fmc needs a Linux kernel to be built" - depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 + depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 || BR2_aarch64 depends on !BR2_LINUX_KERNEL config BR2_PACKAGE_FMC bool "fmc" - depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 + depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 || BR2_aarch64 depends on BR2_INSTALL_LIBSTDCPP depends on BR2_LINUX_KERNEL # fmlib select BR2_PACKAGE_TCLAP diff --git a/package/fmlib/Config.in b/package/fmlib/Config.in index 97d55d1250..459d5bf102 100644 --- a/package/fmlib/Config.in +++ b/package/fmlib/Config.in @@ -1,10 +1,10 @@ comment "fmlib needs a Linux kernel to be built" - depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 + depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 || BR2_aarch64 depends on !BR2_LINUX_KERNEL config BR2_PACKAGE_FMLIB bool "fmlib" - depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 + depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 || BR2_aarch64 depends on BR2_LINUX_KERNEL help The Frame Manager library provides Freescale PowerPC platforms @@ -33,6 +33,10 @@ config BR2_FMLIB_QORIQ_FAMILY_T2080 bool "t208x" depends on BR2_powerpc_e6500 +config BR2_FMLIB_QORIQ_FAMILY_ARM + bool "arm" + depends on BR2_aarch64 + endchoice config BR2_PACKAGE_FMLIB_ARCHTYPE @@ -40,11 +44,13 @@ config BR2_PACKAGE_FMLIB_ARCHTYPE default "ppce500mc" if BR2_powerpc_e500mc default "ppc64e6500" if BR2_powerpc_e6500 && BR2_powerpc64 default "ppc32e6500" if BR2_powerpc_e6500 && BR2_powerpc + default "arm" if BR2_aarch64 config BR2_PACKAGE_FMLIB_PLATFORM string default "P4080" if BR2_FMLIB_QORIQ_FAMILY_P4080 default "T4240" if BR2_FMLIB_QORIQ_FAMILY_T4240 default "FMAN_V3H" if BR2_FMLIB_QORIQ_FAMILY_T2080 + default "arm" if BR2_aarch64 endif From peter at korsgaard.com Thu May 2 16:59:31 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 18:59:31 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/perl-net-ssleay: bump to version 1.94 Message-ID: <20240502165955.274B086634@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=69ab6d066b14036eb8d35db3aa57686f22898a52 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x This bump will fix the following build failure with libressl raised since commit 9d8f9c73a2fd087dd2e8d8853a80da605fa64e4b: SSLeay.c: In function 'XS_Net__SSLeay_X509_policy_tree_free': SSLeay.c:17730:9: error: unknown type name 'X509_POLICY_TREE' 17730 | X509_POLICY_TREE * tree = INT2PTR(X509_POLICY_TREE *,SvIV(ST(0))) | ^~~~~~~~~~~~~~~~ https://metacpan.org/dist/Net-SSLeay/changes Fixes: 9d8f9c73a2fd087dd2e8d8853a80da605fa64e4b - http://autobuild.buildroot.org/results/974b7cdd275249c888fc6205f6ca31a3cf28b18f Signed-off-by: Fabrice Fontaine Signed-off-by: Arnout Vandecappelle (cherry picked from commit 241b18b51e3219a06e19010ec874b3bb681ca110) Signed-off-by: Peter Korsgaard --- package/perl-net-ssleay/perl-net-ssleay.hash | 4 ++-- package/perl-net-ssleay/perl-net-ssleay.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/perl-net-ssleay/perl-net-ssleay.hash b/package/perl-net-ssleay/perl-net-ssleay.hash index 9caff68edd..219edd4e0f 100644 --- a/package/perl-net-ssleay/perl-net-ssleay.hash +++ b/package/perl-net-ssleay/perl-net-ssleay.hash @@ -1,6 +1,6 @@ # retrieved by scancpan from http://cpan.metacpan.org/ -md5 c73821e9790b3bdb3471d9b8faf48bbb Net-SSLeay-1.93_01.tar.gz -sha256 876d022fbc719631b11d6bb4b6e78db3c19bbca578093c376c8f9900a4432aa3 Net-SSLeay-1.93_01.tar.gz +md5 1b22c764e5a094c6261e37a4b1f148ce Net-SSLeay-1.94.tar.gz +sha256 9d7be8a56d1bedda05c425306cc504ba134307e0c09bda4a788c98744ebcd95d Net-SSLeay-1.94.tar.gz # computed by scancpan sha256 685e534b60d4e2b4fbb1a259a83b5a86e877a919bbb9efc95994276f706a3a71 LICENSE diff --git a/package/perl-net-ssleay/perl-net-ssleay.mk b/package/perl-net-ssleay/perl-net-ssleay.mk index 8b7b2b973b..7f58093082 100644 --- a/package/perl-net-ssleay/perl-net-ssleay.mk +++ b/package/perl-net-ssleay/perl-net-ssleay.mk @@ -4,7 +4,7 @@ # ################################################################################ -PERL_NET_SSLEAY_VERSION = 1.93_01 +PERL_NET_SSLEAY_VERSION = 1.94 PERL_NET_SSLEAY_SOURCE = Net-SSLeay-$(PERL_NET_SSLEAY_VERSION).tar.gz PERL_NET_SSLEAY_SITE = $(BR2_CPAN_MIRROR)/authors/id/C/CH/CHRISN PERL_NET_SSLEAY_DEPENDENCIES = openssl From peter at korsgaard.com Thu May 2 16:56:55 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 18:56:55 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/imx-gpu-viv: fix masking fb option Message-ID: <20240502165955.0DCC186640@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=bf3225e55137b5c565d37981b6be0348a52a2cd4 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Only the 32bit ARM blob provides the framebuffer backend. This is apparently independent of which imx8 derivate is used, so changed the condition for the config option accordingly. Signed-off-by: Andreas Naumann Signed-off-by: Arnout Vandecappelle (cherry picked from commit 47a02a5afcdf5d6a72d203c31dabd5727547057c) Signed-off-by: Peter Korsgaard --- package/freescale-imx/imx-gpu-viv/Config.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/freescale-imx/imx-gpu-viv/Config.in b/package/freescale-imx/imx-gpu-viv/Config.in index 3e095b730c..b8dff8f9ab 100644 --- a/package/freescale-imx/imx-gpu-viv/Config.in +++ b/package/freescale-imx/imx-gpu-viv/Config.in @@ -45,8 +45,8 @@ choice config BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_FB bool "Framebuffer" - # The i.MX8 blob doesn't support FB output - depends on !BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M + # The i.MX8 aarch64 blob doesn't support FB output + depends on BR2_arm config BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL bool "Wayland" From arbab at linux.ibm.com Thu May 2 19:05:15 2024 From: arbab at linux.ibm.com (Reza Arbab) Date: Thu, 2 May 2024 14:05:15 -0500 Subject: [Buildroot] [PATCH] package/petitboot: add libxcrypt optional dependency In-Reply-To: References: <20240416144818.681220-1-arbab@linux.ibm.com> Message-ID: On Wed, May 01, 2024 at 11:44:40PM +0200, Yann E. MORIN wrote: >Applied to master, thanks. Thanks Yann! Do you have any comments on the three remaining patches in this series? https://patchwork.ozlabs.org/project/buildroot/list/?series=394036 Patch 3/5 is a required fix for petitboot to work properly, and the others would be nice to have. -- Reza Arbab From fran.millocs at live.com.ar Thu May 2 19:45:19 2024 From: fran.millocs at live.com.ar (franco ariel) Date: Thu, 2 May 2024 19:45:19 +0000 Subject: [Buildroot] Error building flutter-engine Message-ID: Hi everyone! I'm trying to compile flutter-engine from the latest version of buildroot but, I'm getting this error: >>> flutter-engine 3.19.5 Building cd /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5 && PATH=/home/frank/buildroot-base/buildroot/output/host/share/depot_tools:"/home/frank/buildroot-base/buildroot/output/host/bin:/home/frank/buildroot-base/buildroot/output/host/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin" PUB_CACHE=/home/frank/buildroot-base/buildroot/dl/br-flutter-pub-cache HOME=/home/frank/buildroot-base/buildroot/output/host/share/flutter/sdk /home/frank/buildroot-base/buildroot/output/host/bin/ninja -j 33 -C /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/out/linux_release_arm64 ninja: Entering directory `/home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/out/linux_release_arm64' ninja: warning: premature end of file; recovering ninja: warning: -jN forced on command line; ignoring GNU make jobserver. [2485/8965] CXX obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o FAILED: obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/buildtools/linux-x64/clang/bin/clang++ -MD -MF obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o.d --target=aarch64-unknown-linux-gnu --sysroot /home/frank/buildroot-base/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot -DU_I18N_IMPLEMENTATION -DUSE_OPENSSL=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_LIBCPP_DISABLE_AVAILABILITY=1 -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DHAVE_DLOPEN=0 -DUCONFIG_ONLY_HTML_CONVERSION=1 -DUCONFIG_USE_ML_PHRASE_BREAKING=1 -DUCONFIG_USE_WINDOWS_LCID_MAPPING_API=0 -DU_CHARSET_IS_UTF8=1 -DU_USING_ICU_NAMESPACE=0 -DU_ENABLE_DYLOAD=0 -DUSE_CHROMIUM_ICU=1 -DU_ENABLE_TRACING=1 -DU_ENABLE_RESOURCE_TRACING=0 -DU_STATIC_IMPLEMENTATION -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE -I../.. -Igen -I../../third_party/libcxx/include -I../../third_party/libcxxabi/include -I../../flutter/build/secondary/third_party/libcxx/config -I../../third_party/icu/source/common -I../../third_party/icu/source/i18n -fno-strict-aliasing -fstack-protector --param=ssp-buffer-size=4 -fPIC -pipe -pthread --target=aarch64-linux-gnu -DBORINGSSL_CLANG_SUPPORTS_DOT_ARCH -fcolor-diagnostics -fvisibility=hidden --sysroot=/home/frank/buildroot-base/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot -Wstring-conversion -Wnewline-eof -O2 -fno-ident -fdata-sections -ffunction-sections -g0 -Wno-deprecated-non-prototype -Wno-newline-eof -Wno-typedef-redefinition -Wendif-labels -Werror -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-but-set-parameter -Wno-unused-but-set-variable -Wno-implicit-int-float-conversion -Wno-deprecated-copy -Wno-psabi -Wno-deprecated-literal-operator -Wno-unqualified-std-cast-call -Wno-non-c-typedef-for-linkage -Wno-range-loop-construct -Wno-unused-function -Wno-parentheses -Wno-unused-function -Wno-unused-variable -Wno-ambiguous-reversed-operator -Wno-deprecated-declarations -fvisibility=hidden -fvisibility-inlines-hidden -std=c++17 -nostdinc++ -nostdinc++ -fvisibility=hidden -fno-exceptions -Wno-newline-eof -c ../../third_party/icu/source/i18n/nfsubs.cpp -o obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o clang++: error: clang frontend command failed with exit code 139 (use -v to see invocation) Fuchsia clang version 18.0.0 (https://llvm.googlesource.com/llvm-project 725656bdd885483c39f482a01ea25d67acf39c46) Target: aarch64-unknown-linux-gnu Thread model: posix InstalledDir: /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/buildtools/linux-x64/clang/bin clang++: note: diagnostic msg: ******************** I'm stuck on this since I format my computer, I download everything what I need, and every time that it comes to flutter-engine, I get this error that I never seen. Thank you in advance, Franco. -------------- next part -------------- An HTML attachment was scrubbed... URL: From peter at korsgaard.com Thu May 2 20:25:18 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 22:25:18 +0200 Subject: [Buildroot] [PATCH 1/1] package/inih: bump to version 58 In-Reply-To: <20240407131649.1416942-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sun, 7 Apr 2024 15:16:49 +0200") References: <20240407131649.1416942-1-fontaine.fabrice@gmail.com> Message-ID: <87le4s3qs1.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > This bump will fix the following build failure with gcc 5 raised since > bump to version 57 in commit 65c8a9b6626de83365865dea6fff1749466a36aa > thanks to > https://github.com/benhoyt/inih/commit/4e618f77d4bae216865c5abd972d99b1ba5031e2: > In file included from /home/buildroot/autobuild/run/instance-1/output-1/host/opt/ext-toolchain/mips-linux-gnu/include/c++/5.3.0/cstdint:35:0, > from ../cpp/INIReader.h:17, > from ../cpp/INIReader.cpp:16: > /home/buildroot/autobuild/run/instance-1/output-1/host/opt/ext-toolchain/mips-linux-gnu/include/c++/5.3.0/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options. > #error This file requires compiler and library support for the \ > ^ > https://github.com/benhoyt/inih/releases/tag/r58 > Fixes: 65c8a9b6626de83365865dea6fff1749466a36aa > - http://autobuild.buildroot.org/results/7a5ba516cde536e103669a0422d336dd8a3b1dbc > Signed-off-by: Fabrice Fontaine > --- > package/inih/inih.hash | 2 +- > package/inih/inih.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > diff --git a/package/inih/inih.hash b/package/inih/inih.hash > index 476b544ce6..f20d7ac0b6 100644 > --- a/package/inih/inih.hash > +++ b/package/inih/inih.hash > @@ -1,3 +1,3 @@ > # Locally computed > -sha256 f03f98ca35c3adb56b2358573c8d3eda319ccd5287243d691e724b7eafa970b3 inih-57.tar.gz > +sha256 e79216260d5dffe809bda840be48ab0eec7737b2bb9f02d2275c1b46344ea7b7 inih-58.tar.gz > sha256 9ae3b39e83e9158e44b67733baa3bb2d84e80efdcfb14a5820210a42c7abdf7f LICENSE.txt > diff --git a/package/inih/inih.mk b/package/inih/inih.mk > index 93032f1ed5..80cde0942b 100644 > --- a/package/inih/inih.mk > +++ b/package/inih/inih.mk > @@ -4,7 +4,7 @@ > # > ################################################################################ > -INIH_VERSION = 57 > +INIH_VERSION = 58 > INIH_SITE = $(call github,benhoyt,inih,r$(INIH_VERSION)) > INIH_INSTALL_STAGING = YES > INIH_LICENSE = BSD-3-Clause > -- > 2.43.0 > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 20:25:26 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 22:25:26 +0200 Subject: [Buildroot] [PATCH 1/1] package/inih: bump to version 58 In-Reply-To: <20240407131649.1416942-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sun, 7 Apr 2024 15:16:49 +0200") References: <20240407131649.1416942-1-fontaine.fabrice@gmail.com> Message-ID: <87h6fg3qrt.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > This bump will fix the following build failure with gcc 5 raised since > bump to version 57 in commit 65c8a9b6626de83365865dea6fff1749466a36aa > thanks to > https://github.com/benhoyt/inih/commit/4e618f77d4bae216865c5abd972d99b1ba5031e2: > In file included from /home/buildroot/autobuild/run/instance-1/output-1/host/opt/ext-toolchain/mips-linux-gnu/include/c++/5.3.0/cstdint:35:0, > from ../cpp/INIReader.h:17, > from ../cpp/INIReader.cpp:16: > /home/buildroot/autobuild/run/instance-1/output-1/host/opt/ext-toolchain/mips-linux-gnu/include/c++/5.3.0/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options. > #error This file requires compiler and library support for the \ > ^ > https://github.com/benhoyt/inih/releases/tag/r58 > Fixes: 65c8a9b6626de83365865dea6fff1749466a36aa > - http://autobuild.buildroot.org/results/7a5ba516cde536e103669a0422d336dd8a3b1dbc > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 20:26:33 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 22:26:33 +0200 Subject: [Buildroot] [PATCH 1/1] package/clamav: fix CLAMAV_LIBS In-Reply-To: <20240407161339.2439456-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sun, 7 Apr 2024 18:13:39 +0200") References: <20240407161339.2439456-1-fontaine.fabrice@gmail.com> Message-ID: <87cyq43qpy.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > CLAMAV_LIBS is ignored since bump to version 1.0.1 and switch to > cmake build system in commit 203725a46bc6b61ed7e4fdb3d76f62327d3e47fa > resulting in the following build failure: > /home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-musleabihf/12.3.0/../../../../arm-buildroot-linux-musleabihf/bin/ld: > CMakeFiles/clamonacc.dir/inotif/hash.c.o: in function > `onas_ht_add_hierarchy': > hash.c:(.text+0xa84): undefined reference to `fts_open' > Fixes: 203725a46bc6b61ed7e4fdb3d76f62327d3e47fa > - http://autobuild.buildroot.org/results/fe71ab29d02caeed609f1a181fccbd46b6feff65 > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 20:26:13 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 22:26:13 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/clamav: fix CLAMAV_LIBS Message-ID: <20240502202652.19BB386389@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=a1bb09101e283c53eb0314d6881c7483628df4d8 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x The LIBS environment variable is ignored since bump to version 1.0.1 and switch to cmake build system in commit 203725a46bc6b61ed7e4fdb3d76f62327d3e47fa resulting in the following build failure: /home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-musleabihf/12.3.0/../../../../arm-buildroot-linux-musleabihf/bin/ld: CMakeFiles/clamonacc.dir/inotif/hash.c.o: in function `onas_ht_add_hierarchy': hash.c:(.text+0xa84): undefined reference to `fts_open' Fixes: 203725a46bc6b61ed7e4fdb3d76f62327d3e47fa - http://autobuild.buildroot.org/results/fe71ab29d02caeed609f1a181fccbd46b6feff65 Signed-off-by: Fabrice Fontaine Signed-off-by: Arnout Vandecappelle (cherry picked from commit b526b2aa1546c42384ba1af21afea1a0f08073d7) Signed-off-by: Peter Korsgaard --- package/clamav/clamav.mk | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package/clamav/clamav.mk b/package/clamav/clamav.mk index 7c6dfce6f2..c548897c37 100644 --- a/package/clamav/clamav.mk +++ b/package/clamav/clamav.mk @@ -45,9 +45,8 @@ CLAMAV_DEPENDENCIES += musl-fts CLAMAV_LIBS += -lfts endif -CLAMAV_CONF_ENV += LIBS="$(CLAMAV_LIBS)" - CLAMAV_CONF_OPTS = \ + -DCMAKE_EXE_LINKER_FLAGS="$(CLAMAV_LIBS)" \ -DCMAKE_SKIP_INSTALL_RPATH=ON \ -DENABLE_JSON_SHARED=ON \ -DENABLE_MAN_PAGES=OFF \ From peter at korsgaard.com Thu May 2 20:24:44 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 22:24:44 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/inih: bump to version 58 Message-ID: <20240502202652.0E21E86384@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=d3e13a40c4ba96036c59d158403ada64e47c1c68 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x This bump will fix the following build failure with gcc 5 raised since bump to version 57 in commit 65c8a9b6626de83365865dea6fff1749466a36aa thanks to https://github.com/benhoyt/inih/commit/4e618f77d4bae216865c5abd972d99b1ba5031e2: In file included from /home/buildroot/autobuild/run/instance-1/output-1/host/opt/ext-toolchain/mips-linux-gnu/include/c++/5.3.0/cstdint:35:0, from ../cpp/INIReader.h:17, from ../cpp/INIReader.cpp:16: /home/buildroot/autobuild/run/instance-1/output-1/host/opt/ext-toolchain/mips-linux-gnu/include/c++/5.3.0/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options. #error This file requires compiler and library support for the \ ^ https://github.com/benhoyt/inih/releases/tag/r58 Fixes: 65c8a9b6626de83365865dea6fff1749466a36aa - http://autobuild.buildroot.org/results/7a5ba516cde536e103669a0422d336dd8a3b1dbc Signed-off-by: Fabrice Fontaine Signed-off-by: Arnout Vandecappelle (cherry picked from commit bfa4dd299f1346d5e246a552c491b630c64a6a97) Signed-off-by: Peter Korsgaard --- package/inih/inih.hash | 2 +- package/inih/inih.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/inih/inih.hash b/package/inih/inih.hash index 476b544ce6..f20d7ac0b6 100644 --- a/package/inih/inih.hash +++ b/package/inih/inih.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 f03f98ca35c3adb56b2358573c8d3eda319ccd5287243d691e724b7eafa970b3 inih-57.tar.gz +sha256 e79216260d5dffe809bda840be48ab0eec7737b2bb9f02d2275c1b46344ea7b7 inih-58.tar.gz sha256 9ae3b39e83e9158e44b67733baa3bb2d84e80efdcfb14a5820210a42c7abdf7f LICENSE.txt diff --git a/package/inih/inih.mk b/package/inih/inih.mk index 93032f1ed5..80cde0942b 100644 --- a/package/inih/inih.mk +++ b/package/inih/inih.mk @@ -4,7 +4,7 @@ # ################################################################################ -INIH_VERSION = 57 +INIH_VERSION = 58 INIH_SITE = $(call github,benhoyt,inih,r$(INIH_VERSION)) INIH_INSTALL_STAGING = YES INIH_LICENSE = BSD-3-Clause From arnout at mind.be Thu May 2 21:04:47 2024 From: arnout at mind.be (Arnout Vandecappelle) Date: Thu, 2 May 2024 23:04:47 +0200 Subject: [Buildroot] [PATCH 00/15 v2] support/download: extend download features and reproducibility (branch yem/git-attributes) In-Reply-To: References: Message-ID: Hi Yann,all, On 27/04/2024 20:38, Yann E. MORIN wrote: > Hello All! > > This series extends the download infra in two ways: > 1. git attributes are emulated > 2- download reproducibility is enhanced As discussed privately on IRC: while applying this series, I suddenly remembered that we also wanted to update the tar version used by Buildroot to something higher than 1.34. We're currently stuck there because of changes in the generated tar format, which also changes the tarball hashes, which would imply a huge refresh of the hash files that use VCS or vendored sources. This series, however, already does such a refresh of all the hash files, so it's the ideal occasion to also update tar. Therefore, I haven't applied to master. Instead, I've pushed my modifications to branch yem/git-attributes on https://gitlab.com/arnout/buildroot and you can pick it up from there. And I've marked the series as Changes Requested. Regards, Arnout [snip] From arnout at mind.be Thu May 2 21:08:57 2024 From: arnout at mind.be (Arnout Vandecappelle) Date: Thu, 2 May 2024 23:08:57 +0200 Subject: [Buildroot] Error building flutter-engine In-Reply-To: References: Message-ID: <97928e91-8148-41a4-b7a2-0297fc72446a@mind.be> On 02/05/2024 21:45, franco ariel wrote: > Hi everyone! > > I'm trying to compile flutter-engine from the latest version of buildroot but, > I'm getting this error: > > >>> flutter-engine 3.19.5 Building > cd /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5 && > PATH=/home/frank/buildroot-base/buildroot/output/host/share/depot_tools:"/home/frank/buildroot-base/buildroot/output/host/bin:/home/frank/buildroot-base/buildroot/output/host/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin" PUB_CACHE=/home/frank/buildroot-base/buildroot/dl/br-flutter-pub-cache HOME=/home/frank/buildroot-base/buildroot/output/host/share/flutter/sdk /home/frank/buildroot-base/buildroot/output/host/bin/ninja -j 33 -C /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/out/linux_release_arm64 > ninja: Entering directory > `/home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/out/linux_release_arm64' > ninja: warning: premature end of file; recovering This looks like something went wrong in the configuring step, and the ninja file is corrupted... Perhaps a file size limit that was exceeded, or out of disk space? Regards, Arnout > ninja: warning: -jN forced on command line; ignoring GNU make jobserver. > [2485/8965] CXX obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o > > FAILED: obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o > /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/buildtools/linux-x64/clang/bin/clang++ -MD -MF obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o.d --target=aarch64-unknown-linux-gnu --sysroot /home/frank/buildroot-base/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot -DU_I18N_IMPLEMENTATION -DUSE_OPENSSL=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_LIBCPP_DISABLE_AVAILABILITY=1 -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DHAVE_DLOPEN=0 -DUCONFIG_ONLY_HTML_CONVERSION=1 -DUCONFIG_USE_ML_PHRASE_BREAKING=1 -DUCONFIG_USE_WINDOWS_LCID_MAPPING_API=0 -DU_CHARSET_IS_UTF8=1 -DU_USING_ICU_NAMESPACE=0 -DU_ENABLE_DYLOAD=0 -DUSE_CHROMIUM_ICU=1 -DU_ENABLE_TRACING=1 -DU_ENABLE_RESOURCE_TRACING=0 -DU_STATIC_IMPLEMENTATION -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE -I../.. -Igen -I../../third_party/libcxx/include -I../../third_party/libcxxabi/include -I../../flutter/build/secondary/third_party/libcxx/config -I../../third_party/icu/source/common -I../../third_party/icu/source/i18n -fno-strict-aliasing -fstack-protector --param=ssp-buffer-size=4 -fPIC -pipe -pthread --target=aarch64-linux-gnu -DBORINGSSL_CLANG_SUPPORTS_DOT_ARCH -fcolor-diagnostics -fvisibility=hidden --sysroot=/home/frank/buildroot-base/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot -Wstring-conversion -Wnewline-eof -O2 -fno-ident -fdata-sections -ffunction-sections -g0 -Wno-deprecated-non-prototype -Wno-newline-eof -Wno-typedef-redefinition -Wendif-labels -Werror -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-but-set-parameter -Wno-unused-but-set-variable -Wno-implicit-int-float-conversion -Wno-deprecated-copy -Wno-psabi -Wno-deprecated-literal-operator -Wno-unqualified-std-cast-call -Wno-non-c-typedef-for-linkage -Wno-range-loop-construct -Wno-unused-function -Wno-parentheses -Wno-unused-function -Wno-unused-variable -Wno-ambiguous-reversed-operator -Wno-deprecated-declarations -fvisibility=hidden -fvisibility-inlines-hidden -std=c++17 -nostdinc++ -nostdinc++ -fvisibility=hidden -fno-exceptions -Wno-newline-eof -c ../../third_party/icu/source/i18n/nfsubs.cpp -o obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o > clang++: error: clang frontend command failed with exit code 139 (use -v to see > invocation) > Fuchsia clang version 18.0.0 (https://llvm.googlesource.com/llvm-project > 725656bdd885483c39f482a01ea25d67acf39c46) > Target: aarch64-unknown-linux-gnu > Thread model: posix > InstalledDir: > /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/buildtools/linux-x64/clang/bin > clang++: note: diagnostic msg: > ******************** > > I'm stuck on this since I format my computer, I download everything what I need, > and every time that it comes to flutter-engine, I get this error that I never seen. > > > Thank you in advance, > Franco. > > > > > > > > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot From fran.millocs at live.com.ar Fri May 3 00:04:24 2024 From: fran.millocs at live.com.ar (franco ariel) Date: Fri, 3 May 2024 00:04:24 +0000 Subject: [Buildroot] Error building flutter-engine In-Reply-To: References: Message-ID: > Hi everyone! > > I'm trying to compile flutter-engine from the latest version of buildroot but, > I'm getting this error: > > >>> flutter-engine 3.19.5 Building > cd /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5 && > PATH=/home/frank/buildroot-base/buildroot/output/host/share/depot_tools:"/home/frank/buildroot-base/buildroot/output/host/bin:/home/frank/buildroot-base/buildroot/output/host/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin" PUB_CACHE=/home/frank/buildroot-base/buildroot/dl/br-flutter-pub-cache HOME=/home/frank/buildroot-base/buildroot/output/host/share/flutter/sdk /home/frank/buildroot-base/buildroot/output/host/bin/ninja -j 33 -C /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/out/linux_release_arm64 > ninja: Entering directory > `/home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/out/linux_release_arm64' > ninja: warning: premature end of file; recovering This looks like something went wrong in the configuring step, and the ninja file is corrupted... Perhaps a file size limit that was exceeded, or out of disk space? Regards, Arnout > ninja: warning: -jN forced on command line; ignoring GNU make jobserver. > [2485/8965] CXX obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o > > FAILED: obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o > /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/buildtools/linux-x64/clang/bin/clang++ -MD -MF obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o.d --target=aarch64-unknown-linux-gnu --sysroot /home/frank/buildroot-base/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot -DU_I18N_IMPLEMENTATION -DUSE_OPENSSL=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_LIBCPP_DISABLE_AVAILABILITY=1 -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DHAVE_DLOPEN=0 -DUCONFIG_ONLY_HTML_CONVERSION=1 -DUCONFIG_USE_ML_PHRASE_BREAKING=1 -DUCONFIG_USE_WINDOWS_LCID_MAPPING_API=0 -DU_CHARSET_IS_UTF8=1 -DU_USING_ICU_NAMESPACE=0 -DU_ENABLE_DYLOAD=0 -DUSE_CHROMIUM_ICU=1 -DU_ENABLE_TRACING=1 -DU_ENABLE_RESOURCE_TRACING=0 -DU_STATIC_IMPLEMENTATION -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE -I../.. -Igen -I../../third_party/libcxx/include -I../../third_party/lib cxxabi/include -I../../flutter/build/secondary/third_party/libcxx/config -I../../third_party/icu/source/common -I../../third_party/icu/source/i18n -fno-strict-aliasing -fstack-protector --param=ssp-buffer-size=4 -fPIC -pipe -pthread --target=aarch64-linux-gnu -DBORINGSSL_CLANG_SUPPORTS_DOT_ARCH -fcolor-diagnostics -fvisibility=hidden --sysroot=/home/frank/buildroot-base/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot -Wstring-conversion -Wnewline-eof -O2 -fno-ident -fdata-sections -ffunction-sections -g0 -Wno-deprecated-non-prototype -Wno-newline-eof -Wno-typedef-redefinition -Wendif-labels -Werror -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-but-set-parameter -Wno-unused-but-set-variable -Wno-implicit-int-float-conversion -Wno-deprecated-copy -Wno-psabi -Wno-deprecated-literal-operator -Wno-unqualified-std-cast-call -Wno-non-c-typedef-for-linkage -Wno-range-loop-construct -Wno-unused-function -Wno-parentheses -Wno-unused-function -Wno-unused-variable -Wno-ambiguous-reversed-operator -Wno-deprecated-declarations -fvisibility=hidden -fvisibility-inlines-hidden -std=c++17 -nostdinc++ -nostdinc++ -fvisibility=hidden -fno-exceptions -Wno-newline-eof -c ../../third_party/icu/source/i18n/nfsubs.cpp -o obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o > clang++: error: clang frontend command failed with exit code 139 (use -v to see > invocation) > Fuchsia clang version 18.0.0 (https://llvm.googlesource.com/llvm-project > 725656bdd885483c39f482a01ea25d67acf39c46) > Target: aarch64-unknown-linux-gnu > Thread model: posix > InstalledDir: > /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/buildtools/linux-x64/clang/bin > clang++: note: diagnostic msg: > ******************** > > I'm stuck on this since I format my computer, I download everything what I need, > and every time that it comes to flutter-engine, I get this error that I never seen. > > > Thank you in advance, > Franco. Thank you, Arnout, for your answer. I've already checked the disk space and RAM usage, and both were fine. After reviewing the code in flutter-engine.mk, I realized that the number of jobs set for the Ninja build was too high (-j 33). I reduced it to -j 12, and although it's slower, it compiles perfectly now. I have an i9 13900k, so I shouldn't have problems handling multiple jobs. I'm certain there's an issue elsewhere, but for now, it's working. Regards, Franco. ________________________________ De: buildroot en nombre de franco ariel Enviado: jueves, 2 de mayo de 2024 12:45 Para: Thomas Petazzoni via buildroot Asunto: [Buildroot] Error building flutter-engine Hi everyone! I'm trying to compile flutter-engine from the latest version of buildroot but, I'm getting this error: >>> flutter-engine 3.19.5 Building cd /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5 && PATH=/home/frank/buildroot-base/buildroot/output/host/share/depot_tools:"/home/frank/buildroot-base/buildroot/output/host/bin:/home/frank/buildroot-base/buildroot/output/host/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin" PUB_CACHE=/home/frank/buildroot-base/buildroot/dl/br-flutter-pub-cache HOME=/home/frank/buildroot-base/buildroot/output/host/share/flutter/sdk /home/frank/buildroot-base/buildroot/output/host/bin/ninja -j 33 -C /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/out/linux_release_arm64 ninja: Entering directory `/home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/out/linux_release_arm64' ninja: warning: premature end of file; recovering ninja: warning: -jN forced on command line; ignoring GNU make jobserver. [2485/8965] CXX obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o FAILED: obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/buildtools/linux-x64/clang/bin/clang++ -MD -MF obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o.d --target=aarch64-unknown-linux-gnu --sysroot /home/frank/buildroot-base/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot -DU_I18N_IMPLEMENTATION -DUSE_OPENSSL=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_LIBCPP_DISABLE_AVAILABILITY=1 -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DHAVE_DLOPEN=0 -DUCONFIG_ONLY_HTML_CONVERSION=1 -DUCONFIG_USE_ML_PHRASE_BREAKING=1 -DUCONFIG_USE_WINDOWS_LCID_MAPPING_API=0 -DU_CHARSET_IS_UTF8=1 -DU_USING_ICU_NAMESPACE=0 -DU_ENABLE_DYLOAD=0 -DUSE_CHROMIUM_ICU=1 -DU_ENABLE_TRACING=1 -DU_ENABLE_RESOURCE_TRACING=0 -DU_STATIC_IMPLEMENTATION -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE -I../.. -Igen -I../../third_party/libcxx/include -I../../third_party/libcxxabi/include -I../../flutter/build/secondary/third_party/libcxx/config -I../../third_party/icu/source/common -I../../third_party/icu/source/i18n -fno-strict-aliasing -fstack-protector --param=ssp-buffer-size=4 -fPIC -pipe -pthread --target=aarch64-linux-gnu -DBORINGSSL_CLANG_SUPPORTS_DOT_ARCH -fcolor-diagnostics -fvisibility=hidden --sysroot=/home/frank/buildroot-base/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot -Wstring-conversion -Wnewline-eof -O2 -fno-ident -fdata-sections -ffunction-sections -g0 -Wno-deprecated-non-prototype -Wno-newline-eof -Wno-typedef-redefinition -Wendif-labels -Werror -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-but-set-parameter -Wno-unused-but-set-variable -Wno-implicit-int-float-conversion -Wno-deprecated-copy -Wno-psabi -Wno-deprecated-literal-operator -Wno-unqualified-std-cast-call -Wno-non-c-typedef-for-linkage -Wno-range-loop-construct -Wno-unused-function -Wno-parentheses -Wno-unused-function -Wno-unused-variable -Wno-ambiguous-reversed-operator -Wno-deprecated-declarations -fvisibility=hidden -fvisibility-inlines-hidden -std=c++17 -nostdinc++ -nostdinc++ -fvisibility=hidden -fno-exceptions -Wno-newline-eof -c ../../third_party/icu/source/i18n/nfsubs.cpp -o obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o clang++: error: clang frontend command failed with exit code 139 (use -v to see invocation) Fuchsia clang version 18.0.0 (https://llvm.googlesource.com/llvm-project 725656bdd885483c39f482a01ea25d67acf39c46) Target: aarch64-unknown-linux-gnu Thread model: posix InstalledDir: /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/buildtools/linux-x64/clang/bin clang++: note: diagnostic msg: ******************** I'm stuck on this since I format my computer, I download everything what I need, and every time that it comes to flutter-engine, I get this error that I never seen. Thank you in advance, Franco. -------------- next part -------------- An HTML attachment was scrubbed... URL: From brandon.maier at collins.com Fri May 3 01:59:57 2024 From: brandon.maier at collins.com (Brandon Maier) Date: Fri, 3 May 2024 01:59:57 +0000 Subject: [Buildroot] [PATCH v3 1/4] package/bats-support: new package In-Reply-To: <20240425195816.2758964-1-brandon.maier@collins.com> References: <20240425195816.2758964-1-brandon.maier@collins.com> Message-ID: <20240503020000.3168109-1-brandon.maier@collins.com> This library provides support functions needed by the bats-assert and bats-file libraries. This library does not provide an installer. Manually install the files under /usr/lib/bats/bats-support which is what the Arch Linux package does[1]. This makes the library loadable using `bats_load_library`[2]. [1] https://gitlab.archlinux.org/archlinux/packaging/packages/bats-support/-/blob/main/PKGBUILD?ref_type=heads [2] https://bats-core.readthedocs.io/en/stable/writing-tests.html#bats-load-library-load-system-wide-libraries Signed-off-by: Brandon Maier --- v2: - fix older versions of install that don't support -D with -t v3: - fix commit subject to be 'new package' - switch 'install' to '$(INSTALL)' - install with 0755 permissions - remove unneeded quotes --- DEVELOPERS | 1 + package/Config.in | 1 + package/bats-support/Config.in | 8 ++++++++ package/bats-support/bats-support.hash | 5 +++++ package/bats-support/bats-support.mk | 18 ++++++++++++++++++ 5 files changed, 33 insertions(+) create mode 100644 package/bats-support/Config.in create mode 100644 package/bats-support/bats-support.hash create mode 100644 package/bats-support/bats-support.mk diff --git a/DEVELOPERS b/DEVELOPERS index 5d198567d8..7fc46d6b43 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -540,6 +540,7 @@ F: package/ncdu/ N: Brandon Maier F: board/freescale/ls1046a-frwy/ F: configs/ls1046a-frwy_defconfig +F: package/bats-support/ F: package/python-pysensors/ F: package/qoriq-fm-ucode/ F: package/unifdef/ diff --git a/package/Config.in b/package/Config.in index 38e9c94198..f1da714418 100644 --- a/package/Config.in +++ b/package/Config.in @@ -170,6 +170,7 @@ endmenu menu "Development tools" source "package/avocado/Config.in" source "package/bats-core/Config.in" + source "package/bats-support/Config.in" source "package/binutils/Config.in" source "package/bitwise/Config.in" source "package/bsdiff/Config.in" diff --git a/package/bats-support/Config.in b/package/bats-support/Config.in new file mode 100644 index 0000000000..24b49cee1d --- /dev/null +++ b/package/bats-support/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_BATS_SUPPORT + bool "bats-support" + depends on BR2_PACKAGE_BATS_CORE # runtime + help + bats-support is a supporting library providing common + functions to test helper libraries written for Bats. + + https://github.com/bats-core/bats-support diff --git a/package/bats-support/bats-support.hash b/package/bats-support/bats-support.hash new file mode 100644 index 0000000000..847f39e7c7 --- /dev/null +++ b/package/bats-support/bats-support.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 7815237aafeb42ddcc1b8c698fc5808026d33317d8701d5ec2396e9634e2918f bats-support-0.3.0.tar.gz + +# License files +sha256 36ffd9dc085d529a7e60e1276d73ae5a030b020313e6c5408593a6ae2af39673 LICENSE diff --git a/package/bats-support/bats-support.mk b/package/bats-support/bats-support.mk new file mode 100644 index 0000000000..765e08ffce --- /dev/null +++ b/package/bats-support/bats-support.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# bats-support +# +################################################################################ + +BATS_SUPPORT_VERSION = 0.3.0 +BATS_SUPPORT_SITE = $(call github,bats-core,bats-support,v$(BATS_SUPPORT_VERSION)) +BATS_SUPPORT_LICENSE = CC0-1.0 +BATS_SUPPORT_LICENSE_FILES = LICENSE + +define BATS_SUPPORT_INSTALL_TARGET_CMDS + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/lib/bats/bats-support/src + $(INSTALL) -m 0755 $(@D)/*.bash -t $(TARGET_DIR)/usr/lib/bats/bats-support + $(INSTALL) -m 0755 $(@D)/src/*.bash -t $(TARGET_DIR)/usr/lib/bats/bats-support/src +endef + +$(eval $(generic-package)) -- 2.44.0 From brandon.maier at collins.com Fri May 3 01:59:58 2024 From: brandon.maier at collins.com (Brandon Maier) Date: Fri, 3 May 2024 01:59:58 +0000 Subject: [Buildroot] [PATCH v3 2/4] package/bats-assert: new package In-Reply-To: <20240503020000.3168109-1-brandon.maier@collins.com> References: <20240425195816.2758964-1-brandon.maier@collins.com> <20240503020000.3168109-1-brandon.maier@collins.com> Message-ID: <20240503020000.3168109-2-brandon.maier@collins.com> bats-assert is a helper library providing common assertions for Bats. This library does not provide an installer. Manually install the files under /usr/lib/bats/bats-assert which is what the Arch Linux package does[1]. This makes the library loadable using `bats_load_library`[2]. [1] https://gitlab.archlinux.org/archlinux/packaging/packages/bats-assert/-/blob/main/PKGBUILD?ref_type=heads [2] https://bats-core.readthedocs.io/en/stable/writing-tests.html#bats-load-library-load-system-wide-libraries Signed-off-by: Brandon Maier --- v2: - fix older versions of install that don't support -D with -t v3: - fix commit subject to be 'new package' - switch 'install' to '$(INSTALL)' - install with 0755 permissions - remove unneeded quotes --- DEVELOPERS | 1 + package/Config.in | 1 + package/bats-assert/Config.in | 16 ++++++++++++++++ package/bats-assert/bats-assert.hash | 5 +++++ package/bats-assert/bats-assert.mk | 18 ++++++++++++++++++ 5 files changed, 41 insertions(+) create mode 100644 package/bats-assert/Config.in create mode 100644 package/bats-assert/bats-assert.hash create mode 100644 package/bats-assert/bats-assert.mk diff --git a/DEVELOPERS b/DEVELOPERS index 7fc46d6b43..2dfd5afd34 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -540,6 +540,7 @@ F: package/ncdu/ N: Brandon Maier F: board/freescale/ls1046a-frwy/ F: configs/ls1046a-frwy_defconfig +F: package/bats-assert/ F: package/bats-support/ F: package/python-pysensors/ F: package/qoriq-fm-ucode/ diff --git a/package/Config.in b/package/Config.in index f1da714418..673fc9a811 100644 --- a/package/Config.in +++ b/package/Config.in @@ -169,6 +169,7 @@ endmenu menu "Development tools" source "package/avocado/Config.in" + source "package/bats-assert/Config.in" source "package/bats-core/Config.in" source "package/bats-support/Config.in" source "package/binutils/Config.in" diff --git a/package/bats-assert/Config.in b/package/bats-assert/Config.in new file mode 100644 index 0000000000..78fa0ac4d5 --- /dev/null +++ b/package/bats-assert/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_BATS_ASSERT + bool "bats-assert" + depends on BR2_PACKAGE_BATS_CORE # runtime + select BR2_PACKAGE_BATS_SUPPORT # runtime + help + bats-assert is a helper library providing common assertions + for Bats. + + In the context of this project, an assertion is a function + that perform a test and returns 1 on failure or 0 on success. + To make debugging easier, the assertion also outputs relevant + information on failure. The output is formatted for + readability. To make assertions usable outside of @test + blocks, the output is sent to stderr. + + https://github.com/bats-core/bats-assert diff --git a/package/bats-assert/bats-assert.hash b/package/bats-assert/bats-assert.hash new file mode 100644 index 0000000000..94c3908ab3 --- /dev/null +++ b/package/bats-assert/bats-assert.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 98ca3b685f8b8993e48ec057565e6e2abcc541034ed5b0e81f191505682037fd bats-assert-2.1.0.tar.gz + +# License files +sha256 36ffd9dc085d529a7e60e1276d73ae5a030b020313e6c5408593a6ae2af39673 LICENSE diff --git a/package/bats-assert/bats-assert.mk b/package/bats-assert/bats-assert.mk new file mode 100644 index 0000000000..c0e37e0048 --- /dev/null +++ b/package/bats-assert/bats-assert.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# bats-assert +# +################################################################################ + +BATS_ASSERT_VERSION = 2.1.0 +BATS_ASSERT_SITE = $(call github,bats-core,bats-assert,v$(BATS_ASSERT_VERSION)) +BATS_ASSERT_LICENSE = CC0-1.0 +BATS_ASSERT_LICENSE_FILES = LICENSE + +define BATS_ASSERT_INSTALL_TARGET_CMDS + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/lib/bats/bats-assert/src + $(INSTALL) -m 0755 $(@D)/*.bash -t $(TARGET_DIR)/usr/lib/bats/bats-assert + $(INSTALL) -m 0755 $(@D)/src/*.bash -t $(TARGET_DIR)/usr/lib/bats/bats-assert/src +endef + +$(eval $(generic-package)) -- 2.44.0 From brandon.maier at collins.com Fri May 3 01:59:59 2024 From: brandon.maier at collins.com (Brandon Maier) Date: Fri, 3 May 2024 01:59:59 +0000 Subject: [Buildroot] [PATCH v3 3/4] package/bats-file: new package In-Reply-To: <20240503020000.3168109-1-brandon.maier@collins.com> References: <20240425195816.2758964-1-brandon.maier@collins.com> <20240503020000.3168109-1-brandon.maier@collins.com> Message-ID: <20240503020000.3168109-3-brandon.maier@collins.com> bats-file is a helper library providing common filesystem related assertions and helpers for Bats. This library does not provide an installer. Manually install the files under /usr/lib/bats/bats-file which is what the Arch Linux package does[1]. This makes the library loadable using `bats_load_library`[2]. [1] https://gitlab.archlinux.org/archlinux/packaging/packages/bats-file/-/blob/main/PKGBUILD?ref_type=heads [2] https://bats-core.readthedocs.io/en/stable/writing-tests.html#bats-load-library-load-system-wide-libraries Signed-off-by: Brandon Maier --- v2: - fix older versions of install that don't support -D with -t v3: - fix commit subject to be 'new package' - switch 'install' to '$(INSTALL)' - install with 0755 permissions - remove unneeded quotes --- DEVELOPERS | 1 + package/Config.in | 1 + package/bats-file/Config.in | 15 +++++++++++++++ package/bats-file/bats-file.hash | 5 +++++ package/bats-file/bats-file.mk | 18 ++++++++++++++++++ 5 files changed, 40 insertions(+) create mode 100644 package/bats-file/Config.in create mode 100644 package/bats-file/bats-file.hash create mode 100644 package/bats-file/bats-file.mk diff --git a/DEVELOPERS b/DEVELOPERS index 2dfd5afd34..c2d3f52a59 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -541,6 +541,7 @@ N: Brandon Maier F: board/freescale/ls1046a-frwy/ F: configs/ls1046a-frwy_defconfig F: package/bats-assert/ +F: package/bats-file/ F: package/bats-support/ F: package/python-pysensors/ F: package/qoriq-fm-ucode/ diff --git a/package/Config.in b/package/Config.in index 673fc9a811..eac9b74ba4 100644 --- a/package/Config.in +++ b/package/Config.in @@ -171,6 +171,7 @@ menu "Development tools" source "package/avocado/Config.in" source "package/bats-assert/Config.in" source "package/bats-core/Config.in" + source "package/bats-file/Config.in" source "package/bats-support/Config.in" source "package/binutils/Config.in" source "package/bitwise/Config.in" diff --git a/package/bats-file/Config.in b/package/bats-file/Config.in new file mode 100644 index 0000000000..fa9312c9e4 --- /dev/null +++ b/package/bats-file/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_BATS_FILE + bool "bats-file" + depends on BR2_PACKAGE_BATS_CORE # runtime + select BR2_PACKAGE_BATS_SUPPORT # runtime + help + bats-file is a helper library providing common filesystem + related assertions and helpers for Bats. + + Assertions are functions that perform a test and output + relevant information on failure to help debugging. They return + 1 on failure and 0 otherwise. Output, formatted for + readability, is sent to the standard error to make assertions + usable outside of @test blocks too. + + https://github.com/bats-core/bats-file diff --git a/package/bats-file/bats-file.hash b/package/bats-file/bats-file.hash new file mode 100644 index 0000000000..9530dc6d9d --- /dev/null +++ b/package/bats-file/bats-file.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 9b69043241f3af1c2d251f89b4fcafa5df3f05e97b89db18d7c9bdf5731bb27a bats-file-0.4.0.tar.gz + +# License files +sha256 36ffd9dc085d529a7e60e1276d73ae5a030b020313e6c5408593a6ae2af39673 LICENSE diff --git a/package/bats-file/bats-file.mk b/package/bats-file/bats-file.mk new file mode 100644 index 0000000000..0499327fe0 --- /dev/null +++ b/package/bats-file/bats-file.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# bats-file +# +################################################################################ + +BATS_FILE_VERSION = 0.4.0 +BATS_FILE_SITE = $(call github,bats-core,bats-file,v$(BATS_FILE_VERSION)) +BATS_FILE_LICENSE = CC0-1.0 +BATS_FILE_LICENSE_FILES = LICENSE + +define BATS_FILE_INSTALL_TARGET_CMDS + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/lib/bats/bats-file/src + $(INSTALL) -m 0755 $(@D)/*.bash -t $(TARGET_DIR)/usr/lib/bats/bats-file + $(INSTALL) -m 0755 $(@D)/src/*.bash -t $(TARGET_DIR)/usr/lib/bats/bats-file/src +endef + +$(eval $(generic-package)) -- 2.44.0 From brandon.maier at collins.com Fri May 3 02:00:00 2024 From: brandon.maier at collins.com (Brandon Maier) Date: Fri, 3 May 2024 02:00:00 +0000 Subject: [Buildroot] [PATCH v3 4/4] support/testing: add bats runtime test In-Reply-To: <20240503020000.3168109-1-brandon.maier@collins.com> References: <20240425195816.2758964-1-brandon.maier@collins.com> <20240503020000.3168109-1-brandon.maier@collins.com> Message-ID: <20240503020000.3168109-4-brandon.maier@collins.com> Tests the bats-core, bats-support, bats-assert, and bats-file packages. Signed-off-by: Brandon Maier --- support/testing/tests/package/test_bats.py | 33 +++++++++++++++++++ .../rootfs-overlay/root/test-bats-assert.bats | 11 +++++++ .../rootfs-overlay/root/test-bats-core.bats | 11 +++++++ .../rootfs-overlay/root/test-bats-file.bats | 10 ++++++ 4 files changed, 65 insertions(+) create mode 100644 support/testing/tests/package/test_bats.py create mode 100755 support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-assert.bats create mode 100755 support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-core.bats create mode 100755 support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-file.bats diff --git a/support/testing/tests/package/test_bats.py b/support/testing/tests/package/test_bats.py new file mode 100644 index 0000000000..c75a6df294 --- /dev/null +++ b/support/testing/tests/package/test_bats.py @@ -0,0 +1,33 @@ +import os + +import infra.basetest + + +class TestBats(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_ENABLE_LOCALE_WHITELIST="" + BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y + BR2_PACKAGE_BASH=y + BR2_PACKAGE_BATS_CORE=y + BR2_PACKAGE_BATS_ASSERT=y + BR2_PACKAGE_BATS_FILE=y + BR2_ROOTFS_OVERLAY="{}" + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """.format( + # overlay to add a gnuradio python test script + infra.filepath("tests/package/test_bats/rootfs-overlay")) + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + self.assertRunOk("bats --version") + + self.assertRunOk("bats /root/test-bats-core.bats", timeout=5) + self.assertRunOk("bats /root/test-bats-assert.bats", timeout=5) + self.assertRunOk("bats /root/test-bats-file.bats", timeout=5) diff --git a/support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-assert.bats b/support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-assert.bats new file mode 100755 index 0000000000..cd0cb48290 --- /dev/null +++ b/support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-assert.bats @@ -0,0 +1,11 @@ +#!/usr/bin/env bats + +setup() { + bats_load_library bats-support + bats_load_library bats-assert +} + + at test "bats-assert assert_output" { + run echo "Hello World" + assert_output "Hello World" +} diff --git a/support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-core.bats b/support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-core.bats new file mode 100755 index 0000000000..54ec941e03 --- /dev/null +++ b/support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-core.bats @@ -0,0 +1,11 @@ +#!/usr/bin/env bats + + at test "bats-core true" { + true +} + + at test "bats-core run" { + run echo "Hello World" + [ "$status" -eq 0 ] + [ "$output" = "Hello World" ] +} diff --git a/support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-file.bats b/support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-file.bats new file mode 100755 index 0000000000..0ac2616b99 --- /dev/null +++ b/support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-file.bats @@ -0,0 +1,10 @@ +#!/usr/bin/env bats + +setup() { + bats_load_library bats-support + bats_load_library bats-file +} + + at test "bats-file assert_exists" { + assert_exists /root/test-bats-file.bats +} -- 2.44.0 From Brandon.Maier at collins.com Fri May 3 02:01:43 2024 From: Brandon.Maier at collins.com (Maier, Brandon L Collins) Date: Fri, 3 May 2024 02:01:43 +0000 Subject: [Buildroot] [External] Re: [PATCH v2 2/4] package/bats-support: add bats support library In-Reply-To: <20240501231346.442f0182@windsurf> References: <20240412210850.17265-1-brandon.maier@collins.com> <20240425195816.2758964-2-brandon.maier@collins.com> <20240501231346.442f0182@windsurf> Message-ID: Hi Thomas, > -----Original Message----- > From: Thomas Petazzoni > Sent: Wednesday, May 1, 2024 4:14 PM > To: Brandon Maier via buildroot > Cc: Maier, Brandon L Collins > Subject: [External] Re: [Buildroot] [PATCH v2 2/4] package/bats-support: add bats > support library > > Changes v1 -> v2: > > - fix older versions of `install` that don't support -D > > Hu? We use the -D option of install everywhere in Buildroot. How can > your build work if you have a version of install that doesn't support > -D ? Sorry I didn't look at this close enough. It's an issue that older versions of `install` didn't support using both `-D` and `-t ` at the same time. > > +define BATS_SUPPORT_INSTALL_TARGET_CMDS > > + install -d -m 0755 $(TARGET_DIR)/usr/lib/bats/bats-support/src > > + install -m 0644 $(@D)/*.bash -t "$(TARGET_DIR)/usr/lib/bats/bats- > support" > > + install -m 0644 $(@D)/src/*.bash -t "$(TARGET_DIR)/usr/lib/bats/bats- > support/src" > > Use $(INSTALL) instead of install. > > You can skip the double quotes around the file paths. We don't double > quotes the paths in any other Buildroot .mk file. > > Also, -m 0644 is not consistent with how the files from bats-core are > installed: > > $ ls -l output/target/usr/lib/bats-core/ > total 68 > -rwxr-xr-x. 1 thomas thomas 7988 1 mai 23:03 common.bash > -rwxr-xr-x. 1 thomas thomas 6058 1 mai 23:03 formatter.bash > -rwxr-xr-x. 1 thomas thomas 838 1 mai 23:03 preprocessing.bash > -rwxr-xr-x. 1 thomas thomas 3722 1 mai 23:03 semaphore.bash > -rwxr-xr-x. 1 thomas thomas 16483 1 mai 23:03 test_functions.bash > -rwxr-xr-x. 1 thomas thomas 14979 1 mai 23:03 tracing.bash > -rwxr-xr-x. 1 thomas thomas 1019 1 mai 23:03 validator.bash > -rwxr-xr-x. 1 thomas thomas 1900 1 mai 23:03 warnings.bash > > They are installed 0755. Should we try to be consistent with this? Or > it doesn't make sense for a specific reason? I will change to make it consistent. Both 0755 or 0644 would work as the files must be sourced, which only needs read permission. > > Also, while not mandatory at all, it would be nice to have small > runtime tests for these bats-* packages. Nothing fancy, just something > stupid/simple that exercises a bit those packages. > > These comments apply in a completely identical way to the other 2 > patches in this series. > > Thanks! > > Thomas Thanks for the review! I agree with the other comments as well. I sent a v3 with changes. Brandon From thomas.petazzoni at bootlin.com Fri May 3 03:58:20 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Fri, 03 May 2024 03:58:20 -0000 Subject: [Buildroot] [autobuild.buildroot.net] Daily results for 2024-05-02 Message-ID: Hello, Autobuild statistics for 2024-05-02 =================================== branch | OK | NOK | TIM | TOT | 2024.02.x | 5 | 4 | 0 | 9 | master | 22 | 41 | 0 | 63 | Classification of failures by reason for master ----------------------------------------------- host-libglib2-2.76.1 | 12 libressl-3.8.4 | 3 unknown | 3 bat-0.24.0 | 1 bcc-0.29.1 | 1 boost-1.83.0 | 1 check-11970a7e112dfe243a2e6... | 1 crun-1.12 | 1 dc3dd-7.2.641 | 1 fail2ban-1.0.2 | 1 fcft-3.1.6 | 1 gdk-pixbuf-2.42.10 | 1 gnu-efi-3.0.18 | 1 gobject-introspection-1.76.1 | 1 google-breakpad-f49c2f1a202... | 1 host-sentry-cli-2.20.3 | 1 ibm-sw-tpm2-5452af422edeff7... | 1 libcamera-apps-1.2.1 | 1 libnss-3.99 | 1 ltrace-82c66409c7a93ca6ad2e... | 1 mdadm-4.3 | 1 mongodb-4.2.18 | 1 ntpsec-1.2.3 | 1 openssh-9.7p1 | 1 python-remi-2022.7.27 | 1 stress-ng-0.17.07 | 1 Detail of failures for master ----------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- x86_64 | bat-0.24.0 | NOK | http://autobuild.buildroot.net/results/c61914f43c4c35831330b761de1f4c6ccf15dd97 | aarch64 | bcc-0.29.1 | NOK | http://autobuild.buildroot.net/results/75ddf0de7b35bd17ac03adca427b4e1108cc7f0e | x86_64 | boost-1.83.0 | NOK | http://autobuild.buildroot.net/results/67d80aed39c335974972c5440138964ccc1630b9 | m68k | check-11970a7e112dfe243a2e6... | NOK | http://autobuild.buildroot.net/results/283a9557ec0c9347cfa56ef00c7bf111cf3c0bac | ORPH m68k | crun-1.12 | NOK | http://autobuild.buildroot.net/results/e76667717c6b3e5b8ec3c2f71866aff3a72103a1 | microblazeel | dc3dd-7.2.641 | NOK | http://autobuild.buildroot.net/results/921b24368974d6e40093b950878bcc871b7c4d6e | ORPH arc | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/740be93840c54e198973546e2b42177ef1fbf136 | aarch64 | fcft-3.1.6 | NOK | http://autobuild.buildroot.net/results/dd40eed68c74431c96fa257f331b54bd184947fd | powerpc | gdk-pixbuf-2.42.10 | NOK | http://autobuild.buildroot.net/results/8843b80d294c5b92f91f1ff068cf1233bb157abc | ORPH riscv64 | gnu-efi-3.0.18 | NOK | http://autobuild.buildroot.net/results/ceba04a4449e40d1a97c9786d6a2d020efba95ff | or1k | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/8f05d5c46f7364254047a32958734f398948b15c | ORPH mipsel | google-breakpad-f49c2f1a202... | NOK | http://autobuild.buildroot.net/results/e7a3a4977a0ce47afdf8c984b6eb27b62f68bf82 | sparc64 | host-libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/c10229131083ecdf7cf426e0652ad4c302210fcf | sh4eb | host-libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/1dd7e9af5d2a18529a7d54fecde14f15e06a415f | aarch64 | host-libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/e474e6dc3ab01d6ead8724180e4d59942cf9ef6f | sparc64 | host-libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/58f5c1d319d5dbe4c775594870b72d4e5eeb3cea | mips64el | host-libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/280c5b6afe4343635da454447d3048e6b50d066f | nios2 | host-libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/3ab229705a686bfbbc6a83acee6089ee5ca1477e | aarch64_be | host-libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/a79de7d7f5a48a9a06fc38a4e554d1065092b48c | nios2 | host-libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/4d87b049df24d4322ff69c2e00896e94aa0ac4ae | nios2 | host-libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/4fb27d10ef4cb3894e0d9544c3fd06e87db0df30 | mips64el | host-libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/c4e0448bdbff5cd5bb634f415b7151a145e0d0f1 | powerpc64 | host-libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/34b50beeb0184a1f1aa4e417676e87d6f1340114 | aarch64_be | host-libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/a12b9c4436594818f4ce128595b429adf7d90e31 | or1k | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/fab1bd4ba915f6fb9d399e8b58763a9055c2ebf4 | x86_64 | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/2fb5e1cb792fe25ef860ff8111622cd1ff3770bf | mipsel | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/3494a7fbca136d76ce6eaa0297ae1ed8f7d83d1d | or1k | libnss-3.99 | NOK | http://autobuild.buildroot.net/results/ad7787e27339b0db164d118ba00303558aa5ffc0 | nios2 | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/30607d14944325d002394f2e53c0b0e6a83bbdea | ORPH arc | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/48d58c4fec87a03a7e8d2bc1f73c75f9ae7ac995 | ORPH mips64 | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/1f6d3b1852749a7e606373afe870a667683c9c56 | ORPH x86_64 | ltrace-82c66409c7a93ca6ad2e... | NOK | http://autobuild.buildroot.net/results/dacee0a4634088626a7c978d0fef4b0ecfbe5784 | ORPH mipsel | mdadm-4.3 | NOK | http://autobuild.buildroot.net/results/28aced8b4598e7350eb5663aebeb782c79f0f292 | ORPH arm | mongodb-4.2.18 | NOK | http://autobuild.buildroot.net/results/b0bd5e24739b17506cc7fe66fb4d1926115fdef8 | xtensa | ntpsec-1.2.3 | NOK | http://autobuild.buildroot.net/results/dd096ae316bf1310c40b0e30abaf6069c3abc446 | ORPH mips | openssh-9.7p1 | NOK | http://autobuild.buildroot.net/results/cd485488982c1e4c43ae6e1c8f6526867e81fea8 | ORPH mipsel | python-remi-2022.7.27 | NOK | http://autobuild.buildroot.net/results/01e6c6467878465e3d0f2f1de176093de6815434 | or1k | stress-ng-0.17.07 | NOK | http://autobuild.buildroot.net/results/8b4ab64405568c78488efb098cf5700cbf16a84f | armeb | unknown | NOK | http://autobuild.buildroot.net/results/781a409e64cbcdc34a75745e5be9f1d44c5c41ca | mipsel | unknown | NOK | http://autobuild.buildroot.net/results/33c8e00106bbee07dc7a5bfaab8b141104584280 | powerpc64 | unknown | NOK | http://autobuild.buildroot.net/results/77701b2a334bed0d675d692d588f41efd9ab0f0c | Classification of failures by reason for 2024.02.x -------------------------------------------------- cairo-1.17.4 | 1 libdeflate-1.19 | 1 linux-6.6.22 | 1 python-pymupdf-1.22.0 | 1 Detail of failures for 2024.02.x -------------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- powerpc | cairo-1.17.4 | NOK | http://autobuild.buildroot.net/results/afddbadc96484d54b298322cdfada7ca8e421475 | armeb | libdeflate-1.19 | NOK | http://autobuild.buildroot.net/results/7318a4450eae6a0a4a413390d92a04cb65c75ebb | mips64 | linux-6.6.22 | NOK | http://autobuild.buildroot.net/results/d48105bbeb533cfa3588ad2215936b9cfb8e6ddd | ORPH mips64el | python-pymupdf-1.22.0 | NOK | http://autobuild.buildroot.net/results/d5e7659fe262a795e24758eda4d1534a25b8cb27 | -- http://autobuild.buildroot.net From peter at korsgaard.com Fri May 3 07:09:31 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Fri, 03 May 2024 09:09:31 +0200 Subject: [Buildroot] [PATCH 1/1] package/botan: security bump to version 3.3.0 In-Reply-To: <20240407170936.2788174-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sun, 7 Apr 2024 19:09:36 +0200") References: <20240407170936.2788174-1-fontaine.fabrice@gmail.com> Message-ID: <878r0r4bis.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > - Fix a potential denial of service caused by accepting arbitrary > length primes as potential elliptic curve parameters in ASN.1 > encodings. With very large inputs the primality verification > can become computationally expensive. Now any prime field larger > than 1024 bits is rejected immediately. > https://botan.randombit.net/news.html#version-3-3-0-2024-02-20 > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Fri May 3 07:09:43 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Fri, 03 May 2024 09:09:43 +0200 Subject: [Buildroot] [PATCH 1/1] package/wolfssl: security bump to version 5.7.0 In-Reply-To: <20240407170706.2785735-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sun, 7 Apr 2024 19:07:06 +0200") References: <20240407170706.2785735-1-fontaine.fabrice@gmail.com> Message-ID: <874jbf4big.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > Vulnerabilities > - [High] CVE-2024-0901 Potential denial of service and out of bounds > read. Affects TLS 1.3 on the server side when accepting a connection > from a malicious TLS 1.3 client. If using TLS 1.3 on the server side > it is recommended to update the version of wolfSSL used. > - [Med] CVE-2024-1545 Fault Injection vulnerability in > RsaPrivateDecryption function that potentially allows an attacker > that has access to the same system with a victims process to perform > a Rowhammer fault injection. > - [Med] Fault injection attack with EdDSA signature operations. This > affects ed25519 sign operations where the system could be susceptible > to Rowhammer attacks. > No official tarball provided so switch to github and set autoreconf > https://github.com/wolfSSL/wolfssl/releases/tag/v5.7.0-stable > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Fri May 3 07:10:51 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Fri, 03 May 2024 09:10:51 +0200 Subject: [Buildroot] [PATCH 1/1] package/systemd: fix build with gcc >= 13 In-Reply-To: <20240407184152.3241588-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sun, 7 Apr 2024 20:41:52 +0200") References: <20240407184152.3241588-1-fontaine.fabrice@gmail.com> Message-ID: <87zft72ww4.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > Fix the following build failure with gcc >= 13: > In file included from ../src/basic/macro.h:446, > from ../src/basic/alloc-util.h:10, > from ../src/shared/install.c:12: > ../src/shared/install.c: In function ?install_changes_dump?: > ../src/shared/install.c:444:64: error: ?%s? directive argument is null [-Werror=format-overflow=] > 444 | err = log_error_errno(changes[i].type, "Failed to %s unit, unit %s does not exist.", > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > Fixes: > - http://autobuild.buildroot.org/results/e0d6b7d41fefec539a17a3ef5c89c192ce29fd04 > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Fri May 3 07:11:16 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Fri, 03 May 2024 09:11:16 +0200 Subject: [Buildroot] [PATCH 1/1] package/oprofile: drop unrecognized option In-Reply-To: <20240407184907.3245610-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sun, 7 Apr 2024 20:49:07 +0200") References: <20240407184907.3245610-1-fontaine.fabrice@gmail.com> Message-ID: <87v83v2wvf.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > --enable-gui is unrecognized since bump to version 1.0.0 in commit > 7f7dc71cc8545dacf23f9a25f33c184d15bed65c and > https://github.com/wcohen/oprofile/commit/0c142c3a096d3e9ec42cc9b0ddad994fea60d135: > configure: WARNING: unrecognized options: --disable-gtk-doc, > --disable-gtk-doc-html, --disable-doc, --disable-docs, > --disable-documentation, --with-xmlto, --with-fop, --enable-ipv6, > --disable-nls, --enable-gui > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Fri May 3 07:12:17 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Fri, 03 May 2024 09:12:17 +0200 Subject: [Buildroot] [PATCH 1/1] package/opensc: openssl is optional, not mandatory In-Reply-To: <20240407192944.3335886-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sun, 7 Apr 2024 21:29:44 +0200") References: <20240407192944.3335886-1-fontaine.fabrice@gmail.com> Message-ID: <87r0ej2wtq.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > openssl is optional, not mandatory since the addition of the package in > commit 8aaa7ecbce1d10cbcd880c3da5e429988f96176a > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Fri May 3 07:11:08 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Fri, 3 May 2024 09:11:08 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/oprofile: drop unrecognized option Message-ID: <20240503071321.3746E86526@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=98a1ed7ae3557ac2522f48c23b21a65708630720 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x --enable-gui is unrecognized since bump to version 1.0.0 in commit 7f7dc71cc8545dacf23f9a25f33c184d15bed65c and https://github.com/wcohen/oprofile/commit/0c142c3a096d3e9ec42cc9b0ddad994fea60d135: configure: WARNING: unrecognized options: --disable-gtk-doc, --disable-gtk-doc-html, --disable-doc, --disable-docs, --disable-documentation, --with-xmlto, --with-fop, --enable-ipv6, --disable-nls, --enable-gui Signed-off-by: Fabrice Fontaine Signed-off-by: Arnout Vandecappelle (cherry picked from commit caf3f7fb5dc289c0c25254af78dc655687ad4bec) Signed-off-by: Peter Korsgaard --- package/oprofile/oprofile.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/package/oprofile/oprofile.mk b/package/oprofile/oprofile.mk index 265d6ebd18..512fbf9ea1 100644 --- a/package/oprofile/oprofile.mk +++ b/package/oprofile/oprofile.mk @@ -11,7 +11,6 @@ OPROFILE_LICENSE_FILES = COPYING OPROFILE_CPE_ID_VENDOR = maynard_johnson OPROFILE_CONF_OPTS = \ --disable-account-check \ - --enable-gui=no \ --with-kernel=$(STAGING_DIR)/usr OPROFILE_DEPENDENCIES = popt binutils host-pkgconf From peter at korsgaard.com Fri May 3 07:12:05 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Fri, 3 May 2024 09:12:05 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/opensc: openssl is optional, not mandatory Message-ID: <20240503071321.41E238652D@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=2ebf2a85c0fe64384660def2621e37d7ee04c603 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x openssl is optional, not mandatory since the addition of the package in commit 8aaa7ecbce1d10cbcd880c3da5e429988f96176a Signed-off-by: Fabrice Fontaine Signed-off-by: Arnout Vandecappelle (cherry picked from commit b097ed3a4b32c074130c4f4c6b97ce9983fa675a) Signed-off-by: Peter Korsgaard --- package/opensc/Config.in | 1 - package/opensc/opensc.mk | 9 ++++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/package/opensc/Config.in b/package/opensc/Config.in index 8c6a95a41d..13b085f389 100644 --- a/package/opensc/Config.in +++ b/package/opensc/Config.in @@ -5,7 +5,6 @@ config BR2_PACKAGE_OPENSC depends on BR2_USE_MMU # fork() depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # pcsc-lite select BR2_PACKAGE_PCSC_LITE - select BR2_PACKAGE_OPENSSL select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL select BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160 if BR2_PACKAGE_LIBOPENSSL help diff --git a/package/opensc/opensc.mk b/package/opensc/opensc.mk index aa82bd18da..f4dc2206ea 100644 --- a/package/opensc/opensc.mk +++ b/package/opensc/opensc.mk @@ -9,8 +9,15 @@ OPENSC_SITE = https://github.com/OpenSC/OpenSC/releases/download/$(OPENSC_VERSIO OPENSC_LICENSE = LGPL-2.1+ OPENSC_LICENSE_FILES = COPYING OPENSC_CPE_ID_VALID = YES -OPENSC_DEPENDENCIES = openssl pcsc-lite +OPENSC_DEPENDENCIES = pcsc-lite OPENSC_INSTALL_STAGING = YES OPENSC_CONF_OPTS = --disable-cmocka --disable-strict --disable-tests +ifeq ($(BR2_PACKAGE_OPENSSL),y) +OPENSC_DEPENDENCIES += openssl +OPENSC_CONF_OPTS += --enable-openssl +else +OPENSC_CONF_OPTS += --disable-openssl +endif + $(eval $(autotools-package)) From peter at korsgaard.com Fri May 3 07:08:21 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Fri, 3 May 2024 09:08:21 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/botan: security bump to version 3.3.0 Message-ID: <20240503071321.1C5A08637F@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=8c2144727c93b8dc209c95825b36fdbfaf3b641d branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x - Fix a potential denial of service caused by accepting arbitrary length primes as potential elliptic curve parameters in ASN.1 encodings. With very large inputs the primality verification can become computationally expensive. Now any prime field larger than 1024 bits is rejected immediately. https://botan.randombit.net/news.html#version-3-3-0-2024-02-20 Signed-off-by: Fabrice Fontaine Signed-off-by: Arnout Vandecappelle (cherry picked from commit 2fcc74594c457bed7f0f2a4826ada265861be6bf) Signed-off-by: Peter Korsgaard --- package/botan/botan.hash | 2 +- package/botan/botan.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/botan/botan.hash b/package/botan/botan.hash index 840191aa4b..37e00ea9cc 100644 --- a/package/botan/botan.hash +++ b/package/botan/botan.hash @@ -1,4 +1,4 @@ # From https://botan.randombit.net/releases/sha256sums.txt -sha256 049c847835fcf6ef3a9e206b33de05dd38999c325e247482772a5598d9e5ece3 Botan-3.2.0.tar.xz +sha256 368f11f426f1205aedb9e9e32368a16535dc11bd60351066e6f6664ec36b85b9 Botan-3.3.0.tar.xz # Locally computed sha256 1833cde7c7cc03296b1ef2ddc178b1cd7fd1c476840f32cf6aedb09ab0bc9004 license.txt diff --git a/package/botan/botan.mk b/package/botan/botan.mk index 95352ea41b..e0bd258f57 100644 --- a/package/botan/botan.mk +++ b/package/botan/botan.mk @@ -4,7 +4,7 @@ # ################################################################################ -BOTAN_VERSION = 3.2.0 +BOTAN_VERSION = 3.3.0 BOTAN_SOURCE = Botan-$(BOTAN_VERSION).tar.xz BOTAN_SITE = http://botan.randombit.net/releases BOTAN_LICENSE = BSD-2-Clause From peter at korsgaard.com Fri May 3 07:07:47 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Fri, 3 May 2024 09:07:47 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/wolfssl: security bump to version 5.7.0 Message-ID: <20240503071321.08325864F6@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=bb94d3d0fba4d59c43c19c3a00df909831e1a7af branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Vulnerabilities - [High] CVE-2024-0901 Potential denial of service and out of bounds read. Affects TLS 1.3 on the server side when accepting a connection from a malicious TLS 1.3 client. If using TLS 1.3 on the server side it is recommended to update the version of wolfSSL used. - [Med] CVE-2024-1545 Fault Injection vulnerability in RsaPrivateDecryption function that potentially allows an attacker that has access to the same system with a victims process to perform a Rowhammer fault injection. - [Med] Fault injection attack with EdDSA signature operations. This affects ed25519 sign operations where the system could be susceptible to Rowhammer attacks. No official tarball provided so switch to github and set autoreconf https://github.com/wolfSSL/wolfssl/releases/tag/v5.7.0-stable Signed-off-by: Fabrice Fontaine Signed-off-by: Arnout Vandecappelle (cherry picked from commit 3a2891621c35fea394b135256c7a0846ece442aa) Signed-off-by: Peter Korsgaard --- package/wolfssl/wolfssl.hash | 2 +- package/wolfssl/wolfssl.mk | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/package/wolfssl/wolfssl.hash b/package/wolfssl/wolfssl.hash index 59e42e98b9..e705bba9fd 100644 --- a/package/wolfssl/wolfssl.hash +++ b/package/wolfssl/wolfssl.hash @@ -1,5 +1,5 @@ # Locally computed: -sha256 75aaafe3b8c776d1ac417288116c8d444115f9fac5acb382a39a7d163dfd618d wolfssl-5.6.6.tar.gz +sha256 2de93e8af588ee856fe67a6d7fce23fc1b226b74d710b0e3946bc8061f6aa18f wolfssl-5.7.0.tar.gz # Hash for license files: sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/wolfssl/wolfssl.mk b/package/wolfssl/wolfssl.mk index 68c69afd59..893408eca4 100644 --- a/package/wolfssl/wolfssl.mk +++ b/package/wolfssl/wolfssl.mk @@ -4,14 +4,16 @@ # ################################################################################ -WOLFSSL_VERSION = 5.6.6 -WOLFSSL_SITE = https://github.com/wolfSSL/wolfssl/releases/download/v$(WOLFSSL_VERSION)-stable +WOLFSSL_VERSION = 5.7.0 +WOLFSSL_SITE = $(call github,wolfSSL,wolfssl,v$(WOLFSSL_VERSION)-stable) WOLFSSL_INSTALL_STAGING = YES WOLFSSL_LICENSE = GPL-2.0+ WOLFSSL_LICENSE_FILES = COPYING LICENSING WOLFSSL_CPE_ID_VENDOR = wolfssl WOLFSSL_CONFIG_SCRIPTS = wolfssl-config +# From git +WOLFSSL_AUTORECONF = YES WOLFSSL_DEPENDENCIES = host-pkgconf WOLFSSL_CONF_OPTS = --disable-examples --disable-crypttests From peter at korsgaard.com Fri May 3 07:10:15 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Fri, 3 May 2024 09:10:15 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/systemd: fix build with gcc >= 13 Message-ID: <20240503071321.2BC03864FA@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=04b72604bc0c96b2a78fe90b46c165d1808ab460 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Fix the following build failure with gcc >= 13: In file included from ../src/basic/macro.h:446, from ../src/basic/alloc-util.h:10, from ../src/shared/install.c:12: ../src/shared/install.c: In function ???install_changes_dump???: ../src/shared/install.c:444:64: error: ???%s??? directive argument is null [-Werror=format-overflow=] 444 | err = log_error_errno(changes[i].type, "Failed to %s unit, unit %s does not exist.", | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Fixes: - http://autobuild.buildroot.org/results/e0d6b7d41fefec539a17a3ef5c89c192ce29fd04 Signed-off-by: Fabrice Fontaine Signed-off-by: Arnout Vandecappelle (cherry picked from commit 066c3e67d7f117f7810597e1ab36e2346fe8f7c2) Signed-off-by: Peter Korsgaard --- ...er-warning-about-empty-directive-argument.patch | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/package/systemd/0001-install-fix-compiler-warning-about-empty-directive-argument.patch b/package/systemd/0001-install-fix-compiler-warning-about-empty-directive-argument.patch new file mode 100644 index 0000000000..9408a6da0e --- /dev/null +++ b/package/systemd/0001-install-fix-compiler-warning-about-empty-directive-argument.patch @@ -0,0 +1,45 @@ +From 8040fa55a1cbc34dede3205a902095ecd26c21e3 Mon Sep 17 00:00:00 2001 +From: Luca Boccassi +Date: Sat, 24 Feb 2024 12:05:44 +0000 +Subject: [PATCH] install: fix compiler warning about empty directive argument +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +On ppc64el with gcc 13.2 on Ubuntu 24.04: + +3s In file included from ../src/basic/macro.h:386, +483s from ../src/basic/alloc-util.h:10, +483s from ../src/shared/install.c:12: +483s ../src/shared/install.c: In function ???install_changes_dump???: +483s ../src/shared/install.c:432:64: error: ???%s??? directive argument is null [-Werror=format-overflow=] +483s 432 | err = log_error_errno(changes[i].type, "Failed to %s unit, unit %s does not exist.", +483s | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +483s ../src/shared/install.c:432:75: note: format string is defined here +483s 432 | err = log_error_errno(changes[i].type, "Failed to %s unit, unit %s does not exist.", + +Upstream: https://github.com/systemd/systemd/commit/8040fa55a1cbc34dede3205a902095ecd26c21e3 +Signed-off-by: Fabrice Fontaine +--- + src/shared/install.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/src/shared/install.c b/src/shared/install.c +index fabf5db7ed2e1..c3a94d1912165 100644 +--- a/src/shared/install.c ++++ b/src/shared/install.c +@@ -340,9 +340,12 @@ void install_changes_dump(int r, const char *verb, const InstallChange *changes, + assert(verb || r >= 0); + + for (size_t i = 0; i < n_changes; i++) { +- if (changes[i].type < 0) +- assert(verb); + assert(changes[i].path); ++ /* This tries to tell the compiler that it's safe to use 'verb' in a string format if there ++ * was an error, but the compiler doesn't care and fails anyway, so strna(verb) is used ++ * too. */ ++ assert(verb || changes[i].type >= 0); ++ verb = strna(verb); + + /* When making changes here, make sure to also change install_error() in dbus-manager.c. */ + From stefan.mueller at rey-technology.com Fri May 3 07:42:42 2024 From: stefan.mueller at rey-technology.com (=?iso-8859-1?Q?Stefan_M=FCller?=) Date: Fri, 3 May 2024 07:42:42 +0000 Subject: [Buildroot] question: used wrong librarys to build packages Message-ID: Hi guys how is it possible that buildroot builds packages and links them against libraries that do not exist in buildroot (only on the host system, not below the buildroot directory)? - i am a bit confused now. i downloaded buildroot 2024.02.01 and just copied my configs into it. many of the built packages are now linked against libssl.so.1.1 (but buidroot uses openssl 3): example: build at build:~/buildroot/output/target/usr/sbin$ ldd NetworkManager ./NetworkManager: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by ./NetworkManager) ./NetworkManager: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./NetworkManager) ./NetworkManager: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by ./NetworkManager) ./NetworkManager: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by ./NetworkManager) linux-vdso.so.1 (0x00007ffe9f755000) libgio-2.0.so.0 => /lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x00007f2b90e93000) ... libssh.so.4 => /lib/x86_64-linux-gnu/libssh.so.4 (0x00007f2b9040d000) libpsl.so.5 => /lib/x86_64-linux-gnu/libpsl.so.5 (0x00007f2b903fa000) libssl.so.1.1 => /lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007f2b90367000) libcrypto.so.1.1 => /lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007f2b90090000) but: build at build:~/buildroot/output/target/usr/sbin$ find ../../../host/ -name libssl* ../../../host/x86_64-buildroot-linux-gnu/sysroot/usr/lib/pkgconfig/libssl.pc ../../../host/x86_64-buildroot-linux-gnu/sysroot/usr/lib/libssl.so.3 ../../../host/x86_64-buildroot-linux-gnu/sysroot/usr/lib/libssl.so ../../../host/x86_64-buildroot-linux-gnu/sysroot/usr/lib/libssl.a ../../../host/lib/pkgconfig/libssl.pc ../../../host/lib/libssl.so.3 ../../../host/lib/libssl.so ../../../host/lib/libssl.a build at build:~/buildroot/output/target/usr/sbin$ and (host system that runs buildroot): build at build:~/buildroot/output/target/usr/sbin$ find /usr -name libssl* /usr/lib/x86_64-linux-gnu/pkgconfig/libssl.pc /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/x86_64-linux-gnu/libssl.so.1.1 /usr/lib/x86_64-linux-gnu/libssl.a /usr/lib/x86_64-linux-gnu/libssl3.so /usr/share/doc/libssl1.1 /usr/share/doc/libssl-dev build at build:~/buildroot/output/target/usr/sbin$ shouldn't buildroot use the libraries that are inside the buildroot directory? Can anyone help me find out what is wrong? thanks -------------- next part -------------- An HTML attachment was scrubbed... URL: From bagasdotme at gmail.com Fri May 3 09:55:13 2024 From: bagasdotme at gmail.com (Bagas Sanjaya) Date: Fri, 3 May 2024 16:55:13 +0700 Subject: [Buildroot] [PATCH] package/git: bump to version 2.45.0 Message-ID: <20240503095512.346271-2-bagasdotme@gmail.com> Bump the package version to 2.45.0. Release notes: https://lore.kernel.org/git/xmqq8r0ww0sj.fsf at gitster.g/ Signed-off-by: Bagas Sanjaya --- package/git/git.hash | 2 +- package/git/git.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/git/git.hash b/package/git/git.hash index f609a4aaa4..2e54945a40 100644 --- a/package/git/git.hash +++ b/package/git/git.hash @@ -1,5 +1,5 @@ # From: https://www.kernel.org/pub/software/scm/git/sha256sums.asc -sha256 e358738dcb5b5ea340ce900a0015c03ae86e804e7ff64e47aa4631ddee681de3 git-2.44.0.tar.xz +sha256 0aac200bd06476e7df1ff026eb123c6827bc10fe69d2823b4bf2ebebe5953429 git-2.45.0.tar.xz # Locally calculated sha256 5b2198d1645f767585e8a88ac0499b04472164c0d2da22e75ecf97ef443ab32e COPYING sha256 1922f45d2c49e390032c9c0ba6d7cac904087f7cec51af30c2b2ad022ce0e76a LGPL-2.1 diff --git a/package/git/git.mk b/package/git/git.mk index a9cc3c30a7..b6a7ec0cbb 100644 --- a/package/git/git.mk +++ b/package/git/git.mk @@ -4,7 +4,7 @@ # ################################################################################ -GIT_VERSION = 2.44.0 +GIT_VERSION = 2.45.0 GIT_SOURCE = git-$(GIT_VERSION).tar.xz GIT_SITE = $(BR2_KERNEL_MIRROR)/software/scm/git GIT_LICENSE = GPL-2.0, LGPL-2.1+ base-commit: 929bffbf4bf8fcb91bda446777f907f32c782656 -- An old man doll... just what I always wanted! - Clara From mail-server at busybox.net Fri May 3 11:01:20 2024 From: mail-server at busybox.net (busybox.net) Date: 3 May 2024 04:01:20 -0700 Subject: [Buildroot] Sheduled Maintenance and Upgrading Notification for buildroot@busybox.net Message-ID: <20240503040120.7C0D9CF8249EFD57@busybox.net> test -------------- next part -------------- An HTML attachment was scrubbed... URL: From mail-server at uclibc.org Fri May 3 11:01:20 2024 From: mail-server at uclibc.org (uclibc.org) Date: 3 May 2024 04:01:20 -0700 Subject: [Buildroot] Sheduled Maintenance and Upgrading Notification for buildroot@uclibc.org Message-ID: <20240503040120.147333C8AD0E9DC1@uclibc.org> test -------------- next part -------------- An HTML attachment was scrubbed... URL: From yann.morin.1998 at free.fr Fri May 3 15:32:14 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 3 May 2024 17:32:14 +0200 Subject: [Buildroot] question: used wrong librarys to build packages In-Reply-To: References: Message-ID: Stefan, All, On 2024-05-03 07:42 +0000, Stefan M?ller via buildroot spake thusly: > how is it possible that buildroot builds packages and links them against > libraries that do not exist in buildroot (only on the host system, not below > the buildroot directory)? - i am a bit confused now. > > i downloaded buildroot 2024.02.01 and just copied my configs into it. > > many of the built packages are now linked against libssl.so.1.1 (but buidroot > uses openssl 3): > > example: > > build at build:~/buildroot/output/target/usr/sbin$ ldd NetworkManager Using the host 'ldd' does not work on target binaries, becasue it does not know that they are not meant for the current machine. In fact, 'ldd' is just a glorified wrapper that basically is equivlanet to actually running the file with LD_TRACE_LOADED_OBJECTS=1 in the environment: $ ldd /usr/bin/ls linux-vdso.so.1 (0x00007fff02d31000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f5f9564b000) libcap.so.2 => /lib64/libcap.so.2 (0x00007f5f95641000) libc.so.6 => /lib64/libc.so.6 (0x00007f5f9545f000) libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007f5f953c4000) /lib64/ld-linux-x86-64.so.2 (0x00007f5f956b6000) $ LD_TRACE_LOADED_OBJECTS=1 /usr/bin/ls linux-vdso.so.1 (0x00007fff0c345000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f7dc1b2c000) libcap.so.2 => /lib64/libcap.so.2 (0x00007f7dc1b22000) libc.so.6 => /lib64/libc.so.6 (0x00007f7dc1940000) libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007f7dc18a5000) /lib64/ld-linux-x86-64.so.2 (0x00007f7dc1b71000) So you can't use ldd on target executables: it won't work. Also, using ldd is really a bad idea, as it is basically equivalent to actually running the program you're inspecting; don't do it. Instead use readelf to inspect a program: $ readelf -d /usr/bin/ls Dynamic section at offset 0x229d8 contains 29 entries: Tag Type Name/Value 0x0000000000000001 (NEEDED) Shared library: [libselinux.so.1] 0x0000000000000001 (NEEDED) Shared library: [libcap.so.2] 0x0000000000000001 (NEEDED) Shared library: [libc.so.6] [...] $ readelf -p .interp /usr/bin/ls String dump of section '.interp': [ 0] /lib64/ld-linux-x86-64.so.2 > ./NetworkManager: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not > found (required by ./NetworkManager) As you can see: 1. it uses your host system interpreter, /lib/x86_64-linux-gnu/libc.so.6 2. it reports unknown versioned symbols, presumably because your system uses an older glibc than your target system. > shouldn't buildroot use the libraries that are inside the buildroot directory? It does, but you are using the wrong tools to check. > Can anyone help me find out what is wrong? I hope the above is providing enough hints at how to look. Regards, Yann E. MORIN. -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From julien.boibessot at armadeus.com Fri May 3 15:48:54 2024 From: julien.boibessot at armadeus.com (Julien BOIBESSOT) Date: Fri, 3 May 2024 17:48:54 +0200 Subject: [Buildroot] [PATCH 1/3] configs/armadeus_apf27: add hashes for Linux/U-Boot Message-ID: <20240503154856.763551-1-julien.boibessot@armadeus.com> And enable BR2_DOWNLOAD_FORCE_CHECK_HASHES. As asked By Romain. Signed-off-by: Julien BOIBESSOT --- board/armadeus/patches/linux-headers/linux-headers.hash | 1 + board/armadeus/patches/linux/linux.hash | 2 ++ board/armadeus/patches/uboot/uboot.hash | 2 ++ configs/armadeus_apf27_defconfig | 4 ++++ 4 files changed, 9 insertions(+) create mode 120000 board/armadeus/patches/linux-headers/linux-headers.hash create mode 100644 board/armadeus/patches/linux/linux.hash create mode 100644 board/armadeus/patches/uboot/uboot.hash diff --git a/board/armadeus/patches/linux-headers/linux-headers.hash b/board/armadeus/patches/linux-headers/linux-headers.hash new file mode 120000 index 0000000000..5808d92afe --- /dev/null +++ b/board/armadeus/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/armadeus/patches/linux/linux.hash b/board/armadeus/patches/linux/linux.hash new file mode 100644 index 0000000000..804920c10d --- /dev/null +++ b/board/armadeus/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 879ca159c34ea9d3a6775f292cc59c2d3931d57dca00f0bebe2675ea0c82c6a9 linux-5.10.215.tar.xz diff --git a/board/armadeus/patches/uboot/uboot.hash b/board/armadeus/patches/uboot/uboot.hash new file mode 100644 index 0000000000..777e0adab2 --- /dev/null +++ b/board/armadeus/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 839bf23cfe8ce613a77e583a60375179d0ad324e92c82fbdd07bebf0fd142268 u-boot-2018.09.tar.bz2 diff --git a/configs/armadeus_apf27_defconfig b/configs/armadeus_apf27_defconfig index a87d319729..782587e410 100644 --- a/configs/armadeus_apf27_defconfig +++ b/configs/armadeus_apf27_defconfig @@ -5,6 +5,10 @@ BR2_arm926t=y # Linux headers same as kernel, a 5.10 series BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +# Build +BR2_GLOBAL_PATCH_DIR="board/armadeus/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + # System BR2_TARGET_GENERIC_HOSTNAME="apf27" BR2_TARGET_GENERIC_ISSUE="Welcome to Armadeus development platform !" -- 2.25.1 From julien.boibessot at armadeus.com Fri May 3 15:48:55 2024 From: julien.boibessot at armadeus.com (Julien BOIBESSOT) Date: Fri, 3 May 2024 17:48:55 +0200 Subject: [Buildroot] [PATCH 2/3] configs/armadeus_apf28: activates BR2_DOWNLOAD_FORCE_CHECK_HASHES In-Reply-To: <20240503154856.763551-1-julien.boibessot@armadeus.com> References: <20240503154856.763551-1-julien.boibessot@armadeus.com> Message-ID: <20240503154856.763551-2-julien.boibessot@armadeus.com> As asked by Romain. Armadeus boards share same Linux hashes. Signed-off-by: Julien BOIBESSOT --- configs/armadeus_apf28_defconfig | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/configs/armadeus_apf28_defconfig b/configs/armadeus_apf28_defconfig index 5207cf674c..4ff79dd012 100644 --- a/configs/armadeus_apf28_defconfig +++ b/configs/armadeus_apf28_defconfig @@ -5,6 +5,10 @@ BR2_arm926t=y # Linux headers same as kernel, a 5.10 series BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +# Build +BR2_GLOBAL_PATCH_DIR="board/armadeus/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + # System BR2_TARGET_GENERIC_HOSTNAME="apf28" BR2_TARGET_GENERIC_ISSUE="Welcome to Armadeus development platform !" -- 2.25.1 From julien.boibessot at armadeus.com Fri May 3 15:48:56 2024 From: julien.boibessot at armadeus.com (Julien BOIBESSOT) Date: Fri, 3 May 2024 17:48:56 +0200 Subject: [Buildroot] [PATCH 3/3] configs/armadeus_apf51: activates BR2_DOWNLOAD_FORCE_CHECK_HASHES In-Reply-To: <20240503154856.763551-1-julien.boibessot@armadeus.com> References: <20240503154856.763551-1-julien.boibessot@armadeus.com> Message-ID: <20240503154856.763551-3-julien.boibessot@armadeus.com> As asked by Romain. Armadeus boards share Linux hashes. Signed-off-by: Julien BOIBESSOT --- configs/armadeus_apf51_defconfig | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/configs/armadeus_apf51_defconfig b/configs/armadeus_apf51_defconfig index af4562ce0f..8317dd7b8b 100644 --- a/configs/armadeus_apf51_defconfig +++ b/configs/armadeus_apf51_defconfig @@ -5,6 +5,10 @@ BR2_cortex_a8=y # Linux headers same as kernel, a 5.10 series BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +# Build +BR2_GLOBAL_PATCH_DIR="board/armadeus/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + # System BR2_TARGET_GENERIC_HOSTNAME="apf51" BR2_TARGET_GENERIC_ISSUE="Welcome to Armadeus development platform !" -- 2.25.1 From account-security-noreply at busybox.net Fri May 3 16:47:00 2024 From: account-security-noreply at busybox.net (Mail account team) Date: 3 May 2024 19:47:00 +0300 Subject: [Buildroot] Mail account password change Message-ID: <20240503194659.C64A92651DC9B218@busybox.net> An HTML attachment was scrubbed... URL: From fontaine.fabrice at gmail.com Fri May 3 18:31:32 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Fri, 3 May 2024 20:31:32 +0200 Subject: [Buildroot] [PATCH 1/1] package/libglib2: update atomic patch Message-ID: <20240503183132.915691-1-fontaine.fabrice@gmail.com> Commit 929bffbf4bf8fcb91bda446777f907f32c782656 forgot to update patch number Moreover, replace it with a new iteration to follow upstream request [1] and avoid the following build host build failure with br-autobuild-1: /usr/bin/ld: cannot find /usr/lib64/libatomic.so.1.2.0: No such file or directory Fixes: 929bffbf4bf8fcb91bda446777f907f32c782656 - http://autobuild.buildroot.org/results/a12b9c4436594818f4ce128595b429adf7d90e31 [1]: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3606 Signed-off-by: Fabrice Fontaine --- .../0005-link-with-latomic-when-needed.patch | 45 ---------------- .../0006-link-with-latomic-when-needed.patch | 52 +++++++++++++++++++ 2 files changed, 52 insertions(+), 45 deletions(-) delete mode 100644 package/libglib2/0005-link-with-latomic-when-needed.patch create mode 100644 package/libglib2/0006-link-with-latomic-when-needed.patch diff --git a/package/libglib2/0005-link-with-latomic-when-needed.patch b/package/libglib2/0005-link-with-latomic-when-needed.patch deleted file mode 100644 index 275d86032b..0000000000 --- a/package/libglib2/0005-link-with-latomic-when-needed.patch +++ /dev/null @@ -1,45 +0,0 @@ -From d1814dbd3a88c95a43d4c9805bb4a523cf62d97b Mon Sep 17 00:00:00 2001 -From: Fabrice Fontaine -Date: Sun, 17 Sep 2023 20:42:00 +0200 -Subject: [PATCH] link with -latomic when needed - -Some architecture such as sparc and some flavors of arm needs -latomic -to avoid the following build failure: - -gthread-posix.c:(.text+0xda8): undefined reference to `__atomic_compare_exchange_4' - -Signed-off-by: Fabrice Fontaine -Upstream: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3586 ---- - glib/meson.build | 1 + - meson.build | 2 ++ - 2 files changed, 3 insertions(+) - -diff --git a/glib/meson.build b/glib/meson.build -index c26a35e42..7a761306b 100644 ---- a/glib/meson.build -+++ b/glib/meson.build -@@ -426,6 +426,7 @@ libglib = library('glib-2.0', - pcre2, - platform_deps, - thread_dep, -+ atomic_dep - ], - c_args : glib_c_args, - objc_args : glib_c_args, -diff --git a/meson.build b/meson.build -index 25ae10fc2..5ae84b3b3 100644 ---- a/meson.build -+++ b/meson.build -@@ -2130,6 +2130,8 @@ libffi_dep = dependency('libffi', version : '>= 3.0.0') - - libz_dep = dependency('zlib') - -+atomic_dep = cc.find_library('atomic', required: false) -+ - # First check in libc, fallback to libintl, and as last chance build - # proxy-libintl subproject. - # FIXME: glib-gettext.m4 has much more checks to detect broken/uncompatible --- -2.40.1 - diff --git a/package/libglib2/0006-link-with-latomic-when-needed.patch b/package/libglib2/0006-link-with-latomic-when-needed.patch new file mode 100644 index 0000000000..5ac0744cbf --- /dev/null +++ b/package/libglib2/0006-link-with-latomic-when-needed.patch @@ -0,0 +1,52 @@ +From 4e6dc4dee0e1c6407113597180d9616b4f275f94 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 2 May 2024 14:02:17 +0200 +Subject: [PATCH] link with -latomic when needed + +Some architecture such as sparc and some flavors of arm needs -latomic +to avoid the following build failure: + +gthread-posix.c:(.text+0xda8): undefined reference to `__atomic_compare_exchange_4' + +Signed-off-by: Fabrice Fontaine +Upstream: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/4034 +--- + glib/meson.build | 1 + + meson.build | 9 +++++++++ + 2 files changed, 10 insertions(+) + +diff --git a/glib/meson.build b/glib/meson.build +index 24cbb664d..b2dd569e1 100644 +--- a/glib/meson.build ++++ b/glib/meson.build +@@ -419,6 +419,7 @@ libglib = library('glib-2.0', + include_directories : configinc, + link_with: [charset_lib, gnulib_lib], + dependencies : [ ++ atomic_dep, + gnulib_libm_dependency, + libiconv, + libintl_deps, +diff --git a/meson.build b/meson.build +index 46c5aa200..8b4294055 100644 +--- a/meson.build ++++ b/meson.build +@@ -2233,6 +2233,15 @@ libffi_dep = dependency('libffi', version : '>= 3.0.0') + + libz_dep = dependency('zlib') + ++libatomic_test_code = ''' ++ int main (int argc, char ** argv) { ++ return 0; ++ }''' ++atomic_dep = [] ++if cc.links(libatomic_test_code, args : '-latomic', name : 'check for -latomic') ++ atomic_dep = cc.find_library('atomic') ++endif ++ + # First check in libc, fallback to libintl, and as last chance build + # proxy-libintl subproject. + # FIXME: glib-gettext.m4 has much more checks to detect broken/uncompatible +-- +2.43.0 + -- 2.43.0 From fontaine.fabrice at gmail.com Fri May 3 18:50:08 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Fri, 3 May 2024 20:50:08 +0200 Subject: [Buildroot] [PATCH 1/1] package/gptfdisk: bump to version 1.0.10 Message-ID: <20240503185008.930881-1-fontaine.fabrice@gmail.com> Drop second to fourth patches (already in version) https://sourceforge.net/p/gptfdisk/code/ci/53ac725a88a616b9f3395500d6e520aa04742fa5/tree/NEWS Signed-off-by: Fabrice Fontaine --- .checkpackageignore | 1 - ...h-of-sgdisk-when-compiled-with-lates.patch | 60 ------------------- ...ence-when-duplicating-string-argumen.patch | 44 -------------- ...to-deal-with-minor-change-in-libuuid.patch | 41 ------------- package/gptfdisk/gptfdisk.hash | 6 +- package/gptfdisk/gptfdisk.mk | 2 +- 6 files changed, 4 insertions(+), 150 deletions(-) delete mode 100644 package/gptfdisk/0002-Fix-failure-crash-of-sgdisk-when-compiled-with-lates.patch delete mode 100644 package/gptfdisk/0003-Fix-NULL-dereference-when-duplicating-string-argumen.patch delete mode 100644 package/gptfdisk/0004-Updated-guid.cc-to-deal-with-minor-change-in-libuuid.patch diff --git a/.checkpackageignore b/.checkpackageignore index c600978cf2..d809f3396b 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -765,7 +765,6 @@ package/gpm/0005-fix-building-w-newer-glibc.patch lib_patch.Upstream package/gpm/0006-src-headers-daemon.h-avoid-redefinition-of-last_sele.patch lib_patch.Upstream package/gpsd/S50gpsd Shellcheck lib_sysv.Indent lib_sysv.Variables package/gptfdisk/0001-gptcurses-partially-revert-Tweaks-for-building-on-th.patch lib_patch.Upstream -package/gptfdisk/0002-Fix-failure-crash-of-sgdisk-when-compiled-with-lates.patch lib_patch.Upstream package/graphite2/0001-don-t-install-a-libtool-file-with-static-library.patch lib_patch.Upstream package/grpc/0002-wrap_memcpy.cc-add-GPR_DISABLE_WRAPPED_MEMCPY.patch lib_patch.Upstream package/grpc/0003-host-grpc-only-cpp-plugin.patch lib_patch.Upstream diff --git a/package/gptfdisk/0002-Fix-failure-crash-of-sgdisk-when-compiled-with-lates.patch b/package/gptfdisk/0002-Fix-failure-crash-of-sgdisk-when-compiled-with-lates.patch deleted file mode 100644 index bdeedd95cc..0000000000 --- a/package/gptfdisk/0002-Fix-failure-crash-of-sgdisk-when-compiled-with-lates.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 5d5e76d369a412bfb3d2cebb5fc0a7509cef878d Mon Sep 17 00:00:00 2001 -From: Rod Smith -Date: Fri, 15 Apr 2022 18:10:14 -0400 -Subject: [PATCH] Fix failure & crash of sgdisk when compiled with latest - popt (commit 740; presumably eventually release 1.19) - -[Retrieved from: -https://sourceforge.net/p/gptfdisk/code/ci/5d5e76d369a412bfb3d2cebb5fc0a7509cef878d/] -Signed-off-by: Fabrice Fontaine ---- - NEWS | 8 ++++++++ - gptcl.cc | 2 +- - support.h | 2 +- - 3 files changed, 10 insertions(+), 2 deletions(-) - -diff --git a/NEWS b/NEWS -index c7add56..9e153fd 100644 ---- a/NEWS -+++ b/NEWS -@@ -1,3 +1,11 @@ -+1.0.10 (?/??/2022): -+------------------- -+ -+- Fixed problem that caused sgdisk to crash with errors about being unable -+ to read the disk's partition table when compiled with the latest popt -+ (commit 740, which is pre-release as I type; presumably version 1.19 and -+ later once released). -+ - 1.0.9 (4/14/2022): - ------------------ - -diff --git a/gptcl.cc b/gptcl.cc -index 34c9421..0d578eb 100644 ---- a/gptcl.cc -+++ b/gptcl.cc -@@ -155,7 +155,7 @@ int GPTDataCL::DoOptions(int argc, char* argv[]) { - } // while - - // Assume first non-option argument is the device filename.... -- device = (char*) poptGetArg(poptCon); -+ device = strdup((char*) poptGetArg(poptCon)); - poptResetContext(poptCon); - - if (device != NULL) { -diff --git a/support.h b/support.h -index 8ba9ad1..f91f1bc 100644 ---- a/support.h -+++ b/support.h -@@ -8,7 +8,7 @@ - #include - #include - --#define GPTFDISK_VERSION "1.0.9" -+#define GPTFDISK_VERSION "1.0.9.1" - - #if defined (__FreeBSD__) || defined (__FreeBSD_kernel__) || defined (__APPLE__) - // Darwin (Mac OS) & FreeBSD: disk IOCTLs are different, and there is no lseek64 --- -2.35.1 - diff --git a/package/gptfdisk/0003-Fix-NULL-dereference-when-duplicating-string-argumen.patch b/package/gptfdisk/0003-Fix-NULL-dereference-when-duplicating-string-argumen.patch deleted file mode 100644 index 250c071582..0000000000 --- a/package/gptfdisk/0003-Fix-NULL-dereference-when-duplicating-string-argumen.patch +++ /dev/null @@ -1,44 +0,0 @@ -From f5de3401b974ce103ffd93af8f9d43505a04aaf9 Mon Sep 17 00:00:00 2001 -Message-Id: -From: Damian Kurek -Date: Thu, 7 Jul 2022 03:39:16 +0000 -Subject: [PATCH] Fix NULL dereference when duplicating string argument - -poptGetArg can return NULL if there are no additional arguments, which -makes strdup dereference NULL on strlen - -Signed-off-by: Stefan Agner -Upstream: https://sourceforge.net/p/gptfdisk/code/ci/f5de3401b974ce103ffd93af8f9d43505a04aaf9 ---- - gptcl.cc | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/gptcl.cc b/gptcl.cc -index 0d578eb..ab95239 100644 ---- a/gptcl.cc -+++ b/gptcl.cc -@@ -155,10 +155,11 @@ int GPTDataCL::DoOptions(int argc, char* argv[]) { - } // while - - // Assume first non-option argument is the device filename.... -- device = strdup((char*) poptGetArg(poptCon)); -- poptResetContext(poptCon); -+ device = (char*) poptGetArg(poptCon); - - if (device != NULL) { -+ device = strdup(device); -+ poptResetContext(poptCon); - JustLooking(); // reset as necessary - BeQuiet(); // Tell called functions to be less verbose & interactive - if (LoadPartitions((string) device)) { -@@ -498,6 +499,7 @@ int GPTDataCL::DoOptions(int argc, char* argv[]) { - cerr << "Error encountered; not saving changes.\n"; - retval = 4; - } // if -+ free(device); - } // if (device != NULL) - poptFreeContext(poptCon); - return retval; --- -2.40.0 - diff --git a/package/gptfdisk/0004-Updated-guid.cc-to-deal-with-minor-change-in-libuuid.patch b/package/gptfdisk/0004-Updated-guid.cc-to-deal-with-minor-change-in-libuuid.patch deleted file mode 100644 index 22c34ced6f..0000000000 --- a/package/gptfdisk/0004-Updated-guid.cc-to-deal-with-minor-change-in-libuuid.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 6a8416cbd12d55f882bb751993b94f72d338d96f Mon Sep 17 00:00:00 2001 -From: Rod Smith -Date: Sat, 16 Apr 2022 09:32:04 -0400 -Subject: [PATCH] Updated guid.cc to deal with minor change in libuuid - -Upstream: https://sourceforge.net/p/gptfdisk/code/ci/6a8416cbd12d55f882bb751993b94f72d338d96f -Signed-off-by: Ben Wolsieffer ---- - NEWS | 2 ++ - guid.cc | 2 +- - 2 files changed, 3 insertions(+), 1 deletion(-) - -diff --git a/NEWS b/NEWS -index 9e153fd..9ec7e63 100644 ---- a/NEWS -+++ b/NEWS -@@ -6,6 +6,8 @@ - (commit 740, which is pre-release as I type; presumably version 1.19 and - later once released). - -+- Updated guid.cc to deal with minor change in libuuid. -+ - 1.0.9 (4/14/2022): - ------------------ - -diff --git a/guid.cc b/guid.cc -index 1e73ab7..d3e4fd5 100644 ---- a/guid.cc -+++ b/guid.cc -@@ -141,7 +141,7 @@ void GUIDData::Zero(void) { - void GUIDData::Randomize(void) { - int i, uuidGenerated = 0; - --#ifdef _UUID_UUID_H -+#if defined (_UUID_UUID_H) || defined (_UL_LIBUUID_UUID_H) - uuid_generate(uuidData); - ReverseBytes(&uuidData[0], 4); - ReverseBytes(&uuidData[4], 2); --- -2.42.0 - diff --git a/package/gptfdisk/gptfdisk.hash b/package/gptfdisk/gptfdisk.hash index 0b98677afb..14a8d59a08 100644 --- a/package/gptfdisk/gptfdisk.hash +++ b/package/gptfdisk/gptfdisk.hash @@ -1,5 +1,5 @@ -# From http://sourceforge.net/projects/gptfdisk/files/gptfdisk/1.0.9/ -sha1 284bd000edaf7874b472bd01719c6a71a8030e13 gptfdisk-1.0.9.tar.gz +# From http://sourceforge.net/projects/gptfdisk/files/gptfdisk/1.0.10/ +sha1 70c0bfe4290c2893fc957ef7f6156c5e74e469fc gptfdisk-1.0.10.tar.gz # Locally computed -sha256 dafead2693faeb8e8b97832b23407f6ed5b3219bc1784f482dd855774e2d50c2 gptfdisk-1.0.9.tar.gz +sha256 2abed61bc6d2b9ec498973c0440b8b804b7a72d7144069b5a9209b2ad693a282 gptfdisk-1.0.10.tar.gz sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING diff --git a/package/gptfdisk/gptfdisk.mk b/package/gptfdisk/gptfdisk.mk index 393ea9469a..b35899bf9b 100644 --- a/package/gptfdisk/gptfdisk.mk +++ b/package/gptfdisk/gptfdisk.mk @@ -4,7 +4,7 @@ # ################################################################################ -GPTFDISK_VERSION = 1.0.9 +GPTFDISK_VERSION = 1.0.10 GPTFDISK_SITE = http://downloads.sourceforge.net/sourceforge/gptfdisk GPTFDISK_LICENSE = GPL-2.0+ GPTFDISK_LICENSE_FILES = COPYING -- 2.43.0 From fontaine.fabrice at gmail.com Fri May 3 19:28:39 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Fri, 3 May 2024 21:28:39 +0200 Subject: [Buildroot] [PATCH 1/1] package/ledmon: bump to version 1.0.0 Message-ID: <20240503192840.1240802-1-fontaine.fabrice@gmail.com> - Add host-autoconf-archive mandatory dependency - Drop patches (already in version) https://github.com/intel/ledmon/releases/tag/v1.0.0 Signed-off-by: Fabrice Fontaine --- ...nstandard-on_exit-function-by-atexit.patch | 223 ------------------ ...-Fix-unknown-type-name-ssize_t-error.patch | 44 ---- .../ledmon/0003-Add-disable-doc-option.patch | 63 ----- package/ledmon/ledmon.hash | 2 +- package/ledmon/ledmon.mk | 7 +- 5 files changed, 5 insertions(+), 334 deletions(-) delete mode 100644 package/ledmon/0001-Replace-nonstandard-on_exit-function-by-atexit.patch delete mode 100644 package/ledmon/0002-Fix-unknown-type-name-ssize_t-error.patch delete mode 100644 package/ledmon/0003-Add-disable-doc-option.patch diff --git a/package/ledmon/0001-Replace-nonstandard-on_exit-function-by-atexit.patch b/package/ledmon/0001-Replace-nonstandard-on_exit-function-by-atexit.patch deleted file mode 100644 index 7a89c3f1a4..0000000000 --- a/package/ledmon/0001-Replace-nonstandard-on_exit-function-by-atexit.patch +++ /dev/null @@ -1,223 +0,0 @@ -From e57ad4c71cce734de7f8aa75e84fce97bc148c2b Mon Sep 17 00:00:00 2001 -From: Maksim Kiselev -Date: Mon, 15 May 2023 14:46:56 +0300 -Subject: [PATCH] Replace nonstandard on_exit() function by atexit() - -on_exit() is not portable and not available on the C libraries musl -and uClibc. - -So let's replace it with standard atexit() function. - -Upstream: https://github.com/intel/ledmon/pull/139 - -Signed-off-by: Maksim Kiselev ---- - src/ledctl.c | 12 ++++------- - src/ledmon.c | 59 +++++++++++++++++++++++++++------------------------- - 2 files changed, 35 insertions(+), 36 deletions(-) - -diff --git a/src/ledctl.c b/src/ledctl.c -index 7a89a24..10fd57a 100644 ---- a/src/ledctl.c -+++ b/src/ledctl.c -@@ -214,15 +214,11 @@ static void ibpi_state_fini(struct ibpi_state *p) - * - * This is internal function of ledctl utility. The function cleans up a memory - * allocated for the application and closes all opened handles. This function is -- * design to be registered as on_exit() handler function. -- * -- * @param[in] status exit status of the ledctl application. -- * @param[in] ignored function ignores this argument. -+ * design to be registered as atexit() handler function. - * - * @return The function does not return a value. - */ --static void _ledctl_fini(int status __attribute__ ((unused)), -- void *ignore __attribute__ ((unused))) -+static void _ledctl_fini(void) - { - sysfs_reset(); - list_erase(&ibpi_list); -@@ -948,7 +944,7 @@ static char *ledctl_strstatus(ledctl_status_code_t s) - * @brief Application's entry point. - * - * This is the entry point of ledctl utility. This function does all the work. -- * It allocates and initializes all used structures. Registers on_exit() -+ * It allocates and initializes all used structures. Registers atexit() - * handlers. - * Then the function parses command line options and commands given and scans - * sysfs tree for controllers, block devices and RAID devices. If no error is -@@ -983,7 +979,7 @@ int main(int argc, char *argv[]) - status = _init_ledctl_conf(); - if (status != LEDCTL_STATUS_SUCCESS) - return status; -- if (on_exit(_ledctl_fini, progname)) -+ if (atexit(_ledctl_fini)) - exit(LEDCTL_STATUS_ONEXIT_ERROR); - slot_request_init(&slot_req); - status = _cmdline_parse(argc, argv, &slot_req); -diff --git a/src/ledmon.c b/src/ledmon.c -index 6f52fd6..1329295 100644 ---- a/src/ledmon.c -+++ b/src/ledmon.c -@@ -57,6 +57,19 @@ - #include "utils.h" - #include "vmdssd.h" - -+/** -+ * This macro is the alternative way to get exit status -+ * in atexit() callback function -+ */ -+#define EXIT(x) ((exit)(exit_status = (x))) -+ -+static int exit_status; -+ -+/** -+ * Flag to print exit status -+ */ -+static int ignore; -+ - /** - * @brief List of active block devices. - * -@@ -151,20 +164,16 @@ static int possible_params_size = ARRAY_SIZE(possible_params); - * - * This is internal function of monitor service. It is used to finalize daemon - * process i.e. free allocated memory, unlock and remove pidfile and close log -- * file and syslog. The function is registered as on_exit() handler. -- * -- * @param[in] status The function ignores this parameter. -- * @param[in] program_name The name of the binary file. This argument -- * is passed via on_exit() function. -+ * file and syslog. The function is registered as atexit() handler. - * - * @return The function does not return a value. - */ --static void _ledmon_fini(int __attribute__ ((unused)) status, void *program_name) -+static void _ledmon_fini(void) - { - sysfs_reset(); - list_erase(&ledmon_block_list); - log_close(); -- pidfile_remove(program_name); -+ pidfile_remove(progname); - } - - typedef enum { -@@ -207,30 +216,25 @@ static char *ledmon_strstatus(ledmon_status_code_t s) - * - * This is internal function of monitor service. It is used to report an exit - * status of the monitor service. The message is logged in to syslog and to log -- * file. The function is registered as on_exit() hander. -- * -- * @param[in] status Status given in the last call to exit() -- * function. -- * @param[in] arg Argument passed to on_exit(). -+ * file. The function is registered as atexit() handler. - * - * @return The function does not return a value. - */ --static void _ledmon_status(int status, void *arg) -+static void _ledmon_status(void) - { - int log_level; - char message[4096]; -- int ignore = *((int *)arg); - - if (ignore) - return; - -- if (status == LEDMON_STATUS_SUCCESS) -+ if (exit_status == LEDMON_STATUS_SUCCESS) - log_level = LOG_LEVEL_INFO; - else - log_level = LOG_LEVEL_ERROR; - - snprintf(message, sizeof(message), "exit status is %s.", -- ledmon_strstatus(status)); -+ ledmon_strstatus(exit_status)); - - if (get_log_fd() >= 0) - _log(log_level, message); -@@ -364,10 +368,10 @@ static ledmon_status_code_t _cmdline_parse_non_daemonise(int argc, char *argv[]) - break; - case 'h': - _ledmon_help(); -- exit(EXIT_SUCCESS); -+ EXIT(EXIT_SUCCESS); - case 'v': - _ledmon_version(); -- exit(EXIT_SUCCESS); -+ EXIT(EXIT_SUCCESS); - case ':': - case '?': - return LEDMON_STATUS_CMDLINE_ERROR; -@@ -890,14 +894,13 @@ static void _close_parent_fds(void) - int main(int argc, char *argv[]) - { - ledmon_status_code_t status = LEDMON_STATUS_SUCCESS; -- static int ignore; - - setup_options(&longopt, &shortopt, possible_params, - possible_params_size); - set_invocation_name(argv[0]); - openlog(progname, LOG_PID | LOG_PERROR, LOG_DAEMON); - -- if (on_exit(_ledmon_status, &ignore)) -+ if (atexit(_ledmon_status)) - return LEDMON_STATUS_ONEXIT_ERROR; - - if (_cmdline_parse_non_daemonise(argc, argv) != LEDMON_STATUS_SUCCESS) -@@ -935,18 +938,18 @@ int main(int argc, char *argv[]) - - if (pid < 0) { - log_debug("main(): fork() failed (errno=%d).", errno); -- exit(EXIT_FAILURE); -+ EXIT(EXIT_FAILURE); - } - if (pid > 0) { - ignore = 1; /* parent: don't print exit status */ -- exit(EXIT_SUCCESS); -+ EXIT(EXIT_SUCCESS); - } - - pid_t sid = setsid(); - - if (sid < 0) { - log_debug("main(): setsid() failed (errno=%d).", errno); -- exit(EXIT_FAILURE); -+ EXIT(EXIT_FAILURE); - } - - _close_parent_fds(); -@@ -960,16 +963,16 @@ int main(int argc, char *argv[]) - - if (chdir("/") < 0) { - log_debug("main(): chdir() failed (errno=%d).", errno); -- exit(EXIT_FAILURE); -+ EXIT(EXIT_FAILURE); - } - if (pidfile_create(progname)) { - log_debug("main(): pidfile_creat() failed."); -- exit(EXIT_FAILURE); -+ EXIT(EXIT_FAILURE); - } - _ledmon_setup_signals(); - -- if (on_exit(_ledmon_fini, progname)) -- exit(LEDMON_STATUS_ONEXIT_ERROR); -+ if (atexit(_ledmon_fini)) -+ EXIT(LEDMON_STATUS_ONEXIT_ERROR); - list_init(&ledmon_block_list, (item_free_t)block_device_fini); - sysfs_init(); - log_info("monitor service has been started..."); -@@ -987,5 +990,5 @@ int main(int argc, char *argv[]) - } - ledmon_remove_shared_conf(); - stop_udev_monitor(); -- exit(EXIT_SUCCESS); -+ EXIT(EXIT_SUCCESS); - } --- -2.39.2 - diff --git a/package/ledmon/0002-Fix-unknown-type-name-ssize_t-error.patch b/package/ledmon/0002-Fix-unknown-type-name-ssize_t-error.patch deleted file mode 100644 index 4aeadbbbf8..0000000000 --- a/package/ledmon/0002-Fix-unknown-type-name-ssize_t-error.patch +++ /dev/null @@ -1,44 +0,0 @@ -From b9f454cd29b6b5a0927b3c1e98807d54ffacd73e Mon Sep 17 00:00:00 2001 -From: Maksim Kiselev -Date: Mon, 15 May 2023 19:29:45 +0300 -Subject: [PATCH] Fix unknown type name ?ssize_t? error - -This error occurs for builds with musl libc. -Move include to utils header to -resolve this issue. - -Upstream: https://github.com/intel/ledmon/pull/139 - -Signed-off-by: Maksim Kiselev ---- - src/utils.c | 1 - - src/utils.h | 1 + - 2 files changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/utils.c b/src/utils.c -index 86b9593..0b83d5a 100644 ---- a/src/utils.c -+++ b/src/utils.c -@@ -33,7 +33,6 @@ - #include - #include - #include --#include - #include - #include - #include -diff --git a/src/utils.h b/src/utils.h -index 5d590b9..d02da8f 100644 ---- a/src/utils.h -+++ b/src/utils.h -@@ -22,6 +22,7 @@ - #define _UTILS_H_INCLUDED_ - - #include -+#include - #include "config_file.h" - #include "stdlib.h" - #include "stdint.h" --- -2.39.2 - diff --git a/package/ledmon/0003-Add-disable-doc-option.patch b/package/ledmon/0003-Add-disable-doc-option.patch deleted file mode 100644 index ab7a242289..0000000000 --- a/package/ledmon/0003-Add-disable-doc-option.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 141628519d227b59be3977b16ebaab0feb22b295 Mon Sep 17 00:00:00 2001 -From: Maksim Kiselev -Date: Sun, 20 Aug 2023 11:35:57 +0300 -Subject: [PATCH] Add '--disable-doc' option - -Introduce a configure option to disable documentation installation -in case if it is not required. - -Upstream: https://github.com/intel/ledmon/pull/154 - -Signed-off-by: Maksim Kiselev ---- - Makefile.am | 8 ++++++-- - configure.ac | 11 ++++++++++- - 2 files changed, 16 insertions(+), 3 deletions(-) - -diff --git a/Makefile.am b/Makefile.am -index ddcd200..644a8d2 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -20,6 +20,10 @@ if SYSTEMD_CONDITION - OPTIONAL_SUBDIR = systemd - endif - --SUBDIRS = doc src $(OPTIONAL_SUBDIR) -+if WITH_DOC -+ DOC_SUBDIR = doc -+ dist_doc_DATA = README.md -+endif -+ -+SUBDIRS = src $(DOC_SUBDIR) $(OPTIONAL_SUBDIR) - EXTRA_DIST = config/config.h systemd/ledmon.service.in --dist_doc_DATA = README.md -diff --git a/configure.ac b/configure.ac -index 05baa62..114957f 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -74,6 +74,15 @@ AM_CONDITIONAL([SYSTEMD_CONDITION], [test "$SYSTEMD_STR" = yes]) - # target directory for ledmon service file - AC_SUBST([SYSTEMD_PATH], "$(pkg-config systemd --variable=systemdsystemunitdir)") - -+# Add configure option to disable documentation building -+AC_ARG_ENABLE([doc], -+ [AS_HELP_STRING([--disable-doc], -+ [do not install ledmon documentaion])], -+ [with_doc=${enableval}], -+ [with_doc=yes]) -+ -+AM_CONDITIONAL([WITH_DOC], [test "x$with_doc" = "xyes"]) -+ - AC_CONFIG_FILES([Makefile - doc/Makefile - src/Makefile -@@ -86,5 +95,5 @@ $PACKAGE_NAME $VERSION configuration: - Preprocessor flags: ${AM_CPPFLAGS} ${CPPFLAGS} - C compiler flags: ${AM_CFLAGS} ${CFLAGS} - Common install location: ${prefix} -- configure parameters: --enable-systemd=${SYSTEMD_STR} -+ configure parameters: --enable-systemd=${SYSTEMD_STR} --enable-doc=${with_doc} - ]) --- -2.39.2 - diff --git a/package/ledmon/ledmon.hash b/package/ledmon/ledmon.hash index dfc5d74242..e9cfcc63cb 100644 --- a/package/ledmon/ledmon.hash +++ b/package/ledmon/ledmon.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 40ee7e462b78c77468cc2ef356a06c5b6db44747d596dc11532f7b6f378d2d4b ledmon-0.97.tar.gz +sha256 2826786cd5e7fe7d32d22e9d209b23124801fec9c3220dcd7fb45706f3818dc5 ledmon-1.0.0.tar.gz sha256 dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa COPYING diff --git a/package/ledmon/ledmon.mk b/package/ledmon/ledmon.mk index 473d0de7a3..71150ad1e4 100644 --- a/package/ledmon/ledmon.mk +++ b/package/ledmon/ledmon.mk @@ -4,16 +4,17 @@ # ################################################################################ -LEDMON_VERSION = 0.97 +LEDMON_VERSION = 1.0.0 LEDMON_SITE = $(call github,intel,ledmon,v$(LEDMON_VERSION)) -LEDMON_DEPENDENCIES = host-pkgconf pciutils sg3_utils udev +LEDMON_DEPENDENCIES = host-autoconf-archive host-pkgconf pciutils sg3_utils udev # The code base also include a COPYING.LIB file with the LGPL-2.1 text, # and some source files are published under LGPL-2.1, but all of them are # at some point linked with GPL-2.0 code, making the resulting binaries # GPL-2.0 licensed LEDMON_LICENSE = GPL-2.0 LEDMON_LICENSE_FILES = COPYING -# 0002-Fix-unknown-type-name-ssize_t-error.patch +# From git LEDMON_AUTORECONF = YES +LEDMON_AUTORECONF_OPTS = --include=$(HOST_DIR)/share/autoconf-archive $(eval $(autotools-package)) -- 2.43.0 From fontaine.fabrice at gmail.com Fri May 3 19:53:04 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Fri, 3 May 2024 21:53:04 +0200 Subject: [Buildroot] [PATCH 1/1] package/zziplib: bump to version 0.13.74 Message-ID: <20240503195304.1277312-1-fontaine.fabrice@gmail.com> - Drop patches (already in version) - docs/copying.htm renamed to docs/copying.htm.md with https://github.com/gdraheim/zziplib/commit/b8138ba56ecb9d5d27c22d85fae37bdd594d2edb https://github.com/gdraheim/zziplib/blob/v0.13.74/ChangeLog Signed-off-by: Fabrice Fontaine --- .checkpackageignore | 1 - ...-implant-ZZIP_LIBLATEST-for-zzip_lib.patch | 75 ------------------- ...reate-symlinks-only-if-target-is-mis.patch | 72 ------------------ package/zziplib/zziplib.hash | 4 +- package/zziplib/zziplib.mk | 4 +- 5 files changed, 4 insertions(+), 152 deletions(-) delete mode 100644 package/zziplib/0001-implant-ZZIP_LIBLATEST-for-zzip_lib.patch delete mode 100644 package/zziplib/0002-ZZIP_LIBLATEST-create-symlinks-only-if-target-is-mis.patch diff --git a/.checkpackageignore b/.checkpackageignore index d809f3396b..9332d72ac4 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -1697,7 +1697,6 @@ package/zip/0006-unix-configure-borrow-the-LFS-test-from-autotools.patch lib_pat package/zip/0007-timezone.c-needs-time.h-fixes-musl-compile.patch lib_patch.Upstream package/zip/0008-fix-musl-static-build.patch lib_patch.Upstream package/zmqpp/0001-Allow-building-shared-or-static-library-only.patch lib_patch.Upstream -package/zziplib/0001-implant-ZZIP_LIBLATEST-for-zzip_lib.patch lib_patch.Upstream support/dependencies/check-host-asciidoc.sh Shellcheck support/dependencies/check-host-cmake.sh Shellcheck support/dependencies/check-host-gzip.sh Shellcheck diff --git a/package/zziplib/0001-implant-ZZIP_LIBLATEST-for-zzip_lib.patch b/package/zziplib/0001-implant-ZZIP_LIBLATEST-for-zzip_lib.patch deleted file mode 100644 index 780d990ab7..0000000000 --- a/package/zziplib/0001-implant-ZZIP_LIBLATEST-for-zzip_lib.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 0e8d35f92efb680c81f6ec1fca9f11d173dce389 Mon Sep 17 00:00:00 2001 -From: Guido Draheim -Date: Sat, 22 May 2021 15:13:28 +0200 -Subject: [PATCH] #117 implant ZZIP_LIBLATEST for zzip.lib - -[Andreas: Extract link creation for versioned libraries from commit -0e8d35f92efb680c81f6ec1fca9f11d173dce389.] -Signed-off-by: Andreas Ziegler ---- - zzip/CMakeLists.txt | 57 +++++++++++++++++++++++++++++++++++---------- - 1 file changed, 45 insertions(+), 12 deletions(-) - -diff --git a/zzip/CMakeLists.txt b/zzip/CMakeLists.txt -index a966d5f..ccd08b6 100644 ---- a/zzip/CMakeLists.txt -+++ b/zzip/CMakeLists.txt -@@ -28,6 +28,12 @@ option(ZZIP_LIBTOOL "Ensure binary compatibility with libtool" OFF) - option(ZZIP_PKGCONFIG "Generate pkg-config files for linking" OFF) - endif() - -+if(ZZIP_LIBTOOL OR ZZIP_PKGCONFIG) -+option(ZZIP_LIBLATEST "Ensure libname.lib links to libname-REL.lib" ON) -+else() -+option(ZZIP_LIBLATEST "Ensure libname.lib links to libname-REL.lib" OFF) -+endif() -+ - # used in zzip/_config.h - set(ZZIP_PACKAGE "${PROJECT_NAME}lib") - set(ZZIP_VERSION "${PROJECT_VERSION}") -@@ -346,6 +340,45 @@ if(ZZIP_LIBTOOL) - endif(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG) - endif(ZZIP_LIBTOOL) - -+if(ZZIP_LIBLATEST) -+ if(BUILD_SHARED_LIBS) -+ set(lib ${CMAKE_SHARED_LIBRARY_PREFIX}) -+ set(dll ${CMAKE_SHARED_LIBRARY_SUFFIX}) -+ else() -+ set(lib ${CMAKE_STATIC_LIBRARY_PREFIX}) -+ set(dll ${CMAKE_STATIC_LIBRARY_SUFFIX}) -+ endif() -+ get_target_property(libname libzzip OUTPUT_NAME) -+ get_target_property(librelease libzzip RELEASE_POSTFIX) -+ add_custom_target(libzzip_latest ALL -+ COMMAND ${CMAKE_COMMAND} -E create_symlink $ ${lib}${libname}${dll} -+ ) -+ install(FILES -+ ${outdir}/${lib}${libname}${dll} -+ DESTINATION ${CMAKE_INSTALL_LIBDIR}) -+ if(ZZIPFSEEKO) -+ get_target_property(libname libzzipfseeko OUTPUT_NAME) -+ get_target_property(librelease libzzipfseeko RELEASE_POSTFIX) -+ add_custom_target(libzzipfseeko_latest ALL -+ COMMAND ${CMAKE_COMMAND} -E create_symlink $ ${lib}${libname}${dll} -+ ) -+ install(FILES -+ ${outdir}/${lib}${libname}${dll} -+ DESTINATION ${CMAKE_INSTALL_LIBDIR}) -+ endif(ZZIPFSEEKO) -+ if(ZZIPMMAPPED) -+ get_target_property(libname libzzipmmapped OUTPUT_NAME) -+ get_target_property(librelease libzzipmmapped RELEASE_POSTFIX) -+ add_custom_target(libzzipmmaped_latest ALL -+ COMMAND ${CMAKE_COMMAND} -E create_symlink $ ${lib}${libname}${dll} -+ ) -+ install(FILES -+ ${outdir}/${lib}${libname}${dll} -+ DESTINATION ${CMAKE_INSTALL_LIBDIR}) -+ endif(ZZIPMMAPPED) -+endif(ZZIP_LIBLATEST) -+ -+ - ## messages ############################################## - - message(STATUS "lib zzipfseeko to be compiled: ${ZZIPFSEEKO}") diff --git a/package/zziplib/0002-ZZIP_LIBLATEST-create-symlinks-only-if-target-is-mis.patch b/package/zziplib/0002-ZZIP_LIBLATEST-create-symlinks-only-if-target-is-mis.patch deleted file mode 100644 index c8ccd48dba..0000000000 --- a/package/zziplib/0002-ZZIP_LIBLATEST-create-symlinks-only-if-target-is-mis.patch +++ /dev/null @@ -1,72 +0,0 @@ -From 5977725ecea038f32a86938703ca1ed2b080b31c Mon Sep 17 00:00:00 2001 -From: Andreas Ziegler -Date: Fri, 29 Jul 2022 12:32:27 +0200 -Subject: [PATCH] ZZIP_LIBLATEST: create symlinks only if target is missing - -zzip/CMakeList.txt uses custom build targets to create symlinks to the -(normally versioned) build results from unversioned file names. These -targets are executed unconditionally, every time a build is started, -regardless of the existence of the symlink. - -Debug builds, however, generate unversioned libraries. The build targets -therefore overwrite existing files with recursive links. - -Create custom targets depending on the target file plus custom build -commands containing the symlink creation, thereby ensuring that symlinks -are only created if the link target is missing. - -Signed-off-by: Andreas Ziegler -Upstream: https://github.com/gdraheim/zziplib/pull/138 ---- - zzip/CMakeLists.txt | 18 +++++++++++++++--- - 1 file changed, 15 insertions(+), 3 deletions(-) - -diff --git a/zzip/CMakeLists.txt b/zzip/CMakeLists.txt -index 4fa6b9c..dd1e56a 100644 ---- a/zzip/CMakeLists.txt -+++ b/zzip/CMakeLists.txt -@@ -350,8 +350,12 @@ if(ZZIP_LIBLATEST) - endif() - get_target_property(libname libzzip OUTPUT_NAME) - get_target_property(librelease libzzip RELEASE_POSTFIX) -+ set(libzzip_target "${lib}${libname}${dll}") -+ add_custom_command(OUTPUT ${libzzip_target} -+ COMMAND ${CMAKE_COMMAND} -E create_symlink $ ${libzzip_target} -+ ) - add_custom_target(libzzip_latest ALL -- COMMAND ${CMAKE_COMMAND} -E create_symlink $ ${lib}${libname}${dll} -+ DEPENDS ${libzzip_target} - ) - install(FILES - ${outdir}/${lib}${libname}${dll} -@@ -359,8 +363,12 @@ if(ZZIP_LIBLATEST) - if(ZZIPFSEEKO) - get_target_property(libname libzzipfseeko OUTPUT_NAME) - get_target_property(librelease libzzipfseeko RELEASE_POSTFIX) -+ set(libzzipfseeko_target "${lib}${libname}${dll}") -+ add_custom_command(OUTPUT ${libzzipfseeko_target} -+ COMMAND ${CMAKE_COMMAND} -E create_symlink $ ${libzzipfseeko_target} -+ ) - add_custom_target(libzzipfseeko_latest ALL -- COMMAND ${CMAKE_COMMAND} -E create_symlink $ ${lib}${libname}${dll} -+ DEPENDS ${libzzipfseeko_target} - ) - install(FILES - ${outdir}/${lib}${libname}${dll} -@@ -369,8 +377,12 @@ if(ZZIP_LIBLATEST) - if(ZZIPMMAPPED) - get_target_property(libname libzzipmmapped OUTPUT_NAME) - get_target_property(librelease libzzipmmapped RELEASE_POSTFIX) -+ set(libzzipmmapped_target "${lib}${libname}${dll}") -+ add_custom_command(OUTPUT ${libzzipmmapped_target} -+ COMMAND ${CMAKE_COMMAND} -E create_symlink $ ${libzzipmmapped_target} -+ ) - add_custom_target(libzzipmmaped_latest ALL -- COMMAND ${CMAKE_COMMAND} -E create_symlink $ ${lib}${libname}${dll} -+ DEPENDS ${libzzipmmapped_target} - ) - install(FILES - ${outdir}/${lib}${libname}${dll} --- -2.34.1 - diff --git a/package/zziplib/zziplib.hash b/package/zziplib/zziplib.hash index b6a75ae0cb..3bff51f07f 100644 --- a/package/zziplib/zziplib.hash +++ b/package/zziplib/zziplib.hash @@ -1,5 +1,5 @@ # sha256 locally computed -sha256 93ef44bf1f1ea24fc66080426a469df82fa631d13ca3b2e4abaeab89538518dc zziplib-0.13.72.tar.gz +sha256 319093aa98d39453f3ea2486a86d8a2fab2d5632f6633a2665318723a908eecf zziplib-0.13.74.tar.gz sha256 94b03f1a60a7fd5007149530626a895a6ef5a8b9342abfd56860c5f3956f5d23 docs/COPYING.LIB sha256 c2aa7d58cebd24cb877bbf11d6b13a4bb7cd08b9d7db5d3037ca06c46bf4cfd8 docs/COPYING.MPL -sha256 1c6da11efe8c43ee853fe5b21501dd72b81831ae84d58ea376bddc0620a5c361 docs/copying.htm +sha256 9418aca218090f0bebfa91298c8145c7342de095eced3d72ea241c178df59368 docs/copying.htm.md diff --git a/package/zziplib/zziplib.mk b/package/zziplib/zziplib.mk index 6cb9dedce8..0ef53436d2 100644 --- a/package/zziplib/zziplib.mk +++ b/package/zziplib/zziplib.mk @@ -4,10 +4,10 @@ # ################################################################################ -ZZIPLIB_VERSION = 0.13.72 +ZZIPLIB_VERSION = 0.13.74 ZZIPLIB_SITE = $(call github,gdraheim,zziplib,v$(ZZIPLIB_VERSION)) ZZIPLIB_LICENSE = LGPL-2.0+ or MPL-1.1 -ZZIPLIB_LICENSE_FILES = docs/COPYING.LIB docs/COPYING.MPL docs/copying.htm +ZZIPLIB_LICENSE_FILES = docs/COPYING.LIB docs/COPYING.MPL docs/copying.htm.md ZZIPLIB_CPE_ID_VALID = YES ZZIPLIB_INSTALL_STAGING = YES ZZIPLIB_CONF_OPTS += \ -- 2.43.0 From peter at korsgaard.com Mon May 6 16:16:26 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 06 May 2024 18:16:26 +0200 Subject: [Buildroot] [PATCH] configs/mangopi_mq1rdw1_defconfig: fix build failure due to undefined linux headers In-Reply-To: <20240330092902.834778-1-giulio.benetti@benettiengineering.com> (Giulio Benetti's message of "Sat, 30 Mar 2024 10:29:02 +0100") References: <20240330092902.834778-1-giulio.benetti@benettiengineering.com> Message-ID: <87wmo6zzj9.fsf@dell.be.48ers.dk> >>>>> "Giulio" == Giulio Benetti writes: > Add BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6 to prevent error: > Incorrect selection of kernel headers: expected 6.8.x, got 6.6.x > Fixes: > https://gitlab.com/buildroot.org/buildroot/-/jobs/6498278078 > Signed-off-by: Giulio Benetti Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Mon May 6 16:16:07 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 6 May 2024 18:16:07 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] configs/mangopi_mq1rdw1_defconfig: fix build failure due to undefined linux headers Message-ID: <20240506161658.3D6D386736@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=e11b804443d4e3bf5cbe447096a888fa825681a4 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Add BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6 to prevent error: Incorrect selection of kernel headers: expected 6.8.x, got 6.6.x Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6498278078 Signed-off-by: Giulio Benetti Signed-off-by: Thomas Petazzoni (cherry picked from commit c245b37190f18d1f0551dd95027b2b65fa63e704) Signed-off-by: Peter Korsgaard --- configs/mangopi_mq1rdw2_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/mangopi_mq1rdw2_defconfig b/configs/mangopi_mq1rdw2_defconfig index a2f8a1299b..2249fa4be5 100644 --- a/configs/mangopi_mq1rdw2_defconfig +++ b/configs/mangopi_mq1rdw2_defconfig @@ -1,6 +1,7 @@ BR2_arm=y BR2_cortex_a7=y BR2_ARM_FPU_VFPV4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y BR2_TARGET_GENERIC_HOSTNAME="mangopi-mq1rdw2" BR2_TARGET_GENERIC_ISSUE="Welcome to MangoPI MQ1RDW2" BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y From fiona.klute at gmx.de Mon May 6 16:20:45 2024 From: fiona.klute at gmx.de (Fiona Klute) Date: Mon, 6 May 2024 18:20:45 +0200 Subject: [Buildroot] [PATCH 1/1] package/raspberrypi-usbboot: bump version to 20221215-105525 In-Reply-To: <20240426213551.1106068-1-fiona.klute@gmx.de> References: <20240426213551.1106068-1-fiona.klute@gmx.de> Message-ID: Hi, I still didn't get any response (merge/comment/rejection) on this and the "package/kmod: fix build with musl" patch I sent the same day. Is there anything else I can do to get them to the right person? They're necessary to get the board I'm working on working, and for musl-based builds with compressed kernel modules in general. Best regards, Fiona Am 26.04.24 um 23:35 schrieb Fiona Klute via buildroot: > From: Fiona Klute > > The "msd" (mass storage device) firmware files in 2021.07.01 don't > work with some newer CM4 based devices, the one I had issues with is a > RevPi Connect 4. Updating fixes the issue. Mass storage device mode is > required to flash the eMMC of CM4 devices. > > Signed-off-by: Fiona Klute > --- > ...001-Makefile-allow-passing-CFLAGS-LDFLAGS.patch | 14 +++++++++----- > .../raspberrypi-usbboot/raspberrypi-usbboot.hash | 2 +- > package/raspberrypi-usbboot/raspberrypi-usbboot.mk | 4 ++-- > 3 files changed, 12 insertions(+), 8 deletions(-) > > diff --git a/package/raspberrypi-usbboot/0001-Makefile-allow-passing-CFLAGS-LDFLAGS.patch b/package/raspberrypi-usbboot/0001-Makefile-allow-passing-CFLAGS-LDFLAGS.patch > index d482b0b9d4..776f6d3476 100644 > --- a/package/raspberrypi-usbboot/0001-Makefile-allow-passing-CFLAGS-LDFLAGS.patch > +++ b/package/raspberrypi-usbboot/0001-Makefile-allow-passing-CFLAGS-LDFLAGS.patch > @@ -10,21 +10,25 @@ Submitted-upstream: https://github.com/raspberrypi/usbboot/pull/2 > Signed-off-by: Thomas Petazzoni > [Rebased on 9324fd7] > Signed-off-by: Peter Seiderer > +[Rebased on 20221215-105525-0-g1afa26c5] > +Signed-off-by: Fiona Klute > --- > Makefile | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/Makefile b/Makefile > -index 822e714..875e717 100755 > +index dc78cfe..5ada5be 100755 > --- a/Makefile > +++ b/Makefile > -@@ -1,5 +1,5 @@ > +@@ -1,7 +1,7 @@ > + PKG_VER=$(shell grep rpiboot debian/changelog | head -n1 | sed 's/.*(\(.*\)).*/\1/g') > + GIT_VER=$(shell git rev-parse HEAD 2>/dev/null | cut -c1-8 || echo "") > rpiboot: main.c msd/bootcode.h msd/start.h msd/bootcode4.h msd/start4.h > -- $(CC) -Wall -Wextra -g -o $@ $< -lusb-1.0 > -+ $(CC) -Wall -Wextra -g $(CFLAGS) -o $@ $< -lusb-1.0 $(LDFLAGS) > +- $(CC) -Wall -Wextra -g -o $@ $< `pkg-config --cflags --libs libusb-1.0` -DGIT_VER="\"$(GIT_VER)\"" -DPKG_VER="\"$(PKG_VER)\"" > ++ $(CC) -Wall -Wextra -g $(CFLAGS) -o $@ $< `pkg-config --cflags --libs libusb-1.0` -DGIT_VER="\"$(GIT_VER)\"" -DPKG_VER="\"$(PKG_VER)\"" $(LDFLAGS) > > %.h: %.bin ./bin2c > ./bin2c $< $@ > -- > -2.31.1 > +2.43.0 > > diff --git a/package/raspberrypi-usbboot/raspberrypi-usbboot.hash b/package/raspberrypi-usbboot/raspberrypi-usbboot.hash > index cedc5fb7e1..830ead8243 100644 > --- a/package/raspberrypi-usbboot/raspberrypi-usbboot.hash > +++ b/package/raspberrypi-usbboot/raspberrypi-usbboot.hash > @@ -1,5 +1,5 @@ > # Locally calculated > -sha256 4565314b38e7c7505b7d32a3b51b49f79c7dd5767d45b86d38e5255ae7489a43 raspberrypi-usbboot-2021.07.01.tar.gz > +sha256 2f02dbe9a88e9dfad5f05e513e1f30afd47b1575820f7c3b09665dfefc45bbaa raspberrypi-usbboot-20221215-105525.tar.gz > > # License files > sha256 b40930bbcf80744c86c46a12bc9da056641d722716c378f5659b9e555ef833e1 LICENSE > diff --git a/package/raspberrypi-usbboot/raspberrypi-usbboot.mk b/package/raspberrypi-usbboot/raspberrypi-usbboot.mk > index 2e4194da0b..24a1f6d906 100644 > --- a/package/raspberrypi-usbboot/raspberrypi-usbboot.mk > +++ b/package/raspberrypi-usbboot/raspberrypi-usbboot.mk > @@ -4,9 +4,9 @@ > # > ################################################################################ > > -RASPBERRYPI_USBBOOT_VERSION = 2021.07.01 > +RASPBERRYPI_USBBOOT_VERSION = 20221215-105525 > RASPBERRYPI_USBBOOT_SITE = \ > - $(call github,raspberrypi,usbboot,v$(RASPBERRYPI_USBBOOT_VERSION)) > + $(call github,raspberrypi,usbboot,$(RASPBERRYPI_USBBOOT_VERSION)) > RASPBERRYPI_USBBOOT_LICENSE = Apache-2.0 > RASPBERRYPI_USBBOOT_LICENSE_FILES = LICENSE > > -- > 2.43.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot From dannenberg at ti.com Mon May 6 18:01:10 2024 From: dannenberg at ti.com (Andreas Dannenberg) Date: Mon, 6 May 2024 13:01:10 -0500 Subject: [Buildroot] [RFC, 1/1] configs/am62x-sk: Add fragment for TI tree integration In-Reply-To: <20240430145448.yhg6r64ohsfofeqv@bryanbrattlof.com> References: <20240429092326.3247116-1-p-bhagat@ti.com> <20240430145448.yhg6r64ohsfofeqv@bryanbrattlof.com> Message-ID: <20240506180110.c2fz34ezrvzuzf6z@dasso> On Tue, Apr 30, 2024 at 09:54:48AM -0500, Bryan Brattlof via buildroot wrote: > On April 29, 2024 thus sayeth Paresh Bhagat via buildroot: > > This commit introduces a new fragment config aimed at integration of TI trees > > into the existing configuration for am62x-sk. The fragment config is designed > > to be merged with the current ti_am62x_sk_defconfig, enabling transition from > > mainline to TI versions for U-boot and kernel. > > > > The fragment config will be merged with existing ti_my_am62x_sk_defconfig > > using merge-config.sh script present in support/kconfig using following > > command. > > > > ./support/kconfig/merge-config.sh configs/ti_am62x_sk_defconfig configs/ti_am62x_sk.config This should be "merge_config.sh". > > It effectively changes uboot and kernel source from mainline version to TI > > version hosted here > > > > https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/?h=ti-linux-6.1.y > > https://git.ti.com/cgit/ti-u-boot/ti-u-boot/?h=ti-u-boot-2023.04 > > > > Furthermore, as ti-uboot 2023.04 is used, kernel Image and dtb is expected > > in rootfs/boot/ and rootfs/boot/dtb/ti respectively. So add a new post-build > > script to copy these files to desired location. > > > > Signed-off-by: Paresh Bhagat > > Thanks for the patch. My worry is these changes will only be needed for > the brief time the 9.2 SDK is relevant. The 10.X SDK is just around the > corner and will break all of this with its new baseline. > > It may be easier to keep these configs all in a custom BR2_EXTERNAL > overlay and keep buildroot pointed to pure sources of these packages Yes Paresh also from my side thanks for the effort you put into this. After spending some more time on this I tend to agree with Brian that this should probably not be directly in the official tree to minimize churn, plus keeping the official Buildroot upstream-only will motivate us even more to make sure all our device support goes upstream... All this being said, there is a very common "real world" customer need/ request for a Buildroot-based solution more closely aligned with TI's official Yocto SDKs. Ideally I'd like to see us providing something via BR2_EXTERNAL that is well maintained (like other vendors provide), but until we can close on the best path forward I've updated my already- existing E2E FAQ [1] to help customers today setting up such a TI Yocto SDK v9.2 Baseline Equivalent by adding a simple patch to the tree by themselves. I plan on maintaining this as needed to accommodate for new SDK releases (and also so people don't always have to resolve merge conflicts when applying that patch). -- Andreas Dannenberg Texas Instruments Inc [1] https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1226815/faq-buildroot-support-for-sitara-am62x-am62ax-am62px-am64x-devices > > ~Bryan > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot From Brandon.Maier at collins.com Mon May 6 18:15:55 2024 From: Brandon.Maier at collins.com (Maier, Brandon L Collins) Date: Mon, 6 May 2024 18:15:55 +0000 Subject: [Buildroot] [External] Re: [PATCH 1/1] boot/arm-trusted-firmware: enable verbose output In-Reply-To: <20240505153959.14f8ef6b@windsurf> References: <20240412211222.26585-1-brandon.maier@collins.com> <20240505153959.14f8ef6b@windsurf> Message-ID: Hi Thomas, > -----Original Message----- > From: Thomas Petazzoni > Sent: Sunday, May 5, 2024 8:40 AM > To: Brandon Maier via buildroot > Cc: Maier, Brandon L Collins ; Sergey Matyukevich > > Subject: [External] Re: [Buildroot] [PATCH 1/1] boot/arm-trusted-firmware: > enable verbose output > > On Fri, 12 Apr 2024 21:12:22 +0000 > Brandon Maier via buildroot wrote: > > > Signed-off-by: Brandon Maier > > --- > > boot/arm-trusted-firmware/arm-trusted-firmware.mk | 1 + > > 1 file changed, 1 insertion(+) > > I am confused as to why this patch is needed: for both Linux and > U-Boot, we don't need to do anything special, just doing "make V=1" at > the top-level, the V=1 gets passed down to Linux/U-Boot, and they > exhibit a verbose build. However, that doesn't work with > arm-trusted-firmware indeed, so I have applied your patch which makes > the build verbose also for arm-trusted-firmware. Still a bit unclear as > to why it doesn't work "by default". The Arm Trusted Firmware sets "V := 0". So, it only sees verbosity when passed as an argument. https://github.com/ARM-software/arm-trusted-firmware/blob/master/make_helpers/defaults.mk#L291-L292 > > Best regards, > > Thomas > -- > Thomas Petazzoni, CTO, Bootlin > Embedded Linux and Kernel engineering > https://urldefense.com/v3/__https://bootlin.com__;!!MvWE!HlXPBqUpYdxO9EBr > 6F_8rB0yD3ldsb16EmjTfAQs5jbjY99L7ck- > fAeJmn2djFv43hmR8m6SR0VDEhCl9Sam9LQt0ZSPgxQ$ From yann.morin.1998 at free.fr Mon May 6 18:32:01 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Mon, 6 May 2024 20:32:01 +0200 Subject: [Buildroot] Buildroot: incorrect permissons on /dev/shm In-Reply-To: References: <20240411152016.1185109-1-ben.hutchings@mind.be> Message-ID: Ben, All, On 2024-05-06 12:24 +0200, Ben Hutchings via buildroot spake thusly: > On Thu, Apr 11, 2024 at 05:31:02PM +0200, Ben Hutchings wrote: > > Buildroot is a Linux distribution and system builder for embedded > > systems. Starting in Buildroot 2011.08, its default /etc/fstab > > included an entry for /dev/shm with incorrect permissons (sticky bit > > not set). (CWE-276) > > > > Buildroot 2017.08 removed this entry for systems using systemd, and it > > has never been included for systems using OpenRC. So this only > > affects Buildroot-built systems that use sysvinit, and some older > > systems that use systemd. > [...] > > This has been assigned CVE-2024-34455. Thanks for th efeedback. The fix has already been committed, with commit 0b2967e158 (package/skeleton-init-sysv: Set sticky bit on /dev/shm) that I applied on 2024-04-11. Regards, Yann E. MORIN. -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From thomas.petazzoni at bootlin.com Mon May 6 18:52:21 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 20:52:21 +0200 Subject: [Buildroot] [External] Re: [PATCH 1/1] boot/arm-trusted-firmware: enable verbose output In-Reply-To: References: <20240412211222.26585-1-brandon.maier@collins.com> <20240505153959.14f8ef6b@windsurf> Message-ID: <20240506205221.3768e4f0@windsurf> On Mon, 6 May 2024 18:15:55 +0000 "Maier, Brandon L Collins" wrote: > > I am confused as to why this patch is needed: for both Linux and > > U-Boot, we don't need to do anything special, just doing "make V=1" at > > the top-level, the V=1 gets passed down to Linux/U-Boot, and they > > exhibit a verbose build. However, that doesn't work with > > arm-trusted-firmware indeed, so I have applied your patch which makes > > the build verbose also for arm-trusted-firmware. Still a bit unclear as > > to why it doesn't work "by default". > > The Arm Trusted Firmware sets "V := 0". So, it only sees verbosity when passed as an argument. > https://github.com/ARM-software/arm-trusted-firmware/blob/master/make_helpers/defaults.mk#L291-L292 Aaah, that explains it! I'm not sure how I missed this when looking at the TF-A Makefile (but I looked quickly). Thanks for following up on this! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From james.hilliard1 at gmail.com Mon May 6 18:52:30 2024 From: james.hilliard1 at gmail.com (James Hilliard) Date: Mon, 6 May 2024 12:52:30 -0600 Subject: [Buildroot] [PATCH 1/2] package/ell: bump to version 0.65 Message-ID: <20240506185231.3470040-1-james.hilliard1@gmail.com> Signed-off-by: James Hilliard --- package/ell/ell.hash | 2 +- package/ell/ell.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/ell/ell.hash b/package/ell/ell.hash index f5ded676c3..3adca75140 100644 --- a/package/ell/ell.hash +++ b/package/ell/ell.hash @@ -1,5 +1,5 @@ # From https://mirrors.edge.kernel.org/pub/linux/libs/ell/sha256sums.asc -sha256 7397c76996d7646b9917ebf016cd67586b10166295af2e0e18cdb5b8f6659965 ell-0.63.tar.xz +sha256 9ee7ac57b188d391cead705d3596a6d3240341786475149db297782a52269aa5 ell-0.65.tar.xz # License files sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING diff --git a/package/ell/ell.mk b/package/ell/ell.mk index f43dbdb5f7..a682635539 100644 --- a/package/ell/ell.mk +++ b/package/ell/ell.mk @@ -4,7 +4,7 @@ # ################################################################################ -ELL_VERSION = 0.63 +ELL_VERSION = 0.65 ELL_SOURCE = ell-$(ELL_VERSION).tar.xz ELL_SITE = $(BR2_KERNEL_MIRROR)/linux/libs/ell ELL_LICENSE = LGPL-2.1+ -- 2.34.1 From james.hilliard1 at gmail.com Mon May 6 18:52:31 2024 From: james.hilliard1 at gmail.com (James Hilliard) Date: Mon, 6 May 2024 12:52:31 -0600 Subject: [Buildroot] [PATCH 2/2] package/iwd: bump to version 2.17 In-Reply-To: <20240506185231.3470040-1-james.hilliard1@gmail.com> References: <20240506185231.3470040-1-james.hilliard1@gmail.com> Message-ID: <20240506185231.3470040-2-james.hilliard1@gmail.com> Signed-off-by: James Hilliard --- package/iwd/iwd.hash | 2 +- package/iwd/iwd.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/iwd/iwd.hash b/package/iwd/iwd.hash index 3f18146e13..9f88b2d6f1 100644 --- a/package/iwd/iwd.hash +++ b/package/iwd/iwd.hash @@ -1,5 +1,5 @@ # From https://mirrors.edge.kernel.org/pub/linux/network/wireless/sha256sums.asc -sha256 c1a82032e994861e794cf3b5a16d07ae1aa03a6674f716c73408ffeae2a233ba iwd-2.16.tar.xz +sha256 5901ab3fbb74bb75ec9adda35daeff595e4d238882fee7fc8c805b30ca79d943 iwd-2.17.tar.xz # License files sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING diff --git a/package/iwd/iwd.mk b/package/iwd/iwd.mk index af6b2f849a..c516bab471 100644 --- a/package/iwd/iwd.mk +++ b/package/iwd/iwd.mk @@ -4,7 +4,7 @@ # ################################################################################ -IWD_VERSION = 2.16 +IWD_VERSION = 2.17 IWD_SOURCE = iwd-$(IWD_VERSION).tar.xz IWD_SITE = $(BR2_KERNEL_MIRROR)/linux/network/wireless IWD_LICENSE = LGPL-2.1+ -- 2.34.1 From thomas.petazzoni at bootlin.com Mon May 6 18:58:38 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 20:58:38 +0200 Subject: [Buildroot] [git commit] configs/acmesystems_acqua_a5_*: add hashes for Linux/at91bootstrap3 Message-ID: <20240506185913.AA7C98676E@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=7f5cd99dd7ee82d4b977a04b0809a77f89c853c1 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master And enable BR2_DOWNLOAD_FORCE_CHECK_HASHES. Signed-off-by: Edgar Bonet Signed-off-by: Thomas Petazzoni --- .checkpackageignore | 2 -- board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash | 2 ++ board/acmesystems/acqua-a5/patches/linux-headers/linux-headers.hash | 1 + board/acmesystems/acqua-a5/patches/linux/linux.hash | 2 ++ configs/acmesystems_acqua_a5_256mb_defconfig | 2 ++ configs/acmesystems_acqua_a5_512mb_defconfig | 2 ++ 6 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.checkpackageignore b/.checkpackageignore index 870c286bcd..1135fa7175 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -117,8 +117,6 @@ boot/syslinux/0014-Fix-build-with-binutils-note-gnu-property-section.patch lib_p boot/syslinux/0016-Workaround-multiple-definition-of-symbol-errors.patch lib_patch.Upstream boot/syslinux/0017-Replace-builtin-strlen-that-appears-to-get-optimized.patch lib_patch.Upstream configs/aarch64_efi_defconfig lib_defconfig.ForceCheckHash -configs/acmesystems_acqua_a5_256mb_defconfig lib_defconfig.ForceCheckHash -configs/acmesystems_acqua_a5_512mb_defconfig lib_defconfig.ForceCheckHash configs/acmesystems_aria_g25_128mb_defconfig lib_defconfig.ForceCheckHash configs/acmesystems_aria_g25_256mb_defconfig lib_defconfig.ForceCheckHash configs/acmesystems_arietta_g25_128mb_defconfig lib_defconfig.ForceCheckHash diff --git a/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash b/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash new file mode 100644 index 0000000000..06a63d449d --- /dev/null +++ b/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 cdc04cca9e811043efdea43ad203d70d897e23a8bd46f01896ba45c8df50f6ec at91bootstrap3-v3.10.3-br1.tar.gz diff --git a/board/acmesystems/acqua-a5/patches/linux-headers/linux-headers.hash b/board/acmesystems/acqua-a5/patches/linux-headers/linux-headers.hash new file mode 120000 index 0000000000..5808d92afe --- /dev/null +++ b/board/acmesystems/acqua-a5/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/acmesystems/acqua-a5/patches/linux/linux.hash b/board/acmesystems/acqua-a5/patches/linux/linux.hash new file mode 100644 index 0000000000..6dbbeca57f --- /dev/null +++ b/board/acmesystems/acqua-a5/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 1fd7ec8c3d9c4e4b3a41d11e2c6d151e5fbf875dd08b3577f73afd6ee6674605 linux-6.6.12.tar.xz diff --git a/configs/acmesystems_acqua_a5_256mb_defconfig b/configs/acmesystems_acqua_a5_256mb_defconfig index ef57734194..359b356cb4 100644 --- a/configs/acmesystems_acqua_a5_256mb_defconfig +++ b/configs/acmesystems_acqua_a5_256mb_defconfig @@ -3,6 +3,8 @@ BR2_cortex_a5=y BR2_ARM_ENABLE_VFP=y BR2_ARM_INSTRUCTIONS_THUMB2=y BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/acmesystems/acqua-a5/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y BR2_SYSTEM_DHCP="eth0" BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/acmesystems/acqua-a5/genimage.cfg" diff --git a/configs/acmesystems_acqua_a5_512mb_defconfig b/configs/acmesystems_acqua_a5_512mb_defconfig index a69e2a2251..194de0b530 100644 --- a/configs/acmesystems_acqua_a5_512mb_defconfig +++ b/configs/acmesystems_acqua_a5_512mb_defconfig @@ -3,6 +3,8 @@ BR2_cortex_a5=y BR2_ARM_ENABLE_VFP=y BR2_ARM_INSTRUCTIONS_THUMB2=y BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/acmesystems/acqua-a5/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y BR2_SYSTEM_DHCP="eth0" BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/acmesystems/acqua-a5/genimage.cfg" From thomas.petazzoni at bootlin.com Mon May 6 18:58:41 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 20:58:41 +0200 Subject: [Buildroot] [git commit] configs/acmesystems_acqua_a5_*: bump to Linux 6.6.30 Message-ID: <20240506185913.BAF6E86773@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=74787fdd10543d482786fef582702bc24c1da626 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Edgar Bonet Signed-off-by: Thomas Petazzoni --- board/acmesystems/acqua-a5/patches/linux/linux.hash | 2 +- configs/acmesystems_acqua_a5_256mb_defconfig | 2 +- configs/acmesystems_acqua_a5_512mb_defconfig | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/board/acmesystems/acqua-a5/patches/linux/linux.hash b/board/acmesystems/acqua-a5/patches/linux/linux.hash index 6dbbeca57f..4b20a009a7 100644 --- a/board/acmesystems/acqua-a5/patches/linux/linux.hash +++ b/board/acmesystems/acqua-a5/patches/linux/linux.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 1fd7ec8c3d9c4e4b3a41d11e2c6d151e5fbf875dd08b3577f73afd6ee6674605 linux-6.6.12.tar.xz +sha256 b66a5b863b0f8669448b74ca83bd641a856f164b29956e539bbcb5fdeeab9cc6 linux-6.6.30.tar.xz diff --git a/configs/acmesystems_acqua_a5_256mb_defconfig b/configs/acmesystems_acqua_a5_256mb_defconfig index 359b356cb4..b102dde0ba 100644 --- a/configs/acmesystems_acqua_a5_256mb_defconfig +++ b/configs/acmesystems_acqua_a5_256mb_defconfig @@ -10,7 +10,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/acmesystems/acqua-a5/genimage.cfg" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.12" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.30" BR2_LINUX_KERNEL_DEFCONFIG="sama5" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="board/acmesystems/acqua-a5/at91-sama5d3_acqua.dts" diff --git a/configs/acmesystems_acqua_a5_512mb_defconfig b/configs/acmesystems_acqua_a5_512mb_defconfig index 194de0b530..da54eaf620 100644 --- a/configs/acmesystems_acqua_a5_512mb_defconfig +++ b/configs/acmesystems_acqua_a5_512mb_defconfig @@ -10,7 +10,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/acmesystems/acqua-a5/genimage.cfg" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.12" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.30" BR2_LINUX_KERNEL_DEFCONFIG="sama5" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="board/acmesystems/acqua-a5/at91-sama5d3_acqua.dts" From thomas.petazzoni at bootlin.com Mon May 6 18:59:38 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 20:59:38 +0200 Subject: [Buildroot] [git commit] package/python-pydal/Config.in: bool argument needs quotation marks Message-ID: <20240506190223.8909C8679D@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=9f8d3f47d7caa395aa7c528891455389b0f0109e branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fixes the following error/warnings with kconfig from linux-6.9-rc5: package/python-pydal/Config.in:2: syntax error package/python-pydal/Config.in:2: invalid statement package/python-pydal/Config.in:3: invalid statement [...] Signed-off-by: Peter Seiderer Signed-off-by: Thomas Petazzoni --- package/python-pydal/Config.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/python-pydal/Config.in b/package/python-pydal/Config.in index f1c97f91a0..204b47a09a 100644 --- a/package/python-pydal/Config.in +++ b/package/python-pydal/Config.in @@ -1,5 +1,5 @@ config BR2_PACKAGE_PYTHON_PYDAL - bool python-pydal + bool "python-pydal" help pyDAL is a pure Python Database Abstraction Layer. It dynamically generates the SQL in real time using the From thomas.petazzoni at bootlin.com Mon May 6 18:59:30 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 20:59:30 +0200 Subject: [Buildroot] [git commit] package/cmocka/Config.in: bool argument needs quotation marks Message-ID: <20240506190223.7094B8679E@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=4abda655e6148cc3607101cb24933706fb2b6801 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fixes the following error/warnings with kconfig from linux-6.9-rc5: package/cmocka/Config.in:2: syntax error package/cmocka/Config.in:2: invalid statement package/cmocka/Config.in:3: invalid statement package/cmocka/Config.in:4: invalid statement [...] Signed-off-by: Peter Seiderer Signed-off-by: Thomas Petazzoni --- package/cmocka/Config.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/cmocka/Config.in b/package/cmocka/Config.in index cf49d0f6be..80e29778d3 100644 --- a/package/cmocka/Config.in +++ b/package/cmocka/Config.in @@ -1,5 +1,5 @@ config BR2_PACKAGE_CMOCKA - bool cmocka + bool "cmocka" depends on !BR2_STATIC_LIBS help cmocka is an elegant unit testing framework for C with support From thomas.petazzoni at bootlin.com Mon May 6 18:59:26 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 20:59:26 +0200 Subject: [Buildroot] [git commit] boot/barebox/Config.in: source argument needs quotation marks Message-ID: <20240506190223.64E468679D@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=e86aec1663357a9f1f7de56129dfd1ab1c5d2cda branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fixes the following error/warnings with kconfig from linux-6.9-rc5: boot/barebox/Config.in:79: syntax error boot/barebox/Config.in:79:warning: ignoring unsupported character '/' boot/barebox/Config.in:79:warning: ignoring unsupported character '/' boot/barebox/Config.in:79:warning: ignoring unsupported character '/' boot/barebox/Config.in:79:warning: ignoring unsupported character '.' boot/barebox/Config.in:79: invalid statement boot/barebox/Config.in:93: syntax error boot/barebox/Config.in:93:warning: ignoring unsupported character '/' boot/barebox/Config.in:93:warning: ignoring unsupported character '/' boot/barebox/Config.in:93:warning: ignoring unsupported character '/' boot/barebox/Config.in:93:warning: ignoring unsupported character '.' boot/barebox/Config.in:93: invalid statement Signed-off-by: Peter Seiderer Signed-off-by: Thomas Petazzoni --- boot/barebox/Config.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/boot/barebox/Config.in b/boot/barebox/Config.in index dba4a1a8d6..0bd3386795 100644 --- a/boot/barebox/Config.in +++ b/boot/barebox/Config.in @@ -76,7 +76,7 @@ config BR2_TARGET_BAREBOX_CUSTOM_GIT_VERSION endif -source boot/barebox/barebox/Config.in +source "boot/barebox/barebox/Config.in" menuconfig BR2_TARGET_BAREBOX_AUX bool "Build barebox with an auxiliary config" @@ -90,7 +90,7 @@ menuconfig BR2_TARGET_BAREBOX_AUX if BR2_TARGET_BAREBOX_AUX -source boot/barebox/barebox-aux/Config.in +source "boot/barebox/barebox-aux/Config.in" endif From thomas.petazzoni at bootlin.com Mon May 6 18:59:34 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 20:59:34 +0200 Subject: [Buildroot] [git commit] package/dovecot/Config.in: source argument needs quotation marks Message-ID: <20240506190223.7CA768679F@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=ff70f9ee4c7ea08471ce6aca948f5ae83e4e011d branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fixes the following error/warnings with kconfig from linux-6.9-rc5: package/dovecot/Config.in:36: syntax error package/dovecot/Config.in:36:warning: ignoring unsupported character '/' package/dovecot/Config.in:36:warning: ignoring unsupported character '/' package/dovecot/Config.in:36:warning: ignoring unsupported character '.' package/dovecot/Config.in:36: invalid statement Signed-off-by: Peter Seiderer Signed-off-by: Thomas Petazzoni --- package/dovecot/Config.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/dovecot/Config.in b/package/dovecot/Config.in index c94421526f..034dcc175f 100644 --- a/package/dovecot/Config.in +++ b/package/dovecot/Config.in @@ -33,7 +33,7 @@ config BR2_PACKAGE_DOVECOT_SQLITE help Enable SQLite support. -source package/dovecot-pigeonhole/Config.in +source "package/dovecot-pigeonhole/Config.in" endif # BR2_PACKAGE_DOVECOT From thomas.petazzoni at bootlin.com Mon May 6 18:59:48 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 20:59:48 +0200 Subject: [Buildroot] [git commit] package/x11r7/Config.in: source argument needs quotation marks Message-ID: <20240506190223.9C14F8679E@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=a214c4568b2b93984be39ff8d3f9f4acb6af898c branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fixes the following error/warnings with kconfig from linux-6.9-rc5: package/x11r7/Config.in:14: syntax error package/x11r7/Config.in:14:warning: ignoring unsupported character '/' package/x11r7/Config.in:14:warning: ignoring unsupported character '/' package/x11r7/Config.in:14:warning: ignoring unsupported character '/' package/x11r7/Config.in:14:warning: ignoring unsupported character '.' package/x11r7/Config.in:14: invalid statement [...] Signed-off-by: Peter Seiderer Signed-off-by: Thomas Petazzoni --- package/x11r7/Config.in | 420 ++++++++++++++++++++++++------------------------ 1 file changed, 210 insertions(+), 210 deletions(-) diff --git a/package/x11r7/Config.in b/package/x11r7/Config.in index b91f97bb34..0002dfe598 100644 --- a/package/x11r7/Config.in +++ b/package/x11r7/Config.in @@ -11,232 +11,232 @@ menuconfig BR2_PACKAGE_XORG7 if BR2_PACKAGE_XORG7 menu "X11R7 Servers" - source package/x11r7/xserver_xorg-server/Config.in - source package/x11r7/xwayland/Config.in + source "package/x11r7/xserver_xorg-server/Config.in" + source "package/x11r7/xwayland/Config.in" endmenu menu "X11R7 Libraries" - source package/x11r7/libxcb/Config.in - source package/x11r7/xcb-util/Config.in - source package/x11r7/xcb-util-cursor/Config.in - source package/x11r7/xcb-util-image/Config.in - source package/x11r7/xcb-util-keysyms/Config.in - source package/x11r7/xcb-util-renderutil/Config.in - source package/x11r7/xcb-util-wm/Config.in - source package/x11r7/xlib_libFS/Config.in - source package/x11r7/xlib_libICE/Config.in - source package/x11r7/xlib_libSM/Config.in - source package/x11r7/xlib_libX11/Config.in - source package/x11r7/xlib_libXScrnSaver/Config.in - source package/x11r7/xlib_libXau/Config.in - source package/x11r7/xlib_libXaw/Config.in - source package/x11r7/xlib_libXcomposite/Config.in - source package/x11r7/xlib_libXcursor/Config.in - source package/x11r7/xlib_libXdamage/Config.in - source package/x11r7/xlib_libXdmcp/Config.in - source package/x11r7/xlib_libXext/Config.in - source package/x11r7/xlib_libXfixes/Config.in - source package/x11r7/xlib_libXfont/Config.in - source package/x11r7/xlib_libXfont2/Config.in - source package/x11r7/xlib_libXft/Config.in - source package/x11r7/xlib_libXi/Config.in - source package/x11r7/xlib_libXinerama/Config.in - source package/x11r7/xlib_libXmu/Config.in - source package/x11r7/xlib_libXpm/Config.in - source package/x11r7/xlib_libXpresent/Config.in - source package/x11r7/xlib_libXrandr/Config.in - source package/x11r7/xlib_libXrender/Config.in - source package/x11r7/xlib_libXres/Config.in - source package/x11r7/xlib_libXt/Config.in - source package/x11r7/xlib_libXtst/Config.in - source package/x11r7/xlib_libXv/Config.in - source package/x11r7/xlib_libXvMC/Config.in - source package/x11r7/xlib_libXxf86dga/Config.in - source package/x11r7/xlib_libXxf86vm/Config.in - source package/x11r7/xlib_libdmx/Config.in - source package/x11r7/xlib_libfontenc/Config.in - source package/x11r7/xlib_libxcvt/Config.in - source package/x11r7/xlib_libxkbfile/Config.in - source package/x11r7/xlib_libxshmfence/Config.in - source package/x11r7/xlib_xtrans/Config.in + source "package/x11r7/libxcb/Config.in" + source "package/x11r7/xcb-util/Config.in" + source "package/x11r7/xcb-util-cursor/Config.in" + source "package/x11r7/xcb-util-image/Config.in" + source "package/x11r7/xcb-util-keysyms/Config.in" + source "package/x11r7/xcb-util-renderutil/Config.in" + source "package/x11r7/xcb-util-wm/Config.in" + source "package/x11r7/xlib_libFS/Config.in" + source "package/x11r7/xlib_libICE/Config.in" + source "package/x11r7/xlib_libSM/Config.in" + source "package/x11r7/xlib_libX11/Config.in" + source "package/x11r7/xlib_libXScrnSaver/Config.in" + source "package/x11r7/xlib_libXau/Config.in" + source "package/x11r7/xlib_libXaw/Config.in" + source "package/x11r7/xlib_libXcomposite/Config.in" + source "package/x11r7/xlib_libXcursor/Config.in" + source "package/x11r7/xlib_libXdamage/Config.in" + source "package/x11r7/xlib_libXdmcp/Config.in" + source "package/x11r7/xlib_libXext/Config.in" + source "package/x11r7/xlib_libXfixes/Config.in" + source "package/x11r7/xlib_libXfont/Config.in" + source "package/x11r7/xlib_libXfont2/Config.in" + source "package/x11r7/xlib_libXft/Config.in" + source "package/x11r7/xlib_libXi/Config.in" + source "package/x11r7/xlib_libXinerama/Config.in" + source "package/x11r7/xlib_libXmu/Config.in" + source "package/x11r7/xlib_libXpm/Config.in" + source "package/x11r7/xlib_libXpresent/Config.in" + source "package/x11r7/xlib_libXrandr/Config.in" + source "package/x11r7/xlib_libXrender/Config.in" + source "package/x11r7/xlib_libXres/Config.in" + source "package/x11r7/xlib_libXt/Config.in" + source "package/x11r7/xlib_libXtst/Config.in" + source "package/x11r7/xlib_libXv/Config.in" + source "package/x11r7/xlib_libXvMC/Config.in" + source "package/x11r7/xlib_libXxf86dga/Config.in" + source "package/x11r7/xlib_libXxf86vm/Config.in" + source "package/x11r7/xlib_libdmx/Config.in" + source "package/x11r7/xlib_libfontenc/Config.in" + source "package/x11r7/xlib_libxcvt/Config.in" + source "package/x11r7/xlib_libxkbfile/Config.in" + source "package/x11r7/xlib_libxshmfence/Config.in" + source "package/x11r7/xlib_xtrans/Config.in" endmenu menu "X11R7 Applications" - source package/x11r7/xapp_appres/Config.in - source package/x11r7/xapp_bdftopcf/Config.in - source package/x11r7/xapp_beforelight/Config.in - source package/x11r7/xapp_bitmap/Config.in - source package/x11r7/xapp_editres/Config.in - source package/x11r7/xapp_fonttosfnt/Config.in - source package/x11r7/xapp_fslsfonts/Config.in - source package/x11r7/xapp_fstobdf/Config.in - source package/x11r7/xapp_iceauth/Config.in - source package/x11r7/xapp_ico/Config.in - source package/x11r7/xapp_listres/Config.in - source package/x11r7/xapp_luit/Config.in - source package/x11r7/xapp_mkfontscale/Config.in - source package/x11r7/xapp_oclock/Config.in - source package/x11r7/xapp_rgb/Config.in - source package/x11r7/xapp_rstart/Config.in - source package/x11r7/xapp_scripts/Config.in - source package/x11r7/xapp_sessreg/Config.in - source package/x11r7/xapp_setxkbmap/Config.in - source package/x11r7/xapp_showfont/Config.in - source package/x11r7/xapp_smproxy/Config.in - source package/x11r7/xapp_twm/Config.in - source package/x11r7/xapp_viewres/Config.in - source package/x11r7/xapp_x11perf/Config.in - source package/x11r7/xapp_xauth/Config.in - source package/x11r7/xapp_xbacklight/Config.in - source package/x11r7/xapp_xbiff/Config.in - source package/x11r7/xapp_xcalc/Config.in - source package/x11r7/xapp_xclipboard/Config.in - source package/x11r7/xapp_xclock/Config.in - source package/x11r7/xapp_xcmsdb/Config.in - source package/x11r7/xapp_xcompmgr/Config.in - source package/x11r7/xapp_xconsole/Config.in - source package/x11r7/xapp_xcursorgen/Config.in - source package/x11r7/xapp_xdbedizzy/Config.in - source package/x11r7/xapp_xditview/Config.in - source package/x11r7/xapp_xdm/Config.in - source package/x11r7/xapp_xdpyinfo/Config.in - source package/x11r7/xapp_xdriinfo/Config.in - source package/x11r7/xapp_xedit/Config.in - source package/x11r7/xapp_xev/Config.in - source package/x11r7/xapp_xeyes/Config.in - source package/x11r7/xapp_xf86dga/Config.in - source package/x11r7/xapp_xfd/Config.in - source package/x11r7/xapp_xfindproxy/Config.in - source package/x11r7/xapp_xfontsel/Config.in - source package/x11r7/xapp_xfs/Config.in - source package/x11r7/xapp_xfsinfo/Config.in - source package/x11r7/xapp_xgamma/Config.in - source package/x11r7/xapp_xgc/Config.in - source package/x11r7/xapp_xhost/Config.in - source package/x11r7/xapp_xinit/Config.in - source package/x11r7/xapp_xinput/Config.in - source package/x11r7/xapp_xinput-calibrator/Config.in - source package/x11r7/xapp_xkbcomp/Config.in - source package/x11r7/xapp_xkbevd/Config.in - source package/x11r7/xapp_xkbprint/Config.in - source package/x11r7/xapp_xkbutils/Config.in - source package/x11r7/xapp_xkill/Config.in - source package/x11r7/xapp_xload/Config.in - source package/x11r7/xapp_xlogo/Config.in - source package/x11r7/xapp_xlsatoms/Config.in - source package/x11r7/xapp_xlsclients/Config.in - source package/x11r7/xapp_xlsfonts/Config.in - source package/x11r7/xapp_xmag/Config.in - source package/x11r7/xapp_xman/Config.in - source package/x11r7/xapp_xmessage/Config.in - source package/x11r7/xapp_xmh/Config.in - source package/x11r7/xapp_xmodmap/Config.in - source package/x11r7/xapp_xmore/Config.in - source package/x11r7/xapp_xpr/Config.in - source package/x11r7/xapp_xprop/Config.in - source package/x11r7/xapp_xrandr/Config.in - source package/x11r7/xapp_xrdb/Config.in - source package/x11r7/xapp_xrefresh/Config.in - source package/x11r7/xapp_xset/Config.in - source package/x11r7/xapp_xsetmode/Config.in - source package/x11r7/xapp_xsetpointer/Config.in - source package/x11r7/xapp_xsetroot/Config.in - source package/x11r7/xapp_xsm/Config.in - source package/x11r7/xapp_xstdcmap/Config.in - source package/x11r7/xapp_xvidtune/Config.in - source package/x11r7/xapp_xvinfo/Config.in - source package/x11r7/xapp_xwd/Config.in - source package/x11r7/xapp_xwininfo/Config.in - source package/x11r7/xapp_xwud/Config.in + source "package/x11r7/xapp_appres/Config.in" + source "package/x11r7/xapp_bdftopcf/Config.in" + source "package/x11r7/xapp_beforelight/Config.in" + source "package/x11r7/xapp_bitmap/Config.in" + source "package/x11r7/xapp_editres/Config.in" + source "package/x11r7/xapp_fonttosfnt/Config.in" + source "package/x11r7/xapp_fslsfonts/Config.in" + source "package/x11r7/xapp_fstobdf/Config.in" + source "package/x11r7/xapp_iceauth/Config.in" + source "package/x11r7/xapp_ico/Config.in" + source "package/x11r7/xapp_listres/Config.in" + source "package/x11r7/xapp_luit/Config.in" + source "package/x11r7/xapp_mkfontscale/Config.in" + source "package/x11r7/xapp_oclock/Config.in" + source "package/x11r7/xapp_rgb/Config.in" + source "package/x11r7/xapp_rstart/Config.in" + source "package/x11r7/xapp_scripts/Config.in" + source "package/x11r7/xapp_sessreg/Config.in" + source "package/x11r7/xapp_setxkbmap/Config.in" + source "package/x11r7/xapp_showfont/Config.in" + source "package/x11r7/xapp_smproxy/Config.in" + source "package/x11r7/xapp_twm/Config.in" + source "package/x11r7/xapp_viewres/Config.in" + source "package/x11r7/xapp_x11perf/Config.in" + source "package/x11r7/xapp_xauth/Config.in" + source "package/x11r7/xapp_xbacklight/Config.in" + source "package/x11r7/xapp_xbiff/Config.in" + source "package/x11r7/xapp_xcalc/Config.in" + source "package/x11r7/xapp_xclipboard/Config.in" + source "package/x11r7/xapp_xclock/Config.in" + source "package/x11r7/xapp_xcmsdb/Config.in" + source "package/x11r7/xapp_xcompmgr/Config.in" + source "package/x11r7/xapp_xconsole/Config.in" + source "package/x11r7/xapp_xcursorgen/Config.in" + source "package/x11r7/xapp_xdbedizzy/Config.in" + source "package/x11r7/xapp_xditview/Config.in" + source "package/x11r7/xapp_xdm/Config.in" + source "package/x11r7/xapp_xdpyinfo/Config.in" + source "package/x11r7/xapp_xdriinfo/Config.in" + source "package/x11r7/xapp_xedit/Config.in" + source "package/x11r7/xapp_xev/Config.in" + source "package/x11r7/xapp_xeyes/Config.in" + source "package/x11r7/xapp_xf86dga/Config.in" + source "package/x11r7/xapp_xfd/Config.in" + source "package/x11r7/xapp_xfindproxy/Config.in" + source "package/x11r7/xapp_xfontsel/Config.in" + source "package/x11r7/xapp_xfs/Config.in" + source "package/x11r7/xapp_xfsinfo/Config.in" + source "package/x11r7/xapp_xgamma/Config.in" + source "package/x11r7/xapp_xgc/Config.in" + source "package/x11r7/xapp_xhost/Config.in" + source "package/x11r7/xapp_xinit/Config.in" + source "package/x11r7/xapp_xinput/Config.in" + source "package/x11r7/xapp_xinput-calibrator/Config.in" + source "package/x11r7/xapp_xkbcomp/Config.in" + source "package/x11r7/xapp_xkbevd/Config.in" + source "package/x11r7/xapp_xkbprint/Config.in" + source "package/x11r7/xapp_xkbutils/Config.in" + source "package/x11r7/xapp_xkill/Config.in" + source "package/x11r7/xapp_xload/Config.in" + source "package/x11r7/xapp_xlogo/Config.in" + source "package/x11r7/xapp_xlsatoms/Config.in" + source "package/x11r7/xapp_xlsclients/Config.in" + source "package/x11r7/xapp_xlsfonts/Config.in" + source "package/x11r7/xapp_xmag/Config.in" + source "package/x11r7/xapp_xman/Config.in" + source "package/x11r7/xapp_xmessage/Config.in" + source "package/x11r7/xapp_xmh/Config.in" + source "package/x11r7/xapp_xmodmap/Config.in" + source "package/x11r7/xapp_xmore/Config.in" + source "package/x11r7/xapp_xpr/Config.in" + source "package/x11r7/xapp_xprop/Config.in" + source "package/x11r7/xapp_xrandr/Config.in" + source "package/x11r7/xapp_xrdb/Config.in" + source "package/x11r7/xapp_xrefresh/Config.in" + source "package/x11r7/xapp_xset/Config.in" + source "package/x11r7/xapp_xsetmode/Config.in" + source "package/x11r7/xapp_xsetpointer/Config.in" + source "package/x11r7/xapp_xsetroot/Config.in" + source "package/x11r7/xapp_xsm/Config.in" + source "package/x11r7/xapp_xstdcmap/Config.in" + source "package/x11r7/xapp_xvidtune/Config.in" + source "package/x11r7/xapp_xvinfo/Config.in" + source "package/x11r7/xapp_xwd/Config.in" + source "package/x11r7/xapp_xwininfo/Config.in" + source "package/x11r7/xapp_xwud/Config.in" endmenu if BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR menu "X11R7 Drivers" - source package/x11r7/xdriver_xf86-input-evdev/Config.in - source package/x11r7/xdriver_xf86-input-joystick/Config.in - source package/x11r7/xdriver_xf86-input-libinput/Config.in - source package/x11r7/xdriver_xf86-input-mouse/Config.in - source package/x11r7/xdriver_xf86-input-synaptics/Config.in - source package/x11r7/xdriver_xf86-input-tslib/Config.in - source package/x11r7/xdriver_xf86-input-vmmouse/Config.in - source package/x11r7/xdriver_xf86-video-amdgpu/Config.in - source package/x11r7/xdriver_xf86-video-ark/Config.in - source package/x11r7/xdriver_xf86-video-ast/Config.in - source package/x11r7/xdriver_xf86-video-ati/Config.in - source package/x11r7/xdriver_xf86-video-cirrus/Config.in - source package/x11r7/xdriver_xf86-video-dummy/Config.in - source package/x11r7/xdriver_xf86-video-fbdev/Config.in - source package/x11r7/xdriver_xf86-video-fbturbo/Config.in - source package/x11r7/xdriver_xf86-video-geode/Config.in - source package/x11r7/xdriver_xf86-video-i128/Config.in - source package/x11r7/xdriver_xf86-video-imx/Config.in - source package/x11r7/xdriver_xf86-video-intel/Config.in - source package/x11r7/xdriver_xf86-video-mach64/Config.in - source package/x11r7/xdriver_xf86-video-mga/Config.in - source package/x11r7/xdriver_xf86-video-neomagic/Config.in - source package/x11r7/xdriver_xf86-video-nouveau/Config.in - source package/x11r7/xdriver_xf86-video-nv/Config.in - source package/x11r7/xdriver_xf86-video-openchrome/Config.in - source package/x11r7/xdriver_xf86-video-qxl/Config.in - source package/x11r7/xdriver_xf86-video-r128/Config.in - source package/x11r7/xdriver_xf86-video-savage/Config.in - source package/x11r7/xdriver_xf86-video-siliconmotion/Config.in - source package/x11r7/xdriver_xf86-video-sis/Config.in - source package/x11r7/xdriver_xf86-video-tdfx/Config.in - source package/x11r7/xdriver_xf86-video-trident/Config.in - source package/x11r7/xdriver_xf86-video-vesa/Config.in - source package/x11r7/xdriver_xf86-video-vmware/Config.in - source package/x11r7/xdriver_xf86-video-voodoo/Config.in + source "package/x11r7/xdriver_xf86-input-evdev/Config.in" + source "package/x11r7/xdriver_xf86-input-joystick/Config.in" + source "package/x11r7/xdriver_xf86-input-libinput/Config.in" + source "package/x11r7/xdriver_xf86-input-mouse/Config.in" + source "package/x11r7/xdriver_xf86-input-synaptics/Config.in" + source "package/x11r7/xdriver_xf86-input-tslib/Config.in" + source "package/x11r7/xdriver_xf86-input-vmmouse/Config.in" + source "package/x11r7/xdriver_xf86-video-amdgpu/Config.in" + source "package/x11r7/xdriver_xf86-video-ark/Config.in" + source "package/x11r7/xdriver_xf86-video-ast/Config.in" + source "package/x11r7/xdriver_xf86-video-ati/Config.in" + source "package/x11r7/xdriver_xf86-video-cirrus/Config.in" + source "package/x11r7/xdriver_xf86-video-dummy/Config.in" + source "package/x11r7/xdriver_xf86-video-fbdev/Config.in" + source "package/x11r7/xdriver_xf86-video-fbturbo/Config.in" + source "package/x11r7/xdriver_xf86-video-geode/Config.in" + source "package/x11r7/xdriver_xf86-video-i128/Config.in" + source "package/x11r7/xdriver_xf86-video-imx/Config.in" + source "package/x11r7/xdriver_xf86-video-intel/Config.in" + source "package/x11r7/xdriver_xf86-video-mach64/Config.in" + source "package/x11r7/xdriver_xf86-video-mga/Config.in" + source "package/x11r7/xdriver_xf86-video-neomagic/Config.in" + source "package/x11r7/xdriver_xf86-video-nouveau/Config.in" + source "package/x11r7/xdriver_xf86-video-nv/Config.in" + source "package/x11r7/xdriver_xf86-video-openchrome/Config.in" + source "package/x11r7/xdriver_xf86-video-qxl/Config.in" + source "package/x11r7/xdriver_xf86-video-r128/Config.in" + source "package/x11r7/xdriver_xf86-video-savage/Config.in" + source "package/x11r7/xdriver_xf86-video-siliconmotion/Config.in" + source "package/x11r7/xdriver_xf86-video-sis/Config.in" + source "package/x11r7/xdriver_xf86-video-tdfx/Config.in" + source "package/x11r7/xdriver_xf86-video-trident/Config.in" + source "package/x11r7/xdriver_xf86-video-vesa/Config.in" + source "package/x11r7/xdriver_xf86-video-vmware/Config.in" + source "package/x11r7/xdriver_xf86-video-voodoo/Config.in" endmenu endif menu "X11R7 Fonts" - source package/x11r7/xfont_font-util/Config.in - source package/x11r7/xfont_encodings/Config.in - source package/x11r7/xfont_font-adobe-100dpi/Config.in - source package/x11r7/xfont_font-adobe-75dpi/Config.in - source package/x11r7/xfont_font-adobe-utopia-100dpi/Config.in - source package/x11r7/xfont_font-adobe-utopia-75dpi/Config.in - source package/x11r7/xfont_font-adobe-utopia-type1/Config.in - source package/x11r7/xfont_font-alias/Config.in - source package/x11r7/xfont_font-arabic-misc/Config.in - source package/x11r7/xfont_font-bh-100dpi/Config.in - source package/x11r7/xfont_font-bh-75dpi/Config.in - source package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/Config.in - source package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/Config.in - source package/x11r7/xfont_font-bh-ttf/Config.in - source package/x11r7/xfont_font-bh-type1/Config.in - source package/x11r7/xfont_font-bitstream-100dpi/Config.in - source package/x11r7/xfont_font-bitstream-75dpi/Config.in - source package/x11r7/xfont_font-bitstream-type1/Config.in - source package/x11r7/xfont_font-cronyx-cyrillic/Config.in - source package/x11r7/xfont_font-cursor-misc/Config.in - source package/x11r7/xfont_font-daewoo-misc/Config.in - source package/x11r7/xfont_font-dec-misc/Config.in - source package/x11r7/xfont_font-ibm-type1/Config.in - source package/x11r7/xfont_font-isas-misc/Config.in - source package/x11r7/xfont_font-jis-misc/Config.in - source package/x11r7/xfont_font-micro-misc/Config.in - source package/x11r7/xfont_font-misc-cyrillic/Config.in - source package/x11r7/xfont_font-misc-ethiopic/Config.in - source package/x11r7/xfont_font-misc-meltho/Config.in - source package/x11r7/xfont_font-misc-misc/Config.in - source package/x11r7/xfont_font-mutt-misc/Config.in - source package/x11r7/xfont_font-schumacher-misc/Config.in - source package/x11r7/xfont_font-screen-cyrillic/Config.in - source package/x11r7/xfont_font-sony-misc/Config.in - source package/x11r7/xfont_font-sun-misc/Config.in - source package/x11r7/xfont_font-winitzki-cyrillic/Config.in - source package/x11r7/xfont_font-xfree86-type1/Config.in + source "package/x11r7/xfont_font-util/Config.in" + source "package/x11r7/xfont_encodings/Config.in" + source "package/x11r7/xfont_font-adobe-100dpi/Config.in" + source "package/x11r7/xfont_font-adobe-75dpi/Config.in" + source "package/x11r7/xfont_font-adobe-utopia-100dpi/Config.in" + source "package/x11r7/xfont_font-adobe-utopia-75dpi/Config.in" + source "package/x11r7/xfont_font-adobe-utopia-type1/Config.in" + source "package/x11r7/xfont_font-alias/Config.in" + source "package/x11r7/xfont_font-arabic-misc/Config.in" + source "package/x11r7/xfont_font-bh-100dpi/Config.in" + source "package/x11r7/xfont_font-bh-75dpi/Config.in" + source "package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/Config.in" + source "package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/Config.in" + source "package/x11r7/xfont_font-bh-ttf/Config.in" + source "package/x11r7/xfont_font-bh-type1/Config.in" + source "package/x11r7/xfont_font-bitstream-100dpi/Config.in" + source "package/x11r7/xfont_font-bitstream-75dpi/Config.in" + source "package/x11r7/xfont_font-bitstream-type1/Config.in" + source "package/x11r7/xfont_font-cronyx-cyrillic/Config.in" + source "package/x11r7/xfont_font-cursor-misc/Config.in" + source "package/x11r7/xfont_font-daewoo-misc/Config.in" + source "package/x11r7/xfont_font-dec-misc/Config.in" + source "package/x11r7/xfont_font-ibm-type1/Config.in" + source "package/x11r7/xfont_font-isas-misc/Config.in" + source "package/x11r7/xfont_font-jis-misc/Config.in" + source "package/x11r7/xfont_font-micro-misc/Config.in" + source "package/x11r7/xfont_font-misc-cyrillic/Config.in" + source "package/x11r7/xfont_font-misc-ethiopic/Config.in" + source "package/x11r7/xfont_font-misc-meltho/Config.in" + source "package/x11r7/xfont_font-misc-misc/Config.in" + source "package/x11r7/xfont_font-mutt-misc/Config.in" + source "package/x11r7/xfont_font-schumacher-misc/Config.in" + source "package/x11r7/xfont_font-screen-cyrillic/Config.in" + source "package/x11r7/xfont_font-sony-misc/Config.in" + source "package/x11r7/xfont_font-sun-misc/Config.in" + source "package/x11r7/xfont_font-winitzki-cyrillic/Config.in" + source "package/x11r7/xfont_font-xfree86-type1/Config.in" endmenu menu "X11R7 X protocols" - source package/x11r7/xcb-proto/Config.in - source package/x11r7/xorgproto/Config.in + source "package/x11r7/xcb-proto/Config.in" + source "package/x11r7/xorgproto/Config.in" endmenu menu "X11R7 Utilities" - source package/x11r7/xutil_makedepend/Config.in - source package/x11r7/mcookie/Config.in + source "package/x11r7/xutil_makedepend/Config.in" + source "package/x11r7/mcookie/Config.in" endmenu menu "X11R7 Other data" - source package/x11r7/xdata_xbitmaps/Config.in - source package/x11r7/xdata_xcursor-themes/Config.in - source package/x11r7/xcursor-transparent-theme/Config.in + source "package/x11r7/xdata_xbitmaps/Config.in" + source "package/x11r7/xdata_xcursor-themes/Config.in" + source "package/x11r7/xcursor-transparent-theme/Config.in" endmenu endif From thomas.petazzoni at bootlin.com Mon May 6 19:02:48 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:02:48 +0200 Subject: [Buildroot] [PATCH 1/2] configs/acmesystems_acqua_a5_*: add hashes for Linux/at91bootstrap3 In-Reply-To: <51910310-86f7-43cf-8288-43c48c6ccd90@grenoble.cnrs.fr> References: <51910310-86f7-43cf-8288-43c48c6ccd90@grenoble.cnrs.fr> Message-ID: <20240506210248.5edde96a@windsurf> On Mon, 6 May 2024 17:22:49 +0200 Edgar Bonet wrote: > And enable BR2_DOWNLOAD_FORCE_CHECK_HASHES. > > Signed-off-by: Edgar Bonet > --- > .checkpackageignore | 2 -- > .../acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash | 2 ++ > .../acqua-a5/patches/linux-headers/linux-headers.hash | 1 + > board/acmesystems/acqua-a5/patches/linux/linux.hash | 2 ++ > configs/acmesystems_acqua_a5_256mb_defconfig | 2 ++ > configs/acmesystems_acqua_a5_512mb_defconfig | 2 ++ > 6 files changed, 9 insertions(+), 2 deletions(-) > create mode 100644 board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash > create mode 120000 board/acmesystems/acqua-a5/patches/linux-headers/linux-headers.hash > create mode 100644 board/acmesystems/acqua-a5/patches/linux/linux.hash Both applied, thanks! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From ps.report at gmx.net Mon May 6 14:45:49 2024 From: ps.report at gmx.net (Peter Seiderer) Date: Mon, 6 May 2024 16:45:49 +0200 Subject: [Buildroot] [PATCH v1 6/8] support/kconfig: bump to linux-v6.9-rc5 version In-Reply-To: <20240506144555.31709-1-ps.report@gmx.net> References: <20240506144555.31709-1-ps.report@gmx.net> Message-ID: <20240506144555.31709-7-ps.report@gmx.net> - update RAEDME.buildroot (add copy step for kconfig.new, update copy steps for *_shipped files - rebased 01-kconfig-kernel-to-buildroot.patch - rebased 06-br-build-system-integration.patch - updated 10-br-build-system.patch - removed 11-use-mktemp-for-lxdialog.patch (no longer applicable) - rebased 12-fix-glade-file-path.patch - rebased 14-support-out-of-tree-config.patch - rebased 16-fix-space-to-de-select-options.patch - removed 17-backport-kecho.patch (use complete Kbuild.include instead of backporting single parts) - rebased 18-merge-config.sh-create-temporary-files-in-tmp.patch - rebased 19-merge_config.sh-add-br2-external-support.patch - removed 20-merge_config.sh-Allow-to-define-config-prefix.patch (already upstream included) - removed 21-Avoid-false-positive-matches-from-comment-lines.patch (already upstream included) - removed 22-kconfig-lxdialog-fix-check-with-GCC14.patch (no longer applicable) - new 23-Revert-kconfig-allow-only-config-comment-and-if-insi.patch (revert to re-enable source statement inside of choice, as suggested by Yann E. MORIN, see [1]) [1] https://lore.kernel.org/buildroot/Zhdu7zT3FZl7sk1q at landeda/ Signed-off-by: Peter Seiderer --- support/kconfig/Kbuild.include | 273 ++ support/kconfig/Makefile | 375 +- support/kconfig/Makefile.br | 10 +- support/kconfig/POTFILES.in | 12 - support/kconfig/README.buildroot | 9 +- support/kconfig/array_size.h | 11 + support/kconfig/check.sh | 14 - support/kconfig/conf.c | 562 ++- support/kconfig/confdata.c | 1358 +++--- support/kconfig/expr.c | 29 +- support/kconfig/expr.h | 49 +- support/kconfig/foo.h | 12 - support/kconfig/gconf-cfg.sh | 33 + support/kconfig/gconf.c | 100 +- support/kconfig/hashtable.h | 48 + support/kconfig/images.c | 34 +- support/kconfig/images.h | 33 + support/kconfig/internal.h | 21 + support/kconfig/kconf_id.c | 53 - support/kconfig/kxgettext.c | 235 - support/kconfig/lexer.l | 460 ++ support/kconfig/lexer.lex.c_shipped | 4103 +++++++++++++++++ support/kconfig/list.h | 254 +- support/kconfig/list_types.h | 17 + support/kconfig/lkc.h | 117 +- support/kconfig/lkc_proto.h | 33 +- support/kconfig/lxdialog/.gitignore | 4 - support/kconfig/lxdialog/BIG.FAT.WARNING | 2 +- support/kconfig/lxdialog/check-lxdialog.sh | 93 - support/kconfig/lxdialog/checklist.c | 26 +- support/kconfig/lxdialog/dialog.h | 76 +- support/kconfig/lxdialog/inputbox.c | 24 +- support/kconfig/lxdialog/menubox.c | 35 +- support/kconfig/lxdialog/textbox.c | 330 +- support/kconfig/lxdialog/util.c | 41 +- support/kconfig/lxdialog/yesno.c | 21 +- support/kconfig/mconf-cfg.sh | 55 + support/kconfig/mconf.c | 529 +-- support/kconfig/menu.c | 345 +- support/kconfig/merge_config.sh | 91 +- support/kconfig/mnconf-common.c | 53 + support/kconfig/mnconf-common.h | 18 + support/kconfig/nconf-cfg.sh | 53 + support/kconfig/nconf.c | 297 +- support/kconfig/nconf.gui.c | 329 +- support/kconfig/nconf.h | 62 +- support/kconfig/parser.tab.c_shipped | 2189 +++++++++ support/kconfig/parser.tab.h_shipped | 134 + support/kconfig/{zconf.y => parser.y} | 467 +- .../01-kconfig-kernel-to-buildroot.patch | 115 +- .../06-br-build-system-integration.patch | 103 +- .../kconfig/patches/10-br-build-system.patch | 66 +- .../patches/11-use-mktemp-for-lxdialog.patch | 17 - .../patches/12-fix-glade-file-path.patch | 14 +- .../14-support-out-of-tree-config.patch | 202 +- .../16-fix-space-to-de-select-options.patch | 19 +- .../kconfig/patches/17-backport-kecho.patch | 26 - ...fig.sh-create-temporary-files-in-tmp.patch | 19 +- ...e_config.sh-add-br2-external-support.patch | 24 +- ...fig.sh-Allow-to-define-config-prefix.patch | 31 - ...-positive-matches-from-comment-lines.patch | 32 - ...config-lxdialog-fix-check-with-GCC14.patch | 43 - ...llow-only-config-comment-and-if-insi.patch | 956 ++++ support/kconfig/patches/series | 6 +- support/kconfig/preprocess.c | 580 +++ support/kconfig/preprocess.h | 19 + support/kconfig/qconf-cfg.sh | 40 + support/kconfig/qconf.cc | 1199 ++--- support/kconfig/qconf.h | 163 +- support/kconfig/streamline_config.pl | 104 +- support/kconfig/symbol.c | 374 +- support/kconfig/util.c | 122 +- support/kconfig/zconf.l | 372 -- support/kconfig/zconf.lex.c_shipped | 2500 ---------- support/kconfig/zconf.tab.c_shipped | 2488 ---------- 75 files changed, 12875 insertions(+), 10288 deletions(-) create mode 100644 support/kconfig/Kbuild.include delete mode 100644 support/kconfig/POTFILES.in create mode 100644 support/kconfig/array_size.h delete mode 100755 support/kconfig/check.sh delete mode 100644 support/kconfig/foo.h create mode 100755 support/kconfig/gconf-cfg.sh create mode 100644 support/kconfig/hashtable.h create mode 100644 support/kconfig/images.h create mode 100644 support/kconfig/internal.h delete mode 100644 support/kconfig/kconf_id.c delete mode 100644 support/kconfig/kxgettext.c create mode 100644 support/kconfig/lexer.l create mode 100644 support/kconfig/lexer.lex.c_shipped create mode 100644 support/kconfig/list_types.h delete mode 100644 support/kconfig/lxdialog/.gitignore delete mode 100755 support/kconfig/lxdialog/check-lxdialog.sh create mode 100755 support/kconfig/mconf-cfg.sh create mode 100644 support/kconfig/mnconf-common.c create mode 100644 support/kconfig/mnconf-common.h create mode 100755 support/kconfig/nconf-cfg.sh create mode 100644 support/kconfig/parser.tab.c_shipped create mode 100644 support/kconfig/parser.tab.h_shipped rename support/kconfig/{zconf.y => parser.y} (56%) delete mode 100644 support/kconfig/patches/11-use-mktemp-for-lxdialog.patch delete mode 100644 support/kconfig/patches/17-backport-kecho.patch delete mode 100644 support/kconfig/patches/20-merge_config.sh-Allow-to-define-config-prefix.patch delete mode 100644 support/kconfig/patches/21-Avoid-false-positive-matches-from-comment-lines.patch delete mode 100644 support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch create mode 100644 support/kconfig/patches/23-Revert-kconfig-allow-only-config-comment-and-if-insi.patch create mode 100644 support/kconfig/preprocess.c create mode 100644 support/kconfig/preprocess.h create mode 100755 support/kconfig/qconf-cfg.sh delete mode 100644 support/kconfig/zconf.l delete mode 100644 support/kconfig/zconf.lex.c_shipped delete mode 100644 support/kconfig/zconf.tab.c_shipped diff --git a/support/kconfig/Kbuild.include b/support/kconfig/Kbuild.include new file mode 100644 index 0000000000..2f33187981 --- /dev/null +++ b/support/kconfig/Kbuild.include @@ -0,0 +1,273 @@ +# SPDX-License-Identifier: GPL-2.0 +#### +# kbuild: Generic definitions + +# Convenient variables +comma := , +quote := " +squote := ' +empty := +space := $(empty) $(empty) +space_escape := _-_SPACE_-_ +pound := \# +define newline + + +endef + +### +# Comparison macros. +# Usage: $(call test-lt, $(CONFIG_LLD_VERSION), 150000) +# +# Use $(intcmp ...) if supported. (Make >= 4.4) +# Otherwise, fall back to the 'test' shell command. +ifeq ($(intcmp 1,0,,,y),y) +test-ge = $(intcmp $(strip $1)0, $(strip $2)0,,y,y) +test-gt = $(intcmp $(strip $1)0, $(strip $2)0,,,y) +else +test-ge = $(shell test $(strip $1)0 -ge $(strip $2)0 && echo y) +test-gt = $(shell test $(strip $1)0 -gt $(strip $2)0 && echo y) +endif +test-le = $(call test-ge, $2, $1) +test-lt = $(call test-gt, $2, $1) + +### +# Name of target with a '.' as filename prefix. foo/bar.o => foo/.bar.o +dot-target = $(dir $@).$(notdir $@) + +### +# Name of target with a '.tmp_' as filename prefix. foo/bar.o => foo/.tmp_bar.o +tmp-target = $(dir $@).tmp_$(notdir $@) + +### +# The temporary file to save gcc -MMD generated dependencies must not +# contain a comma +depfile = $(subst $(comma),_,$(dot-target).d) + +### +# filename of target with directory and extension stripped +basetarget = $(basename $(notdir $@)) + +### +# real prerequisites without phony targets +real-prereqs = $(filter-out $(PHONY), $^) + +### +# Escape single quote for use in echo statements +escsq = $(subst $(squote),'\$(squote)',$1) + +### +# Quote a string to pass it to C files. foo => '"foo"' +stringify = $(squote)$(quote)$1$(quote)$(squote) + +### +# The path to Kbuild or Makefile. Kbuild has precedence over Makefile. +kbuild-dir = $(if $(filter /%,$(src)),$(src),$(srctree)/$(src)) +kbuild-file = $(or $(wildcard $(kbuild-dir)/Kbuild),$(kbuild-dir)/Makefile) + +### +# Read a file, replacing newlines with spaces +# +# Make 4.2 or later can read a file by using its builtin function. +ifneq ($(filter-out 3.% 4.0 4.1, $(MAKE_VERSION)),) +read-file = $(subst $(newline),$(space),$(file < $1)) +else +read-file = $(shell cat $1 2>/dev/null) +endif + +### +# Easy method for doing a status message + kecho := : + quiet_kecho := echo +silent_kecho := : +kecho := $($(quiet)kecho) + +### +# filechk is used to check if the content of a generated file is updated. +# Sample usage: +# +# filechk_sample = echo $(KERNELRELEASE) +# version.h: FORCE +# $(call filechk,sample) +# +# The rule defined shall write to stdout the content of the new file. +# The existing file will be compared with the new one. +# - If no file exist it is created +# - If the content differ the new file is used +# - If they are equal no change, and no timestamp update +define filechk + $(check-FORCE) + $(Q)set -e; \ + mkdir -p $(dir $@); \ + trap "rm -f $(tmp-target)" EXIT; \ + { $(filechk_$(1)); } > $(tmp-target); \ + if [ ! -r $@ ] || ! cmp -s $@ $(tmp-target); then \ + $(kecho) ' UPD $@'; \ + mv -f $(tmp-target) $@; \ + fi +endef + +### +# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build obj= +# Usage: +# $(Q)$(MAKE) $(build)=dir +build := -f $(srctree)/scripts/Makefile.build obj + +### +# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj= +# Usage: +# $(Q)$(MAKE) $(clean)=dir +clean := -f $(srctree)/scripts/Makefile.clean obj + +# pring log +# +# If quiet is "silent_", print nothing and sink stdout +# If quiet is "quiet_", print short log +# If quiet is empty, print short log and whole command +silent_log_print = exec >/dev/null; + quiet_log_print = $(if $(quiet_cmd_$1), echo ' $(call escsq,$(quiet_cmd_$1)$(why))';) + log_print = echo '$(pound) $(call escsq,$(or $(quiet_cmd_$1),cmd_$1 $@)$(why))'; \ + echo ' $(call escsq,$(cmd_$1))'; + +# Delete the target on interruption +# +# GNU Make automatically deletes the target if it has already been changed by +# the interrupted recipe. So, you can safely stop the build by Ctrl-C (Make +# will delete incomplete targets), and resume it later. +# +# However, this does not work when the stderr is piped to another program, like +# $ make >&2 | tee log +# Make dies with SIGPIPE before cleaning the targets. +# +# To address it, we clean the target in signal traps. +# +# Make deletes the target when it catches SIGHUP, SIGINT, SIGQUIT, SIGTERM. +# So, we cover them, and also SIGPIPE just in case. +# +# Of course, this is unneeded for phony targets. +delete-on-interrupt = \ + $(if $(filter-out $(PHONY), $@), \ + $(foreach sig, HUP INT QUIT TERM PIPE, \ + trap 'rm -f $@; trap - $(sig); kill -s $(sig) $$$$' $(sig);)) + +# print and execute commands +cmd = @$(if $(cmd_$(1)),set -e; $($(quiet)log_print) $(delete-on-interrupt) $(cmd_$(1)),:) + +### +# if_changed - execute command if any prerequisite is newer than +# target, or command line has changed +# if_changed_dep - as if_changed, but uses fixdep to reveal dependencies +# including used config symbols +# if_changed_rule - as if_changed but execute rule instead +# See Documentation/kbuild/makefiles.rst for more info + +ifneq ($(KBUILD_NOCMDDEP),1) +# Check if both commands are the same including their order. Result is empty +# string if equal. User may override this check using make KBUILD_NOCMDDEP=1 +# If the target does not exist, the *.cmd file should not be included so +# $(savedcmd_$@) gets empty. Then, target will be built even if $(newer-prereqs) +# happens to become empty. +cmd-check = $(filter-out $(subst $(space),$(space_escape),$(strip $(savedcmd_$@))), \ + $(subst $(space),$(space_escape),$(strip $(cmd_$1)))) +else +# We still need to detect missing targets. +cmd-check = $(if $(strip $(savedcmd_$@)),,1) +endif + +# Replace >$< with >$$< to preserve $ when reloading the .cmd file +# (needed for make) +# Replace >#< with >$(pound)< to avoid starting a comment in the .cmd file +# (needed for make) +# Replace >'< with >'\''< to be able to enclose the whole string in '...' +# (needed for the shell) +make-cmd = $(call escsq,$(subst $(pound),$$(pound),$(subst $$,$$$$,$(cmd_$(1))))) + +# Find any prerequisites that are newer than target or that do not exist. +# PHONY targets skipped in both cases. +# If there is no prerequisite other than phony targets, $(newer-prereqs) becomes +# empty even if the target does not exist. cmd-check saves this corner case. +newer-prereqs = $(filter-out $(PHONY),$?) + +# It is a typical mistake to forget the FORCE prerequisite. Check it here so +# no more breakage will slip in. +check-FORCE = $(if $(filter FORCE, $^),,$(warning FORCE prerequisite is missing)) + +if-changed-cond = $(newer-prereqs)$(cmd-check)$(check-FORCE) + +# Execute command if command has changed or prerequisite(s) are updated. +if_changed = $(if $(if-changed-cond),$(cmd_and_savecmd),@:) + +cmd_and_savecmd = \ + $(cmd); \ + printf '%s\n' 'savedcmd_$@ := $(make-cmd)' > $(dot-target).cmd + +# Execute the command and also postprocess generated .d dependencies file. +if_changed_dep = $(if $(if-changed-cond),$(cmd_and_fixdep),@:) + +cmd_and_fixdep = \ + $(cmd); \ + scripts/basic/fixdep $(depfile) $@ '$(make-cmd)' > $(dot-target).cmd;\ + rm -f $(depfile) + +# Usage: $(call if_changed_rule,foo) +# Will check if $(cmd_foo) or any of the prerequisites changed, +# and if so will execute $(rule_foo). +if_changed_rule = $(if $(if-changed-cond),$(rule_$(1)),@:) + +### +# why - tell why a target got built +# enabled by make V=2 +# Output (listed in the order they are checked): +# (1) - due to target is PHONY +# (2) - due to target missing +# (3) - due to: file1.h file2.h +# (4) - due to command line change +# (5) - due to missing .cmd file +# (6) - due to target not in $(targets) +# (1) PHONY targets are always build +# (2) No target, so we better build it +# (3) Prerequisite is newer than target +# (4) The command line stored in the file named dir/.target.cmd +# differed from actual command line. This happens when compiler +# options changes +# (5) No dir/.target.cmd file (used to store command line) +# (6) No dir/.target.cmd file and target not listed in $(targets) +# This is a good hint that there is a bug in the kbuild file +ifneq ($(findstring 2, $(KBUILD_VERBOSE)),) +_why = \ + $(if $(filter $@, $(PHONY)),- due to target is PHONY, \ + $(if $(wildcard $@), \ + $(if $(newer-prereqs),- due to: $(newer-prereqs), \ + $(if $(cmd-check), \ + $(if $(savedcmd_$@),- due to command line change, \ + $(if $(filter $@, $(targets)), \ + - due to missing .cmd file, \ + - due to $(notdir $@) not in $$(targets) \ + ) \ + ) \ + ) \ + ), \ + - due to target missing \ + ) \ + ) + +why = $(space)$(strip $(_why)) +endif + +############################################################################### + +# delete partially updated (i.e. corrupted) files on error +.DELETE_ON_ERROR: + +# do not delete intermediate files automatically +# +# .NOTINTERMEDIATE is more correct, but only available on newer Make versions. +# Make 4.4 introduced .NOTINTERMEDIATE, and it appears in .FEATURES, but the +# global .NOTINTERMEDIATE does not work. We can use it on Make > 4.4. +# Use .SECONDARY for older Make versions, but "newer-prereq" cannot detect +# deleted files. +ifneq ($(and $(filter notintermediate, $(.FEATURES)),$(filter-out 4.4,$(MAKE_VERSION))),) +.NOTINTERMEDIATE: +else +.SECONDARY: +endif diff --git a/support/kconfig/Makefile b/support/kconfig/Makefile index b0bcc2627a..f5f934d644 100644 --- a/support/kconfig/Makefile +++ b/support/kconfig/Makefile @@ -3,14 +3,10 @@ # Kernel configuration targets # These targets are used from top-level makefile -PHONY += xconfig gconfig menuconfig config syncconfig update-po-config \ - localmodconfig localyesconfig +HOSTPKG_CONFIG = pkg-config +export HOSTPKG_CONFIG -# Easy method for doing a status message - kecho := : - quiet_kecho := echo -silent_kecho := : -kecho := $($(quiet)kecho) +include $(src)/Kbuild.include ifdef KBUILD_KCONFIG Kconfig := $(KBUILD_KCONFIG) @@ -18,103 +14,87 @@ else Kconfig := Kconfig endif +ifndef KBUILD_DEFCONFIG +KBUILD_DEFCONFIG := defconfig +endif + ifeq ($(quiet),silent_) silent := -s endif -# We need this, in case the user has it in its environment -unexport CONFIG_ +export KCONFIG_DEFCONFIG_LIST := +ifndef cross_compiling +kernel-release := $(shell uname -r) +KCONFIG_DEFCONFIG_LIST += \ + /lib/modules/$(kernel-release)/.config \ + /etc/kernel-config \ + /boot/config-$(kernel-release) +endif +KCONFIG_DEFCONFIG_LIST += arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) -xconfig: $(obj)/qconf - $< $(silent) $(Kconfig) +ifneq ($(findstring c, $(KBUILD_EXTRA_WARN)),) +export KCONFIG_WARN_UNKNOWN_SYMBOLS=1 +endif -gconfig: $(obj)/gconf - $< $(silent) $(Kconfig) +ifneq ($(findstring e, $(KBUILD_EXTRA_WARN)),) +export KCONFIG_WERROR=1 +endif -menuconfig: $(obj)/mconf - $< $(silent) $(Kconfig) +# We need this, in case the user has it in its environment +unexport CONFIG_ -config: $(obj)/conf - $< $(silent) --oldaskconfig $(Kconfig) +config-prog := conf +menuconfig-prog := mconf +nconfig-prog := nconf +gconfig-prog := gconf +xconfig-prog := qconf -nconfig: $(obj)/nconf - $< $(silent) $(Kconfig) +define config_rule +PHONY += $(1) +$(1): $(obj)/$($(1)-prog) + $(Q)$$< $(silent) $(Kconfig) -# This has become an internal implementation detail and is now deprecated -# for external use. -syncconfig: $(obj)/conf - $(Q)mkdir -p include/config include/generated - $< $(silent) --$@ $(Kconfig) +PHONY += build_$(1) +build_$(1): $(obj)/$($(1)-prog) +endef +$(foreach c, config menuconfig nconfig gconfig xconfig, $(eval $(call config_rule,$(c)))) + +PHONY += localmodconfig localyesconfig localyesconfig localmodconfig: $(obj)/conf - $(Q)mkdir -p include/config include/generated - $(Q)perl $(srctree)/$(src)/streamline_config.pl --$@ $(srctree) $(Kconfig) > .tmp.config - $(Q)if [ -f .config ]; then \ - cmp -s .tmp.config .config || \ - (mv -f .config .config.old.1; \ - mv -f .tmp.config .config; \ - $< $(silent) --oldconfig $(Kconfig); \ - mv -f .config.old.1 .config.old) \ - else \ - mv -f .tmp.config .config; \ - $< $(silent) --oldconfig $(Kconfig); \ + $(Q)$(PERL) $(srctree)/$(src)/streamline_config.pl --$@ $(srctree) $(Kconfig) > .tmp.config + $(Q)if [ -f .config ]; then \ + cmp -s .tmp.config .config || \ + (mv -f .config .config.old.1; \ + mv -f .tmp.config .config; \ + $< $(silent) --oldconfig $(Kconfig); \ + mv -f .config.old.1 .config.old) \ + else \ + mv -f .tmp.config .config; \ + $< $(silent) --oldconfig $(Kconfig); \ fi $(Q)rm -f .tmp.config -# Create new linux.pot file -# Adjust charset to UTF-8 in .po file to accept UTF-8 in Kconfig files -update-po-config: $(obj)/kxgettext $(obj)/gconf.glade.h - $(Q)$(kecho) " GEN config.pot" - $(Q)xgettext --default-domain=linux \ - --add-comments --keyword=_ --keyword=N_ \ - --from-code=UTF-8 \ - --files-from=$(srctree)/scripts/kconfig/POTFILES.in \ - --directory=$(srctree) --directory=$(objtree) \ - --output $(obj)/config.pot - $(Q)sed -i s/CHARSET/UTF-8/ $(obj)/config.pot - $(Q)(for i in `ls $(srctree)/arch/*/Kconfig \ - $(srctree)/arch/*/um/Kconfig`; \ - do \ - $(kecho) " GEN $$i"; \ - $(obj)/kxgettext $$i \ - >> $(obj)/config.pot; \ - done ) - $(Q)$(kecho) " GEN linux.pot" - $(Q)msguniq --sort-by-file --to-code=UTF-8 $(obj)/config.pot \ - --output $(obj)/linux.pot - $(Q)rm -f $(obj)/config.pot - # These targets map 1:1 to the commandline options of 'conf' +# +# Note: +# syncconfig has become an internal implementation detail and is now +# deprecated for external use simple-targets := oldconfig allnoconfig allyesconfig allmodconfig \ - alldefconfig randconfig listnewconfig olddefconfig + alldefconfig randconfig listnewconfig olddefconfig syncconfig \ + helpnewconfig yes2modconfig mod2yesconfig mod2noconfig + PHONY += $(simple-targets) $(simple-targets): $(obj)/conf - $< $(silent) --$@ $(Kconfig) - -PHONY += oldnoconfig silentoldconfig savedefconfig defconfig - -# oldnoconfig is an alias of olddefconfig, because people already are dependent -# on its behavior (sets new symbols to their default value but not 'n') with the -# counter-intuitive name. -oldnoconfig: olddefconfig - @echo " WARNING: \"oldnoconfig\" target will be removed after Linux 4.19" - @echo " Please use \"olddefconfig\" instead, which is an alias." + $(Q)$< $(silent) --$@ $(Kconfig) -# We do not expect manual invokcation of "silentoldcofig" (or "syncconfig"). -silentoldconfig: syncconfig - @echo " WARNING: \"silentoldconfig\" has been renamed to \"syncconfig\"" - @echo " and is now an internal implementation detail." - @echo " What you want is probably \"oldconfig\"." - @echo " \"silentoldconfig\" will be removed after Linux 4.19" +PHONY += savedefconfig defconfig savedefconfig: $(obj)/conf - $< $(silent) --$@=defconfig $(Kconfig) + $(Q)$< $(silent) --$@=defconfig $(Kconfig) defconfig: $(obj)/conf -ifeq ($(KBUILD_DEFCONFIG),) - $< $(silent) --defconfig $(Kconfig) -else ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)),) @$(kecho) "*** Default configuration is based on '$(KBUILD_DEFCONFIG)'" $(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) $(Kconfig) @@ -122,49 +102,45 @@ else @$(kecho) "*** Default configuration is based on target '$(KBUILD_DEFCONFIG)'" $(Q)$(MAKE) -f $(srctree)/Makefile $(KBUILD_DEFCONFIG) endif -endif %_defconfig: $(obj)/conf $(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig) -configfiles=$(wildcard $(srctree)/kernel/configs/$@ $(srctree)/arch/$(SRCARCH)/configs/$@) +configfiles = $(wildcard $(srctree)/kernel/configs/$(1) $(srctree)/arch/$(SRCARCH)/configs/$(1)) +all-config-fragments = $(call configfiles,*.config) +config-fragments = $(call configfiles,$@) %.config: $(obj)/conf - $(if $(call configfiles),, $(error No configuration exists for this target on this architecture)) - $(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh -m .config $(configfiles) - +$(Q)yes "" | $(MAKE) -f $(srctree)/Makefile oldconfig - -PHONY += kvmconfig -kvmconfig: kvm_guest.config - @: - -PHONY += xenconfig -xenconfig: xen.config - @: + $(if $(config-fragments),, $(error $@ fragment does not exists on this architecture)) + $(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh -m $(KCONFIG_CONFIG) $(config-fragments) + $(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig PHONY += tinyconfig tinyconfig: - $(Q)$(MAKE) -f $(srctree)/Makefile allnoconfig tiny.config + $(Q)KCONFIG_ALLCONFIG=kernel/configs/tiny-base.config $(MAKE) -f $(srctree)/Makefile allnoconfig + $(Q)$(MAKE) -f $(srctree)/Makefile tiny.config # CHECK: -o cache_dir= working? PHONY += testconfig testconfig: $(obj)/conf - $(PYTHON3) -B -m pytest $(srctree)/$(src)/tests \ + $(Q)$(PYTHON3) -B -m pytest $(srctree)/$(src)/tests \ -o cache_dir=$(abspath $(obj)/tests/.cache) \ $(if $(findstring 1,$(KBUILD_VERBOSE)),--capture=no) -clean-dirs += tests/.cache +clean-files += tests/.cache # Help text used by make help help: + @echo 'Configuration targets:' @echo ' config - Update current config utilising a line-oriented program' - @echo ' nconfig - Update current config utilising a ncurses menu based' - @echo ' program' + @echo ' nconfig - Update current config utilising a ncurses menu based program' @echo ' menuconfig - Update current config utilising a menu based program' @echo ' xconfig - Update current config utilising a Qt based front-end' @echo ' gconfig - Update current config utilising a GTK+ based front-end' @echo ' oldconfig - Update current config utilising a provided .config as base' @echo ' localmodconfig - Update current config disabling modules not loaded' + @echo ' except those preserved by LMC_KEEP environment variable' @echo ' localyesconfig - Update current config converting local mods to core' + @echo ' except those preserved by LMC_KEEP environment variable' @echo ' defconfig - New config with default from ARCH supplied defconfig' @echo ' savedefconfig - Save current config as ./defconfig (minimal config)' @echo ' allnoconfig - New config where all options are answered with no' @@ -172,171 +148,100 @@ help: @echo ' allmodconfig - New config selecting modules when possible' @echo ' alldefconfig - New config with all symbols set to default' @echo ' randconfig - New config with random answer to all options' + @echo ' yes2modconfig - Change answers from yes to mod if possible' + @echo ' mod2yesconfig - Change answers from mod to yes if possible' + @echo ' mod2noconfig - Change answers from mod to no if possible' @echo ' listnewconfig - List new options' + @echo ' helpnewconfig - List new options and help text' @echo ' olddefconfig - Same as oldconfig but sets new symbols to their' @echo ' default value without prompting' - @echo ' kvmconfig - Enable additional options for kvm guest kernel support' - @echo ' xenconfig - Enable additional options for xen dom0 and guest kernel support' @echo ' tinyconfig - Configure the tiniest possible kernel' - -# lxdialog stuff -check-lxdialog := $(srctree)/$(src)/lxdialog/check-lxdialog.sh - -# Use recursively expanded variables so we do not call gcc unless -# we really need to do so. (Do not call gcc as part of make mrproper) -HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags) \ - -DLOCALE + @echo ' testconfig - Run Kconfig unit tests (requires python3 and pytest)' + @echo '' + @echo 'Configuration topic targets:' + @$(foreach f, $(all-config-fragments), \ + if help=$$(grep -m1 '^# Help: ' $(f)); then \ + printf ' %-25s - %s\n' '$(notdir $(f))' "$${help#*: }"; \ + fi;) # =========================================================================== -# Shared Makefile for the various kconfig executables: -# conf: Used for defconfig, oldconfig and related targets -# nconf: Used for the nconfig target. -# Utilizes ncurses -# mconf: Used for the menuconfig target -# Utilizes the lxdialog package -# qconf: Used for the xconfig target -# Based on Qt which needs to be installed to compile it -# gconf: Used for the gconfig target -# Based on GTK+ which needs to be installed to compile it # object files used by all kconfig flavours +common-objs := confdata.o expr.o lexer.lex.o menu.o parser.tab.o \ + preprocess.o symbol.o util.o -lxdialog := lxdialog/checklist.o lxdialog/util.o lxdialog/inputbox.o -lxdialog += lxdialog/textbox.o lxdialog/yesno.o lxdialog/menubox.o - -conf-objs := conf.o zconf.tab.o -mconf-objs := mconf.o zconf.tab.o $(lxdialog) -nconf-objs := nconf.o zconf.tab.o nconf.gui.o -kxgettext-objs := kxgettext.o zconf.tab.o -qconf-cxxobjs := qconf.o -qconf-objs := zconf.tab.o -gconf-objs := gconf.o zconf.tab.o +$(obj)/lexer.lex.o: $(obj)/parser.tab.h +HOSTCFLAGS_lexer.lex.o := -I $(srctree)/$(src) +HOSTCFLAGS_parser.tab.o := -I $(srctree)/$(src) -hostprogs-y := conf +# conf: Used for defconfig, oldconfig and related targets +hostprogs += conf +conf-objs := conf.o $(common-objs) +# nconf: Used for the nconfig target based on ncurses ifeq ($(MAKECMDGOALS),nconf) - hostprogs-y += nconf -endif - -ifeq ($(MAKECMDGOALS),mconf) - hostprogs-y += mconf -endif +hostprogs += nconf +nconf-objs := nconf.o nconf.gui.o mnconf-common.o $(common-objs) -ifeq ($(MAKECMDGOALS),update-po-config) - hostprogs-y += kxgettext -endif +HOSTLDLIBS_nconf = $(call read-file, $(obj)/nconf-libs) +HOSTCFLAGS_nconf.o = $(call read-file, $(obj)/nconf-cflags) +HOSTCFLAGS_nconf.gui.o = $(call read-file, $(obj)/nconf-cflags) -ifeq ($(MAKECMDGOALS),qconf) - qconf-target := 1 +$(obj)/nconf: | $(obj)/nconf-libs +$(obj)/nconf.o $(obj)/nconf.gui.o: | $(obj)/nconf-cflags endif -ifeq ($(MAKECMDGOALS),gconf) - gconf-target := 1 -endif +# mconf: Used for the menuconfig target based on lxdialog +ifeq ($(MAKECMDGOALS),mconf) +hostprogs += mconf +lxdialog := $(addprefix lxdialog/, \ + checklist.o inputbox.o menubox.o textbox.o util.o yesno.o) +mconf-objs := mconf.o $(lxdialog) mnconf-common.o $(common-objs) -ifeq ($(qconf-target),1) - hostprogs-y += qconf -endif +HOSTLDLIBS_mconf = $(call read-file, $(obj)/mconf-libs) +$(foreach f, mconf.o $(lxdialog), \ + $(eval HOSTCFLAGS_$f = $$(call read-file, $(obj)/mconf-cflags))) -ifeq ($(gconf-target),1) - hostprogs-y += gconf +$(obj)/mconf: | $(obj)/mconf-libs +$(addprefix $(obj)/, mconf.o $(lxdialog)): | $(obj)/mconf-cflags endif -targets += zconf.lex.c -clean-files := qconf.moc .tmp_qtcheck .tmp_gtkcheck -clean-files += gconf.glade.h -clean-files += config.pot linux.pot - -# Check that we have the required ncurses stuff installed for lxdialog (menuconfig) -PHONY += $(obj)/dochecklxdialog -$(addprefix $(obj)/, mconf.o $(lxdialog)): $(obj)/dochecklxdialog -$(obj)/dochecklxdialog: - $(Q)$(CONFIG_SHELL) $(check-lxdialog) -check $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTLOADLIBES_mconf) - -always := dochecklxdialog - -# Add environment specific flags -HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(srctree)/$(src)/check.sh $(HOSTCC) $(HOSTCFLAGS)) -HOST_EXTRACXXFLAGS += $(shell $(CONFIG_SHELL) $(srctree)/$(src)/check.sh $(HOSTCXX) $(HOSTCXXFLAGS)) - -# generated files seem to need this to find local include files -HOSTCFLAGS_zconf.lex.o := -I$(src) -HOSTCFLAGS_zconf.tab.o := -I$(src) - -HOSTLOADLIBES_qconf = $(KC_QT_LIBS) -HOSTCXXFLAGS_qconf.o = $(KC_QT_CFLAGS) +# qconf: Used for the xconfig target based on Qt +ifeq ($(MAKECMDGOALS),qconf) +hostprogs += qconf +qconf-cxxobjs := qconf.o qconf-moc.o +qconf-objs := images.o $(common-objs) -HOSTLOADLIBES_gconf = `pkg-config --libs gtk+-2.0 gmodule-2.0 libglade-2.0` -HOSTCFLAGS_gconf.o = `pkg-config --cflags gtk+-2.0 gmodule-2.0 libglade-2.0` \ - -Wno-missing-prototypes +HOSTLDLIBS_qconf = $(call read-file, $(obj)/qconf-libs) +HOSTCXXFLAGS_qconf.o = -std=c++11 -fPIC $(call read-file, $(obj)/qconf-cflags) +HOSTCXXFLAGS_qconf-moc.o = -std=c++11 -fPIC $(call read-file, $(obj)/qconf-cflags) +$(obj)/qconf: | $(obj)/qconf-libs +$(obj)/qconf.o $(obj)/qconf-moc.o: | $(obj)/qconf-cflags -HOSTLOADLIBES_mconf = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC)) +quiet_cmd_moc = MOC $@ + cmd_moc = $(call read-file, $(obj)/qconf-bin)/moc $< -o $@ -HOSTLOADLIBES_nconf = $(shell \ - pkg-config --libs menuw panelw ncursesw 2>/dev/null \ - || pkg-config --libs menu panel ncurses 2>/dev/null \ - || echo "-lmenu -lpanel -lncurses" ) -$(obj)/qconf.o: $(obj)/.tmp_qtcheck +$(obj)/qconf-moc.cc: $(src)/qconf.h FORCE | $(obj)/qconf-bin + $(call if_changed,moc) -ifeq ($(MAKECMDGOALS),qconf) -$(obj)/.tmp_qtcheck: $(src)/Makefile --include $(obj)/.tmp_qtcheck - -# Qt needs some extra effort... -$(obj)/.tmp_qtcheck: - @set -e; $(kecho) " CHECK qt"; \ - if pkg-config --exists Qt5Core; then \ - cflags="-std=c++11 -fPIC `pkg-config --cflags Qt5Core Qt5Gui Qt5Widgets`"; \ - libs=`pkg-config --libs Qt5Core Qt5Gui Qt5Widgets`; \ - moc=`pkg-config --variable=host_bins Qt5Core`/moc; \ - elif pkg-config --exists QtCore; then \ - cflags=`pkg-config --cflags QtCore QtGui`; \ - libs=`pkg-config --libs QtCore QtGui`; \ - moc=`pkg-config --variable=moc_location QtCore`; \ - else \ - echo >&2 "*"; \ - echo >&2 "* Could not find Qt via pkg-config."; \ - echo >&2 "* Please install either Qt 4.8 or 5.x. and make sure it's in PKG_CONFIG_PATH"; \ - echo >&2 "*"; \ - exit 1; \ - fi; \ - echo "KC_QT_CFLAGS=$$cflags" > $@; \ - echo "KC_QT_LIBS=$$libs" >> $@; \ - echo "KC_QT_MOC=$$moc" >> $@ +targets += qconf-moc.cc endif +# gconf: Used for the gconfig target based on GTK+ ifeq ($(MAKECMDGOALS),gconf) -$(obj)/gconf.o: $(obj)/.tmp_gtkcheck --include $(obj)/.tmp_gtkcheck - -# GTK+ needs some extra effort, too... -$(obj)/.tmp_gtkcheck: - @if `pkg-config --exists gtk+-2.0 gmodule-2.0 libglade-2.0`; then \ - if `pkg-config --atleast-version=2.0.0 gtk+-2.0`; then \ - touch $@; \ - else \ - echo >&2 "*"; \ - echo >&2 "* GTK+ is present but version >= 2.0.0 is required."; \ - echo >&2 "*"; \ - false; \ - fi \ - else \ - echo >&2 "*"; \ - echo >&2 "* Unable to find the GTK+ installation. Please make sure that"; \ - echo >&2 "* the GTK+ 2.0 development package is correctly installed..."; \ - echo >&2 "* You need gtk+-2.0, glib-2.0 and libglade-2.0."; \ - echo >&2 "*"; \ - false; \ - fi -endif +hostprogs += gconf +gconf-objs := gconf.o images.o $(common-objs) -$(obj)/zconf.tab.o: $(obj)/zconf.lex.c +HOSTLDLIBS_gconf = $(call read-file, $(obj)/gconf-libs) +HOSTCFLAGS_gconf.o = $(call read-file, $(obj)/gconf-cflags) + +$(obj)/gconf: | $(obj)/gconf-libs +$(obj)/gconf.o: | $(obj)/gconf-cflags +endif -$(obj)/qconf.o: $(obj)/qconf.moc +# check if necessary packages are available, and configure build flags +cmd_conf_cfg = $(src)/$< $(addprefix $(obj)/$*conf-, cflags libs bin); touch $(obj)/$*conf-bin -$(obj)/%.moc: $(src)/%.h $(obj)/.tmp_qtcheck - $(KC_QT_MOC) -i $< -o $@ +$(obj)/%conf-cflags $(obj)/%conf-libs $(obj)/%conf-bin: $(src)/%conf-cfg.sh + $(call cmd,conf_cfg) -# Extract gconf menu items for i18n support -$(obj)/gconf.glade.h: $(obj)/gconf.glade - $(Q)intltool-extract --type=gettext/glade --srcdir=$(srctree) \ - $(obj)/gconf.glade +clean-files += *conf-cflags *conf-libs *conf-bin diff --git a/support/kconfig/Makefile.br b/support/kconfig/Makefile.br index 41c5ce165d..d163256846 100644 --- a/support/kconfig/Makefile.br +++ b/support/kconfig/Makefile.br @@ -5,12 +5,11 @@ srctree := . obj ?= . include Makefile -#HOSTCFLAGS+=-Dinline="" -include foo.h -include $(obj)/.depend $(obj)/.depend: $(wildcard *.h *.c) $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) -MM *.c > $@ 2>/dev/null || : -__hostprogs := $(sort $(hostprogs-y) $(hostprogs-m)) +__hostprogs := $(sort $(hostprogs)) host-csingle := $(foreach m,$(__hostprogs),$(if $($(m)-objs),,$(m))) host-cmulti := $(foreach m,$(__hostprogs),\ $(if $($(m)-cxxobjs),,$(if $($(m)-objs),$(m)))) @@ -25,10 +24,10 @@ $(host-csingle): %: %.c $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< -o $(obj)/$@ $(host-cmulti): %: $(host-cobjs) $(host-cshlib) - $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLDLIBS_$(@F)) -o $(obj)/$@ $(host-cxxmulti): %: $(host-cxxobjs) $(host-cobjs) $(host-cshlib) - $(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ + $(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLDLIBS_$(@F)) -o $(obj)/$@ $(obj)/%.o: %.c $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) -c $< -o $@ @@ -39,6 +38,9 @@ $(obj)/%.o: $(obj)/%.c $(obj)/%.o: %.cc $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$(@F)) -c $< -o $@ +$(obj)/%.o: $(obj)/%.cc + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$(@F)) -c $< -o $@ + $(obj)/%:: $(src)/%_shipped $(Q)cat $< > $@ diff --git a/support/kconfig/POTFILES.in b/support/kconfig/POTFILES.in deleted file mode 100644 index 9674573969..0000000000 --- a/support/kconfig/POTFILES.in +++ /dev/null @@ -1,12 +0,0 @@ -scripts/kconfig/lxdialog/checklist.c -scripts/kconfig/lxdialog/inputbox.c -scripts/kconfig/lxdialog/menubox.c -scripts/kconfig/lxdialog/textbox.c -scripts/kconfig/lxdialog/util.c -scripts/kconfig/lxdialog/yesno.c -scripts/kconfig/mconf.c -scripts/kconfig/conf.c -scripts/kconfig/confdata.c -scripts/kconfig/gconf.c -scripts/kconfig/gconf.glade.h -scripts/kconfig/qconf.cc diff --git a/support/kconfig/README.buildroot b/support/kconfig/README.buildroot index 76808f85b4..82bb855d01 100644 --- a/support/kconfig/README.buildroot +++ b/support/kconfig/README.buildroot @@ -3,10 +3,13 @@ to suit Buildroot. To update: cp -r /usr/src/linux/scripts/kconfig support/kconfig.new + cp /usr/src/linux/scripts/Kbuild.include support/kconfig.new cd support/kconfig.new - # zconf.lex.c and zconf.tab.c needs to be generated by 'make menuconfig' - mv zconf.lex.c zconf.lex.c_shipped - mv zconf.tab.c zconf.tab.c_shipped + # lexer.lex.c, parser.tab.c and parser.tab.h needs to be generated + # by 'make menuconfig' + mv lexer.lex.c lexer.lex.c_shipped + mv parser.tab.c parser.tab.c_shipped + mv parser.tab.h parser.tab.h_shipped rm -rf tests/ cp -a ../kconfig/patches ../kconfig/README.buildroot ../kconfig/.gitignore . quilt push -a diff --git a/support/kconfig/array_size.h b/support/kconfig/array_size.h new file mode 100644 index 0000000000..26ba78d867 --- /dev/null +++ b/support/kconfig/array_size.h @@ -0,0 +1,11 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef ARRAY_SIZE_H +#define ARRAY_SIZE_H + +/** + * ARRAY_SIZE - get the number of elements in array @arr + * @arr: array to be sized + */ +#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) + +#endif /* ARRAY_SIZE_H */ diff --git a/support/kconfig/check.sh b/support/kconfig/check.sh deleted file mode 100755 index 97f0fee7d1..0000000000 --- a/support/kconfig/check.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Needed for systems without gettext -$* -x c -o /dev/null - > /dev/null 2>&1 << EOF -#include -int main() -{ - gettext(""); - return 0; -} -EOF -if [ ! "$?" -eq "0" ]; then - echo -DKBUILD_NO_NLS; -fi diff --git a/support/kconfig/conf.c b/support/kconfig/conf.c index 2d7a7ac437..965bb40c50 100644 --- a/support/kconfig/conf.c +++ b/support/kconfig/conf.c @@ -1,9 +1,8 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ -#include #include #include #include @@ -12,10 +11,10 @@ #include #include #include -#include #include #include +#include "internal.h" #include "lkc.h" static void conf(struct menu *menu); @@ -33,10 +32,14 @@ enum input_mode { defconfig, savedefconfig, listnewconfig, + helpnewconfig, olddefconfig, + yes2modconfig, + mod2yesconfig, + mod2noconfig, }; static enum input_mode input_mode = oldaskconfig; - +static int input_mode_opt; static int indent = 1; static int tty_stdio; static int sync_kconfig; @@ -81,17 +84,245 @@ static void xfgets(char *str, int size, FILE *in) printf("%s", str); } -static int conf_askvalue(struct symbol *sym, const char *def) +static void set_randconfig_seed(void) +{ + unsigned int seed; + char *env; + bool seed_set = false; + + env = getenv("KCONFIG_SEED"); + if (env && *env) { + char *endp; + + seed = strtol(env, &endp, 0); + if (*endp == '\0') + seed_set = true; + } + + if (!seed_set) { + struct timeval now; + + /* + * Use microseconds derived seed, compensate for systems where it may + * be zero. + */ + gettimeofday(&now, NULL); + seed = (now.tv_sec + 1) * (now.tv_usec + 1); + } + + printf("KCONFIG_SEED=0x%X\n", seed); + srand(seed); +} + +static bool randomize_choice_values(struct symbol *csym) +{ + struct property *prop; + struct symbol *sym; + struct expr *e; + int cnt, def; + + /* + * If choice is mod then we may have more items selected + * and if no then no-one. + * In both cases stop. + */ + if (csym->curr.tri != yes) + return false; + + prop = sym_get_choice_prop(csym); + + /* count entries in choice block */ + cnt = 0; + expr_list_for_each_sym(prop->expr, e, sym) + cnt++; + + /* + * find a random value and set it to yes, + * set the rest to no so we have only one set + */ + def = rand() % cnt; + + cnt = 0; + expr_list_for_each_sym(prop->expr, e, sym) { + if (def == cnt++) { + sym->def[S_DEF_USER].tri = yes; + csym->def[S_DEF_USER].val = sym; + } else { + sym->def[S_DEF_USER].tri = no; + } + sym->flags |= SYMBOL_DEF_USER; + /* clear VALID to get value calculated */ + sym->flags &= ~SYMBOL_VALID; + } + csym->flags |= SYMBOL_DEF_USER; + /* clear VALID to get value calculated */ + csym->flags &= ~SYMBOL_VALID; + + return true; +} + +enum conf_def_mode { + def_default, + def_yes, + def_mod, + def_no, + def_random +}; + +static bool conf_set_all_new_symbols(enum conf_def_mode mode) +{ + struct symbol *sym, *csym; + int cnt; + /* + * can't go as the default in switch-case below, otherwise gcc whines + * about -Wmaybe-uninitialized + */ + int pby = 50; /* probability of bool = y */ + int pty = 33; /* probability of tristate = y */ + int ptm = 33; /* probability of tristate = m */ + bool has_changed = false; + + if (mode == def_random) { + int n, p[3]; + char *env = getenv("KCONFIG_PROBABILITY"); + + n = 0; + while (env && *env) { + char *endp; + int tmp = strtol(env, &endp, 10); + + if (tmp >= 0 && tmp <= 100) { + p[n++] = tmp; + } else { + errno = ERANGE; + perror("KCONFIG_PROBABILITY"); + exit(1); + } + env = (*endp == ':') ? endp + 1 : endp; + if (n >= 3) + break; + } + switch (n) { + case 1: + pby = p[0]; + ptm = pby / 2; + pty = pby - ptm; + break; + case 2: + pty = p[0]; + ptm = p[1]; + pby = pty + ptm; + break; + case 3: + pby = p[0]; + pty = p[1]; + ptm = p[2]; + break; + } + + if (pty + ptm > 100) { + errno = ERANGE; + perror("KCONFIG_PROBABILITY"); + exit(1); + } + } + + for_all_symbols(sym) { + if (sym_has_value(sym) || sym->flags & SYMBOL_VALID) + continue; + switch (sym_get_type(sym)) { + case S_BOOLEAN: + case S_TRISTATE: + has_changed = true; + switch (mode) { + case def_yes: + sym->def[S_DEF_USER].tri = yes; + break; + case def_mod: + sym->def[S_DEF_USER].tri = mod; + break; + case def_no: + sym->def[S_DEF_USER].tri = no; + break; + case def_random: + sym->def[S_DEF_USER].tri = no; + cnt = rand() % 100; + if (sym->type == S_TRISTATE) { + if (cnt < pty) + sym->def[S_DEF_USER].tri = yes; + else if (cnt < pty + ptm) + sym->def[S_DEF_USER].tri = mod; + } else if (cnt < pby) + sym->def[S_DEF_USER].tri = yes; + break; + default: + continue; + } + if (!(sym_is_choice(sym) && mode == def_random)) + sym->flags |= SYMBOL_DEF_USER; + break; + default: + break; + } + + } + + sym_clear_all_valid(); + + /* + * We have different type of choice blocks. + * If curr.tri equals to mod then we can select several + * choice symbols in one block. + * In this case we do nothing. + * If curr.tri equals yes then only one symbol can be + * selected in a choice block and we set it to yes, + * and the rest to no. + */ + if (mode != def_random) { + for_all_symbols(csym) { + if ((sym_is_choice(csym) && !sym_has_value(csym)) || + sym_is_choice_value(csym)) + csym->flags |= SYMBOL_NEED_SET_CHOICE_VALUES; + } + } + + for_all_symbols(csym) { + if (sym_has_value(csym) || !sym_is_choice(csym)) + continue; + + sym_calc_value(csym); + if (mode == def_random) + has_changed |= randomize_choice_values(csym); + else { + set_all_choice_values(csym); + has_changed = true; + } + } + + return has_changed; +} + +static void conf_rewrite_tristates(tristate old_val, tristate new_val) { - enum symbol_type type = sym_get_type(sym); + struct symbol *sym; + for_all_symbols(sym) { + if (sym_get_type(sym) == S_TRISTATE && + sym->def[S_DEF_USER].tri == old_val) + sym->def[S_DEF_USER].tri = new_val; + } + sym_clear_all_valid(); +} + +static int conf_askvalue(struct symbol *sym, const char *def) +{ if (!sym_has_value(sym)) - printf(_("(NEW) ")); + printf("(NEW) "); line[0] = '\n'; line[1] = 0; - if (!sym_is_changable(sym)) { + if (!sym_is_changeable(sym)) { printf("%s\n", def); line[0] = '\n'; line[1] = 0; @@ -106,24 +337,12 @@ static int conf_askvalue(struct symbol *sym, const char *def) return 0; } /* fall through */ - case oldaskconfig: + default: fflush(stdout); xfgets(line, sizeof(line), stdin); - return 1; - default: break; } - switch (type) { - case S_INT: - case S_HEX: - case S_STRING: - printf("%s\n", def); - return 1; - default: - ; - } - printf("%s", line); return 1; } @@ -133,10 +352,10 @@ static int conf_string(struct menu *menu) const char *def; while (1) { - printf("%*s%s ", indent - 1, "", _(menu->prompt->text)); + printf("%*s%s ", indent - 1, "", menu->prompt->text); printf("(%s) ", sym->name); def = sym_get_string_value(sym); - if (sym_get_string_value(sym)) + if (def) printf("[%s] ", def); if (!conf_askvalue(sym, def)) return 0; @@ -166,7 +385,7 @@ static int conf_sym(struct menu *menu) tristate oldval, newval; while (1) { - printf("%*s%s ", indent - 1, "", _(menu->prompt->text)); + printf("%*s%s ", indent - 1, "", menu->prompt->text); if (sym->name) printf("(%s) ", sym->name); putchar('['); @@ -235,7 +454,7 @@ static int conf_choice(struct menu *menu) sym = menu->sym; is_new = !sym_has_value(sym); - if (sym_is_changable(sym)) { + if (sym_is_changeable(sym)) { conf_sym(menu); sym_calc_value(sym); switch (sym_get_tristate_value(sym)) { @@ -251,7 +470,7 @@ static int conf_choice(struct menu *menu) case no: return 1; case mod: - printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu))); + printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu)); return 0; case yes: break; @@ -261,7 +480,7 @@ static int conf_choice(struct menu *menu) while (1) { int cnt, def; - printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu))); + printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu)); def_sym = sym_get_choice_value(sym); cnt = def = 0; line[0] = 0; @@ -269,7 +488,7 @@ static int conf_choice(struct menu *menu) if (!menu_is_visible(child)) continue; if (!child->sym) { - printf("%*c %s\n", indent, '*', _(menu_get_prompt(child))); + printf("%*c %s\n", indent, '*', menu_get_prompt(child)); continue; } cnt++; @@ -278,14 +497,14 @@ static int conf_choice(struct menu *menu) printf("%*c", indent, '>'); } else printf("%*c", indent, ' '); - printf(" %d. %s", cnt, _(menu_get_prompt(child))); + printf(" %d. %s", cnt, menu_get_prompt(child)); if (child->sym->name) printf(" (%s)", child->sym->name); if (!sym_has_value(child->sym)) - printf(_(" (NEW)")); + printf(" (NEW)"); printf("\n"); } - printf(_("%*schoice"), indent - 1, ""); + printf("%*schoice", indent - 1, ""); if (cnt == 1) { printf("[1]: 1\n"); goto conf_childs; @@ -332,12 +551,7 @@ static int conf_choice(struct menu *menu) print_help(child); continue; } - sym_set_choice_value(sym, child->sym); - for (child = child->list; child; child = child->next) { - indent += 2; - conf(child); - indent -= 2; - } + sym_set_tristate_value(child->sym, yes); return 1; } } @@ -372,7 +586,7 @@ static void conf(struct menu *menu) if (prompt) printf("%*c\n%*c %s\n%*c\n", indent, '*', - indent, '*', _(prompt), + indent, '*', prompt, indent, '*'); default: ; @@ -418,29 +632,26 @@ static void check_conf(struct menu *menu) return; sym = menu->sym; - if (sym && !sym_has_value(sym)) { - if (sym_is_changable(sym) || - (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) { - if (input_mode == listnewconfig) { - if (sym->name) { - const char *str; - - if (sym->type == S_STRING) { - str = sym_get_string_value(sym); - str = sym_escape_string_value(str); - printf("%s%s=%s\n", CONFIG_, sym->name, str); - free((void *)str); - } else { - str = sym_get_string_value(sym); - printf("%s%s=%s\n", CONFIG_, sym->name, str); - } - } - } else { - if (!conf_cnt++) - printf(_("*\n* Restart config...\n*\n")); - rootEntry = menu_get_parent_menu(menu); - conf(rootEntry); - } + if (sym && !sym_has_value(sym) && + (sym_is_changeable(sym) || + (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes))) { + + switch (input_mode) { + case listnewconfig: + if (sym->name) + print_symbol_for_listconfig(sym); + break; + case helpnewconfig: + printf("-----\n"); + print_help(menu); + printf("-----\n"); + break; + default: + if (!conf_cnt++) + printf("*\n* Restart config...\n*\n"); + rootEntry = menu_get_parent_menu(menu); + conf(rootEntry); + break; } } @@ -448,40 +659,44 @@ static void check_conf(struct menu *menu) check_conf(child); } -static struct option long_opts[] = { - {"oldaskconfig", no_argument, NULL, oldaskconfig}, - {"oldconfig", no_argument, NULL, oldconfig}, - {"syncconfig", no_argument, NULL, syncconfig}, - {"defconfig", optional_argument, NULL, defconfig}, - {"savedefconfig", required_argument, NULL, savedefconfig}, - {"allnoconfig", no_argument, NULL, allnoconfig}, - {"allyesconfig", no_argument, NULL, allyesconfig}, - {"allmodconfig", no_argument, NULL, allmodconfig}, - {"alldefconfig", no_argument, NULL, alldefconfig}, - {"randconfig", no_argument, NULL, randconfig}, - {"listnewconfig", no_argument, NULL, listnewconfig}, - {"olddefconfig", no_argument, NULL, olddefconfig}, - /* - * oldnoconfig is an alias of olddefconfig, because people already - * are dependent on its behavior(sets new symbols to their default - * value but not 'n') with the counter-intuitive name. - */ - {"oldnoconfig", no_argument, NULL, olddefconfig}, +static const struct option long_opts[] = { + {"help", no_argument, NULL, 'h'}, + {"silent", no_argument, NULL, 's'}, + {"oldaskconfig", no_argument, &input_mode_opt, oldaskconfig}, + {"oldconfig", no_argument, &input_mode_opt, oldconfig}, + {"syncconfig", no_argument, &input_mode_opt, syncconfig}, + {"defconfig", required_argument, &input_mode_opt, defconfig}, + {"savedefconfig", required_argument, &input_mode_opt, savedefconfig}, + {"allnoconfig", no_argument, &input_mode_opt, allnoconfig}, + {"allyesconfig", no_argument, &input_mode_opt, allyesconfig}, + {"allmodconfig", no_argument, &input_mode_opt, allmodconfig}, + {"alldefconfig", no_argument, &input_mode_opt, alldefconfig}, + {"randconfig", no_argument, &input_mode_opt, randconfig}, + {"listnewconfig", no_argument, &input_mode_opt, listnewconfig}, + {"helpnewconfig", no_argument, &input_mode_opt, helpnewconfig}, + {"olddefconfig", no_argument, &input_mode_opt, olddefconfig}, + {"yes2modconfig", no_argument, &input_mode_opt, yes2modconfig}, + {"mod2yesconfig", no_argument, &input_mode_opt, mod2yesconfig}, + {"mod2noconfig", no_argument, &input_mode_opt, mod2noconfig}, {NULL, 0, NULL, 0} }; static void conf_usage(const char *progname) { - - printf("Usage: %s [-s] [option] \n", progname); - printf("[option] is _one_ of the following:\n"); + printf("Usage: %s [options] \n", progname); + printf("\n"); + printf("Generic options:\n"); + printf(" -h, --help Print this message and exit.\n"); + printf(" -s, --silent Do not print log.\n"); + printf("\n"); + printf("Mode options:\n"); printf(" --listnewconfig List new options\n"); + printf(" --helpnewconfig List new options and help text\n"); printf(" --oldaskconfig Start a new configuration using a line-oriented program\n"); printf(" --oldconfig Update a configuration using a provided .config as base\n"); printf(" --syncconfig Similar to oldconfig but generates configuration in\n" " include/{generated/,config/}\n"); printf(" --olddefconfig Same as oldconfig but sets new symbols to their default value\n"); - printf(" --oldnoconfig An alias of olddefconfig\n"); printf(" --defconfig New config with default defined in \n"); printf(" --savedefconfig Save the minimal current configuration to \n"); printf(" --allnoconfig New config where all options are answered with no\n"); @@ -489,6 +704,10 @@ static void conf_usage(const char *progname) printf(" --allmodconfig New config where all options are answered with mod\n"); printf(" --alldefconfig New config with all symbols set to default\n"); printf(" --randconfig New config with random answer to all options\n"); + printf(" --yes2modconfig Change answers from yes to mod if possible\n"); + printf(" --mod2yesconfig Change answers from mod to yes if possible\n"); + printf(" --mod2noconfig Change answers from mod to no if possible\n"); + printf(" (If none of the above is given, --oldaskconfig is the default)\n"); } int main(int ac, char **av) @@ -496,97 +715,60 @@ int main(int ac, char **av) const char *progname = av[0]; int opt; const char *name, *defconfig_file = NULL /* gcc uninit */; - struct stat tmpstat; - - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + int no_conf_write = 0; tty_stdio = isatty(0) && isatty(1); - while ((opt = getopt_long(ac, av, "s", long_opts, NULL)) != -1) { - if (opt == 's') { - conf_set_message_callback(NULL); - continue; - } - input_mode = (enum input_mode)opt; + while ((opt = getopt_long(ac, av, "hs", long_opts, NULL)) != -1) { switch (opt) { - case syncconfig: - sync_kconfig = 1; + case 'h': + conf_usage(progname); + exit(1); break; - case defconfig: - case savedefconfig: - defconfig_file = optarg; + case 's': + conf_set_message_callback(NULL); break; - case randconfig: - { - struct timeval now; - unsigned int seed; - char *seed_env; - - /* - * Use microseconds derived seed, - * compensate for systems where it may be zero - */ - gettimeofday(&now, NULL); - seed = (unsigned int)((now.tv_sec + 1) * (now.tv_usec + 1)); - - seed_env = getenv("KCONFIG_SEED"); - if( seed_env && *seed_env ) { - char *endp; - int tmp = (int)strtol(seed_env, &endp, 0); - if (*endp == '\0') { - seed = tmp; - } + case 0: + input_mode = input_mode_opt; + switch (input_mode) { + case syncconfig: + /* + * syncconfig is invoked during the build stage. + * Suppress distracting + * "configuration written to ..." + */ + conf_set_message_callback(NULL); + sync_kconfig = 1; + break; + case defconfig: + case savedefconfig: + defconfig_file = optarg; + break; + case randconfig: + set_randconfig_seed(); + break; + default: + break; } - fprintf( stderr, "KCONFIG_SEED=0x%X\n", seed ); - srand(seed); - break; - } - case oldaskconfig: - case oldconfig: - case allnoconfig: - case allyesconfig: - case allmodconfig: - case alldefconfig: - case listnewconfig: - case olddefconfig: - break; - case '?': - conf_usage(progname); - exit(1); + default: break; } } if (ac == optind) { - fprintf(stderr, _("%s: Kconfig file missing\n"), av[0]); + fprintf(stderr, "%s: Kconfig file missing\n", av[0]); conf_usage(progname); exit(1); } - name = av[optind]; - conf_parse(name); - if (sync_kconfig) { - name = conf_get_configname(); - if (stat(name, &tmpstat)) { - fprintf(stderr, _("***\n" - "*** Configuration file \"%s\" not found!\n" - "***\n" - "*** Please run some configurator (e.g. \"make oldconfig\" or\n" - "*** \"make menuconfig\" or \"make xconfig\").\n" - "***\n"), name); - exit(1); - } - } + conf_parse(av[optind]); + //zconfdump(stdout); switch (input_mode) { case defconfig: - if (!defconfig_file) - defconfig_file = conf_get_default_confname(); if (conf_read(defconfig_file)) { fprintf(stderr, - _("***\n" + "***\n" "*** Can't find default configuration \"%s\"!\n" - "***\n"), + "***\n", defconfig_file); exit(1); } @@ -596,7 +778,11 @@ int main(int ac, char **av) case oldaskconfig: case oldconfig: case listnewconfig: + case helpnewconfig: case olddefconfig: + case yes2modconfig: + case mod2yesconfig: + case mod2noconfig: conf_read(NULL); break; case allnoconfig: @@ -610,7 +796,7 @@ int main(int ac, char **av) if ((strcmp(name, "") != 0) && (strcmp(name, "1") != 0)) { if (conf_read_simple(name, S_DEF_USER)) { fprintf(stderr, - _("*** Can't read seed configuration \"%s\"!\n"), + "*** Can't read seed configuration \"%s\"!\n", name); exit(1); } @@ -627,7 +813,7 @@ int main(int ac, char **av) if (conf_read_simple(name, S_DEF_USER) && conf_read_simple("all.config", S_DEF_USER)) { fprintf(stderr, - _("*** KCONFIG_ALLCONFIG set, but no \"%s\" or \"all.config\" file found\n"), + "*** KCONFIG_ALLCONFIG set, but no \"%s\" or \"all.config\" file found\n", name); exit(1); } @@ -636,14 +822,18 @@ int main(int ac, char **av) break; } + if (conf_errors()) + exit(1); + if (sync_kconfig) { - if (conf_get_changed()) { - name = getenv("KCONFIG_NOSILENTUPDATE"); - if (name && *name) { + name = getenv("KCONFIG_NOSILENTUPDATE"); + if (name && *name) { + if (conf_get_changed()) { fprintf(stderr, - _("\n*** The configuration requires explicit update.\n\n")); + "\n*** The configuration requires explicit update.\n\n"); return 1; } + no_conf_write = 1; } } @@ -669,6 +859,15 @@ int main(int ac, char **av) break; case savedefconfig: break; + case yes2modconfig: + conf_rewrite_tristates(yes, mod); + break; + case mod2yesconfig: + conf_rewrite_tristates(mod, yes); + break; + case mod2noconfig: + conf_rewrite_tristates(mod, no); + break; case oldaskconfig: rootEntry = &rootmenu; conf(&rootmenu); @@ -676,6 +875,7 @@ int main(int ac, char **av) /* fall through */ case oldconfig: case listnewconfig: + case helpnewconfig: case syncconfig: /* Update until a loop caused no more changes */ do { @@ -688,29 +888,35 @@ int main(int ac, char **av) break; } - if (sync_kconfig) { - /* syncconfig is used during the build so we shall update autoconf. - * All other commands are only used to generate a config. - */ - if (conf_get_changed() && conf_write(NULL)) { - fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n")); - exit(1); - } - if (conf_write_autoconf()) { - fprintf(stderr, _("\n*** Error during update of the configuration.\n\n")); - return 1; - } - } else if (input_mode == savedefconfig) { + if (sym_dep_errors()) + exit(1); + + if (input_mode == savedefconfig) { if (conf_write_defconfig(defconfig_file)) { - fprintf(stderr, _("n*** Error while saving defconfig to: %s\n\n"), + fprintf(stderr, "n*** Error while saving defconfig to: %s\n\n", defconfig_file); return 1; } - } else if (input_mode != listnewconfig) { - if (conf_write(NULL)) { - fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n")); + } else if (input_mode != listnewconfig && input_mode != helpnewconfig) { + if (!no_conf_write && conf_write(NULL)) { + fprintf(stderr, "\n*** Error during writing of the configuration.\n\n"); exit(1); } + + /* + * Create auto.conf if it does not exist. + * This prevents GNU Make 4.1 or older from emitting + * "include/config/auto.conf: No such file or directory" + * in the top-level Makefile + * + * syncconfig always creates or updates auto.conf because it is + * used during the build. + */ + if (conf_write_autoconf(sync_kconfig) && sync_kconfig) { + fprintf(stderr, + "\n*** Error during sync of the configuration.\n\n"); + return 1; + } } return 0; } diff --git a/support/kconfig/confdata.c b/support/kconfig/confdata.c index 9ab980edd8..eb952e89ac 100644 --- a/support/kconfig/confdata.c +++ b/support/kconfig/confdata.c @@ -1,13 +1,17 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ +#include #include +#include #include #include #include +#include #include +#include #include #include #include @@ -15,12 +19,136 @@ #include #include +#include "internal.h" #include "lkc.h" -struct conf_printer { - void (*print_symbol)(FILE *, struct symbol *, const char *, void *); - void (*print_comment)(FILE *, const char *, void *); -}; +struct gstr autoconf_cmd; + +/* return true if 'path' exists, false otherwise */ +static bool is_present(const char *path) +{ + struct stat st; + + return !stat(path, &st); +} + +/* return true if 'path' exists and it is a directory, false otherwise */ +static bool is_dir(const char *path) +{ + struct stat st; + + if (stat(path, &st)) + return false; + + return S_ISDIR(st.st_mode); +} + +/* return true if the given two files are the same, false otherwise */ +static bool is_same(const char *file1, const char *file2) +{ + int fd1, fd2; + struct stat st1, st2; + void *map1, *map2; + bool ret = false; + + fd1 = open(file1, O_RDONLY); + if (fd1 < 0) + return ret; + + fd2 = open(file2, O_RDONLY); + if (fd2 < 0) + goto close1; + + ret = fstat(fd1, &st1); + if (ret) + goto close2; + ret = fstat(fd2, &st2); + if (ret) + goto close2; + + if (st1.st_size != st2.st_size) + goto close2; + + map1 = mmap(NULL, st1.st_size, PROT_READ, MAP_PRIVATE, fd1, 0); + if (map1 == MAP_FAILED) + goto close2; + + map2 = mmap(NULL, st2.st_size, PROT_READ, MAP_PRIVATE, fd2, 0); + if (map2 == MAP_FAILED) + goto close2; + + if (bcmp(map1, map2, st1.st_size)) + goto close2; + + ret = true; +close2: + close(fd2); +close1: + close(fd1); + + return ret; +} + +/* + * Create the parent directory of the given path. + * + * For example, if 'include/config/auto.conf' is given, create 'include/config'. + */ +static int make_parent_dir(const char *path) +{ + char tmp[PATH_MAX + 1]; + char *p; + + strncpy(tmp, path, sizeof(tmp)); + tmp[sizeof(tmp) - 1] = 0; + + /* Remove the base name. Just return if nothing is left */ + p = strrchr(tmp, '/'); + if (!p) + return 0; + *(p + 1) = 0; + + /* Just in case it is an absolute path */ + p = tmp; + while (*p == '/') + p++; + + while ((p = strchr(p, '/'))) { + *p = 0; + + /* skip if the directory exists */ + if (!is_dir(tmp) && mkdir(tmp, 0755)) + return -1; + + *p = '/'; + while (*p == '/') + p++; + } + + return 0; +} + +static char depfile_path[PATH_MAX]; +static size_t depfile_prefix_len; + +/* touch depfile for symbol 'name' */ +static int conf_touch_dep(const char *name) +{ + int fd; + + /* check overflow: prefix + name + '\0' must fit in buffer. */ + if (depfile_prefix_len + strlen(name) + 1 > sizeof(depfile_path)) + return -1; + + strcpy(depfile_path + depfile_prefix_len, name); + + fd = open(depfile_path, O_WRONLY | O_CREAT | O_TRUNC, 0644); + if (fd == -1) + return -1; + close(fd); + + return 0; +} static void conf_warning(const char *fmt, ...) __attribute__ ((format (printf, 1, 2))); @@ -31,7 +159,12 @@ static void conf_message(const char *fmt, ...) static const char *conf_filename; static int conf_lineno, conf_warnings; -const char conf_defname[] = ".defconfig"; +bool conf_errors(void) +{ + if (conf_warnings) + return getenv("KCONFIG_WERROR"); + return false; +} static void conf_warning(const char *fmt, ...) { @@ -44,16 +177,16 @@ static void conf_warning(const char *fmt, ...) conf_warnings++; } -static void conf_default_message_callback(const char *fmt, va_list ap) +static void conf_default_message_callback(const char *s) { printf("#\n# "); - vprintf(fmt, ap); + printf("%s", s); printf("\n#\n"); } -static void (*conf_message_callback) (const char *fmt, va_list ap) = +static void (*conf_message_callback)(const char *s) = conf_default_message_callback; -void conf_set_message_callback(void (*fn) (const char *fmt, va_list ap)) +void conf_set_message_callback(void (*fn)(const char *s)) { conf_message_callback = fn; } @@ -61,10 +194,15 @@ void conf_set_message_callback(void (*fn) (const char *fmt, va_list ap)) static void conf_message(const char *fmt, ...) { va_list ap; + char buf[4096]; + + if (!conf_message_callback) + return; va_start(ap, fmt); - if (conf_message_callback) - conf_message_callback(fmt, ap); + + vsnprintf(buf, sizeof(buf), fmt, ap); + conf_message_callback(buf); va_end(ap); } @@ -75,51 +213,23 @@ const char *conf_get_configname(void) return name ? name : ".config"; } -const char *conf_get_autoconfig_name(void) +static const char *conf_get_autoconfig_name(void) { return getenv("KCONFIG_AUTOCONFIG"); } -static char *conf_expand_value(const char *in) +static const char *conf_get_autoheader_name(void) { - struct symbol *sym; - const char *src; - static char res_value[SYMBOL_MAXLENGTH]; - char *dst, name[SYMBOL_MAXLENGTH]; - - res_value[0] = 0; - dst = name; - while ((src = strchr(in, '$'))) { - strncat(res_value, in, src - in); - src++; - dst = name; - while (isalnum(*src) || *src == '_') - *dst++ = *src++; - *dst = 0; - sym = sym_lookup(name, 0); - sym_calc_value(sym); - strcat(res_value, sym_get_string_value(sym)); - in = src; - } - strcat(res_value, in); + char *name = getenv("KCONFIG_AUTOHEADER"); - return res_value; + return name ? name : "include/generated/autoconf.h"; } -char *conf_get_default_confname(void) +static const char *conf_get_rustccfg_name(void) { - struct stat buf; - static char fullname[PATH_MAX+1]; - char *env, *name; - - name = conf_expand_value(conf_defname); - env = getenv(SRCTREE); - if (env) { - sprintf(fullname, "%s/%s", env, name); - if (!stat(fullname, &buf)) - return fullname; - } - return name; + char *name = getenv("KCONFIG_RUSTCCFG"); + + return name ? name : "include/generated/rustc_cfg"; } static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p) @@ -149,33 +259,26 @@ static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p) conf_warning("symbol value '%s' invalid for %s", p, sym->name); return 1; - case S_OTHER: - if (*p != '"') { - for (p2 = p; *p2 && !isspace(*p2); p2++) - ; - sym->type = S_STRING; - goto done; - } - /* fall through */ case S_STRING: - if (*p++ != '"') - break; - for (p2 = p; (p2 = strpbrk(p2, "\"\\")); p2++) { - if (*p2 == '"') { - *p2 = 0; + /* No escaping for S_DEF_AUTO (include/config/auto.conf) */ + if (def != S_DEF_AUTO) { + if (*p++ != '"') break; + for (p2 = p; (p2 = strpbrk(p2, "\"\\")); p2++) { + if (*p2 == '"') { + *p2 = 0; + break; + } + memmove(p2, p2 + 1, strlen(p2)); } - memmove(p2, p2 + 1, strlen(p2)); - } - if (!p2) { - if (def != S_DEF_AUTO) + if (!p2) { conf_warning("invalid string found"); - return 1; + return 1; + } } /* fall through */ case S_INT: case S_HEX: - done: if (sym_string_valid(sym, p)) { sym->def[def].val = xstrdup(p); sym->flags |= def_flags; @@ -192,59 +295,24 @@ static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p) return 0; } -#define LINE_GROWTH 16 -static int add_byte(int c, char **lineptr, size_t slen, size_t *n) +/* like getline(), but the newline character is stripped away */ +static ssize_t getline_stripped(char **lineptr, size_t *n, FILE *stream) { - char *nline; - size_t new_size = slen + 1; - if (new_size > *n) { - new_size += LINE_GROWTH - 1; - new_size *= 2; - nline = xrealloc(*lineptr, new_size); - if (!nline) - return -1; + ssize_t len; - *lineptr = nline; - *n = new_size; - } - - (*lineptr)[slen] = c; - - return 0; -} - -static ssize_t compat_getline(char **lineptr, size_t *n, FILE *stream) -{ - char *line = *lineptr; - size_t slen = 0; + len = getline(lineptr, n, stream); - for (;;) { - int c = getc(stream); + if (len > 0 && (*lineptr)[len - 1] == '\n') { + len--; + (*lineptr)[len] = '\0'; - switch (c) { - case '\n': - if (add_byte(c, &line, slen, n) < 0) - goto e_out; - slen++; - /* fall through */ - case EOF: - if (add_byte('\0', &line, slen, n) < 0) - goto e_out; - *lineptr = line; - if (slen == 0) - return -1; - return slen; - default: - if (add_byte(c, &line, slen, n) < 0) - goto e_out; - slen++; + if (len > 0 && (*lineptr)[len - 1] == '\r') { + len--; + (*lineptr)[len] = '\0'; } } -e_out: - line[slen-1] = '\0'; - *lineptr = line; - return -1; + return len; } int conf_read_simple(const char *name, int def) @@ -252,34 +320,55 @@ int conf_read_simple(const char *name, int def) FILE *in = NULL; char *line = NULL; size_t line_asize = 0; - char *p, *p2; + char *p, *val; struct symbol *sym; - int i, def_flags; + int def_flags; + const char *warn_unknown, *sym_name; + warn_unknown = getenv("KCONFIG_WARN_UNKNOWN_SYMBOLS"); if (name) { in = zconf_fopen(name); } else { - struct property *prop; + char *env; name = conf_get_configname(); in = zconf_fopen(name); if (in) goto load; - sym_add_change_count(1); - if (!sym_defconfig_list) + conf_set_changed(true); + + env = getenv("KCONFIG_DEFCONFIG_LIST"); + if (!env) return 1; - for_all_defaults(sym_defconfig_list, prop) { - if (expr_calc_value(prop->visible.expr) == no || - prop->expr->type != E_SYMBOL) - continue; - name = conf_expand_value(prop->expr->left.sym->name); - in = zconf_fopen(name); + while (1) { + bool is_last; + + while (isspace(*env)) + env++; + + if (!*env) + break; + + p = env; + while (*p && !isspace(*p)) + p++; + + is_last = (*p == '\0'); + + *p = '\0'; + + in = zconf_fopen(env); if (in) { - conf_message(_("using defaults found in %s"), - name); + conf_message("using defaults found in %s", + env); goto load; } + + if (is_last) + break; + + env = p + 1; } } if (!in) @@ -291,7 +380,7 @@ load: conf_warnings = 0; def_flags = SYMBOL_DEF << def; - for_all_symbols(i, sym) { + for_all_symbols(sym) { sym->flags |= SYMBOL_CHANGED; sym->flags &= ~(def_flags|SYMBOL_VALID); if (sym_is_choice(sym)) @@ -300,8 +389,7 @@ load: case S_INT: case S_HEX: case S_STRING: - if (sym->def[def].val) - free(sym->def[def].val); + free(sym->def[def].val); /* fall through */ default: sym->def[def].val = NULL; @@ -309,76 +397,68 @@ load: } } - while (compat_getline(&line, &line_asize, in) != -1) { + while (getline_stripped(&line, &line_asize, in) != -1) { conf_lineno++; - sym = NULL; + + if (!line[0]) /* blank line */ + continue; + if (line[0] == '#') { - if (memcmp(line + 2, CONFIG_, strlen(CONFIG_))) + if (line[1] != ' ') continue; - p = strchr(line + 2 + strlen(CONFIG_), ' '); + p = line + 2; + if (memcmp(p, CONFIG_, strlen(CONFIG_))) + continue; + sym_name = p + strlen(CONFIG_); + p = strchr(sym_name, ' '); if (!p) continue; *p++ = 0; - if (strncmp(p, "is not set", 10)) + if (strcmp(p, "is not set")) + continue; + + val = "n"; + } else { + if (memcmp(line, CONFIG_, strlen(CONFIG_))) { + conf_warning("unexpected data: %s", line); continue; - if (def == S_DEF_USER) { - sym = sym_find(line + 2 + strlen(CONFIG_)); - if (!sym) { - sym_add_change_count(1); - goto setsym; - } - } else { - sym = sym_lookup(line + 2 + strlen(CONFIG_), 0); - if (sym->type == S_UNKNOWN) - sym->type = S_BOOLEAN; - } - if (sym->flags & def_flags) { - conf_warning("override: reassigning to symbol %s", sym->name); - } - switch (sym->type) { - case S_BOOLEAN: - case S_TRISTATE: - sym->def[def].tri = no; - sym->flags |= def_flags; - break; - default: - ; } - } else if (memcmp(line, CONFIG_, strlen(CONFIG_)) == 0) { - p = strchr(line + strlen(CONFIG_), '='); - if (!p) + + sym_name = line + strlen(CONFIG_); + p = strchr(sym_name, '='); + if (!p) { + conf_warning("unexpected data: %s", line); continue; - *p++ = 0; - p2 = strchr(p, '\n'); - if (p2) { - *p2-- = 0; - if (*p2 == '\r') - *p2 = 0; } - if (def == S_DEF_USER) { - sym = sym_find(line + strlen(CONFIG_)); - if (!sym) { - sym_add_change_count(1); - goto setsym; - } + *p = 0; + val = p + 1; + } + + sym = sym_find(sym_name); + if (!sym) { + if (def == S_DEF_AUTO) { + /* + * Reading from include/config/auto.conf. + * If CONFIG_FOO previously existed in auto.conf + * but it is missing now, include/config/FOO + * must be touched. + */ + conf_touch_dep(sym_name); } else { - sym = sym_lookup(line + strlen(CONFIG_), 0); - if (sym->type == S_UNKNOWN) - sym->type = S_OTHER; - } - if (sym->flags & def_flags) { - conf_warning("override: reassigning to symbol %s", sym->name); - } - if (conf_set_sym_val(sym, def, def_flags, p)) - continue; - } else { - if (line[0] != '\r' && line[0] != '\n') - conf_warning("unexpected data: %.*s", - (int)strcspn(line, "\r\n"), line); + if (warn_unknown) + conf_warning("unknown symbol: %s", sym_name); + conf_set_changed(true); + } continue; } -setsym: + + if (sym->flags & def_flags) + conf_warning("override: reassigning to symbol %s", sym->name); + + if (conf_set_sym_val(sym, def, def_flags, val)) + continue; + if (sym && sym_is_choice_value(sym)) { struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym)); switch (sym->def[def].tri) { @@ -401,6 +481,7 @@ setsym: } free(line); fclose(in); + return 0; } @@ -408,9 +489,8 @@ int conf_read(const char *name) { struct symbol *sym; int conf_unsaved = 0; - int i; - sym_set_change_count(0); + conf_set_changed(false); if (conf_read_simple(name, S_DEF_USER)) { sym_calc_value(modules_sym); @@ -419,20 +499,18 @@ int conf_read(const char *name) sym_calc_value(modules_sym); - for_all_symbols(i, sym) { + for_all_symbols(sym) { sym_calc_value(sym); - if (sym_is_choice(sym) || (sym->flags & SYMBOL_AUTO)) + if (sym_is_choice(sym) || (sym->flags & SYMBOL_NO_WRITE)) continue; if (sym_has_value(sym) && (sym->flags & SYMBOL_WRITE)) { /* check that calculated value agrees with saved value */ switch (sym->type) { case S_BOOLEAN: case S_TRISTATE: - if (sym->def[S_DEF_USER].tri != sym_get_tristate_value(sym)) - break; - if (!sym_is_choice(sym)) + if (sym->def[S_DEF_USER].tri == sym_get_tristate_value(sym)) continue; - /* fall through */ + break; default: if (!strcmp(sym->curr.val, sym->def[S_DEF_USER].val)) continue; @@ -445,7 +523,7 @@ int conf_read(const char *name) /* maybe print value in verbose mode... */ } - for_all_symbols(i, sym) { + for_all_symbols(sym) { if (sym_has_value(sym) && !sym_is_choice_value(sym)) { /* Reset values of generates values, so they'll appear * as new, if they should become visible, but that @@ -461,7 +539,7 @@ int conf_read(const char *name) /* Reset a string value if it's out of range */ if (sym_string_within_range(sym, sym->def[S_DEF_USER].val)) break; - sym->flags &= ~(SYMBOL_VALID|SYMBOL_DEF_USER); + sym->flags &= ~SYMBOL_VALID; conf_unsaved++; break; default: @@ -470,194 +548,232 @@ int conf_read(const char *name) } } - sym_add_change_count(conf_warnings || conf_unsaved); + if (conf_warnings || conf_unsaved) + conf_set_changed(true); return 0; } -/* - * Kconfig configuration printer - * - * This printer is used when generating the resulting configuration after - * kconfig invocation and `defconfig' files. Unset symbol might be omitted by - * passing a non-NULL argument to the printer. - * - */ -static void -kconfig_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) +struct comment_style { + const char *decoration; + const char *prefix; + const char *postfix; +}; + +static const struct comment_style comment_style_pound = { + .decoration = "#", + .prefix = "#", + .postfix = "#", +}; + +static const struct comment_style comment_style_c = { + .decoration = " *", + .prefix = "/*", + .postfix = " */", +}; + +static void conf_write_heading(FILE *fp, const struct comment_style *cs) { + if (!cs) + return; - switch (sym->type) { - case S_BOOLEAN: - case S_TRISTATE: - if (*value == 'n') { - bool skip_unset = (arg != NULL); + fprintf(fp, "%s\n", cs->prefix); - if (!skip_unset) - fprintf(fp, "# %s%s is not set\n", - CONFIG_, sym->name); - return; - } - break; - default: - break; - } + fprintf(fp, "%s Automatically generated file; DO NOT EDIT.\n", + cs->decoration); + + fprintf(fp, "%s %s\n", cs->decoration, rootmenu.prompt->text); - fprintf(fp, "%s%s=%s\n", CONFIG_, sym->name, value); + fprintf(fp, "%s\n", cs->postfix); } -static void -kconfig_print_comment(FILE *fp, const char *value, void *arg) +/* The returned pointer must be freed on the caller side */ +static char *escape_string_value(const char *in) { - const char *p = value; - size_t l; - - for (;;) { - l = strcspn(p, "\n"); - fprintf(fp, "#"); - if (l) { - fprintf(fp, " "); - xfwrite(p, l, 1, fp); - p += l; - } - fprintf(fp, "\n"); - if (*p++ == '\0') + const char *p; + char *out; + size_t len; + + len = strlen(in) + strlen("\"\"") + 1; + + p = in; + while (1) { + p += strcspn(p, "\"\\"); + + if (p[0] == '\0') + break; + + len++; + p++; + } + + out = xmalloc(len); + out[0] = '\0'; + + strcat(out, "\""); + + p = in; + while (1) { + len = strcspn(p, "\"\\"); + strncat(out, p, len); + p += len; + + if (p[0] == '\0') break; + + strcat(out, "\\"); + strncat(out, p++, 1); } + + strcat(out, "\""); + + return out; } -static struct conf_printer kconfig_printer_cb = +enum output_n { OUTPUT_N, OUTPUT_N_AS_UNSET, OUTPUT_N_NONE }; + +static void __print_symbol(FILE *fp, struct symbol *sym, enum output_n output_n, + bool escape_string) { - .print_symbol = kconfig_print_symbol, - .print_comment = kconfig_print_comment, -}; + const char *val; + char *escaped = NULL; -/* - * Header printer - * - * This printer is used when generating the `include/generated/autoconf.h' file. - */ -static void -header_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) + if (sym->type == S_UNKNOWN) + return; + + val = sym_get_string_value(sym); + + if ((sym->type == S_BOOLEAN || sym->type == S_TRISTATE) && + output_n != OUTPUT_N && *val == 'n') { + if (output_n == OUTPUT_N_AS_UNSET) + fprintf(fp, "# %s%s is not set\n", CONFIG_, sym->name); + return; + } + + if (sym->type == S_STRING && escape_string) { + escaped = escape_string_value(val); + val = escaped; + } + + fprintf(fp, "%s%s=%s\n", CONFIG_, sym->name, val); + + free(escaped); +} + +static void print_symbol_for_dotconfig(FILE *fp, struct symbol *sym) +{ + __print_symbol(fp, sym, OUTPUT_N_AS_UNSET, true); +} + +static void print_symbol_for_autoconf(FILE *fp, struct symbol *sym) +{ + __print_symbol(fp, sym, OUTPUT_N_NONE, false); +} + +void print_symbol_for_listconfig(struct symbol *sym) +{ + __print_symbol(stdout, sym, OUTPUT_N, true); +} + +static void print_symbol_for_c(FILE *fp, struct symbol *sym) { + const char *val; + const char *sym_suffix = ""; + const char *val_prefix = ""; + char *escaped = NULL; + + if (sym->type == S_UNKNOWN) + return; + + val = sym_get_string_value(sym); switch (sym->type) { case S_BOOLEAN: - case S_TRISTATE: { - const char *suffix = ""; - - switch (*value) { + case S_TRISTATE: + switch (*val) { case 'n': - break; + return; case 'm': - suffix = "_MODULE"; + sym_suffix = "_MODULE"; /* fall through */ default: - fprintf(fp, "#define %s%s%s 1\n", - CONFIG_, sym->name, suffix); + val = "1"; } break; - } - case S_HEX: { - const char *prefix = ""; - - if (value[0] != '0' || (value[1] != 'x' && value[1] != 'X')) - prefix = "0x"; - fprintf(fp, "#define %s%s %s%s\n", - CONFIG_, sym->name, prefix, value); + case S_HEX: + if (val[0] != '0' || (val[1] != 'x' && val[1] != 'X')) + val_prefix = "0x"; break; - } case S_STRING: - case S_INT: - fprintf(fp, "#define %s%s %s\n", - CONFIG_, sym->name, value); - break; + escaped = escape_string_value(val); + val = escaped; default: break; } -} + fprintf(fp, "#define %s%s%s %s%s\n", CONFIG_, sym->name, sym_suffix, + val_prefix, val); -static void -header_print_comment(FILE *fp, const char *value, void *arg) -{ - const char *p = value; - size_t l; - - fprintf(fp, "/*\n"); - for (;;) { - l = strcspn(p, "\n"); - fprintf(fp, " *"); - if (l) { - fprintf(fp, " "); - xfwrite(p, l, 1, fp); - p += l; - } - fprintf(fp, "\n"); - if (*p++ == '\0') - break; - } - fprintf(fp, " */\n"); + free(escaped); } -static struct conf_printer header_printer_cb = -{ - .print_symbol = header_print_symbol, - .print_comment = header_print_comment, -}; - -/* - * Tristate printer - * - * This printer is used when generating the `include/config/tristate.conf' file. - */ -static void -tristate_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) +static void print_symbol_for_rustccfg(FILE *fp, struct symbol *sym) { + const char *val; + const char *val_prefix = ""; + char *val_prefixed = NULL; + size_t val_prefixed_len; + char *escaped = NULL; - if (sym->type == S_TRISTATE && *value != 'n') - fprintf(fp, "%s%s=%c\n", CONFIG_, sym->name, (char)toupper(*value)); -} - -static struct conf_printer tristate_printer_cb = -{ - .print_symbol = tristate_print_symbol, - .print_comment = kconfig_print_comment, -}; + if (sym->type == S_UNKNOWN) + return; -static void conf_write_symbol(FILE *fp, struct symbol *sym, - struct conf_printer *printer, void *printer_arg) -{ - const char *str; + val = sym_get_string_value(sym); switch (sym->type) { - case S_OTHER: - case S_UNKNOWN: + case S_BOOLEAN: + case S_TRISTATE: + /* + * We do not care about disabled ones, i.e. no need for + * what otherwise are "comments" in other printers. + */ + if (*val == 'n') + return; + + /* + * To have similar functionality to the C macro `IS_ENABLED()` + * we provide an empty `--cfg CONFIG_X` here in both `y` + * and `m` cases. + * + * Then, the common `fprintf()` below will also give us + * a `--cfg CONFIG_X="y"` or `--cfg CONFIG_X="m"`, which can + * be used as the equivalent of `IS_BUILTIN()`/`IS_MODULE()`. + */ + fprintf(fp, "--cfg=%s%s\n", CONFIG_, sym->name); break; - case S_STRING: - str = sym_get_string_value(sym); - str = sym_escape_string_value(str); - printer->print_symbol(fp, sym, str, printer_arg); - free((void *)str); + case S_HEX: + if (val[0] != '0' || (val[1] != 'x' && val[1] != 'X')) + val_prefix = "0x"; break; default: - str = sym_get_string_value(sym); - printer->print_symbol(fp, sym, str, printer_arg); + break; } -} -static void -conf_write_heading(FILE *fp, struct conf_printer *printer, void *printer_arg) -{ - char buf[256]; + if (strlen(val_prefix) > 0) { + val_prefixed_len = strlen(val) + strlen(val_prefix) + 1; + val_prefixed = xmalloc(val_prefixed_len); + snprintf(val_prefixed, val_prefixed_len, "%s%s", val_prefix, val); + val = val_prefixed; + } + + /* All values get escaped: the `--cfg` option only takes strings */ + escaped = escape_string_value(val); + val = escaped; - snprintf(buf, sizeof(buf), - "\n" - "Automatically generated file; DO NOT EDIT.\n" - "%s\n", - rootmenu.prompt->text); + fprintf(fp, "--cfg=%s%s=%s\n", CONFIG_, sym->name, val); - printer->print_comment(fp, buf, printer_arg); + free(escaped); + free(val_prefixed); } /* @@ -682,16 +798,13 @@ int conf_write_defconfig(const char *filename) while (menu != NULL) { sym = menu->sym; - if (sym == NULL) { - if (!menu_is_visible(menu)) - goto next_menu; - } else if (!sym_is_choice(sym)) { + if (sym && !sym_is_choice(sym)) { sym_calc_value(sym); if (!(sym->flags & SYMBOL_WRITE)) goto next_menu; sym->flags &= ~SYMBOL_WRITE; /* If we cannot change the symbol - skip */ - if (!sym_is_changable(sym)) + if (!sym_is_changeable(sym)) goto next_menu; /* If symbol equals to default value - skip */ if (strcmp(sym_get_string_value(sym), sym_get_string_default(sym)) == 0) @@ -716,7 +829,7 @@ int conf_write_defconfig(const char *filename) goto next_menu; } } - conf_write_symbol(out, sym, &kconfig_printer_cb, NULL); + print_symbol_for_dotconfig(out, sym); } next_menu: if (menu->list != NULL) { @@ -742,49 +855,40 @@ int conf_write(const char *name) FILE *out; struct symbol *sym; struct menu *menu; - const char *basename; const char *str; - char dirname[PATH_MAX+1], tmpname[PATH_MAX+20], newname[PATH_MAX+1]; + char tmpname[PATH_MAX + 1], oldname[PATH_MAX + 1]; char *env; + bool need_newline = false; if (!name) name = conf_get_configname(); - dirname[0] = 0; - if (name && name[0]) { - struct stat st; - char *slash; - - if (!stat(name, &st) && S_ISDIR(st.st_mode)) { - strcpy(dirname, name); - strcat(dirname, "/"); - basename = conf_get_configname(); - } else if ((slash = strrchr(name, '/'))) { - int size = slash - name + 1; - memcpy(dirname, name, size); - dirname[size] = 0; - if (slash[1]) - basename = slash + 1; - else - basename = conf_get_configname(); - } else - basename = name; - } else - basename = conf_get_configname(); - - sprintf(newname, "%s%s", dirname, basename); + if (!*name) { + fprintf(stderr, "config name is empty\n"); + return -1; + } + + if (is_dir(name)) { + fprintf(stderr, "%s: Is a directory\n", name); + return -1; + } + + if (make_parent_dir(name)) + return -1; + env = getenv("KCONFIG_OVERWRITECONFIG"); - if (!env || !*env) { - sprintf(tmpname, "%s.tmpconfig.%d", dirname, (int)getpid()); - out = fopen(tmpname, "w"); - } else { + if (env && *env) { *tmpname = 0; - out = fopen(newname, "w"); + out = fopen(name, "w"); + } else { + snprintf(tmpname, sizeof(tmpname), "%s.%d.tmp", + name, (int)getpid()); + out = fopen(tmpname, "w"); } if (!out) return 1; - conf_write_heading(out, &kconfig_printer_cb, NULL); + conf_write_heading(out, &comment_style_pound); if (!conf_get_changed()) sym_clear_all_valid(); @@ -800,13 +904,18 @@ int conf_write(const char *name) "#\n" "# %s\n" "#\n", str); - } else if (!(sym->flags & SYMBOL_CHOICE)) { + need_newline = false; + } else if (!(sym->flags & SYMBOL_CHOICE) && + !(sym->flags & SYMBOL_WRITTEN)) { sym_calc_value(sym); if (!(sym->flags & SYMBOL_WRITE)) goto next; - sym->flags &= ~SYMBOL_WRITE; - - conf_write_symbol(out, sym, &kconfig_printer_cb, NULL); + if (need_newline) { + fprintf(out, "\n"); + need_newline = false; + } + sym->flags |= SYMBOL_WRITTEN; + print_symbol_for_dotconfig(out, sym); } next: @@ -814,65 +923,111 @@ next: menu = menu->list; continue; } - if (menu->next) + +end_check: + if (!menu->sym && menu_is_visible(menu) && menu != &rootmenu && + menu->prompt->type == P_MENU) { + fprintf(out, "# end of %s\n", menu_get_prompt(menu)); + need_newline = true; + } + + if (menu->next) { menu = menu->next; - else while ((menu = menu->parent)) { - if (menu->next) { - menu = menu->next; - break; - } + } else { + menu = menu->parent; + if (menu) + goto end_check; } } fclose(out); + for_all_symbols(sym) + sym->flags &= ~SYMBOL_WRITTEN; + if (*tmpname) { - strcat(dirname, basename); - strcat(dirname, ".old"); - rename(newname, dirname); - if (rename(tmpname, newname)) + if (is_same(name, tmpname)) { + conf_message("No change to %s", name); + unlink(tmpname); + conf_set_changed(false); + return 0; + } + + snprintf(oldname, sizeof(oldname), "%s.old", name); + rename(name, oldname); + if (rename(tmpname, name)) return 1; } - conf_message(_("configuration written to %s"), newname); + conf_message("configuration written to %s", name); + + conf_set_changed(false); + + return 0; +} + +/* write a dependency file as used by kbuild to track dependencies */ +static int conf_write_autoconf_cmd(const char *autoconf_name) +{ + char name[PATH_MAX], tmp[PATH_MAX]; + FILE *out; + int ret; + + ret = snprintf(name, sizeof(name), "%s.cmd", autoconf_name); + if (ret >= sizeof(name)) /* check truncation */ + return -1; + + if (make_parent_dir(name)) + return -1; + + ret = snprintf(tmp, sizeof(tmp), "%s.cmd.tmp", autoconf_name); + if (ret >= sizeof(tmp)) /* check truncation */ + return -1; + + out = fopen(tmp, "w"); + if (!out) { + perror("fopen"); + return -1; + } + + fprintf(out, "autoconfig := %s\n", autoconf_name); + + fputs(str_get(&autoconf_cmd), out); + + fflush(out); + ret = ferror(out); /* error check for all fprintf() calls */ + fclose(out); + if (ret) + return -1; - sym_set_change_count(0); + if (rename(tmp, name)) { + perror("rename"); + return -1; + } return 0; } -static int conf_split_config(void) +static int conf_touch_deps(void) { - const char *name; - char path[PATH_MAX+1]; - char *opwd, *dir, *_name; - char *s, *d, c; + const char *name, *tmp; struct symbol *sym; - struct stat sb; - int res, i, fd; + int res; name = conf_get_autoconfig_name(); + tmp = strrchr(name, '/'); + depfile_prefix_len = tmp ? tmp - name + 1 : 0; + if (depfile_prefix_len + 1 > sizeof(depfile_path)) + return -1; + + strncpy(depfile_path, name, depfile_prefix_len); + depfile_path[depfile_prefix_len] = 0; + conf_read_simple(name, S_DEF_AUTO); sym_calc_value(modules_sym); - opwd = malloc(256); - _name = strdup(name); - if (opwd == NULL || _name == NULL) - return 1; - opwd = getcwd(opwd, 256); - dir = dirname(_name); - if (dir == NULL) { - res = 1; - goto err; - } - if (chdir(dir)) { - res = 1; - goto err; - } - - res = 0; - for_all_symbols(i, sym) { + for_all_symbols(sym) { sym_calc_value(sym); - if ((sym->flags & SYMBOL_AUTO) || !sym->name) + if ((sym->flags & SYMBOL_NO_WRITE) || !sym->name) continue; if (sym->flags & SYMBOL_WRITE) { if (sym->flags & SYMBOL_DEF_AUTO) { @@ -921,163 +1076,118 @@ static int conf_split_config(void) * different from 'no'). */ - /* Replace all '_' and append ".h" */ - s = sym->name; - d = path; - while ((c = *s++)) { - c = tolower(c); - *d++ = (c == '_') ? '/' : c; - } - strcpy(d, ".h"); - - /* Assume directory path already exists. */ - fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644); - if (fd == -1) { - if (errno != ENOENT) { - res = 1; - break; - } - /* - * Create directory components, - * unless they exist already. - */ - d = path; - while ((d = strchr(d, '/'))) { - *d = 0; - if (stat(path, &sb) && mkdir(path, 0755)) { - res = 1; - goto out; - } - *d++ = '/'; - } - /* Try it again. */ - fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644); - if (fd == -1) { - res = 1; - break; - } - } - close(fd); + res = conf_touch_dep(sym->name); + if (res) + return res; } -out: - if (chdir(opwd)) - res = 1; -err: - free(opwd); - free(_name); - return res; + + return 0; } -int conf_write_autoconf(void) +static int __conf_write_autoconf(const char *filename, + void (*print_symbol)(FILE *, struct symbol *), + const struct comment_style *comment_style) { + char tmp[PATH_MAX]; + FILE *file; struct symbol *sym; - const char *name; - FILE *out, *tristate, *out_h; - int i; - char dir[PATH_MAX+1], buf[PATH_MAX+20]; - char *s; - - strcpy(dir, conf_get_configname()); - s = strrchr(dir, '/'); - if (s) - s[1] = 0; - else - dir[0] = 0; + int ret; - sym_clear_all_valid(); + if (make_parent_dir(filename)) + return -1; - sprintf(buf, "%s.config.cmd", dir); - file_write_dep(buf); + ret = snprintf(tmp, sizeof(tmp), "%s.tmp", filename); + if (ret >= sizeof(tmp)) /* check truncation */ + return -1; - if (conf_split_config()) - return 1; + file = fopen(tmp, "w"); + if (!file) { + perror("fopen"); + return -1; + } - sprintf(buf, "%s.tmpconfig", dir); - out = fopen(buf, "w"); - if (!out) - return 1; + conf_write_heading(file, comment_style); - sprintf(buf, "%s.tmpconfig_tristate", dir); - tristate = fopen(buf, "w"); - if (!tristate) { - fclose(out); - return 1; - } + for_all_symbols(sym) + if ((sym->flags & SYMBOL_WRITE) && sym->name) + print_symbol(file, sym); - sprintf(buf, "%s.tmpconfig.h", dir); - out_h = fopen(buf, "w"); - if (!out_h) { - fclose(out); - fclose(tristate); - return 1; + fflush(file); + /* check possible errors in conf_write_heading() and print_symbol() */ + ret = ferror(file); + fclose(file); + if (ret) + return -1; + + if (rename(tmp, filename)) { + perror("rename"); + return -1; } - conf_write_heading(out, &kconfig_printer_cb, NULL); + return 0; +} - conf_write_heading(tristate, &tristate_printer_cb, NULL); +int conf_write_autoconf(int overwrite) +{ + struct symbol *sym; + const char *autoconf_name = conf_get_autoconfig_name(); + int ret; - conf_write_heading(out_h, &header_printer_cb, NULL); + if (!overwrite && is_present(autoconf_name)) + return 0; - for_all_symbols(i, sym) { - sym_calc_value(sym); - if (!(sym->flags & SYMBOL_WRITE) || !sym->name) - continue; + ret = conf_write_autoconf_cmd(autoconf_name); + if (ret) + return -1; - /* write symbol to auto.conf, tristate and header files */ - conf_write_symbol(out, sym, &kconfig_printer_cb, (void *)1); + if (conf_touch_deps()) + return 1; - conf_write_symbol(tristate, sym, &tristate_printer_cb, (void *)1); + for_all_symbols(sym) + sym_calc_value(sym); - conf_write_symbol(out_h, sym, &header_printer_cb, NULL); - } - fclose(out); - fclose(tristate); - fclose(out_h); + ret = __conf_write_autoconf(conf_get_autoheader_name(), + print_symbol_for_c, + &comment_style_c); + if (ret) + return ret; + + ret = __conf_write_autoconf(conf_get_rustccfg_name(), + print_symbol_for_rustccfg, + NULL); + if (ret) + return ret; - name = getenv("KCONFIG_AUTOHEADER"); - if (!name) - name = "include/generated/autoconf.h"; - sprintf(buf, "%s.tmpconfig.h", dir); - if (rename(buf, name)) - return 1; - name = getenv("KCONFIG_TRISTATE"); - if (!name) - name = "include/config/tristate.conf"; - sprintf(buf, "%s.tmpconfig_tristate", dir); - if (rename(buf, name)) - return 1; - name = conf_get_autoconfig_name(); /* - * This must be the last step, kbuild has a dependency on auto.conf - * and this marks the successful completion of the previous steps. + * Create include/config/auto.conf. This must be the last step because + * Kbuild has a dependency on auto.conf and this marks the successful + * completion of the previous steps. */ - sprintf(buf, "%s.tmpconfig", dir); - if (rename(buf, name)) - return 1; + ret = __conf_write_autoconf(conf_get_autoconfig_name(), + print_symbol_for_autoconf, + &comment_style_pound); + if (ret) + return ret; return 0; } -static int sym_change_count; +static bool conf_changed; static void (*conf_changed_callback)(void); -void sym_set_change_count(int count) +void conf_set_changed(bool val) { - int _sym_change_count = sym_change_count; - sym_change_count = count; - if (conf_changed_callback && - (bool)_sym_change_count != (bool)count) - conf_changed_callback(); -} + bool changed = conf_changed != val; -void sym_add_change_count(int count) -{ - sym_set_change_count(count + sym_change_count); + conf_changed = val; + + if (conf_changed_callback && changed) + conf_changed_callback(); } bool conf_get_changed(void) { - return sym_change_count; + return conf_changed; } void conf_set_changed_callback(void (*fn)(void)) @@ -1085,54 +1195,6 @@ void conf_set_changed_callback(void (*fn)(void)) conf_changed_callback = fn; } -static bool randomize_choice_values(struct symbol *csym) -{ - struct property *prop; - struct symbol *sym; - struct expr *e; - int cnt, def; - - /* - * If choice is mod then we may have more items selected - * and if no then no-one. - * In both cases stop. - */ - if (csym->curr.tri != yes) - return false; - - prop = sym_get_choice_prop(csym); - - /* count entries in choice block */ - cnt = 0; - expr_list_for_each_sym(prop->expr, e, sym) - cnt++; - - /* - * find a random value and set it to yes, - * set the rest to no so we have only one set - */ - def = (rand() % cnt); - - cnt = 0; - expr_list_for_each_sym(prop->expr, e, sym) { - if (def == cnt++) { - sym->def[S_DEF_USER].tri = yes; - csym->def[S_DEF_USER].val = sym; - } - else { - sym->def[S_DEF_USER].tri = no; - } - sym->flags |= SYMBOL_DEF_USER; - /* clear VALID to get value calculated */ - sym->flags &= ~SYMBOL_VALID; - } - csym->flags |= SYMBOL_DEF_USER; - /* clear VALID to get value calculated */ - csym->flags &= ~(SYMBOL_VALID); - - return true; -} - void set_all_choice_values(struct symbol *csym) { struct property *prop; @@ -1152,131 +1214,3 @@ void set_all_choice_values(struct symbol *csym) /* clear VALID to get value calculated */ csym->flags &= ~(SYMBOL_VALID | SYMBOL_NEED_SET_CHOICE_VALUES); } - -bool conf_set_all_new_symbols(enum conf_def_mode mode) -{ - struct symbol *sym, *csym; - int i, cnt, pby, pty, ptm; /* pby: probability of bool = y - * pty: probability of tristate = y - * ptm: probability of tristate = m - */ - - pby = 50; pty = ptm = 33; /* can't go as the default in switch-case - * below, otherwise gcc whines about - * -Wmaybe-uninitialized */ - if (mode == def_random) { - int n, p[3]; - char *env = getenv("KCONFIG_PROBABILITY"); - n = 0; - while( env && *env ) { - char *endp; - int tmp = strtol( env, &endp, 10 ); - if( tmp >= 0 && tmp <= 100 ) { - p[n++] = tmp; - } else { - errno = ERANGE; - perror( "KCONFIG_PROBABILITY" ); - exit( 1 ); - } - env = (*endp == ':') ? endp+1 : endp; - if( n >=3 ) { - break; - } - } - switch( n ) { - case 1: - pby = p[0]; ptm = pby/2; pty = pby-ptm; - break; - case 2: - pty = p[0]; ptm = p[1]; pby = pty + ptm; - break; - case 3: - pby = p[0]; pty = p[1]; ptm = p[2]; - break; - } - - if( pty+ptm > 100 ) { - errno = ERANGE; - perror( "KCONFIG_PROBABILITY" ); - exit( 1 ); - } - } - bool has_changed = false; - - for_all_symbols(i, sym) { - if (sym_has_value(sym) || (sym->flags & SYMBOL_VALID)) - continue; - switch (sym_get_type(sym)) { - case S_BOOLEAN: - case S_TRISTATE: - has_changed = true; - switch (mode) { - case def_yes: - sym->def[S_DEF_USER].tri = yes; - break; - case def_mod: - sym->def[S_DEF_USER].tri = mod; - break; - case def_no: - if (sym->flags & SYMBOL_ALLNOCONFIG_Y) - sym->def[S_DEF_USER].tri = yes; - else - sym->def[S_DEF_USER].tri = no; - break; - case def_random: - sym->def[S_DEF_USER].tri = no; - cnt = rand() % 100; - if (sym->type == S_TRISTATE) { - if (cnt < pty) - sym->def[S_DEF_USER].tri = yes; - else if (cnt < (pty+ptm)) - sym->def[S_DEF_USER].tri = mod; - } else if (cnt < pby) - sym->def[S_DEF_USER].tri = yes; - break; - default: - continue; - } - if (!(sym_is_choice(sym) && mode == def_random)) - sym->flags |= SYMBOL_DEF_USER; - break; - default: - break; - } - - } - - sym_clear_all_valid(); - - /* - * We have different type of choice blocks. - * If curr.tri equals to mod then we can select several - * choice symbols in one block. - * In this case we do nothing. - * If curr.tri equals yes then only one symbol can be - * selected in a choice block and we set it to yes, - * and the rest to no. - */ - if (mode != def_random) { - for_all_symbols(i, csym) { - if ((sym_is_choice(csym) && !sym_has_value(csym)) || - sym_is_choice_value(csym)) - csym->flags |= SYMBOL_NEED_SET_CHOICE_VALUES; - } - } - - for_all_symbols(i, csym) { - if (sym_has_value(csym) || !sym_is_choice(csym)) - continue; - - sym_calc_value(csym); - if (mode == def_random) - has_changed = randomize_choice_values(csym); - else { - set_all_choice_values(csym); - has_changed = true; - } - } - - return has_changed; -} diff --git a/support/kconfig/expr.c b/support/kconfig/expr.c index e1a39e9084..a290de3630 100644 --- a/support/kconfig/expr.c +++ b/support/kconfig/expr.c @@ -1,8 +1,10 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ +#include +#include #include #include #include @@ -11,7 +13,6 @@ #define DEBUG_EXPR 0 -static int expr_eq(struct expr *e1, struct expr *e2); static struct expr *expr_eliminate_yn(struct expr *e); struct expr *expr_alloc_symbol(struct symbol *sym) @@ -248,10 +249,17 @@ void expr_eliminate_eq(struct expr **ep1, struct expr **ep2) * equals some operand in the other (operands do not need to appear in the same * order), recursively. */ -static int expr_eq(struct expr *e1, struct expr *e2) +int expr_eq(struct expr *e1, struct expr *e2) { int res, old_count; + /* + * A NULL expr is taken to be yes, but there's also a different way to + * represent yes. expr_is_yes() checks for either representation. + */ + if (!e1 || !e2) + return expr_is_yes(e1) && expr_is_yes(e2); + if (e1->type != e2->type) return 0; switch (e1->type) { @@ -980,7 +988,6 @@ enum string_value_kind { k_string, k_signed, k_unsigned, - k_invalid }; union string_value { @@ -1011,13 +1018,10 @@ static enum string_value_kind expr_parse_string(const char *str, val->u = strtoull(str, &tail, 16); kind = k_unsigned; break; - case S_STRING: - case S_UNKNOWN: + default: val->s = strtoll(str, &tail, 0); kind = k_signed; break; - default: - return k_invalid; } return !errno && !*tail && tail > str && isxdigit(tail[-1]) ? kind : k_string; @@ -1073,13 +1077,7 @@ tristate expr_calc_value(struct expr *e) if (k1 == k_string || k2 == k_string) res = strcmp(str1, str2); - else if (k1 == k_invalid || k2 == k_invalid) { - if (e->type != E_EQUAL && e->type != E_UNEQUAL) { - printf("Cannot compare \"%s\" and \"%s\"\n", str1, str2); - return no; - } - res = strcmp(str1, str2); - } else if (k1 == k_unsigned || k2 == k_unsigned) + else if (k1 == k_unsigned || k2 == k_unsigned) res = (lval.u > rval.u) - (lval.u < rval.u); else /* if (k1 == k_signed && k2 == k_signed) */ res = (lval.s > rval.s) - (lval.s < rval.s); @@ -1133,7 +1131,6 @@ static int expr_compare_type(enum expr_type t1, enum expr_type t2) default: return -1; } - printf("[%dgt%d?]", t1, t2); return 0; } diff --git a/support/kconfig/expr.h b/support/kconfig/expr.h index 94a383b21d..0158f5eac4 100644 --- a/support/kconfig/expr.h +++ b/support/kconfig/expr.h @@ -1,6 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ #ifndef EXPR_H @@ -12,17 +12,12 @@ extern "C" { #include #include -#include "list.h" +#include "list_types.h" #ifndef __cplusplus #include #endif -struct file { - struct file *next; - struct file *parent; - const char *name; - int lineno; -}; +#include "list_types.h" typedef enum tristate { no, mod, yes @@ -62,7 +57,7 @@ struct symbol_value { }; enum symbol_type { - S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING, S_OTHER + S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING }; /* enum values are used as index to symbol.def[] */ @@ -81,8 +76,8 @@ enum { * SYMBOL_CHOICE bit set in 'flags'. */ struct symbol { - /* The next symbol in the same bucket in the symbol hash table */ - struct symbol *next; + /* link node for the hash table */ + struct hlist_node node; /* The name of the symbol, e.g. "FOO" for 'config FOO' */ char *name; @@ -113,6 +108,9 @@ struct symbol { */ tristate visible; + /* config entries associated with this symbol */ + struct list_head menus; + /* SYMBOL_* flags */ int flags; @@ -131,8 +129,6 @@ struct symbol { struct expr_value implied; }; -#define for_all_symbols(i, sym) for (i = 0; i < SYMBOL_HASHSIZE; i++) for (sym = symbol_hash[i]; sym; sym = sym->next) if (sym->type != S_OTHER) - #define SYMBOL_CONST 0x0001 /* symbol is const */ #define SYMBOL_CHECK 0x0008 /* used during dependency checking */ #define SYMBOL_CHOICE 0x0010 /* start of a choice block (null name) */ @@ -141,7 +137,8 @@ struct symbol { #define SYMBOL_OPTIONAL 0x0100 /* choice is optional - values can be 'n' */ #define SYMBOL_WRITE 0x0200 /* write symbol to file (KCONFIG_CONFIG) */ #define SYMBOL_CHANGED 0x0400 /* ? */ -#define SYMBOL_AUTO 0x1000 /* value from environment variable */ +#define SYMBOL_WRITTEN 0x0800 /* track info to avoid double-write to .config */ +#define SYMBOL_NO_WRITE 0x1000 /* Symbol for internal use only; it will not be written */ #define SYMBOL_CHECKED 0x2000 /* used during dependency checking */ #define SYMBOL_WARNED 0x8000 /* warning has been issued */ @@ -155,11 +152,7 @@ struct symbol { /* choice values need to be set before calculating this symbol value */ #define SYMBOL_NEED_SET_CHOICE_VALUES 0x100000 -/* Set symbol to y if allnoconfig; used for symbols that hide others */ -#define SYMBOL_ALLNOCONFIG_Y 0x200000 - #define SYMBOL_MAXLENGTH 256 -#define SYMBOL_HASHSIZE 9973 /* A property represent the config options that can be associated * with a config "symbol". @@ -171,6 +164,9 @@ struct symbol { * config BAZ * int "BAZ Value" * range 1..255 + * + * Please, also check parser.y:print_symbol() when modifying the + * list of property types! */ enum prop_type { P_UNKNOWN, @@ -182,13 +178,11 @@ enum prop_type { P_SELECT, /* select BAR */ P_IMPLY, /* imply BAR */ P_RANGE, /* range 7..100 (for a symbol) */ - P_ENV, /* value from environment variable */ P_SYMBOL, /* where a symbol is defined */ }; struct property { struct property *next; /* next property - null if last */ - struct symbol *sym; /* the symbol for which the property is associated */ enum prop_type type; /* type of property */ const char *text; /* the prompt value - P_PROMPT, P_MENU, P_COMMENT */ struct expr_value visible; @@ -196,7 +190,7 @@ struct property { struct menu *menu; /* the menu the property are associated with * valid for: P_SELECT, P_RANGE, P_CHOICE, * P_PROMPT, P_DEFAULT, P_MENU, P_COMMENT */ - struct file *file; /* what file was this property defined */ + const char *filename; /* what file was this property defined */ int lineno; /* what lineno was this property defined */ }; @@ -231,6 +225,8 @@ struct menu { */ struct symbol *sym; + struct list_head link; /* link to symbol::menus */ + /* * The prompt associated with the node. This holds the prompt for a * symbol as well as the text for a menu or comment, along with the @@ -257,7 +253,7 @@ struct menu { char *help; /* The location where the menu node appears in the Kconfig files */ - struct file *file; + const char *filename; int lineno; /* For use by front ends that need to store auxiliary data */ @@ -276,18 +272,10 @@ struct jump_key { struct list_head entries; size_t offset; struct menu *target; - int index; }; -#define JUMP_NB 9 - -extern struct file *file_list; -extern struct file *current_file; -struct file *lookup_file(const char *name); - extern struct symbol symbol_yes, symbol_no, symbol_mod; extern struct symbol *modules_sym; -extern struct symbol *sym_defconfig_list; extern int cdebug; struct expr *expr_alloc_symbol(struct symbol *sym); struct expr *expr_alloc_one(enum expr_type type, struct expr *ce); @@ -298,6 +286,7 @@ struct expr *expr_alloc_or(struct expr *e1, struct expr *e2); struct expr *expr_copy(const struct expr *org); void expr_free(struct expr *e); void expr_eliminate_eq(struct expr **ep1, struct expr **ep2); +int expr_eq(struct expr *e1, struct expr *e2); tristate expr_calc_value(struct expr *e); struct expr *expr_trans_bool(struct expr *e); struct expr *expr_eliminate_dups(struct expr *e); diff --git a/support/kconfig/foo.h b/support/kconfig/foo.h deleted file mode 100644 index b9cfdf8312..0000000000 --- a/support/kconfig/foo.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef __KCONFIG_FOO_H -#define __KCONFIG_FOO_H - -#ifndef __APPLE__ -#include -#endif -#include - -#ifndef PATH_MAX -#define PATH_MAX 1024 -#endif -#endif /* __KCONFIG_FOO_H */ diff --git a/support/kconfig/gconf-cfg.sh b/support/kconfig/gconf-cfg.sh new file mode 100755 index 0000000000..040d8f3388 --- /dev/null +++ b/support/kconfig/gconf-cfg.sh @@ -0,0 +1,33 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +cflags=$1 +libs=$2 + +PKG="gtk+-2.0 gmodule-2.0 libglade-2.0" + +if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then + echo >&2 "*" + echo >&2 "* 'make gconfig' requires '${HOSTPKG_CONFIG}'. Please install it." + echo >&2 "*" + exit 1 +fi + +if ! ${HOSTPKG_CONFIG} --exists $PKG; then + echo >&2 "*" + echo >&2 "* Unable to find the GTK+ installation. Please make sure that" + echo >&2 "* the GTK+ 2.0 development package is correctly installed." + echo >&2 "* You need $PKG" + echo >&2 "*" + exit 1 +fi + +if ! ${HOSTPKG_CONFIG} --atleast-version=2.0.0 gtk+-2.0; then + echo >&2 "*" + echo >&2 "* GTK+ is present but version >= 2.0.0 is required." + echo >&2 "*" + exit 1 +fi + +${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags} +${HOSTPKG_CONFIG} --libs ${PKG} > ${libs} diff --git a/support/kconfig/gconf.c b/support/kconfig/gconf.c index 0c2d1c18f9..d24cebd974 100644 --- a/support/kconfig/gconf.c +++ b/support/kconfig/gconf.c @@ -1,18 +1,11 @@ -/* Hey EMACS -*- linux-c -*- */ +// SPDX-License-Identifier: GPL-2.0 /* - * * Copyright (C) 2002-2003 Romain Lievin - * Released under the terms of the GNU GPL v2.0. - * */ -#ifdef HAVE_CONFIG_H -# include -#endif - #include #include "lkc.h" -#include "images.c" +#include "images.h" #include #include @@ -21,6 +14,7 @@ #include #include +#include #include #include @@ -78,8 +72,8 @@ static gchar **fill_row(struct menu *menu); static void conf_changed(void); /* Helping/Debugging Functions */ - -const char *dbg_sym_flags(int val) +#ifdef DEBUG +static const char *dbg_sym_flags(int val) { static char buf[256]; @@ -101,16 +95,17 @@ const char *dbg_sym_flags(int val) strcat(buf, "write/"); if (val & SYMBOL_CHANGED) strcat(buf, "changed/"); - if (val & SYMBOL_AUTO) - strcat(buf, "auto/"); + if (val & SYMBOL_NO_WRITE) + strcat(buf, "no_write/"); buf[strlen(buf) - 1] = '\0'; return buf; } +#endif -void replace_button_icon(GladeXML * xml, GdkDrawable * window, - GtkStyle * style, gchar * btn_name, gchar ** xpm) +static void replace_button_icon(GladeXML *xml, GdkDrawable *window, + GtkStyle *style, gchar *btn_name, gchar **xpm) { GdkPixmap *pixmap; GdkBitmap *mask; @@ -128,7 +123,7 @@ void replace_button_icon(GladeXML * xml, GdkDrawable * window, } /* Main Window Initialization */ -void init_main_window(const gchar * glade_file) +static void init_main_window(const gchar *glade_file) { GladeXML *xml; GtkWidget *widget; @@ -137,7 +132,7 @@ void init_main_window(const gchar * glade_file) xml = glade_xml_new(glade_file, "window1", NULL); if (!xml) - g_error(_("GUI loading failed !\n")); + g_error("GUI loading failed !\n"); glade_xml_signal_autoconnect(xml); main_wnd = glade_xml_get_widget(xml, "window1"); @@ -190,7 +185,7 @@ void init_main_window(const gchar * glade_file) gtk_widget_show(main_wnd); } -void init_tree_model(void) +static void init_tree_model(void) { gint i; @@ -220,7 +215,7 @@ void init_tree_model(void) model1 = GTK_TREE_MODEL(tree1); } -void init_left_tree(void) +static void init_left_tree(void) { GtkTreeView *view = GTK_TREE_VIEW(tree1_w); GtkCellRenderer *renderer; @@ -233,7 +228,7 @@ void init_left_tree(void) column = gtk_tree_view_column_new(); gtk_tree_view_append_column(view, column); - gtk_tree_view_column_set_title(column, _("Options")); + gtk_tree_view_column_set_title(column, "Options"); renderer = gtk_cell_renderer_toggle_new(); gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), @@ -262,7 +257,7 @@ static void renderer_edited(GtkCellRendererText * cell, const gchar * path_string, const gchar * new_text, gpointer user_data); -void init_right_tree(void) +static void init_right_tree(void) { GtkTreeView *view = GTK_TREE_VIEW(tree2_w); GtkCellRenderer *renderer; @@ -276,7 +271,7 @@ void init_right_tree(void) column = gtk_tree_view_column_new(); gtk_tree_view_append_column(view, column); - gtk_tree_view_column_set_title(column, _("Options")); + gtk_tree_view_column_set_title(column, "Options"); renderer = gtk_cell_renderer_pixbuf_new(); gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), @@ -305,7 +300,7 @@ void init_right_tree(void) renderer = gtk_cell_renderer_text_new(); gtk_tree_view_insert_column_with_attributes(view, -1, - _("Name"), renderer, + "Name", renderer, "text", COL_NAME, "foreground-gdk", COL_COLOR, NULL); @@ -329,7 +324,7 @@ void init_right_tree(void) COL_COLOR, NULL); renderer = gtk_cell_renderer_text_new(); gtk_tree_view_insert_column_with_attributes(view, -1, - _("Value"), renderer, + "Value", renderer, "text", COL_VALUE, "editable", COL_EDIT, @@ -368,7 +363,7 @@ static void text_insert_help(struct menu *menu) { GtkTextBuffer *buffer; GtkTextIter start, end; - const char *prompt = _(menu_get_prompt(menu)); + const char *prompt = menu_get_prompt(menu); struct gstr help = str_new(); menu_get_ext_help(menu, &help); @@ -422,7 +417,7 @@ gboolean on_window1_delete_event(GtkWidget * widget, GdkEvent * event, if (!conf_get_changed()) return FALSE; - dialog = gtk_dialog_new_with_buttons(_("Warning !"), + dialog = gtk_dialog_new_with_buttons("Warning !", GTK_WINDOW(main_wnd), (GtkDialogFlags) (GTK_DIALOG_MODAL | @@ -436,7 +431,7 @@ gboolean on_window1_delete_event(GtkWidget * widget, GdkEvent * event, gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_CANCEL); - label = gtk_label_new(_("\nSave configuration ?\n")); + label = gtk_label_new("\nSave configuration ?\n"); gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), label); gtk_widget_show(label); @@ -496,7 +491,7 @@ load_filename(GtkFileSelection * file_selector, gpointer user_data) (user_data)); if (conf_read(fn)) - text_insert_msg(_("Error"), _("Unable to load configuration !")); + text_insert_msg("Error", "Unable to load configuration !"); else display_tree(&rootmenu); } @@ -505,7 +500,7 @@ void on_load1_activate(GtkMenuItem * menuitem, gpointer user_data) { GtkWidget *fs; - fs = gtk_file_selection_new(_("Load file...")); + fs = gtk_file_selection_new("Load file..."); g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fs)->ok_button), "clicked", G_CALLBACK(load_filename), (gpointer) fs); @@ -524,7 +519,8 @@ void on_load1_activate(GtkMenuItem * menuitem, gpointer user_data) void on_save_activate(GtkMenuItem * menuitem, gpointer user_data) { if (conf_write(NULL)) - text_insert_msg(_("Error"), _("Unable to save configuration !")); + text_insert_msg("Error", "Unable to save configuration !"); + conf_write_autoconf(0); } @@ -537,7 +533,7 @@ store_filename(GtkFileSelection * file_selector, gpointer user_data) (user_data)); if (conf_write(fn)) - text_insert_msg(_("Error"), _("Unable to save configuration !")); + text_insert_msg("Error", "Unable to save configuration !"); gtk_widget_destroy(GTK_WIDGET(user_data)); } @@ -546,7 +542,7 @@ void on_save_as1_activate(GtkMenuItem * menuitem, gpointer user_data) { GtkWidget *fs; - fs = gtk_file_selection_new(_("Save file as...")); + fs = gtk_file_selection_new("Save file as..."); g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fs)->ok_button), "clicked", G_CALLBACK(store_filename), (gpointer) fs); @@ -639,8 +635,8 @@ on_set_option_mode3_activate(GtkMenuItem *menuitem, gpointer user_data) void on_introduction1_activate(GtkMenuItem * menuitem, gpointer user_data) { GtkWidget *dialog; - const gchar *intro_text = _( - "Welcome to gkc, the GTK+ graphical configuration tool\n" + const gchar *intro_text = + "Welcome to gconfig, the GTK+ graphical configuration tool.\n" "For each option, a blank box indicates the feature is disabled, a\n" "check indicates it is enabled, and a dot indicates that it is to\n" "be compiled as a module. Clicking on the box will cycle through the three states.\n" @@ -651,10 +647,7 @@ void on_introduction1_activate(GtkMenuItem * menuitem, gpointer user_data) "Although there is no cross reference yet to help you figure out\n" "what other options must be enabled to support the option you\n" "are interested in, you can still view the help of a grayed-out\n" - "option.\n" - "\n" - "Toggling Show Debug Info under the Options menu will show \n" - "the dependencies, which you can then match by examining other options."); + "option."; dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), GTK_DIALOG_DESTROY_WITH_PARENT, @@ -671,8 +664,8 @@ void on_about1_activate(GtkMenuItem * menuitem, gpointer user_data) { GtkWidget *dialog; const gchar *about_text = - _("gkc is copyright (c) 2002 Romain Lievin .\n" - "Based on the source code from Roman Zippel.\n"); + "gconfig is copyright (c) 2002 Romain Lievin .\n" + "Based on the source code from Roman Zippel.\n"; dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), GTK_DIALOG_DESTROY_WITH_PARENT, @@ -689,9 +682,9 @@ void on_license1_activate(GtkMenuItem * menuitem, gpointer user_data) { GtkWidget *dialog; const gchar *license_text = - _("gkc is released under the terms of the GNU GPL v2.\n" + "gconfig is released under the terms of the GNU GPL v2.\n" "For more information, please see the source code or\n" - "visit http://www.fsf.org/licenses/licenses.html\n"); + "visit http://www.fsf.org/licenses/licenses.html\n"; dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), GTK_DIALOG_DESTROY_WITH_PARENT, @@ -1048,8 +1041,13 @@ static gchar **fill_row(struct menu *menu) g_free(row[i]); bzero(row, sizeof(row)); + ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; + row[COL_OPTION] = - g_strdup_printf("%s %s", _(menu_get_prompt(menu)), + g_strdup_printf("%s %s %s %s", + ptype == P_COMMENT ? "***" : "", + menu_get_prompt(menu), + ptype == P_COMMENT ? "***" : "", sym && !sym_has_value(sym) ? "(NEW)" : ""); if (opt_mode == OPT_ALL && !menu_is_visible(menu)) @@ -1060,7 +1058,6 @@ static gchar **fill_row(struct menu *menu) else row[COL_COLOR] = g_strdup("Black"); - ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; switch (ptype) { case P_MENU: row[COL_PIXBUF] = (gchar *) xpm_menu; @@ -1102,7 +1099,7 @@ static gchar **fill_row(struct menu *menu) if (def_menu) row[COL_VALUE] = - g_strdup(_(menu_get_prompt(def_menu))); + g_strdup(menu_get_prompt(def_menu)); } if (sym->flags & SYMBOL_CHOICEVAL) row[COL_BTNRAD] = GINT_TO_POINTER(TRUE); @@ -1211,8 +1208,8 @@ static GtkTreeIter found; /* * Find a menu in the GtkTree starting at parent. */ -GtkTreeIter *gtktree_iter_find_node(GtkTreeIter * parent, - struct menu *tofind) +static GtkTreeIter *gtktree_iter_find_node(GtkTreeIter *parent, + struct menu *tofind) { GtkTreeIter iter; GtkTreeIter *child = &iter; @@ -1423,7 +1420,7 @@ static void display_list(void) tree = tree2; } -void fixup_rootmenu(struct menu *menu) +static void fixup_rootmenu(struct menu *menu) { struct menu *child; static int menu_cnt = 0; @@ -1447,18 +1444,11 @@ int main(int ac, char *av[]) char *env; gchar *glade_file; - bindtextdomain(PACKAGE, LOCALEDIR); - bind_textdomain_codeset(PACKAGE, "UTF-8"); - textdomain(PACKAGE); - /* GTK stuffs */ gtk_set_locale(); gtk_init(&ac, &av); glade_init(); - //add_pixmap_directory (PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps"); - //add_pixmap_directory (PACKAGE_SOURCE_DIR "/pixmaps"); - /* Determine GUI path */ env = getenv(SRCTREE); if (env) diff --git a/support/kconfig/hashtable.h b/support/kconfig/hashtable.h new file mode 100644 index 0000000000..a0a2c8f5f6 --- /dev/null +++ b/support/kconfig/hashtable.h @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +#ifndef HASHTABLE_H +#define HASHTABLE_H + +#include "array_size.h" +#include "list.h" + +#define HASH_SIZE(name) (ARRAY_SIZE(name)) + +#define HASHTABLE_DECLARE(name, size) struct hlist_head name[size] + +#define HASHTABLE_DEFINE(name, size) \ + HASHTABLE_DECLARE(name, size) = \ + { [0 ... ((size) - 1)] = HLIST_HEAD_INIT } + +#define hash_head(table, key) (&(table)[(key) % HASH_SIZE(table)]) + +/** + * hash_add - add an object to a hashtable + * @table: hashtable to add to + * @node: the &struct hlist_node of the object to be added + * @key: the key of the object to be added + */ +#define hash_add(table, node, key) \ + hlist_add_head(node, hash_head(table, key)) + +/** + * hash_for_each - iterate over a hashtable + * @table: hashtable to iterate + * @obj: the type * to use as a loop cursor for each entry + * @member: the name of the hlist_node within the struct + */ +#define hash_for_each(table, obj, member) \ + for (int _bkt = 0; _bkt < HASH_SIZE(table); _bkt++) \ + hlist_for_each_entry(obj, &table[_bkt], member) + +/** + * hash_for_each_possible - iterate over all possible objects hashing to the + * same bucket + * @table: hashtable to iterate + * @obj: the type * to use as a loop cursor for each entry + * @member: the name of the hlist_node within the struct + * @key: the key of the objects to iterate over + */ +#define hash_for_each_possible(table, obj, member, key) \ + hlist_for_each_entry(obj, hash_head(table, key), member) + +#endif /* HASHTABLE_H */ diff --git a/support/kconfig/images.c b/support/kconfig/images.c index d4f84bd4a9..2f9afffa5d 100644 --- a/support/kconfig/images.c +++ b/support/kconfig/images.c @@ -1,9 +1,11 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ -static const char *xpm_load[] = { +#include "images.h" + +const char * const xpm_load[] = { "22 22 5 1", ". c None", "# c #000000", @@ -33,7 +35,7 @@ static const char *xpm_load[] = { "###############.......", "......................"}; -static const char *xpm_save[] = { +const char * const xpm_save[] = { "22 22 5 1", ". c None", "# c #000000", @@ -63,7 +65,7 @@ static const char *xpm_save[] = { "..##################..", "......................"}; -static const char *xpm_back[] = { +const char * const xpm_back[] = { "22 22 3 1", ". c None", "# c #000083", @@ -91,7 +93,7 @@ static const char *xpm_back[] = { "......................", "......................"}; -static const char *xpm_tree_view[] = { +const char * const xpm_tree_view[] = { "22 22 2 1", ". c None", "# c #000000", @@ -118,7 +120,7 @@ static const char *xpm_tree_view[] = { "......................", "......................"}; -static const char *xpm_single_view[] = { +const char * const xpm_single_view[] = { "22 22 2 1", ". c None", "# c #000000", @@ -145,7 +147,7 @@ static const char *xpm_single_view[] = { "......................", "......................"}; -static const char *xpm_split_view[] = { +const char * const xpm_split_view[] = { "22 22 2 1", ". c None", "# c #000000", @@ -172,7 +174,7 @@ static const char *xpm_split_view[] = { "......................", "......................"}; -static const char *xpm_symbol_no[] = { +const char * const xpm_symbol_no[] = { "12 12 2 1", " c white", ". c black", @@ -189,7 +191,7 @@ static const char *xpm_symbol_no[] = { " .......... ", " "}; -static const char *xpm_symbol_mod[] = { +const char * const xpm_symbol_mod[] = { "12 12 2 1", " c white", ". c black", @@ -206,7 +208,7 @@ static const char *xpm_symbol_mod[] = { " .......... ", " "}; -static const char *xpm_symbol_yes[] = { +const char * const xpm_symbol_yes[] = { "12 12 2 1", " c white", ". c black", @@ -223,7 +225,7 @@ static const char *xpm_symbol_yes[] = { " .......... ", " "}; -static const char *xpm_choice_no[] = { +const char * const xpm_choice_no[] = { "12 12 2 1", " c white", ". c black", @@ -240,7 +242,7 @@ static const char *xpm_choice_no[] = { " .... ", " "}; -static const char *xpm_choice_yes[] = { +const char * const xpm_choice_yes[] = { "12 12 2 1", " c white", ". c black", @@ -257,7 +259,7 @@ static const char *xpm_choice_yes[] = { " .... ", " "}; -static const char *xpm_menu[] = { +const char * const xpm_menu[] = { "12 12 2 1", " c white", ". c black", @@ -274,7 +276,7 @@ static const char *xpm_menu[] = { " .......... ", " "}; -static const char *xpm_menu_inv[] = { +const char * const xpm_menu_inv[] = { "12 12 2 1", " c white", ". c black", @@ -291,7 +293,7 @@ static const char *xpm_menu_inv[] = { " .......... ", " "}; -static const char *xpm_menuback[] = { +const char * const xpm_menuback[] = { "12 12 2 1", " c white", ". c black", @@ -308,7 +310,7 @@ static const char *xpm_menuback[] = { " .......... ", " "}; -static const char *xpm_void[] = { +const char * const xpm_void[] = { "12 12 2 1", " c white", ". c black", diff --git a/support/kconfig/images.h b/support/kconfig/images.h new file mode 100644 index 0000000000..7212dec200 --- /dev/null +++ b/support/kconfig/images.h @@ -0,0 +1,33 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2002 Roman Zippel + */ + +#ifndef IMAGES_H +#define IMAGES_H + +#ifdef __cplusplus +extern "C" { +#endif + +extern const char * const xpm_load[]; +extern const char * const xpm_save[]; +extern const char * const xpm_back[]; +extern const char * const xpm_tree_view[]; +extern const char * const xpm_single_view[]; +extern const char * const xpm_split_view[]; +extern const char * const xpm_symbol_no[]; +extern const char * const xpm_symbol_mod[]; +extern const char * const xpm_symbol_yes[]; +extern const char * const xpm_choice_no[]; +extern const char * const xpm_choice_yes[]; +extern const char * const xpm_menu[]; +extern const char * const xpm_menu_inv[]; +extern const char * const xpm_menuback[]; +extern const char * const xpm_void[]; + +#ifdef __cplusplus +} +#endif + +#endif /* IMAGES_H */ diff --git a/support/kconfig/internal.h b/support/kconfig/internal.h new file mode 100644 index 0000000000..6c721c4cfd --- /dev/null +++ b/support/kconfig/internal.h @@ -0,0 +1,21 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +#ifndef INTERNAL_H +#define INTERNAL_H + +#include "hashtable.h" + +#define SYMBOL_HASHSIZE (1U << 14) + +extern HASHTABLE_DECLARE(sym_hashtable, SYMBOL_HASHSIZE); + +#define for_all_symbols(sym) \ + hash_for_each(sym_hashtable, sym, node) + +struct menu; + +extern struct menu *current_menu, *current_entry; + +extern const char *cur_filename; +extern int cur_lineno; + +#endif /* INTERNAL_H */ diff --git a/support/kconfig/kconf_id.c b/support/kconfig/kconf_id.c deleted file mode 100644 index 3ea9c5f9f7..0000000000 --- a/support/kconfig/kconf_id.c +++ /dev/null @@ -1,53 +0,0 @@ - -static struct kconf_id kconf_id_array[] = { - { "mainmenu", T_MAINMENU, TF_COMMAND }, - { "menu", T_MENU, TF_COMMAND }, - { "endmenu", T_ENDMENU, TF_COMMAND }, - { "source", T_SOURCE, TF_COMMAND }, - { "choice", T_CHOICE, TF_COMMAND }, - { "endchoice", T_ENDCHOICE, TF_COMMAND }, - { "comment", T_COMMENT, TF_COMMAND }, - { "config", T_CONFIG, TF_COMMAND }, - { "menuconfig", T_MENUCONFIG, TF_COMMAND }, - { "help", T_HELP, TF_COMMAND }, - { "---help---", T_HELP, TF_COMMAND }, - { "if", T_IF, TF_COMMAND|TF_PARAM }, - { "endif", T_ENDIF, TF_COMMAND }, - { "depends", T_DEPENDS, TF_COMMAND }, - { "optional", T_OPTIONAL, TF_COMMAND }, - { "default", T_DEFAULT, TF_COMMAND, S_UNKNOWN }, - { "prompt", T_PROMPT, TF_COMMAND }, - { "tristate", T_TYPE, TF_COMMAND, S_TRISTATE }, - { "def_tristate", T_DEFAULT, TF_COMMAND, S_TRISTATE }, - { "bool", T_TYPE, TF_COMMAND, S_BOOLEAN }, - { "def_bool", T_DEFAULT, TF_COMMAND, S_BOOLEAN }, - { "int", T_TYPE, TF_COMMAND, S_INT }, - { "hex", T_TYPE, TF_COMMAND, S_HEX }, - { "string", T_TYPE, TF_COMMAND, S_STRING }, - { "select", T_SELECT, TF_COMMAND }, - { "imply", T_IMPLY, TF_COMMAND }, - { "range", T_RANGE, TF_COMMAND }, - { "visible", T_VISIBLE, TF_COMMAND }, - { "option", T_OPTION, TF_COMMAND }, - { "on", T_ON, TF_PARAM }, - { "modules", T_OPT_MODULES, TF_OPTION }, - { "defconfig_list", T_OPT_DEFCONFIG_LIST, TF_OPTION }, - { "env", T_OPT_ENV, TF_OPTION }, - { "allnoconfig_y", T_OPT_ALLNOCONFIG_Y, TF_OPTION }, -}; - -#define KCONF_ID_ARRAY_SIZE (sizeof(kconf_id_array)/sizeof(struct kconf_id)) - -static const struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len) -{ - int i; - - for (i = 0; i < KCONF_ID_ARRAY_SIZE; i++) { - struct kconf_id *id = kconf_id_array+i; - int l = strlen(id->name); - - if (len == l && !memcmp(str, id->name, len)) - return id; - } - return NULL; -} diff --git a/support/kconfig/kxgettext.c b/support/kconfig/kxgettext.c deleted file mode 100644 index 240880a891..0000000000 --- a/support/kconfig/kxgettext.c +++ /dev/null @@ -1,235 +0,0 @@ -/* - * Arnaldo Carvalho de Melo , 2005 - * - * Released under the terms of the GNU GPL v2.0 - */ - -#include -#include - -#include "lkc.h" - -static char *escape(const char* text, char *bf, int len) -{ - char *bfp = bf; - int multiline = strchr(text, '\n') != NULL; - int eol = 0; - int textlen = strlen(text); - - if ((textlen > 0) && (text[textlen-1] == '\n')) - eol = 1; - - *bfp++ = '"'; - --len; - - if (multiline) { - *bfp++ = '"'; - *bfp++ = '\n'; - *bfp++ = '"'; - len -= 3; - } - - while (*text != '\0' && len > 1) { - if (*text == '"') - *bfp++ = '\\'; - else if (*text == '\n') { - *bfp++ = '\\'; - *bfp++ = 'n'; - *bfp++ = '"'; - *bfp++ = '\n'; - *bfp++ = '"'; - len -= 5; - ++text; - goto next; - } - else if (*text == '\\') { - *bfp++ = '\\'; - len--; - } - *bfp++ = *text++; -next: - --len; - } - - if (multiline && eol) - bfp -= 3; - - *bfp++ = '"'; - *bfp = '\0'; - - return bf; -} - -struct file_line { - struct file_line *next; - const char *file; - int lineno; -}; - -static struct file_line *file_line__new(const char *file, int lineno) -{ - struct file_line *self = malloc(sizeof(*self)); - - if (self == NULL) - goto out; - - self->file = file; - self->lineno = lineno; - self->next = NULL; -out: - return self; -} - -struct message { - const char *msg; - const char *option; - struct message *next; - struct file_line *files; -}; - -static struct message *message__list; - -static struct message *message__new(const char *msg, char *option, - const char *file, int lineno) -{ - struct message *self = malloc(sizeof(*self)); - - if (self == NULL) - goto out; - - self->files = file_line__new(file, lineno); - if (self->files == NULL) - goto out_fail; - - self->msg = xstrdup(msg); - if (self->msg == NULL) - goto out_fail_msg; - - self->option = option; - self->next = NULL; -out: - return self; -out_fail_msg: - free(self->files); -out_fail: - free(self); - self = NULL; - goto out; -} - -static struct message *mesage__find(const char *msg) -{ - struct message *m = message__list; - - while (m != NULL) { - if (strcmp(m->msg, msg) == 0) - break; - m = m->next; - } - - return m; -} - -static int message__add_file_line(struct message *self, const char *file, - int lineno) -{ - int rc = -1; - struct file_line *fl = file_line__new(file, lineno); - - if (fl == NULL) - goto out; - - fl->next = self->files; - self->files = fl; - rc = 0; -out: - return rc; -} - -static int message__add(const char *msg, char *option, const char *file, - int lineno) -{ - int rc = 0; - char bf[16384]; - char *escaped = escape(msg, bf, sizeof(bf)); - struct message *m = mesage__find(escaped); - - if (m != NULL) - rc = message__add_file_line(m, file, lineno); - else { - m = message__new(escaped, option, file, lineno); - - if (m != NULL) { - m->next = message__list; - message__list = m; - } else - rc = -1; - } - return rc; -} - -static void menu_build_message_list(struct menu *menu) -{ - struct menu *child; - - message__add(menu_get_prompt(menu), NULL, - menu->file == NULL ? "Root Menu" : menu->file->name, - menu->lineno); - - if (menu->sym != NULL && menu_has_help(menu)) - message__add(menu_get_help(menu), menu->sym->name, - menu->file == NULL ? "Root Menu" : menu->file->name, - menu->lineno); - - for (child = menu->list; child != NULL; child = child->next) - if (child->prompt != NULL) - menu_build_message_list(child); -} - -static void message__print_file_lineno(struct message *self) -{ - struct file_line *fl = self->files; - - putchar('\n'); - if (self->option != NULL) - printf("# %s:00000\n", self->option); - - printf("#: %s:%d", fl->file, fl->lineno); - fl = fl->next; - - while (fl != NULL) { - printf(", %s:%d", fl->file, fl->lineno); - fl = fl->next; - } - - putchar('\n'); -} - -static void message__print_gettext_msgid_msgstr(struct message *self) -{ - message__print_file_lineno(self); - - printf("msgid %s\n" - "msgstr \"\"\n", self->msg); -} - -static void menu__xgettext(void) -{ - struct message *m = message__list; - - while (m != NULL) { - /* skip empty lines ("") */ - if (strlen(m->msg) > sizeof("\"\"")) - message__print_gettext_msgid_msgstr(m); - m = m->next; - } -} - -int main(int ac, char **av) -{ - conf_parse(av[1]); - - menu_build_message_list(menu_get_root_menu(NULL)); - menu__xgettext(); - return 0; -} diff --git a/support/kconfig/lexer.l b/support/kconfig/lexer.l new file mode 100644 index 0000000000..89544c3a1a --- /dev/null +++ b/support/kconfig/lexer.l @@ -0,0 +1,460 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2002 Roman Zippel + */ +%option nostdinit noyywrap never-interactive full ecs +%option 8bit nodefault yylineno +%x ASSIGN_VAL HELP STRING +%{ + +#include +#include +#include +#include +#include + +#include "lkc.h" +#include "preprocess.h" + +#include "parser.tab.h" + +#define YY_DECL static int yylex1(void) + +#define START_STRSIZE 16 + +/* The Kconfig file currently being parsed. */ +const char *cur_filename; + +/* + * The line number of the current statement. This does not match yylineno. + * yylineno is used by the lexer, while cur_lineno is used by the parser. + */ +int cur_lineno; + +static int prev_prev_token = T_EOL; +static int prev_token = T_EOL; +static char *text; +static int text_size, text_asize; + +struct buffer { + struct buffer *parent; + YY_BUFFER_STATE state; + int yylineno; + const char *filename; + int source_lineno; +}; + +static struct buffer *current_buf; + +static int last_ts, first_ts; + +static char *expand_token(const char *in, size_t n); +static void append_expanded_string(const char *in); +static void zconf_endhelp(void); +static void zconf_endfile(void); + +static void new_string(void) +{ + text = xmalloc(START_STRSIZE); + text_asize = START_STRSIZE; + text_size = 0; + *text = 0; +} + +static void append_string(const char *str, int size) +{ + int new_size = text_size + size + 1; + if (new_size > text_asize) { + new_size += START_STRSIZE - 1; + new_size &= -START_STRSIZE; + text = xrealloc(text, new_size); + text_asize = new_size; + } + memcpy(text + text_size, str, size); + text_size += size; + text[text_size] = 0; +} + +static void alloc_string(const char *str, int size) +{ + text = xmalloc(size + 1); + memcpy(text, str, size); + text[size] = 0; +} + +static void warn_ignored_character(char chr) +{ + fprintf(stderr, + "%s:%d:warning: ignoring unsupported character '%c'\n", + cur_filename, yylineno, chr); +} +%} + +n [A-Za-z0-9_-] + +%% + char open_quote = 0; + +#.* /* ignore comment */ +[ \t]* /* whitespaces */ +\\\n /* escaped new line */ +\n return T_EOL; +"bool" return T_BOOL; +"choice" return T_CHOICE; +"comment" return T_COMMENT; +"config" return T_CONFIG; +"def_bool" return T_DEF_BOOL; +"def_tristate" return T_DEF_TRISTATE; +"default" return T_DEFAULT; +"depends" return T_DEPENDS; +"endchoice" return T_ENDCHOICE; +"endif" return T_ENDIF; +"endmenu" return T_ENDMENU; +"help" return T_HELP; +"hex" return T_HEX; +"if" return T_IF; +"imply" return T_IMPLY; +"int" return T_INT; +"mainmenu" return T_MAINMENU; +"menu" return T_MENU; +"menuconfig" return T_MENUCONFIG; +"modules" return T_MODULES; +"on" return T_ON; +"optional" return T_OPTIONAL; +"prompt" return T_PROMPT; +"range" return T_RANGE; +"select" return T_SELECT; +"source" return T_SOURCE; +"string" return T_STRING; +"tristate" return T_TRISTATE; +"visible" return T_VISIBLE; +"||" return T_OR; +"&&" return T_AND; +"=" return T_EQUAL; +"!=" return T_UNEQUAL; +"<" return T_LESS; +"<=" return T_LESS_EQUAL; +">" return T_GREATER; +">=" return T_GREATER_EQUAL; +"!" return T_NOT; +"(" return T_OPEN_PAREN; +")" return T_CLOSE_PAREN; +":=" return T_COLON_EQUAL; +"+=" return T_PLUS_EQUAL; +\"|\' { + open_quote = yytext[0]; + new_string(); + BEGIN(STRING); + } +{n}+ { + alloc_string(yytext, yyleng); + yylval.string = text; + return T_WORD; + } +({n}|$)+ { + /* this token includes at least one '$' */ + yylval.string = expand_token(yytext, yyleng); + if (strlen(yylval.string)) + return T_WORD; + free(yylval.string); + } +. warn_ignored_character(*yytext); + +{ + [^[:blank:]\n]+.* { + alloc_string(yytext, yyleng); + yylval.string = text; + return T_ASSIGN_VAL; + } + \n { BEGIN(INITIAL); return T_EOL; } + . +} + +{ + "$".* append_expanded_string(yytext); + [^$'"\\\n]+ { + append_string(yytext, yyleng); + } + \\.? { + append_string(yytext + 1, yyleng - 1); + } + \'|\" { + if (open_quote == yytext[0]) { + BEGIN(INITIAL); + yylval.string = text; + return T_WORD_QUOTE; + } else + append_string(yytext, 1); + } + \n { + fprintf(stderr, + "%s:%d:warning: multi-line strings not supported\n", + cur_filename, cur_lineno); + unput('\n'); + BEGIN(INITIAL); + yylval.string = text; + return T_WORD_QUOTE; + } + <> { + BEGIN(INITIAL); + yylval.string = text; + return T_WORD_QUOTE; + } +} + +{ + [ \t]+ { + int ts, i; + + ts = 0; + for (i = 0; i < yyleng; i++) { + if (yytext[i] == '\t') + ts = (ts & ~7) + 8; + else + ts++; + } + last_ts = ts; + if (first_ts) { + if (ts < first_ts) { + zconf_endhelp(); + return T_HELPTEXT; + } + ts -= first_ts; + while (ts > 8) { + append_string(" ", 8); + ts -= 8; + } + append_string(" ", ts); + } + } + [ \t]*\n/[^ \t\n] { + zconf_endhelp(); + return T_HELPTEXT; + } + [ \t]*\n { + append_string("\n", 1); + } + [^ \t\n].* { + while (yyleng) { + if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t')) + break; + yyleng--; + } + append_string(yytext, yyleng); + if (!first_ts) + first_ts = last_ts; + } + <> { + zconf_endhelp(); + return T_HELPTEXT; + } +} + +<> { + BEGIN(INITIAL); + + if (prev_token != T_EOL && prev_token != T_HELPTEXT) + fprintf(stderr, "%s:%d:warning: no new line at end of file\n", + cur_filename, yylineno); + + if (current_buf) { + zconf_endfile(); + return T_EOL; + } + fclose(yyin); + yyterminate(); +} + +%% + +/* second stage lexer */ +int yylex(void) +{ + int token; + +repeat: + token = yylex1(); + + if (prev_token == T_EOL || prev_token == T_HELPTEXT) { + if (token == T_EOL) + /* Do not pass unneeded T_EOL to the parser. */ + goto repeat; + else + /* + * For the parser, update lineno at the first token + * of each statement. Generally, \n is a statement + * terminator in Kconfig, but it is not always true + * because \n could be escaped by a backslash. + */ + cur_lineno = yylineno; + } + + if (prev_prev_token == T_EOL && prev_token == T_WORD && + (token == T_EQUAL || token == T_COLON_EQUAL || token == T_PLUS_EQUAL)) + BEGIN(ASSIGN_VAL); + + prev_prev_token = prev_token; + prev_token = token; + + return token; +} + +static char *expand_token(const char *in, size_t n) +{ + char *out; + int c; + char c2; + const char *rest, *end; + + new_string(); + append_string(in, n); + + /* + * get the whole line because we do not know the end of token. + * input() returns 0 (not EOF!) when it reachs the end of file. + */ + while ((c = input()) != 0) { + if (c == '\n') { + unput(c); + break; + } + c2 = c; + append_string(&c2, 1); + } + + rest = text; + out = expand_one_token(&rest); + + /* push back unused characters to the input stream */ + end = rest + strlen(rest); + while (end > rest) + unput(*--end); + + free(text); + + return out; +} + +static void append_expanded_string(const char *str) +{ + const char *end; + char *res; + + str++; + + res = expand_dollar(&str); + + /* push back unused characters to the input stream */ + end = str + strlen(str); + while (end > str) + unput(*--end); + + append_string(res, strlen(res)); + + free(res); +} + +void zconf_starthelp(void) +{ + new_string(); + last_ts = first_ts = 0; + BEGIN(HELP); +} + +static void zconf_endhelp(void) +{ + yylval.string = text; + BEGIN(INITIAL); +} + + +/* + * Try to open specified file with following names: + * ./name + * $(srctree)/name + * The latter is used when srctree is separate from objtree + * when compiling the kernel. + * Return NULL if file is not found. + */ +FILE *zconf_fopen(const char *name) +{ + char *env, fullname[PATH_MAX+1]; + FILE *f; + + f = fopen(name, "r"); + if (!f && name != NULL && name[0] != '/') { + env = getenv(SRCTREE); + if (env) { + snprintf(fullname, sizeof(fullname), + "%s/%s", env, name); + f = fopen(fullname, "r"); + } + } + return f; +} + +void zconf_initscan(const char *name) +{ + yyin = zconf_fopen(name); + if (!yyin) { + fprintf(stderr, "can't find file %s\n", name); + exit(1); + } + + cur_filename = file_lookup(name); + yylineno = 1; +} + +void zconf_nextfile(const char *name) +{ + struct buffer *buf = xmalloc(sizeof(*buf)); + bool recur_include = false; + + buf->state = YY_CURRENT_BUFFER; + buf->yylineno = yylineno; + buf->filename = cur_filename; + buf->source_lineno = cur_lineno; + buf->parent = current_buf; + current_buf = buf; + yyin = zconf_fopen(name); + if (!yyin) { + fprintf(stderr, "%s:%d: can't open file \"%s\"\n", + cur_filename, cur_lineno, name); + exit(1); + } + yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); + + for (buf = current_buf; buf; buf = buf->parent) { + if (!strcmp(buf->filename, name)) + recur_include = true; + } + + if (recur_include) { + fprintf(stderr, + "Recursive inclusion detected.\n" + "Inclusion path:\n" + " current file : %s\n", name); + + for (buf = current_buf; buf; buf = buf->parent) + fprintf(stderr, " included from: %s:%d\n", + buf->filename, buf->source_lineno); + exit(1); + } + + yylineno = 1; + cur_filename = file_lookup(name); +} + +static void zconf_endfile(void) +{ + struct buffer *tmp; + + fclose(yyin); + yy_delete_buffer(YY_CURRENT_BUFFER); + yy_switch_to_buffer(current_buf->state); + yylineno = current_buf->yylineno; + cur_filename = current_buf->filename; + tmp = current_buf; + current_buf = current_buf->parent; + free(tmp); +} diff --git a/support/kconfig/lexer.lex.c_shipped b/support/kconfig/lexer.lex.c_shipped new file mode 100644 index 0000000000..8d29983b47 --- /dev/null +++ b/support/kconfig/lexer.lex.c_shipped @@ -0,0 +1,4103 @@ + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 6 +#define YY_FLEX_SUBMINOR_VERSION 4 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#ifndef SIZE_MAX +#define SIZE_MAX (~(size_t)0) +#endif + +#endif /* ! C99 */ + +#endif /* ! FLEXINT_H */ + +/* begin standard C++ headers. */ + +/* TODO: this is always defined, so inline it */ +#define yyconst const + +#if defined(__GNUC__) && __GNUC__ >= 3 +#define yynoreturn __attribute__((__noreturn__)) +#else +#define yynoreturn +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an + * integer in range [0..255] for use as an array index. + */ +#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN (yy_start) = 1 + 2 * +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START (((yy_start) - 1) / 2) +#define YYSTATE YY_START +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE yyrestart( yyin ) +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k. + * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. + * Ditto for the __ia64__ case accordingly. + */ +#define YY_BUF_SIZE 32768 +#else +#define YY_BUF_SIZE 16384 +#endif /* __ia64__ */ +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +extern int yyleng; + +extern FILE *yyin, *yyout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires + * access to the local variable yy_act. Since yyless() is a macro, it would break + * existing scanners that call yyless() from OUTSIDE yylex. + * One obvious solution it to make yy_act a global. I tried that, and saw + * a 5% performance hit in a non-yylineno scanner, because yy_act is + * normally declared as a register variable-- so it is not worth it. + */ + #define YY_LESS_LINENO(n) \ + do { \ + int yyl;\ + for ( yyl = n; yyl < yyleng; ++yyl )\ + if ( yytext[yyl] == '\n' )\ + --yylineno;\ + }while(0) + #define YY_LINENO_REWIND_TO(dst) \ + do {\ + const char *p;\ + for ( p = yy_cp-1; p >= (dst); --p)\ + if ( *p == '\n' )\ + --yylineno;\ + }while(0) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = (yy_hold_char); \ + YY_RESTORE_YY_MORE_OFFSET \ + (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) +#define unput(c) yyunput( c, (yytext_ptr) ) + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + int yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* Stack of input buffers. */ +static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ + ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ + : NULL) +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] + +/* yy_hold_char holds the character lost when yytext is formed. */ +static char yy_hold_char; +static int yy_n_chars; /* number of characters read into yy_ch_buf */ +int yyleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = NULL; +static int yy_init = 0; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow yywrap()'s to do buffer switches + * instead of setting up a fresh yyin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void yyrestart ( FILE *input_file ); +void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); +void yy_delete_buffer ( YY_BUFFER_STATE b ); +void yy_flush_buffer ( YY_BUFFER_STATE b ); +void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); +void yypop_buffer_state ( void ); + +static void yyensure_buffer_stack ( void ); +static void yy_load_buffer_state ( void ); +static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); +#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) + +YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); +YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); +YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); + +void *yyalloc ( yy_size_t ); +void *yyrealloc ( void *, yy_size_t ); +void yyfree ( void * ); + +#define yy_new_buffer yy_create_buffer +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer( yyin, YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer( yyin, YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +#define yywrap() (/*CONSTCOND*/1) +#define YY_SKIP_YYWRAP +typedef flex_uint8_t YY_CHAR; + +FILE *yyin = NULL, *yyout = NULL; + +typedef int yy_state_type; + +extern int yylineno; +int yylineno = 1; + +extern char *yytext; +#ifdef yytext_ptr +#undef yytext_ptr +#endif +#define yytext_ptr yytext + +static const flex_int16_t yy_nxt[][42] = + { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 + }, + + { + 9, 10, 11, 12, 13, 14, 15, 16, 17, 14, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 21, + 21, 27, 28, 29, 30, 21, 21, 31, 32, 21, + 33, 21, 34, 35, 36, 37, 38, 21, 39, 21, + 21, 40 + + }, + + { + 9, 10, 11, 12, 13, 14, 15, 16, 17, 14, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 21, + 21, 27, 28, 29, 30, 21, 21, 31, 32, 21, + 33, 21, 34, 35, 36, 37, 38, 21, 39, 21, + 21, 40 + }, + + { + 9, 41, 42, 43, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41 + + }, + + { + 9, 41, 42, 43, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41 + }, + + { + 9, 44, 45, 46, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44 + + }, + + { + 9, 44, 45, 46, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44 + }, + + { + 9, 47, 47, 48, 47, 49, 47, 50, 47, 49, + 47, 47, 47, 47, 47, 47, 47, 47, 51, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47 + + }, + + { + 9, 47, 47, 48, 47, 49, 47, 50, 47, 49, + 47, 47, 47, 47, 47, 47, 47, 47, 51, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47 + }, + + { + -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + -9, -9 + + }, + + { + 9, -10, -10, -10, -10, -10, -10, -10, -10, -10, + -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, + -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, + -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, + -10, -10 + }, + + { + 9, -11, 52, -11, -11, -11, -11, -11, -11, -11, + -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, + -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, + -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, + -11, -11 + + }, + + { + 9, -12, -12, -12, -12, -12, -12, -12, -12, -12, + -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, + -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, + -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, + -12, -12 + }, + + { + 9, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, 53, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13 + + }, + + { + 9, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14 + }, + + { + 9, 54, 54, -15, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54 + + }, + + { + 9, -16, -16, -16, -16, -16, -16, 55, -16, -16, + -16, -16, -16, 55, -16, -16, -16, -16, -16, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, -16 + }, + + { + 9, -17, -17, -17, -17, -17, -17, -17, 56, -17, + -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, + -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, + -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, + -17, -17 + + }, + + { + 9, -18, -18, -18, -18, -18, -18, -18, -18, -18, + -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, + -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, + -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, + -18, -18 + }, + + { + 9, -19, -19, -19, -19, -19, -19, -19, -19, -19, + -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, + -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, + -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, + -19, -19 + + }, + + { + 9, -20, -20, -20, -20, -20, -20, -20, -20, -20, + -20, -20, -20, -20, -20, -20, 57, -20, -20, -20, + -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, + -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, + -20, -20 + }, + + { + 9, -21, -21, -21, -21, -21, -21, 55, -21, -21, + -21, -21, -21, 58, -21, -21, -21, -21, -21, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -21 + + }, + + { + 9, -22, -22, -22, -22, -22, -22, -22, -22, -22, + -22, -22, -22, -22, -22, -22, 59, -22, -22, -22, + -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, + -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, + -22, -22 + }, + + { + 9, -23, -23, -23, -23, -23, -23, -23, -23, -23, + -23, -23, -23, -23, -23, -23, 60, -23, -23, -23, + -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, + -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, + -23, -23 + + }, + + { + 9, -24, -24, -24, -24, -24, -24, -24, -24, -24, + -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, + -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, + -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, + -24, -24 + }, + + { + 9, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, 61, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25 + + }, + + { + 9, -26, -26, 62, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26 + }, + + { + 9, -27, -27, -27, -27, -27, -27, 55, -27, -27, + -27, -27, -27, 58, -27, -27, -27, -27, -27, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 63, 58, 58, 58, 58, 58, 58, 58, + 58, -27 + + }, + + { + 9, -28, -28, -28, -28, -28, -28, 55, -28, -28, + -28, -28, -28, 58, -28, -28, -28, -28, -28, 58, + 58, 58, 58, 58, 58, 58, 58, 64, 58, 58, + 58, 58, 65, 58, 58, 58, 58, 58, 58, 58, + 58, -28 + }, + + { + 9, -29, -29, -29, -29, -29, -29, 55, -29, -29, + -29, -29, -29, 58, -29, -29, -29, -29, -29, 58, + 58, 58, 58, 58, 66, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -29 + + }, + + { + 9, -30, -30, -30, -30, -30, -30, 55, -30, -30, + -30, -30, -30, 58, -30, -30, -30, -30, -30, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 67, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -30 + }, + + { + 9, -31, -31, -31, -31, -31, -31, 55, -31, -31, + -31, -31, -31, 58, -31, -31, -31, -31, -31, 58, + 58, 58, 58, 58, 68, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -31 + + }, + + { + 9, -32, -32, -32, -32, -32, -32, 55, -32, -32, + -32, -32, -32, 58, -32, -32, -32, -32, -32, 58, + 58, 58, 58, 58, 58, 69, 58, 58, 58, 58, + 70, 71, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -32 + }, + + { + 9, -33, -33, -33, -33, -33, -33, 55, -33, -33, + -33, -33, -33, 58, -33, -33, -33, -33, -33, 58, + 72, 58, 58, 58, 73, 58, 58, 58, 58, 58, + 58, 58, 74, 58, 58, 58, 58, 58, 58, 58, + 58, -33 + + }, + + { + 9, -34, -34, -34, -34, -34, -34, 55, -34, -34, + -34, -34, -34, 58, -34, -34, -34, -34, -34, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 75, 58, 76, 58, 58, 58, 58, 58, 58, + 58, -34 + }, + + { + 9, -35, -35, -35, -35, -35, -35, 55, -35, -35, + -35, -35, -35, 58, -35, -35, -35, -35, -35, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 77, 58, 58, 58, 58, 58, + 58, -35 + + }, + + { + 9, -36, -36, -36, -36, -36, -36, 55, -36, -36, + -36, -36, -36, 58, -36, -36, -36, -36, -36, 58, + 78, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -36 + }, + + { + 9, -37, -37, -37, -37, -37, -37, 55, -37, -37, + -37, -37, -37, 58, -37, -37, -37, -37, -37, 58, + 58, 58, 58, 58, 79, 58, 58, 58, 58, 58, + 58, 58, 80, 58, 58, 58, 81, 58, 58, 58, + 58, -37 + + }, + + { + 9, -38, -38, -38, -38, -38, -38, 55, -38, -38, + -38, -38, -38, 58, -38, -38, -38, -38, -38, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 82, 58, 58, 58, 58, 58, + 58, -38 + }, + + { + 9, -39, -39, -39, -39, -39, -39, 55, -39, -39, + -39, -39, -39, 58, -39, -39, -39, -39, -39, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 83, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -39 + + }, + + { + 9, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, 84 + }, + + { + 9, 85, 86, -41, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85 + + }, + + { + 9, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42 + }, + + { + 9, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43 + + }, + + { + 9, 87, 87, -44, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87 + }, + + { + 9, -45, 88, 89, -45, -45, -45, -45, -45, -45, + -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, + -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, + -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, + -45, -45 + + }, + + { + 9, 90, -46, -46, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90 + }, + + { + 9, 91, 91, -47, 91, -47, 91, -47, 91, -47, + 91, 91, 91, 91, 91, 91, 91, 91, -47, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91 + + }, + + { + 9, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48 + }, + + { + 9, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49 + + }, + + { + 9, 92, 92, -50, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92 + }, + + { + 9, 93, 93, -51, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93 + + }, + + { + 9, -52, 52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52 + }, + + { + 9, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53 + + }, + + { + 9, 54, 54, -54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54 + }, + + { + 9, -55, -55, -55, -55, -55, -55, 55, -55, -55, + -55, -55, -55, 55, -55, -55, -55, -55, -55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, -55 + + }, + + { + 9, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56 + }, + + { + 9, -57, -57, -57, -57, -57, -57, -57, -57, -57, + -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, + -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, + -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, + -57, -57 + + }, + + { + 9, -58, -58, -58, -58, -58, -58, 55, -58, -58, + -58, -58, -58, 58, -58, -58, -58, -58, -58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -58 + }, + + { + 9, -59, -59, -59, -59, -59, -59, -59, -59, -59, + -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, + -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, + -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, + -59, -59 + + }, + + { + 9, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60 + }, + + { + 9, -61, -61, -61, -61, -61, -61, -61, -61, -61, + -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, + -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, + -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, + -61, -61 + + }, + + { + 9, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62 + }, + + { + 9, -63, -63, -63, -63, -63, -63, 55, -63, -63, + -63, -63, -63, 58, -63, -63, -63, -63, -63, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 94, 58, 58, 58, 58, 58, 58, 58, + 58, -63 + + }, + + { + 9, -64, -64, -64, -64, -64, -64, 55, -64, -64, + -64, -64, -64, 58, -64, -64, -64, -64, -64, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 95, 58, 58, 58, 58, 58, 58, 58, + 58, -64 + }, + + { + 9, -65, -65, -65, -65, -65, -65, 55, -65, -65, + -65, -65, -65, 58, -65, -65, -65, -65, -65, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 96, 97, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -65 + + }, + + { + 9, -66, -66, -66, -66, -66, -66, 55, -66, -66, + -66, -66, -66, 58, -66, -66, -66, -66, -66, 58, + 58, 58, 58, 58, 58, 98, 58, 58, 58, 58, + 58, 58, 58, 99, 58, 58, 58, 58, 58, 58, + 58, -66 + }, + + { + 9, -67, -67, -67, -67, -67, -67, 55, -67, -67, + -67, -67, -67, 58, -67, -67, -67, -67, -67, 58, + 58, 58, 58, 100, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -67 + + }, + + { + 9, -68, -68, -68, -68, -68, -68, 55, -68, -68, + -68, -68, -68, 58, -68, -68, -68, -68, -68, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 101, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 102, + 58, -68 + }, + + { + 9, -69, -69, -69, -69, -69, -69, 55, -69, -69, + -69, -69, -69, 58, -69, -69, -69, -69, -69, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -69 + + }, + + { + 9, -70, -70, -70, -70, -70, -70, 55, -70, -70, + -70, -70, -70, 58, -70, -70, -70, -70, -70, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 103, 58, 58, 58, 58, 58, 58, + 58, -70 + }, + + { + 9, -71, -71, -71, -71, -71, -71, 55, -71, -71, + -71, -71, -71, 58, -71, -71, -71, -71, -71, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 104, 58, 58, 58, + 58, -71 + + }, + + { + 9, -72, -72, -72, -72, -72, -72, 55, -72, -72, + -72, -72, -72, 58, -72, -72, -72, -72, -72, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 105, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -72 + }, + + { + 9, -73, -73, -73, -73, -73, -73, 55, -73, -73, + -73, -73, -73, 58, -73, -73, -73, -73, -73, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 106, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -73 + + }, + + { + 9, -74, -74, -74, -74, -74, -74, 55, -74, -74, + -74, -74, -74, 58, -74, -74, -74, -74, -74, 58, + 58, 58, 58, 107, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -74 + }, + + { + 9, -75, -75, -75, -75, -75, -75, 55, -75, -75, + -75, -75, -75, 58, -75, -75, -75, -75, -75, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -75 + + }, + + { + 9, -76, -76, -76, -76, -76, -76, 55, -76, -76, + -76, -76, -76, 58, -76, -76, -76, -76, -76, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 108, 58, 58, 58, + 58, -76 + }, + + { + 9, -77, -77, -77, -77, -77, -77, 55, -77, -77, + -77, -77, -77, 58, -77, -77, -77, -77, -77, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 109, 58, 58, 58, 58, 58, 58, 58, + 58, -77 + + }, + + { + 9, -78, -78, -78, -78, -78, -78, 55, -78, -78, + -78, -78, -78, 58, -78, -78, -78, -78, -78, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 110, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -78 + }, + + { + 9, -79, -79, -79, -79, -79, -79, 55, -79, -79, + -79, -79, -79, 58, -79, -79, -79, -79, -79, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 111, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -79 + + }, + + { + 9, -80, -80, -80, -80, -80, -80, 55, -80, -80, + -80, -80, -80, 58, -80, -80, -80, -80, -80, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 112, 58, 58, + 58, -80 + }, + + { + 9, -81, -81, -81, -81, -81, -81, 55, -81, -81, + -81, -81, -81, 58, -81, -81, -81, -81, -81, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 113, 58, 58, 58, 58, 58, + 58, -81 + + }, + + { + 9, -82, -82, -82, -82, -82, -82, 55, -82, -82, + -82, -82, -82, 58, -82, -82, -82, -82, -82, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 114, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -82 + }, + + { + 9, -83, -83, -83, -83, -83, -83, 55, -83, -83, + -83, -83, -83, 58, -83, -83, -83, -83, -83, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 115, 58, 58, 58, 58, + 58, -83 + + }, + + { + 9, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84 + }, + + { + 9, 85, 86, -85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85 + + }, + + { + 9, 86, 86, -86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86 + }, + + { + 9, 87, 87, -87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87 + + }, + + { + 9, -88, 88, 89, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88 + }, + + { + 9, 90, -89, -89, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90 + + }, + + { + 9, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90 + }, + + { + 9, 91, 91, -91, 91, -91, 91, -91, 91, -91, + 91, 91, 91, 91, 91, 91, 91, 91, -91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91 + + }, + + { + 9, 92, 92, -92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92 + }, + + { + 9, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93 + + }, + + { + 9, -94, -94, -94, -94, -94, -94, 55, -94, -94, + -94, -94, -94, 58, -94, -94, -94, -94, -94, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 116, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -94 + }, + + { + 9, -95, -95, -95, -95, -95, -95, 55, -95, -95, + -95, -95, -95, 58, -95, -95, -95, -95, -95, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 117, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -95 + + }, + + { + 9, -96, -96, -96, -96, -96, -96, 55, -96, -96, + -96, -96, -96, 58, -96, -96, -96, -96, -96, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 118, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -96 + }, + + { + 9, -97, -97, -97, -97, -97, -97, 55, -97, -97, + -97, -97, -97, 58, -97, -97, -97, -97, -97, 58, + 58, 58, 58, 58, 58, 119, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -97 + + }, + + { + 9, -98, -98, -98, -98, -98, -98, 55, -98, -98, + -98, -98, -98, 58, -98, -98, -98, -98, -98, 120, + 121, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -98 + }, + + { + 9, -99, -99, -99, -99, -99, -99, 55, -99, -99, + -99, -99, -99, 58, -99, -99, -99, -99, -99, 58, + 58, 58, 58, 58, 122, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -99 + + }, + + { + 9, -100, -100, -100, -100, -100, -100, 55, -100, -100, + -100, -100, -100, 58, -100, -100, -100, -100, -100, 58, + 58, 58, 123, 58, 58, 58, 58, 58, 124, 58, + 125, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -100 + }, + + { + 9, -101, -101, -101, -101, -101, -101, 55, -101, -101, + -101, -101, -101, 58, -101, -101, -101, -101, -101, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 126, 58, 58, 58, 58, 58, 58, + 58, -101 + + }, + + { + 9, -102, -102, -102, -102, -102, -102, 55, -102, -102, + -102, -102, -102, 58, -102, -102, -102, -102, -102, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -102 + }, + + { + 9, -103, -103, -103, -103, -103, -103, 55, -103, -103, + -103, -103, -103, 58, -103, -103, -103, -103, -103, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 127, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -103 + + }, + + { + 9, -104, -104, -104, -104, -104, -104, 55, -104, -104, + -104, -104, -104, 58, -104, -104, -104, -104, -104, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -104 + }, + + { + 9, -105, -105, -105, -105, -105, -105, 55, -105, -105, + -105, -105, -105, 58, -105, -105, -105, -105, -105, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 128, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -105 + + }, + + { + 9, -106, -106, -106, -106, -106, -106, 55, -106, -106, + -106, -106, -106, 58, -106, -106, -106, -106, -106, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 129, 58, 58, + 58, -106 + }, + + { + 9, -107, -107, -107, -107, -107, -107, 55, -107, -107, + -107, -107, -107, 58, -107, -107, -107, -107, -107, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 130, 58, 58, + 58, -107 + + }, + + { + 9, -108, -108, -108, -108, -108, -108, 55, -108, -108, + -108, -108, -108, 58, -108, -108, -108, -108, -108, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 131, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -108 + }, + + { + 9, -109, -109, -109, -109, -109, -109, 55, -109, -109, + -109, -109, -109, 58, -109, -109, -109, -109, -109, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 132, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -109 + + }, + + { + 9, -110, -110, -110, -110, -110, -110, 55, -110, -110, + -110, -110, -110, 58, -110, -110, -110, -110, -110, 58, + 58, 58, 58, 58, 58, 58, 133, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -110 + }, + + { + 9, -111, -111, -111, -111, -111, -111, 55, -111, -111, + -111, -111, -111, 58, -111, -111, -111, -111, -111, 58, + 58, 58, 58, 58, 134, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -111 + + }, + + { + 9, -112, -112, -112, -112, -112, -112, 55, -112, -112, + -112, -112, -112, 58, -112, -112, -112, -112, -112, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 135, 58, 58, 58, 58, 58, + 58, -112 + }, + + { + 9, -113, -113, -113, -113, -113, -113, 55, -113, -113, + -113, -113, -113, 58, -113, -113, -113, -113, -113, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 136, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -113 + + }, + + { + 9, -114, -114, -114, -114, -114, -114, 55, -114, -114, + -114, -114, -114, 58, -114, -114, -114, -114, -114, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 137, 58, 58, 58, 58, + 58, -114 + }, + + { + 9, -115, -115, -115, -115, -115, -115, 55, -115, -115, + -115, -115, -115, 58, -115, -115, -115, -115, -115, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 138, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -115 + + }, + + { + 9, -116, -116, -116, -116, -116, -116, 55, -116, -116, + -116, -116, -116, 58, -116, -116, -116, -116, -116, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -116 + }, + + { + 9, -117, -117, -117, -117, -117, -117, 55, -117, -117, + -117, -117, -117, 58, -117, -117, -117, -117, -117, 58, + 58, 58, 139, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -117 + + }, + + { + 9, -118, -118, -118, -118, -118, -118, 55, -118, -118, + -118, -118, -118, 58, -118, -118, -118, -118, -118, 58, + 58, 58, 58, 58, 140, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -118 + }, + + { + 9, -119, -119, -119, -119, -119, -119, 55, -119, -119, + -119, -119, -119, 58, -119, -119, -119, -119, -119, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 141, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -119 + + }, + + { + 9, -120, -120, -120, -120, -120, -120, 55, -120, -120, + -120, -120, -120, 58, -120, -120, -120, -120, -120, 58, + 58, 142, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 143, 58, 58, 58, + 58, -120 + }, + + { + 9, -121, -121, -121, -121, -121, -121, 55, -121, -121, + -121, -121, -121, 58, -121, -121, -121, -121, -121, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 144, 58, 58, + 58, -121 + + }, + + { + 9, -122, -122, -122, -122, -122, -122, 55, -122, -122, + -122, -122, -122, 58, -122, -122, -122, -122, -122, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 145, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -122 + }, + + { + 9, -123, -123, -123, -123, -123, -123, 55, -123, -123, + -123, -123, -123, 58, -123, -123, -123, -123, -123, 58, + 58, 58, 58, 58, 58, 58, 58, 146, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -123 + + }, + + { + 9, -124, -124, -124, -124, -124, -124, 55, -124, -124, + -124, -124, -124, 58, -124, -124, -124, -124, -124, 58, + 58, 58, 58, 58, 58, 147, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -124 + }, + + { + 9, -125, -125, -125, -125, -125, -125, 55, -125, -125, + -125, -125, -125, 58, -125, -125, -125, -125, -125, 58, + 58, 58, 58, 58, 148, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -125 + + }, + + { + 9, -126, -126, -126, -126, -126, -126, 55, -126, -126, + -126, -126, -126, 58, -126, -126, -126, -126, -126, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -126 + }, + + { + 9, -127, -127, -127, -127, -127, -127, 55, -127, -127, + -127, -127, -127, 58, -127, -127, -127, -127, -127, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 149, -127 + + }, + + { + 9, -128, -128, -128, -128, -128, -128, 55, -128, -128, + -128, -128, -128, 58, -128, -128, -128, -128, -128, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 150, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -128 + }, + + { + 9, -129, -129, -129, -129, -129, -129, 55, -129, -129, + -129, -129, -129, 58, -129, -129, -129, -129, -129, 58, + 58, 58, 151, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -129 + + }, + + { + 9, -130, -130, -130, -130, -130, -130, 55, -130, -130, + -130, -130, -130, 58, -130, -130, -130, -130, -130, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 152, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -130 + }, + + { + 9, -131, -131, -131, -131, -131, -131, 55, -131, -131, + -131, -131, -131, 58, -131, -131, -131, -131, -131, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 153, 58, 58, 58, 58, 58, 58, 58, + 58, -131 + + }, + + { + 9, -132, -132, -132, -132, -132, -132, 55, -132, -132, + -132, -132, -132, 58, -132, -132, -132, -132, -132, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 154, 58, 58, 58, 58, 58, 58, + 58, -132 + }, + + { + 9, -133, -133, -133, -133, -133, -133, 55, -133, -133, + -133, -133, -133, 58, -133, -133, -133, -133, -133, 58, + 58, 58, 58, 58, 155, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -133 + + }, + + { + 9, -134, -134, -134, -134, -134, -134, 55, -134, -134, + -134, -134, -134, 58, -134, -134, -134, -134, -134, 58, + 58, 58, 156, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -134 + }, + + { + 9, -135, -135, -135, -135, -135, -135, 55, -135, -135, + -135, -135, -135, 58, -135, -135, -135, -135, -135, 58, + 58, 58, 157, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -135 + + }, + + { + 9, -136, -136, -136, -136, -136, -136, 55, -136, -136, + -136, -136, -136, 58, -136, -136, -136, -136, -136, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 158, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -136 + }, + + { + 9, -137, -137, -137, -137, -137, -137, 55, -137, -137, + -137, -137, -137, 58, -137, -137, -137, -137, -137, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 159, 58, 58, 58, + 58, -137 + + }, + + { + 9, -138, -138, -138, -138, -138, -138, 55, -138, -138, + -138, -138, -138, 58, -138, -138, -138, -138, -138, 58, + 58, 160, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -138 + }, + + { + 9, -139, -139, -139, -139, -139, -139, 55, -139, -139, + -139, -139, -139, 58, -139, -139, -139, -139, -139, 58, + 58, 58, 58, 58, 161, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -139 + + }, + + { + 9, -140, -140, -140, -140, -140, -140, 55, -140, -140, + -140, -140, -140, 58, -140, -140, -140, -140, -140, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 162, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -140 + }, + + { + 9, -141, -141, -141, -141, -141, -141, 55, -141, -141, + -141, -141, -141, 58, -141, -141, -141, -141, -141, 58, + 58, 58, 58, 58, 58, 58, 163, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -141 + + }, + + { + 9, -142, -142, -142, -142, -142, -142, 55, -142, -142, + -142, -142, -142, 58, -142, -142, -142, -142, -142, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 164, 58, 58, 58, 58, 58, 58, 58, + 58, -142 + }, + + { + 9, -143, -143, -143, -143, -143, -143, 55, -143, -143, + -143, -143, -143, 58, -143, -143, -143, -143, -143, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 165, 58, 58, 58, 58, 58, + 58, -143 + + }, + + { + 9, -144, -144, -144, -144, -144, -144, 55, -144, -144, + -144, -144, -144, 58, -144, -144, -144, -144, -144, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 166, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -144 + }, + + { + 9, -145, -145, -145, -145, -145, -145, 55, -145, -145, + -145, -145, -145, 58, -145, -145, -145, -145, -145, 58, + 58, 58, 58, 167, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -145 + + }, + + { + 9, -146, -146, -146, -146, -146, -146, 55, -146, -146, + -146, -146, -146, 58, -146, -146, -146, -146, -146, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 168, 58, 58, 58, 58, 58, 58, 58, + 58, -146 + }, + + { + 9, -147, -147, -147, -147, -147, -147, 55, -147, -147, + -147, -147, -147, 58, -147, -147, -147, -147, -147, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -147 + + }, + + { + 9, -148, -148, -148, -148, -148, -148, 55, -148, -148, + -148, -148, -148, 58, -148, -148, -148, -148, -148, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 169, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -148 + }, + + { + 9, -149, -149, -149, -149, -149, -149, 55, -149, -149, + -149, -149, -149, 58, -149, -149, -149, -149, -149, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -149 + + }, + + { + 9, -150, -150, -150, -150, -150, -150, 55, -150, -150, + -150, -150, -150, 58, -150, -150, -150, -150, -150, 58, + 58, 58, 58, 58, 170, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -150 + }, + + { + 9, -151, -151, -151, -151, -151, -151, 55, -151, -151, + -151, -151, -151, 58, -151, -151, -151, -151, -151, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 171, 58, 58, 58, 58, 58, 58, 58, + 58, -151 + + }, + + { + 9, -152, -152, -152, -152, -152, -152, 55, -152, -152, + -152, -152, -152, 58, -152, -152, -152, -152, -152, 58, + 58, 58, 58, 58, 172, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -152 + }, + + { + 9, -153, -153, -153, -153, -153, -153, 55, -153, -153, + -153, -153, -153, 58, -153, -153, -153, -153, -153, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 173, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -153 + + }, + + { + 9, -154, -154, -154, -154, -154, -154, 55, -154, -154, + -154, -154, -154, 58, -154, -154, -154, -154, -154, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 174, 58, 58, 58, + 58, -154 + }, + + { + 9, -155, -155, -155, -155, -155, -155, 55, -155, -155, + -155, -155, -155, 58, -155, -155, -155, -155, -155, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -155 + + }, + + { + 9, -156, -156, -156, -156, -156, -156, 55, -156, -156, + -156, -156, -156, 58, -156, -156, -156, -156, -156, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 175, 58, 58, 58, + 58, -156 + }, + + { + 9, -157, -157, -157, -157, -157, -157, 55, -157, -157, + -157, -157, -157, 58, -157, -157, -157, -157, -157, 58, + 58, 58, 58, 58, 176, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -157 + + }, + + { + 9, -158, -158, -158, -158, -158, -158, 55, -158, -158, + -158, -158, -158, 58, -158, -158, -158, -158, -158, 58, + 58, 58, 58, 58, 58, 58, 177, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -158 + }, + + { + 9, -159, -159, -159, -159, -159, -159, 55, -159, -159, + -159, -159, -159, 58, -159, -159, -159, -159, -159, 58, + 178, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -159 + + }, + + { + 9, -160, -160, -160, -160, -160, -160, 55, -160, -160, + -160, -160, -160, 58, -160, -160, -160, -160, -160, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 179, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -160 + }, + + { + 9, -161, -161, -161, -161, -161, -161, 55, -161, -161, + -161, -161, -161, 58, -161, -161, -161, -161, -161, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -161 + + }, + + { + 9, -162, -162, -162, -162, -162, -162, 55, -162, -162, + -162, -162, -162, 58, -162, -162, -162, -162, -162, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 180, 58, 58, 58, + 58, -162 + }, + + { + 9, -163, -163, -163, -163, -163, -163, 55, -163, -163, + -163, -163, -163, 58, -163, -163, -163, -163, -163, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -163 + + }, + + { + 9, -164, -164, -164, -164, -164, -164, 55, -164, -164, + -164, -164, -164, 58, -164, -164, -164, -164, -164, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 181, 58, 58, 58, 58, 58, 58, 58, + 58, -164 + }, + + { + 9, -165, -165, -165, -165, -165, -165, 55, -165, -165, + -165, -165, -165, 58, -165, -165, -165, -165, -165, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 182, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -165 + + }, + + { + 9, -166, -166, -166, -166, -166, -166, 55, -166, -166, + -166, -166, -166, 58, -166, -166, -166, -166, -166, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 183, 58, 58, 58, + 58, -166 + }, + + { + 9, -167, -167, -167, -167, -167, -167, 55, -167, -167, + -167, -167, -167, 58, -167, -167, -167, -167, -167, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 184, 58, 58, 58, 58, + 58, -167 + + }, + + { + 9, -168, -168, -168, -168, -168, -168, 55, -168, -168, + -168, -168, -168, 58, -168, -168, -168, -168, -168, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 185, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -168 + }, + + { + 9, -169, -169, -169, -169, -169, -169, 55, -169, -169, + -169, -169, -169, 58, -169, -169, -169, -169, -169, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 186, 58, 58, + 58, -169 + + }, + + { + 9, -170, -170, -170, -170, -170, -170, 55, -170, -170, + -170, -170, -170, 58, -170, -170, -170, -170, -170, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 187, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -170 + }, + + { + 9, -171, -171, -171, -171, -171, -171, 55, -171, -171, + -171, -171, -171, 58, -171, -171, -171, -171, -171, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 188, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -171 + + }, + + { + 9, -172, -172, -172, -172, -172, -172, 55, -172, -172, + -172, -172, -172, 58, -172, -172, -172, -172, -172, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 189, 58, 58, 58, 58, + 58, -172 + }, + + { + 9, -173, -173, -173, -173, -173, -173, 55, -173, -173, + -173, -173, -173, 58, -173, -173, -173, -173, -173, 58, + 190, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -173 + + }, + + { + 9, -174, -174, -174, -174, -174, -174, 55, -174, -174, + -174, -174, -174, 58, -174, -174, -174, -174, -174, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -174 + }, + + { + 9, -175, -175, -175, -175, -175, -175, 55, -175, -175, + -175, -175, -175, 58, -175, -175, -175, -175, -175, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -175 + + }, + + { + 9, -176, -176, -176, -176, -176, -176, 55, -176, -176, + -176, -176, -176, 58, -176, -176, -176, -176, -176, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -176 + }, + + { + 9, -177, -177, -177, -177, -177, -177, 55, -177, -177, + -177, -177, -177, 58, -177, -177, -177, -177, -177, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -177 + + }, + + { + 9, -178, -178, -178, -178, -178, -178, 55, -178, -178, + -178, -178, -178, 58, -178, -178, -178, -178, -178, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 191, 58, 58, 58, + 58, -178 + }, + + { + 9, -179, -179, -179, -179, -179, -179, 55, -179, -179, + -179, -179, -179, 58, -179, -179, -179, -179, -179, 58, + 58, 58, 58, 58, 192, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -179 + + }, + + { + 9, -180, -180, -180, -180, -180, -180, 55, -180, -180, + -180, -180, -180, 58, -180, -180, -180, -180, -180, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -180 + }, + + { + 9, -181, -181, -181, -181, -181, -181, 55, -181, -181, + -181, -181, -181, 58, -181, -181, -181, -181, -181, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 193, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -181 + + }, + + { + 9, -182, -182, -182, -182, -182, -182, 55, -182, -182, + -182, -182, -182, 58, -182, -182, -182, -182, -182, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 194, 58, 58, 58, 58, + 58, -182 + }, + + { + 9, -183, -183, -183, -183, -183, -183, 55, -183, -183, + -183, -183, -183, 58, -183, -183, -183, -183, -183, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -183 + + }, + + { + 9, -184, -184, -184, -184, -184, -184, 55, -184, -184, + -184, -184, -184, 58, -184, -184, -184, -184, -184, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -184 + }, + + { + 9, -185, -185, -185, -185, -185, -185, 55, -185, -185, + -185, -185, -185, 58, -185, -185, -185, -185, -185, 58, + 58, 58, 195, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -185 + + }, + + { + 9, -186, -186, -186, -186, -186, -186, 55, -186, -186, + -186, -186, -186, 58, -186, -186, -186, -186, -186, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -186 + }, + + { + 9, -187, -187, -187, -187, -187, -187, 55, -187, -187, + -187, -187, -187, 58, -187, -187, -187, -187, -187, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 196, 58, 58, + 58, -187 + + }, + + { + 9, -188, -188, -188, -188, -188, -188, 55, -188, -188, + -188, -188, -188, 58, -188, -188, -188, -188, -188, 58, + 58, 58, 58, 58, 58, 197, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -188 + }, + + { + 9, -189, -189, -189, -189, -189, -189, 55, -189, -189, + -189, -189, -189, 58, -189, -189, -189, -189, -189, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -189 + + }, + + { + 9, -190, -190, -190, -190, -190, -190, 55, -190, -190, + -190, -190, -190, 58, -190, -190, -190, -190, -190, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 198, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -190 + }, + + { + 9, -191, -191, -191, -191, -191, -191, 55, -191, -191, + -191, -191, -191, 58, -191, -191, -191, -191, -191, 58, + 58, 58, 58, 58, 199, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -191 + + }, + + { + 9, -192, -192, -192, -192, -192, -192, 55, -192, -192, + -192, -192, -192, 58, -192, -192, -192, -192, -192, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -192 + }, + + { + 9, -193, -193, -193, -193, -193, -193, 55, -193, -193, + -193, -193, -193, 58, -193, -193, -193, -193, -193, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -193 + + }, + + { + 9, -194, -194, -194, -194, -194, -194, 55, -194, -194, + -194, -194, -194, 58, -194, -194, -194, -194, -194, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 200, 58, 58, 58, + 58, -194 + }, + + { + 9, -195, -195, -195, -195, -195, -195, 55, -195, -195, + -195, -195, -195, 58, -195, -195, -195, -195, -195, 58, + 58, 58, 58, 58, 201, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -195 + + }, + + { + 9, -196, -196, -196, -196, -196, -196, 55, -196, -196, + -196, -196, -196, 58, -196, -196, -196, -196, -196, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -196 + }, + + { + 9, -197, -197, -197, -197, -197, -197, 55, -197, -197, + -197, -197, -197, 58, -197, -197, -197, -197, -197, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 202, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -197 + + }, + + { + 9, -198, -198, -198, -198, -198, -198, 55, -198, -198, + -198, -198, -198, 58, -198, -198, -198, -198, -198, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -198 + }, + + { + 9, -199, -199, -199, -199, -199, -199, 55, -199, -199, + -199, -199, -199, 58, -199, -199, -199, -199, -199, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -199 + + }, + + { + 9, -200, -200, -200, -200, -200, -200, 55, -200, -200, + -200, -200, -200, 58, -200, -200, -200, -200, -200, 58, + 203, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -200 + }, + + { + 9, -201, -201, -201, -201, -201, -201, 55, -201, -201, + -201, -201, -201, 58, -201, -201, -201, -201, -201, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -201 + + }, + + { + 9, -202, -202, -202, -202, -202, -202, 55, -202, -202, + -202, -202, -202, 58, -202, -202, -202, -202, -202, 58, + 58, 58, 58, 58, 58, 58, 204, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -202 + }, + + { + 9, -203, -203, -203, -203, -203, -203, 55, -203, -203, + -203, -203, -203, 58, -203, -203, -203, -203, -203, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 205, 58, 58, 58, + 58, -203 + + }, + + { + 9, -204, -204, -204, -204, -204, -204, 55, -204, -204, + -204, -204, -204, 58, -204, -204, -204, -204, -204, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -204 + }, + + { + 9, -205, -205, -205, -205, -205, -205, 55, -205, -205, + -205, -205, -205, 58, -205, -205, -205, -205, -205, 58, + 58, 58, 58, 58, 206, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -205 + + }, + + { + 9, -206, -206, -206, -206, -206, -206, 55, -206, -206, + -206, -206, -206, 58, -206, -206, -206, -206, -206, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -206 + }, + + } ; + +static yy_state_type yy_get_previous_state ( void ); +static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); +static int yy_get_next_buffer ( void ); +static void yynoreturn yy_fatal_error ( const char* msg ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + (yytext_ptr) = yy_bp; \ + yyleng = (int) (yy_cp - yy_bp); \ + (yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; +#define YY_NUM_RULES 63 +#define YY_END_OF_BUFFER 64 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static const flex_int16_t yy_accept[207] = + { 0, + 2, 2, 0, 0, 0, 0, 0, 0, 64, 50, + 2, 4, 42, 47, 1, 49, 50, 43, 44, 50, + 48, 50, 38, 36, 40, 50, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, + 51, 53, 52, 62, 59, 61, 55, 58, 57, 54, + 56, 2, 37, 1, 49, 35, 46, 48, 45, 39, + 41, 3, 48, 48, 48, 48, 48, 48, 18, 48, + 48, 48, 48, 48, 25, 48, 48, 48, 48, 48, + 48, 48, 48, 34, 51, 51, 62, 59, 61, 60, + 55, 54, 56, 48, 48, 48, 48, 48, 48, 48, + + 48, 17, 48, 20, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 5, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 16, 48, 48, 22, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 14, 48, 19, 48, + 48, 48, 48, 48, 28, 48, 48, 48, 48, 48, + 6, 48, 8, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 27, 29, 30, 31, 48, 48, 7, + 48, 48, 11, 12, 48, 15, 48, 48, 24, 48, + 48, 33, 9, 48, 48, 21, 48, 26, 32, 48, + + 13, 48, 48, 23, 48, 10 + } ; + +static const YY_CHAR yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 4, 5, 6, 7, 1, 8, 9, 10, + 11, 1, 12, 1, 13, 1, 1, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 14, 1, 15, + 16, 17, 1, 1, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 1, 18, 1, 1, 19, 1, 20, 21, 22, 23, + + 24, 25, 26, 27, 28, 13, 13, 29, 30, 31, + 32, 33, 13, 34, 35, 36, 37, 38, 13, 39, + 40, 13, 1, 41, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +/* Table of booleans, true if rule could match eol. */ +static const flex_int32_t yy_rule_can_match_eol[64] = + { 0, +0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, + 1, 1, 0, 0, }; + +extern int yy_flex_debug; +int yy_flex_debug = 0; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +char *yytext; +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2002 Roman Zippel + */ + +#include +#include +#include +#include +#include + +#include "lkc.h" +#include "preprocess.h" + +#include "parser.tab.h" + +#define YY_DECL static int yylex1(void) + +#define START_STRSIZE 16 + +/* The Kconfig file currently being parsed. */ +const char *cur_filename; + +/* + * The line number of the current statement. This does not match yylineno. + * yylineno is used by the lexer, while cur_lineno is used by the parser. + */ +int cur_lineno; + +static int prev_prev_token = T_EOL; +static int prev_token = T_EOL; +static char *text; +static int text_size, text_asize; + +struct buffer { + struct buffer *parent; + YY_BUFFER_STATE state; + int yylineno; + const char *filename; + int source_lineno; +}; + +static struct buffer *current_buf; + +static int last_ts, first_ts; + +static char *expand_token(const char *in, size_t n); +static void append_expanded_string(const char *in); +static void zconf_endhelp(void); +static void zconf_endfile(void); + +static void new_string(void) +{ + text = xmalloc(START_STRSIZE); + text_asize = START_STRSIZE; + text_size = 0; + *text = 0; +} + +static void append_string(const char *str, int size) +{ + int new_size = text_size + size + 1; + if (new_size > text_asize) { + new_size += START_STRSIZE - 1; + new_size &= -START_STRSIZE; + text = xrealloc(text, new_size); + text_asize = new_size; + } + memcpy(text + text_size, str, size); + text_size += size; + text[text_size] = 0; +} + +static void alloc_string(const char *str, int size) +{ + text = xmalloc(size + 1); + memcpy(text, str, size); + text[size] = 0; +} + +static void warn_ignored_character(char chr) +{ + fprintf(stderr, + "%s:%d:warning: ignoring unsupported character '%c'\n", + cur_filename, yylineno, chr); +} + +#define INITIAL 0 +#define ASSIGN_VAL 1 +#define HELP 2 +#define STRING 3 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +static int yy_init_globals ( void ); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int yylex_destroy ( void ); + +int yyget_debug ( void ); + +void yyset_debug ( int debug_flag ); + +YY_EXTRA_TYPE yyget_extra ( void ); + +void yyset_extra ( YY_EXTRA_TYPE user_defined ); + +FILE *yyget_in ( void ); + +void yyset_in ( FILE * _in_str ); + +FILE *yyget_out ( void ); + +void yyset_out ( FILE * _out_str ); + + int yyget_leng ( void ); + +char *yyget_text ( void ); + +int yyget_lineno ( void ); + +void yyset_lineno ( int _line_number ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap ( void ); +#else +extern int yywrap ( void ); +#endif +#endif + +#ifndef YY_NO_UNPUT + + static void yyunput ( int c, char *buf_ptr ); + +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy ( char *, const char *, int ); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen ( const char * ); +#endif + +#ifndef YY_NO_INPUT +#ifdef __cplusplus +static int yyinput ( void ); +#else +static int input ( void ); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k */ +#define YY_READ_BUF_SIZE 16384 +#else +#define YY_READ_BUF_SIZE 8192 +#endif /* __ia64__ */ +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + errno=0; \ + while ( (result = (int) read( fileno(yyin), buf, (yy_size_t) max_size )) < 0 ) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int yylex (void); + +#define YY_DECL int yylex (void) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK /*LINTED*/break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + yy_state_type yy_current_state; + char *yy_cp, *yy_bp; + int yy_act; + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! yyin ) + yyin = stdin; + + if ( ! yyout ) + yyout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer( yyin, YY_BUF_SIZE ); + } + + yy_load_buffer_state( ); + } + + { + + char open_quote = 0; + + while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ + { + yy_cp = (yy_c_buf_p); + + /* Support of yytext. */ + *yy_cp = (yy_hold_char); + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = (yy_start); +yy_match: + while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 ) + ++yy_cp; + + yy_current_state = -yy_current_state; + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + + YY_DO_BEFORE_ACTION; + + if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) + { + int yyl; + for ( yyl = 0; yyl < yyleng; ++yyl ) + if ( yytext[yyl] == '\n' ) + + yylineno++; +; + } + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ +case 1: +YY_RULE_SETUP +/* ignore comment */ + YY_BREAK +case 2: +YY_RULE_SETUP +/* whitespaces */ + YY_BREAK +case 3: +/* rule 3 can match eol */ +YY_RULE_SETUP +/* escaped new line */ + YY_BREAK +case 4: +/* rule 4 can match eol */ +YY_RULE_SETUP +return T_EOL; + YY_BREAK +case 5: +YY_RULE_SETUP +return T_BOOL; + YY_BREAK +case 6: +YY_RULE_SETUP +return T_CHOICE; + YY_BREAK +case 7: +YY_RULE_SETUP +return T_COMMENT; + YY_BREAK +case 8: +YY_RULE_SETUP +return T_CONFIG; + YY_BREAK +case 9: +YY_RULE_SETUP +return T_DEF_BOOL; + YY_BREAK +case 10: +YY_RULE_SETUP +return T_DEF_TRISTATE; + YY_BREAK +case 11: +YY_RULE_SETUP +return T_DEFAULT; + YY_BREAK +case 12: +YY_RULE_SETUP +return T_DEPENDS; + YY_BREAK +case 13: +YY_RULE_SETUP +return T_ENDCHOICE; + YY_BREAK +case 14: +YY_RULE_SETUP +return T_ENDIF; + YY_BREAK +case 15: +YY_RULE_SETUP +return T_ENDMENU; + YY_BREAK +case 16: +YY_RULE_SETUP +return T_HELP; + YY_BREAK +case 17: +YY_RULE_SETUP +return T_HEX; + YY_BREAK +case 18: +YY_RULE_SETUP +return T_IF; + YY_BREAK +case 19: +YY_RULE_SETUP +return T_IMPLY; + YY_BREAK +case 20: +YY_RULE_SETUP +return T_INT; + YY_BREAK +case 21: +YY_RULE_SETUP +return T_MAINMENU; + YY_BREAK +case 22: +YY_RULE_SETUP +return T_MENU; + YY_BREAK +case 23: +YY_RULE_SETUP +return T_MENUCONFIG; + YY_BREAK +case 24: +YY_RULE_SETUP +return T_MODULES; + YY_BREAK +case 25: +YY_RULE_SETUP +return T_ON; + YY_BREAK +case 26: +YY_RULE_SETUP +return T_OPTIONAL; + YY_BREAK +case 27: +YY_RULE_SETUP +return T_PROMPT; + YY_BREAK +case 28: +YY_RULE_SETUP +return T_RANGE; + YY_BREAK +case 29: +YY_RULE_SETUP +return T_SELECT; + YY_BREAK +case 30: +YY_RULE_SETUP +return T_SOURCE; + YY_BREAK +case 31: +YY_RULE_SETUP +return T_STRING; + YY_BREAK +case 32: +YY_RULE_SETUP +return T_TRISTATE; + YY_BREAK +case 33: +YY_RULE_SETUP +return T_VISIBLE; + YY_BREAK +case 34: +YY_RULE_SETUP +return T_OR; + YY_BREAK +case 35: +YY_RULE_SETUP +return T_AND; + YY_BREAK +case 36: +YY_RULE_SETUP +return T_EQUAL; + YY_BREAK +case 37: +YY_RULE_SETUP +return T_UNEQUAL; + YY_BREAK +case 38: +YY_RULE_SETUP +return T_LESS; + YY_BREAK +case 39: +YY_RULE_SETUP +return T_LESS_EQUAL; + YY_BREAK +case 40: +YY_RULE_SETUP +return T_GREATER; + YY_BREAK +case 41: +YY_RULE_SETUP +return T_GREATER_EQUAL; + YY_BREAK +case 42: +YY_RULE_SETUP +return T_NOT; + YY_BREAK +case 43: +YY_RULE_SETUP +return T_OPEN_PAREN; + YY_BREAK +case 44: +YY_RULE_SETUP +return T_CLOSE_PAREN; + YY_BREAK +case 45: +YY_RULE_SETUP +return T_COLON_EQUAL; + YY_BREAK +case 46: +YY_RULE_SETUP +return T_PLUS_EQUAL; + YY_BREAK +case 47: +YY_RULE_SETUP +{ + open_quote = yytext[0]; + new_string(); + BEGIN(STRING); + } + YY_BREAK +case 48: +YY_RULE_SETUP +{ + alloc_string(yytext, yyleng); + yylval.string = text; + return T_WORD; + } + YY_BREAK +case 49: +YY_RULE_SETUP +{ + /* this token includes at least one '$' */ + yylval.string = expand_token(yytext, yyleng); + if (strlen(yylval.string)) + return T_WORD; + free(yylval.string); + } + YY_BREAK +case 50: +YY_RULE_SETUP +warn_ignored_character(*yytext); + YY_BREAK + +case 51: +YY_RULE_SETUP +{ + alloc_string(yytext, yyleng); + yylval.string = text; + return T_ASSIGN_VAL; + } + YY_BREAK +case 52: +/* rule 52 can match eol */ +YY_RULE_SETUP +{ BEGIN(INITIAL); return T_EOL; } + YY_BREAK +case 53: +YY_RULE_SETUP + + YY_BREAK + +case 54: +YY_RULE_SETUP +append_expanded_string(yytext); + YY_BREAK +case 55: +YY_RULE_SETUP +{ + append_string(yytext, yyleng); + } + YY_BREAK +case 56: +YY_RULE_SETUP +{ + append_string(yytext + 1, yyleng - 1); + } + YY_BREAK +case 57: +YY_RULE_SETUP +{ + if (open_quote == yytext[0]) { + BEGIN(INITIAL); + yylval.string = text; + return T_WORD_QUOTE; + } else + append_string(yytext, 1); + } + YY_BREAK +case 58: +/* rule 58 can match eol */ +YY_RULE_SETUP +{ + fprintf(stderr, + "%s:%d:warning: multi-line strings not supported\n", + cur_filename, cur_lineno); + unput('\n'); + BEGIN(INITIAL); + yylval.string = text; + return T_WORD_QUOTE; + } + YY_BREAK +case YY_STATE_EOF(STRING): +{ + BEGIN(INITIAL); + yylval.string = text; + return T_WORD_QUOTE; + } + YY_BREAK + +case 59: +YY_RULE_SETUP +{ + int ts, i; + + ts = 0; + for (i = 0; i < yyleng; i++) { + if (yytext[i] == '\t') + ts = (ts & ~7) + 8; + else + ts++; + } + last_ts = ts; + if (first_ts) { + if (ts < first_ts) { + zconf_endhelp(); + return T_HELPTEXT; + } + ts -= first_ts; + while (ts > 8) { + append_string(" ", 8); + ts -= 8; + } + append_string(" ", ts); + } + } + YY_BREAK +case 60: +/* rule 60 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ +YY_LINENO_REWIND_TO(yy_cp - 1); +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up yytext again */ +YY_RULE_SETUP +{ + zconf_endhelp(); + return T_HELPTEXT; + } + YY_BREAK +case 61: +/* rule 61 can match eol */ +YY_RULE_SETUP +{ + append_string("\n", 1); + } + YY_BREAK +case 62: +YY_RULE_SETUP +{ + while (yyleng) { + if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t')) + break; + yyleng--; + } + append_string(yytext, yyleng); + if (!first_ts) + first_ts = last_ts; + } + YY_BREAK +case YY_STATE_EOF(HELP): +{ + zconf_endhelp(); + return T_HELPTEXT; + } + YY_BREAK + +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(ASSIGN_VAL): +{ + BEGIN(INITIAL); + + if (prev_token != T_EOL && prev_token != T_HELPTEXT) + fprintf(stderr, "%s:%d:warning: no new line at end of file\n", + cur_filename, yylineno); + + if (current_buf) { + zconf_endfile(); + return T_EOL; + } + fclose(yyin); + yyterminate(); +} + YY_BREAK +case 63: +YY_RULE_SETUP +YY_FATAL_ERROR( "flex scanner jammed" ); + YY_BREAK + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = (yy_hold_char); + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++(yy_c_buf_p); + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = (yy_c_buf_p); + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_END_OF_FILE: + { + (yy_did_buffer_switch_on_eof) = 0; + + if ( yywrap( ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = + (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + (yy_c_buf_p) = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ + } /* end of user's declarations */ +} /* end of yylex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (void) +{ + char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + char *source = (yytext_ptr); + int number_to_move, i; + int ret_val; + + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; + + else + { + int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; + + int yy_c_buf_p_offset = + (int) ((yy_c_buf_p) - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + yyrealloc( (void *) b->yy_ch_buf, + (yy_size_t) (b->yy_buf_size + 2) ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = NULL; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + (yy_n_chars), num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + if ( (yy_n_chars) == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart( yyin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( + (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + /* "- 2" to take care of EOB's */ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); + } + + (yy_n_chars) += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; + + (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (void) +{ + yy_state_type yy_current_state; + char *yy_cp; + + yy_current_state = (yy_start); + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { + yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +{ + int yy_is_jam; + + yy_current_state = yy_nxt[yy_current_state][1]; + yy_is_jam = (yy_current_state <= 0); + + return yy_is_jam ? 0 : yy_current_state; +} + +#ifndef YY_NO_UNPUT + + static void yyunput (int c, char * yy_bp ) +{ + char *yy_cp; + + yy_cp = (yy_c_buf_p); + + /* undo effects of setting up yytext */ + *yy_cp = (yy_hold_char); + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + int number_to_move = (yy_n_chars) + 2; + char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; + char *source = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; + + while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = + (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (char) c; + + if ( c == '\n' ){ + --yylineno; + } + + (yytext_ptr) = yy_bp; + (yy_hold_char) = *yy_cp; + (yy_c_buf_p) = yy_cp; +} + +#endif + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (void) +#else + static int input (void) +#endif + +{ + int c; + + *(yy_c_buf_p) = (yy_hold_char); + + if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + /* This was really a NUL. */ + *(yy_c_buf_p) = '\0'; + + else + { /* need more input */ + int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); + ++(yy_c_buf_p); + + switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart( yyin ); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( yywrap( ) ) + return 0; + + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = (yytext_ptr) + offset; + break; + } + } + } + + c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ + *(yy_c_buf_p) = '\0'; /* preserve yytext */ + (yy_hold_char) = *++(yy_c_buf_p); + + if ( c == '\n' ) + + yylineno++; +; + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * + * @note This function does not reset the start condition to @c INITIAL . + */ + void yyrestart (FILE * input_file ) +{ + + if ( ! YY_CURRENT_BUFFER ){ + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer( yyin, YY_BUF_SIZE ); + } + + yy_init_buffer( YY_CURRENT_BUFFER, input_file ); + yy_load_buffer_state( ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * + */ + void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +{ + + /* TODO. We should be able to replace this entire function body + * with + * yypop_buffer_state(); + * yypush_buffer_state(new_buffer); + */ + yyensure_buffer_stack (); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + yy_load_buffer_state( ); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe + * to go ahead and always set it. + */ + (yy_did_buffer_switch_on_eof) = 1; +} + +static void yy_load_buffer_state (void) +{ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + (yy_hold_char) = *(yy_c_buf_p); +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * + * @return the allocated buffer state. + */ + YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + yy_init_buffer( b, file ); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with yy_create_buffer() + * + */ + void yy_delete_buffer (YY_BUFFER_STATE b ) +{ + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + yyfree( (void *) b->yy_ch_buf ); + + yyfree( (void *) b ); +} + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a yyrestart() or at EOF. + */ + static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) + +{ + int oerrno = errno; + + yy_flush_buffer( b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then yy_init_buffer was _probably_ + * called from yyrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * + */ + void yy_flush_buffer (YY_BUFFER_STATE b ) +{ + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + yy_load_buffer_state( ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * + */ +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) +{ + if (new_buffer == NULL) + return; + + yyensure_buffer_stack(); + + /* This block is copied from yy_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + (yy_buffer_stack_top)++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from yy_switch_to_buffer. */ + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * + */ +void yypop_buffer_state (void) +{ + if (!YY_CURRENT_BUFFER) + return; + + yy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + if ((yy_buffer_stack_top) > 0) + --(yy_buffer_stack_top); + + if (YY_CURRENT_BUFFER) { + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void yyensure_buffer_stack (void) +{ + yy_size_t num_to_alloc; + + if (!(yy_buffer_stack)) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ + (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + (yy_buffer_stack_max) = num_to_alloc; + (yy_buffer_stack_top) = 0; + return; + } + + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + yy_size_t grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = (yy_buffer_stack_max) + grow_size; + (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc + ((yy_buffer_stack), + num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + /* zero only the new slots.*/ + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); + (yy_buffer_stack_max) = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return NULL; + + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + + b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = NULL; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer( b ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to yylex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * yy_scan_bytes() instead. + */ +YY_BUFFER_STATE yy_scan_string (const char * yystr ) +{ + + return yy_scan_bytes( yystr, (int) strlen(yystr) ); +} + +/** Setup the input buffer state to scan the given bytes. The next call to yylex() will + * scan from a @e copy of @a bytes. + * @param yybytes the byte buffer to scan + * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = (yy_size_t) (_yybytes_len + 2); + buf = (char *) yyalloc( n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer( buf, n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yynoreturn yy_fatal_error (const char* msg ) +{ + fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = (yy_hold_char); \ + (yy_c_buf_p) = yytext + yyless_macro_arg; \ + (yy_hold_char) = *(yy_c_buf_p); \ + *(yy_c_buf_p) = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the current line number. + * + */ +int yyget_lineno (void) +{ + + return yylineno; +} + +/** Get the input stream. + * + */ +FILE *yyget_in (void) +{ + return yyin; +} + +/** Get the output stream. + * + */ +FILE *yyget_out (void) +{ + return yyout; +} + +/** Get the length of the current token. + * + */ +int yyget_leng (void) +{ + return yyleng; +} + +/** Get the current token. + * + */ + +char *yyget_text (void) +{ + return yytext; +} + +/** Set the current line number. + * @param _line_number line number + * + */ +void yyset_lineno (int _line_number ) +{ + + yylineno = _line_number; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param _in_str A readable stream. + * + * @see yy_switch_to_buffer + */ +void yyset_in (FILE * _in_str ) +{ + yyin = _in_str ; +} + +void yyset_out (FILE * _out_str ) +{ + yyout = _out_str ; +} + +int yyget_debug (void) +{ + return yy_flex_debug; +} + +void yyset_debug (int _bdebug ) +{ + yy_flex_debug = _bdebug ; +} + +static int yy_init_globals (void) +{ + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from yylex_destroy(), so don't allocate here. + */ + + /* We do not touch yylineno unless the option is enabled. */ + yylineno = 1; + + (yy_buffer_stack) = NULL; + (yy_buffer_stack_top) = 0; + (yy_buffer_stack_max) = 0; + (yy_c_buf_p) = NULL; + (yy_init) = 0; + (yy_start) = 0; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = NULL; + yyout = NULL; +#endif + + /* For future reference: Set errno on error, since we are called by + * yylex_init() + */ + return 0; +} + +/* yylex_destroy is for both reentrant and non-reentrant scanners. */ +int yylex_destroy (void) +{ + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + yy_delete_buffer( YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + yypop_buffer_state(); + } + + /* Destroy the stack itself. */ + yyfree((yy_buffer_stack) ); + (yy_buffer_stack) = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * yylex() is called, initialization will occur. */ + yy_init_globals( ); + + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, const char * s2, int n ) +{ + + int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (const char * s ) +{ + int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *yyalloc (yy_size_t size ) +{ + return malloc(size); +} + +void *yyrealloc (void * ptr, yy_size_t size ) +{ + + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return realloc(ptr, size); +} + +void yyfree (void * ptr ) +{ + free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +/* second stage lexer */ +int yylex(void) +{ + int token; + +repeat: + token = yylex1(); + + if (prev_token == T_EOL || prev_token == T_HELPTEXT) { + if (token == T_EOL) + /* Do not pass unneeded T_EOL to the parser. */ + goto repeat; + else + /* + * For the parser, update lineno at the first token + * of each statement. Generally, \n is a statement + * terminator in Kconfig, but it is not always true + * because \n could be escaped by a backslash. + */ + cur_lineno = yylineno; + } + + if (prev_prev_token == T_EOL && prev_token == T_WORD && + (token == T_EQUAL || token == T_COLON_EQUAL || token == T_PLUS_EQUAL)) + BEGIN(ASSIGN_VAL); + + prev_prev_token = prev_token; + prev_token = token; + + return token; +} + +static char *expand_token(const char *in, size_t n) +{ + char *out; + int c; + char c2; + const char *rest, *end; + + new_string(); + append_string(in, n); + + /* + * get the whole line because we do not know the end of token. + * input() returns 0 (not EOF!) when it reachs the end of file. + */ + while ((c = input()) != 0) { + if (c == '\n') { + unput(c); + break; + } + c2 = c; + append_string(&c2, 1); + } + + rest = text; + out = expand_one_token(&rest); + + /* push back unused characters to the input stream */ + end = rest + strlen(rest); + while (end > rest) + unput(*--end); + + free(text); + + return out; +} + +static void append_expanded_string(const char *str) +{ + const char *end; + char *res; + + str++; + + res = expand_dollar(&str); + + /* push back unused characters to the input stream */ + end = str + strlen(str); + while (end > str) + unput(*--end); + + append_string(res, strlen(res)); + + free(res); +} + +void zconf_starthelp(void) +{ + new_string(); + last_ts = first_ts = 0; + BEGIN(HELP); +} + +static void zconf_endhelp(void) +{ + yylval.string = text; + BEGIN(INITIAL); +} + +/* + * Try to open specified file with following names: + * ./name + * $(srctree)/name + * The latter is used when srctree is separate from objtree + * when compiling the kernel. + * Return NULL if file is not found. + */ +FILE *zconf_fopen(const char *name) +{ + char *env, fullname[PATH_MAX+1]; + FILE *f; + + f = fopen(name, "r"); + if (!f && name != NULL && name[0] != '/') { + env = getenv(SRCTREE); + if (env) { + snprintf(fullname, sizeof(fullname), + "%s/%s", env, name); + f = fopen(fullname, "r"); + } + } + return f; +} + +void zconf_initscan(const char *name) +{ + yyin = zconf_fopen(name); + if (!yyin) { + fprintf(stderr, "can't find file %s\n", name); + exit(1); + } + + cur_filename = file_lookup(name); + yylineno = 1; +} + +void zconf_nextfile(const char *name) +{ + struct buffer *buf = xmalloc(sizeof(*buf)); + bool recur_include = false; + + buf->state = YY_CURRENT_BUFFER; + buf->yylineno = yylineno; + buf->filename = cur_filename; + buf->source_lineno = cur_lineno; + buf->parent = current_buf; + current_buf = buf; + yyin = zconf_fopen(name); + if (!yyin) { + fprintf(stderr, "%s:%d: can't open file \"%s\"\n", + cur_filename, cur_lineno, name); + exit(1); + } + yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); + + for (buf = current_buf; buf; buf = buf->parent) { + if (!strcmp(buf->filename, name)) + recur_include = true; + } + + if (recur_include) { + fprintf(stderr, + "Recursive inclusion detected.\n" + "Inclusion path:\n" + " current file : %s\n", name); + + for (buf = current_buf; buf; buf = buf->parent) + fprintf(stderr, " included from: %s:%d\n", + buf->filename, buf->source_lineno); + exit(1); + } + + yylineno = 1; + cur_filename = file_lookup(name); +} + +static void zconf_endfile(void) +{ + struct buffer *tmp; + + fclose(yyin); + yy_delete_buffer(YY_CURRENT_BUFFER); + yy_switch_to_buffer(current_buf->state); + yylineno = current_buf->yylineno; + cur_filename = current_buf->filename; + tmp = current_buf; + current_buf = current_buf->parent; + free(tmp); +} + diff --git a/support/kconfig/list.h b/support/kconfig/list.h index 45cb237ab7..882859ddf9 100644 --- a/support/kconfig/list.h +++ b/support/kconfig/list.h @@ -2,29 +2,39 @@ #ifndef LIST_H #define LIST_H -/* - * Copied from include/linux/... - */ +#include -#undef offsetof -#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) +#include "list_types.h" + +/* Are two types/vars the same type (ignoring qualifiers)? */ +#define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b)) /** * container_of - cast a member of a structure out to the containing structure - * @ptr: the pointer to the member. - * @type: the type of the container struct this is embedded in. - * @member: the name of the member within the struct. + * @ptr: the pointer to the member. + * @type: the type of the container struct this is embedded in. + * @member: the name of the member within the struct. * */ -#define container_of(ptr, type, member) ({ \ - const typeof( ((type *)0)->member ) *__mptr = (ptr); \ - (type *)( (char *)__mptr - offsetof(type,member) );}) - +#define container_of(ptr, type, member) ({ \ + void *__mptr = (void *)(ptr); \ + _Static_assert(__same_type(*(ptr), ((type *)0)->member) || \ + __same_type(*(ptr), void), \ + "pointer type mismatch in container_of()"); \ + ((type *)(__mptr - offsetof(type, member))); }) -struct list_head { - struct list_head *next, *prev; -}; +#define LIST_POISON1 ((void *) 0x100) +#define LIST_POISON2 ((void *) 0x122) +/* + * Circular doubly linked list implementation. + * + * Some of the internal functions ("__xxx") are useful when + * manipulating whole lists rather than single entries, as + * sometimes we already know the next/prev entries and we can + * generate better code by using them directly rather than + * using the generic single-entry routines. + */ #define LIST_HEAD_INIT(name) { &(name), &(name) } @@ -32,45 +42,16 @@ struct list_head { struct list_head name = LIST_HEAD_INIT(name) /** - * list_entry - get the struct for this entry - * @ptr: the &struct list_head pointer. - * @type: the type of the struct this is embedded in. - * @member: the name of the list_head within the struct. - */ -#define list_entry(ptr, type, member) \ - container_of(ptr, type, member) - -/** - * list_for_each_entry - iterate over list of given type - * @pos: the type * to use as a loop cursor. - * @head: the head for your list. - * @member: the name of the list_head within the struct. - */ -#define list_for_each_entry(pos, head, member) \ - for (pos = list_entry((head)->next, typeof(*pos), member); \ - &pos->member != (head); \ - pos = list_entry(pos->member.next, typeof(*pos), member)) - -/** - * list_for_each_entry_safe - iterate over list of given type safe against removal of list entry - * @pos: the type * to use as a loop cursor. - * @n: another type * to use as temporary storage - * @head: the head for your list. - * @member: the name of the list_head within the struct. - */ -#define list_for_each_entry_safe(pos, n, head, member) \ - for (pos = list_entry((head)->next, typeof(*pos), member), \ - n = list_entry(pos->member.next, typeof(*pos), member); \ - &pos->member != (head); \ - pos = n, n = list_entry(n->member.next, typeof(*n), member)) - -/** - * list_empty - tests whether a list is empty - * @head: the list to test. + * INIT_LIST_HEAD - Initialize a list_head structure + * @list: list_head structure to be initialized. + * + * Initializes the list_head to point to itself. If it is a list header, + * the result is an empty list. */ -static inline int list_empty(const struct list_head *head) +static inline void INIT_LIST_HEAD(struct list_head *list) { - return head->next == head; + list->next = list; + list->prev = list; } /* @@ -79,14 +60,27 @@ static inline int list_empty(const struct list_head *head) * This is only for internal list manipulation where we know * the prev/next entries already! */ -static inline void __list_add(struct list_head *_new, +static inline void __list_add(struct list_head *new, struct list_head *prev, struct list_head *next) { - next->prev = _new; - _new->next = next; - _new->prev = prev; - prev->next = _new; + next->prev = new; + new->next = next; + new->prev = prev; + prev->next = new; +} + +/** + * list_add - add a new entry + * @new: new entry to be added + * @head: list head to add it after + * + * Insert a new entry after the specified head. + * This is good for implementing stacks. + */ +static inline void list_add(struct list_head *new, struct list_head *head) +{ + __list_add(new, head, head->next); } /** @@ -97,9 +91,9 @@ static inline void __list_add(struct list_head *_new, * Insert a new entry before the specified head. * This is useful for implementing queues. */ -static inline void list_add_tail(struct list_head *_new, struct list_head *head) +static inline void list_add_tail(struct list_head *new, struct list_head *head) { - __list_add(_new, head->prev, head); + __list_add(new, head->prev, head); } /* @@ -115,8 +109,11 @@ static inline void __list_del(struct list_head *prev, struct list_head *next) prev->next = next; } -#define LIST_POISON1 ((void *) 0x00100100) -#define LIST_POISON2 ((void *) 0x00200200) +static inline void __list_del_entry(struct list_head *entry) +{ + __list_del(entry->prev, entry->next); +} + /** * list_del - deletes entry from list. * @entry: the element to delete from the list. @@ -125,8 +122,135 @@ static inline void __list_del(struct list_head *prev, struct list_head *next) */ static inline void list_del(struct list_head *entry) { - __list_del(entry->prev, entry->next); - entry->next = (struct list_head*)LIST_POISON1; - entry->prev = (struct list_head*)LIST_POISON2; + __list_del_entry(entry); + entry->next = LIST_POISON1; + entry->prev = LIST_POISON2; +} + +/** + * list_is_head - tests whether @list is the list @head + * @list: the entry to test + * @head: the head of the list + */ +static inline int list_is_head(const struct list_head *list, const struct list_head *head) +{ + return list == head; +} + +/** + * list_empty - tests whether a list is empty + * @head: the list to test. + */ +static inline int list_empty(const struct list_head *head) +{ + return head->next == head; +} + +/** + * list_entry - get the struct for this entry + * @ptr: the &struct list_head pointer. + * @type: the type of the struct this is embedded in. + * @member: the name of the list_head within the struct. + */ +#define list_entry(ptr, type, member) \ + container_of(ptr, type, member) + +/** + * list_first_entry - get the first element from a list + * @ptr: the list head to take the element from. + * @type: the type of the struct this is embedded in. + * @member: the name of the list_head within the struct. + * + * Note, that list is expected to be not empty. + */ +#define list_first_entry(ptr, type, member) \ + list_entry((ptr)->next, type, member) + +/** + * list_next_entry - get the next element in list + * @pos: the type * to cursor + * @member: the name of the list_head within the struct. + */ +#define list_next_entry(pos, member) \ + list_entry((pos)->member.next, typeof(*(pos)), member) + +/** + * list_entry_is_head - test if the entry points to the head of the list + * @pos: the type * to cursor + * @head: the head for your list. + * @member: the name of the list_head within the struct. + */ +#define list_entry_is_head(pos, head, member) \ + (&pos->member == (head)) + +/** + * list_for_each_entry - iterate over list of given type + * @pos: the type * to use as a loop cursor. + * @head: the head for your list. + * @member: the name of the list_head within the struct. + */ +#define list_for_each_entry(pos, head, member) \ + for (pos = list_first_entry(head, typeof(*pos), member); \ + !list_entry_is_head(pos, head, member); \ + pos = list_next_entry(pos, member)) + +/** + * list_for_each_entry_safe - iterate over list of given type. Safe against removal of list entry + * @pos: the type * to use as a loop cursor. + * @n: another type * to use as temporary storage + * @head: the head for your list. + * @member: the name of the list_head within the struct. + */ +#define list_for_each_entry_safe(pos, n, head, member) \ + for (pos = list_first_entry(head, typeof(*pos), member), \ + n = list_next_entry(pos, member); \ + !list_entry_is_head(pos, head, member); \ + pos = n, n = list_next_entry(n, member)) + +/* + * Double linked lists with a single pointer list head. + * Mostly useful for hash tables where the two pointer list head is + * too wasteful. + * You lose the ability to access the tail in O(1). + */ + +#define HLIST_HEAD_INIT { .first = NULL } + +/** + * hlist_add_head - add a new entry at the beginning of the hlist + * @n: new entry to be added + * @h: hlist head to add it after + * + * Insert a new entry after the specified head. + * This is good for implementing stacks. + */ +static inline void hlist_add_head(struct hlist_node *n, struct hlist_head *h) +{ + struct hlist_node *first = h->first; + + n->next = first; + if (first) + first->pprev = &n->next; + h->first = n; + n->pprev = &h->first; } -#endif + +#define hlist_entry(ptr, type, member) container_of(ptr, type, member) + +#define hlist_entry_safe(ptr, type, member) \ + ({ typeof(ptr) ____ptr = (ptr); \ + ____ptr ? hlist_entry(____ptr, type, member) : NULL; \ + }) + +/** + * hlist_for_each_entry - iterate over list of given type + * @pos: the type * to use as a loop cursor. + * @head: the head for your list. + * @member: the name of the hlist_node within the struct. + */ +#define hlist_for_each_entry(pos, head, member) \ + for (pos = hlist_entry_safe((head)->first, typeof(*(pos)), member);\ + pos; \ + pos = hlist_entry_safe((pos)->member.next, typeof(*(pos)), member)) + +#endif /* LIST_H */ diff --git a/support/kconfig/list_types.h b/support/kconfig/list_types.h new file mode 100644 index 0000000000..d935b7c5aa --- /dev/null +++ b/support/kconfig/list_types.h @@ -0,0 +1,17 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef LIST_TYPES_H +#define LIST_TYPES_H + +struct list_head { + struct list_head *next, *prev; +}; + +struct hlist_head { + struct hlist_node *first; +}; + +struct hlist_node { + struct hlist_node *next, **pprev; +}; + +#endif /* LIST_TYPES_H */ diff --git a/support/kconfig/lkc.h b/support/kconfig/lkc.h index f4394af6e4..e7cc9e985c 100644 --- a/support/kconfig/lkc.h +++ b/support/kconfig/lkc.h @@ -1,21 +1,16 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ #ifndef LKC_H #define LKC_H -#include "expr.h" +#include +#include +#include -#ifndef KBUILD_NO_NLS -# include -#else -static inline const char *gettext(const char *txt) { return txt; } -static inline void textdomain(const char *domainname) {} -static inline void bindtextdomain(const char *name, const char *dir) {} -static inline char *bind_textdomain_codeset(const char *dn, char *c) { return c; } -#endif +#include "expr.h" #ifdef __cplusplus extern "C" { @@ -25,15 +20,6 @@ extern "C" { #define SRCTREE "srctree" -#ifndef PACKAGE -#define PACKAGE "linux" -#endif - -#define LOCALEDIR "/usr/share/locale" - -#define _(text) gettext(text) -#define N_(text) (text) - #ifndef CONFIG_ #define CONFIG_ "CONFIG_" #endif @@ -44,46 +30,16 @@ static inline const char *CONFIG_prefix(void) #undef CONFIG_ #define CONFIG_ CONFIG_prefix() -#define TF_COMMAND 0x0001 -#define TF_PARAM 0x0002 -#define TF_OPTION 0x0004 - -enum conf_def_mode { - def_default, - def_yes, - def_mod, - def_no, - def_random -}; - -#define T_OPT_MODULES 1 -#define T_OPT_DEFCONFIG_LIST 2 -#define T_OPT_ENV 3 -#define T_OPT_ALLNOCONFIG_Y 4 - -struct kconf_id { - const char *name; - int token; - unsigned int flags; - enum symbol_type stype; -}; - extern int yylineno; void zconfdump(FILE *out); void zconf_starthelp(void); FILE *zconf_fopen(const char *name); void zconf_initscan(const char *name); void zconf_nextfile(const char *name); -int zconf_lineno(void); -const char *zconf_curname(void); /* confdata.c */ +extern struct gstr autoconf_cmd; const char *conf_get_configname(void); -const char *conf_get_autoconfig_name(void); -char *conf_get_default_confname(void); -void sym_set_change_count(int count); -void sym_add_change_count(int count); -bool conf_set_all_new_symbols(enum conf_def_mode mode); void set_all_choice_values(struct symbol *csym); /* confdata.c and expr.c */ @@ -95,28 +51,17 @@ static inline void xfwrite(const void *str, size_t len, size_t count, FILE *out) fprintf(stderr, "Error in writing or end of file.\n"); } -/* menu.c */ -void _menu_init(void); -void menu_warn(struct menu *menu, const char *fmt, ...); -struct menu *menu_add_menu(void); -void menu_end_menu(void); -void menu_add_entry(struct symbol *sym); -void menu_add_dep(struct expr *dep); -void menu_add_visibility(struct expr *dep); -struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep); -void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep); -void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep); -void menu_add_option(int token, char *arg); -void menu_finalize(struct menu *parent); -void menu_set_type(int type); - /* util.c */ -struct file *file_lookup(const char *name); -int file_write_dep(const char *name); +unsigned int strhash(const char *s); +const char *file_lookup(const char *name); void *xmalloc(size_t size); void *xcalloc(size_t nmemb, size_t size); void *xrealloc(void *p, size_t size); char *xstrdup(const char *s); +char *xstrndup(const char *s, size_t n); + +/* lexer.l */ +int yylex(void); struct gstr { size_t len; @@ -131,19 +76,40 @@ struct gstr str_new(void); void str_free(struct gstr *gs); void str_append(struct gstr *gs, const char *s); void str_printf(struct gstr *gs, const char *fmt, ...); -const char *str_get(struct gstr *gs); +char *str_get(struct gstr *gs); -/* symbol.c */ -extern struct expr *sym_env_list; +/* menu.c */ +void _menu_init(void); +void menu_warn(struct menu *menu, const char *fmt, ...); +struct menu *menu_add_menu(void); +void menu_end_menu(void); +void menu_add_entry(struct symbol *sym); +void menu_add_dep(struct expr *dep); +void menu_add_visibility(struct expr *dep); +struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep); +void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep); +void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep); +void menu_finalize(void); +void menu_set_type(int type); + +extern struct menu rootmenu; -void sym_init(void); +bool menu_is_empty(struct menu *menu); +bool menu_is_visible(struct menu *menu); +bool menu_has_prompt(struct menu *menu); +const char *menu_get_prompt(struct menu *menu); +struct menu *menu_get_parent_menu(struct menu *menu); +int get_jump_key_char(void); +struct gstr get_relations_str(struct symbol **sym_arr, struct list_head *head); +void menu_get_ext_help(struct menu *menu, struct gstr *help); + +/* symbol.c */ void sym_clear_all_valid(void); struct symbol *sym_choice_default(struct symbol *sym); +struct property *sym_get_range_prop(struct symbol *sym); const char *sym_get_string_default(struct symbol *sym); struct symbol *sym_check_deps(struct symbol *sym); -struct property *prop_alloc(enum prop_type type, struct symbol *sym); struct symbol *prop_get_symbol(struct property *prop); -struct property *sym_get_env_prop(struct symbol *sym); static inline tristate sym_get_tristate_value(struct symbol *sym) { @@ -156,11 +122,6 @@ static inline struct symbol *sym_get_choice_value(struct symbol *sym) return (struct symbol *)sym->curr.val; } -static inline bool sym_set_choice_value(struct symbol *ch, struct symbol *chval) -{ - return sym_set_tristate_value(chval, yes); -} - static inline bool sym_is_choice(struct symbol *sym) { return sym->flags & SYMBOL_CHOICE ? true : false; diff --git a/support/kconfig/lkc_proto.h b/support/kconfig/lkc_proto.h index 9dc8abfb1d..2807fa584c 100644 --- a/support/kconfig/lkc_proto.h +++ b/support/kconfig/lkc_proto.h @@ -1,4 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0 */ +#ifndef LKC_PROTO_H +#define LKC_PROTO_H + #include /* confdata.c */ @@ -7,35 +10,21 @@ int conf_read(const char *name); int conf_read_simple(const char *name, int); int conf_write_defconfig(const char *name); int conf_write(const char *name); -int conf_write_autoconf(void); +int conf_write_autoconf(int overwrite); +void conf_set_changed(bool val); bool conf_get_changed(void); void conf_set_changed_callback(void (*fn)(void)); -void conf_set_message_callback(void (*fn)(const char *fmt, va_list ap)); - -/* menu.c */ -extern struct menu rootmenu; - -bool menu_is_empty(struct menu *menu); -bool menu_is_visible(struct menu *menu); -bool menu_has_prompt(struct menu *menu); -const char * menu_get_prompt(struct menu *menu); -struct menu * menu_get_root_menu(struct menu *menu); -struct menu * menu_get_parent_menu(struct menu *menu); -bool menu_has_help(struct menu *menu); -const char * menu_get_help(struct menu *menu); -struct gstr get_relations_str(struct symbol **sym_arr, struct list_head *head); -void menu_get_ext_help(struct menu *menu, struct gstr *help); +void conf_set_message_callback(void (*fn)(const char *s)); +bool conf_errors(void); /* symbol.c */ -extern struct symbol * symbol_hash[SYMBOL_HASHSIZE]; - struct symbol * sym_lookup(const char *name, int flags); struct symbol * sym_find(const char *name); -char *sym_expand_string_value(const char *in); -const char * sym_escape_string_value(const char *in); +void print_symbol_for_listconfig(struct symbol *sym); struct symbol ** sym_re_search(const char *pattern); const char * sym_type_name(enum symbol_type type); void sym_calc_value(struct symbol *sym); +bool sym_dep_errors(void); enum symbol_type sym_get_type(struct symbol *sym); bool sym_tristate_within_range(struct symbol *sym,tristate tri); bool sym_set_tristate_value(struct symbol *sym,tristate tri); @@ -43,7 +32,7 @@ tristate sym_toggle_tristate_value(struct symbol *sym); bool sym_string_valid(struct symbol *sym, const char *newval); bool sym_string_within_range(struct symbol *sym, const char *str); bool sym_set_string_value(struct symbol *sym, const char *newval); -bool sym_is_changable(struct symbol *sym); +bool sym_is_changeable(struct symbol *sym); struct property * sym_get_choice_prop(struct symbol *sym); const char * sym_get_string_value(struct symbol *sym); @@ -51,3 +40,5 @@ const char * prop_get_type_name(enum prop_type type); /* expr.c */ void expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char *), void *data, int prevtoken); + +#endif /* LKC_PROTO_H */ diff --git a/support/kconfig/lxdialog/.gitignore b/support/kconfig/lxdialog/.gitignore deleted file mode 100644 index 90b08ff025..0000000000 --- a/support/kconfig/lxdialog/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# -# Generated files -# -lxdialog diff --git a/support/kconfig/lxdialog/BIG.FAT.WARNING b/support/kconfig/lxdialog/BIG.FAT.WARNING index a8999d82bd..7cb5a7ec93 100644 --- a/support/kconfig/lxdialog/BIG.FAT.WARNING +++ b/support/kconfig/lxdialog/BIG.FAT.WARNING @@ -1,4 +1,4 @@ This is NOT the official version of dialog. This version has been significantly modified from the original. It is for use by the Linux -kernel configuration script. Please do not bother Savio Lam with +kernel configuration script. Please do not bother Savio Lam with questions about this program. diff --git a/support/kconfig/lxdialog/check-lxdialog.sh b/support/kconfig/lxdialog/check-lxdialog.sh deleted file mode 100755 index 27d6c30a57..0000000000 --- a/support/kconfig/lxdialog/check-lxdialog.sh +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Check ncurses compatibility - -# What library to link -ldflags() -{ - pkg-config --libs ncursesw 2>/dev/null && exit - pkg-config --libs ncurses 2>/dev/null && exit - for ext in so a dll.a dylib ; do - for lib in ncursesw ncurses curses ; do - $cc -print-file-name=lib${lib}.${ext} | grep -q / - if [ $? -eq 0 ]; then - echo "-l${lib}" - exit - fi - done - done - exit 1 -} - -# Where is ncurses.h? -ccflags() -{ - if pkg-config --cflags ncursesw 2>/dev/null; then - echo '-DCURSES_LOC="" -DNCURSES_WIDECHAR=1' - elif pkg-config --cflags ncurses 2>/dev/null; then - echo '-DCURSES_LOC=""' - elif [ -f /usr/include/ncursesw/curses.h ]; then - echo '-I/usr/include/ncursesw -DCURSES_LOC=""' - echo ' -DNCURSES_WIDECHAR=1' - elif [ -f /usr/include/ncurses/ncurses.h ]; then - echo '-I/usr/include/ncurses -DCURSES_LOC=""' - elif [ -f /usr/include/ncurses/curses.h ]; then - echo '-I/usr/include/ncurses -DCURSES_LOC=""' - elif [ -f /usr/include/ncurses.h ]; then - echo '-DCURSES_LOC=""' - else - echo '-DCURSES_LOC=""' - fi -} - -# Temp file, try to clean up after us -tmp=$(mktemp) -trap "rm -f $tmp" 0 1 2 3 15 - -# Check if we can link to ncurses -check() { - $cc -x c - -o $tmp 2>/dev/null <<'EOF' -#include CURSES_LOC -int main() {} -EOF - if [ $? != 0 ]; then - echo " *** Unable to find the ncurses libraries or the" 1>&2 - echo " *** required header files." 1>&2 - echo " *** 'make menuconfig' requires the ncurses libraries." 1>&2 - echo " *** " 1>&2 - echo " *** Install ncurses (ncurses-devel or libncurses-dev " 1>&2 - echo " *** depending on your distribution) and try again." 1>&2 - echo " *** " 1>&2 - exit 1 - fi -} - -usage() { - printf "Usage: $0 [-check compiler options|-ccflags|-ldflags compiler options]\n" -} - -if [ $# -eq 0 ]; then - usage - exit 1 -fi - -cc="" -case "$1" in - "-check") - shift - cc="$@" - check - ;; - "-ccflags") - ccflags - ;; - "-ldflags") - shift - cc="$@" - ldflags - ;; - "*") - usage - exit 1 - ;; -esac diff --git a/support/kconfig/lxdialog/checklist.c b/support/kconfig/lxdialog/checklist.c index 8d016faa28..75493302fb 100644 --- a/support/kconfig/lxdialog/checklist.c +++ b/support/kconfig/lxdialog/checklist.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * checklist.c -- implements the checklist box * @@ -5,20 +6,6 @@ * Stuart Herbert - S.Herbert at sheffield.ac.uk: radiolist extension * Alessandro Rubini - rubini at ipvvis.unipv.it: merged the two * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap at cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "dialog.h" @@ -103,8 +90,8 @@ static void print_buttons(WINDOW * dialog, int height, int width, int selected) int x = width / 2 - 11; int y = height - 2; - print_button(dialog, gettext("Select"), y, x, selected == 0); - print_button(dialog, gettext(" Help "), y, x + 14, selected == 1); + print_button(dialog, "Select", y, x, selected == 0); + print_button(dialog, " Help ", y, x + 14, selected == 1); wmove(dialog, y, x + 1 + 14 * selected); wrefresh(dialog); @@ -132,7 +119,7 @@ int dialog_checklist(const char *title, const char *prompt, int height, } do_resize: - if (getmaxy(stdscr) < (height + CHECKLIST_HEIGTH_MIN)) + if (getmaxy(stdscr) < (height + CHECKLIST_HEIGHT_MIN)) return -ERRDISPLAYTOOSMALL; if (getmaxx(stdscr) < (width + CHECKLIST_WIDTH_MIN)) return -ERRDISPLAYTOOSMALL; @@ -201,9 +188,8 @@ do_resize: print_buttons(dialog, height, width, 0); - wnoutrefresh(dialog); - wnoutrefresh(list); - doupdate(); + wmove(list, choice, check_x + 1); + wrefresh(list); while (key != KEY_ESC) { key = wgetch(dialog); diff --git a/support/kconfig/lxdialog/dialog.h b/support/kconfig/lxdialog/dialog.h index fcffd5b41f..f6c2ebe6d1 100644 --- a/support/kconfig/lxdialog/dialog.h +++ b/support/kconfig/lxdialog/dialog.h @@ -1,21 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ /* * dialog.h -- common declarations for all dialog modules * * AUTHOR: Savio Lam (lam836 at cs.cuhk.hk) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include @@ -26,32 +13,10 @@ #include #include -#ifndef KBUILD_NO_NLS -# include -#else -# define gettext(Msgid) ((const char *) (Msgid)) -#endif - #ifdef __sun__ #define CURS_MACROS #endif -#include CURSES_LOC - -/* - * Colors in ncurses 1.9.9e do not work properly since foreground and - * background colors are OR'd rather than separately masked. This version - * of dialog was hacked to work with ncurses 1.9.9e, making it incompatible - * with standard curses. The simplest fix (to make this work with standard - * curses) uses the wbkgdset() function, not used in the original hack. - * Turn it off if we're building with 1.9.9e, since it just confuses things. - */ -#if defined(NCURSES_VERSION) && defined(_NEED_WRAP) && !defined(GCC_PRINTFLIKE) -#define OLD_NCURSES 1 -#undef wbkgdset -#define wbkgdset(w,p) /*nothing */ -#else -#define OLD_NCURSES 0 -#endif +#include #define TR(params) _tracef params @@ -126,10 +91,6 @@ struct dialog_info { struct dialog_color button_label_active; struct dialog_color button_label_inactive; struct dialog_color inputbox; - struct dialog_color inputbox_border; - struct dialog_color searchbox; - struct dialog_color searchbox_title; - struct dialog_color searchbox_border; struct dialog_color position_indicator; struct dialog_color menubox; struct dialog_color menubox_border; @@ -201,17 +162,17 @@ int on_key_esc(WINDOW *win); int on_key_resize(void); /* minimum (re)size values */ -#define CHECKLIST_HEIGTH_MIN 6 /* For dialog_checklist() */ +#define CHECKLIST_HEIGHT_MIN 6 /* For dialog_checklist() */ #define CHECKLIST_WIDTH_MIN 6 -#define INPUTBOX_HEIGTH_MIN 2 /* For dialog_inputbox() */ +#define INPUTBOX_HEIGHT_MIN 2 /* For dialog_inputbox() */ #define INPUTBOX_WIDTH_MIN 2 -#define MENUBOX_HEIGTH_MIN 15 /* For dialog_menu() */ +#define MENUBOX_HEIGHT_MIN 15 /* For dialog_menu() */ #define MENUBOX_WIDTH_MIN 65 -#define TEXTBOX_HEIGTH_MIN 8 /* For dialog_textbox() */ +#define TEXTBOX_HEIGHT_MIN 8 /* For dialog_textbox() */ #define TEXTBOX_WIDTH_MIN 8 -#define YESNO_HEIGTH_MIN 4 /* For dialog_yesno() */ +#define YESNO_HEIGHT_MIN 4 /* For dialog_yesno() */ #define YESNO_WIDTH_MIN 4 -#define WINDOW_HEIGTH_MIN 19 /* For init_dialog() */ +#define WINDOW_HEIGHT_MIN 19 /* For init_dialog() */ #define WINDOW_WIDTH_MIN 80 int init_dialog(const char *backtitle); @@ -231,27 +192,12 @@ int first_alpha(const char *string, const char *exempt); int dialog_yesno(const char *title, const char *prompt, int height, int width); int dialog_msgbox(const char *title, const char *prompt, int height, int width, int pause); - - -typedef void (*update_text_fn)(char *buf, size_t start, size_t end, void - *_data); -int dialog_textbox(const char *title, char *tbuf, int initial_height, - int initial_width, int *keys, int *_vscroll, int *_hscroll, - update_text_fn update_text, void *data); +int dialog_textbox(const char *title, const char *tbuf, int initial_height, + int initial_width, int *_vscroll, int *_hscroll, + int (*extra_key_cb)(int, size_t, size_t, void *), void *data); int dialog_menu(const char *title, const char *prompt, const void *selected, int *s_scroll); int dialog_checklist(const char *title, const char *prompt, int height, int width, int list_height); int dialog_inputbox(const char *title, const char *prompt, int height, int width, const char *init); - -/* - * This is the base for fictitious keys, which activate - * the buttons. - * - * Mouse-generated keys are the following: - * -- the first 32 are used as numbers, in addition to '0'-'9' - * -- the lowercase are used to signal mouse-enter events (M_EVENT + 'o') - * -- uppercase chars are used to invoke the button (M_EVENT + 'O') - */ -#define M_EVENT (KEY_MAX+1) diff --git a/support/kconfig/lxdialog/inputbox.c b/support/kconfig/lxdialog/inputbox.c index d58de1dc53..3c6e24b20f 100644 --- a/support/kconfig/lxdialog/inputbox.c +++ b/support/kconfig/lxdialog/inputbox.c @@ -1,22 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * inputbox.c -- implements the input box * * ORIGINAL AUTHOR: Savio Lam (lam836 at cs.cuhk.hk) * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap at cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "dialog.h" @@ -31,8 +18,8 @@ static void print_buttons(WINDOW * dialog, int height, int width, int selected) int x = width / 2 - 11; int y = height - 2; - print_button(dialog, gettext(" Ok "), y, x, selected == 0); - print_button(dialog, gettext(" Help "), y, x + 14, selected == 1); + print_button(dialog, " Ok ", y, x, selected == 0); + print_button(dialog, " Help ", y, x + 14, selected == 1); wmove(dialog, y, x + 1 + 14 * selected); wrefresh(dialog); @@ -56,7 +43,7 @@ int dialog_inputbox(const char *title, const char *prompt, int height, int width strcpy(instr, init); do_resize: - if (getmaxy(stdscr) <= (height - INPUTBOX_HEIGTH_MIN)) + if (getmaxy(stdscr) <= (height - INPUTBOX_HEIGHT_MIN)) return -ERRDISPLAYTOOSMALL; if (getmaxx(stdscr) <= (width - INPUTBOX_WIDTH_MIN)) return -ERRDISPLAYTOOSMALL; @@ -126,7 +113,8 @@ do_resize: case KEY_DOWN: break; case KEY_BACKSPACE: - case 127: + case 8: /* ^H */ + case 127: /* ^? */ if (pos) { wattrset(dialog, dlg.inputbox.atr); if (input_x == 0) { diff --git a/support/kconfig/lxdialog/menubox.c b/support/kconfig/lxdialog/menubox.c index 185524901d..d4c19b7bee 100644 --- a/support/kconfig/lxdialog/menubox.c +++ b/support/kconfig/lxdialog/menubox.c @@ -1,22 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * menubox.c -- implements the menu box * * ORIGINAL AUTHOR: Savio Lam (lam836 at cs.cuhk.hk) * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcapw at cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* @@ -76,15 +63,7 @@ static void do_print_item(WINDOW * win, const char *item, int line_y, /* Clear 'residue' of last item */ wattrset(win, dlg.menubox.atr); wmove(win, line_y, 0); -#if OLD_NCURSES - { - int i; - for (i = 0; i < menu_width; i++) - waddch(win, ' '); - } -#else wclrtoeol(win); -#endif wattrset(win, selected ? dlg.item_selected.atr : dlg.item.atr); mvwaddstr(win, line_y, item_x, menu_item); if (hotkey) { @@ -157,11 +136,11 @@ static void print_buttons(WINDOW * win, int height, int width, int selected) int x = width / 2 - 28; int y = height - 2; - print_button(win, gettext("Select"), y, x, selected == 0); - print_button(win, gettext(" Exit "), y, x + 12, selected == 1); - print_button(win, gettext(" Help "), y, x + 24, selected == 2); - print_button(win, gettext(" Save "), y, x + 36, selected == 3); - print_button(win, gettext(" Load "), y, x + 48, selected == 4); + print_button(win, "Select", y, x, selected == 0); + print_button(win, " Exit ", y, x + 12, selected == 1); + print_button(win, " Help ", y, x + 24, selected == 2); + print_button(win, " Save ", y, x + 36, selected == 3); + print_button(win, " Load ", y, x + 48, selected == 4); wmove(win, y, x + 1 + 12 * selected); wrefresh(win); @@ -193,7 +172,7 @@ int dialog_menu(const char *title, const char *prompt, do_resize: height = getmaxy(stdscr); width = getmaxx(stdscr); - if (height < MENUBOX_HEIGTH_MIN || width < MENUBOX_WIDTH_MIN) + if (height < MENUBOX_HEIGHT_MIN || width < MENUBOX_WIDTH_MIN) return -ERRDISPLAYTOOSMALL; height -= 4; diff --git a/support/kconfig/lxdialog/textbox.c b/support/kconfig/lxdialog/textbox.c index 1773319b95..0abaf63597 100644 --- a/support/kconfig/lxdialog/textbox.c +++ b/support/kconfig/lxdialog/textbox.c @@ -1,61 +1,156 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * textbox.c -- implements the text box * * ORIGINAL AUTHOR: Savio Lam (lam836 at cs.cuhk.hk) * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap at cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "dialog.h" -static void back_lines(int n); -static void print_page(WINDOW *win, int height, int width, update_text_fn - update_text, void *data); -static void print_line(WINDOW *win, int row, int width); -static char *get_line(void); -static void print_position(WINDOW * win); - static int hscroll; static int begin_reached, end_reached, page_length; -static char *buf; -static char *page; +static const char *buf, *page; +static size_t start, end; + +/* + * Go back 'n' lines in text. Called by dialog_textbox(). + * 'page' will be updated to point to the desired line in 'buf'. + */ +static void back_lines(int n) +{ + int i; + + begin_reached = 0; + /* Go back 'n' lines */ + for (i = 0; i < n; i++) { + if (*page == '\0') { + if (end_reached) { + end_reached = 0; + continue; + } + } + if (page == buf) { + begin_reached = 1; + return; + } + page--; + do { + if (page == buf) { + begin_reached = 1; + return; + } + page--; + } while (*page != '\n'); + page++; + } +} + +/* + * Return current line of text. Called by dialog_textbox() and print_line(). + * 'page' should point to start of current line before calling, and will be + * updated to point to start of next line. + */ +static char *get_line(void) +{ + int i = 0; + static char line[MAX_LEN + 1]; + + end_reached = 0; + while (*page != '\n') { + if (*page == '\0') { + end_reached = 1; + break; + } else if (i < MAX_LEN) + line[i++] = *(page++); + else { + /* Truncate lines longer than MAX_LEN characters */ + if (i == MAX_LEN) + line[i++] = '\0'; + page++; + } + } + if (i <= MAX_LEN) + line[i] = '\0'; + if (!end_reached) + page++; /* move past '\n' */ + + return line; +} + +/* + * Print a new line of text. + */ +static void print_line(WINDOW *win, int row, int width) +{ + char *line; + + line = get_line(); + line += MIN(strlen(line), hscroll); /* Scroll horizontally */ + wmove(win, row, 0); /* move cursor to correct line */ + waddch(win, ' '); + waddnstr(win, line, MIN(strlen(line), width - 2)); + + /* Clear 'residue' of previous line */ + wclrtoeol(win); +} + +/* + * Print a new page of text. + */ +static void print_page(WINDOW *win, int height, int width) +{ + int i, passed_end = 0; + + page_length = 0; + for (i = 0; i < height; i++) { + print_line(win, i, width); + if (!passed_end) + page_length++; + if (end_reached && !passed_end) + passed_end = 1; + } + wnoutrefresh(win); +} + +/* + * Print current position + */ +static void print_position(WINDOW *win) +{ + int percent; + + wattrset(win, dlg.position_indicator.atr); + wbkgdset(win, dlg.position_indicator.atr & A_COLOR); + percent = (page - buf) * 100 / strlen(buf); + wmove(win, getmaxy(win) - 3, getmaxx(win) - 9); + wprintw(win, "(%3d%%)", percent); +} /* * refresh window content */ static void refresh_text_box(WINDOW *dialog, WINDOW *box, int boxh, int boxw, - int cur_y, int cur_x, update_text_fn update_text, - void *data) + int cur_y, int cur_x) { - print_page(box, boxh, boxw, update_text, data); + start = page - buf; + + print_page(box, boxh, boxw); print_position(dialog); wmove(dialog, cur_y, cur_x); /* Restore cursor position */ wrefresh(dialog); -} + end = page - buf; +} /* * Display text from a file in a dialog box. * * keys is a null-terminated array - * update_text() may not add or remove any '\n' or '\0' in tbuf */ -int dialog_textbox(const char *title, char *tbuf, int initial_height, - int initial_width, int *keys, int *_vscroll, int *_hscroll, - update_text_fn update_text, void *data) +int dialog_textbox(const char *title, const char *tbuf, int initial_height, + int initial_width, int *_vscroll, int *_hscroll, + int (*extra_key_cb)(int, size_t, size_t, void *), void *data) { int i, x, y, cur_x, cur_y, key = 0; int height, width, boxh, boxw; @@ -80,7 +175,7 @@ int dialog_textbox(const char *title, char *tbuf, int initial_height, do_resize: getmaxyx(stdscr, height, width); - if (height < TEXTBOX_HEIGTH_MIN || width < TEXTBOX_WIDTH_MIN) + if (height < TEXTBOX_HEIGHT_MIN || width < TEXTBOX_WIDTH_MIN) return -ERRDISPLAYTOOSMALL; if (initial_height != 0) height = initial_height; @@ -129,14 +224,13 @@ do_resize: print_title(dialog, title, width); - print_button(dialog, gettext(" Exit "), height - 2, width / 2 - 4, TRUE); + print_button(dialog, " Exit ", height - 2, width / 2 - 4, TRUE); wnoutrefresh(dialog); getyx(dialog, cur_y, cur_x); /* Save cursor position */ /* Print first page of text */ attr_clear(box, boxh, boxw, dlg.dialog.atr); - refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x, update_text, - data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); while (!done) { key = wgetch(dialog); @@ -155,8 +249,7 @@ do_resize: begin_reached = 1; page = buf; refresh_text_box(dialog, box, boxh, boxw, - cur_y, cur_x, update_text, - data); + cur_y, cur_x); } break; case 'G': /* Last page */ @@ -166,8 +259,7 @@ do_resize: /* point to last char in buf */ page = buf + strlen(buf); back_lines(boxh); - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case 'K': /* Previous line */ case 'k': @@ -176,8 +268,7 @@ do_resize: break; back_lines(page_length + 1); - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case 'B': /* Previous page */ case 'b': @@ -186,8 +277,7 @@ do_resize: if (begin_reached) break; back_lines(page_length + boxh); - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case 'J': /* Next line */ case 'j': @@ -196,8 +286,7 @@ do_resize: break; back_lines(page_length - 1); - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case KEY_NPAGE: /* Next page */ case ' ': @@ -206,8 +295,7 @@ do_resize: break; begin_reached = 0; - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case '0': /* Beginning of line */ case 'H': /* Scroll left */ @@ -222,8 +310,7 @@ do_resize: hscroll--; /* Reprint current page to scroll horizontally */ back_lines(page_length); - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case 'L': /* Scroll right */ case 'l': @@ -233,8 +320,7 @@ do_resize: hscroll++; /* Reprint current page to scroll horizontally */ back_lines(page_length); - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case KEY_ESC: if (on_key_esc(dialog) == KEY_ESC) @@ -247,11 +333,9 @@ do_resize: on_key_resize(); goto do_resize; default: - for (i = 0; keys[i]; i++) { - if (key == keys[i]) { - done = true; - break; - } + if (extra_key_cb && extra_key_cb(key, start, end, data)) { + done = true; + break; } } } @@ -272,137 +356,3 @@ do_resize: *_hscroll = hscroll; return key; } - -/* - * Go back 'n' lines in text. Called by dialog_textbox(). - * 'page' will be updated to point to the desired line in 'buf'. - */ -static void back_lines(int n) -{ - int i; - - begin_reached = 0; - /* Go back 'n' lines */ - for (i = 0; i < n; i++) { - if (*page == '\0') { - if (end_reached) { - end_reached = 0; - continue; - } - } - if (page == buf) { - begin_reached = 1; - return; - } - page--; - do { - if (page == buf) { - begin_reached = 1; - return; - } - page--; - } while (*page != '\n'); - page++; - } -} - -/* - * Print a new page of text. - */ -static void print_page(WINDOW *win, int height, int width, update_text_fn - update_text, void *data) -{ - int i, passed_end = 0; - - if (update_text) { - char *end; - - for (i = 0; i < height; i++) - get_line(); - end = page; - back_lines(height); - update_text(buf, page - buf, end - buf, data); - } - - page_length = 0; - for (i = 0; i < height; i++) { - print_line(win, i, width); - if (!passed_end) - page_length++; - if (end_reached && !passed_end) - passed_end = 1; - } - wnoutrefresh(win); -} - -/* - * Print a new line of text. - */ -static void print_line(WINDOW * win, int row, int width) -{ - char *line; - - line = get_line(); - line += MIN(strlen(line), hscroll); /* Scroll horizontally */ - wmove(win, row, 0); /* move cursor to correct line */ - waddch(win, ' '); - waddnstr(win, line, MIN(strlen(line), width - 2)); - - /* Clear 'residue' of previous line */ -#if OLD_NCURSES - { - int x = getcurx(win); - int i; - for (i = 0; i < width - x; i++) - waddch(win, ' '); - } -#else - wclrtoeol(win); -#endif -} - -/* - * Return current line of text. Called by dialog_textbox() and print_line(). - * 'page' should point to start of current line before calling, and will be - * updated to point to start of next line. - */ -static char *get_line(void) -{ - int i = 0; - static char line[MAX_LEN + 1]; - - end_reached = 0; - while (*page != '\n') { - if (*page == '\0') { - end_reached = 1; - break; - } else if (i < MAX_LEN) - line[i++] = *(page++); - else { - /* Truncate lines longer than MAX_LEN characters */ - if (i == MAX_LEN) - line[i++] = '\0'; - page++; - } - } - if (i <= MAX_LEN) - line[i] = '\0'; - if (!end_reached) - page++; /* move past '\n' */ - - return line; -} - -/* - * Print current position - */ -static void print_position(WINDOW * win) -{ - int percent; - - wattrset(win, dlg.position_indicator.atr); - wbkgdset(win, dlg.position_indicator.atr & A_COLOR); - percent = (page - buf) * 100 / strlen(buf); - wmove(win, getmaxy(win) - 3, getmaxx(win) - 9); - wprintw(win, "(%3d%%)", percent); -} diff --git a/support/kconfig/lxdialog/util.c b/support/kconfig/lxdialog/util.c index f7abdeb92a..f18e2a89f6 100644 --- a/support/kconfig/lxdialog/util.c +++ b/support/kconfig/lxdialog/util.c @@ -1,22 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * util.c * * ORIGINAL AUTHOR: Savio Lam (lam836 at cs.cuhk.hk) * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap at cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include @@ -42,10 +29,6 @@ static void set_mono_theme(void) dlg.button_label_active.atr = A_REVERSE; dlg.button_label_inactive.atr = A_NORMAL; dlg.inputbox.atr = A_NORMAL; - dlg.inputbox_border.atr = A_NORMAL; - dlg.searchbox.atr = A_NORMAL; - dlg.searchbox_title.atr = A_BOLD; - dlg.searchbox_border.atr = A_NORMAL; dlg.position_indicator.atr = A_BOLD; dlg.menubox.atr = A_NORMAL; dlg.menubox_border.atr = A_NORMAL; @@ -82,10 +65,6 @@ static void set_classic_theme(void) DLG_COLOR(button_label_active, COLOR_YELLOW, COLOR_BLUE, true); DLG_COLOR(button_label_inactive, COLOR_BLACK, COLOR_WHITE, true); DLG_COLOR(inputbox, COLOR_BLACK, COLOR_WHITE, false); - DLG_COLOR(inputbox_border, COLOR_BLACK, COLOR_WHITE, false); - DLG_COLOR(searchbox, COLOR_BLACK, COLOR_WHITE, false); - DLG_COLOR(searchbox_title, COLOR_YELLOW, COLOR_WHITE, true); - DLG_COLOR(searchbox_border, COLOR_WHITE, COLOR_WHITE, true); DLG_COLOR(position_indicator, COLOR_YELLOW, COLOR_WHITE, true); DLG_COLOR(menubox, COLOR_BLACK, COLOR_WHITE, false); DLG_COLOR(menubox_border, COLOR_WHITE, COLOR_WHITE, true); @@ -114,14 +93,9 @@ static void set_blackbg_theme(void) DLG_COLOR(button_key_active, COLOR_YELLOW, COLOR_RED, true); DLG_COLOR(button_key_inactive, COLOR_RED, COLOR_BLACK, false); DLG_COLOR(button_label_active, COLOR_WHITE, COLOR_RED, false); - DLG_COLOR(button_label_inactive, COLOR_BLACK, COLOR_BLACK, true); + DLG_COLOR(button_label_inactive, COLOR_WHITE, COLOR_BLACK, false); DLG_COLOR(inputbox, COLOR_YELLOW, COLOR_BLACK, false); - DLG_COLOR(inputbox_border, COLOR_YELLOW, COLOR_BLACK, false); - - DLG_COLOR(searchbox, COLOR_YELLOW, COLOR_BLACK, false); - DLG_COLOR(searchbox_title, COLOR_YELLOW, COLOR_BLACK, true); - DLG_COLOR(searchbox_border, COLOR_BLACK, COLOR_BLACK, true); DLG_COLOR(position_indicator, COLOR_RED, COLOR_BLACK, false); @@ -149,7 +123,6 @@ static void set_bluetitle_theme(void) DLG_COLOR(title, COLOR_BLUE, COLOR_WHITE, true); DLG_COLOR(button_key_active, COLOR_YELLOW, COLOR_BLUE, true); DLG_COLOR(button_label_active, COLOR_WHITE, COLOR_BLUE, true); - DLG_COLOR(searchbox_title, COLOR_BLUE, COLOR_WHITE, true); DLG_COLOR(position_indicator, COLOR_BLUE, COLOR_WHITE, true); DLG_COLOR(tag, COLOR_BLUE, COLOR_WHITE, true); DLG_COLOR(tag_key, COLOR_BLUE, COLOR_WHITE, true); @@ -202,10 +175,6 @@ static void init_dialog_colors(void) init_one_color(&dlg.button_label_active); init_one_color(&dlg.button_label_inactive); init_one_color(&dlg.inputbox); - init_one_color(&dlg.inputbox_border); - init_one_color(&dlg.searchbox); - init_one_color(&dlg.searchbox_title); - init_one_color(&dlg.searchbox_border); init_one_color(&dlg.position_indicator); init_one_color(&dlg.menubox); init_one_color(&dlg.menubox_border); @@ -322,7 +291,7 @@ int init_dialog(const char *backtitle) getyx(stdscr, saved_y, saved_x); getmaxyx(stdscr, height, width); - if (height < WINDOW_HEIGTH_MIN || width < WINDOW_WIDTH_MIN) { + if (height < WINDOW_HEIGHT_MIN || width < WINDOW_WIDTH_MIN) { endwin(); return -ERRDISPLAYTOOSMALL; } @@ -376,7 +345,7 @@ void print_title(WINDOW *dialog, const char *title, int width) /* * Print a string of text in a window, automatically wrap around to the * next line if the string is too long to fit on one line. Newline - * characters '\n' are propperly processed. We start on a new line + * characters '\n' are properly processed. We start on a new line * if there is no room for at least 4 nonblanks following a double-space. */ void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x) @@ -554,7 +523,7 @@ int first_alpha(const char *string, const char *exempt) * lxdialog suggest which is correctly translated to two * times esc. But then we need to ignore the second esc to avoid stepping * out one menu too much. Filter away all escaped key sequences since - * keypad(FALSE) turn off ncurses support for escape sequences - and thats + * keypad(FALSE) turn off ncurses support for escape sequences - and that's * needed to make notimeout() do as expected. */ int on_key_esc(WINDOW *win) diff --git a/support/kconfig/lxdialog/yesno.c b/support/kconfig/lxdialog/yesno.c index 676fb2f824..b57d25e154 100644 --- a/support/kconfig/lxdialog/yesno.c +++ b/support/kconfig/lxdialog/yesno.c @@ -1,22 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * yesno.c -- implements the yes/no box * * ORIGINAL AUTHOR: Savio Lam (lam836 at cs.cuhk.hk) * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap at cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "dialog.h" @@ -29,8 +16,8 @@ static void print_buttons(WINDOW * dialog, int height, int width, int selected) int x = width / 2 - 10; int y = height - 2; - print_button(dialog, gettext(" Yes "), y, x, selected == 0); - print_button(dialog, gettext(" No "), y, x + 13, selected == 1); + print_button(dialog, " Yes ", y, x, selected == 0); + print_button(dialog, " No ", y, x + 13, selected == 1); wmove(dialog, y, x + 1 + 13 * selected); wrefresh(dialog); @@ -45,7 +32,7 @@ int dialog_yesno(const char *title, const char *prompt, int height, int width) WINDOW *dialog; do_resize: - if (getmaxy(stdscr) < (height + YESNO_HEIGTH_MIN)) + if (getmaxy(stdscr) < (height + YESNO_HEIGHT_MIN)) return -ERRDISPLAYTOOSMALL; if (getmaxx(stdscr) < (width + YESNO_WIDTH_MIN)) return -ERRDISPLAYTOOSMALL; diff --git a/support/kconfig/mconf-cfg.sh b/support/kconfig/mconf-cfg.sh new file mode 100755 index 0000000000..1e61f50a59 --- /dev/null +++ b/support/kconfig/mconf-cfg.sh @@ -0,0 +1,55 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +cflags=$1 +libs=$2 + +PKG="ncursesw" +PKG2="ncurses" + +if [ -n "$(command -v ${HOSTPKG_CONFIG})" ]; then + if ${HOSTPKG_CONFIG} --exists $PKG; then + ${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG} > ${libs} + exit 0 + fi + + if ${HOSTPKG_CONFIG} --exists ${PKG2}; then + ${HOSTPKG_CONFIG} --cflags ${PKG2} > ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG2} > ${libs} + exit 0 + fi +fi + +# Check the default paths in case pkg-config is not installed. +# (Even if it is installed, some distributions such as openSUSE cannot +# find ncurses by pkg-config.) +if [ -f /usr/include/ncursesw/ncurses.h ]; then + echo -D_GNU_SOURCE -I/usr/include/ncursesw > ${cflags} + echo -lncursesw > ${libs} + exit 0 +fi + +if [ -f /usr/include/ncurses/ncurses.h ]; then + echo -D_GNU_SOURCE -I/usr/include/ncurses > ${cflags} + echo -lncurses > ${libs} + exit 0 +fi + +# As a final fallback before giving up, check if $HOSTCC knows of a default +# ncurses installation (e.g. from a vendor-specific sysroot). +if echo '#include ' | ${HOSTCC} -E - >/dev/null 2>&1; then + echo -D_GNU_SOURCE > ${cflags} + echo -lncurses > ${libs} + exit 0 +fi + +echo >&2 "*" +echo >&2 "* Unable to find the ncurses package." +echo >&2 "* Install ncurses (ncurses-devel or libncurses-dev" +echo >&2 "* depending on your distribution)." +echo >&2 "*" +echo >&2 "* You may also need to install ${HOSTPKG_CONFIG} to find the" +echo >&2 "* ncurses installed in a non-default location." +echo >&2 "*" +exit 1 diff --git a/support/kconfig/mconf.c b/support/kconfig/mconf.c index 279f4552a1..420e173e4f 100644 --- a/support/kconfig/mconf.c +++ b/support/kconfig/mconf.c @@ -1,6 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. * * Introduced single menu mode (show all sub-menus in one large tree). * 2002-11-06 Petr Baudis @@ -15,14 +15,16 @@ #include #include #include +#include #include #include -#include +#include "list.h" #include "lkc.h" #include "lxdialog/dialog.h" +#include "mnconf-common.h" -static const char mconf_readme[] = N_( +static const char mconf_readme[] = "Overview\n" "--------\n" "This interface lets you select features and parameters for the build.\n" @@ -159,6 +161,12 @@ static const char mconf_readme[] = N_( "(especially with a larger number of unrolled categories) than the\n" "default mode.\n" "\n" + +"Search\n" +"-------\n" +"Pressing the forward-slash (/) anywhere brings up a search dialog box.\n" +"\n" + "Different color themes available\n" "--------------------------------\n" "It is possible to select different color themes using the variable\n" @@ -171,37 +179,37 @@ static const char mconf_readme[] = N_( " blackbg => selects a color scheme with black background\n" " classic => theme with blue background. The classic look\n" " bluetitle => an LCD friendly version of classic. (default)\n" -"\n"), -menu_instructions[] = N_( +"\n", +menu_instructions[] = "Arrow keys navigate the menu. " " selects submenus ---> (or empty submenus ----). " "Highlighted letters are hotkeys. " - "Pressing selects a feature, while excludes a feature. " + "Pressing selects a feature, while excludes a features. " "Press to exit, for Help, for Search. " - "Legend: [*] feature is selected [ ] feature is excluded"), -radiolist_instructions[] = N_( + "Legend: [*] feature is selected [ ] feature is excluded", +radiolist_instructions[] = "Use the arrow keys to navigate this window or " "press the hotkey of the item you wish to select " "followed by the . " - "Press for additional information about this option."), -inputbox_instructions_int[] = N_( + "Press for additional information about this option.", +inputbox_instructions_int[] = "Please enter a decimal value. " "Fractions will not be accepted. " - "Use the key to move from the input field to the buttons below it."), -inputbox_instructions_hex[] = N_( + "Use the key to move from the input field to the buttons below it.", +inputbox_instructions_hex[] = "Please enter a hexadecimal value. " - "Use the key to move from the input field to the buttons below it."), -inputbox_instructions_string[] = N_( + "Use the key to move from the input field to the buttons below it.", +inputbox_instructions_string[] = "Please enter a string value. " - "Use the key to move from the input field to the buttons below it."), -setmod_text[] = N_( + "Use the key to move from the input field to the buttons below it.", +setmod_text[] = "This feature depends on another which has been configured as a module.\n" - "As a result, this feature will be built as a module."), -load_config_text[] = N_( + "As a result, this feature will be built as a module.", +load_config_text[] = "Enter the name of the configuration file you wish to load. " "Accept the name shown to restore the configuration you " - "last retrieved. Leave blank to abort."), -load_config_help[] = N_( + "last retrieved. Leave blank to abort.", +load_config_help[] = "\n" "For various reasons, one may wish to keep several different\n" "configurations available on a single machine.\n" @@ -211,11 +219,11 @@ load_config_help[] = N_( "configuration.\n" "\n" "If you are uncertain, then you have probably never used alternate\n" - "configuration files. You should therefore leave this blank to abort.\n"), -save_config_text[] = N_( + "configuration files. You should therefore leave this blank to abort.\n", +save_config_text[] = "Enter a filename to which this configuration should be saved " - "as an alternate. Leave blank to abort."), -save_config_help[] = N_( + "as an alternate. Leave blank to abort.", +save_config_help[] = "\n" "For various reasons, one may wish to keep different configurations\n" "available on a single machine.\n" @@ -225,8 +233,8 @@ save_config_help[] = N_( "configuration options you have selected at that time.\n" "\n" "If you are uncertain what all this means then you should probably\n" - "leave this blank.\n"), -search_help[] = N_( + "leave this blank.\n", +search_help[] = "\n" "Search for symbols and display their relations.\n" "Regular expressions are allowed.\n" @@ -241,7 +249,7 @@ search_help[] = N_( " -> PCI support (PCI [=y])\n" "(1) -> PCI access mode ( [=y])\n" " Defined at drivers/pci/Kconfig:47\n" - " Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\n" + " Depends on: X86_LOCAL_APIC && X86_IO_APIC\n" " Selects: LIBCRC32\n" " Selected by: BAR [=n]\n" "-----------------------------------------------------------------\n" @@ -271,7 +279,7 @@ search_help[] = N_( "Examples: USB => find all symbols containing USB\n" " ^USB => find all symbols starting with USB\n" " USB$ => find all symbols ending with USB\n" - "\n"); + "\n"; static int indent; static struct menu *current_menu; @@ -282,32 +290,17 @@ static int save_and_exit; static int silent; static void conf(struct menu *menu, struct menu *active_menu); -static void conf_choice(struct menu *menu); -static void conf_string(struct menu *menu); -static void conf_load(void); -static void conf_save(void); -static int show_textbox_ext(const char *title, char *text, int r, int c, - int *keys, int *vscroll, int *hscroll, - update_text_fn update_text, void *data); -static void show_textbox(const char *title, const char *text, int r, int c); -static void show_helptext(const char *title, const char *text); -static void show_help(struct menu *menu); static char filename[PATH_MAX+1]; static void set_config_filename(const char *config_filename) { static char menu_backtitle[PATH_MAX+128]; - int size; - size = snprintf(menu_backtitle, sizeof(menu_backtitle), - "%s - %s", config_filename, rootmenu.prompt->text); - if (size >= sizeof(menu_backtitle)) - menu_backtitle[sizeof(menu_backtitle)-1] = '\0'; + snprintf(menu_backtitle, sizeof(menu_backtitle), "%s - %s", + config_filename, rootmenu.prompt->text); set_dialog_backtitle(menu_backtitle); - size = snprintf(filename, sizeof(filename), "%s", config_filename); - if (size >= sizeof(filename)) - filename[sizeof(filename)-1] = '\0'; + snprintf(filename, sizeof(filename), "%s", config_filename); } struct subtitle_part { @@ -355,37 +348,35 @@ static void reset_subtitle(void) set_dialog_subtitles(subtitles); } -struct search_data { - struct list_head *head; - struct menu **targets; - int *keys; -}; +static int show_textbox_ext(const char *title, const char *text, int r, int c, + int *vscroll, int *hscroll, + int (*extra_key_cb)(int, size_t, size_t, void *), + void *data) +{ + dialog_clear(); + return dialog_textbox(title, text, r, c, vscroll, hscroll, + extra_key_cb, data); +} -static void update_text(char *buf, size_t start, size_t end, void *_data) +static void show_textbox(const char *title, const char *text, int r, int c) { - struct search_data *data = _data; - struct jump_key *pos; - int k = 0; + show_textbox_ext(title, text, r, c, NULL, NULL, NULL, NULL); +} - list_for_each_entry(pos, data->head, entries) { - if (pos->offset >= start && pos->offset < end) { - char header[4]; +static void show_helptext(const char *title, const char *text) +{ + show_textbox(title, text, 0, 0); +} - if (k < JUMP_NB) { - int key = '0' + (pos->index % JUMP_NB) + 1; +static void show_help(struct menu *menu) +{ + struct gstr help = str_new(); - sprintf(header, "(%c)", key); - data->keys[k] = key; - data->targets[k] = pos->target; - k++; - } else { - sprintf(header, " "); - } + help.max_width = getmaxx(stdscr) - 10; + menu_get_ext_help(menu, &help); - memcpy(buf + pos->offset, header, sizeof(header) - 1); - } - } - data->keys[k] = 0; + show_helptext(menu_get_prompt(menu), str_get(&help)); + str_free(&help); } static void search_conf(void) @@ -400,19 +391,19 @@ static void search_conf(void) struct subtitle_part stpart; title = str_new(); - str_printf( &title, _("Enter (sub)string or regexp to search for " - "(with or without \"%s\")"), CONFIG_); + str_printf( &title, "Enter (sub)string or regexp to search for " + "(with or without \"%s\")", CONFIG_); again: dialog_clear(); - dres = dialog_inputbox(_("Search Configuration Parameter"), + dres = dialog_inputbox("Search Configuration Parameter", str_get(&title), 10, 75, ""); switch (dres) { case 0: break; case 1: - show_helptext(_("Search Configuration"), search_help); + show_helptext("Search Configuration", search_help); goto again; default: str_free(&title); @@ -432,27 +423,23 @@ again: sym_arr = sym_re_search(dialog_input); do { LIST_HEAD(head); - struct menu *targets[JUMP_NB]; - int keys[JUMP_NB + 1], i; struct search_data data = { .head = &head, - .targets = targets, - .keys = keys, }; struct jump_key *pos, *tmp; + jump_key_char = 0; res = get_relations_str(sym_arr, &head); set_subtitle(); - dres = show_textbox_ext(_("Search Results"), (char *) - str_get(&res), 0, 0, keys, &vscroll, - &hscroll, &update_text, (void *) - &data); + dres = show_textbox_ext("Search Results", str_get(&res), 0, 0, + &vscroll, &hscroll, + handle_search_keys, &data); again = false; - for (i = 0; i < JUMP_NB && keys[i]; i++) - if (dres == keys[i]) { - conf(targets[i]->parent, targets[i]); - again = true; - } + if (dres >= '1' && dres <= '9') { + assert(data.target != NULL); + conf(data.target->parent, data.target); + again = true; + } str_free(&res); list_for_each_entry_safe(pos, tmp, &head, entries) free(pos); @@ -491,7 +478,6 @@ static void build_conf(struct menu *menu) switch (prop->type) { case P_MENU: child_count++; - prompt = _(prompt); if (single_menu_mode) { item_make("%s%*c%s", menu->data ? "-->" : "++>", @@ -508,7 +494,7 @@ static void build_conf(struct menu *menu) case P_COMMENT: if (prompt) { child_count++; - item_make(" %*c*** %s ***", indent + 1, ' ', _(prompt)); + item_make(" %*c*** %s ***", indent + 1, ' ', prompt); item_set_tag(':'); item_set_data(menu); } @@ -516,7 +502,7 @@ static void build_conf(struct menu *menu) default: if (prompt) { child_count++; - item_make("---%*c%s", indent + 1, ' ', _(prompt)); + item_make("---%*c%s", indent + 1, ' ', prompt); item_set_tag(':'); item_set_data(menu); } @@ -538,7 +524,7 @@ static void build_conf(struct menu *menu) } val = sym_get_tristate_value(sym); - if (sym_is_changable(sym)) { + if (sym_is_changeable(sym)) { switch (type) { case S_BOOLEAN: item_make("[%c]", val == no ? ' ' : '*'); @@ -560,10 +546,10 @@ static void build_conf(struct menu *menu) item_set_data(menu); } - item_add_str("%*c%s", indent + 1, ' ', _(menu_get_prompt(menu))); + item_add_str("%*c%s", indent + 1, ' ', menu_get_prompt(menu)); if (val == yes) { if (def_menu) { - item_add_str(" (%s)", _(menu_get_prompt(def_menu))); + item_add_str(" (%s)", menu_get_prompt(def_menu)); item_add_str(" --->"); if (def_menu->list) { indent += 2; @@ -575,7 +561,7 @@ static void build_conf(struct menu *menu) } } else { if (menu == current_menu) { - item_make("---%*c%s", indent + 1, ' ', _(menu_get_prompt(menu))); + item_make("---%*c%s", indent + 1, ' ', menu_get_prompt(menu)); item_set_tag(':'); item_set_data(menu); goto conf_childs; @@ -589,7 +575,7 @@ static void build_conf(struct menu *menu) } else { switch (type) { case S_BOOLEAN: - if (sym_is_changable(sym)) + if (sym_is_changeable(sym)) item_make("[%c]", val == no ? ' ' : '*'); else item_make("-%c-", val == no ? ' ' : '*'); @@ -602,7 +588,7 @@ static void build_conf(struct menu *menu) case mod: ch = 'M'; break; default: ch = ' '; break; } - if (sym_is_changable(sym)) { + if (sym_is_changeable(sym)) { if (sym->rev_dep.tri == mod) item_make("{%c}", ch); else @@ -618,17 +604,17 @@ static void build_conf(struct menu *menu) tmp = indent - tmp + 4; if (tmp < 0) tmp = 0; - item_add_str("%*c%s%s", tmp, ' ', _(menu_get_prompt(menu)), - (sym_has_value(sym) || !sym_is_changable(sym)) ? - "" : _(" (NEW)")); + item_add_str("%*c%s%s", tmp, ' ', menu_get_prompt(menu), + (sym_has_value(sym) || !sym_is_changeable(sym)) ? + "" : " (NEW)"); item_set_tag('s'); item_set_data(menu); goto conf_childs; } } - item_add_str("%*c%s%s", indent + 1, ' ', _(menu_get_prompt(menu)), - (sym_has_value(sym) || !sym_is_changable(sym)) ? - "" : _(" (NEW)")); + item_add_str("%*c%s%s", indent + 1, ' ', menu_get_prompt(menu), + (sym_has_value(sym) || !sym_is_changeable(sym)) ? + "" : " (NEW)"); if (menu->prompt->type == P_MENU) { item_add_str(" %s", menu_is_empty(menu) ? "----" : "--->"); return; @@ -642,164 +628,9 @@ conf_childs: indent -= doint; } -static void conf(struct menu *menu, struct menu *active_menu) -{ - struct menu *submenu; - const char *prompt = menu_get_prompt(menu); - struct subtitle_part stpart; - struct symbol *sym; - int res; - int s_scroll = 0; - - if (menu != &rootmenu) - stpart.text = menu_get_prompt(menu); - else - stpart.text = NULL; - list_add_tail(&stpart.entries, &trail); - - while (1) { - item_reset(); - current_menu = menu; - build_conf(menu); - if (!child_count) - break; - set_subtitle(); - dialog_clear(); - res = dialog_menu(prompt ? _(prompt) : _("Main Menu"), - _(menu_instructions), - active_menu, &s_scroll); - if (res == 1 || res == KEY_ESC || res == -ERRDISPLAYTOOSMALL) - break; - if (item_count() != 0) { - if (!item_activate_selected()) - continue; - if (!item_tag()) - continue; - } - submenu = item_data(); - active_menu = item_data(); - if (submenu) - sym = submenu->sym; - else - sym = NULL; - - switch (res) { - case 0: - switch (item_tag()) { - case 'm': - if (single_menu_mode) - submenu->data = (void *) (long) !submenu->data; - else - conf(submenu, NULL); - break; - case 't': - if (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes) - conf_choice(submenu); - else if (submenu->prompt->type == P_MENU) - conf(submenu, NULL); - break; - case 's': - conf_string(submenu); - break; - } - break; - case 2: - if (sym) - show_help(submenu); - else { - reset_subtitle(); - show_helptext(_("README"), _(mconf_readme)); - } - break; - case 3: - reset_subtitle(); - conf_save(); - break; - case 4: - reset_subtitle(); - conf_load(); - break; - case 5: - if (item_is_tag('t')) { - if (sym_set_tristate_value(sym, yes)) - break; - if (sym_set_tristate_value(sym, mod)) - show_textbox(NULL, setmod_text, 6, 74); - } - break; - case 6: - if (item_is_tag('t')) - sym_set_tristate_value(sym, no); - break; - case 7: - if (item_is_tag('t')) - sym_set_tristate_value(sym, mod); - break; - case 8: - if (item_is_tag('t')) - sym_toggle_tristate_value(sym); - else if (item_is_tag('m')) - conf(submenu, NULL); - break; - case 9: - search_conf(); - break; - case 10: - show_all_options = !show_all_options; - break; - } - } - - list_del(trail.prev); -} - -static int show_textbox_ext(const char *title, char *text, int r, int c, int - *keys, int *vscroll, int *hscroll, update_text_fn - update_text, void *data) -{ - dialog_clear(); - return dialog_textbox(title, text, r, c, keys, vscroll, hscroll, - update_text, data); -} - -static void show_textbox(const char *title, const char *text, int r, int c) -{ - show_textbox_ext(title, (char *) text, r, c, (int []) {0}, NULL, NULL, - NULL, NULL); -} - -static void show_helptext(const char *title, const char *text) -{ - show_textbox(title, text, 0, 0); -} - -static void conf_message_callback(const char *fmt, va_list ap) -{ - char buf[PATH_MAX+1]; - - vsnprintf(buf, sizeof(buf), fmt, ap); - if (save_and_exit) { - if (!silent) - printf("%s", buf); - } else { - show_textbox(NULL, buf, 6, 60); - } -} - -static void show_help(struct menu *menu) -{ - struct gstr help = str_new(); - - help.max_width = getmaxx(stdscr) - 10; - menu_get_ext_help(menu, &help); - - show_helptext(_(menu_get_prompt(menu)), str_get(&help)); - str_free(&help); -} - static void conf_choice(struct menu *menu) { - const char *prompt = _(menu_get_prompt(menu)); + const char *prompt = menu_get_prompt(menu); struct menu *child; struct symbol *active; @@ -814,9 +645,9 @@ static void conf_choice(struct menu *menu) if (!menu_is_visible(child)) continue; if (child->sym) - item_make("%s", _(menu_get_prompt(child))); + item_make("%s", menu_get_prompt(child)); else { - item_make("*** %s ***", _(menu_get_prompt(child))); + item_make("*** %s ***", menu_get_prompt(child)); item_set_tag(':'); } item_set_data(child); @@ -826,11 +657,11 @@ static void conf_choice(struct menu *menu) item_set_tag('X'); } dialog_clear(); - res = dialog_checklist(prompt ? _(prompt) : _("Main Menu"), - _(radiolist_instructions), - MENUBOX_HEIGTH_MIN, + res = dialog_checklist(prompt ? prompt : "Main Menu", + radiolist_instructions, + MENUBOX_HEIGHT_MIN, MENUBOX_WIDTH_MIN, - CHECKLIST_HEIGTH_MIN); + CHECKLIST_HEIGHT_MIN); selected = item_activate_selected(); switch (res) { case 0: @@ -868,26 +699,26 @@ static void conf_string(struct menu *menu) switch (sym_get_type(menu->sym)) { case S_INT: - heading = _(inputbox_instructions_int); + heading = inputbox_instructions_int; break; case S_HEX: - heading = _(inputbox_instructions_hex); + heading = inputbox_instructions_hex; break; case S_STRING: - heading = _(inputbox_instructions_string); + heading = inputbox_instructions_string; break; default: - heading = _("Internal mconf error!"); + heading = "Internal mconf error!"; } dialog_clear(); - res = dialog_inputbox(prompt ? _(prompt) : _("Main Menu"), + res = dialog_inputbox(prompt ? prompt : "Main Menu", heading, 10, 75, sym_get_string_value(menu->sym)); switch (res) { case 0: if (sym_set_string_value(menu->sym, dialog_input_result)) return; - show_textbox(NULL, _("You have made an invalid entry."), 5, 43); + show_textbox(NULL, "You have made an invalid entry.", 5, 43); break; case 1: show_help(menu); @@ -912,13 +743,13 @@ static void conf_load(void) return; if (!conf_read(dialog_input_result)) { set_config_filename(dialog_input_result); - sym_set_change_count(1); + conf_set_changed(true); return; } - show_textbox(NULL, _("File does not exist!"), 5, 38); + show_textbox(NULL, "File does not exist!", 5, 38); break; case 1: - show_helptext(_("Load Alternate Configuration"), load_config_help); + show_helptext("Load Alternate Configuration", load_config_help); break; case KEY_ESC: return; @@ -941,10 +772,10 @@ static void conf_save(void) set_config_filename(dialog_input_result); return; } - show_textbox(NULL, _("Can't create file! Probably a nonexistent directory."), 5, 60); + show_textbox(NULL, "Can't create file!", 5, 60); break; case 1: - show_helptext(_("Save Alternate Configuration"), save_config_help); + show_helptext("Save Alternate Configuration", save_config_help); break; case KEY_ESC: return; @@ -952,6 +783,127 @@ static void conf_save(void) } } +static void conf(struct menu *menu, struct menu *active_menu) +{ + struct menu *submenu; + const char *prompt = menu_get_prompt(menu); + struct subtitle_part stpart; + struct symbol *sym; + int res; + int s_scroll = 0; + + if (menu != &rootmenu) + stpart.text = menu_get_prompt(menu); + else + stpart.text = NULL; + list_add_tail(&stpart.entries, &trail); + + while (1) { + item_reset(); + current_menu = menu; + build_conf(menu); + if (!child_count) + break; + set_subtitle(); + dialog_clear(); + res = dialog_menu(prompt ? prompt : "Main Menu", + menu_instructions, + active_menu, &s_scroll); + if (res == 1 || res == KEY_ESC || res == -ERRDISPLAYTOOSMALL) + break; + if (item_count() != 0) { + if (!item_activate_selected()) + continue; + if (!item_tag()) + continue; + } + submenu = item_data(); + active_menu = item_data(); + if (submenu) + sym = submenu->sym; + else + sym = NULL; + + switch (res) { + case 0: + switch (item_tag()) { + case 'm': + if (single_menu_mode) + submenu->data = (void *) (long) !submenu->data; + else + conf(submenu, NULL); + break; + case 't': + if (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes) + conf_choice(submenu); + else if (submenu->prompt->type == P_MENU) + conf(submenu, NULL); + break; + case 's': + conf_string(submenu); + break; + } + break; + case 2: + if (sym) + show_help(submenu); + else { + reset_subtitle(); + show_helptext("README", mconf_readme); + } + break; + case 3: + reset_subtitle(); + conf_save(); + break; + case 4: + reset_subtitle(); + conf_load(); + break; + case 5: + if (item_is_tag('t')) { + if (sym_set_tristate_value(sym, yes)) + break; + if (sym_set_tristate_value(sym, mod)) + show_textbox(NULL, setmod_text, 6, 74); + } + break; + case 6: + if (item_is_tag('t')) + sym_set_tristate_value(sym, no); + break; + case 7: + if (item_is_tag('t')) + sym_set_tristate_value(sym, mod); + break; + case 8: + if (item_is_tag('t')) + sym_toggle_tristate_value(sym); + else if (item_is_tag('m')) + conf(submenu, NULL); + break; + case 9: + search_conf(); + break; + case 10: + show_all_options = !show_all_options; + break; + } + } + + list_del(trail.prev); +} + +static void conf_message_callback(const char *s) +{ + if (save_and_exit) { + if (!silent) + printf("%s", s); + } else { + show_textbox(NULL, s, 6, 60); + } +} + static int handle_exit(void) { int res; @@ -961,8 +913,8 @@ static int handle_exit(void) dialog_clear(); if (conf_get_changed()) res = dialog_yesno(NULL, - _("Do you wish to save your new configuration?\n" - "(Press to continue Buildroot configuration.)"), + "Do you wish to save your new configuration?\n" + "(Press to continue Buildroot configuration.)", 6, 60); else res = -1; @@ -972,26 +924,27 @@ static int handle_exit(void) switch (res) { case 0: if (conf_write(filename)) { - fprintf(stderr, _("\n\n" + fprintf(stderr, "\n\n" "Error while writing of the configuration.\n" "Your configuration changes were NOT saved." - "\n\n")); + "\n\n"); return 1; } + conf_write_autoconf(0); /* fall through */ case -1: if (!silent) - printf(_("\n\n" + printf("\n\n" "*** End of the configuration.\n" "*** Execute 'make' to start the build or try 'make help'." - "\n\n")); + "\n\n"); res = 0; break; default: if (!silent) - fprintf(stderr, _("\n\n" + fprintf(stderr, "\n\n" "Your configuration changes were NOT saved." - "\n\n")); + "\n\n"); if (res != KEY_ESC) res = 0; } @@ -1009,10 +962,6 @@ int main(int ac, char **av) char *mode; int res; - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); - signal(SIGINT, sig_handler); if (ac > 1 && strcmp(av[1], "-s") == 0) { @@ -1031,8 +980,8 @@ int main(int ac, char **av) } if (init_dialog(NULL)) { - fprintf(stderr, N_("Your display is too small to run Menuconfig!\n")); - fprintf(stderr, N_("It must be at least 19 lines by 80 columns.\n")); + fprintf(stderr, "Your display is too small to run Menuconfig!\n"); + fprintf(stderr, "It must be at least 19 lines by 80 columns.\n"); return 1; } diff --git a/support/kconfig/menu.c b/support/kconfig/menu.c index 5c5c1374b1..3b822cd110 100644 --- a/support/kconfig/menu.c +++ b/support/kconfig/menu.c @@ -1,6 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ #include @@ -9,20 +9,19 @@ #include #include "lkc.h" +#include "internal.h" +#include "list.h" static const char nohelp_text[] = "There is no help available for this option."; struct menu rootmenu; static struct menu **last_entry_ptr; -struct file *file_list; -struct file *current_file; - void menu_warn(struct menu *menu, const char *fmt, ...) { va_list ap; va_start(ap, fmt); - fprintf(stderr, "%s:%d:warning: ", menu->file->name, menu->lineno); + fprintf(stderr, "%s:%d:warning: ", menu->filename, menu->lineno); vfprintf(stderr, fmt, ap); fprintf(stderr, "\n"); va_end(ap); @@ -32,7 +31,7 @@ static void prop_warn(struct property *prop, const char *fmt, ...) { va_list ap; va_start(ap, fmt); - fprintf(stderr, "%s:%d:warning: ", prop->file->name, prop->lineno); + fprintf(stderr, "%s:%d:warning: ", prop->filename, prop->lineno); vfprintf(stderr, fmt, ap); fprintf(stderr, "\n"); va_end(ap); @@ -52,20 +51,23 @@ void menu_add_entry(struct symbol *sym) memset(menu, 0, sizeof(*menu)); menu->sym = sym; menu->parent = current_menu; - menu->file = current_file; - menu->lineno = zconf_lineno(); + menu->filename = cur_filename; + menu->lineno = cur_lineno; *last_entry_ptr = menu; last_entry_ptr = &menu->next; current_entry = menu; - if (sym) + if (sym) { menu_add_symbol(P_SYMBOL, sym, NULL); + list_add_tail(&menu->link, &sym->menus); + } } struct menu *menu_add_menu(void) { last_entry_ptr = ¤t_entry->list; - return current_menu = current_entry; + current_menu = current_entry; + return current_menu; } void menu_end_menu(void) @@ -124,61 +126,76 @@ void menu_set_type(int type) sym_type_name(sym->type), sym_type_name(type)); } -static struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep) +static struct property *menu_add_prop(enum prop_type type, struct expr *expr, + struct expr *dep) { - struct property *prop = prop_alloc(type, current_entry->sym); + struct property *prop; + prop = xmalloc(sizeof(*prop)); + memset(prop, 0, sizeof(*prop)); + prop->type = type; + prop->filename = cur_filename; + prop->lineno = cur_lineno; prop->menu = current_entry; prop->expr = expr; prop->visible.expr = dep; - if (prompt) { - if (isspace(*prompt)) { - prop_warn(prop, "leading whitespace ignored"); - while (isspace(*prompt)) - prompt++; - } - if (current_entry->prompt && current_entry != &rootmenu) - prop_warn(prop, "prompt redefined"); + /* append property to the prop list of symbol */ + if (current_entry->sym) { + struct property **propp; - /* Apply all upper menus' visibilities to actual prompts. */ - if(type == P_PROMPT) { - struct menu *menu = current_entry; + for (propp = ¤t_entry->sym->prop; + *propp; + propp = &(*propp)->next) + ; + *propp = prop; + } - while ((menu = menu->parent) != NULL) { - struct expr *dup_expr; + return prop; +} - if (!menu->visibility) - continue; - /* - * Do not add a reference to the - * menu's visibility expression but - * use a copy of it. Otherwise the - * expression reduction functions - * will modify expressions that have - * multiple references which can - * cause unwanted side effects. - */ - dup_expr = expr_copy(menu->visibility); +struct property *menu_add_prompt(enum prop_type type, char *prompt, + struct expr *dep) +{ + struct property *prop = menu_add_prop(type, NULL, dep); - prop->visible.expr - = expr_alloc_and(prop->visible.expr, - dup_expr); - } - } + if (isspace(*prompt)) { + prop_warn(prop, "leading whitespace ignored"); + while (isspace(*prompt)) + prompt++; + } + if (current_entry->prompt) + prop_warn(prop, "prompt redefined"); + + /* Apply all upper menus' visibilities to actual prompts. */ + if (type == P_PROMPT) { + struct menu *menu = current_entry; + + while ((menu = menu->parent) != NULL) { + struct expr *dup_expr; - current_entry->prompt = prop; + if (!menu->visibility) + continue; + /* + * Do not add a reference to the menu's visibility + * expression but use a copy of it. Otherwise the + * expression reduction functions will modify + * expressions that have multiple references which + * can cause unwanted side effects. + */ + dup_expr = expr_copy(menu->visibility); + + prop->visible.expr = expr_alloc_and(prop->visible.expr, + dup_expr); + } } + + current_entry->prompt = prop; prop->text = prompt; return prop; } -struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep) -{ - return menu_add_prop(type, prompt, NULL, dep); -} - void menu_add_visibility(struct expr *expr) { current_entry->visibility = expr_alloc_and(current_entry->visibility, @@ -187,40 +204,12 @@ void menu_add_visibility(struct expr *expr) void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep) { - menu_add_prop(type, NULL, expr, dep); + menu_add_prop(type, expr, dep); } void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep) { - menu_add_prop(type, NULL, expr_alloc_symbol(sym), dep); -} - -void menu_add_option(int token, char *arg) -{ - switch (token) { - case T_OPT_MODULES: - if (modules_sym) - zconf_error("symbol '%s' redefines option 'modules'" - " already defined by symbol '%s'", - current_entry->sym->name, - modules_sym->name - ); - modules_sym = current_entry->sym; - break; - case T_OPT_DEFCONFIG_LIST: - if (!sym_defconfig_list) - sym_defconfig_list = current_entry->sym; - else if (sym_defconfig_list != current_entry->sym) - zconf_error("trying to redefine defconfig symbol"); - sym_defconfig_list->flags |= SYMBOL_AUTO; - break; - case T_OPT_ENV: - prop_add_env(arg); - break; - case T_OPT_ALLNOCONFIG_Y: - current_entry->sym->flags |= SYMBOL_ALLNOCONFIG_Y; - break; - } + menu_add_prop(type, expr_alloc_symbol(sym), dep); } static int menu_validate_number(struct symbol *sym, struct symbol *sym2) @@ -293,7 +282,7 @@ static void sym_check_prop(struct symbol *sym) } } -void menu_finalize(struct menu *parent) +static void _menu_finalize(struct menu *parent, bool inside_choice) { struct menu *menu, *last_menu; struct symbol *sym; @@ -307,7 +296,12 @@ void menu_finalize(struct menu *parent) * and propagate parent dependencies before moving on. */ - if (sym && sym_is_choice(sym)) { + bool is_choice = false; + + if (sym && sym_is_choice(sym)) + is_choice = true; + + if (is_choice) { if (sym->type == S_UNKNOWN) { /* find the first choice value to find out choice type */ current_entry = parent; @@ -318,12 +312,6 @@ void menu_finalize(struct menu *parent) } } } - /* set the type of the remaining choice values */ - for (menu = parent->list; menu; menu = menu->next) { - current_entry = menu; - if (menu->sym && menu->sym->type == S_UNKNOWN) - menu_set_type(sym->type); - } /* * Use the choice itself as the parent dependency of @@ -332,12 +320,10 @@ void menu_finalize(struct menu *parent) * choice value symbols. */ parentdep = expr_alloc_symbol(sym); - } else if (parent->prompt) - /* Menu node for 'menu' */ - parentdep = parent->prompt->visible.expr; - else - /* Menu node for 'if' */ + } else { + /* Menu node for 'menu', 'if' */ parentdep = parent->dep; + } /* For each child menu node... */ for (menu = parent->list; menu; menu = menu->next) { @@ -413,7 +399,7 @@ void menu_finalize(struct menu *parent) } } - if (sym && sym_is_choice(sym)) + if (is_choice) expr_free(parentdep); /* @@ -421,8 +407,8 @@ void menu_finalize(struct menu *parent) * moving on */ for (menu = parent->list; menu; menu = menu->next) - menu_finalize(menu); - } else if (sym) { + _menu_finalize(menu, is_choice); + } else if (!inside_choice && sym) { /* * Automatic submenu creation. If sym is a symbol and A, B, C, * ... are consecutive items (symbols, menus, ifs, etc.) that @@ -482,7 +468,7 @@ void menu_finalize(struct menu *parent) /* Superset, put in submenu */ expr_free(dep2); next: - menu_finalize(menu); + _menu_finalize(menu, false); menu->parent = parent; last_menu = menu; } @@ -580,9 +566,6 @@ void menu_finalize(struct menu *parent) if (sym->type == S_UNKNOWN) menu_warn(parent, "config symbol defined without type"); - if (sym_is_choice(sym) && !parent->prompt) - menu_warn(parent, "choice must have a prompt"); - /* Check properties connected to this symbol */ sym_check_prop(sym); sym->flags |= SYMBOL_WARNED; @@ -604,6 +587,11 @@ void menu_finalize(struct menu *parent) } } +void menu_finalize(void) +{ + _menu_finalize(&rootmenu, false); +} + bool menu_has_prompt(struct menu *menu) { if (!menu->prompt) @@ -674,11 +662,6 @@ const char *menu_get_prompt(struct menu *menu) return NULL; } -struct menu *menu_get_root_menu(struct menu *menu) -{ - return &rootmenu; -} - struct menu *menu_get_parent_menu(struct menu *menu) { enum prop_type type; @@ -691,17 +674,24 @@ struct menu *menu_get_parent_menu(struct menu *menu) return menu; } -bool menu_has_help(struct menu *menu) +static void get_def_str(struct gstr *r, struct menu *menu) { - return menu->help != NULL; + str_printf(r, "Defined at %s:%d\n", + menu->filename, menu->lineno); } -const char *menu_get_help(struct menu *menu) +static void get_dep_str(struct gstr *r, struct expr *expr, const char *prefix) { - if (menu->help) - return menu->help; - else - return ""; + if (!expr_is_yes(expr)) { + str_append(r, prefix); + expr_gstr_print(expr, r); + str_append(r, "\n"); + } +} + +int __attribute__((weak)) get_jump_key_char(void) +{ + return -1; } static void get_prompt_str(struct gstr *r, struct property *prop, @@ -711,66 +701,56 @@ static void get_prompt_str(struct gstr *r, struct property *prop, struct menu *submenu[8], *menu, *location = NULL; struct jump_key *jump = NULL; - str_printf(r, _("Prompt: %s\n"), _(prop->text)); - menu = prop->menu->parent; - for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent) { - bool accessible = menu_is_visible(menu); + str_printf(r, " Prompt: %s\n", prop->text); + + get_dep_str(r, prop->menu->dep, " Depends on: "); + /* + * Most prompts in Linux have visibility that exactly matches their + * dependencies. For these, we print only the dependencies to improve + * readability. However, prompts with inline "if" expressions and + * prompts with a parent that has a "visible if" expression have + * differing dependencies and visibility. In these rare cases, we + * print both. + */ + if (!expr_eq(prop->menu->dep, prop->visible.expr)) + get_dep_str(r, prop->visible.expr, " Visible if: "); + menu = prop->menu; + for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent) { submenu[i++] = menu; - if (location == NULL && accessible) + if (location == NULL && menu_is_visible(menu)) location = menu; } if (head && location) { jump = xmalloc(sizeof(struct jump_key)); - - if (menu_is_visible(prop->menu)) { - /* - * There is not enough room to put the hint at the - * beginning of the "Prompt" line. Put the hint on the - * last "Location" line even when it would belong on - * the former. - */ - jump->target = prop->menu; - } else - jump->target = location; - - if (list_empty(head)) - jump->index = 0; - else - jump->index = list_entry(head->prev, struct jump_key, - entries)->index + 1; - + jump->target = location; list_add_tail(&jump->entries, head); } - if (i > 0) { - str_printf(r, _(" Location:\n")); - for (j = 4; --i >= 0; j += 2) { - menu = submenu[i]; - if (jump && menu == location) - jump->offset = strlen(r->s); - str_printf(r, "%*c-> %s", j, ' ', - _(menu_get_prompt(menu))); - if (menu->sym) { - str_printf(r, " (%s [=%s])", menu->sym->name ? - menu->sym->name : _(""), - sym_get_string_value(menu->sym)); - } - str_append(r, "\n"); + str_printf(r, " Location:\n"); + for (j = 0; --i >= 0; j++) { + int jk = -1; + int indent = 2 * j + 4; + + menu = submenu[i]; + if (jump && menu == location) { + jump->offset = strlen(r->s); + jk = get_jump_key_char(); } - } -} -/* - * get property of type P_SYMBOL - */ -static struct property *get_symbol_prop(struct symbol *sym) -{ - struct property *prop = NULL; + if (jk >= 0) { + str_printf(r, "(%c)", jk); + indent -= 3; + } - for_all_properties(sym, prop, P_SYMBOL) - break; - return prop; + str_printf(r, "%*c-> %s", indent, ' ', menu_get_prompt(menu)); + if (menu->sym) { + str_printf(r, " (%s [=%s])", menu->sym->name ? + menu->sym->name : "", + sym_get_string_value(menu->sym)); + } + str_append(r, "\n"); + } } static void get_symbol_props_str(struct gstr *r, struct symbol *sym, @@ -798,6 +778,7 @@ static void get_symbol_str(struct gstr *r, struct symbol *sym, struct list_head *head) { struct property *prop; + struct menu *menu; if (sym && sym->name) { str_printf(r, "Symbol: %s [=%s]\n", sym->name, @@ -812,32 +793,34 @@ static void get_symbol_str(struct gstr *r, struct symbol *sym, } } } - for_all_prompts(sym, prop) - get_prompt_str(r, prop, head); - - prop = get_symbol_prop(sym); - if (prop) { - str_printf(r, _(" Defined at %s:%d\n"), prop->menu->file->name, - prop->menu->lineno); - if (!expr_is_yes(prop->visible.expr)) { - str_append(r, _(" Depends on: ")); - expr_gstr_print(prop->visible.expr, r); - str_append(r, "\n"); + + /* Print the definitions with prompts before the ones without */ + list_for_each_entry(menu, &sym->menus, link) { + if (menu->prompt) { + get_def_str(r, menu); + get_prompt_str(r, menu->prompt, head); + } + } + + list_for_each_entry(menu, &sym->menus, link) { + if (!menu->prompt) { + get_def_str(r, menu); + get_dep_str(r, menu->dep, " Depends on: "); } } - get_symbol_props_str(r, sym, P_SELECT, _(" Selects: ")); + get_symbol_props_str(r, sym, P_SELECT, "Selects: "); if (sym->rev_dep.expr) { - expr_gstr_print_revdep(sym->rev_dep.expr, r, yes, " Selected by [y]:\n"); - expr_gstr_print_revdep(sym->rev_dep.expr, r, mod, " Selected by [m]:\n"); - expr_gstr_print_revdep(sym->rev_dep.expr, r, no, " Selected by [n]:\n"); + expr_gstr_print_revdep(sym->rev_dep.expr, r, yes, "Selected by [y]:\n"); + expr_gstr_print_revdep(sym->rev_dep.expr, r, mod, "Selected by [m]:\n"); + expr_gstr_print_revdep(sym->rev_dep.expr, r, no, "Selected by [n]:\n"); } - get_symbol_props_str(r, sym, P_IMPLY, _(" Implies: ")); + get_symbol_props_str(r, sym, P_IMPLY, "Implies: "); if (sym->implied.expr) { - expr_gstr_print_revdep(sym->implied.expr, r, yes, " Implied by [y]:\n"); - expr_gstr_print_revdep(sym->implied.expr, r, mod, " Implied by [m]:\n"); - expr_gstr_print_revdep(sym->implied.expr, r, no, " Implied by [n]:\n"); + expr_gstr_print_revdep(sym->implied.expr, r, yes, "Implied by [y]:\n"); + expr_gstr_print_revdep(sym->implied.expr, r, mod, "Implied by [m]:\n"); + expr_gstr_print_revdep(sym->implied.expr, r, no, "Implied by [n]:\n"); } str_append(r, "\n\n"); @@ -852,7 +835,7 @@ struct gstr get_relations_str(struct symbol **sym_arr, struct list_head *head) for (i = 0; sym_arr && (sym = sym_arr[i]); i++) get_symbol_str(&res, sym, head); if (!i) - str_append(&res, _("No matches found.\n")); + str_append(&res, "No matches found.\n"); return res; } @@ -862,12 +845,12 @@ void menu_get_ext_help(struct menu *menu, struct gstr *help) struct symbol *sym = menu->sym; const char *help_text = nohelp_text; - if (menu_has_help(menu)) { + if (menu->help) { if (sym->name) str_printf(help, "%s%s:\n\n", CONFIG_, sym->name); - help_text = menu_get_help(menu); + help_text = menu->help; } - str_printf(help, "%s\n", _(help_text)); + str_printf(help, "%s\n", help_text); if (sym) get_symbol_str(help, sym, NULL); } diff --git a/support/kconfig/merge_config.sh b/support/kconfig/merge_config.sh index 14917806a3..a5c03487c3 100755 --- a/support/kconfig/merge_config.sh +++ b/support/kconfig/merge_config.sh @@ -1,4 +1,6 @@ #!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# # merge_config.sh - Takes a list of config fragment values, and merges # them one by one. Provides warnings on overridden values, and specified # values that did not make it to the resulting .config file (due to missed @@ -10,21 +12,13 @@ # # Copyright (c) 2009-2010 Wind River Systems, Inc. # Copyright 2011 Linaro -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2 as -# published by the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. + +set -e clean_up() { rm -f $TMP_FILE - exit + rm -f $MERGE_FILE } -trap clean_up HUP INT TERM usage() { echo "Usage: $0 [OPTIONS] [CONFIG [...]]" @@ -32,18 +26,23 @@ usage() { echo " -m only merge the fragments, do not execute the make command" echo " -n use allnoconfig instead of alldefconfig" echo " -r list redundant entries when merging fragments" + echo " -y make builtin have precedence over modules" echo " -O dir to put generated output files. Consider setting \$KCONFIG_CONFIG instead." + echo " -s strict mode. Fail if the fragment redefines any value." + echo " -Q disable warning messages for overridden options." echo " -e colon-separated list of br2-external trees to use (optional)" echo - echo "Used prefix: '$CONFIG_PREFIX'. You can redefine it with \$CONFIG_ - environment variable." + echo "Used prefix: '$CONFIG_PREFIX'. You can redefine it with \$CONFIG_ environment variable." } RUNMAKE=true ALLTARGET=alldefconfig WARNREDUN=false +BUILTIN=false OUTPUT=. +STRICT=false CONFIG_PREFIX=${CONFIG_-CONFIG_} +WARNOVERRIDE=echo while true; do case $1 in @@ -66,6 +65,11 @@ while true; do shift continue ;; + "-y") + BUILTIN=true + shift + continue + ;; "-O") if [ -d $2 ];then OUTPUT=$(echo $2 | sed 's/\/*$//') @@ -76,6 +80,16 @@ while true; do shift 2 continue ;; + "-s") + STRICT=true + shift + continue + ;; + "-Q") + WARNOVERRIDE=true + shift + continue + ;; "-e") EXTERNAL_ARG="BR2_EXTERNAL=$2" shift 2 @@ -113,42 +127,65 @@ SED_CONFIG_EXP1="s/^\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\)=.*/\1/p" SED_CONFIG_EXP2="s/^# \(${CONFIG_PREFIX}[a-zA-Z0-9_]*\) is not set$/\1/p" TMP_FILE=$(mktemp -t .tmp.config.XXXXXXXXXX) +MERGE_FILE=$(mktemp -t .merge_tmp.config.XXXXXXXXXX) echo "Using $INITFILE as base" + +trap clean_up EXIT + cat $INITFILE > $TMP_FILE # Merge files, printing warnings on overridden values -for MERGE_FILE in $MERGE_LIST ; do - echo "Merging $MERGE_FILE" - if [ ! -r "$MERGE_FILE" ]; then - echo "The merge file '$MERGE_FILE' does not exist. Exit." >&2 +for ORIG_MERGE_FILE in $MERGE_LIST ; do + echo "Merging $ORIG_MERGE_FILE" + if [ ! -r "$ORIG_MERGE_FILE" ]; then + echo "The merge file '$ORIG_MERGE_FILE' does not exist. Exit." >&2 exit 1 fi + cat $ORIG_MERGE_FILE > $MERGE_FILE CFG_LIST=$(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $MERGE_FILE) for CFG in $CFG_LIST ; do grep -q -w $CFG $TMP_FILE || continue PREV_VAL=$(grep -w $CFG $TMP_FILE) NEW_VAL=$(grep -w $CFG $MERGE_FILE) - if [ "x$PREV_VAL" != "x$NEW_VAL" ] ; then - echo Value of $CFG is redefined by fragment $MERGE_FILE: - echo Previous value: $PREV_VAL - echo New value: $NEW_VAL - echo + BUILTIN_FLAG=false + if [ "$BUILTIN" = "true" ] && [ "${NEW_VAL#CONFIG_*=}" = "m" ] && [ "${PREV_VAL#CONFIG_*=}" = "y" ]; then + ${WARNOVERRIDE} Previous value: $PREV_VAL + ${WARNOVERRIDE} New value: $NEW_VAL + ${WARNOVERRIDE} -y passed, will not demote y to m + ${WARNOVERRIDE} + BUILTIN_FLAG=true + elif [ "x$PREV_VAL" != "x$NEW_VAL" ] ; then + ${WARNOVERRIDE} Value of $CFG is redefined by fragment $ORIG_MERGE_FILE: + ${WARNOVERRIDE} Previous value: $PREV_VAL + ${WARNOVERRIDE} New value: $NEW_VAL + ${WARNOVERRIDE} + if [ "$STRICT" = "true" ]; then + STRICT_MODE_VIOLATED=true + fi elif [ "$WARNREDUN" = "true" ]; then - echo Value of $CFG is redundant by fragment $MERGE_FILE: + ${WARNOVERRIDE} Value of $CFG is redundant by fragment $ORIG_MERGE_FILE: + fi + if [ "$BUILTIN_FLAG" = "false" ]; then + sed -i "/$CFG[ =]/d" $TMP_FILE + else + sed -i "/$CFG[ =]/d" $MERGE_FILE fi - sed -i "/$CFG[ =]/d" $TMP_FILE done cat $MERGE_FILE >> $TMP_FILE done +if [ "$STRICT_MODE_VIOLATED" = "true" ]; then + echo "The fragment redefined a value and strict mode had been passed." + exit 1 +fi + if [ "$RUNMAKE" = "false" ]; then cp -T -- "$TMP_FILE" "$KCONFIG_CONFIG" echo "#" echo "# merged configuration written to $KCONFIG_CONFIG (needs make)" echo "#" - clean_up exit fi @@ -170,7 +207,7 @@ make KCONFIG_ALLCONFIG=$TMP_FILE $EXTERNAL_ARG $OUTPUT_ARG $ALLTARGET for CFG in $(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $TMP_FILE); do REQUESTED_VAL=$(grep -w -e "$CFG" $TMP_FILE) - ACTUAL_VAL=$(grep -w -e "$CFG" "$KCONFIG_CONFIG") + ACTUAL_VAL=$(grep -w -e "$CFG" "$KCONFIG_CONFIG" || true) if [ "x$REQUESTED_VAL" != "x$ACTUAL_VAL" ] ; then echo "Value requested for $CFG not in final .config" echo "Requested value: $REQUESTED_VAL" @@ -178,5 +215,3 @@ for CFG in $(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $TMP_FILE); do echo "" fi done - -clean_up diff --git a/support/kconfig/mnconf-common.c b/support/kconfig/mnconf-common.c new file mode 100644 index 0000000000..18cb9a6c5a --- /dev/null +++ b/support/kconfig/mnconf-common.c @@ -0,0 +1,53 @@ +// SPDX-License-Identifier: GPL-2.0-only +#include "expr.h" +#include "list.h" +#include "mnconf-common.h" + +int jump_key_char; + +int next_jump_key(int key) +{ + if (key < '1' || key > '9') + return '1'; + + key++; + + if (key > '9') + key = '1'; + + return key; +} + +int handle_search_keys(int key, size_t start, size_t end, void *_data) +{ + struct search_data *data = _data; + struct jump_key *pos; + int index = 0; + + if (key < '1' || key > '9') + return 0; + + list_for_each_entry(pos, data->head, entries) { + index = next_jump_key(index); + + if (pos->offset < start) + continue; + + if (pos->offset >= end) + break; + + if (key == index) { + data->target = pos->target; + return 1; + } + } + + return 0; +} + +int get_jump_key_char(void) +{ + jump_key_char = next_jump_key(jump_key_char); + + return jump_key_char; +} diff --git a/support/kconfig/mnconf-common.h b/support/kconfig/mnconf-common.h new file mode 100644 index 0000000000..ab6292cc4b --- /dev/null +++ b/support/kconfig/mnconf-common.h @@ -0,0 +1,18 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +#ifndef MNCONF_COMMON_H +#define MNCONF_COMMON_H + +#include + +struct search_data { + struct list_head *head; + struct menu *target; +}; + +extern int jump_key_char; + +int next_jump_key(int key); +int handle_search_keys(int key, size_t start, size_t end, void *_data); +int get_jump_key_char(void); + +#endif /* MNCONF_COMMON_H */ diff --git a/support/kconfig/nconf-cfg.sh b/support/kconfig/nconf-cfg.sh new file mode 100755 index 0000000000..f871a2160e --- /dev/null +++ b/support/kconfig/nconf-cfg.sh @@ -0,0 +1,53 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +cflags=$1 +libs=$2 + +PKG="ncursesw menuw panelw" +PKG2="ncurses menu panel" + +if [ -n "$(command -v ${HOSTPKG_CONFIG})" ]; then + if ${HOSTPKG_CONFIG} --exists $PKG; then + ${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG} > ${libs} + exit 0 + fi + + if ${HOSTPKG_CONFIG} --exists $PKG2; then + ${HOSTPKG_CONFIG} --cflags ${PKG2} > ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG2} > ${libs} + exit 0 + fi +fi + +# Check the default paths in case pkg-config is not installed. +# (Even if it is installed, some distributions such as openSUSE cannot +# find ncurses by pkg-config.) +if [ -f /usr/include/ncursesw/ncurses.h ]; then + echo -D_GNU_SOURCE -I/usr/include/ncursesw > ${cflags} + echo -lncursesw -lmenuw -lpanelw > ${libs} + exit 0 +fi + +if [ -f /usr/include/ncurses/ncurses.h ]; then + echo -D_GNU_SOURCE -I/usr/include/ncurses > ${cflags} + echo -lncurses -lmenu -lpanel > ${libs} + exit 0 +fi + +if [ -f /usr/include/ncurses.h ]; then + echo -D_GNU_SOURCE > ${cflags} + echo -lncurses -lmenu -lpanel > ${libs} + exit 0 +fi + +echo >&2 "*" +echo >&2 "* Unable to find the ncurses package." +echo >&2 "* Install ncurses (ncurses-devel or libncurses-dev" +echo >&2 "* depending on your distribution)." +echo >&2 "*" +echo >&2 "* You may also need to install ${HOSTPKG_CONFIG} to find the" +echo >&2 "* ncurses installed in a non-default location." +echo >&2 "*" +exit 1 diff --git a/support/kconfig/nconf.c b/support/kconfig/nconf.c index 0031147798..9d22b0f319 100644 --- a/support/kconfig/nconf.c +++ b/support/kconfig/nconf.c @@ -1,21 +1,23 @@ +// SPDX-License-Identifier: GPL-2.0 /* - * Copyright (C) 2008 Nir Tzachar * * Derived from menuconfig. - * */ #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif #include +#include #include +#include "list.h" #include "lkc.h" +#include "mnconf-common.h" #include "nconf.h" #include -static const char nconf_global_help[] = N_( +static const char nconf_global_help[] = "Help windows\n" "------------\n" "o Global help: Unless in a data entry window, pressing will give \n" @@ -52,8 +54,8 @@ static const char nconf_global_help[] = N_( "\n" "Menu navigation keys\n" "----------------------------------------------------------------------\n" -"Linewise up \n" -"Linewise down \n" +"Linewise up \n" +"Linewise down \n" "Pagewise up \n" "Pagewise down \n" "First entry \n" @@ -130,8 +132,8 @@ static const char nconf_global_help[] = N_( "\n" "Note that this mode can eventually be a little more CPU expensive than\n" "the default mode, especially with a larger number of unfolded submenus.\n" -"\n"), -menu_no_f_instructions[] = N_( +"\n", +menu_no_f_instructions[] = "Legend: [*] built-in [ ] excluded module < > module capable.\n" "Submenus are designated by a trailing \"--->\", empty ones by \"----\".\n" "\n" @@ -147,8 +149,8 @@ menu_no_f_instructions[] = N_( "You do not have function keys support.\n" "Press <1> instead of , <2> instead of , etc.\n" "For verbose global help use key <1>.\n" -"For help related to the current menu entry press or .\n"), -menu_instructions[] = N_( +"For help related to the current menu entry press or .\n", +menu_instructions[] = "Legend: [*] built-in [ ] excluded module < > module capable.\n" "Submenus are designated by a trailing \"--->\", empty ones by \"----\".\n" "\n" @@ -163,30 +165,30 @@ menu_instructions[] = N_( "\n" "Pressing <1> may be used instead of , <2> instead of , etc.\n" "For verbose global help press .\n" -"For help related to the current menu entry press or .\n"), -radiolist_instructions[] = N_( +"For help related to the current menu entry press or .\n", +radiolist_instructions[] = "Press , , or to navigate a radiolist, select\n" "with .\n" "For help related to the current entry press or .\n" -"For global help press .\n"), -inputbox_instructions_int[] = N_( +"For global help press .\n", +inputbox_instructions_int[] = "Please enter a decimal value.\n" "Fractions will not be accepted.\n" -"Press to apply, to cancel."), -inputbox_instructions_hex[] = N_( +"Press to apply, to cancel.", +inputbox_instructions_hex[] = "Please enter a hexadecimal value.\n" -"Press to apply, to cancel."), -inputbox_instructions_string[] = N_( +"Press to apply, to cancel.", +inputbox_instructions_string[] = "Please enter a string value.\n" -"Press to apply, to cancel."), -setmod_text[] = N_( +"Press to apply, to cancel.", +setmod_text[] = "This feature depends on another feature which has been configured as a\n" -"module. As a result, the current feature will be built as a module too."), -load_config_text[] = N_( +"module. As a result, the current feature will be built as a module too.", +load_config_text[] = "Enter the name of the configuration file you wish to load.\n" "Accept the name shown to restore the configuration you last\n" -"retrieved. Leave empty to abort."), -load_config_help[] = N_( +"retrieved. Leave empty to abort.", +load_config_help[] = "For various reasons, one may wish to keep several different\n" "configurations available on a single machine.\n" "\n" @@ -194,11 +196,11 @@ load_config_help[] = N_( "default one, entering its name here will allow you to load and modify\n" "that configuration.\n" "\n" -"Leave empty to abort.\n"), -save_config_text[] = N_( +"Leave empty to abort.\n", +save_config_text[] = "Enter a filename to which this configuration should be saved\n" -"as an alternate. Leave empty to abort."), -save_config_help[] = N_( +"as an alternate. Leave empty to abort.", +save_config_help[] = "For various reasons, one may wish to keep several different\n" "configurations available on a single machine.\n" "\n" @@ -206,8 +208,8 @@ save_config_help[] = N_( "and use the current configuration as an alternate to whatever\n" "configuration options you have selected at that time.\n" "\n" -"Leave empty to abort.\n"), -search_help[] = N_( +"Leave empty to abort.\n", +search_help[] = "Search for symbols (configuration variable names CONFIG_*) and display\n" "their relations. Regular expressions are supported.\n" "Example: Search for \"^FOO\".\n" @@ -216,11 +218,11 @@ search_help[] = N_( "Symbol: FOO [ = m]\n" "Prompt: Foo bus is used to drive the bar HW\n" "Defined at drivers/pci/Kconfig:47\n" -"Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\n" +"Depends on: X86_LOCAL_APIC && X86_IO_APIC\n" "Location:\n" " -> Bus options (PCI, PCMCIA, EISA, ISA)\n" " -> PCI support (PCI [ = y])\n" -" -> PCI access mode ( [ = y])\n" +"(1) -> PCI access mode ( [ = y])\n" "Selects: LIBCRC32\n" "Selected by: BAR\n" "-----------------------------------------------------------------\n" @@ -231,9 +233,13 @@ search_help[] = N_( "o The 'Depends on:' line lists symbols that need to be defined for\n" " this symbol to be visible and selectable in the menu.\n" "o The 'Location:' lines tell, where in the menu structure this symbol\n" -" is located. A location followed by a [ = y] indicates that this is\n" -" a selectable menu item, and the current value is displayed inside\n" -" brackets.\n" +" is located.\n" +" A location followed by a [ = y] indicates that this is\n" +" a selectable menu item, and the current value is displayed inside\n" +" brackets.\n" +" Press the key in the (#) prefix to jump directly to that\n" +" location. You will be returned to the current search results\n" +" after exiting this new menu.\n" "o The 'Selects:' line tells, what symbol will be automatically selected\n" " if this symbol is selected (y or m).\n" "o The 'Selected by' line tells what symbol has selected this symbol.\n" @@ -244,7 +250,7 @@ search_help[] = N_( "USB => find all symbols containing USB\n" "^USB => find all symbols starting with USB\n" "USB$ => find all symbols ending with USB\n" -"\n"); +"\n"; struct mitem { char str[256]; @@ -268,7 +274,7 @@ static int mwin_max_cols; static MENU *curses_menu; static ITEM *curses_menu_items[MAX_MENU_ITEMS]; static struct mitem k_menu_items[MAX_MENU_ITEMS]; -static int items_num; +static unsigned int items_num; static int global_exit; /* the currently selected button */ static const char *current_instructions = menu_instructions; @@ -276,6 +282,7 @@ static const char *current_instructions = menu_instructions; static char *dialog_input_result; static int dialog_input_result_len; +static void selected_conf(struct menu *menu, struct menu *active_menu); static void conf(struct menu *menu); static void conf_choice(struct menu *menu); static void conf_string(struct menu *menu); @@ -370,25 +377,25 @@ static void print_function_line(void) int lines = getmaxy(stdscr); for (i = 0; i < function_keys_num; i++) { - (void) wattrset(main_window, attributes[FUNCTION_HIGHLIGHT]); + wattrset(main_window, attr_function_highlight); mvwprintw(main_window, lines-3, offset, "%s", function_keys[i].key_str); - (void) wattrset(main_window, attributes[FUNCTION_TEXT]); + wattrset(main_window, attr_function_text); offset += strlen(function_keys[i].key_str); mvwprintw(main_window, lines-3, offset, "%s", function_keys[i].func); offset += strlen(function_keys[i].func) + skip; } - (void) wattrset(main_window, attributes[NORMAL]); + wattrset(main_window, attr_normal); } /* help */ static void handle_f1(int *key, struct menu *current_item) { show_scroll_win(main_window, - _("Global help"), _(nconf_global_help)); + "Global help", nconf_global_help); return; } @@ -403,8 +410,8 @@ static void handle_f2(int *key, struct menu *current_item) static void handle_f3(int *key, struct menu *current_item) { show_scroll_win(main_window, - _("Short help"), - _(current_instructions)); + "Short help", + current_instructions); return; } @@ -412,7 +419,7 @@ static void handle_f3(int *key, struct menu *current_item) static void handle_f4(int *key, struct menu *current_item) { int res = btn_dialog(main_window, - _("Show all symbols?"), + "Show all symbols?", 2, " ", ""); @@ -496,16 +503,20 @@ typedef enum {MATCH_TINKER_PATTERN_UP, MATCH_TINKER_PATTERN_DOWN, /* return the index of the matched item, or -1 if no such item exists */ static int get_mext_match(const char *match_str, match_f flag) { - int match_start = item_index(current_item(curses_menu)); - int index; + int match_start, index; + + /* Do not search if the menu is empty (i.e. items_num == 0) */ + match_start = item_index(current_item(curses_menu)); + if (match_start == ERR) + return -1; if (flag == FIND_NEXT_MATCH_DOWN) ++match_start; else if (flag == FIND_NEXT_MATCH_UP) --match_start; + match_start = (match_start + items_num) % items_num; index = match_start; - index = (index + items_num) % items_num; while (true) { char *str = k_menu_items[index].str; if (strcasestr(str, match_str) != NULL) @@ -627,19 +638,12 @@ static int item_is_tag(char tag) static char filename[PATH_MAX+1]; static char menu_backtitle[PATH_MAX+128]; -static const char *set_config_filename(const char *config_filename) +static void set_config_filename(const char *config_filename) { - int size; + snprintf(menu_backtitle, sizeof(menu_backtitle), "%s - %s", + config_filename, rootmenu.prompt->text); - size = snprintf(menu_backtitle, sizeof(menu_backtitle), - "%s - %s", config_filename, rootmenu.prompt->text); - if (size >= sizeof(menu_backtitle)) - menu_backtitle[sizeof(menu_backtitle)-1] = '\0'; - - size = snprintf(filename, sizeof(filename), "%s", config_filename); - if (size >= sizeof(filename)) - filename[sizeof(filename)-1] = '\0'; - return menu_backtitle; + snprintf(filename, sizeof(filename), "%s", config_filename); } /* return = 0 means we are successful. @@ -653,8 +657,8 @@ static int do_exit(void) return 0; } res = btn_dialog(main_window, - _("Do you wish to save your new configuration?\n" - " to cancel and resume nconfig."), + "Do you wish to save your new configuration?\n" + " to cancel and resume nconfig.", 2, " ", ""); @@ -670,15 +674,16 @@ static int do_exit(void) if (res) btn_dialog( main_window, - _("Error during writing of configuration.\n" - "Your configuration changes were NOT saved."), + "Error during writing of configuration.\n" + "Your configuration changes were NOT saved.", 1, ""); + conf_write_autoconf(0); break; default: btn_dialog( main_window, - _("Your configuration changes were NOT saved."), + "Your configuration changes were NOT saved.", 1, ""); break; @@ -694,15 +699,16 @@ static void search_conf(void) struct gstr res; struct gstr title; char *dialog_input; - int dres; + int dres, vscroll = 0, hscroll = 0; + bool again; title = str_new(); - str_printf( &title, _("Enter (sub)string or regexp to search for " - "(with or without \"%s\")"), CONFIG_); + str_printf( &title, "Enter (sub)string or regexp to search for " + "(with or without \"%s\")", CONFIG_); again: dres = dialog_inputbox(main_window, - _("Search Configuration Parameter"), + "Search Configuration Parameter", str_get(&title), "", &dialog_input_result, &dialog_input_result_len); switch (dres) { @@ -710,7 +716,7 @@ again: break; case 1: show_scroll_win(main_window, - _("Search Configuration"), search_help); + "Search Configuration", search_help); goto again; default: str_free(&title); @@ -723,11 +729,28 @@ again: dialog_input += strlen(CONFIG_); sym_arr = sym_re_search(dialog_input); - res = get_relations_str(sym_arr, NULL); + + do { + LIST_HEAD(head); + struct search_data data = { + .head = &head, + .target = NULL, + }; + jump_key_char = 0; + res = get_relations_str(sym_arr, &head); + dres = show_scroll_win_ext(main_window, + "Search Results", str_get(&res), + &vscroll, &hscroll, + handle_search_keys, &data); + again = false; + if (dres >= '1' && dres <= '9') { + assert(data.target != NULL); + selected_conf(data.target->parent, data.target); + again = true; + } + str_free(&res); + } while (again); free(sym_arr); - show_scroll_win(main_window, - _("Search Results"), str_get(&res)); - str_free(&res); str_free(&title); } @@ -754,7 +777,6 @@ static void build_conf(struct menu *menu) switch (ptype) { case P_MENU: child_count++; - prompt = _(prompt); if (single_menu_mode) { item_make(menu, 'm', "%s%*c%s", @@ -775,7 +797,7 @@ static void build_conf(struct menu *menu) item_make(menu, ':', " %*c*** %s ***", indent + 1, ' ', - _(prompt)); + prompt); } break; default: @@ -783,7 +805,7 @@ static void build_conf(struct menu *menu) child_count++; item_make(menu, ':', "---%*c%s", indent + 1, ' ', - _(prompt)); + prompt); } } } else @@ -803,7 +825,7 @@ static void build_conf(struct menu *menu) } val = sym_get_tristate_value(sym); - if (sym_is_changable(sym)) { + if (sym_is_changeable(sym)) { switch (type) { case S_BOOLEAN: item_make(menu, 't', "[%c]", @@ -829,11 +851,11 @@ static void build_conf(struct menu *menu) } item_add_str("%*c%s", indent + 1, - ' ', _(menu_get_prompt(menu))); + ' ', menu_get_prompt(menu)); if (val == yes) { if (def_menu) { item_add_str(" (%s)", - _(menu_get_prompt(def_menu))); + menu_get_prompt(def_menu)); item_add_str(" --->"); if (def_menu->list) { indent += 2; @@ -847,7 +869,7 @@ static void build_conf(struct menu *menu) if (menu == current_menu) { item_make(menu, ':', "---%*c%s", indent + 1, - ' ', _(menu_get_prompt(menu))); + ' ', menu_get_prompt(menu)); goto conf_childs; } child_count++; @@ -857,7 +879,7 @@ static void build_conf(struct menu *menu) } else { switch (type) { case S_BOOLEAN: - if (sym_is_changable(sym)) + if (sym_is_changeable(sym)) item_make(menu, 't', "[%c]", val == no ? ' ' : '*'); else @@ -876,7 +898,7 @@ static void build_conf(struct menu *menu) ch = ' '; break; } - if (sym_is_changable(sym)) { + if (sym_is_changeable(sym)) { if (sym->rev_dep.tri == mod) item_make(menu, 't', "{%c}", ch); @@ -894,17 +916,17 @@ static void build_conf(struct menu *menu) if (tmp < 0) tmp = 0; item_add_str("%*c%s%s", tmp, ' ', - _(menu_get_prompt(menu)), + menu_get_prompt(menu), (sym_has_value(sym) || - !sym_is_changable(sym)) ? "" : - _(" (NEW)")); + !sym_is_changeable(sym)) ? "" : + " (NEW)"); goto conf_childs; } } item_add_str("%*c%s%s", indent + 1, ' ', - _(menu_get_prompt(menu)), - (sym_has_value(sym) || !sym_is_changable(sym)) ? - "" : _(" (NEW)")); + menu_get_prompt(menu), + (sym_has_value(sym) || !sym_is_changeable(sym)) ? + "" : " (NEW)"); if (menu->prompt && menu->prompt->type == P_MENU) { item_add_str(" %s", menu_is_empty(menu) ? "----" : "--->"); return; @@ -956,16 +978,15 @@ static void show_menu(const char *prompt, const char *instructions, current_instructions = instructions; clear(); - (void) wattrset(main_window, attributes[NORMAL]); - print_in_middle(stdscr, 1, 0, getmaxx(stdscr), + print_in_middle(stdscr, 1, getmaxx(stdscr), menu_backtitle, - attributes[MAIN_HEADING]); + attr_main_heading); - (void) wattrset(main_window, attributes[MAIN_MENU_BOX]); + wattrset(main_window, attr_main_menu_box); box(main_window, 0, 0); - (void) wattrset(main_window, attributes[MAIN_MENU_HEADING]); + wattrset(main_window, attr_main_menu_heading); mvwprintw(main_window, 0, 3, " %s ", prompt); - (void) wattrset(main_window, attributes[NORMAL]); + wattrset(main_window, attr_normal); set_menu_items(curses_menu, curses_menu_items); @@ -1048,7 +1069,7 @@ static int do_match(int key, struct match_state *state, int *ans) state->match_direction = FIND_NEXT_MATCH_UP; *ans = get_mext_match(state->pattern, state->match_direction); - } else if (key == KEY_BACKSPACE || key == 127) { + } else if (key == KEY_BACKSPACE || key == 8 || key == 127) { state->pattern[strlen(state->pattern)-1] = '\0'; adj_match_dir(&state->match_direction); } else @@ -1066,11 +1087,15 @@ static int do_match(int key, struct match_state *state, int *ans) } static void conf(struct menu *menu) +{ + selected_conf(menu, NULL); +} + +static void selected_conf(struct menu *menu, struct menu *active_menu) { struct menu *submenu = NULL; - const char *prompt = menu_get_prompt(menu); struct symbol *sym; - int res; + int i, res; int current_index = 0; int last_top_row = 0; struct match_state match_state = { @@ -1086,9 +1111,21 @@ static void conf(struct menu *menu) if (!child_count) break; - show_menu(prompt ? _(prompt) : _("Main Menu"), - _(menu_instructions), - current_index, &last_top_row); + if (active_menu != NULL) { + for (i = 0; i < items_num; i++) { + struct mitem *mcur; + + mcur = (struct mitem *) item_userptr(curses_menu_items[i]); + if ((struct menu *) mcur->usrptr == active_menu) { + current_index = i; + break; + } + } + active_menu = NULL; + } + + show_menu(menu_get_prompt(menu), menu_instructions, + current_index, &last_top_row); keypad((menu_win(curses_menu)), TRUE); while (!global_exit) { if (match_state.in_search) { @@ -1111,9 +1148,11 @@ static void conf(struct menu *menu) break; switch (res) { case KEY_DOWN: + case 'j': menu_driver(curses_menu, REQ_DOWN_ITEM); break; case KEY_UP: + case 'k': menu_driver(curses_menu, REQ_UP_ITEM); break; case KEY_NPAGE: @@ -1210,12 +1249,9 @@ static void conf(struct menu *menu) } } -static void conf_message_callback(const char *fmt, va_list ap) +static void conf_message_callback(const char *s) { - char buf[1024]; - - vsnprintf(buf, sizeof(buf), fmt, ap); - btn_dialog(main_window, buf, 1, ""); + btn_dialog(main_window, s, 1, ""); } static void show_help(struct menu *menu) @@ -1227,13 +1263,13 @@ static void show_help(struct menu *menu) help = str_new(); menu_get_ext_help(menu, &help); - show_scroll_win(main_window, _(menu_get_prompt(menu)), str_get(&help)); + show_scroll_win(main_window, menu_get_prompt(menu), str_get(&help)); str_free(&help); } static void conf_choice(struct menu *menu) { - const char *prompt = _(menu_get_prompt(menu)); + const char *prompt = menu_get_prompt(menu); struct menu *child = NULL; struct symbol *active; int selected_index = 0; @@ -1256,13 +1292,13 @@ static void conf_choice(struct menu *menu) if (child->sym == sym_get_choice_value(menu->sym)) item_make(child, ':', " %s", - _(menu_get_prompt(child))); + menu_get_prompt(child)); else if (child->sym) item_make(child, ':', " %s", - _(menu_get_prompt(child))); + menu_get_prompt(child)); else item_make(child, ':', "*** %s ***", - _(menu_get_prompt(child))); + menu_get_prompt(child)); if (child->sym == active){ last_top_row = top_row(curses_menu); @@ -1270,8 +1306,8 @@ static void conf_choice(struct menu *menu) } i++; } - show_menu(prompt ? _(prompt) : _("Choice Menu"), - _(radiolist_instructions), + show_menu(prompt ? prompt : "Choice Menu", + radiolist_instructions, selected_index, &last_top_row); while (!global_exit) { @@ -1296,9 +1332,11 @@ static void conf_choice(struct menu *menu) break; switch (res) { case KEY_DOWN: + case 'j': menu_driver(curses_menu, REQ_DOWN_ITEM); break; case KEY_UP: + case 'k': menu_driver(curses_menu, REQ_UP_ITEM); break; case KEY_NPAGE: @@ -1358,19 +1396,19 @@ static void conf_string(struct menu *menu) switch (sym_get_type(menu->sym)) { case S_INT: - heading = _(inputbox_instructions_int); + heading = inputbox_instructions_int; break; case S_HEX: - heading = _(inputbox_instructions_hex); + heading = inputbox_instructions_hex; break; case S_STRING: - heading = _(inputbox_instructions_string); + heading = inputbox_instructions_string; break; default: - heading = _("Internal nconf error!"); + heading = "Internal nconf error!"; } res = dialog_inputbox(main_window, - prompt ? _(prompt) : _("Main Menu"), + prompt ? prompt : "Main Menu", heading, sym_get_string_value(menu->sym), &dialog_input_result, @@ -1381,7 +1419,7 @@ static void conf_string(struct menu *menu) dialog_input_result)) return; btn_dialog(main_window, - _("You have made an invalid entry."), 0); + "You have made an invalid entry.", 0); break; case 1: show_help(menu); @@ -1407,14 +1445,14 @@ static void conf_load(void) return; if (!conf_read(dialog_input_result)) { set_config_filename(dialog_input_result); - sym_set_change_count(1); + conf_set_changed(true); return; } - btn_dialog(main_window, _("File does not exist!"), 0); + btn_dialog(main_window, "File does not exist!", 0); break; case 1: show_scroll_win(main_window, - _("Load Alternate Configuration"), + "Load Alternate Configuration", load_config_help); break; case KEY_EXIT: @@ -1441,13 +1479,12 @@ static void conf_save(void) set_config_filename(dialog_input_result); return; } - btn_dialog(main_window, _("Can't create file! " - "Probably a nonexistent directory."), + btn_dialog(main_window, "Can't create file!", 1, ""); break; case 1: show_scroll_win(main_window, - _("Save Alternate Configuration"), + "Save Alternate Configuration", save_config_help); break; case KEY_EXIT: @@ -1480,10 +1517,6 @@ int main(int ac, char **av) int lines, columns; char *mode; - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); - if (ac > 1 && strcmp(av[1], "-s") == 0) { /* Silence conf_read() until the real callback is set up */ conf_set_message_callback(NULL); @@ -1531,9 +1564,9 @@ int main(int ac, char **av) menu_opts_on(curses_menu, O_NONCYCLIC); menu_opts_on(curses_menu, O_IGNORECASE); set_menu_mark(curses_menu, " "); - set_menu_fore(curses_menu, attributes[MAIN_MENU_FORE]); - set_menu_back(curses_menu, attributes[MAIN_MENU_BACK]); - set_menu_grey(curses_menu, attributes[MAIN_MENU_GREY]); + set_menu_fore(curses_menu, attr_main_menu_fore); + set_menu_back(curses_menu, attr_main_menu_back); + set_menu_grey(curses_menu, attr_main_menu_grey); set_config_filename(conf_get_configname()); setup_windows(); @@ -1541,8 +1574,8 @@ int main(int ac, char **av) /* check for KEY_FUNC(1) */ if (has_key(KEY_F(1)) == FALSE) { show_scroll_win(main_window, - _("Instructions"), - _(menu_no_f_instructions)); + "Instructions", + menu_no_f_instructions); } conf_set_message_callback(conf_message_callback); diff --git a/support/kconfig/nconf.gui.c b/support/kconfig/nconf.gui.c index 88874acfda..25a7263ef3 100644 --- a/support/kconfig/nconf.gui.c +++ b/support/kconfig/nconf.gui.c @@ -1,176 +1,126 @@ +// SPDX-License-Identifier: GPL-2.0 /* - * Copyright (C) 2008 Nir Tzachar * * Derived from menuconfig. - * */ #include "nconf.h" #include "lkc.h" -/* a list of all the different widgets we use */ -attributes_t attributes[ATTR_MAX+1] = {0}; - -/* available colors: - COLOR_BLACK 0 - COLOR_RED 1 - COLOR_GREEN 2 - COLOR_YELLOW 3 - COLOR_BLUE 4 - COLOR_MAGENTA 5 - COLOR_CYAN 6 - COLOR_WHITE 7 - */ -static void set_normal_colors(void) -{ - init_pair(NORMAL, -1, -1); - init_pair(MAIN_HEADING, COLOR_MAGENTA, -1); - - /* FORE is for the selected item */ - init_pair(MAIN_MENU_FORE, -1, -1); - /* BACK for all the rest */ - init_pair(MAIN_MENU_BACK, -1, -1); - init_pair(MAIN_MENU_GREY, -1, -1); - init_pair(MAIN_MENU_HEADING, COLOR_GREEN, -1); - init_pair(MAIN_MENU_BOX, COLOR_YELLOW, -1); - - init_pair(SCROLLWIN_TEXT, -1, -1); - init_pair(SCROLLWIN_HEADING, COLOR_GREEN, -1); - init_pair(SCROLLWIN_BOX, COLOR_YELLOW, -1); - - init_pair(DIALOG_TEXT, -1, -1); - init_pair(DIALOG_BOX, COLOR_YELLOW, -1); - init_pair(DIALOG_MENU_BACK, COLOR_YELLOW, -1); - init_pair(DIALOG_MENU_FORE, COLOR_RED, -1); - - init_pair(INPUT_BOX, COLOR_YELLOW, -1); - init_pair(INPUT_HEADING, COLOR_GREEN, -1); - init_pair(INPUT_TEXT, -1, -1); - init_pair(INPUT_FIELD, -1, -1); - - init_pair(FUNCTION_HIGHLIGHT, -1, -1); - init_pair(FUNCTION_TEXT, COLOR_YELLOW, -1); -} - -/* available attributes: - A_NORMAL Normal display (no highlight) - A_STANDOUT Best highlighting mode of the terminal. - A_UNDERLINE Underlining - A_REVERSE Reverse video - A_BLINK Blinking - A_DIM Half bright - A_BOLD Extra bright or bold - A_PROTECT Protected mode - A_INVIS Invisible or blank mode - A_ALTCHARSET Alternate character set - A_CHARTEXT Bit-mask to extract a character - COLOR_PAIR(n) Color-pair number n - */ -static void normal_color_theme(void) -{ - /* automatically add color... */ -#define mkattr(name, attr) do { \ -attributes[name] = attr | COLOR_PAIR(name); } while (0) - mkattr(NORMAL, NORMAL); - mkattr(MAIN_HEADING, A_BOLD | A_UNDERLINE); - - mkattr(MAIN_MENU_FORE, A_REVERSE); - mkattr(MAIN_MENU_BACK, A_NORMAL); - mkattr(MAIN_MENU_GREY, A_NORMAL); - mkattr(MAIN_MENU_HEADING, A_BOLD); - mkattr(MAIN_MENU_BOX, A_NORMAL); - - mkattr(SCROLLWIN_TEXT, A_NORMAL); - mkattr(SCROLLWIN_HEADING, A_BOLD); - mkattr(SCROLLWIN_BOX, A_BOLD); - - mkattr(DIALOG_TEXT, A_BOLD); - mkattr(DIALOG_BOX, A_BOLD); - mkattr(DIALOG_MENU_FORE, A_STANDOUT); - mkattr(DIALOG_MENU_BACK, A_NORMAL); - - mkattr(INPUT_BOX, A_NORMAL); - mkattr(INPUT_HEADING, A_BOLD); - mkattr(INPUT_TEXT, A_NORMAL); - mkattr(INPUT_FIELD, A_UNDERLINE); - - mkattr(FUNCTION_HIGHLIGHT, A_BOLD); - mkattr(FUNCTION_TEXT, A_REVERSE); -} - -static void no_colors_theme(void) -{ - /* automatically add highlight, no color */ -#define mkattrn(name, attr) { attributes[name] = attr; } - - mkattrn(NORMAL, NORMAL); - mkattrn(MAIN_HEADING, A_BOLD | A_UNDERLINE); - - mkattrn(MAIN_MENU_FORE, A_STANDOUT); - mkattrn(MAIN_MENU_BACK, A_NORMAL); - mkattrn(MAIN_MENU_GREY, A_NORMAL); - mkattrn(MAIN_MENU_HEADING, A_BOLD); - mkattrn(MAIN_MENU_BOX, A_NORMAL); - - mkattrn(SCROLLWIN_TEXT, A_NORMAL); - mkattrn(SCROLLWIN_HEADING, A_BOLD); - mkattrn(SCROLLWIN_BOX, A_BOLD); - - mkattrn(DIALOG_TEXT, A_NORMAL); - mkattrn(DIALOG_BOX, A_BOLD); - mkattrn(DIALOG_MENU_FORE, A_STANDOUT); - mkattrn(DIALOG_MENU_BACK, A_NORMAL); - - mkattrn(INPUT_BOX, A_BOLD); - mkattrn(INPUT_HEADING, A_BOLD); - mkattrn(INPUT_TEXT, A_NORMAL); - mkattrn(INPUT_FIELD, A_UNDERLINE); - - mkattrn(FUNCTION_HIGHLIGHT, A_BOLD); - mkattrn(FUNCTION_TEXT, A_REVERSE); -} +int attr_normal; +int attr_main_heading; +int attr_main_menu_box; +int attr_main_menu_fore; +int attr_main_menu_back; +int attr_main_menu_grey; +int attr_main_menu_heading; +int attr_scrollwin_text; +int attr_scrollwin_heading; +int attr_scrollwin_box; +int attr_dialog_text; +int attr_dialog_menu_fore; +int attr_dialog_menu_back; +int attr_dialog_box; +int attr_input_box; +int attr_input_heading; +int attr_input_text; +int attr_input_field; +int attr_function_text; +int attr_function_highlight; + +#define COLOR_ATTR(_at, _fg, _bg, _hl) \ + { .attr = &(_at), .has_color = true, .color_fg = _fg, .color_bg = _bg, .highlight = _hl } +#define NO_COLOR_ATTR(_at, _hl) \ + { .attr = &(_at), .has_color = false, .highlight = _hl } +#define COLOR_DEFAULT -1 + +struct nconf_attr_param { + int *attr; + bool has_color; + int color_fg; + int color_bg; + int highlight; +}; + +static const struct nconf_attr_param color_theme_params[] = { + COLOR_ATTR(attr_normal, COLOR_DEFAULT, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_main_heading, COLOR_MAGENTA, COLOR_DEFAULT, A_BOLD | A_UNDERLINE), + COLOR_ATTR(attr_main_menu_box, COLOR_YELLOW, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_main_menu_fore, COLOR_DEFAULT, COLOR_DEFAULT, A_REVERSE), + COLOR_ATTR(attr_main_menu_back, COLOR_DEFAULT, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_main_menu_grey, COLOR_DEFAULT, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_main_menu_heading, COLOR_GREEN, COLOR_DEFAULT, A_BOLD), + COLOR_ATTR(attr_scrollwin_text, COLOR_DEFAULT, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_scrollwin_heading, COLOR_GREEN, COLOR_DEFAULT, A_BOLD), + COLOR_ATTR(attr_scrollwin_box, COLOR_YELLOW, COLOR_DEFAULT, A_BOLD), + COLOR_ATTR(attr_dialog_text, COLOR_DEFAULT, COLOR_DEFAULT, A_BOLD), + COLOR_ATTR(attr_dialog_menu_fore, COLOR_RED, COLOR_DEFAULT, A_STANDOUT), + COLOR_ATTR(attr_dialog_menu_back, COLOR_YELLOW, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_dialog_box, COLOR_YELLOW, COLOR_DEFAULT, A_BOLD), + COLOR_ATTR(attr_input_box, COLOR_YELLOW, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_input_heading, COLOR_GREEN, COLOR_DEFAULT, A_BOLD), + COLOR_ATTR(attr_input_text, COLOR_DEFAULT, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_input_field, COLOR_DEFAULT, COLOR_DEFAULT, A_UNDERLINE), + COLOR_ATTR(attr_function_text, COLOR_YELLOW, COLOR_DEFAULT, A_REVERSE), + COLOR_ATTR(attr_function_highlight, COLOR_DEFAULT, COLOR_DEFAULT, A_BOLD), + { /* sentinel */ } +}; + +static const struct nconf_attr_param no_color_theme_params[] = { + NO_COLOR_ATTR(attr_normal, A_NORMAL), + NO_COLOR_ATTR(attr_main_heading, A_BOLD | A_UNDERLINE), + NO_COLOR_ATTR(attr_main_menu_box, A_NORMAL), + NO_COLOR_ATTR(attr_main_menu_fore, A_STANDOUT), + NO_COLOR_ATTR(attr_main_menu_back, A_NORMAL), + NO_COLOR_ATTR(attr_main_menu_grey, A_NORMAL), + NO_COLOR_ATTR(attr_main_menu_heading, A_BOLD), + NO_COLOR_ATTR(attr_scrollwin_text, A_NORMAL), + NO_COLOR_ATTR(attr_scrollwin_heading, A_BOLD), + NO_COLOR_ATTR(attr_scrollwin_box, A_BOLD), + NO_COLOR_ATTR(attr_dialog_text, A_NORMAL), + NO_COLOR_ATTR(attr_dialog_menu_fore, A_STANDOUT), + NO_COLOR_ATTR(attr_dialog_menu_back, A_NORMAL), + NO_COLOR_ATTR(attr_dialog_box, A_BOLD), + NO_COLOR_ATTR(attr_input_box, A_BOLD), + NO_COLOR_ATTR(attr_input_heading, A_BOLD), + NO_COLOR_ATTR(attr_input_text, A_NORMAL), + NO_COLOR_ATTR(attr_input_field, A_UNDERLINE), + NO_COLOR_ATTR(attr_function_text, A_REVERSE), + NO_COLOR_ATTR(attr_function_highlight, A_BOLD), + { /* sentinel */ } +}; void set_colors(void) { - start_color(); - use_default_colors(); - set_normal_colors(); + const struct nconf_attr_param *p; + int pair = 0; + if (has_colors()) { - normal_color_theme(); + start_color(); + use_default_colors(); + p = color_theme_params; } else { - /* give defaults */ - no_colors_theme(); + p = no_color_theme_params; } -} + for (; p->attr; p++) { + int attr = p->highlight; + + if (p->has_color) { + pair++; + init_pair(pair, p->color_fg, p->color_bg); + attr |= COLOR_PAIR(pair); + } + + *p->attr = attr; + } +} /* this changes the windows attributes !!! */ -void print_in_middle(WINDOW *win, - int starty, - int startx, - int width, - const char *string, - chtype color) -{ int length, x, y; - float temp; - - - if (win == NULL) - win = stdscr; - getyx(win, y, x); - if (startx != 0) - x = startx; - if (starty != 0) - y = starty; - if (width == 0) - width = 80; - - length = strlen(string); - temp = (width - length) / 2; - x = startx + (int)temp; - (void) wattrset(win, color); - mvwprintw(win, y, x, "%s", string); - refresh(); +void print_in_middle(WINDOW *win, int y, int width, const char *str, int attrs) +{ + wattrset(win, attrs); + mvwprintw(win, y, (width - strlen(str)) / 2, "%s", str); } int get_line_no(const char *text) @@ -295,14 +245,14 @@ int btn_dialog(WINDOW *main_window, const char *msg, int btn_num, ...) msg_win = derwin(win, win_rows-2, msg_width, 1, 1+(total_width+2-msg_width)/2); - set_menu_fore(menu, attributes[DIALOG_MENU_FORE]); - set_menu_back(menu, attributes[DIALOG_MENU_BACK]); + set_menu_fore(menu, attr_dialog_menu_fore); + set_menu_back(menu, attr_dialog_menu_back); - (void) wattrset(win, attributes[DIALOG_BOX]); + wattrset(win, attr_dialog_box); box(win, 0, 0); /* print message */ - (void) wattrset(msg_win, attributes[DIALOG_TEXT]); + wattrset(msg_win, attr_dialog_text); fill_window(msg_win, msg); set_menu_win(menu, win); @@ -406,16 +356,16 @@ int dialog_inputbox(WINDOW *main_window, form_win = derwin(win, 1, prompt_width, prompt_lines+3, 2); keypad(form_win, TRUE); - (void) wattrset(form_win, attributes[INPUT_FIELD]); + wattrset(form_win, attr_input_field); - (void) wattrset(win, attributes[INPUT_BOX]); + wattrset(win, attr_input_box); box(win, 0, 0); - (void) wattrset(win, attributes[INPUT_HEADING]); + wattrset(win, attr_input_heading); if (title) mvwprintw(win, 0, 3, "%s", title); /* print message */ - (void) wattrset(prompt_win, attributes[INPUT_TEXT]); + wattrset(prompt_win, attr_input_text); fill_window(prompt_win, prompt); mvwprintw(form_win, 0, 0, "%*s", prompt_width, " "); @@ -440,7 +390,8 @@ int dialog_inputbox(WINDOW *main_window, case KEY_F(F_EXIT): case KEY_F(F_BACK): break; - case 127: + case 8: /* ^H */ + case 127: /* ^? */ case KEY_BACKSPACE: if (cursor_position > 0) { memmove(&result[cursor_position-1], @@ -546,10 +497,17 @@ void refresh_all_windows(WINDOW *main_window) refresh(); } -/* layman's scrollable window... */ void show_scroll_win(WINDOW *main_window, const char *title, const char *text) +{ + (void)show_scroll_win_ext(main_window, title, (char *)text, NULL, NULL, NULL, NULL); +} + +/* layman's scrollable window... */ +int show_scroll_win_ext(WINDOW *main_window, const char *title, char *text, + int *vscroll, int *hscroll, + extra_key_cb_fn extra_key_cb, void *data) { int res; int total_lines = get_line_no(text); @@ -563,6 +521,12 @@ void show_scroll_win(WINDOW *main_window, WINDOW *win; WINDOW *pad; PANEL *panel; + bool done = false; + + if (hscroll) + start_x = *hscroll; + if (vscroll) + start_y = *vscroll; getmaxyx(stdscr, lines, columns); @@ -576,7 +540,7 @@ void show_scroll_win(WINDOW *main_window, /* create the pad */ pad = newpad(total_lines+10, total_cols+10); - (void) wattrset(pad, attributes[SCROLLWIN_TEXT]); + wattrset(pad, attr_scrollwin_text); fill_window(pad, text); win_lines = min(total_lines+4, lines-2); @@ -591,23 +555,21 @@ void show_scroll_win(WINDOW *main_window, win = newwin(win_lines, win_cols, y, x); keypad(win, TRUE); /* show the help in the help window, and show the help panel */ - (void) wattrset(win, attributes[SCROLLWIN_BOX]); + wattrset(win, attr_scrollwin_box); box(win, 0, 0); - (void) wattrset(win, attributes[SCROLLWIN_HEADING]); + wattrset(win, attr_scrollwin_heading); mvwprintw(win, 0, 3, " %s ", title); panel = new_panel(win); /* handle scrolling */ - do { - + while (!done) { copywin(pad, win, start_y, start_x, 2, 2, text_lines, text_cols, 0); print_in_middle(win, text_lines+2, - 0, text_cols, "", - attributes[DIALOG_MENU_FORE]); + attr_dialog_menu_fore); wrefresh(win); res = wgetch(win); @@ -643,8 +605,18 @@ void show_scroll_win(WINDOW *main_window, case 'l': start_x++; break; + default: + if (extra_key_cb) { + size_t start = (get_line(text, start_y) - text); + size_t end = (get_line(text, start_y + text_lines) - text); + + if (extra_key_cb(res, start, end, data)) { + done = true; + break; + } + } } - if (res == 10 || res == 27 || res == 'q' || + if (res == 0 || res == 10 || res == 27 || res == 'q' || res == KEY_F(F_HELP) || res == KEY_F(F_BACK) || res == KEY_F(F_EXIT)) break; @@ -656,9 +628,14 @@ void show_scroll_win(WINDOW *main_window, start_x = 0; if (start_x >= total_cols-text_cols) start_x = total_cols-text_cols; - } while (res); + } + if (hscroll) + *hscroll = start_x; + if (vscroll) + *vscroll = start_y; del_panel(panel); delwin(win); refresh_all_windows(main_window); + return res; } diff --git a/support/kconfig/nconf.h b/support/kconfig/nconf.h index 9f6f21d3b0..ab836d5826 100644 --- a/support/kconfig/nconf.h +++ b/support/kconfig/nconf.h @@ -1,9 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* - * Copyright (C) 2008 Nir Tzachar * * Derived from menuconfig. - * */ #include @@ -14,7 +13,6 @@ #include #include #include -#include #include #include #include @@ -34,30 +32,26 @@ typeof(b) _b = b;\ _a < _b ? _a : _b; }) -typedef enum { - NORMAL = 1, - MAIN_HEADING, - MAIN_MENU_BOX, - MAIN_MENU_FORE, - MAIN_MENU_BACK, - MAIN_MENU_GREY, - MAIN_MENU_HEADING, - SCROLLWIN_TEXT, - SCROLLWIN_HEADING, - SCROLLWIN_BOX, - DIALOG_TEXT, - DIALOG_MENU_FORE, - DIALOG_MENU_BACK, - DIALOG_BOX, - INPUT_BOX, - INPUT_HEADING, - INPUT_TEXT, - INPUT_FIELD, - FUNCTION_TEXT, - FUNCTION_HIGHLIGHT, - ATTR_MAX -} attributes_t; -extern attributes_t attributes[]; +extern int attr_normal; +extern int attr_main_heading; +extern int attr_main_menu_box; +extern int attr_main_menu_fore; +extern int attr_main_menu_back; +extern int attr_main_menu_grey; +extern int attr_main_menu_heading; +extern int attr_scrollwin_text; +extern int attr_scrollwin_heading; +extern int attr_scrollwin_box; +extern int attr_dialog_text; +extern int attr_dialog_menu_fore; +extern int attr_dialog_menu_back; +extern int attr_dialog_box; +extern int attr_input_box; +extern int attr_input_heading; +extern int attr_input_text; +extern int attr_input_field; +extern int attr_function_text; +extern int attr_function_highlight; typedef enum { F_HELP = 1, @@ -73,13 +67,10 @@ typedef enum { void set_colors(void); +typedef int (*extra_key_cb_fn)(int, size_t, size_t, void *); + /* this changes the windows attributes !!! */ -void print_in_middle(WINDOW *win, - int starty, - int startx, - int width, - const char *string, - chtype color); +void print_in_middle(WINDOW *win, int y, int width, const char *str, int attrs); int get_line_length(const char *line); int get_line_no(const char *text); const char *get_line(const char *text, int line_no); @@ -89,6 +80,9 @@ int dialog_inputbox(WINDOW *main_window, const char *title, const char *prompt, const char *init, char **resultp, int *result_len); void refresh_all_windows(WINDOW *main_window); +int show_scroll_win_ext(WINDOW *main_window, const char *title, char *text, + int *vscroll, int *hscroll, + extra_key_cb_fn extra_key_cb, void *data); void show_scroll_win(WINDOW *main_window, const char *title, const char *text); diff --git a/support/kconfig/parser.tab.c_shipped b/support/kconfig/parser.tab.c_shipped new file mode 100644 index 0000000000..092da33306 --- /dev/null +++ b/support/kconfig/parser.tab.c_shipped @@ -0,0 +1,2189 @@ +/* A Bison parser, made by GNU Bison 3.8.2. */ + +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, + Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output, and Bison version. */ +#define YYBISON 30802 + +/* Bison version string. */ +#define YYBISON_VERSION "3.8.2" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + + + + +/* First part of user prologue. */ + + +#include +#include +#include +#include +#include +#include + +#include "lkc.h" +#include "internal.h" +#include "preprocess.h" + +#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) + +#define PRINTD 0x0001 +#define DEBUG_PARSE 0x0002 + +int cdebug = PRINTD; + +static void yyerror(const char *err); +static void zconfprint(const char *err, ...); +static void zconf_error(const char *err, ...); +static bool zconf_endtoken(const char *tokenname, + const char *expected_tokenname); + +struct menu *current_menu, *current_entry; + + + +# ifndef YY_CAST +# ifdef __cplusplus +# define YY_CAST(Type, Val) static_cast (Val) +# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) +# else +# define YY_CAST(Type, Val) ((Type) (Val)) +# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) +# endif +# endif +# ifndef YY_NULLPTR +# if defined __cplusplus +# if 201103L <= __cplusplus +# define YY_NULLPTR nullptr +# else +# define YY_NULLPTR 0 +# endif +# else +# define YY_NULLPTR ((void*)0) +# endif +# endif + +#include "parser.tab.h" +/* Symbol kind. */ +enum yysymbol_kind_t +{ + YYSYMBOL_YYEMPTY = -2, + YYSYMBOL_YYEOF = 0, /* "end of file" */ + YYSYMBOL_YYerror = 1, /* error */ + YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ + YYSYMBOL_T_HELPTEXT = 3, /* T_HELPTEXT */ + YYSYMBOL_T_WORD = 4, /* T_WORD */ + YYSYMBOL_T_WORD_QUOTE = 5, /* T_WORD_QUOTE */ + YYSYMBOL_T_BOOL = 6, /* T_BOOL */ + YYSYMBOL_T_CHOICE = 7, /* T_CHOICE */ + YYSYMBOL_T_CLOSE_PAREN = 8, /* T_CLOSE_PAREN */ + YYSYMBOL_T_COLON_EQUAL = 9, /* T_COLON_EQUAL */ + YYSYMBOL_T_COMMENT = 10, /* T_COMMENT */ + YYSYMBOL_T_CONFIG = 11, /* T_CONFIG */ + YYSYMBOL_T_DEFAULT = 12, /* T_DEFAULT */ + YYSYMBOL_T_DEF_BOOL = 13, /* T_DEF_BOOL */ + YYSYMBOL_T_DEF_TRISTATE = 14, /* T_DEF_TRISTATE */ + YYSYMBOL_T_DEPENDS = 15, /* T_DEPENDS */ + YYSYMBOL_T_ENDCHOICE = 16, /* T_ENDCHOICE */ + YYSYMBOL_T_ENDIF = 17, /* T_ENDIF */ + YYSYMBOL_T_ENDMENU = 18, /* T_ENDMENU */ + YYSYMBOL_T_HELP = 19, /* T_HELP */ + YYSYMBOL_T_HEX = 20, /* T_HEX */ + YYSYMBOL_T_IF = 21, /* T_IF */ + YYSYMBOL_T_IMPLY = 22, /* T_IMPLY */ + YYSYMBOL_T_INT = 23, /* T_INT */ + YYSYMBOL_T_MAINMENU = 24, /* T_MAINMENU */ + YYSYMBOL_T_MENU = 25, /* T_MENU */ + YYSYMBOL_T_MENUCONFIG = 26, /* T_MENUCONFIG */ + YYSYMBOL_T_MODULES = 27, /* T_MODULES */ + YYSYMBOL_T_ON = 28, /* T_ON */ + YYSYMBOL_T_OPEN_PAREN = 29, /* T_OPEN_PAREN */ + YYSYMBOL_T_OPTIONAL = 30, /* T_OPTIONAL */ + YYSYMBOL_T_PLUS_EQUAL = 31, /* T_PLUS_EQUAL */ + YYSYMBOL_T_PROMPT = 32, /* T_PROMPT */ + YYSYMBOL_T_RANGE = 33, /* T_RANGE */ + YYSYMBOL_T_SELECT = 34, /* T_SELECT */ + YYSYMBOL_T_SOURCE = 35, /* T_SOURCE */ + YYSYMBOL_T_STRING = 36, /* T_STRING */ + YYSYMBOL_T_TRISTATE = 37, /* T_TRISTATE */ + YYSYMBOL_T_VISIBLE = 38, /* T_VISIBLE */ + YYSYMBOL_T_EOL = 39, /* T_EOL */ + YYSYMBOL_T_ASSIGN_VAL = 40, /* T_ASSIGN_VAL */ + YYSYMBOL_T_OR = 41, /* T_OR */ + YYSYMBOL_T_AND = 42, /* T_AND */ + YYSYMBOL_T_EQUAL = 43, /* T_EQUAL */ + YYSYMBOL_T_UNEQUAL = 44, /* T_UNEQUAL */ + YYSYMBOL_T_LESS = 45, /* T_LESS */ + YYSYMBOL_T_LESS_EQUAL = 46, /* T_LESS_EQUAL */ + YYSYMBOL_T_GREATER = 47, /* T_GREATER */ + YYSYMBOL_T_GREATER_EQUAL = 48, /* T_GREATER_EQUAL */ + YYSYMBOL_T_NOT = 49, /* T_NOT */ + YYSYMBOL_YYACCEPT = 50, /* $accept */ + YYSYMBOL_input = 51, /* input */ + YYSYMBOL_mainmenu_stmt = 52, /* mainmenu_stmt */ + YYSYMBOL_stmt_list = 53, /* stmt_list */ + YYSYMBOL_common_stmt = 54, /* common_stmt */ + YYSYMBOL_config_entry_start = 55, /* config_entry_start */ + YYSYMBOL_config_stmt = 56, /* config_stmt */ + YYSYMBOL_menuconfig_entry_start = 57, /* menuconfig_entry_start */ + YYSYMBOL_menuconfig_stmt = 58, /* menuconfig_stmt */ + YYSYMBOL_config_option_list = 59, /* config_option_list */ + YYSYMBOL_config_option = 60, /* config_option */ + YYSYMBOL_choice = 61, /* choice */ + YYSYMBOL_choice_entry = 62, /* choice_entry */ + YYSYMBOL_choice_end = 63, /* choice_end */ + YYSYMBOL_choice_stmt = 64, /* choice_stmt */ + YYSYMBOL_choice_option_list = 65, /* choice_option_list */ + YYSYMBOL_choice_option = 66, /* choice_option */ + YYSYMBOL_type = 67, /* type */ + YYSYMBOL_logic_type = 68, /* logic_type */ + YYSYMBOL_default = 69, /* default */ + YYSYMBOL_choice_block = 70, /* choice_block */ + YYSYMBOL_if_entry = 71, /* if_entry */ + YYSYMBOL_if_end = 72, /* if_end */ + YYSYMBOL_if_stmt = 73, /* if_stmt */ + YYSYMBOL_menu = 74, /* menu */ + YYSYMBOL_menu_entry = 75, /* menu_entry */ + YYSYMBOL_menu_end = 76, /* menu_end */ + YYSYMBOL_menu_stmt = 77, /* menu_stmt */ + YYSYMBOL_menu_option_list = 78, /* menu_option_list */ + YYSYMBOL_source_stmt = 79, /* source_stmt */ + YYSYMBOL_comment = 80, /* comment */ + YYSYMBOL_comment_stmt = 81, /* comment_stmt */ + YYSYMBOL_comment_option_list = 82, /* comment_option_list */ + YYSYMBOL_help_start = 83, /* help_start */ + YYSYMBOL_help = 84, /* help */ + YYSYMBOL_depends = 85, /* depends */ + YYSYMBOL_visible = 86, /* visible */ + YYSYMBOL_prompt_stmt_opt = 87, /* prompt_stmt_opt */ + YYSYMBOL_end = 88, /* end */ + YYSYMBOL_if_expr = 89, /* if_expr */ + YYSYMBOL_expr = 90, /* expr */ + YYSYMBOL_nonconst_symbol = 91, /* nonconst_symbol */ + YYSYMBOL_symbol = 92, /* symbol */ + YYSYMBOL_assignment_stmt = 93, /* assignment_stmt */ + YYSYMBOL_assign_op = 94, /* assign_op */ + YYSYMBOL_assign_val = 95 /* assign_val */ +}; +typedef enum yysymbol_kind_t yysymbol_kind_t; + + + + +#ifdef short +# undef short +#endif + +/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure + and (if available) are included + so that the code can choose integer types of a good width. */ + +#ifndef __PTRDIFF_MAX__ +# include /* INFRINGES ON USER NAME SPACE */ +# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_STDINT_H +# endif +#endif + +/* Narrow types that promote to a signed type and that can represent a + signed or unsigned integer of at least N bits. In tables they can + save space and decrease cache pressure. Promoting to a signed type + helps avoid bugs in integer arithmetic. */ + +#ifdef __INT_LEAST8_MAX__ +typedef __INT_LEAST8_TYPE__ yytype_int8; +#elif defined YY_STDINT_H +typedef int_least8_t yytype_int8; +#else +typedef signed char yytype_int8; +#endif + +#ifdef __INT_LEAST16_MAX__ +typedef __INT_LEAST16_TYPE__ yytype_int16; +#elif defined YY_STDINT_H +typedef int_least16_t yytype_int16; +#else +typedef short yytype_int16; +#endif + +/* Work around bug in HP-UX 11.23, which defines these macros + incorrectly for preprocessor constants. This workaround can likely + be removed in 2023, as HPE has promised support for HP-UX 11.23 + (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of + . */ +#ifdef __hpux +# undef UINT_LEAST8_MAX +# undef UINT_LEAST16_MAX +# define UINT_LEAST8_MAX 255 +# define UINT_LEAST16_MAX 65535 +#endif + +#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST8_TYPE__ yytype_uint8; +#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST8_MAX <= INT_MAX) +typedef uint_least8_t yytype_uint8; +#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX +typedef unsigned char yytype_uint8; +#else +typedef short yytype_uint8; +#endif + +#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST16_TYPE__ yytype_uint16; +#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST16_MAX <= INT_MAX) +typedef uint_least16_t yytype_uint16; +#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX +typedef unsigned short yytype_uint16; +#else +typedef int yytype_uint16; +#endif + +#ifndef YYPTRDIFF_T +# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ +# define YYPTRDIFF_T __PTRDIFF_TYPE__ +# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ +# elif defined PTRDIFF_MAX +# ifndef ptrdiff_t +# include /* INFRINGES ON USER NAME SPACE */ +# endif +# define YYPTRDIFF_T ptrdiff_t +# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX +# else +# define YYPTRDIFF_T long +# define YYPTRDIFF_MAXIMUM LONG_MAX +# endif +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned +# endif +#endif + +#define YYSIZE_MAXIMUM \ + YY_CAST (YYPTRDIFF_T, \ + (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ + ? YYPTRDIFF_MAXIMUM \ + : YY_CAST (YYSIZE_T, -1))) + +#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) + + +/* Stored state numbers (used for stacks). */ +typedef yytype_uint8 yy_state_t; + +/* State numbers in computations. */ +typedef int yy_state_fast_t; + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(Msgid) dgettext ("bison-runtime", Msgid) +# endif +# endif +# ifndef YY_ +# define YY_(Msgid) Msgid +# endif +#endif + + +#ifndef YY_ATTRIBUTE_PURE +# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define YY_ATTRIBUTE_PURE +# endif +#endif + +#ifndef YY_ATTRIBUTE_UNUSED +# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# else +# define YY_ATTRIBUTE_UNUSED +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YY_USE(E) ((void) (E)) +#else +# define YY_USE(E) /* empty */ +#endif + +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__ +# if __GNUC__ * 100 + __GNUC_MINOR__ < 407 +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") +# else +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# endif +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") +#else +# define YY_INITIAL_VALUE(Value) Value +#endif +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#endif + +#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ +# define YY_IGNORE_USELESS_CAST_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") +# define YY_IGNORE_USELESS_CAST_END \ + _Pragma ("GCC diagnostic pop") +#endif +#ifndef YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_END +#endif + + +#define YY_ASSERT(E) ((void) (0 && (E))) + +#if !defined yyoverflow + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS +# include /* INFRINGES ON USER NAME SPACE */ + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined EXIT_SUCCESS \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined EXIT_SUCCESS +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined EXIT_SUCCESS +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* !defined yyoverflow */ + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yy_state_t yyss_alloc; + YYSTYPE yyvs_alloc; +}; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +# define YYCOPY_NEEDED 1 + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYPTRDIFF_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / YYSIZEOF (*yyptr); \ + } \ + while (0) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYPTRDIFF_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (0) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 6 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 189 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 50 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 46 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 100 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 177 + +/* YYMAXUTOK -- Last valid token kind. */ +#define YYMAXUTOK 304 + + +/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, with out-of-bounds checking. */ +#define YYTRANSLATE(YYX) \ + (0 <= (YYX) && (YYX) <= YYMAXUTOK \ + ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ + : YYSYMBOL_YYUNDEF) + +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex. */ +static const yytype_int8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49 +}; + +#if YYDEBUG +/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +static const yytype_int16 yyrline[] = +{ + 0, 108, 108, 108, 112, 117, 119, 120, 121, 122, + 123, 127, 128, 129, 130, 131, 132, 137, 144, 149, + 156, 165, 167, 168, 169, 172, 178, 184, 193, 199, + 205, 211, 221, 230, 241, 249, 252, 254, 255, 256, + 259, 265, 271, 277, 284, 285, 286, 287, 290, 291, + 294, 295, 296, 298, 300, 305, 313, 321, 326, 333, + 338, 346, 349, 351, 352, 355, 364, 371, 374, 376, + 381, 387, 405, 412, 419, 421, 426, 427, 428, 431, + 432, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 449, 451, 452, 457, 460, 461, 462, 466, + 467 +}; +#endif + +/** Accessing symbol of state STATE. */ +#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) + +#if YYDEBUG || 0 +/* The user-facing name of the symbol whose (internal) number is + YYSYMBOL. No bounds checking. */ +static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; + +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "\"end of file\"", "error", "\"invalid token\"", "T_HELPTEXT", "T_WORD", + "T_WORD_QUOTE", "T_BOOL", "T_CHOICE", "T_CLOSE_PAREN", "T_COLON_EQUAL", + "T_COMMENT", "T_CONFIG", "T_DEFAULT", "T_DEF_BOOL", "T_DEF_TRISTATE", + "T_DEPENDS", "T_ENDCHOICE", "T_ENDIF", "T_ENDMENU", "T_HELP", "T_HEX", + "T_IF", "T_IMPLY", "T_INT", "T_MAINMENU", "T_MENU", "T_MENUCONFIG", + "T_MODULES", "T_ON", "T_OPEN_PAREN", "T_OPTIONAL", "T_PLUS_EQUAL", + "T_PROMPT", "T_RANGE", "T_SELECT", "T_SOURCE", "T_STRING", "T_TRISTATE", + "T_VISIBLE", "T_EOL", "T_ASSIGN_VAL", "T_OR", "T_AND", "T_EQUAL", + "T_UNEQUAL", "T_LESS", "T_LESS_EQUAL", "T_GREATER", "T_GREATER_EQUAL", + "T_NOT", "$accept", "input", "mainmenu_stmt", "stmt_list", "common_stmt", + "config_entry_start", "config_stmt", "menuconfig_entry_start", + "menuconfig_stmt", "config_option_list", "config_option", "choice", + "choice_entry", "choice_end", "choice_stmt", "choice_option_list", + "choice_option", "type", "logic_type", "default", "choice_block", + "if_entry", "if_end", "if_stmt", "menu", "menu_entry", "menu_end", + "menu_stmt", "menu_option_list", "source_stmt", "comment", + "comment_stmt", "comment_option_list", "help_start", "help", "depends", + "visible", "prompt_stmt_opt", "end", "if_expr", "expr", + "nonconst_symbol", "symbol", "assignment_stmt", "assign_op", + "assign_val", YY_NULLPTR +}; + +static const char * +yysymbol_name (yysymbol_kind_t yysymbol) +{ + return yytname[yysymbol]; +} +#endif + +#define YYPACT_NINF (-67) + +#define yypact_value_is_default(Yyn) \ + ((Yyn) == YYPACT_NINF) + +#define YYTABLE_NINF (-4) + +#define yytable_value_is_error(Yyn) \ + 0 + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +static const yytype_int16 yypact[] = +{ + 15, 13, 29, -67, 30, 19, -67, 59, 22, 11, + 23, 52, 60, -1, 62, 60, 63, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, 32, -67, -67, -67, + 37, -67, 33, -67, 47, -67, -1, -1, 34, -67, + 141, 48, 49, 53, 111, 111, 84, 142, 94, 6, + 94, 76, -67, -67, 58, -67, -67, 5, -67, -67, + -1, -1, 18, 18, 18, 18, 18, 18, -67, -67, + -67, -67, -67, -67, -67, 72, 67, -67, 60, -67, + 69, 97, 18, 60, -67, -67, -67, 104, -67, -1, + 110, -67, -67, 60, 79, 117, -67, 104, -67, -67, + 7, 88, 89, 93, -67, -67, -67, -67, -67, 114, + -67, -67, -67, -67, -67, -67, -67, 95, -67, -67, + -67, -67, -67, -67, -67, -1, -67, 114, -67, 114, + 18, 114, 114, 100, -6, -67, 114, -67, 114, 101, + -67, -67, -67, -1, 102, 40, 103, 112, 114, 115, + -67, -67, 116, 118, 122, -67, -9, -67, -67, -67, + -67, 126, -67, -67, -67, -67, -67 +}; + +/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ +static const yytype_int8 yydefact[] = +{ + 5, 0, 0, 5, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 6, 21, 13, + 21, 14, 36, 53, 7, 5, 11, 62, 5, 8, + 15, 68, 12, 16, 4, 10, 0, 97, 98, 96, + 99, 32, 0, 92, 0, 94, 0, 0, 0, 93, + 81, 0, 0, 0, 18, 20, 33, 0, 0, 59, + 0, 67, 9, 100, 0, 66, 17, 0, 89, 55, + 0, 0, 0, 0, 0, 0, 0, 0, 58, 19, + 65, 48, 50, 51, 52, 0, 0, 46, 0, 45, + 0, 0, 0, 0, 47, 49, 22, 74, 44, 0, + 0, 24, 23, 0, 0, 0, 37, 74, 39, 38, + 0, 0, 0, 0, 54, 35, 34, 57, 56, 79, + 64, 63, 61, 60, 69, 95, 88, 90, 91, 86, + 87, 82, 83, 84, 85, 0, 70, 79, 31, 79, + 0, 79, 79, 0, 79, 71, 79, 42, 79, 0, + 77, 78, 76, 0, 0, 0, 0, 0, 79, 0, + 75, 25, 0, 0, 0, 41, 80, 73, 72, 29, + 26, 0, 28, 27, 43, 40, 30 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -67, -67, -67, 24, 92, -67, -67, -67, -67, 130, + -67, -67, -67, -67, -67, -67, -67, -67, 80, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, 119, -42, -67, 65, -15, 25, + -46, -10, -66, -67, -67, -67 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_uint8 yydefgoto[] = +{ + 0, 2, 3, 4, 17, 18, 19, 20, 21, 54, + 96, 22, 23, 115, 24, 56, 106, 97, 98, 99, + 57, 25, 117, 26, 27, 28, 122, 29, 59, 30, + 31, 32, 61, 100, 101, 102, 121, 143, 116, 154, + 48, 49, 50, 33, 40, 64 +}; + +/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ +static const yytype_int16 yytable[] = +{ + 67, 68, 44, 43, 45, 52, 129, 130, 131, 132, + 133, 134, 36, 126, 109, 153, 37, 120, 5, 124, + 37, 85, 43, 45, 127, 128, 140, 7, 46, 6, + -3, 8, 70, 71, 9, 70, 71, 10, 38, 1, + 11, 12, 38, 118, 119, 123, 70, 71, 47, 58, + 39, 13, 60, 144, 39, 14, 15, 42, 34, -2, + 8, 35, 41, 9, 43, 16, 10, 51, 53, 11, + 12, 62, 65, 69, 158, 70, 71, 63, 137, 168, + 13, 70, 71, 141, 14, 15, 66, 78, 79, 155, + 81, 85, 80, 146, 16, 8, 103, 125, 9, 85, + 135, 10, 139, 86, 11, 12, 136, 166, 138, 142, + 111, 112, 113, 145, 104, 13, 105, 81, 147, 14, + 15, 95, 148, 82, 83, 84, 85, 150, 151, 16, + 86, 87, 152, 88, 89, 153, 107, 71, 90, 161, + 165, 167, 169, 91, 92, 93, 110, 94, 95, 114, + 55, 170, 11, 12, 172, 173, 0, 174, 111, 112, + 113, 175, 156, 13, 157, 176, 159, 160, 15, 162, + 0, 163, 149, 164, 0, 108, 0, 16, 0, 0, + 0, 0, 0, 171, 72, 73, 74, 75, 76, 77 +}; + +static const yytype_int16 yycheck[] = +{ + 46, 47, 12, 4, 5, 15, 72, 73, 74, 75, + 76, 77, 1, 8, 56, 21, 9, 59, 5, 61, + 9, 15, 4, 5, 70, 71, 92, 3, 29, 0, + 0, 1, 41, 42, 4, 41, 42, 7, 31, 24, + 10, 11, 31, 58, 38, 60, 41, 42, 49, 25, + 43, 21, 28, 99, 43, 25, 26, 5, 39, 0, + 1, 39, 39, 4, 4, 35, 7, 5, 5, 10, + 11, 39, 39, 39, 140, 41, 42, 40, 88, 39, + 21, 41, 42, 93, 25, 26, 39, 39, 39, 135, + 6, 15, 39, 103, 35, 1, 12, 39, 4, 15, + 28, 7, 5, 19, 10, 11, 39, 153, 39, 5, + 16, 17, 18, 3, 30, 21, 32, 6, 39, 25, + 26, 37, 5, 12, 13, 14, 15, 39, 39, 35, + 19, 20, 39, 22, 23, 21, 56, 42, 27, 39, + 39, 39, 39, 32, 33, 34, 4, 36, 37, 57, + 20, 39, 10, 11, 39, 39, -1, 39, 16, 17, + 18, 39, 137, 21, 139, 39, 141, 142, 26, 144, + -1, 146, 107, 148, -1, 56, -1, 35, -1, -1, + -1, -1, -1, 158, 43, 44, 45, 46, 47, 48 +}; + +/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of + state STATE-NUM. */ +static const yytype_int8 yystos[] = +{ + 0, 24, 51, 52, 53, 5, 0, 53, 1, 4, + 7, 10, 11, 21, 25, 26, 35, 54, 55, 56, + 57, 58, 61, 62, 64, 71, 73, 74, 75, 77, + 79, 80, 81, 93, 39, 39, 1, 9, 31, 43, + 94, 39, 5, 4, 91, 5, 29, 49, 90, 91, + 92, 5, 91, 5, 59, 59, 65, 70, 53, 78, + 53, 82, 39, 40, 95, 39, 39, 90, 90, 39, + 41, 42, 43, 44, 45, 46, 47, 48, 39, 39, + 39, 6, 12, 13, 14, 15, 19, 20, 22, 23, + 27, 32, 33, 34, 36, 37, 60, 67, 68, 69, + 83, 84, 85, 12, 30, 32, 66, 68, 84, 85, + 4, 16, 17, 18, 54, 63, 88, 72, 88, 38, + 85, 86, 76, 88, 85, 39, 8, 90, 90, 92, + 92, 92, 92, 92, 92, 28, 39, 91, 39, 5, + 92, 91, 5, 87, 90, 3, 91, 39, 5, 87, + 39, 39, 39, 21, 89, 90, 89, 89, 92, 89, + 89, 39, 89, 89, 89, 39, 90, 39, 39, 39, + 39, 89, 39, 39, 39, 39, 39 +}; + +/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ +static const yytype_int8 yyr1[] = +{ + 0, 50, 51, 51, 52, 53, 53, 53, 53, 53, + 53, 54, 54, 54, 54, 54, 54, 55, 56, 57, + 58, 59, 59, 59, 59, 60, 60, 60, 60, 60, + 60, 60, 61, 62, 63, 64, 65, 65, 65, 65, + 66, 66, 66, 66, 67, 67, 67, 67, 68, 68, + 69, 69, 69, 70, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 78, 78, 79, 80, 81, 82, 82, + 83, 84, 85, 86, 87, 87, 88, 88, 88, 89, + 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 91, 92, 92, 93, 94, 94, 94, 95, + 95 +}; + +/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ +static const yytype_int8 yyr2[] = +{ + 0, 2, 2, 1, 3, 0, 2, 2, 2, 4, + 3, 1, 1, 1, 1, 1, 1, 3, 2, 3, + 2, 0, 2, 2, 2, 3, 4, 4, 4, 4, + 5, 2, 2, 2, 1, 3, 0, 2, 2, 2, + 4, 3, 2, 4, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 2, 3, 1, 3, 3, 2, + 1, 3, 0, 2, 2, 3, 3, 2, 0, 2, + 2, 2, 4, 3, 0, 2, 2, 2, 2, 0, + 2, 1, 3, 3, 3, 3, 3, 3, 3, 2, + 3, 3, 1, 1, 1, 4, 1, 1, 1, 0, + 1 +}; + + +enum { YYENOMEM = -2 }; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab +#define YYNOMEM goto yyexhaustedlab + + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ + do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ + while (0) + +/* Backward compatibility with an undocumented macro. + Use YYerror or YYUNDEF. */ +#define YYERRCODE YYUNDEF + + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) + + + + +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Kind, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) + + +/*-----------------------------------. +| Print this symbol's value on YYO. | +`-----------------------------------*/ + +static void +yy_symbol_value_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) +{ + FILE *yyoutput = yyo; + YY_USE (yyoutput); + if (!yyvaluep) + return; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YY_USE (yykind); + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + +/*---------------------------. +| Print this symbol on YYO. | +`---------------------------*/ + +static void +yy_symbol_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) +{ + YYFPRINTF (yyo, "%s %s (", + yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); + + yy_symbol_value_print (yyo, yykind, yyvaluep); + YYFPRINTF (yyo, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +static void +yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +static void +yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, + int yyrule) +{ + int yylno = yyrline[yyrule]; + int yynrhs = yyr2[yyrule]; + int yyi; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, + YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), + &yyvsp[(yyi + 1) - (yynrhs)]); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule); \ +} while (0) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) ((void) 0) +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + + + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +static void +yydestruct (const char *yymsg, + yysymbol_kind_t yykind, YYSTYPE *yyvaluep) +{ + YY_USE (yyvaluep); + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + switch (yykind) + { + case YYSYMBOL_choice_entry: /* choice_entry */ + { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + ((*yyvaluep).menu)->filename, ((*yyvaluep).menu)->lineno); + if (current_menu == ((*yyvaluep).menu)) + menu_end_menu(); +} + break; + + case YYSYMBOL_if_entry: /* if_entry */ + { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + ((*yyvaluep).menu)->filename, ((*yyvaluep).menu)->lineno); + if (current_menu == ((*yyvaluep).menu)) + menu_end_menu(); +} + break; + + case YYSYMBOL_menu_entry: /* menu_entry */ + { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + ((*yyvaluep).menu)->filename, ((*yyvaluep).menu)->lineno); + if (current_menu == ((*yyvaluep).menu)) + menu_end_menu(); +} + break; + + default: + break; + } + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + +/* Lookahead token kind. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; +/* Number of syntax errors so far. */ +int yynerrs; + + + + +/*----------. +| yyparse. | +`----------*/ + +int +yyparse (void) +{ + yy_state_fast_t yystate = 0; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus = 0; + + /* Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* Their size. */ + YYPTRDIFF_T yystacksize = YYINITDEPTH; + + /* The state stack: array, bottom, top. */ + yy_state_t yyssa[YYINITDEPTH]; + yy_state_t *yyss = yyssa; + yy_state_t *yyssp = yyss; + + /* The semantic value stack: array, bottom, top. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp = yyvs; + + int yyn; + /* The return value of yyparse. */ + int yyresult; + /* Lookahead symbol kind. */ + yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yychar = YYEMPTY; /* Cause a token to be read. */ + + goto yysetstate; + + +/*------------------------------------------------------------. +| yynewstate -- push a new state, which is found in yystate. | +`------------------------------------------------------------*/ +yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + +/*--------------------------------------------------------------------. +| yysetstate -- set current state (the top of the stack) to yystate. | +`--------------------------------------------------------------------*/ +yysetstate: + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + YY_ASSERT (0 <= yystate && yystate < YYNSTATES); + YY_IGNORE_USELESS_CAST_BEGIN + *yyssp = YY_CAST (yy_state_t, yystate); + YY_IGNORE_USELESS_CAST_END + YY_STACK_PRINT (yyss, yyssp); + + if (yyss + yystacksize - 1 <= yyssp) +#if !defined yyoverflow && !defined YYSTACK_RELOCATE + YYNOMEM; +#else + { + /* Get the current used size of the three stacks, in elements. */ + YYPTRDIFF_T yysize = yyssp - yyss + 1; + +# if defined yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + yy_state_t *yyss1 = yyss; + YYSTYPE *yyvs1 = yyvs; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * YYSIZEOF (*yyssp), + &yyvs1, yysize * YYSIZEOF (*yyvsp), + &yystacksize); + yyss = yyss1; + yyvs = yyvs1; + } +# else /* defined YYSTACK_RELOCATE */ + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + YYNOMEM; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yy_state_t *yyss1 = yyss; + union yyalloc *yyptr = + YY_CAST (union yyalloc *, + YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); + if (! yyptr) + YYNOMEM; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + YY_IGNORE_USELESS_CAST_BEGIN + YYDPRINTF ((stderr, "Stack size increased to %ld\n", + YY_CAST (long, yystacksize))); + YY_IGNORE_USELESS_CAST_END + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } +#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ + + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token\n")); + yychar = yylex (); + } + + if (yychar <= YYEOF) + { + yychar = YYEOF; + yytoken = YYSYMBOL_YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else if (yychar == YYerror) + { + /* The scanner already issued an error message, process directly + to error recovery. But do not keep the error token as + lookahead, it is too special and may lead us to an endless + loop in error recovery. */ + yychar = YYUNDEF; + yytoken = YYSYMBOL_YYerror; + goto yyerrlab1; + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + /* Discard the shifted token. */ + yychar = YYEMPTY; + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + '$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 4: /* mainmenu_stmt: T_MAINMENU T_WORD_QUOTE T_EOL */ +{ + menu_add_prompt(P_MENU, (yyvsp[-1].string), NULL); +} + break; + + case 9: /* stmt_list: stmt_list T_WORD error T_EOL */ + { zconf_error("unknown statement \"%s\"", (yyvsp[-2].string)); } + break; + + case 10: /* stmt_list: stmt_list error T_EOL */ + { zconf_error("invalid statement"); } + break; + + case 17: /* config_entry_start: T_CONFIG nonconst_symbol T_EOL */ +{ + (yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL; + menu_add_entry((yyvsp[-1].symbol)); + printd(DEBUG_PARSE, "%s:%d:config %s\n", cur_filename, cur_lineno, (yyvsp[-1].symbol)->name); +} + break; + + case 18: /* config_stmt: config_entry_start config_option_list */ +{ + printd(DEBUG_PARSE, "%s:%d:endconfig\n", cur_filename, cur_lineno); +} + break; + + case 19: /* menuconfig_entry_start: T_MENUCONFIG nonconst_symbol T_EOL */ +{ + (yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL; + menu_add_entry((yyvsp[-1].symbol)); + printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", cur_filename, cur_lineno, (yyvsp[-1].symbol)->name); +} + break; + + case 20: /* menuconfig_stmt: menuconfig_entry_start config_option_list */ +{ + if (current_entry->prompt) + current_entry->prompt->type = P_MENU; + else + zconfprint("warning: menuconfig statement without prompt"); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", cur_filename, cur_lineno); +} + break; + + case 25: /* config_option: type prompt_stmt_opt T_EOL */ +{ + menu_set_type((yyvsp[-2].type)); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", cur_filename, cur_lineno, (yyvsp[-2].type)); +} + break; + + case 26: /* config_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL */ +{ + menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:prompt\n", cur_filename, cur_lineno); +} + break; + + case 27: /* config_option: default expr if_expr T_EOL */ +{ + menu_add_expr(P_DEFAULT, (yyvsp[-2].expr), (yyvsp[-1].expr)); + if ((yyvsp[-3].type) != S_UNKNOWN) + menu_set_type((yyvsp[-3].type)); + printd(DEBUG_PARSE, "%s:%d:default(%u)\n", cur_filename, cur_lineno, + (yyvsp[-3].type)); +} + break; + + case 28: /* config_option: T_SELECT nonconst_symbol if_expr T_EOL */ +{ + menu_add_symbol(P_SELECT, (yyvsp[-2].symbol), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:select\n", cur_filename, cur_lineno); +} + break; + + case 29: /* config_option: T_IMPLY nonconst_symbol if_expr T_EOL */ +{ + menu_add_symbol(P_IMPLY, (yyvsp[-2].symbol), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:imply\n", cur_filename, cur_lineno); +} + break; + + case 30: /* config_option: T_RANGE symbol symbol if_expr T_EOL */ +{ + menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[-3].symbol), (yyvsp[-2].symbol)), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:range\n", cur_filename, cur_lineno); +} + break; + + case 31: /* config_option: T_MODULES T_EOL */ +{ + if (modules_sym) + zconf_error("symbol '%s' redefines option 'modules' already defined by symbol '%s'", + current_entry->sym->name, modules_sym->name); + modules_sym = current_entry->sym; +} + break; + + case 32: /* choice: T_CHOICE T_EOL */ +{ + struct symbol *sym = sym_lookup(NULL, SYMBOL_CHOICE); + sym->flags |= SYMBOL_NO_WRITE; + menu_add_entry(sym); + menu_add_expr(P_CHOICE, NULL, NULL); + printd(DEBUG_PARSE, "%s:%d:choice\n", cur_filename, cur_lineno); +} + break; + + case 33: /* choice_entry: choice choice_option_list */ +{ + if (!current_entry->prompt) { + fprintf(stderr, "%s:%d: error: choice must have a prompt\n", + current_entry->filename, current_entry->lineno); + yynerrs++; + } + + (yyval.menu) = menu_add_menu(); +} + break; + + case 34: /* choice_end: end */ +{ + if (zconf_endtoken((yyvsp[0].string), "choice")) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endchoice\n", cur_filename, cur_lineno); + } +} + break; + + case 40: /* choice_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL */ +{ + menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:prompt\n", cur_filename, cur_lineno); +} + break; + + case 41: /* choice_option: logic_type prompt_stmt_opt T_EOL */ +{ + menu_set_type((yyvsp[-2].type)); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", cur_filename, cur_lineno, (yyvsp[-2].type)); +} + break; + + case 42: /* choice_option: T_OPTIONAL T_EOL */ +{ + current_entry->sym->flags |= SYMBOL_OPTIONAL; + printd(DEBUG_PARSE, "%s:%d:optional\n", cur_filename, cur_lineno); +} + break; + + case 43: /* choice_option: T_DEFAULT nonconst_symbol if_expr T_EOL */ +{ + menu_add_symbol(P_DEFAULT, (yyvsp[-2].symbol), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:default\n", cur_filename, cur_lineno); +} + break; + + case 45: /* type: T_INT */ + { (yyval.type) = S_INT; } + break; + + case 46: /* type: T_HEX */ + { (yyval.type) = S_HEX; } + break; + + case 47: /* type: T_STRING */ + { (yyval.type) = S_STRING; } + break; + + case 48: /* logic_type: T_BOOL */ + { (yyval.type) = S_BOOLEAN; } + break; + + case 49: /* logic_type: T_TRISTATE */ + { (yyval.type) = S_TRISTATE; } + break; + + case 50: /* default: T_DEFAULT */ + { (yyval.type) = S_UNKNOWN; } + break; + + case 51: /* default: T_DEF_BOOL */ + { (yyval.type) = S_BOOLEAN; } + break; + + case 52: /* default: T_DEF_TRISTATE */ + { (yyval.type) = S_TRISTATE; } + break; + + case 55: /* if_entry: T_IF expr T_EOL */ +{ + printd(DEBUG_PARSE, "%s:%d:if\n", cur_filename, cur_lineno); + menu_add_entry(NULL); + menu_add_dep((yyvsp[-1].expr)); + (yyval.menu) = menu_add_menu(); +} + break; + + case 56: /* if_end: end */ +{ + if (zconf_endtoken((yyvsp[0].string), "if")) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endif\n", cur_filename, cur_lineno); + } +} + break; + + case 58: /* menu: T_MENU T_WORD_QUOTE T_EOL */ +{ + menu_add_entry(NULL); + menu_add_prompt(P_MENU, (yyvsp[-1].string), NULL); + printd(DEBUG_PARSE, "%s:%d:menu\n", cur_filename, cur_lineno); +} + break; + + case 59: /* menu_entry: menu menu_option_list */ +{ + (yyval.menu) = menu_add_menu(); +} + break; + + case 60: /* menu_end: end */ +{ + if (zconf_endtoken((yyvsp[0].string), "menu")) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endmenu\n", cur_filename, cur_lineno); + } +} + break; + + case 65: /* source_stmt: T_SOURCE T_WORD_QUOTE T_EOL */ +{ + printd(DEBUG_PARSE, "%s:%d:source %s\n", cur_filename, cur_lineno, (yyvsp[-1].string)); + zconf_nextfile((yyvsp[-1].string)); + free((yyvsp[-1].string)); +} + break; + + case 66: /* comment: T_COMMENT T_WORD_QUOTE T_EOL */ +{ + menu_add_entry(NULL); + menu_add_prompt(P_COMMENT, (yyvsp[-1].string), NULL); + printd(DEBUG_PARSE, "%s:%d:comment\n", cur_filename, cur_lineno); +} + break; + + case 70: /* help_start: T_HELP T_EOL */ +{ + printd(DEBUG_PARSE, "%s:%d:help\n", cur_filename, cur_lineno); + zconf_starthelp(); +} + break; + + case 71: /* help: help_start T_HELPTEXT */ +{ + if (current_entry->help) { + free(current_entry->help); + zconfprint("warning: '%s' defined with more than one help text -- only the last one will be used", + current_entry->sym->name ?: ""); + } + + /* Is the help text empty or all whitespace? */ + if ((yyvsp[0].string)[strspn((yyvsp[0].string), " \f\n\r\t\v")] == '\0') + zconfprint("warning: '%s' defined with blank help text", + current_entry->sym->name ?: ""); + + current_entry->help = (yyvsp[0].string); +} + break; + + case 72: /* depends: T_DEPENDS T_ON expr T_EOL */ +{ + menu_add_dep((yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:depends on\n", cur_filename, cur_lineno); +} + break; + + case 73: /* visible: T_VISIBLE if_expr T_EOL */ +{ + menu_add_visibility((yyvsp[-1].expr)); +} + break; + + case 75: /* prompt_stmt_opt: T_WORD_QUOTE if_expr */ +{ + menu_add_prompt(P_PROMPT, (yyvsp[-1].string), (yyvsp[0].expr)); +} + break; + + case 76: /* end: T_ENDMENU T_EOL */ + { (yyval.string) = "menu"; } + break; + + case 77: /* end: T_ENDCHOICE T_EOL */ + { (yyval.string) = "choice"; } + break; + + case 78: /* end: T_ENDIF T_EOL */ + { (yyval.string) = "if"; } + break; + + case 79: /* if_expr: %empty */ + { (yyval.expr) = NULL; } + break; + + case 80: /* if_expr: T_IF expr */ + { (yyval.expr) = (yyvsp[0].expr); } + break; + + case 81: /* expr: symbol */ + { (yyval.expr) = expr_alloc_symbol((yyvsp[0].symbol)); } + break; + + case 82: /* expr: symbol T_LESS symbol */ + { (yyval.expr) = expr_alloc_comp(E_LTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + + case 83: /* expr: symbol T_LESS_EQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_LEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + + case 84: /* expr: symbol T_GREATER symbol */ + { (yyval.expr) = expr_alloc_comp(E_GTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + + case 85: /* expr: symbol T_GREATER_EQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_GEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + + case 86: /* expr: symbol T_EQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + + case 87: /* expr: symbol T_UNEQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + + case 88: /* expr: T_OPEN_PAREN expr T_CLOSE_PAREN */ + { (yyval.expr) = (yyvsp[-1].expr); } + break; + + case 89: /* expr: T_NOT expr */ + { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[0].expr)); } + break; + + case 90: /* expr: expr T_OR expr */ + { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[-2].expr), (yyvsp[0].expr)); } + break; + + case 91: /* expr: expr T_AND expr */ + { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); } + break; + + case 92: /* nonconst_symbol: T_WORD */ + { (yyval.symbol) = sym_lookup((yyvsp[0].string), 0); free((yyvsp[0].string)); } + break; + + case 94: /* symbol: T_WORD_QUOTE */ + { (yyval.symbol) = sym_lookup((yyvsp[0].string), SYMBOL_CONST); free((yyvsp[0].string)); } + break; + + case 95: /* assignment_stmt: T_WORD assign_op assign_val T_EOL */ + { variable_add((yyvsp[-3].string), (yyvsp[-1].string), (yyvsp[-2].flavor)); free((yyvsp[-3].string)); free((yyvsp[-1].string)); } + break; + + case 96: /* assign_op: T_EQUAL */ + { (yyval.flavor) = VAR_RECURSIVE; } + break; + + case 97: /* assign_op: T_COLON_EQUAL */ + { (yyval.flavor) = VAR_SIMPLE; } + break; + + case 98: /* assign_op: T_PLUS_EQUAL */ + { (yyval.flavor) = VAR_APPEND; } + break; + + case 99: /* assign_val: %empty */ + { (yyval.string) = xstrdup(""); } + break; + + + + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + + *++yyvsp = yyval; + + /* Now 'shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + { + const int yylhs = yyr1[yyn] - YYNTOKENS; + const int yyi = yypgoto[yylhs] + *yyssp; + yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp + ? yytable[yyi] + : yydefgoto[yylhs]); + } + + goto yynewstate; + + +/*--------------------------------------. +| yyerrlab -- here on detecting error. | +`--------------------------------------*/ +yyerrlab: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; + yyerror (YY_("syntax error")); + } + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse lookahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + /* Pacify compilers when the user code never invokes YYERROR and the + label yyerrorlab therefore never appears in user code. */ + if (0) + YYERROR; + ++yynerrs; + + /* Do not reclaim the symbols of the rule whose action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + /* Pop stack until we find a state that shifts the error token. */ + for (;;) + { + yyn = yypact[yystate]; + if (!yypact_value_is_default (yyn)) + { + yyn += YYSYMBOL_YYerror; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + YY_ACCESSING_SYMBOL (yystate), yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturnlab; + + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturnlab; + + +/*-----------------------------------------------------------. +| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. | +`-----------------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + goto yyreturnlab; + + +/*----------------------------------------------------------. +| yyreturnlab -- parsing is finished, clean up and return. | +`----------------------------------------------------------*/ +yyreturnlab: + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } + /* Do not reclaim the symbols of the rule whose action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + YY_ACCESSING_SYMBOL (+*yyssp), yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif + + return yyresult; +} + + + +void conf_parse(const char *name) +{ + struct menu *menu; + + autoconf_cmd = str_new(); + + str_printf(&autoconf_cmd, "\ndeps_config := \\\n"); + + zconf_initscan(name); + + _menu_init(); + + if (getenv("ZCONF_DEBUG")) + yydebug = 1; + yyparse(); + + /* + * FIXME: + * cur_filename and cur_lineno are used even after yyparse(); + * menu_finalize() calls menu_add_symbol(). This should be fixed. + */ + cur_filename = ""; + cur_lineno = 0; + + str_printf(&autoconf_cmd, + "\n" + "$(autoconfig): $(deps_config)\n" + "$(deps_config): ;\n"); + + env_write_dep(&autoconf_cmd); + + /* Variables are expanded in the parse phase. We can free them here. */ + variable_all_del(); + + if (yynerrs) + exit(1); + if (!modules_sym) + modules_sym = &symbol_no; + + if (!menu_has_prompt(&rootmenu)) { + current_entry = &rootmenu; + menu_add_prompt(P_MENU, "Main menu", NULL); + } + + menu_finalize(); + + menu = &rootmenu; + while (menu) { + if (menu->sym && sym_check_deps(menu->sym)) + yynerrs++; + + if (menu->list) { + menu = menu->list; + continue; + } + + while (!menu->next && menu->parent) + menu = menu->parent; + + menu = menu->next; + } + + if (yynerrs) + exit(1); + conf_set_changed(true); +} + +static bool zconf_endtoken(const char *tokenname, + const char *expected_tokenname) +{ + if (strcmp(tokenname, expected_tokenname)) { + zconf_error("unexpected '%s' within %s block", + tokenname, expected_tokenname); + yynerrs++; + return false; + } + if (strcmp(current_menu->filename, cur_filename)) { + zconf_error("'%s' in different file than '%s'", + tokenname, expected_tokenname); + fprintf(stderr, "%s:%d: location of the '%s'\n", + current_menu->filename, current_menu->lineno, + expected_tokenname); + yynerrs++; + return false; + } + return true; +} + +static void zconfprint(const char *err, ...) +{ + va_list ap; + + fprintf(stderr, "%s:%d: ", cur_filename, cur_lineno); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void zconf_error(const char *err, ...) +{ + va_list ap; + + yynerrs++; + fprintf(stderr, "%s:%d: ", cur_filename, cur_lineno); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void yyerror(const char *err) +{ + fprintf(stderr, "%s:%d: %s\n", cur_filename, cur_lineno, err); +} + +static void print_quoted_string(FILE *out, const char *str) +{ + const char *p; + int len; + + putc('"', out); + while ((p = strchr(str, '"'))) { + len = p - str; + if (len) + fprintf(out, "%.*s", len, str); + fputs("\\\"", out); + str = p + 1; + } + fputs(str, out); + putc('"', out); +} + +static void print_symbol(FILE *out, struct menu *menu) +{ + struct symbol *sym = menu->sym; + struct property *prop; + + if (sym_is_choice(sym)) + fprintf(out, "\nchoice\n"); + else + fprintf(out, "\nconfig %s\n", sym->name); + switch (sym->type) { + case S_BOOLEAN: + fputs(" bool\n", out); + break; + case S_TRISTATE: + fputs(" tristate\n", out); + break; + case S_STRING: + fputs(" string\n", out); + break; + case S_INT: + fputs(" integer\n", out); + break; + case S_HEX: + fputs(" hex\n", out); + break; + default: + fputs(" ???\n", out); + break; + } + for (prop = sym->prop; prop; prop = prop->next) { + if (prop->menu != menu) + continue; + switch (prop->type) { + case P_PROMPT: + fputs(" prompt ", out); + print_quoted_string(out, prop->text); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_DEFAULT: + fputs( " default ", out); + expr_fprint(prop->expr, out); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_CHOICE: + fputs(" #choice value\n", out); + break; + case P_SELECT: + fputs( " select ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_IMPLY: + fputs( " imply ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_RANGE: + fputs( " range ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_MENU: + fputs( " menu ", out); + print_quoted_string(out, prop->text); + fputc('\n', out); + break; + case P_SYMBOL: + fputs( " symbol ", out); + fprintf(out, "%s\n", prop->menu->sym->name); + break; + default: + fprintf(out, " unknown prop %d!\n", prop->type); + break; + } + } + if (menu->help) { + int len = strlen(menu->help); + while (menu->help[--len] == '\n') + menu->help[len] = 0; + fprintf(out, " help\n%s\n", menu->help); + } +} + +void zconfdump(FILE *out) +{ + struct property *prop; + struct symbol *sym; + struct menu *menu; + + menu = rootmenu.list; + while (menu) { + if ((sym = menu->sym)) + print_symbol(out, menu); + else if ((prop = menu->prompt)) { + switch (prop->type) { + case P_COMMENT: + fputs("\ncomment ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + case P_MENU: + fputs("\nmenu ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + default: + ; + } + if (!expr_is_yes(prop->visible.expr)) { + fputs(" depends ", out); + expr_fprint(prop->visible.expr, out); + fputc('\n', out); + } + } + + if (menu->list) + menu = menu->list; + else if (menu->next) + menu = menu->next; + else while ((menu = menu->parent)) { + if (menu->prompt && menu->prompt->type == P_MENU) + fputs("\nendmenu\n", out); + if (menu->next) { + menu = menu->next; + break; + } + } + } +} diff --git a/support/kconfig/parser.tab.h_shipped b/support/kconfig/parser.tab.h_shipped new file mode 100644 index 0000000000..6459d79928 --- /dev/null +++ b/support/kconfig/parser.tab.h_shipped @@ -0,0 +1,134 @@ +/* A Bison parser, made by GNU Bison 3.8.2. */ + +/* Bison interface for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, + Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ + +#ifndef YY_YY_SCRIPTS_KCONFIG_PARSER_TAB_H_INCLUDED +# define YY_YY_SCRIPTS_KCONFIG_PARSER_TAB_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 1 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token kinds. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + enum yytokentype + { + YYEMPTY = -2, + YYEOF = 0, /* "end of file" */ + YYerror = 256, /* error */ + YYUNDEF = 257, /* "invalid token" */ + T_HELPTEXT = 258, /* T_HELPTEXT */ + T_WORD = 259, /* T_WORD */ + T_WORD_QUOTE = 260, /* T_WORD_QUOTE */ + T_BOOL = 261, /* T_BOOL */ + T_CHOICE = 262, /* T_CHOICE */ + T_CLOSE_PAREN = 263, /* T_CLOSE_PAREN */ + T_COLON_EQUAL = 264, /* T_COLON_EQUAL */ + T_COMMENT = 265, /* T_COMMENT */ + T_CONFIG = 266, /* T_CONFIG */ + T_DEFAULT = 267, /* T_DEFAULT */ + T_DEF_BOOL = 268, /* T_DEF_BOOL */ + T_DEF_TRISTATE = 269, /* T_DEF_TRISTATE */ + T_DEPENDS = 270, /* T_DEPENDS */ + T_ENDCHOICE = 271, /* T_ENDCHOICE */ + T_ENDIF = 272, /* T_ENDIF */ + T_ENDMENU = 273, /* T_ENDMENU */ + T_HELP = 274, /* T_HELP */ + T_HEX = 275, /* T_HEX */ + T_IF = 276, /* T_IF */ + T_IMPLY = 277, /* T_IMPLY */ + T_INT = 278, /* T_INT */ + T_MAINMENU = 279, /* T_MAINMENU */ + T_MENU = 280, /* T_MENU */ + T_MENUCONFIG = 281, /* T_MENUCONFIG */ + T_MODULES = 282, /* T_MODULES */ + T_ON = 283, /* T_ON */ + T_OPEN_PAREN = 284, /* T_OPEN_PAREN */ + T_OPTIONAL = 285, /* T_OPTIONAL */ + T_PLUS_EQUAL = 286, /* T_PLUS_EQUAL */ + T_PROMPT = 287, /* T_PROMPT */ + T_RANGE = 288, /* T_RANGE */ + T_SELECT = 289, /* T_SELECT */ + T_SOURCE = 290, /* T_SOURCE */ + T_STRING = 291, /* T_STRING */ + T_TRISTATE = 292, /* T_TRISTATE */ + T_VISIBLE = 293, /* T_VISIBLE */ + T_EOL = 294, /* T_EOL */ + T_ASSIGN_VAL = 295, /* T_ASSIGN_VAL */ + T_OR = 296, /* T_OR */ + T_AND = 297, /* T_AND */ + T_EQUAL = 298, /* T_EQUAL */ + T_UNEQUAL = 299, /* T_UNEQUAL */ + T_LESS = 300, /* T_LESS */ + T_LESS_EQUAL = 301, /* T_LESS_EQUAL */ + T_GREATER = 302, /* T_GREATER */ + T_GREATER_EQUAL = 303, /* T_GREATER_EQUAL */ + T_NOT = 304 /* T_NOT */ + }; + typedef enum yytokentype yytoken_kind_t; +#endif + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +union YYSTYPE +{ + + char *string; + struct symbol *symbol; + struct expr *expr; + struct menu *menu; + enum symbol_type type; + enum variable_flavor flavor; + + +}; +typedef union YYSTYPE YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + + +int yyparse (void); + + +#endif /* !YY_YY_SCRIPTS_KCONFIG_PARSER_TAB_H_INCLUDED */ diff --git a/support/kconfig/zconf.y b/support/kconfig/parser.y similarity index 56% rename from support/kconfig/zconf.y rename to support/kconfig/parser.y index 7b34de28a6..9873e84b1b 100644 --- a/support/kconfig/zconf.y +++ b/support/kconfig/parser.y @@ -1,8 +1,8 @@ -%{ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ +%{ #include #include @@ -12,6 +12,8 @@ #include #include "lkc.h" +#include "internal.h" +#include "preprocess.h" #define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) @@ -20,63 +22,64 @@ int cdebug = PRINTD; -int yylex(void); static void yyerror(const char *err); static void zconfprint(const char *err, ...); static void zconf_error(const char *err, ...); -static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken); - -struct symbol *symbol_hash[SYMBOL_HASHSIZE]; +static bool zconf_endtoken(const char *tokenname, + const char *expected_tokenname); -static struct menu *current_menu, *current_entry; +struct menu *current_menu, *current_entry; %} -%expect 32 %union { char *string; - struct file *file; struct symbol *symbol; struct expr *expr; struct menu *menu; - const struct kconf_id *id; + enum symbol_type type; + enum variable_flavor flavor; } -%token T_MAINMENU -%token T_MENU -%token T_ENDMENU -%token T_SOURCE -%token T_CHOICE -%token T_ENDCHOICE -%token T_COMMENT -%token T_CONFIG -%token T_MENUCONFIG -%token T_HELP %token T_HELPTEXT -%token T_IF -%token T_ENDIF -%token T_DEPENDS -%token T_OPTIONAL -%token T_PROMPT -%token T_TYPE -%token T_DEFAULT -%token T_SELECT -%token T_IMPLY -%token T_RANGE -%token T_VISIBLE -%token T_OPTION -%token T_ON %token T_WORD %token T_WORD_QUOTE -%token T_UNEQUAL -%token T_LESS -%token T_LESS_EQUAL -%token T_GREATER -%token T_GREATER_EQUAL +%token T_BOOL +%token T_CHOICE %token T_CLOSE_PAREN +%token T_COLON_EQUAL +%token T_COMMENT +%token T_CONFIG +%token T_DEFAULT +%token T_DEF_BOOL +%token T_DEF_TRISTATE +%token T_DEPENDS +%token T_ENDCHOICE +%token T_ENDIF +%token T_ENDMENU +%token T_HELP +%token T_HEX +%token T_IF +%token T_IMPLY +%token T_INT +%token T_MAINMENU +%token T_MENU +%token T_MENUCONFIG +%token T_MODULES +%token T_ON %token T_OPEN_PAREN +%token T_OPTIONAL +%token T_PLUS_EQUAL +%token T_PROMPT +%token T_RANGE +%token T_SELECT +%token T_SOURCE +%token T_STRING +%token T_TRISTATE +%token T_VISIBLE %token T_EOL +%token T_ASSIGN_VAL %left T_OR %left T_AND @@ -84,105 +87,70 @@ static struct menu *current_menu, *current_entry; %left T_LESS T_LESS_EQUAL T_GREATER T_GREATER_EQUAL %nonassoc T_NOT -%type prompt %type nonconst_symbol %type symbol +%type type logic_type default %type expr %type if_expr -%type end -%type option_name +%type end %type if_entry menu_entry choice_entry -%type symbol_option_arg word_opt +%type assign_val +%type assign_op %destructor { fprintf(stderr, "%s:%d: missing end statement for this entry\n", - $$->file->name, $$->lineno); + $$->filename, $$->lineno); if (current_menu == $$) menu_end_menu(); } if_entry menu_entry choice_entry -%{ -/* Include kconf_id.c here so it can see the token constants. */ -#include "kconf_id.c" -%} - %% -input: nl start | start; - -start: mainmenu_stmt stmt_list | no_mainmenu_stmt stmt_list; +input: mainmenu_stmt stmt_list | stmt_list; /* mainmenu entry */ -mainmenu_stmt: T_MAINMENU prompt nl +mainmenu_stmt: T_MAINMENU T_WORD_QUOTE T_EOL { menu_add_prompt(P_MENU, $2, NULL); }; -/* Default main menu, if there's no mainmenu entry */ - -no_mainmenu_stmt: /* empty */ -{ - /* - * Hack: Keep the main menu title on the heap so we can safely free it - * later regardless of whether it comes from the 'prompt' in - * mainmenu_stmt or here - */ - menu_add_prompt(P_MENU, xstrdup("Buildroot Configuration"), NULL); -}; - - stmt_list: /* empty */ | stmt_list common_stmt | stmt_list choice_stmt | stmt_list menu_stmt - | stmt_list end { zconf_error("unexpected end statement"); } | stmt_list T_WORD error T_EOL { zconf_error("unknown statement \"%s\"", $2); } - | stmt_list option_name error T_EOL -{ - zconf_error("unexpected option \"%s\"", $2->name); -} | stmt_list error T_EOL { zconf_error("invalid statement"); } ; -option_name: - T_DEPENDS | T_PROMPT | T_TYPE | T_SELECT | T_IMPLY | T_OPTIONAL | T_RANGE | T_DEFAULT | T_VISIBLE -; - common_stmt: - T_EOL - | if_stmt + if_stmt | comment_stmt | config_stmt | menuconfig_stmt | source_stmt + | assignment_stmt ; -option_error: - T_WORD error T_EOL { zconf_error("unknown option \"%s\"", $1); } - | error T_EOL { zconf_error("invalid option"); } -; - - /* config/menuconfig entry */ config_entry_start: T_CONFIG nonconst_symbol T_EOL { $2->flags |= SYMBOL_OPTIONAL; menu_add_entry($2); - printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), $2->name); + printd(DEBUG_PARSE, "%s:%d:config %s\n", cur_filename, cur_lineno, $2->name); }; config_stmt: config_entry_start config_option_list { - printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", cur_filename, cur_lineno); }; menuconfig_entry_start: T_MENUCONFIG nonconst_symbol T_EOL { $2->flags |= SYMBOL_OPTIONAL; menu_add_entry($2); - printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), $2->name); + printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", cur_filename, cur_lineno, $2->name); }; menuconfig_stmt: menuconfig_entry_start config_option_list @@ -191,105 +159,90 @@ menuconfig_stmt: menuconfig_entry_start config_option_list current_entry->prompt->type = P_MENU; else zconfprint("warning: menuconfig statement without prompt"); - printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", cur_filename, cur_lineno); }; config_option_list: /* empty */ | config_option_list config_option - | config_option_list symbol_option | config_option_list depends | config_option_list help - | config_option_list option_error - | config_option_list T_EOL ; -config_option: T_TYPE prompt_stmt_opt T_EOL +config_option: type prompt_stmt_opt T_EOL { - menu_set_type($1->stype); - printd(DEBUG_PARSE, "%s:%d:type(%u)\n", - zconf_curname(), zconf_lineno(), - $1->stype); + menu_set_type($1); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", cur_filename, cur_lineno, $1); }; -config_option: T_PROMPT prompt if_expr T_EOL +config_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL { menu_add_prompt(P_PROMPT, $2, $3); - printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:prompt\n", cur_filename, cur_lineno); }; -config_option: T_DEFAULT expr if_expr T_EOL +config_option: default expr if_expr T_EOL { menu_add_expr(P_DEFAULT, $2, $3); - if ($1->stype != S_UNKNOWN) - menu_set_type($1->stype); - printd(DEBUG_PARSE, "%s:%d:default(%u)\n", - zconf_curname(), zconf_lineno(), - $1->stype); + if ($1 != S_UNKNOWN) + menu_set_type($1); + printd(DEBUG_PARSE, "%s:%d:default(%u)\n", cur_filename, cur_lineno, + $1); }; config_option: T_SELECT nonconst_symbol if_expr T_EOL { menu_add_symbol(P_SELECT, $2, $3); - printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:select\n", cur_filename, cur_lineno); }; config_option: T_IMPLY nonconst_symbol if_expr T_EOL { menu_add_symbol(P_IMPLY, $2, $3); - printd(DEBUG_PARSE, "%s:%d:imply\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:imply\n", cur_filename, cur_lineno); }; config_option: T_RANGE symbol symbol if_expr T_EOL { menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,$2, $3), $4); - printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:range\n", cur_filename, cur_lineno); }; -symbol_option: T_OPTION symbol_option_list T_EOL -; - -symbol_option_list: - /* empty */ - | symbol_option_list T_WORD symbol_option_arg +config_option: T_MODULES T_EOL { - const struct kconf_id *id = kconf_id_lookup($2, strlen($2)); - if (id && id->flags & TF_OPTION) { - menu_add_option(id->token, $3); - free($3); - } - else - zconfprint("warning: ignoring unknown option %s", $2); - free($2); + if (modules_sym) + zconf_error("symbol '%s' redefines option 'modules' already defined by symbol '%s'", + current_entry->sym->name, modules_sym->name); + modules_sym = current_entry->sym; }; -symbol_option_arg: - /* empty */ { $$ = NULL; } - | T_EQUAL prompt { $$ = $2; } -; - /* choice entry */ -choice: T_CHOICE word_opt T_EOL +choice: T_CHOICE T_EOL { - struct symbol *sym = sym_lookup($2, SYMBOL_CHOICE); - sym->flags |= SYMBOL_AUTO; + struct symbol *sym = sym_lookup(NULL, SYMBOL_CHOICE); + sym->flags |= SYMBOL_NO_WRITE; menu_add_entry(sym); menu_add_expr(P_CHOICE, NULL, NULL); - free($2); - printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:choice\n", cur_filename, cur_lineno); }; choice_entry: choice choice_option_list { + if (!current_entry->prompt) { + fprintf(stderr, "%s:%d: error: choice must have a prompt\n", + current_entry->filename, current_entry->lineno); + yynerrs++; + } + $$ = menu_add_menu(); }; choice_end: end { - if (zconf_endtoken($1, T_CHOICE, T_ENDCHOICE)) { + if (zconf_endtoken($1, "choice")) { menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:endchoice\n", cur_filename, cur_lineno); } }; @@ -301,43 +254,47 @@ choice_option_list: | choice_option_list choice_option | choice_option_list depends | choice_option_list help - | choice_option_list T_EOL - | choice_option_list option_error ; -choice_option: T_PROMPT prompt if_expr T_EOL +choice_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL { menu_add_prompt(P_PROMPT, $2, $3); - printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:prompt\n", cur_filename, cur_lineno); }; -choice_option: T_TYPE prompt_stmt_opt T_EOL +choice_option: logic_type prompt_stmt_opt T_EOL { - if ($1->stype == S_BOOLEAN || $1->stype == S_TRISTATE) { - menu_set_type($1->stype); - printd(DEBUG_PARSE, "%s:%d:type(%u)\n", - zconf_curname(), zconf_lineno(), - $1->stype); - } else - YYERROR; + menu_set_type($1); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", cur_filename, cur_lineno, $1); }; choice_option: T_OPTIONAL T_EOL { current_entry->sym->flags |= SYMBOL_OPTIONAL; - printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:optional\n", cur_filename, cur_lineno); }; choice_option: T_DEFAULT nonconst_symbol if_expr T_EOL { - if ($1->stype == S_UNKNOWN) { - menu_add_symbol(P_DEFAULT, $2, $3); - printd(DEBUG_PARSE, "%s:%d:default\n", - zconf_curname(), zconf_lineno()); - } else - YYERROR; + menu_add_symbol(P_DEFAULT, $2, $3); + printd(DEBUG_PARSE, "%s:%d:default\n", cur_filename, cur_lineno); }; +type: + logic_type + | T_INT { $$ = S_INT; } + | T_HEX { $$ = S_HEX; } + | T_STRING { $$ = S_STRING; } + +logic_type: + T_BOOL { $$ = S_BOOLEAN; } + | T_TRISTATE { $$ = S_TRISTATE; } + +default: + T_DEFAULT { $$ = S_UNKNOWN; } + | T_DEF_BOOL { $$ = S_BOOLEAN; } + | T_DEF_TRISTATE { $$ = S_TRISTATE; } + choice_block: /* empty */ | choice_block common_stmt @@ -345,9 +302,9 @@ choice_block: /* if entry */ -if_entry: T_IF expr nl +if_entry: T_IF expr T_EOL { - printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:if\n", cur_filename, cur_lineno); menu_add_entry(NULL); menu_add_dep($2); $$ = menu_add_menu(); @@ -355,78 +312,75 @@ if_entry: T_IF expr nl if_end: end { - if (zconf_endtoken($1, T_IF, T_ENDIF)) { + if (zconf_endtoken($1, "if")) { menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:endif\n", cur_filename, cur_lineno); } }; -if_stmt: if_entry if_block if_end -; - -if_block: - /* empty */ - | if_block common_stmt - | if_block menu_stmt - | if_block choice_stmt +if_stmt: if_entry stmt_list if_end ; /* menu entry */ -menu: T_MENU prompt T_EOL +menu: T_MENU T_WORD_QUOTE T_EOL { menu_add_entry(NULL); menu_add_prompt(P_MENU, $2, NULL); - printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:menu\n", cur_filename, cur_lineno); }; -menu_entry: menu visibility_list depends_list +menu_entry: menu menu_option_list { $$ = menu_add_menu(); }; menu_end: end { - if (zconf_endtoken($1, T_MENU, T_ENDMENU)) { + if (zconf_endtoken($1, "menu")) { menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:endmenu\n", cur_filename, cur_lineno); } }; -menu_stmt: menu_entry menu_block menu_end +menu_stmt: menu_entry stmt_list menu_end ; -menu_block: +menu_option_list: /* empty */ - | menu_block common_stmt - | menu_block menu_stmt - | menu_block choice_stmt + | menu_option_list visible + | menu_option_list depends ; -source_stmt: T_SOURCE prompt T_EOL +source_stmt: T_SOURCE T_WORD_QUOTE T_EOL { - printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), $2); + printd(DEBUG_PARSE, "%s:%d:source %s\n", cur_filename, cur_lineno, $2); zconf_nextfile($2); free($2); }; /* comment entry */ -comment: T_COMMENT prompt T_EOL +comment: T_COMMENT T_WORD_QUOTE T_EOL { menu_add_entry(NULL); menu_add_prompt(P_COMMENT, $2, NULL); - printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:comment\n", cur_filename, cur_lineno); }; -comment_stmt: comment depends_list +comment_stmt: comment comment_option_list +; + +comment_option_list: + /* empty */ + | comment_option_list depends ; /* help option */ help_start: T_HELP T_EOL { - printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:help\n", cur_filename, cur_lineno); zconf_starthelp(); }; @@ -448,28 +402,14 @@ help: help_start T_HELPTEXT /* depends option */ -depends_list: - /* empty */ - | depends_list depends - | depends_list T_EOL - | depends_list option_error -; - depends: T_DEPENDS T_ON expr T_EOL { menu_add_dep($3); - printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:depends on\n", cur_filename, cur_lineno); }; /* visibility option */ - -visibility_list: - /* empty */ - | visibility_list visible - | visibility_list T_EOL -; - -visible: T_VISIBLE if_expr +visible: T_VISIBLE if_expr T_EOL { menu_add_visibility($2); }; @@ -478,23 +418,14 @@ visible: T_VISIBLE if_expr prompt_stmt_opt: /* empty */ - | prompt if_expr + | T_WORD_QUOTE if_expr { menu_add_prompt(P_PROMPT, $1, $2); }; -prompt: T_WORD - | T_WORD_QUOTE -; - -end: T_ENDMENU T_EOL { $$ = $1; } - | T_ENDCHOICE T_EOL { $$ = $1; } - | T_ENDIF T_EOL { $$ = $1; } -; - -nl: - T_EOL - | nl T_EOL +end: T_ENDMENU T_EOL { $$ = "menu"; } + | T_ENDCHOICE T_EOL { $$ = "choice"; } + | T_ENDIF T_EOL { $$ = "if"; } ; if_expr: /* empty */ { $$ = NULL; } @@ -521,74 +452,105 @@ symbol: nonconst_symbol | T_WORD_QUOTE { $$ = sym_lookup($1, SYMBOL_CONST); free($1); } ; -word_opt: /* empty */ { $$ = NULL; } - | T_WORD +/* assignment statement */ + +assignment_stmt: T_WORD assign_op assign_val T_EOL { variable_add($1, $3, $2); free($1); free($3); } + +assign_op: + T_EQUAL { $$ = VAR_RECURSIVE; } + | T_COLON_EQUAL { $$ = VAR_SIMPLE; } + | T_PLUS_EQUAL { $$ = VAR_APPEND; } +; + +assign_val: + /* empty */ { $$ = xstrdup(""); }; + | T_ASSIGN_VAL +; %% void conf_parse(const char *name) { - const char *tmp; - struct symbol *sym; - int i; + struct menu *menu; + + autoconf_cmd = str_new(); + + str_printf(&autoconf_cmd, "\ndeps_config := \\\n"); zconf_initscan(name); - sym_init(); _menu_init(); if (getenv("ZCONF_DEBUG")) yydebug = 1; yyparse(); + + /* + * FIXME: + * cur_filename and cur_lineno are used even after yyparse(); + * menu_finalize() calls menu_add_symbol(). This should be fixed. + */ + cur_filename = ""; + cur_lineno = 0; + + str_printf(&autoconf_cmd, + "\n" + "$(autoconfig): $(deps_config)\n" + "$(deps_config): ;\n"); + + env_write_dep(&autoconf_cmd); + + /* Variables are expanded in the parse phase. We can free them here. */ + variable_all_del(); + if (yynerrs) exit(1); if (!modules_sym) - modules_sym = sym_find( "n" ); + modules_sym = &symbol_no; - tmp = rootmenu.prompt->text; - rootmenu.prompt->text = _(rootmenu.prompt->text); - rootmenu.prompt->text = sym_expand_string_value(rootmenu.prompt->text); - free((char*)tmp); + if (!menu_has_prompt(&rootmenu)) { + current_entry = &rootmenu; + menu_add_prompt(P_MENU, "Main menu", NULL); + } + + menu_finalize(); - menu_finalize(&rootmenu); - for_all_symbols(i, sym) { - if (sym_check_deps(sym)) + menu = &rootmenu; + while (menu) { + if (menu->sym && sym_check_deps(menu->sym)) yynerrs++; + + if (menu->list) { + menu = menu->list; + continue; + } + + while (!menu->next && menu->parent) + menu = menu->parent; + + menu = menu->next; } + if (yynerrs) exit(1); - sym_set_change_count(1); + conf_set_changed(true); } -static const char *zconf_tokenname(int token) -{ - switch (token) { - case T_MENU: return "menu"; - case T_ENDMENU: return "endmenu"; - case T_CHOICE: return "choice"; - case T_ENDCHOICE: return "endchoice"; - case T_IF: return "if"; - case T_ENDIF: return "endif"; - case T_DEPENDS: return "depends"; - case T_VISIBLE: return "visible"; - } - return ""; -} - -static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken) +static bool zconf_endtoken(const char *tokenname, + const char *expected_tokenname) { - if (id->token != endtoken) { + if (strcmp(tokenname, expected_tokenname)) { zconf_error("unexpected '%s' within %s block", - id->name, zconf_tokenname(starttoken)); + tokenname, expected_tokenname); yynerrs++; return false; } - if (current_menu->file != current_file) { + if (strcmp(current_menu->filename, cur_filename)) { zconf_error("'%s' in different file than '%s'", - id->name, zconf_tokenname(starttoken)); + tokenname, expected_tokenname); fprintf(stderr, "%s:%d: location of the '%s'\n", - current_menu->file->name, current_menu->lineno, - zconf_tokenname(starttoken)); + current_menu->filename, current_menu->lineno, + expected_tokenname); yynerrs++; return false; } @@ -599,7 +561,7 @@ static void zconfprint(const char *err, ...) { va_list ap; - fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + fprintf(stderr, "%s:%d: ", cur_filename, cur_lineno); va_start(ap, err); vfprintf(stderr, err, ap); va_end(ap); @@ -611,7 +573,7 @@ static void zconf_error(const char *err, ...) va_list ap; yynerrs++; - fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + fprintf(stderr, "%s:%d: ", cur_filename, cur_lineno); va_start(ap, err); vfprintf(stderr, err, ap); va_end(ap); @@ -620,7 +582,7 @@ static void zconf_error(const char *err, ...) static void yyerror(const char *err) { - fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err); + fprintf(stderr, "%s:%d: %s\n", cur_filename, cur_lineno, err); } static void print_quoted_string(FILE *out, const char *str) @@ -714,6 +676,10 @@ static void print_symbol(FILE *out, struct menu *menu) print_quoted_string(out, prop->text); fputc('\n', out); break; + case P_SYMBOL: + fputs( " symbol ", out); + fprintf(out, "%s\n", prop->menu->sym->name); + break; default: fprintf(out, " unknown prop %d!\n", prop->type); break; @@ -773,10 +739,3 @@ void zconfdump(FILE *out) } } } - -#include "zconf.lex.c" -#include "util.c" -#include "confdata.c" -#include "expr.c" -#include "symbol.c" -#include "menu.c" diff --git a/support/kconfig/patches/01-kconfig-kernel-to-buildroot.patch b/support/kconfig/patches/01-kconfig-kernel-to-buildroot.patch index 43ae61a9c7..57d2488f9a 100644 --- a/support/kconfig/patches/01-kconfig-kernel-to-buildroot.patch +++ b/support/kconfig/patches/01-kconfig-kernel-to-buildroot.patch @@ -1,15 +1,20 @@ ---- - confdata.c | 4 ++-- - gconf.glade | 2 +- - mconf.c | 4 ++-- - zconf.tab.c_shipped | 2 +- - zconf.y | 2 +- - 5 files changed, 7 insertions(+), 7 deletions(-) - -Index: kconfig/gconf.glade -=================================================================== ---- kconfig.orig/gconf.glade -+++ kconfig/gconf.glade +diff --git a/confdata.c b/confdata.c +index 0e35c48..00a629b 100644 +--- a/confdata.c ++++ b/confdata.c +@@ -207,7 +207,7 @@ static void conf_message(const char *fmt, ...) + + const char *conf_get_configname(void) + { +- char *name = getenv("KCONFIG_CONFIG"); ++ char *name = getenv("BR2_CONFIG"); + + return name ? name : ".config"; + } +diff --git a/gconf.glade b/gconf.glade +index aa483cb..6cbc1bb 100644 +--- a/gconf.glade ++++ b/gconf.glade @@ -4,7 +4,7 @@ @@ -19,85 +24,37 @@ Index: kconfig/gconf.glade GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False -Index: kconfig/mconf.c -=================================================================== ---- kconfig.orig/mconf.c -+++ kconfig/mconf.c -@@ -176,9 +176,9 @@ menu_instructions[] = N_( +diff --git a/mconf.c b/mconf.c +index c096909..420e173 100644 +--- a/mconf.c ++++ b/mconf.c +@@ -184,9 +184,9 @@ menu_instructions[] = "Arrow keys navigate the menu. " " selects submenus ---> (or empty submenus ----). " "Highlighted letters are hotkeys. " - "Pressing includes, excludes, modularizes features. " -+ "Pressing selects a feature, while excludes a feature. " ++ "Pressing selects a feature, while excludes a features. " "Press to exit, for Help, for Search. " -- "Legend: [*] built-in [ ] excluded module < > module capable"), -+ "Legend: [*] feature is selected [ ] feature is excluded"), - radiolist_instructions[] = N_( +- "Legend: [*] built-in [ ] excluded module < > module capable", ++ "Legend: [*] feature is selected [ ] feature is excluded", + radiolist_instructions[] = "Use the arrow keys to navigate this window or " "press the hotkey of the item you wish to select " -@@ -962,7 +962,7 @@ static int handle_exit(void) +@@ -914,7 +914,7 @@ static int handle_exit(void) if (conf_get_changed()) res = dialog_yesno(NULL, - _("Do you wish to save your new configuration?\n" -- "(Press to continue kernel configuration.)"), -+ "(Press to continue Buildroot configuration.)"), + "Do you wish to save your new configuration?\n" +- "(Press to continue kernel configuration.)", ++ "(Press to continue Buildroot configuration.)", 6, 60); else res = -1; -Index: kconfig/zconf.tab.c_shipped -=================================================================== ---- kconfig.orig/zconf.tab.c_shipped -+++ kconfig/zconf.tab.c_shipped -@@ -1515,7 +1515,7 @@ yyreduce: - * later regardless of whether it comes from the 'prompt' in - * mainmenu_stmt or here - */ -- menu_add_prompt(P_MENU, xstrdup("Linux Kernel Configuration"), NULL); -+ menu_add_prompt(P_MENU, xstrdup("Buildroot Configuration"), NULL); - } - - break; -Index: kconfig/zconf.y -=================================================================== ---- kconfig.orig/zconf.y -+++ kconfig/zconf.y -@@ -127,7 +127,7 @@ no_mainmenu_stmt: /* empty */ - * later regardless of whether it comes from the 'prompt' in - * mainmenu_stmt or here - */ -- menu_add_prompt(P_MENU, xstrdup("Linux Kernel Configuration"), NULL); -+ menu_add_prompt(P_MENU, xstrdup("Buildroot Configuration"), NULL); - }; - - -Index: kconfig/confdata.c -=================================================================== ---- kconfig.orig/confdata.c -+++ kconfig/confdata.c -@@ -30,7 +30,7 @@ static void conf_message(const char *fmt - static const char *conf_filename; - static int conf_lineno, conf_warnings; - --const char conf_defname[] = "arch/$ARCH/defconfig"; -+const char conf_defname[] = ".defconfig"; - - static void conf_warning(const char *fmt, ...) - { -@@ -69,7 +69,7 @@ static void conf_message(const char *fmt - - const char *conf_get_configname(void) - { -- char *name = getenv("KCONFIG_CONFIG"); -+ char *name = getenv("BR2_CONFIG"); - - return name ? name : ".config"; - } -Index: kconfig/qconf.cc -=================================================================== ---- kconfig.orig/qconf.cc -+++ kconfig/qconf.cc -@@ -55,7 +55,7 @@ static inline QString qgettext(const QSt - } +diff --git a/qconf.cc b/qconf.cc +index c6c42c0..50c3ccd 100644 +--- a/qconf.cc ++++ b/qconf.cc +@@ -34,7 +34,7 @@ static ConfigSettings *configSettings; + QAction *ConfigMainWindow::saveAction; ConfigSettings::ConfigSettings() - : QSettings("kernel.org", "qconf") diff --git a/support/kconfig/patches/06-br-build-system-integration.patch b/support/kconfig/patches/06-br-build-system-integration.patch index 35420cbb15..b021ebf5c9 100644 --- a/support/kconfig/patches/06-br-build-system-integration.patch +++ b/support/kconfig/patches/06-br-build-system-integration.patch @@ -1,74 +1,53 @@ -Index: kconfig/Makefile -=================================================================== ---- kconfig.orig/Makefile -+++ kconfig/Makefile -@@ -205,7 +205,35 @@ qconf-cxxobjs := qconf.o - qconf-objs := zconf.tab.o - gconf-objs := gconf.o zconf.tab.o - --hostprogs-y := conf nconf mconf kxgettext qconf gconf -+hostprogs-y := conf -+ +diff --git a/Makefile b/Makefile +index ea1bf3b..5697d38 100644 +--- a/Makefile ++++ b/Makefile +@@ -173,6 +173,7 @@ hostprogs += conf + conf-objs := conf.o $(common-objs) + + # nconf: Used for the nconfig target based on ncurses +ifeq ($(MAKECMDGOALS),nconf) -+ hostprogs-y += nconf + hostprogs += nconf + nconf-objs := nconf.o nconf.gui.o mnconf-common.o $(common-objs) + +@@ -182,8 +183,10 @@ HOSTCFLAGS_nconf.gui.o = $(call read-file, $(obj)/nconf-cflags) + + $(obj)/nconf: | $(obj)/nconf-libs + $(obj)/nconf.o $(obj)/nconf.gui.o: | $(obj)/nconf-cflags +endif -+ + + # mconf: Used for the menuconfig target based on lxdialog +ifeq ($(MAKECMDGOALS),mconf) -+ hostprogs-y += mconf -+endif -+ -+ifeq ($(MAKECMDGOALS),update-po-config) -+ hostprogs-y += kxgettext -+endif -+ -+ifeq ($(MAKECMDGOALS),qconf) -+ qconf-target := 1 -+endif -+ -+ifeq ($(MAKECMDGOALS),gconf) -+ gconf-target := 1 -+endif -+ -+ifeq ($(qconf-target),1) -+ hostprogs-y += qconf -+endif -+ -+ifeq ($(gconf-target),1) -+ hostprogs-y += gconf -+endif + hostprogs += mconf + lxdialog := $(addprefix lxdialog/, \ + checklist.o inputbox.o menubox.o textbox.o util.o yesno.o) +@@ -195,8 +198,10 @@ $(foreach f, mconf.o $(lxdialog), \ - targets += zconf.lex.c - clean-files := qconf.moc .tmp_qtcheck .tmp_gtkcheck -@@ -243,7 +271,7 @@ HOSTLOADLIBES_nconf = $(shell \ - || echo "-lmenu -lpanel -lncurses" ) - $(obj)/qconf.o: $(obj)/.tmp_qtcheck + $(obj)/mconf: | $(obj)/mconf-libs + $(addprefix $(obj)/, mconf.o $(lxdialog)): | $(obj)/mconf-cflags ++endif --ifeq ($(MAKECMDGOALS),xconfig) + # qconf: Used for the xconfig target based on Qt +ifeq ($(MAKECMDGOALS),qconf) - $(obj)/.tmp_qtcheck: $(src)/Makefile - -include $(obj)/.tmp_qtcheck + hostprogs += qconf + qconf-cxxobjs := qconf.o qconf-moc.o + qconf-objs := images.o $(common-objs) +@@ -214,8 +219,10 @@ $(obj)/qconf-moc.cc: $(src)/qconf.h FORCE | $(obj)/qconf-bin + $(call if_changed,moc) -@@ -270,9 +298,8 @@ $(obj)/.tmp_qtcheck: - echo "KC_QT_MOC=$$moc" >> $@ - endif + targets += qconf-moc.cc ++endif + # gconf: Used for the gconfig target based on GTK+ +ifeq ($(MAKECMDGOALS),gconf) - $(obj)/gconf.o: $(obj)/.tmp_gtkcheck -- --ifeq ($(MAKECMDGOALS),gconfig) - -include $(obj)/.tmp_gtkcheck + hostprogs += gconf + gconf-objs := gconf.o images.o $(common-objs) - # GTK+ needs some extra effort, too... -@@ -300,11 +327,8 @@ $(obj)/zconf.tab.o: $(obj)/zconf.lex.c +@@ -224,6 +231,7 @@ HOSTCFLAGS_gconf.o = $(call read-file, $(obj)/gconf-cflags) - $(obj)/qconf.o: $(obj)/qconf.moc - --quiet_cmd_moc = MOC $@ -- cmd_moc = $(KC_QT_MOC) -i $< -o $@ -- - $(obj)/%.moc: $(src)/%.h $(obj)/.tmp_qtcheck -- $(call cmd,moc) -+ $(KC_QT_MOC) -i $< -o $@ + $(obj)/gconf: | $(obj)/gconf-libs + $(obj)/gconf.o: | $(obj)/gconf-cflags ++endif - # Extract gconf menu items for i18n support - $(obj)/gconf.glade.h: $(obj)/gconf.glade + # check if necessary packages are available, and configure build flags + cmd_conf_cfg = $< $(addprefix $(obj)/$*conf-, cflags libs bin); touch $(obj)/$*conf-bin diff --git a/support/kconfig/patches/10-br-build-system.patch b/support/kconfig/patches/10-br-build-system.patch index abf2463691..b40e5e9160 100644 --- a/support/kconfig/patches/10-br-build-system.patch +++ b/support/kconfig/patches/10-br-build-system.patch @@ -1,13 +1,34 @@ ---- - Makefile.br | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - foo.h | 12 ++++++++++++ - 2 files changed, 65 insertions(+) - -Index: kconfig/Makefile.br -=================================================================== +diff --git a/Makefile b/Makefile +index 5697d38..f5f934d 100644 +--- a/Makefile ++++ b/Makefile +@@ -3,6 +3,11 @@ + # Kernel configuration targets + # These targets are used from top-level makefile + ++HOSTPKG_CONFIG = pkg-config ++export HOSTPKG_CONFIG ++ ++include $(src)/Kbuild.include ++ + ifdef KBUILD_KCONFIG + Kconfig := $(KBUILD_KCONFIG) + else +@@ -234,7 +239,7 @@ $(obj)/gconf.o: | $(obj)/gconf-cflags + endif + + # check if necessary packages are available, and configure build flags +-cmd_conf_cfg = $< $(addprefix $(obj)/$*conf-, cflags libs bin); touch $(obj)/$*conf-bin ++cmd_conf_cfg = $(src)/$< $(addprefix $(obj)/$*conf-, cflags libs bin); touch $(obj)/$*conf-bin + + $(obj)/%conf-cflags $(obj)/%conf-libs $(obj)/%conf-bin: $(src)/%conf-cfg.sh + $(call cmd,conf_cfg) +diff --git a/Makefile.br b/Makefile.br +new file mode 100644 +index 0000000..d163256 --- /dev/null -+++ kconfig/Makefile.br -@@ -0,0 +1,53 @@ ++++ b/Makefile.br +@@ -0,0 +1,55 @@ +src := . +top_srcdir=../../ +top_builddir=../../ @@ -15,12 +36,11 @@ Index: kconfig/Makefile.br +obj ?= . + +include Makefile -+#HOSTCFLAGS+=-Dinline="" -include foo.h +-include $(obj)/.depend +$(obj)/.depend: $(wildcard *.h *.c) + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) -MM *.c > $@ 2>/dev/null || : + -+__hostprogs := $(sort $(hostprogs-y) $(hostprogs-m)) ++__hostprogs := $(sort $(hostprogs)) +host-csingle := $(foreach m,$(__hostprogs),$(if $($(m)-objs),,$(m))) +host-cmulti := $(foreach m,$(__hostprogs),\ + $(if $($(m)-cxxobjs),,$(if $($(m)-objs),$(m)))) @@ -35,10 +55,10 @@ Index: kconfig/Makefile.br + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< -o $(obj)/$@ + +$(host-cmulti): %: $(host-cobjs) $(host-cshlib) -+ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ ++ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLDLIBS_$(@F)) -o $(obj)/$@ + +$(host-cxxmulti): %: $(host-cxxobjs) $(host-cobjs) $(host-cshlib) -+ $(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ ++ $(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLDLIBS_$(@F)) -o $(obj)/$@ + +$(obj)/%.o: %.c + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) -c $< -o $@ @@ -49,6 +69,9 @@ Index: kconfig/Makefile.br +$(obj)/%.o: %.cc + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$(@F)) -c $< -o $@ + ++$(obj)/%.o: $(obj)/%.cc ++ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$(@F)) -c $< -o $@ ++ +$(obj)/%:: $(src)/%_shipped + $(Q)cat $< > $@ + @@ -61,20 +84,3 @@ Index: kconfig/Makefile.br + +FORCE: +.PHONY: FORCE clean distclean -Index: kconfig/foo.h -=================================================================== ---- /dev/null -+++ kconfig/foo.h -@@ -0,0 +1,12 @@ -+#ifndef __KCONFIG_FOO_H -+#define __KCONFIG_FOO_H -+ -+#ifndef __APPLE__ -+#include -+#endif -+#include -+ -+#ifndef PATH_MAX -+#define PATH_MAX 1024 -+#endif -+#endif /* __KCONFIG_FOO_H */ diff --git a/support/kconfig/patches/11-use-mktemp-for-lxdialog.patch b/support/kconfig/patches/11-use-mktemp-for-lxdialog.patch deleted file mode 100644 index 387c633ae2..0000000000 --- a/support/kconfig/patches/11-use-mktemp-for-lxdialog.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- - lxdialog/check-lxdialog.sh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -Index: kconfig/lxdialog/check-lxdialog.sh -=================================================================== ---- kconfig.orig/lxdialog/check-lxdialog.sh -+++ kconfig/lxdialog/check-lxdialog.sh -@@ -41,7 +41,7 @@ ccflags() - } - - # Temp file, try to clean up after us --tmp=.lxdialog.tmp -+tmp=$(mktemp) - trap "rm -f $tmp" 0 1 2 3 15 - - # Check if we can link to ncurses diff --git a/support/kconfig/patches/12-fix-glade-file-path.patch b/support/kconfig/patches/12-fix-glade-file-path.patch index 7d5941fc9e..0bcb04e62d 100644 --- a/support/kconfig/patches/12-fix-glade-file-path.patch +++ b/support/kconfig/patches/12-fix-glade-file-path.patch @@ -1,12 +1,8 @@ ---- - gconf.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -Index: kconfig/gconf.c -=================================================================== ---- kconfig.orig/gconf.c -+++ kconfig/gconf.c -@@ -1462,7 +1462,7 @@ int main(int ac, char *av[]) +diff --git a/gconf.c b/gconf.c +index 9709aca..d24cebd 100644 +--- a/gconf.c ++++ b/gconf.c +@@ -1452,7 +1452,7 @@ int main(int ac, char *av[]) /* Determine GUI path */ env = getenv(SRCTREE); if (env) diff --git a/support/kconfig/patches/14-support-out-of-tree-config.patch b/support/kconfig/patches/14-support-out-of-tree-config.patch index a3b33ba688..02d438429e 100644 --- a/support/kconfig/patches/14-support-out-of-tree-config.patch +++ b/support/kconfig/patches/14-support-out-of-tree-config.patch @@ -1,36 +1,18 @@ ---- - conf.c | 1 - confdata.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++--------------- - util.c | 16 +++++++++++++-- - 3 files changed, 61 insertions(+), 18 deletions(-) - -Index: kconfig/conf.c -=================================================================== ---- kconfig.orig/conf.c -+++ kconfig/conf.c -@@ -565,7 +565,6 @@ int main(int ac, char **av) - } - name = av[optind]; - conf_parse(name); -- //zconfdump(stdout); - if (sync_kconfig) { - name = conf_get_configname(); - if (stat(name, &tmpstat)) { -Index: kconfig/confdata.c -=================================================================== ---- kconfig.orig/confdata.c -+++ kconfig/confdata.c -@@ -13,6 +13,7 @@ +diff --git a/confdata.c b/confdata.c +index 00a629b..eb952e8 100644 +--- a/confdata.c ++++ b/confdata.c +@@ -17,6 +17,7 @@ #include #include #include +#include + #include "internal.h" #include "lkc.h" +@@ -214,9 +215,7 @@ const char *conf_get_configname(void) -@@ -76,9 +77,7 @@ const char *conf_get_configname(void) - - const char *conf_get_autoconfig_name(void) + static const char *conf_get_autoconfig_name(void) { - char *name = getenv("KCONFIG_AUTOCONFIG"); - @@ -38,170 +20,4 @@ Index: kconfig/confdata.c + return getenv("KCONFIG_AUTOCONFIG"); } - static char *conf_expand_value(const char *in) -@@ -748,6 +747,9 @@ int conf_write(const char *name) - char dirname[PATH_MAX+1], tmpname[PATH_MAX+1], newname[PATH_MAX+1]; - char *env; - -+ if (!name) -+ name = conf_get_configname(); -+ - dirname[0] = 0; - if (name && name[0]) { - struct stat st; -@@ -842,6 +844,7 @@ static int conf_split_config(void) - { - const char *name; - char path[PATH_MAX+1]; -+ char *opwd, *dir, *_name; - char *s, *d, c; - struct symbol *sym; - struct stat sb; -@@ -851,8 +854,20 @@ static int conf_split_config(void) - conf_read_simple(name, S_DEF_AUTO); - sym_calc_value(modules_sym); - -- if (chdir("include/config")) -- return 1; -+ opwd = malloc(256); -+ _name = strdup(name); -+ if (opwd == NULL || _name == NULL) -+ return 1; -+ opwd = getcwd(opwd, 256); -+ dir = dirname(_name); -+ if (dir == NULL) { -+ res = 1; -+ goto err; -+ } -+ if (chdir(dir)) { -+ res = 1; -+ goto err; -+ } - - res = 0; - for_all_symbols(i, sym) { -@@ -945,9 +960,11 @@ static int conf_split_config(void) - close(fd); - } - out: -- if (chdir("../..")) -- return 1; -- -+ if (chdir(opwd)) -+ res = 1; -+err: -+ free(opwd); -+ free(_name); - return res; - } - -@@ -957,25 +974,38 @@ int conf_write_autoconf(void) - const char *name; - FILE *out, *tristate, *out_h; - int i; -+ char dir[PATH_MAX+1], buf[PATH_MAX+1]; -+ char *s; -+ -+ strcpy(dir, conf_get_configname()); -+ s = strrchr(dir, '/'); -+ if (s) -+ s[1] = 0; -+ else -+ dir[0] = 0; - - sym_clear_all_valid(); - -- file_write_dep("include/config/auto.conf.cmd"); -+ sprintf(buf, "%s.config.cmd", dir); -+ file_write_dep(buf); - - if (conf_split_config()) - return 1; - -- out = fopen(".tmpconfig", "w"); -+ sprintf(buf, "%s.tmpconfig", dir); -+ out = fopen(buf, "w"); - if (!out) - return 1; - -- tristate = fopen(".tmpconfig_tristate", "w"); -+ sprintf(buf, "%s.tmpconfig_tristate", dir); -+ tristate = fopen(buf, "w"); - if (!tristate) { - fclose(out); - return 1; - } - -- out_h = fopen(".tmpconfig.h", "w"); -+ sprintf(buf, "%s.tmpconfig.h", dir); -+ out_h = fopen(buf, "w"); - if (!out_h) { - fclose(out); - fclose(tristate); -@@ -1007,19 +1037,22 @@ int conf_write_autoconf(void) - name = getenv("KCONFIG_AUTOHEADER"); - if (!name) - name = "include/generated/autoconf.h"; -- if (rename(".tmpconfig.h", name)) -+ sprintf(buf, "%s.tmpconfig.h", dir); -+ if (rename(buf, name)) - return 1; - name = getenv("KCONFIG_TRISTATE"); - if (!name) - name = "include/config/tristate.conf"; -- if (rename(".tmpconfig_tristate", name)) -+ sprintf(buf, "%s.tmpconfig_tristate", dir); -+ if (rename(buf, name)) - return 1; - name = conf_get_autoconfig_name(); - /* - * This must be the last step, kbuild has a dependency on auto.conf - * and this marks the successful completion of the previous steps. - */ -- if (rename(".tmpconfig", name)) -+ sprintf(buf, "%s.tmpconfig", dir); -+ if (rename(buf, name)) - return 1; - - return 0; -Index: kconfig/util.c -=================================================================== ---- kconfig.orig/util.c -+++ kconfig/util.c -@@ -34,6 +34,8 @@ struct file *file_lookup(const char *nam - /* write a dependency file as used by kbuild to track dependencies */ - int file_write_dep(const char *name) - { -+ char *str; -+ char buf[PATH_MAX+1], buf2[PATH_MAX+1], dir[PATH_MAX+1]; - struct symbol *sym, *env_sym; - struct expr *e; - struct file *file; -@@ -41,7 +43,16 @@ int file_write_dep(const char *name) - - if (!name) - name = ".kconfig.d"; -- out = fopen("..config.tmp", "w"); -+ -+ strcpy(dir, conf_get_configname()); -+ str = strrchr(dir, '/'); -+ if (str) -+ str[1] = 0; -+ else -+ dir[0] = 0; -+ -+ sprintf(buf, "%s..config.tmp", dir); -+ out = fopen(buf, "w"); - if (!out) - return 1; - fprintf(out, "deps_config := \\\n"); -@@ -72,7 +83,8 @@ int file_write_dep(const char *name) - - fprintf(out, "\n$(deps_config): ;\n"); - fclose(out); -- rename("..config.tmp", name); -+ sprintf(buf2, "%s%s", dir, name); -+ rename(buf, buf2); - return 0; - } - + static const char *conf_get_autoheader_name(void) diff --git a/support/kconfig/patches/16-fix-space-to-de-select-options.patch b/support/kconfig/patches/16-fix-space-to-de-select-options.patch index 08f7ec5d95..2b7a4f5655 100644 --- a/support/kconfig/patches/16-fix-space-to-de-select-options.patch +++ b/support/kconfig/patches/16-fix-space-to-de-select-options.patch @@ -3,21 +3,21 @@ Author: Yann E. MORIN Date: Wed Nov 13 22:45:02 2013 +0100 support/kconfig: fix 'space' to (de)select options - + In case a menu has comment without letters/numbers (eg. characters matching the regexp '^[^[:alpha:][:digit:]]+$', for example - or *), hitting space will cycle through those comments, rather than selecting/deselecting the currently-highlighted option. - + This is the behaviour of hitting any letter/digit: jump to the next option which prompt starts with that letter. The only letters that do not behave as such are 'y' 'm' and 'n'. Prompts that start with one of those three letters are instead matched on the first letter that is not 'y', 'm' or 'n'. - + Fix that by treating 'space' as we treat y/m/n, ie. as an action key, not as shortcut to jump to prompt. - + Signed-off-by: "Yann E. MORIN" Cc: Thomas Petazzoni Cc: Peter Korsgaard @@ -25,12 +25,11 @@ Date: Wed Nov 13 22:45:02 2013 +0100 Cc: Thomas De Schampheleire --- Note: I'll be running this upstream soonish. - -Index: kconfig/lxdialog/menubox.c -=================================================================== ---- kconfig.orig/lxdialog/menubox.c -+++ kconfig/lxdialog/menubox.c -@@ -285,7 +285,7 @@ do_resize: +diff --git a/lxdialog/menubox.c b/lxdialog/menubox.c +index 6e6244d..d4c19b7 100644 +--- a/lxdialog/menubox.c ++++ b/lxdialog/menubox.c +@@ -264,7 +264,7 @@ do_resize: if (key < 256 && isalpha(key)) key = tolower(key); diff --git a/support/kconfig/patches/17-backport-kecho.patch b/support/kconfig/patches/17-backport-kecho.patch deleted file mode 100644 index 9d13876616..0000000000 --- a/support/kconfig/patches/17-backport-kecho.patch +++ /dev/null @@ -1,26 +0,0 @@ -This commit added kecho to scripts/Kbuild.include (and doc). -Backported just Kbuild.include part to Makefile - -commit 5410ecc0def8955ab99810c5626cc7e156991896 -Author: Mike Frysinger -Date: Thu Nov 6 03:31:34 2008 -0500 - - kbuild: introduce $(kecho) convenience echo - -Index: kconfig/Makefile -=================================================================== ---- kconfig.orig/Makefile -+++ kconfig/Makefile -@@ -6,6 +6,12 @@ - PHONY += xconfig gconfig menuconfig config syncconfig update-po-config \ - localmodconfig localyesconfig - -+# Easy method for doing a status message -+ kecho := : -+ quiet_kecho := echo -+silent_kecho := : -+kecho := $($(quiet)kecho) -+ - ifdef KBUILD_KCONFIG - Kconfig := $(KBUILD_KCONFIG) - else diff --git a/support/kconfig/patches/18-merge-config.sh-create-temporary-files-in-tmp.patch b/support/kconfig/patches/18-merge-config.sh-create-temporary-files-in-tmp.patch index f2a261f308..342d6359f6 100644 --- a/support/kconfig/patches/18-merge-config.sh-create-temporary-files-in-tmp.patch +++ b/support/kconfig/patches/18-merge-config.sh-create-temporary-files-in-tmp.patch @@ -11,17 +11,18 @@ Date: Mon, 7 Dec 2015 12:08:45 -0200 Signed-off-by: Henrique Marks Signed-off-by: Carlos Santos Signed-off-by: Peter Korsgaard - -Index: kconfig/merge_config.sh -=================================================================== ---- kconfig.orig/merge_config.sh -+++ kconfig/merge_config.sh -@@ -100,7 +100,7 @@ fi +diff --git a/merge_config.sh b/merge_config.sh +index 902eb42..05737ba 100755 +--- a/merge_config.sh ++++ b/merge_config.sh +@@ -120,8 +120,8 @@ MERGE_LIST=$* + SED_CONFIG_EXP1="s/^\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\)=.*/\1/p" + SED_CONFIG_EXP2="s/^# \(${CONFIG_PREFIX}[a-zA-Z0-9_]*\) is not set$/\1/p" - MERGE_LIST=$* - SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(CONFIG_[a-zA-Z0-9_]*\)[= ].*/\2/p" -TMP_FILE=$(mktemp ./.tmp.config.XXXXXXXXXX) +-MERGE_FILE=$(mktemp ./.merge_tmp.config.XXXXXXXXXX) +TMP_FILE=$(mktemp -t .tmp.config.XXXXXXXXXX) ++MERGE_FILE=$(mktemp -t .merge_tmp.config.XXXXXXXXXX) echo "Using $INITFILE as base" - cat $INITFILE > $TMP_FILE + diff --git a/support/kconfig/patches/19-merge_config.sh-add-br2-external-support.patch b/support/kconfig/patches/19-merge_config.sh-add-br2-external-support.patch index 1d0ef323bd..0b4814da1e 100644 --- a/support/kconfig/patches/19-merge_config.sh-add-br2-external-support.patch +++ b/support/kconfig/patches/19-merge_config.sh-add-br2-external-support.patch @@ -12,20 +12,20 @@ Date: Tue, 9 Jan 2018 14:37:43 +0300 Acked-by: "Yann E. MORIN" Signed-off-by: Peter Korsgaard -Index: kconfig/merge_config.sh -=================================================================== ---- kconfig.orig/merge_config.sh -+++ kconfig/merge_config.sh -@@ -33,6 +33,7 @@ usage() { - echo " -n use allnoconfig instead of alldefconfig" - echo " -r list redundant entries when merging fragments" +diff --git a/merge_config.sh b/merge_config.sh +index 05737ba..a5c0348 100755 +--- a/merge_config.sh ++++ b/merge_config.sh +@@ -30,6 +30,7 @@ usage() { echo " -O dir to put generated output files. Consider setting \$KCONFIG_CONFIG instead." + echo " -s strict mode. Fail if the fragment redefines any value." + echo " -Q disable warning messages for overridden options." + echo " -e colon-separated list of br2-external trees to use (optional)" + echo + echo "Used prefix: '$CONFIG_PREFIX'. You can redefine it with \$CONFIG_ environment variable." } - - RUNMAKE=true -@@ -71,6 +72,11 @@ while true; do - shift 2 +@@ -89,6 +90,11 @@ while true; do + shift continue ;; + "-e") @@ -36,7 +36,7 @@ Index: kconfig/merge_config.sh *) break ;; -@@ -151,7 +157,7 @@ fi +@@ -194,7 +200,7 @@ fi # Use the merged file as the starting point for: # alldefconfig: Fills in any missing symbols with Kconfig default # allnoconfig: Fills in any missing symbols with # CONFIG_* is not set diff --git a/support/kconfig/patches/20-merge_config.sh-Allow-to-define-config-prefix.patch b/support/kconfig/patches/20-merge_config.sh-Allow-to-define-config-prefix.patch deleted file mode 100644 index 645043b163..0000000000 --- a/support/kconfig/patches/20-merge_config.sh-Allow-to-define-config-prefix.patch +++ /dev/null @@ -1,31 +0,0 @@ -Index: kconfig/merge_config.sh -=================================================================== ---- kconfig.orig/merge_config.sh -+++ kconfig/merge_config.sh -@@ -34,12 +34,16 @@ usage() { - echo " -r list redundant entries when merging fragments" - echo " -O dir to put generated output files. Consider setting \$KCONFIG_CONFIG instead." - echo " -e colon-separated list of br2-external trees to use (optional)" -+ echo -+ echo "Used prefix: '$CONFIG_PREFIX'. You can redefine it with \$CONFIG_ -+ environment variable." - } - - RUNMAKE=true - ALLTARGET=alldefconfig - WARNREDUN=false - OUTPUT=. -+CONFIG_PREFIX=${CONFIG_-CONFIG_} - - while true; do - case $1 in -@@ -105,7 +109,8 @@ if [ ! -r "$INITFILE" ]; then - fi - - MERGE_LIST=$* --SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(CONFIG_[a-zA-Z0-9_]*\)[= ].*/\2/p" -+SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\)[= ].*/\2/p" -+ - TMP_FILE=$(mktemp -t .tmp.config.XXXXXXXXXX) - - echo "Using $INITFILE as base" diff --git a/support/kconfig/patches/21-Avoid-false-positive-matches-from-comment-lines.patch b/support/kconfig/patches/21-Avoid-false-positive-matches-from-comment-lines.patch deleted file mode 100644 index c11144e47e..0000000000 --- a/support/kconfig/patches/21-Avoid-false-positive-matches-from-comment-lines.patch +++ /dev/null @@ -1,32 +0,0 @@ -Index: kconfig/merge_config.sh -=================================================================== ---- kconfig.orig/merge_config.sh -+++ kconfig/merge_config.sh -@@ -109,7 +109,8 @@ if [ ! -r "$INITFILE" ]; then - fi - - MERGE_LIST=$* --SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\)[= ].*/\2/p" -+SED_CONFIG_EXP1="s/^\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\)=.*/\1/p" -+SED_CONFIG_EXP2="s/^# \(${CONFIG_PREFIX}[a-zA-Z0-9_]*\) is not set$/\1/p" - - TMP_FILE=$(mktemp -t .tmp.config.XXXXXXXXXX) - -@@ -123,7 +124,7 @@ for MERGE_FILE in $MERGE_LIST ; do - echo "The merge file '$MERGE_FILE' does not exist. Exit." >&2 - exit 1 - fi -- CFG_LIST=$(sed -n "$SED_CONFIG_EXP" $MERGE_FILE) -+ CFG_LIST=$(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $MERGE_FILE) - - for CFG in $CFG_LIST ; do - grep -q -w $CFG $TMP_FILE || continue -@@ -166,7 +167,7 @@ make KCONFIG_ALLCONFIG=$TMP_FILE $EXTERN - - - # Check all specified config values took (might have missed-dependency issues) --for CFG in $(sed -n "$SED_CONFIG_EXP" $TMP_FILE); do -+for CFG in $(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $TMP_FILE); do - - REQUESTED_VAL=$(grep -w -e "$CFG" $TMP_FILE) - ACTUAL_VAL=$(grep -w -e "$CFG" "$KCONFIG_CONFIG") diff --git a/support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch b/support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch deleted file mode 100644 index 41081bb45d..0000000000 --- a/support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 3ae91337b53fa3ccf0bad7f181fcaf483fab22ee Mon Sep 17 00:00:00 2001 -From: Robert Marko -Date: Wed, 3 Apr 2024 14:18:07 +0200 -Subject: [PATCH] kconfig/lxdialog: fix check() with GCC14 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -GCC14 now treats implicit int types as error so when check() from -check-lxdialog.sh is called to check whether we can link against ncurses -it will fail silently and the help text indicating to install ncurses is -printed. - -However, this is not due to missing ncurses but once the stderr redirect -to /dev/null is removed we can see the root cause: -:2:1: error: return type defaults to ?int? [-Wimplicit-int] - -So, in order for menuconfig to work with GCC14 lets just specify the -return type of main() as int. - -Signed-off-by: Robert Marko -Reviewed-by: Petr Vorel -Tested-by: Petr Vorel ---- - kconfig/lxdialog/check-lxdialog.sh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/kconfig/lxdialog/check-lxdialog.sh b/kconfig/lxdialog/check-lxdialog.sh -index 16cd9a3186..27d6c30a57 100755 ---- a/kconfig/lxdialog/check-lxdialog.sh -+++ b/kconfig/lxdialog/check-lxdialog.sh -@@ -48,7 +48,7 @@ trap "rm -f $tmp" 0 1 2 3 15 - check() { - $cc -x c - -o $tmp 2>/dev/null <<'EOF' - #include CURSES_LOC --main() {} -+int main() {} - EOF - if [ $? != 0 ]; then - echo " *** Unable to find the ncurses libraries or the" 1>&2 --- -2.44.0 - diff --git a/support/kconfig/patches/23-Revert-kconfig-allow-only-config-comment-and-if-insi.patch b/support/kconfig/patches/23-Revert-kconfig-allow-only-config-comment-and-if-insi.patch new file mode 100644 index 0000000000..d5a011bb6e --- /dev/null +++ b/support/kconfig/patches/23-Revert-kconfig-allow-only-config-comment-and-if-insi.patch @@ -0,0 +1,956 @@ +Revert "kconfig: allow only 'config', 'comment', and 'if' inside 'choice'" + +This reverts linux mainline commit 09d5873e4d1f70202314b5fe40160f9b14b9d2d0 +as applied to buildroot support/kconfig (additional update imported +parser.tab.c_shipped). + +Original patch header: + +The code block surrounded by 'if' ... 'endif' is reduced into if_stmt, +which is accepted in the 'choice' context. Therefore, you can write any +statements within a choice block by wrapping 'if y' ... 'end'. + +For example, you can create a menu inside a choice, like follows: + +---------------->8---------------- + choice + prompt "choice" + + config A + bool "A" + + config B + bool "B" + + if y + + menu "strange menu" + + config C + bool "C" + + endmenu + + endif + + endchoice +---------------->8---------------- + +I want to change such a weird structure into a syntax error. + +In fact, the USB gadget Kconfig had used nested 'choice' for no good +reason until commit df8df5e4bc37 ("usb: get rid of 'choice' for +legacy gadget drivers") killed it. + +I think the 'source' inside 'choice' is on the fence. It is at least +gramatically sensible as long as the included file contains only +bool/tristate configs. However, it makes the code unreadable, and people +tend to forget the fact that the file is included from the choice +block. Commit 10e5e6c24963 ("usb: gadget: move choice ... endchoice to +legacy/Kconfig") got rid of the only usecase. + +Going forward, you can only use 'config', 'comment', and 'if' inside +'choice'. This also recursively applies to 'if' blocks inside 'choice'. + +Signed-off-by: Masahiro Yamada +[Revert and applied to buildroot support/kconfig] +Signed-off-by: Peter Seiderer +diff --git a/parser.tab.c_shipped b/parser.tab.c_shipped +index 85234d0..092da33 100644 +--- a/parser.tab.c_shipped ++++ b/parser.tab.c_shipped +@@ -177,7 +177,7 @@ enum yysymbol_kind_t + YYSYMBOL_input = 51, /* input */ + YYSYMBOL_mainmenu_stmt = 52, /* mainmenu_stmt */ + YYSYMBOL_stmt_list = 53, /* stmt_list */ +- YYSYMBOL_stmt_list_in_choice = 54, /* stmt_list_in_choice */ ++ YYSYMBOL_common_stmt = 54, /* common_stmt */ + YYSYMBOL_config_entry_start = 55, /* config_entry_start */ + YYSYMBOL_config_stmt = 56, /* config_stmt */ + YYSYMBOL_menuconfig_entry_start = 57, /* menuconfig_entry_start */ +@@ -193,10 +193,10 @@ enum yysymbol_kind_t + YYSYMBOL_type = 67, /* type */ + YYSYMBOL_logic_type = 68, /* logic_type */ + YYSYMBOL_default = 69, /* default */ +- YYSYMBOL_if_entry = 70, /* if_entry */ +- YYSYMBOL_if_end = 71, /* if_end */ +- YYSYMBOL_if_stmt = 72, /* if_stmt */ +- YYSYMBOL_if_stmt_in_choice = 73, /* if_stmt_in_choice */ ++ YYSYMBOL_choice_block = 70, /* choice_block */ ++ YYSYMBOL_if_entry = 71, /* if_entry */ ++ YYSYMBOL_if_end = 72, /* if_end */ ++ YYSYMBOL_if_stmt = 73, /* if_stmt */ + YYSYMBOL_menu = 74, /* menu */ + YYSYMBOL_menu_entry = 75, /* menu_entry */ + YYSYMBOL_menu_end = 76, /* menu_end */ +@@ -546,16 +546,16 @@ union yyalloc + /* YYFINAL -- State number of the termination state. */ + #define YYFINAL 6 + /* YYLAST -- Last index in YYTABLE. */ +-#define YYLAST 186 ++#define YYLAST 189 + + /* YYNTOKENS -- Number of terminals. */ + #define YYNTOKENS 50 + /* YYNNTS -- Number of nonterminals. */ + #define YYNNTS 46 + /* YYNRULES -- Number of rules. */ +-#define YYNRULES 103 ++#define YYNRULES 100 + /* YYNSTATES -- Number of states. */ +-#define YYNSTATES 182 ++#define YYNSTATES 177 + + /* YYMAXUTOK -- Last valid token kind. */ + #define YYMAXUTOK 304 +@@ -610,16 +610,16 @@ static const yytype_int8 yytranslate[] = + static const yytype_int16 yyrline[] = + { + 0, 108, 108, 108, 112, 117, 119, 120, 121, 122, +- 123, 124, 125, 126, 127, 128, 131, 133, 134, 135, +- 136, 141, 148, 153, 160, 169, 171, 172, 173, 176, +- 182, 188, 197, 203, 209, 215, 225, 234, 245, 253, +- 256, 258, 259, 260, 263, 269, 275, 281, 288, 289, +- 290, 291, 294, 295, 298, 299, 300, 304, 312, 320, +- 323, 328, 335, 340, 348, 351, 353, 354, 357, 366, +- 373, 376, 378, 383, 389, 407, 414, 421, 423, 428, +- 429, 430, 433, 434, 437, 438, 439, 440, 441, 442, +- 443, 444, 445, 446, 447, 451, 453, 454, 459, 462, +- 463, 464, 468, 469 ++ 123, 127, 128, 129, 130, 131, 132, 137, 144, 149, ++ 156, 165, 167, 168, 169, 172, 178, 184, 193, 199, ++ 205, 211, 221, 230, 241, 249, 252, 254, 255, 256, ++ 259, 265, 271, 277, 284, 285, 286, 287, 290, 291, ++ 294, 295, 296, 298, 300, 305, 313, 321, 326, 333, ++ 338, 346, 349, 351, 352, 355, 364, 371, 374, 376, ++ 381, 387, 405, 412, 419, 421, 426, 427, 428, 431, ++ 432, 435, 436, 437, 438, 439, 440, 441, 442, 443, ++ 444, 445, 449, 451, 452, 457, 460, 461, 462, 466, ++ 467 + }; + #endif + +@@ -644,15 +644,15 @@ static const char *const yytname[] = + "T_PROMPT", "T_RANGE", "T_SELECT", "T_SOURCE", "T_STRING", "T_TRISTATE", + "T_VISIBLE", "T_EOL", "T_ASSIGN_VAL", "T_OR", "T_AND", "T_EQUAL", + "T_UNEQUAL", "T_LESS", "T_LESS_EQUAL", "T_GREATER", "T_GREATER_EQUAL", +- "T_NOT", "$accept", "input", "mainmenu_stmt", "stmt_list", +- "stmt_list_in_choice", "config_entry_start", "config_stmt", +- "menuconfig_entry_start", "menuconfig_stmt", "config_option_list", +- "config_option", "choice", "choice_entry", "choice_end", "choice_stmt", +- "choice_option_list", "choice_option", "type", "logic_type", "default", +- "if_entry", "if_end", "if_stmt", "if_stmt_in_choice", "menu", +- "menu_entry", "menu_end", "menu_stmt", "menu_option_list", "source_stmt", +- "comment", "comment_stmt", "comment_option_list", "help_start", "help", +- "depends", "visible", "prompt_stmt_opt", "end", "if_expr", "expr", ++ "T_NOT", "$accept", "input", "mainmenu_stmt", "stmt_list", "common_stmt", ++ "config_entry_start", "config_stmt", "menuconfig_entry_start", ++ "menuconfig_stmt", "config_option_list", "config_option", "choice", ++ "choice_entry", "choice_end", "choice_stmt", "choice_option_list", ++ "choice_option", "type", "logic_type", "default", "choice_block", ++ "if_entry", "if_end", "if_stmt", "menu", "menu_entry", "menu_end", ++ "menu_stmt", "menu_option_list", "source_stmt", "comment", ++ "comment_stmt", "comment_option_list", "help_start", "help", "depends", ++ "visible", "prompt_stmt_opt", "end", "if_expr", "expr", + "nonconst_symbol", "symbol", "assignment_stmt", "assign_op", + "assign_val", YY_NULLPTR + }; +@@ -664,7 +664,7 @@ yysymbol_name (yysymbol_kind_t yysymbol) + } + #endif + +-#define YYPACT_NINF (-62) ++#define YYPACT_NINF (-67) + + #define yypact_value_is_default(Yyn) \ + ((Yyn) == YYPACT_NINF) +@@ -678,25 +678,24 @@ yysymbol_name (yysymbol_kind_t yysymbol) + STATE-NUM. */ + static const yytype_int16 yypact[] = + { +- 5, 30, 39, -62, 33, 13, -62, 62, 16, 17, +- 22, 41, 60, 2, 77, 60, 79, -62, -62, -62, +- -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, +- -62, -62, -62, -62, -62, 26, -62, -62, -62, 27, +- -62, 47, -62, 50, -62, 2, 2, -20, -62, 31, +- 52, 55, 59, 107, 107, 130, 155, 89, -6, 89, +- 86, -62, -62, 69, -62, -62, 8, -62, -62, 2, +- 2, 23, 23, 23, 23, 23, 23, -62, -62, -62, +- -62, -62, -62, -62, 81, 72, -62, 60, -62, 78, +- 111, 23, 60, -62, -62, -62, 113, -62, 2, 120, +- -62, -62, 60, 92, 123, -62, 113, -62, -62, 93, +- 94, 108, 115, -62, -62, -62, -62, -62, -62, -62, +- -62, 104, -62, -62, -62, -62, -62, -62, -62, 110, +- -62, -62, -62, -62, -62, -62, -62, 2, -62, 104, +- -62, 104, 23, 104, 104, 119, 15, -62, 104, -62, +- 104, 122, -62, -62, -62, -62, 155, 2, 124, 96, +- 125, 129, 104, 131, -62, -62, 135, 136, 138, -62, +- -62, 29, -62, -62, -62, -62, 139, -62, -62, -62, +- -62, -62 ++ 15, 13, 29, -67, 30, 19, -67, 59, 22, 11, ++ 23, 52, 60, -1, 62, 60, 63, -67, -67, -67, ++ -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, ++ -67, -67, -67, -67, -67, -67, 32, -67, -67, -67, ++ 37, -67, 33, -67, 47, -67, -1, -1, 34, -67, ++ 141, 48, 49, 53, 111, 111, 84, 142, 94, 6, ++ 94, 76, -67, -67, 58, -67, -67, 5, -67, -67, ++ -1, -1, 18, 18, 18, 18, 18, 18, -67, -67, ++ -67, -67, -67, -67, -67, 72, 67, -67, 60, -67, ++ 69, 97, 18, 60, -67, -67, -67, 104, -67, -1, ++ 110, -67, -67, 60, 79, 117, -67, 104, -67, -67, ++ 7, 88, 89, 93, -67, -67, -67, -67, -67, 114, ++ -67, -67, -67, -67, -67, -67, -67, 95, -67, -67, ++ -67, -67, -67, -67, -67, -1, -67, 114, -67, 114, ++ 18, 114, 114, 100, -6, -67, 114, -67, 114, 101, ++ -67, -67, -67, -1, 102, 40, 103, 112, 114, 115, ++ -67, -67, 116, 118, 122, -67, -9, -67, -67, -67, ++ -67, 126, -67, -67, -67, -67, -67 + }; + + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. +@@ -705,44 +704,43 @@ static const yytype_int16 yypact[] = + static const yytype_int8 yydefact[] = + { + 5, 0, 0, 5, 0, 0, 1, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 25, 9, 25, +- 12, 40, 16, 7, 5, 10, 65, 5, 11, 13, +- 71, 8, 6, 4, 15, 0, 100, 101, 99, 102, +- 36, 0, 95, 0, 97, 0, 0, 0, 96, 84, +- 0, 0, 0, 22, 24, 37, 0, 0, 62, 0, +- 70, 14, 103, 0, 69, 21, 0, 92, 57, 0, +- 0, 0, 0, 0, 0, 0, 0, 61, 23, 68, +- 52, 54, 55, 56, 0, 0, 50, 0, 49, 0, +- 0, 0, 0, 51, 53, 26, 77, 48, 0, 0, +- 28, 27, 0, 0, 0, 41, 77, 43, 42, 0, +- 0, 0, 0, 18, 39, 16, 19, 17, 38, 59, +- 58, 82, 67, 66, 64, 63, 72, 98, 91, 93, +- 94, 89, 90, 85, 86, 87, 88, 0, 73, 82, +- 35, 82, 0, 82, 82, 0, 82, 74, 82, 46, +- 82, 0, 20, 80, 81, 79, 0, 0, 0, 0, +- 0, 0, 82, 0, 78, 29, 0, 0, 0, 45, +- 60, 83, 76, 75, 33, 30, 0, 32, 31, 47, +- 44, 34 ++ 0, 0, 0, 0, 0, 0, 0, 6, 21, 13, ++ 21, 14, 36, 53, 7, 5, 11, 62, 5, 8, ++ 15, 68, 12, 16, 4, 10, 0, 97, 98, 96, ++ 99, 32, 0, 92, 0, 94, 0, 0, 0, 93, ++ 81, 0, 0, 0, 18, 20, 33, 0, 0, 59, ++ 0, 67, 9, 100, 0, 66, 17, 0, 89, 55, ++ 0, 0, 0, 0, 0, 0, 0, 0, 58, 19, ++ 65, 48, 50, 51, 52, 0, 0, 46, 0, 45, ++ 0, 0, 0, 0, 47, 49, 22, 74, 44, 0, ++ 0, 24, 23, 0, 0, 0, 37, 74, 39, 38, ++ 0, 0, 0, 0, 54, 35, 34, 57, 56, 79, ++ 64, 63, 61, 60, 69, 95, 88, 90, 91, 86, ++ 87, 82, 83, 84, 85, 0, 70, 79, 31, 79, ++ 0, 79, 79, 0, 79, 71, 79, 42, 79, 0, ++ 77, 78, 76, 0, 0, 0, 0, 0, 79, 0, ++ 75, 25, 0, 0, 0, 41, 80, 73, 72, 29, ++ 26, 0, 28, 27, 43, 40, 30 + }; + + /* YYPGOTO[NTERM-NUM]. */ + static const yytype_int16 yypgoto[] = + { +- -62, -62, -62, 14, 44, -62, -54, -62, -62, 160, +- -62, -62, -62, -62, -62, -62, -62, -62, 126, -62, +- -53, 24, -62, -62, -62, -62, -62, -62, -62, -62, +- -62, -52, -62, -62, 127, -13, -62, 80, -36, 7, +- -45, -7, -61, -62, -62, -62 ++ -67, -67, -67, 24, 92, -67, -67, -67, -67, 130, ++ -67, -67, -67, -67, -67, -67, -67, -67, 80, -67, ++ -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, ++ -67, -67, -67, -67, 119, -42, -67, 65, -15, 25, ++ -46, -10, -66, -67, -67, -67 + }; + + /* YYDEFGOTO[NTERM-NUM]. */ + static const yytype_uint8 yydefgoto[] = + { +- 0, 2, 3, 4, 56, 17, 18, 19, 20, 53, +- 95, 21, 22, 114, 23, 55, 105, 96, 97, 98, +- 24, 119, 25, 116, 26, 27, 124, 28, 58, 29, +- 30, 31, 60, 99, 100, 101, 123, 145, 120, 158, +- 47, 48, 49, 32, 39, 63 ++ 0, 2, 3, 4, 17, 18, 19, 20, 21, 54, ++ 96, 22, 23, 115, 24, 56, 106, 97, 98, 99, ++ 57, 25, 117, 26, 27, 28, 122, 29, 59, 30, ++ 31, 32, 61, 100, 101, 102, 121, 143, 116, 154, ++ 48, 49, 50, 33, 40, 64 + }; + + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If +@@ -750,48 +748,48 @@ static const yytype_uint8 yydefgoto[] = + number is the opposite. If YYTABLE_NINF, syntax error. */ + static const yytype_int16 yytable[] = + { +- 66, 67, 113, 115, 117, 43, 42, 44, 51, 84, +- 131, 132, 133, 134, 135, 136, 128, 7, 35, 68, +- 118, 69, 70, 125, 129, 130, 36, 42, 44, 1, +- 142, 45, 121, -3, 8, 5, 157, 9, 57, 6, +- 10, 59, 108, 11, 12, 122, 41, 126, 37, 69, +- 70, 46, 33, 146, 13, 34, 69, 70, 14, 15, +- 38, 40, -2, 8, 42, 61, 9, 62, 16, 10, +- 69, 70, 11, 12, 71, 72, 73, 74, 75, 76, +- 139, 162, 50, 13, 52, 143, 64, 14, 15, 65, +- 8, 77, 159, 9, 78, 148, 10, 16, 79, 11, +- 12, 84, 113, 115, 117, 110, 111, 112, 127, 137, +- 13, 138, 171, 80, 14, 15, 141, 140, 144, 81, +- 82, 83, 84, 147, 16, 157, 85, 86, 150, 87, +- 88, 149, 152, 153, 89, 173, 80, 69, 70, 90, +- 91, 92, 102, 93, 94, 84, 160, 154, 161, 85, +- 163, 164, 70, 166, 155, 167, 109, 168, 165, 156, +- 103, 169, 104, 172, 174, 11, 12, 94, 175, 176, +- 177, 110, 111, 112, 178, 179, 13, 180, 181, 54, +- 170, 106, 107, 0, 0, 0, 151 ++ 67, 68, 44, 43, 45, 52, 129, 130, 131, 132, ++ 133, 134, 36, 126, 109, 153, 37, 120, 5, 124, ++ 37, 85, 43, 45, 127, 128, 140, 7, 46, 6, ++ -3, 8, 70, 71, 9, 70, 71, 10, 38, 1, ++ 11, 12, 38, 118, 119, 123, 70, 71, 47, 58, ++ 39, 13, 60, 144, 39, 14, 15, 42, 34, -2, ++ 8, 35, 41, 9, 43, 16, 10, 51, 53, 11, ++ 12, 62, 65, 69, 158, 70, 71, 63, 137, 168, ++ 13, 70, 71, 141, 14, 15, 66, 78, 79, 155, ++ 81, 85, 80, 146, 16, 8, 103, 125, 9, 85, ++ 135, 10, 139, 86, 11, 12, 136, 166, 138, 142, ++ 111, 112, 113, 145, 104, 13, 105, 81, 147, 14, ++ 15, 95, 148, 82, 83, 84, 85, 150, 151, 16, ++ 86, 87, 152, 88, 89, 153, 107, 71, 90, 161, ++ 165, 167, 169, 91, 92, 93, 110, 94, 95, 114, ++ 55, 170, 11, 12, 172, 173, 0, 174, 111, 112, ++ 113, 175, 156, 13, 157, 176, 159, 160, 15, 162, ++ 0, 163, 149, 164, 0, 108, 0, 16, 0, 0, ++ 0, 0, 0, 171, 72, 73, 74, 75, 76, 77 + }; + + static const yytype_int16 yycheck[] = + { +- 45, 46, 56, 56, 56, 12, 4, 5, 15, 15, +- 71, 72, 73, 74, 75, 76, 8, 3, 1, 39, +- 56, 41, 42, 59, 69, 70, 9, 4, 5, 24, +- 91, 29, 38, 0, 1, 5, 21, 4, 24, 0, +- 7, 27, 55, 10, 11, 58, 5, 60, 31, 41, +- 42, 49, 39, 98, 21, 39, 41, 42, 25, 26, +- 43, 39, 0, 1, 4, 39, 4, 40, 35, 7, +- 41, 42, 10, 11, 43, 44, 45, 46, 47, 48, +- 87, 142, 5, 21, 5, 92, 39, 25, 26, 39, +- 1, 39, 137, 4, 39, 102, 7, 35, 39, 10, +- 11, 15, 156, 156, 156, 16, 17, 18, 39, 28, +- 21, 39, 157, 6, 25, 26, 5, 39, 5, 12, +- 13, 14, 15, 3, 35, 21, 19, 20, 5, 22, +- 23, 39, 39, 39, 27, 39, 6, 41, 42, 32, +- 33, 34, 12, 36, 37, 15, 139, 39, 141, 19, +- 143, 144, 42, 146, 39, 148, 1, 150, 39, 115, +- 30, 39, 32, 39, 39, 10, 11, 37, 39, 162, +- 39, 16, 17, 18, 39, 39, 21, 39, 39, 19, +- 156, 55, 55, -1, -1, -1, 106 ++ 46, 47, 12, 4, 5, 15, 72, 73, 74, 75, ++ 76, 77, 1, 8, 56, 21, 9, 59, 5, 61, ++ 9, 15, 4, 5, 70, 71, 92, 3, 29, 0, ++ 0, 1, 41, 42, 4, 41, 42, 7, 31, 24, ++ 10, 11, 31, 58, 38, 60, 41, 42, 49, 25, ++ 43, 21, 28, 99, 43, 25, 26, 5, 39, 0, ++ 1, 39, 39, 4, 4, 35, 7, 5, 5, 10, ++ 11, 39, 39, 39, 140, 41, 42, 40, 88, 39, ++ 21, 41, 42, 93, 25, 26, 39, 39, 39, 135, ++ 6, 15, 39, 103, 35, 1, 12, 39, 4, 15, ++ 28, 7, 5, 19, 10, 11, 39, 153, 39, 5, ++ 16, 17, 18, 3, 30, 21, 32, 6, 39, 25, ++ 26, 37, 5, 12, 13, 14, 15, 39, 39, 35, ++ 19, 20, 39, 22, 23, 21, 56, 42, 27, 39, ++ 39, 39, 39, 32, 33, 34, 4, 36, 37, 57, ++ 20, 39, 10, 11, 39, 39, -1, 39, 16, 17, ++ 18, 39, 137, 21, 139, 39, 141, 142, 26, 144, ++ -1, 146, 107, 148, -1, 56, -1, 35, -1, -1, ++ -1, -1, -1, 158, 43, 44, 45, 46, 47, 48 + }; + + /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of +@@ -799,56 +797,55 @@ static const yytype_int16 yycheck[] = + static const yytype_int8 yystos[] = + { + 0, 24, 51, 52, 53, 5, 0, 53, 1, 4, +- 7, 10, 11, 21, 25, 26, 35, 55, 56, 57, +- 58, 61, 62, 64, 70, 72, 74, 75, 77, 79, +- 80, 81, 93, 39, 39, 1, 9, 31, 43, 94, +- 39, 5, 4, 91, 5, 29, 49, 90, 91, 92, +- 5, 91, 5, 59, 59, 65, 54, 53, 78, 53, +- 82, 39, 40, 95, 39, 39, 90, 90, 39, 41, +- 42, 43, 44, 45, 46, 47, 48, 39, 39, 39, +- 6, 12, 13, 14, 15, 19, 20, 22, 23, 27, +- 32, 33, 34, 36, 37, 60, 67, 68, 69, 83, +- 84, 85, 12, 30, 32, 66, 68, 84, 85, 1, +- 16, 17, 18, 56, 63, 70, 73, 81, 88, 71, +- 88, 38, 85, 86, 76, 88, 85, 39, 8, 90, +- 90, 92, 92, 92, 92, 92, 92, 28, 39, 91, +- 39, 5, 92, 91, 5, 87, 90, 3, 91, 39, +- 5, 87, 39, 39, 39, 39, 54, 21, 89, 90, +- 89, 89, 92, 89, 89, 39, 89, 89, 89, 39, +- 71, 90, 39, 39, 39, 39, 89, 39, 39, 39, +- 39, 39 ++ 7, 10, 11, 21, 25, 26, 35, 54, 55, 56, ++ 57, 58, 61, 62, 64, 71, 73, 74, 75, 77, ++ 79, 80, 81, 93, 39, 39, 1, 9, 31, 43, ++ 94, 39, 5, 4, 91, 5, 29, 49, 90, 91, ++ 92, 5, 91, 5, 59, 59, 65, 70, 53, 78, ++ 53, 82, 39, 40, 95, 39, 39, 90, 90, 39, ++ 41, 42, 43, 44, 45, 46, 47, 48, 39, 39, ++ 39, 6, 12, 13, 14, 15, 19, 20, 22, 23, ++ 27, 32, 33, 34, 36, 37, 60, 67, 68, 69, ++ 83, 84, 85, 12, 30, 32, 66, 68, 84, 85, ++ 4, 16, 17, 18, 54, 63, 88, 72, 88, 38, ++ 85, 86, 76, 88, 85, 39, 8, 90, 90, 92, ++ 92, 92, 92, 92, 92, 28, 39, 91, 39, 5, ++ 92, 91, 5, 87, 90, 3, 91, 39, 5, 87, ++ 39, 39, 39, 21, 89, 90, 89, 89, 92, 89, ++ 89, 39, 89, 89, 89, 39, 90, 39, 39, 39, ++ 39, 89, 39, 39, 39, 39, 39 + }; + + /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ + static const yytype_int8 yyr1[] = + { + 0, 50, 51, 51, 52, 53, 53, 53, 53, 53, +- 53, 53, 53, 53, 53, 53, 54, 54, 54, 54, +- 54, 55, 56, 57, 58, 59, 59, 59, 59, 60, +- 60, 60, 60, 60, 60, 60, 61, 62, 63, 64, +- 65, 65, 65, 65, 66, 66, 66, 66, 67, 67, +- 67, 67, 68, 68, 69, 69, 69, 70, 71, 72, +- 73, 74, 75, 76, 77, 78, 78, 78, 79, 80, +- 81, 82, 82, 83, 84, 85, 86, 87, 87, 88, +- 88, 88, 89, 89, 90, 90, 90, 90, 90, 90, +- 90, 90, 90, 90, 90, 91, 92, 92, 93, 94, +- 94, 94, 95, 95 ++ 53, 54, 54, 54, 54, 54, 54, 55, 56, 57, ++ 58, 59, 59, 59, 59, 60, 60, 60, 60, 60, ++ 60, 60, 61, 62, 63, 64, 65, 65, 65, 65, ++ 66, 66, 66, 66, 67, 67, 67, 67, 68, 68, ++ 69, 69, 69, 70, 70, 71, 72, 73, 74, 75, ++ 76, 77, 78, 78, 78, 79, 80, 81, 82, 82, ++ 83, 84, 85, 86, 87, 87, 88, 88, 88, 89, ++ 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, ++ 90, 90, 91, 92, 92, 93, 94, 94, 94, 95, ++ 95 + }; + + /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ + static const yytype_int8 yyr2[] = + { +- 0, 2, 2, 1, 3, 0, 2, 2, 2, 2, +- 2, 2, 2, 2, 4, 3, 0, 2, 2, 2, +- 3, 3, 2, 3, 2, 0, 2, 2, 2, 3, +- 4, 4, 4, 4, 5, 2, 2, 2, 1, 3, +- 0, 2, 2, 2, 4, 3, 2, 4, 1, 1, +- 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, +- 3, 3, 2, 1, 3, 0, 2, 2, 3, 3, +- 2, 0, 2, 2, 2, 4, 3, 0, 2, 2, +- 2, 2, 0, 2, 1, 3, 3, 3, 3, 3, +- 3, 3, 2, 3, 3, 1, 1, 1, 4, 1, +- 1, 1, 0, 1 ++ 0, 2, 2, 1, 3, 0, 2, 2, 2, 4, ++ 3, 1, 1, 1, 1, 1, 1, 3, 2, 3, ++ 2, 0, 2, 2, 2, 3, 4, 4, 4, 4, ++ 5, 2, 2, 2, 1, 3, 0, 2, 2, 2, ++ 4, 3, 2, 4, 1, 1, 1, 1, 1, 1, ++ 1, 1, 1, 0, 2, 3, 1, 3, 3, 2, ++ 1, 3, 0, 2, 2, 3, 3, 2, 0, 2, ++ 2, 2, 4, 3, 0, 2, 2, 2, 2, 0, ++ 2, 1, 3, 3, 3, 3, 3, 3, 3, 2, ++ 3, 3, 1, 1, 1, 4, 1, 1, 1, 0, ++ 1 + }; + + +@@ -1348,19 +1345,15 @@ yyreduce: + } + break; + +- case 14: /* stmt_list: stmt_list T_WORD error T_EOL */ ++ case 9: /* stmt_list: stmt_list T_WORD error T_EOL */ + { zconf_error("unknown statement \"%s\"", (yyvsp[-2].string)); } + break; + +- case 15: /* stmt_list: stmt_list error T_EOL */ ++ case 10: /* stmt_list: stmt_list error T_EOL */ + { zconf_error("invalid statement"); } + break; + +- case 20: /* stmt_list_in_choice: stmt_list_in_choice error T_EOL */ +- { zconf_error("invalid statement"); } +- break; +- +- case 21: /* config_entry_start: T_CONFIG nonconst_symbol T_EOL */ ++ case 17: /* config_entry_start: T_CONFIG nonconst_symbol T_EOL */ + { + (yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL; + menu_add_entry((yyvsp[-1].symbol)); +@@ -1368,13 +1361,13 @@ yyreduce: + } + break; + +- case 22: /* config_stmt: config_entry_start config_option_list */ ++ case 18: /* config_stmt: config_entry_start config_option_list */ + { + printd(DEBUG_PARSE, "%s:%d:endconfig\n", cur_filename, cur_lineno); + } + break; + +- case 23: /* menuconfig_entry_start: T_MENUCONFIG nonconst_symbol T_EOL */ ++ case 19: /* menuconfig_entry_start: T_MENUCONFIG nonconst_symbol T_EOL */ + { + (yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL; + menu_add_entry((yyvsp[-1].symbol)); +@@ -1382,7 +1375,7 @@ yyreduce: + } + break; + +- case 24: /* menuconfig_stmt: menuconfig_entry_start config_option_list */ ++ case 20: /* menuconfig_stmt: menuconfig_entry_start config_option_list */ + { + if (current_entry->prompt) + current_entry->prompt->type = P_MENU; +@@ -1392,21 +1385,21 @@ yyreduce: + } + break; + +- case 29: /* config_option: type prompt_stmt_opt T_EOL */ ++ case 25: /* config_option: type prompt_stmt_opt T_EOL */ + { + menu_set_type((yyvsp[-2].type)); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", cur_filename, cur_lineno, (yyvsp[-2].type)); + } + break; + +- case 30: /* config_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL */ ++ case 26: /* config_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL */ + { + menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:prompt\n", cur_filename, cur_lineno); + } + break; + +- case 31: /* config_option: default expr if_expr T_EOL */ ++ case 27: /* config_option: default expr if_expr T_EOL */ + { + menu_add_expr(P_DEFAULT, (yyvsp[-2].expr), (yyvsp[-1].expr)); + if ((yyvsp[-3].type) != S_UNKNOWN) +@@ -1416,28 +1409,28 @@ yyreduce: + } + break; + +- case 32: /* config_option: T_SELECT nonconst_symbol if_expr T_EOL */ ++ case 28: /* config_option: T_SELECT nonconst_symbol if_expr T_EOL */ + { + menu_add_symbol(P_SELECT, (yyvsp[-2].symbol), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:select\n", cur_filename, cur_lineno); + } + break; + +- case 33: /* config_option: T_IMPLY nonconst_symbol if_expr T_EOL */ ++ case 29: /* config_option: T_IMPLY nonconst_symbol if_expr T_EOL */ + { + menu_add_symbol(P_IMPLY, (yyvsp[-2].symbol), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:imply\n", cur_filename, cur_lineno); + } + break; + +- case 34: /* config_option: T_RANGE symbol symbol if_expr T_EOL */ ++ case 30: /* config_option: T_RANGE symbol symbol if_expr T_EOL */ + { + menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[-3].symbol), (yyvsp[-2].symbol)), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:range\n", cur_filename, cur_lineno); + } + break; + +- case 35: /* config_option: T_MODULES T_EOL */ ++ case 31: /* config_option: T_MODULES T_EOL */ + { + if (modules_sym) + zconf_error("symbol '%s' redefines option 'modules' already defined by symbol '%s'", +@@ -1446,7 +1439,7 @@ yyreduce: + } + break; + +- case 36: /* choice: T_CHOICE T_EOL */ ++ case 32: /* choice: T_CHOICE T_EOL */ + { + struct symbol *sym = sym_lookup(NULL, SYMBOL_CHOICE); + sym->flags |= SYMBOL_NO_WRITE; +@@ -1456,7 +1449,7 @@ yyreduce: + } + break; + +- case 37: /* choice_entry: choice choice_option_list */ ++ case 33: /* choice_entry: choice choice_option_list */ + { + if (!current_entry->prompt) { + fprintf(stderr, "%s:%d: error: choice must have a prompt\n", +@@ -1468,7 +1461,7 @@ yyreduce: + } + break; + +- case 38: /* choice_end: end */ ++ case 34: /* choice_end: end */ + { + if (zconf_endtoken((yyvsp[0].string), "choice")) { + menu_end_menu(); +@@ -1477,67 +1470,67 @@ yyreduce: + } + break; + +- case 44: /* choice_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL */ ++ case 40: /* choice_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL */ + { + menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:prompt\n", cur_filename, cur_lineno); + } + break; + +- case 45: /* choice_option: logic_type prompt_stmt_opt T_EOL */ ++ case 41: /* choice_option: logic_type prompt_stmt_opt T_EOL */ + { + menu_set_type((yyvsp[-2].type)); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", cur_filename, cur_lineno, (yyvsp[-2].type)); + } + break; + +- case 46: /* choice_option: T_OPTIONAL T_EOL */ ++ case 42: /* choice_option: T_OPTIONAL T_EOL */ + { + current_entry->sym->flags |= SYMBOL_OPTIONAL; + printd(DEBUG_PARSE, "%s:%d:optional\n", cur_filename, cur_lineno); + } + break; + +- case 47: /* choice_option: T_DEFAULT nonconst_symbol if_expr T_EOL */ ++ case 43: /* choice_option: T_DEFAULT nonconst_symbol if_expr T_EOL */ + { + menu_add_symbol(P_DEFAULT, (yyvsp[-2].symbol), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:default\n", cur_filename, cur_lineno); + } + break; + +- case 49: /* type: T_INT */ ++ case 45: /* type: T_INT */ + { (yyval.type) = S_INT; } + break; + +- case 50: /* type: T_HEX */ ++ case 46: /* type: T_HEX */ + { (yyval.type) = S_HEX; } + break; + +- case 51: /* type: T_STRING */ ++ case 47: /* type: T_STRING */ + { (yyval.type) = S_STRING; } + break; + +- case 52: /* logic_type: T_BOOL */ ++ case 48: /* logic_type: T_BOOL */ + { (yyval.type) = S_BOOLEAN; } + break; + +- case 53: /* logic_type: T_TRISTATE */ ++ case 49: /* logic_type: T_TRISTATE */ + { (yyval.type) = S_TRISTATE; } + break; + +- case 54: /* default: T_DEFAULT */ ++ case 50: /* default: T_DEFAULT */ + { (yyval.type) = S_UNKNOWN; } + break; + +- case 55: /* default: T_DEF_BOOL */ ++ case 51: /* default: T_DEF_BOOL */ + { (yyval.type) = S_BOOLEAN; } + break; + +- case 56: /* default: T_DEF_TRISTATE */ ++ case 52: /* default: T_DEF_TRISTATE */ + { (yyval.type) = S_TRISTATE; } + break; + +- case 57: /* if_entry: T_IF expr T_EOL */ ++ case 55: /* if_entry: T_IF expr T_EOL */ + { + printd(DEBUG_PARSE, "%s:%d:if\n", cur_filename, cur_lineno); + menu_add_entry(NULL); +@@ -1546,7 +1539,7 @@ yyreduce: + } + break; + +- case 58: /* if_end: end */ ++ case 56: /* if_end: end */ + { + if (zconf_endtoken((yyvsp[0].string), "if")) { + menu_end_menu(); +@@ -1555,7 +1548,7 @@ yyreduce: + } + break; + +- case 61: /* menu: T_MENU T_WORD_QUOTE T_EOL */ ++ case 58: /* menu: T_MENU T_WORD_QUOTE T_EOL */ + { + menu_add_entry(NULL); + menu_add_prompt(P_MENU, (yyvsp[-1].string), NULL); +@@ -1563,13 +1556,13 @@ yyreduce: + } + break; + +- case 62: /* menu_entry: menu menu_option_list */ ++ case 59: /* menu_entry: menu menu_option_list */ + { + (yyval.menu) = menu_add_menu(); + } + break; + +- case 63: /* menu_end: end */ ++ case 60: /* menu_end: end */ + { + if (zconf_endtoken((yyvsp[0].string), "menu")) { + menu_end_menu(); +@@ -1578,7 +1571,7 @@ yyreduce: + } + break; + +- case 68: /* source_stmt: T_SOURCE T_WORD_QUOTE T_EOL */ ++ case 65: /* source_stmt: T_SOURCE T_WORD_QUOTE T_EOL */ + { + printd(DEBUG_PARSE, "%s:%d:source %s\n", cur_filename, cur_lineno, (yyvsp[-1].string)); + zconf_nextfile((yyvsp[-1].string)); +@@ -1586,7 +1579,7 @@ yyreduce: + } + break; + +- case 69: /* comment: T_COMMENT T_WORD_QUOTE T_EOL */ ++ case 66: /* comment: T_COMMENT T_WORD_QUOTE T_EOL */ + { + menu_add_entry(NULL); + menu_add_prompt(P_COMMENT, (yyvsp[-1].string), NULL); +@@ -1594,14 +1587,14 @@ yyreduce: + } + break; + +- case 73: /* help_start: T_HELP T_EOL */ ++ case 70: /* help_start: T_HELP T_EOL */ + { + printd(DEBUG_PARSE, "%s:%d:help\n", cur_filename, cur_lineno); + zconf_starthelp(); + } + break; + +- case 74: /* help: help_start T_HELPTEXT */ ++ case 71: /* help: help_start T_HELPTEXT */ + { + if (current_entry->help) { + free(current_entry->help); +@@ -1618,114 +1611,114 @@ yyreduce: + } + break; + +- case 75: /* depends: T_DEPENDS T_ON expr T_EOL */ ++ case 72: /* depends: T_DEPENDS T_ON expr T_EOL */ + { + menu_add_dep((yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:depends on\n", cur_filename, cur_lineno); + } + break; + +- case 76: /* visible: T_VISIBLE if_expr T_EOL */ ++ case 73: /* visible: T_VISIBLE if_expr T_EOL */ + { + menu_add_visibility((yyvsp[-1].expr)); + } + break; + +- case 78: /* prompt_stmt_opt: T_WORD_QUOTE if_expr */ ++ case 75: /* prompt_stmt_opt: T_WORD_QUOTE if_expr */ + { + menu_add_prompt(P_PROMPT, (yyvsp[-1].string), (yyvsp[0].expr)); + } + break; + +- case 79: /* end: T_ENDMENU T_EOL */ ++ case 76: /* end: T_ENDMENU T_EOL */ + { (yyval.string) = "menu"; } + break; + +- case 80: /* end: T_ENDCHOICE T_EOL */ ++ case 77: /* end: T_ENDCHOICE T_EOL */ + { (yyval.string) = "choice"; } + break; + +- case 81: /* end: T_ENDIF T_EOL */ ++ case 78: /* end: T_ENDIF T_EOL */ + { (yyval.string) = "if"; } + break; + +- case 82: /* if_expr: %empty */ ++ case 79: /* if_expr: %empty */ + { (yyval.expr) = NULL; } + break; + +- case 83: /* if_expr: T_IF expr */ ++ case 80: /* if_expr: T_IF expr */ + { (yyval.expr) = (yyvsp[0].expr); } + break; + +- case 84: /* expr: symbol */ ++ case 81: /* expr: symbol */ + { (yyval.expr) = expr_alloc_symbol((yyvsp[0].symbol)); } + break; + +- case 85: /* expr: symbol T_LESS symbol */ ++ case 82: /* expr: symbol T_LESS symbol */ + { (yyval.expr) = expr_alloc_comp(E_LTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + +- case 86: /* expr: symbol T_LESS_EQUAL symbol */ ++ case 83: /* expr: symbol T_LESS_EQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_LEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + +- case 87: /* expr: symbol T_GREATER symbol */ ++ case 84: /* expr: symbol T_GREATER symbol */ + { (yyval.expr) = expr_alloc_comp(E_GTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + +- case 88: /* expr: symbol T_GREATER_EQUAL symbol */ ++ case 85: /* expr: symbol T_GREATER_EQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_GEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + +- case 89: /* expr: symbol T_EQUAL symbol */ ++ case 86: /* expr: symbol T_EQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + +- case 90: /* expr: symbol T_UNEQUAL symbol */ ++ case 87: /* expr: symbol T_UNEQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + +- case 91: /* expr: T_OPEN_PAREN expr T_CLOSE_PAREN */ ++ case 88: /* expr: T_OPEN_PAREN expr T_CLOSE_PAREN */ + { (yyval.expr) = (yyvsp[-1].expr); } + break; + +- case 92: /* expr: T_NOT expr */ ++ case 89: /* expr: T_NOT expr */ + { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[0].expr)); } + break; + +- case 93: /* expr: expr T_OR expr */ ++ case 90: /* expr: expr T_OR expr */ + { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[-2].expr), (yyvsp[0].expr)); } + break; + +- case 94: /* expr: expr T_AND expr */ ++ case 91: /* expr: expr T_AND expr */ + { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); } + break; + +- case 95: /* nonconst_symbol: T_WORD */ ++ case 92: /* nonconst_symbol: T_WORD */ + { (yyval.symbol) = sym_lookup((yyvsp[0].string), 0); free((yyvsp[0].string)); } + break; + +- case 97: /* symbol: T_WORD_QUOTE */ ++ case 94: /* symbol: T_WORD_QUOTE */ + { (yyval.symbol) = sym_lookup((yyvsp[0].string), SYMBOL_CONST); free((yyvsp[0].string)); } + break; + +- case 98: /* assignment_stmt: T_WORD assign_op assign_val T_EOL */ ++ case 95: /* assignment_stmt: T_WORD assign_op assign_val T_EOL */ + { variable_add((yyvsp[-3].string), (yyvsp[-1].string), (yyvsp[-2].flavor)); free((yyvsp[-3].string)); free((yyvsp[-1].string)); } + break; + +- case 99: /* assign_op: T_EQUAL */ ++ case 96: /* assign_op: T_EQUAL */ + { (yyval.flavor) = VAR_RECURSIVE; } + break; + +- case 100: /* assign_op: T_COLON_EQUAL */ ++ case 97: /* assign_op: T_COLON_EQUAL */ + { (yyval.flavor) = VAR_SIMPLE; } + break; + +- case 101: /* assign_op: T_PLUS_EQUAL */ ++ case 98: /* assign_op: T_PLUS_EQUAL */ + { (yyval.flavor) = VAR_APPEND; } + break; + +- case 102: /* assign_val: %empty */ ++ case 99: /* assign_val: %empty */ + { (yyval.string) = xstrdup(""); } + break; + +diff --git a/parser.y b/parser.y +index 7fb9966..9873e84 100644 +--- a/parser.y ++++ b/parser.y +@@ -116,24 +116,20 @@ mainmenu_stmt: T_MAINMENU T_WORD_QUOTE T_EOL + + stmt_list: + /* empty */ +- | stmt_list assignment_stmt ++ | stmt_list common_stmt + | stmt_list choice_stmt +- | stmt_list comment_stmt +- | stmt_list config_stmt +- | stmt_list if_stmt + | stmt_list menu_stmt +- | stmt_list menuconfig_stmt +- | stmt_list source_stmt + | stmt_list T_WORD error T_EOL { zconf_error("unknown statement \"%s\"", $2); } + | stmt_list error T_EOL { zconf_error("invalid statement"); } + ; + +-stmt_list_in_choice: +- /* empty */ +- | stmt_list_in_choice comment_stmt +- | stmt_list_in_choice config_stmt +- | stmt_list_in_choice if_stmt_in_choice +- | stmt_list_in_choice error T_EOL { zconf_error("invalid statement"); } ++common_stmt: ++ if_stmt ++ | comment_stmt ++ | config_stmt ++ | menuconfig_stmt ++ | source_stmt ++ | assignment_stmt + ; + + /* config/menuconfig entry */ +@@ -250,7 +246,7 @@ choice_end: end + } + }; + +-choice_stmt: choice_entry stmt_list_in_choice choice_end ++choice_stmt: choice_entry choice_block choice_end + ; + + choice_option_list: +@@ -299,6 +295,11 @@ default: + | T_DEF_BOOL { $$ = S_BOOLEAN; } + | T_DEF_TRISTATE { $$ = S_TRISTATE; } + ++choice_block: ++ /* empty */ ++ | choice_block common_stmt ++; ++ + /* if entry */ + + if_entry: T_IF expr T_EOL +@@ -320,9 +321,6 @@ if_end: end + if_stmt: if_entry stmt_list if_end + ; + +-if_stmt_in_choice: if_entry stmt_list_in_choice if_end +-; +- + /* menu entry */ + + menu: T_MENU T_WORD_QUOTE T_EOL diff --git a/support/kconfig/patches/series b/support/kconfig/patches/series index f120e323b7..e68a83a550 100644 --- a/support/kconfig/patches/series +++ b/support/kconfig/patches/series @@ -1,13 +1,9 @@ 01-kconfig-kernel-to-buildroot.patch 06-br-build-system-integration.patch 10-br-build-system.patch -11-use-mktemp-for-lxdialog.patch 12-fix-glade-file-path.patch 14-support-out-of-tree-config.patch 16-fix-space-to-de-select-options.patch -17-backport-kecho.patch 18-merge-config.sh-create-temporary-files-in-tmp.patch 19-merge_config.sh-add-br2-external-support.patch -20-merge_config.sh-Allow-to-define-config-prefix.patch -21-Avoid-false-positive-matches-from-comment-lines.patch -22-kconfig-lxdialog-fix-check-with-GCC14.patch +23-Revert-kconfig-allow-only-config-comment-and-if-insi.patch diff --git a/support/kconfig/preprocess.c b/support/kconfig/preprocess.c new file mode 100644 index 0000000000..f0a4a218c4 --- /dev/null +++ b/support/kconfig/preprocess.c @@ -0,0 +1,580 @@ +// SPDX-License-Identifier: GPL-2.0 +// +// Copyright (C) 2018 Masahiro Yamada + +#include +#include +#include +#include +#include +#include + +#include "array_size.h" +#include "internal.h" +#include "list.h" +#include "lkc.h" +#include "preprocess.h" + +static char *expand_string_with_args(const char *in, int argc, char *argv[]); +static char *expand_string(const char *in); + +static void __attribute__((noreturn)) pperror(const char *format, ...) +{ + va_list ap; + + fprintf(stderr, "%s:%d: ", cur_filename, yylineno); + va_start(ap, format); + vfprintf(stderr, format, ap); + va_end(ap); + fprintf(stderr, "\n"); + + exit(1); +} + +/* + * Environment variables + */ +static LIST_HEAD(env_list); + +struct env { + char *name; + char *value; + struct list_head node; +}; + +static void env_add(const char *name, const char *value) +{ + struct env *e; + + e = xmalloc(sizeof(*e)); + e->name = xstrdup(name); + e->value = xstrdup(value); + + list_add_tail(&e->node, &env_list); +} + +static void env_del(struct env *e) +{ + list_del(&e->node); + free(e->name); + free(e->value); + free(e); +} + +/* The returned pointer must be freed when done */ +static char *env_expand(const char *name) +{ + struct env *e; + const char *value; + + if (!*name) + return NULL; + + list_for_each_entry(e, &env_list, node) { + if (!strcmp(name, e->name)) + return xstrdup(e->value); + } + + value = getenv(name); + if (!value) + return NULL; + + /* + * We need to remember all referenced environment variables. + * They will be written out to include/config/auto.conf.cmd + */ + env_add(name, value); + + return xstrdup(value); +} + +void env_write_dep(struct gstr *s) +{ + struct env *e, *tmp; + + list_for_each_entry_safe(e, tmp, &env_list, node) { + str_printf(s, + "\n" + "ifneq \"$(%s)\" \"%s\"\n" + "$(autoconfig): FORCE\n" + "endif\n", + e->name, e->value); + env_del(e); + } +} + +/* + * Built-in functions + */ +struct function { + const char *name; + unsigned int min_args; + unsigned int max_args; + char *(*func)(int argc, char *argv[]); +}; + +static char *do_error_if(int argc, char *argv[]) +{ + if (!strcmp(argv[0], "y")) + pperror("%s", argv[1]); + + return xstrdup(""); +} + +static char *do_filename(int argc, char *argv[]) +{ + return xstrdup(cur_filename); +} + +static char *do_info(int argc, char *argv[]) +{ + printf("%s\n", argv[0]); + + return xstrdup(""); +} + +static char *do_lineno(int argc, char *argv[]) +{ + char buf[16]; + + sprintf(buf, "%d", yylineno); + + return xstrdup(buf); +} + +static char *do_shell(int argc, char *argv[]) +{ + FILE *p; + char buf[4096]; + char *cmd; + size_t nread; + int i; + + cmd = argv[0]; + + p = popen(cmd, "r"); + if (!p) { + perror(cmd); + exit(1); + } + + nread = fread(buf, 1, sizeof(buf), p); + if (nread == sizeof(buf)) + nread--; + + /* remove trailing new lines */ + while (nread > 0 && buf[nread - 1] == '\n') + nread--; + + buf[nread] = 0; + + /* replace a new line with a space */ + for (i = 0; i < nread; i++) { + if (buf[i] == '\n') + buf[i] = ' '; + } + + if (pclose(p) == -1) { + perror(cmd); + exit(1); + } + + return xstrdup(buf); +} + +static char *do_warning_if(int argc, char *argv[]) +{ + if (!strcmp(argv[0], "y")) + fprintf(stderr, "%s:%d: %s\n", cur_filename, yylineno, argv[1]); + + return xstrdup(""); +} + +static const struct function function_table[] = { + /* Name MIN MAX Function */ + { "error-if", 2, 2, do_error_if }, + { "filename", 0, 0, do_filename }, + { "info", 1, 1, do_info }, + { "lineno", 0, 0, do_lineno }, + { "shell", 1, 1, do_shell }, + { "warning-if", 2, 2, do_warning_if }, +}; + +#define FUNCTION_MAX_ARGS 16 + +static char *function_expand(const char *name, int argc, char *argv[]) +{ + const struct function *f; + int i; + + for (i = 0; i < ARRAY_SIZE(function_table); i++) { + f = &function_table[i]; + if (strcmp(f->name, name)) + continue; + + if (argc < f->min_args) + pperror("too few function arguments passed to '%s'", + name); + + if (argc > f->max_args) + pperror("too many function arguments passed to '%s'", + name); + + return f->func(argc, argv); + } + + return NULL; +} + +/* + * Variables (and user-defined functions) + */ +static LIST_HEAD(variable_list); + +struct variable { + char *name; + char *value; + enum variable_flavor flavor; + int exp_count; + struct list_head node; +}; + +static struct variable *variable_lookup(const char *name) +{ + struct variable *v; + + list_for_each_entry(v, &variable_list, node) { + if (!strcmp(name, v->name)) + return v; + } + + return NULL; +} + +static char *variable_expand(const char *name, int argc, char *argv[]) +{ + struct variable *v; + char *res; + + v = variable_lookup(name); + if (!v) + return NULL; + + if (argc == 0 && v->exp_count) + pperror("Recursive variable '%s' references itself (eventually)", + name); + + if (v->exp_count > 1000) + pperror("Too deep recursive expansion"); + + v->exp_count++; + + if (v->flavor == VAR_RECURSIVE) + res = expand_string_with_args(v->value, argc, argv); + else + res = xstrdup(v->value); + + v->exp_count--; + + return res; +} + +void variable_add(const char *name, const char *value, + enum variable_flavor flavor) +{ + struct variable *v; + char *new_value; + bool append = false; + + v = variable_lookup(name); + if (v) { + /* For defined variables, += inherits the existing flavor */ + if (flavor == VAR_APPEND) { + flavor = v->flavor; + append = true; + } else { + free(v->value); + } + } else { + /* For undefined variables, += assumes the recursive flavor */ + if (flavor == VAR_APPEND) + flavor = VAR_RECURSIVE; + + v = xmalloc(sizeof(*v)); + v->name = xstrdup(name); + v->exp_count = 0; + list_add_tail(&v->node, &variable_list); + } + + v->flavor = flavor; + + if (flavor == VAR_SIMPLE) + new_value = expand_string(value); + else + new_value = xstrdup(value); + + if (append) { + v->value = xrealloc(v->value, + strlen(v->value) + strlen(new_value) + 2); + strcat(v->value, " "); + strcat(v->value, new_value); + free(new_value); + } else { + v->value = new_value; + } +} + +static void variable_del(struct variable *v) +{ + list_del(&v->node); + free(v->name); + free(v->value); + free(v); +} + +void variable_all_del(void) +{ + struct variable *v, *tmp; + + list_for_each_entry_safe(v, tmp, &variable_list, node) + variable_del(v); +} + +/* + * Evaluate a clause with arguments. argc/argv are arguments from the upper + * function call. + * + * Returned string must be freed when done + */ +static char *eval_clause(const char *str, size_t len, int argc, char *argv[]) +{ + char *tmp, *name, *res, *endptr, *prev, *p; + int new_argc = 0; + char *new_argv[FUNCTION_MAX_ARGS]; + int nest = 0; + int i; + unsigned long n; + + tmp = xstrndup(str, len); + + /* + * If variable name is '1', '2', etc. It is generally an argument + * from a user-function call (i.e. local-scope variable). If not + * available, then look-up global-scope variables. + */ + n = strtoul(tmp, &endptr, 10); + if (!*endptr && n > 0 && n <= argc) { + res = xstrdup(argv[n - 1]); + goto free_tmp; + } + + prev = p = tmp; + + /* + * Split into tokens + * The function name and arguments are separated by a comma. + * For example, if the function call is like this: + * $(foo,$(x),$(y)) + * + * The input string for this helper should be: + * foo,$(x),$(y) + * + * and split into: + * new_argv[0] = 'foo' + * new_argv[1] = '$(x)' + * new_argv[2] = '$(y)' + */ + while (*p) { + if (nest == 0 && *p == ',') { + *p = 0; + if (new_argc >= FUNCTION_MAX_ARGS) + pperror("too many function arguments"); + new_argv[new_argc++] = prev; + prev = p + 1; + } else if (*p == '(') { + nest++; + } else if (*p == ')') { + nest--; + } + + p++; + } + + if (new_argc >= FUNCTION_MAX_ARGS) + pperror("too many function arguments"); + new_argv[new_argc++] = prev; + + /* + * Shift arguments + * new_argv[0] represents a function name or a variable name. Put it + * into 'name', then shift the rest of the arguments. This simplifies + * 'const' handling. + */ + name = expand_string_with_args(new_argv[0], argc, argv); + new_argc--; + for (i = 0; i < new_argc; i++) + new_argv[i] = expand_string_with_args(new_argv[i + 1], + argc, argv); + + /* Search for variables */ + res = variable_expand(name, new_argc, new_argv); + if (res) + goto free; + + /* Look for built-in functions */ + res = function_expand(name, new_argc, new_argv); + if (res) + goto free; + + /* Last, try environment variable */ + if (new_argc == 0) { + res = env_expand(name); + if (res) + goto free; + } + + res = xstrdup(""); +free: + for (i = 0; i < new_argc; i++) + free(new_argv[i]); + free(name); +free_tmp: + free(tmp); + + return res; +} + +/* + * Expand a string that follows '$' + * + * For example, if the input string is + * ($(FOO)$($(BAR)))$(BAZ) + * this helper evaluates + * $($(FOO)$($(BAR))) + * and returns a new string containing the expansion (note that the string is + * recursively expanded), also advancing 'str' to point to the next character + * after the corresponding closing parenthesis, in this case, *str will be + * $(BAR) + */ +static char *expand_dollar_with_args(const char **str, int argc, char *argv[]) +{ + const char *p = *str; + const char *q; + int nest = 0; + + /* + * In Kconfig, variable/function references always start with "$(". + * Neither single-letter variables as in $A nor curly braces as in ${CC} + * are supported. '$' not followed by '(' loses its special meaning. + */ + if (*p != '(') { + *str = p; + return xstrdup("$"); + } + + p++; + q = p; + while (*q) { + if (*q == '(') { + nest++; + } else if (*q == ')') { + if (nest-- == 0) + break; + } + q++; + } + + if (!*q) + pperror("unterminated reference to '%s': missing ')'", p); + + /* Advance 'str' to after the expanded initial portion of the string */ + *str = q + 1; + + return eval_clause(p, q - p, argc, argv); +} + +char *expand_dollar(const char **str) +{ + return expand_dollar_with_args(str, 0, NULL); +} + +static char *__expand_string(const char **str, bool (*is_end)(char c), + int argc, char *argv[]) +{ + const char *in, *p; + char *expansion, *out; + size_t in_len, out_len; + + out = xmalloc(1); + *out = 0; + out_len = 1; + + p = in = *str; + + while (1) { + if (*p == '$') { + in_len = p - in; + p++; + expansion = expand_dollar_with_args(&p, argc, argv); + out_len += in_len + strlen(expansion); + out = xrealloc(out, out_len); + strncat(out, in, in_len); + strcat(out, expansion); + free(expansion); + in = p; + continue; + } + + if (is_end(*p)) + break; + + p++; + } + + in_len = p - in; + out_len += in_len; + out = xrealloc(out, out_len); + strncat(out, in, in_len); + + /* Advance 'str' to the end character */ + *str = p; + + return out; +} + +static bool is_end_of_str(char c) +{ + return !c; +} + +/* + * Expand variables and functions in the given string. Undefined variables + * expand to an empty string. + * The returned string must be freed when done. + */ +static char *expand_string_with_args(const char *in, int argc, char *argv[]) +{ + return __expand_string(&in, is_end_of_str, argc, argv); +} + +static char *expand_string(const char *in) +{ + return expand_string_with_args(in, 0, NULL); +} + +static bool is_end_of_token(char c) +{ + return !(isalnum(c) || c == '_' || c == '-'); +} + +/* + * Expand variables in a token. The parsing stops when a token separater + * (in most cases, it is a whitespace) is encountered. 'str' is updated to + * point to the next character. + * + * The returned string must be freed when done. + */ +char *expand_one_token(const char **str) +{ + return __expand_string(str, is_end_of_token, 0, NULL); +} diff --git a/support/kconfig/preprocess.h b/support/kconfig/preprocess.h new file mode 100644 index 0000000000..a7e4a55063 --- /dev/null +++ b/support/kconfig/preprocess.h @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +#ifndef PREPROCESS_H +#define PREPROCESS_H + +enum variable_flavor { + VAR_SIMPLE, + VAR_RECURSIVE, + VAR_APPEND, +}; + +struct gstr; +void env_write_dep(struct gstr *gs); +void variable_add(const char *name, const char *value, + enum variable_flavor flavor); +void variable_all_del(void); +char *expand_dollar(const char **str); +char *expand_one_token(const char **str); + +#endif /* PREPROCESS_H */ diff --git a/support/kconfig/qconf-cfg.sh b/support/kconfig/qconf-cfg.sh new file mode 100755 index 0000000000..0e113b0f24 --- /dev/null +++ b/support/kconfig/qconf-cfg.sh @@ -0,0 +1,40 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +cflags=$1 +libs=$2 +bin=$3 + +PKG5="Qt5Core Qt5Gui Qt5Widgets" +PKG6="Qt6Core Qt6Gui Qt6Widgets" + +if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then + echo >&2 "*" + echo >&2 "* 'make xconfig' requires '${HOSTPKG_CONFIG}'. Please install it." + echo >&2 "*" + exit 1 +fi + +if ${HOSTPKG_CONFIG} --exists $PKG6; then + ${HOSTPKG_CONFIG} --cflags ${PKG6} > ${cflags} + # Qt6 requires C++17. + echo -std=c++17 >> ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG6} > ${libs} + ${HOSTPKG_CONFIG} --variable=libexecdir Qt6Core > ${bin} + exit 0 +fi + +if ${HOSTPKG_CONFIG} --exists $PKG5; then + ${HOSTPKG_CONFIG} --cflags ${PKG5} > ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG5} > ${libs} + ${HOSTPKG_CONFIG} --variable=host_bins Qt5Core > ${bin} + exit 0 +fi + +echo >&2 "*" +echo >&2 "* Could not find Qt6 or Qt5 via ${HOSTPKG_CONFIG}." +echo >&2 "* Please install Qt6 or Qt5 and make sure it's in PKG_CONFIG_PATH" +echo >&2 "* You need $PKG6 for Qt6" +echo >&2 "* You need $PKG5 for Qt5" +echo >&2 "*" +exit 1 diff --git a/support/kconfig/qconf.cc b/support/kconfig/qconf.cc index 7896b584c8..50c3ccd027 100644 --- a/support/kconfig/qconf.cc +++ b/support/kconfig/qconf.cc @@ -1,59 +1,38 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel * Copyright (C) 2015 Boris Barbulovski - * Released under the terms of the GNU GPL v2.0. */ -#include - -#include -#include -#include #include +#include +#include +#include +#include #include +#include +#include +#include #include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include "lkc.h" #include "qconf.h" -#include "qconf.moc" -#include "images.c" +#include "images.h" -#ifdef _ -# undef _ -# define _ qgettext -#endif static QApplication *configApp; static ConfigSettings *configSettings; QAction *ConfigMainWindow::saveAction; -static inline QString qgettext(const char* str) -{ - return QString::fromLocal8Bit(gettext(str)); -} - -static inline QString qgettext(const QString& str) -{ - return QString::fromLocal8Bit(gettext(str.toLatin1())); -} - ConfigSettings::ConfigSettings() : QSettings("buildroot.org", "qconf") { @@ -97,14 +76,13 @@ bool ConfigSettings::writeSizes(const QString& key, const QList& value) return true; } - -/* - * set the new data - * TODO check the value - */ -void ConfigItem::okRename(int col) -{ -} +QIcon ConfigItem::symbolYesIcon; +QIcon ConfigItem::symbolModIcon; +QIcon ConfigItem::symbolNoIcon; +QIcon ConfigItem::choiceYesIcon; +QIcon ConfigItem::choiceNoIcon; +QIcon ConfigItem::menuIcon; +QIcon ConfigItem::menubackIcon; /* * update the displayed of a menu entry @@ -120,14 +98,14 @@ void ConfigItem::updateMenu(void) list = listView(); if (goParent) { - setPixmap(promptColIdx, list->menuBackPix); + setIcon(promptColIdx, menubackIcon); prompt = ".."; goto set_prompt; } sym = menu->sym; prop = menu->prompt; - prompt = _(menu_get_prompt(menu)); + prompt = menu_get_prompt(menu); if (prop) switch (prop->type) { case P_MENU: @@ -137,15 +115,16 @@ void ConfigItem::updateMenu(void) */ if (sym && list->rootEntry == menu) break; - setPixmap(promptColIdx, list->menuPix); + setIcon(promptColIdx, menuIcon); } else { if (sym) break; - setPixmap(promptColIdx, QIcon()); + setIcon(promptColIdx, QIcon()); } goto set_prompt; case P_COMMENT: - setPixmap(promptColIdx, QIcon()); + setIcon(promptColIdx, QIcon()); + prompt = "*** " + prompt + " ***"; goto set_prompt; default: ; @@ -153,7 +132,7 @@ void ConfigItem::updateMenu(void) if (!sym) goto set_prompt; - setText(nameColIdx, QString::fromLocal8Bit(sym->name)); + setText(nameColIdx, sym->name); type = sym_get_type(sym); switch (type) { @@ -161,62 +140,42 @@ void ConfigItem::updateMenu(void) case S_TRISTATE: char ch; - if (!sym_is_changable(sym) && list->optMode == normalOpt) { - setPixmap(promptColIdx, QIcon()); - setText(noColIdx, QString::null); - setText(modColIdx, QString::null); - setText(yesColIdx, QString::null); + if (!sym_is_changeable(sym) && list->optMode == normalOpt) { + setIcon(promptColIdx, QIcon()); break; } expr = sym_get_tristate_value(sym); switch (expr) { case yes: if (sym_is_choice_value(sym) && type == S_BOOLEAN) - setPixmap(promptColIdx, list->choiceYesPix); + setIcon(promptColIdx, choiceYesIcon); else - setPixmap(promptColIdx, list->symbolYesPix); - setText(yesColIdx, "Y"); + setIcon(promptColIdx, symbolYesIcon); ch = 'Y'; break; case mod: - setPixmap(promptColIdx, list->symbolModPix); - setText(modColIdx, "M"); + setIcon(promptColIdx, symbolModIcon); ch = 'M'; break; default: if (sym_is_choice_value(sym) && type == S_BOOLEAN) - setPixmap(promptColIdx, list->choiceNoPix); + setIcon(promptColIdx, choiceNoIcon); else - setPixmap(promptColIdx, list->symbolNoPix); - setText(noColIdx, "N"); + setIcon(promptColIdx, symbolNoIcon); ch = 'N'; break; } - if (expr != no) - setText(noColIdx, sym_tristate_within_range(sym, no) ? "_" : 0); - if (expr != mod) - setText(modColIdx, sym_tristate_within_range(sym, mod) ? "_" : 0); - if (expr != yes) - setText(yesColIdx, sym_tristate_within_range(sym, yes) ? "_" : 0); setText(dataColIdx, QChar(ch)); break; case S_INT: case S_HEX: case S_STRING: - const char* data; - - data = sym_get_string_value(sym); - - setText(dataColIdx, data); - if (type == S_STRING) - prompt = QString("%1: %2").arg(prompt).arg(data); - else - prompt = QString("(%2) %1").arg(prompt).arg(data); + setText(dataColIdx, sym_get_string_value(sym)); break; } if (!sym_has_value(sym) && visible) - prompt += _(" (NEW)"); + prompt += " (NEW)"; set_prompt: setText(promptColIdx, prompt); } @@ -253,6 +212,17 @@ void ConfigItem::init(void) if (list->mode != fullMode) setExpanded(true); sym_calc_value(menu->sym); + + if (menu->sym) { + enum symbol_type type = menu->sym->type; + + // Allow to edit "int", "hex", and "string" in-place in + // the data column. Unfortunately, you cannot specify + // the flags per column. Set ItemIsEditable for all + // columns here, and check the column in createEditor(). + if (type == S_INT || type == S_HEX || type == S_STRING) + setFlags(flags() | Qt::ItemIsEditable); + } } updateMenu(); } @@ -273,53 +243,67 @@ ConfigItem::~ConfigItem(void) } } -ConfigLineEdit::ConfigLineEdit(ConfigView* parent) - : Parent(parent) +QWidget *ConfigItemDelegate::createEditor(QWidget *parent, + const QStyleOptionViewItem &option, + const QModelIndex &index) const { - connect(this, SIGNAL(editingFinished()), SLOT(hide())); -} + ConfigItem *item; -void ConfigLineEdit::show(ConfigItem* i) -{ - item = i; - if (sym_get_string_value(item->menu->sym)) - setText(QString::fromLocal8Bit(sym_get_string_value(item->menu->sym))); - else - setText(QString::null); - Parent::show(); - setFocus(); + // Only the data column is editable + if (index.column() != dataColIdx) + return nullptr; + + // You cannot edit invisible menus + item = static_cast(index.internalPointer()); + if (!item || !item->menu || !menu_is_visible(item->menu)) + return nullptr; + + return QStyledItemDelegate::createEditor(parent, option, index); } -void ConfigLineEdit::keyPressEvent(QKeyEvent* e) +void ConfigItemDelegate::setModelData(QWidget *editor, + QAbstractItemModel *model, + const QModelIndex &index) const { - switch (e->key()) { - case Qt::Key_Escape: - break; - case Qt::Key_Return: - case Qt::Key_Enter: - sym_set_string_value(item->menu->sym, text().toLatin1()); - parent()->updateList(item); - break; - default: - Parent::keyPressEvent(e); - return; + QLineEdit *lineEdit; + ConfigItem *item; + struct symbol *sym; + bool success; + + lineEdit = qobject_cast(editor); + // If this is not a QLineEdit, use the parent's default. + // (does this happen?) + if (!lineEdit) + goto parent; + + item = static_cast(index.internalPointer()); + if (!item || !item->menu) + goto parent; + + sym = item->menu->sym; + if (!sym) + goto parent; + + success = sym_set_string_value(sym, lineEdit->text().toUtf8().data()); + if (success) { + ConfigList::updateListForAll(); + } else { + QMessageBox::information(editor, "qconf", + "Cannot set the data (maybe due to out of range).\n" + "Setting the old value."); + lineEdit->setText(sym_get_string_value(sym)); } - e->accept(); - parent()->list->setFocus(); - hide(); + +parent: + QStyledItemDelegate::setModelData(editor, model, index); } -ConfigList::ConfigList(ConfigView* p, const char *name) - : Parent(p), +ConfigList::ConfigList(QWidget *parent, const char *name) + : QTreeWidget(parent), updateAll(false), - symbolYesPix(xpm_symbol_yes), symbolModPix(xpm_symbol_mod), symbolNoPix(xpm_symbol_no), - choiceYesPix(xpm_choice_yes), choiceNoPix(xpm_choice_no), - menuPix(xpm_menu), menuInvPix(xpm_menu_inv), menuBackPix(xpm_menuback), voidPix(xpm_void), - showName(false), showRange(false), showData(false), mode(singleMode), optMode(normalOpt), + showName(false), mode(singleMode), optMode(normalOpt), rootEntry(0), headerPopup(0) { - int i; - setObjectName(name); setSortingEnabled(false); setRootIsDecorated(true); @@ -327,26 +311,34 @@ ConfigList::ConfigList(ConfigView* p, const char *name) setVerticalScrollMode(ScrollPerPixel); setHorizontalScrollMode(ScrollPerPixel); - setHeaderLabels(QStringList() << _("Option") << _("Name") << "N" << "M" << "Y" << _("Value")); + setHeaderLabels(QStringList() << "Option" << "Name" << "Value"); - connect(this, SIGNAL(itemSelectionChanged(void)), - SLOT(updateSelection(void))); + connect(this, &ConfigList::itemSelectionChanged, + this, &ConfigList::updateSelection); if (name) { configSettings->beginGroup(name); showName = configSettings->value("/showName", false).toBool(); - showRange = configSettings->value("/showRange", false).toBool(); - showData = configSettings->value("/showData", false).toBool(); optMode = (enum optionMode)configSettings->value("/optionMode", 0).toInt(); configSettings->endGroup(); - connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); + connect(configApp, &QApplication::aboutToQuit, + this, &ConfigList::saveSettings); } - addColumn(promptColIdx); + showColumn(promptColIdx); + + setItemDelegate(new ConfigItemDelegate(this)); + + allLists.append(this); reinit(); } +ConfigList::~ConfigList() +{ + allLists.removeOne(this); +} + bool ConfigList::menuSkip(struct menu *menu) { if (optMode == normalOpt && menu_is_visible(menu)) @@ -360,21 +352,22 @@ bool ConfigList::menuSkip(struct menu *menu) void ConfigList::reinit(void) { - removeColumn(dataColIdx); - removeColumn(yesColIdx); - removeColumn(modColIdx); - removeColumn(noColIdx); - removeColumn(nameColIdx); + hideColumn(nameColIdx); if (showName) - addColumn(nameColIdx); - if (showRange) { - addColumn(noColIdx); - addColumn(modColIdx); - addColumn(yesColIdx); - } - if (showData) - addColumn(dataColIdx); + showColumn(nameColIdx); + + updateListAll(); +} + +void ConfigList::setOptionMode(QAction *action) +{ + if (action == showNormalAction) + optMode = normalOpt; + else if (action == showAllAction) + optMode = allOpt; + else + optMode = promptOpt; updateListAll(); } @@ -384,8 +377,6 @@ void ConfigList::saveSettings(void) if (!objectName().isEmpty()) { configSettings->beginGroup(objectName()); configSettings->setValue("/showName", showName); - configSettings->setValue("/showRange", showRange); - configSettings->setValue("/showData", showData); configSettings->setValue("/optionMode", (int)optMode); configSettings->endGroup(); } @@ -424,15 +415,15 @@ void ConfigList::updateSelection(void) emit menuSelected(menu); } -void ConfigList::updateList(ConfigItem* item) +void ConfigList::updateList() { ConfigItem* last = 0; + ConfigItem *item; if (!rootEntry) { if (mode != listMode) goto update; QTreeWidgetItemIterator it(this); - ConfigItem* item; while (*it) { item = (ConfigItem*)(*it); @@ -454,7 +445,7 @@ void ConfigList::updateList(ConfigItem* item) } if ((mode == singleMode || (mode == symbolMode && !(rootEntry->flags & MENU_ROOT))) && rootEntry->sym && rootEntry->prompt) { - item = last ? last->nextSibling() : firstChild(); + item = last ? last->nextSibling() : nullptr; if (!item) item = new ConfigItem(this, last, rootEntry, true); else @@ -466,11 +457,33 @@ void ConfigList::updateList(ConfigItem* item) return; } update: - updateMenuList(this, rootEntry); + updateMenuList(rootEntry); update(); resizeColumnToContents(0); } +void ConfigList::updateListForAll() +{ + QListIterator it(allLists); + + while (it.hasNext()) { + ConfigList *list = it.next(); + + list->updateList(); + } +} + +void ConfigList::updateListAllForAll() +{ + QListIterator it(allLists); + + while (it.hasNext()) { + ConfigList *list = it.next(); + + list->updateList(); + } +} + void ConfigList::setValue(ConfigItem* item, tristate val) { struct symbol* sym; @@ -491,7 +504,7 @@ void ConfigList::setValue(ConfigItem* item, tristate val) return; if (oldval == no && item->menu->list) item->setExpanded(true); - parent()->updateList(item); + ConfigList::updateListForAll(); break; } } @@ -525,12 +538,9 @@ void ConfigList::changeValue(ConfigItem* item) item->setExpanded(true); } if (oldexpr != newexpr) - parent()->updateList(item); + ConfigList::updateListForAll(); break; - case S_INT: - case S_HEX: - case S_STRING: - parent()->lineEdit->show(item); + default: break; } } @@ -544,11 +554,11 @@ void ConfigList::setRootMenu(struct menu *menu) type = menu && menu->prompt ? menu->prompt->type : P_UNKNOWN; if (type != P_MENU) return; - updateMenuList(this, 0); + updateMenuList(0); rootEntry = menu; updateListAll(); if (currentItem()) { - currentItem()->setSelected(hasFocus()); + setSelected(currentItem(), hasFocus()); scrollToItem(currentItem()); } } @@ -636,7 +646,7 @@ void ConfigList::updateMenuList(ConfigItem *parent, struct menu* menu) last = item; continue; } - hide: +hide: if (item && item->menu == child) { last = parent->firstChild(); if (last == item) @@ -648,7 +658,7 @@ void ConfigList::updateMenuList(ConfigItem *parent, struct menu* menu) } } -void ConfigList::updateMenuList(ConfigList *parent, struct menu* menu) +void ConfigList::updateMenuList(struct menu *menu) { struct menu* child; ConfigItem* item; @@ -657,19 +667,19 @@ void ConfigList::updateMenuList(ConfigList *parent, struct menu* menu) enum prop_type type; if (!menu) { - while (parent->topLevelItemCount() > 0) + while (topLevelItemCount() > 0) { - delete parent->takeTopLevelItem(0); + delete takeTopLevelItem(0); } return; } - last = (ConfigItem*)parent->topLevelItem(0); + last = (ConfigItem *)topLevelItem(0); if (last && !last->goParent) last = 0; for (child = menu->list; child; child = child->next) { - item = last ? last->nextSibling() : (ConfigItem*)parent->topLevelItem(0); + item = last ? last->nextSibling() : (ConfigItem *)topLevelItem(0); type = child->prompt ? child->prompt->type : P_UNKNOWN; switch (mode) { @@ -690,7 +700,7 @@ void ConfigList::updateMenuList(ConfigList *parent, struct menu* menu) if (!child->sym && !child->list && !child->prompt) continue; if (!item || item->menu != child) - item = new ConfigItem(parent, last, child, visible); + item = new ConfigItem(this, last, child, visible); else item->testUpdateMenu(visible); @@ -701,9 +711,9 @@ void ConfigList::updateMenuList(ConfigList *parent, struct menu* menu) last = item; continue; } - hide: +hide: if (item && item->menu == child) { - last = (ConfigItem*)parent->topLevelItem(0); + last = (ConfigItem *)topLevelItem(0); if (last == item) last = 0; else while (last->nextSibling() != item) @@ -745,7 +755,10 @@ void ConfigList::keyPressEvent(QKeyEvent* ev) type = menu->prompt ? menu->prompt->type : P_UNKNOWN; if (type == P_MENU && rootEntry != menu && mode != fullMode && mode != menuMode) { - emit menuSelected(menu); + if (mode == menuMode) + emit menuSelected(menu); + else + emit itemSelected(menu); break; } case Qt::Key_Space: @@ -791,7 +804,7 @@ void ConfigList::mouseReleaseEvent(QMouseEvent* e) idx = header()->logicalIndexAt(x); switch (idx) { case promptColIdx: - icon = item->pixmap(promptColIdx); + icon = item->icon(promptColIdx); if (!icon.isNull()) { int off = header()->sectionPosition(0) + visualRect(indexAt(p)).x() + 4; // 4 is Hardcoded image offset. There might be a way to do it properly. if (x >= off && x < off + icon.availableSizes().first().width()) { @@ -802,22 +815,14 @@ void ConfigList::mouseReleaseEvent(QMouseEvent* e) break; ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; if (ptype == P_MENU && rootEntry != menu && - mode != fullMode && mode != menuMode) + mode != fullMode && mode != menuMode && + mode != listMode) emit menuSelected(menu); else changeValue(item); } } break; - case noColIdx: - setValue(item, no); - break; - case modColIdx: - setValue(item, mod); - break; - case yesColIdx: - setValue(item, yes); - break; case dataColIdx: changeValue(item); break; @@ -837,7 +842,7 @@ void ConfigList::mouseMoveEvent(QMouseEvent* e) void ConfigList::mouseDoubleClickEvent(QMouseEvent* e) { - QPoint p = e->pos(); // TODO: Check if this works(was contentsToViewport). + QPoint p = e->pos(); ConfigItem* item = (ConfigItem*)itemAt(p); struct menu *menu; enum prop_type ptype; @@ -852,9 +857,12 @@ void ConfigList::mouseDoubleClickEvent(QMouseEvent* e) if (!menu) goto skip; ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; - if (ptype == P_MENU && (mode == singleMode || mode == symbolMode)) - emit menuSelected(menu); - else if (menu->sym) + if (ptype == P_MENU && mode != listMode) { + if (mode == singleMode) + emit itemSelected(menu); + else if (mode == symbolMode) + emit menuSelected(menu); + } else if (menu->sym) changeValue(item); skip: @@ -870,7 +878,7 @@ void ConfigList::focusInEvent(QFocusEvent *e) ConfigItem* item = (ConfigItem *)currentItem(); if (item) { - item->setSelected(true); + setSelected(item, true); menu = item->menu; } emit gotFocus(menu); @@ -878,114 +886,38 @@ void ConfigList::focusInEvent(QFocusEvent *e) void ConfigList::contextMenuEvent(QContextMenuEvent *e) { - if (e->y() <= header()->geometry().bottom()) { - if (!headerPopup) { - QAction *action; - - headerPopup = new QMenu(this); - action = new QAction(_("Show Name"), this); - action->setCheckable(true); - connect(action, SIGNAL(toggled(bool)), - parent(), SLOT(setShowName(bool))); - connect(parent(), SIGNAL(showNameChanged(bool)), - action, SLOT(setOn(bool))); - action->setChecked(showName); - headerPopup->addAction(action); - action = new QAction(_("Show Range"), this); - action->setCheckable(true); - connect(action, SIGNAL(toggled(bool)), - parent(), SLOT(setShowRange(bool))); - connect(parent(), SIGNAL(showRangeChanged(bool)), - action, SLOT(setOn(bool))); - action->setChecked(showRange); - headerPopup->addAction(action); - action = new QAction(_("Show Data"), this); - action->setCheckable(true); - connect(action, SIGNAL(toggled(bool)), - parent(), SLOT(setShowData(bool))); - connect(parent(), SIGNAL(showDataChanged(bool)), - action, SLOT(setOn(bool))); - action->setChecked(showData); - headerPopup->addAction(action); - } - headerPopup->exec(e->globalPos()); - e->accept(); - } else - e->ignore(); -} - -ConfigView*ConfigView::viewList; -QAction *ConfigView::showNormalAction; -QAction *ConfigView::showAllAction; -QAction *ConfigView::showPromptAction; - -ConfigView::ConfigView(QWidget* parent, const char *name) - : Parent(parent) -{ - setObjectName(name); - QVBoxLayout *verticalLayout = new QVBoxLayout(this); - verticalLayout->setContentsMargins(0, 0, 0, 0); - - list = new ConfigList(this); - verticalLayout->addWidget(list); - lineEdit = new ConfigLineEdit(this); - lineEdit->hide(); - verticalLayout->addWidget(lineEdit); - - this->nextView = viewList; - viewList = this; -} - -ConfigView::~ConfigView(void) -{ - ConfigView** vp; - - for (vp = &viewList; *vp; vp = &(*vp)->nextView) { - if (*vp == this) { - *vp = nextView; - break; - } + if (!headerPopup) { + QAction *action; + + headerPopup = new QMenu(this); + action = new QAction("Show Name", this); + action->setCheckable(true); + connect(action, &QAction::toggled, + this, &ConfigList::setShowName); + connect(this, &ConfigList::showNameChanged, + action, &QAction::setChecked); + action->setChecked(showName); + headerPopup->addAction(action); } -} -void ConfigView::setOptionMode(QAction *act) -{ - if (act == showNormalAction) - list->optMode = normalOpt; - else if (act == showAllAction) - list->optMode = allOpt; - else - list->optMode = promptOpt; - - list->updateListAll(); + headerPopup->exec(e->globalPos()); + e->accept(); } -void ConfigView::setShowName(bool b) +void ConfigList::setShowName(bool on) { - if (list->showName != b) { - list->showName = b; - list->reinit(); - emit showNameChanged(b); - } -} + if (showName == on) + return; -void ConfigView::setShowRange(bool b) -{ - if (list->showRange != b) { - list->showRange = b; - list->reinit(); - emit showRangeChanged(b); - } + showName = on; + reinit(); + emit showNameChanged(on); } -void ConfigView::setShowData(bool b) -{ - if (list->showData != b) { - list->showData = b; - list->reinit(); - emit showDataChanged(b); - } -} +QList ConfigList::allLists; +QAction *ConfigList::showNormalAction; +QAction *ConfigList::showAllAction; +QAction *ConfigList::showPromptAction; void ConfigList::setAllOpen(bool open) { @@ -998,34 +930,31 @@ void ConfigList::setAllOpen(bool open) } } -void ConfigView::updateList(ConfigItem* item) -{ - ConfigView* v; - - for (v = viewList; v; v = v->nextView) - v->list->updateList(item); -} - -void ConfigView::updateListAll(void) -{ - ConfigView* v; - - for (v = viewList; v; v = v->nextView) - v->list->updateListAll(); -} - ConfigInfoView::ConfigInfoView(QWidget* parent, const char *name) : Parent(parent), sym(0), _menu(0) { setObjectName(name); - + setOpenLinks(false); if (!objectName().isEmpty()) { configSettings->beginGroup(objectName()); setShowDebug(configSettings->value("/showDebug", false).toBool()); configSettings->endGroup(); - connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); + connect(configApp, &QApplication::aboutToQuit, + this, &ConfigInfoView::saveSettings); } + + contextMenu = createStandardContextMenu(); + QAction *action = new QAction("Show Debug Info", contextMenu); + + action->setCheckable(true); + connect(action, &QAction::toggled, + this, &ConfigInfoView::setShowDebug); + connect(this, &ConfigInfoView::showDebugChanged, + action, &QAction::setChecked); + action->setChecked(showDebug()); + contextMenu->addSeparator(); + contextMenu->addAction(action); } void ConfigInfoView::saveSettings(void) @@ -1080,116 +1009,126 @@ void ConfigInfoView::symbolInfo(void) void ConfigInfoView::menuInfo(void) { struct symbol* sym; - QString head, debug, help; + QString info; + QTextStream stream(&info); sym = _menu->sym; if (sym) { if (_menu->prompt) { - head += ""; - head += print_filter(_(_menu->prompt->text)); - head += ""; + stream << ""; + stream << print_filter(_menu->prompt->text); + stream << ""; if (sym->name) { - head += " ("; + stream << " ("; if (showDebug()) - head += QString().sprintf("", sym); - head += print_filter(sym->name); + stream << "name << "\">"; + stream << print_filter(sym->name); if (showDebug()) - head += ""; - head += ")"; + stream << ""; + stream << ")"; } } else if (sym->name) { - head += ""; + stream << ""; if (showDebug()) - head += QString().sprintf("", sym); - head += print_filter(sym->name); + stream << "name << "\">"; + stream << print_filter(sym->name); if (showDebug()) - head += ""; - head += ""; + stream << ""; + stream << ""; } - head += "

"; + stream << "

"; if (showDebug()) - debug = debug_info(sym); + stream << debug_info(sym); struct gstr help_gstr = str_new(); + menu_get_ext_help(_menu, &help_gstr); - help = print_filter(str_get(&help_gstr)); + stream << print_filter(str_get(&help_gstr)); str_free(&help_gstr); } else if (_menu->prompt) { - head += ""; - head += print_filter(_(_menu->prompt->text)); - head += "

"; + stream << ""; + stream << print_filter(_menu->prompt->text); + stream << "

"; if (showDebug()) { if (_menu->prompt->visible.expr) { - debug += "  dep: "; - expr_print(_menu->prompt->visible.expr, expr_print_help, &debug, E_NONE); - debug += "

"; + stream << "  dep: "; + expr_print(_menu->prompt->visible.expr, + expr_print_help, &stream, E_NONE); + stream << "

"; } + + stream << "defined at " << _menu->filename << ":" + << _menu->lineno << "

"; } } - if (showDebug()) - debug += QString().sprintf("defined at %s:%d

", _menu->file->name, _menu->lineno); - setText(head + debug + help); + setText(info); } QString ConfigInfoView::debug_info(struct symbol *sym) { QString debug; + QTextStream stream(&debug); - debug += "type: "; - debug += print_filter(sym_type_name(sym->type)); + stream << "type: "; + stream << print_filter(sym_type_name(sym->type)); if (sym_is_choice(sym)) - debug += " (choice)"; + stream << " (choice)"; debug += "
"; if (sym->rev_dep.expr) { - debug += "reverse dep: "; - expr_print(sym->rev_dep.expr, expr_print_help, &debug, E_NONE); - debug += "
"; + stream << "reverse dep: "; + expr_print(sym->rev_dep.expr, expr_print_help, &stream, E_NONE); + stream << "
"; } for (struct property *prop = sym->prop; prop; prop = prop->next) { switch (prop->type) { case P_PROMPT: case P_MENU: - debug += QString().sprintf("prompt: ", prop->menu); - debug += print_filter(_(prop->text)); - debug += "
"; + stream << "prompt: name << "\">"; + stream << print_filter(prop->text); + stream << "
"; break; case P_DEFAULT: case P_SELECT: case P_RANGE: - case P_ENV: - debug += prop_get_type_name(prop->type); - debug += ": "; - expr_print(prop->expr, expr_print_help, &debug, E_NONE); - debug += "
"; + case P_COMMENT: + case P_IMPLY: + case P_SYMBOL: + stream << prop_get_type_name(prop->type); + stream << ": "; + expr_print(prop->expr, expr_print_help, + &stream, E_NONE); + stream << "
"; break; case P_CHOICE: if (sym_is_choice(sym)) { - debug += "choice: "; - expr_print(prop->expr, expr_print_help, &debug, E_NONE); - debug += "
"; + stream << "choice: "; + expr_print(prop->expr, expr_print_help, + &stream, E_NONE); + stream << "
"; } break; default: - debug += "unknown property: "; - debug += prop_get_type_name(prop->type); - debug += "
"; + stream << "unknown property: "; + stream << prop_get_type_name(prop->type); + stream << "
"; } if (prop->visible.expr) { - debug += "    dep: "; - expr_print(prop->visible.expr, expr_print_help, &debug, E_NONE); - debug += "
"; + stream << "    dep: "; + expr_print(prop->visible.expr, expr_print_help, + &stream, E_NONE); + stream << "
"; } } - debug += "
"; + stream << "
"; return debug; } QString ConfigInfoView::print_filter(const QString &str) { - QRegExp re("[<>&\"\\n]"); + QRegularExpression re("[<>&\"\\n]"); QString res = str; for (int i = 0; (i = res.indexOf(re, i)) >= 0;) { switch (res[i].toLatin1()) { @@ -1220,88 +1159,125 @@ QString ConfigInfoView::print_filter(const QString &str) void ConfigInfoView::expr_print_help(void *data, struct symbol *sym, const char *str) { - QString* text = reinterpret_cast(data); - QString str2 = print_filter(str); + QTextStream *stream = reinterpret_cast(data); if (sym && sym->name && !(sym->flags & SYMBOL_CONST)) { - *text += QString().sprintf("", sym); - *text += str2; - *text += ""; - } else - *text += str2; + *stream << "name << "\">"; + *stream << print_filter(str); + *stream << ""; + } else { + *stream << print_filter(str); + } } -QMenu* ConfigInfoView::createStandardContextMenu(const QPoint & pos) +void ConfigInfoView::clicked(const QUrl &url) { - QMenu* popup = Parent::createStandardContextMenu(pos); - QAction* action = new QAction(_("Show Debug Info"), popup); - action->setCheckable(true); - connect(action, SIGNAL(toggled(bool)), SLOT(setShowDebug(bool))); - connect(this, SIGNAL(showDebugChanged(bool)), action, SLOT(setOn(bool))); - action->setChecked(showDebug()); - popup->addSeparator(); - popup->addAction(action); - return popup; + QByteArray str = url.toEncoded(); + const std::size_t count = str.size(); + char *data = new char[count + 1]; + struct symbol **result; + struct menu *m = NULL; + + if (count < 1) { + delete[] data; + return; + } + + memcpy(data, str.constData(), count); + data[count] = '\0'; + + /* Seek for exact match */ + data[0] = '^'; + strcat(data, "$"); + result = sym_re_search(data); + if (!result) { + delete[] data; + return; + } + + sym = *result; + + /* Seek for the menu which holds the symbol */ + for (struct property *prop = sym->prop; prop; prop = prop->next) { + if (prop->type != P_PROMPT && prop->type != P_MENU) + continue; + m = prop->menu; + break; + } + + if (!m) { + /* Symbol is not visible as a menu */ + symbolInfo(); + emit showDebugChanged(true); + } else { + emit menuSelected(m); + } + + free(result); + delete[] data; } -void ConfigInfoView::contextMenuEvent(QContextMenuEvent *e) +void ConfigInfoView::contextMenuEvent(QContextMenuEvent *event) { - Parent::contextMenuEvent(e); + contextMenu->popup(event->globalPos()); + event->accept(); } -ConfigSearchWindow::ConfigSearchWindow(ConfigMainWindow* parent, const char *name) +ConfigSearchWindow::ConfigSearchWindow(ConfigMainWindow *parent) : Parent(parent), result(NULL) { - setObjectName(name); + setObjectName("search"); setWindowTitle("Search Config"); QVBoxLayout* layout1 = new QVBoxLayout(this); layout1->setContentsMargins(11, 11, 11, 11); layout1->setSpacing(6); - QHBoxLayout* layout2 = new QHBoxLayout(0); + + QHBoxLayout* layout2 = new QHBoxLayout(); layout2->setContentsMargins(0, 0, 0, 0); layout2->setSpacing(6); - layout2->addWidget(new QLabel(_("Find:"), this)); + layout2->addWidget(new QLabel("Find:", this)); editField = new QLineEdit(this); - connect(editField, SIGNAL(returnPressed()), SLOT(search())); + connect(editField, &QLineEdit::returnPressed, + this, &ConfigSearchWindow::search); layout2->addWidget(editField); - searchButton = new QPushButton(_("Search"), this); + searchButton = new QPushButton("Search", this); searchButton->setAutoDefault(false); - connect(searchButton, SIGNAL(clicked()), SLOT(search())); + connect(searchButton, &QPushButton::clicked, + this, &ConfigSearchWindow::search); layout2->addWidget(searchButton); layout1->addLayout(layout2); split = new QSplitter(this); split->setOrientation(Qt::Vertical); - list = new ConfigView(split, name); - list->list->mode = listMode; - info = new ConfigInfoView(split, name); - connect(list->list, SIGNAL(menuChanged(struct menu *)), - info, SLOT(setInfo(struct menu *))); - connect(list->list, SIGNAL(menuChanged(struct menu *)), - parent, SLOT(setMenuLink(struct menu *))); + list = new ConfigList(split, "search"); + list->mode = listMode; + info = new ConfigInfoView(split, "search"); + connect(list, &ConfigList::menuChanged, + info, &ConfigInfoView::setInfo); + connect(list, &ConfigList::menuChanged, + parent, &ConfigMainWindow::setMenuLink); layout1->addWidget(split); - if (name) { - QVariant x, y; - int width, height; - bool ok; + QVariant x, y; + int width, height; + bool ok; - configSettings->beginGroup(name); - width = configSettings->value("/window width", parent->width() / 2).toInt(); - height = configSettings->value("/window height", parent->height() / 2).toInt(); - resize(width, height); - x = configSettings->value("/window x"); - y = configSettings->value("/window y"); - if ((x.isValid())&&(y.isValid())) - move(x.toInt(), y.toInt()); - QList sizes = configSettings->readSizes("/split", &ok); - if (ok) - split->setSizes(sizes); - configSettings->endGroup(); - connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); - } + configSettings->beginGroup("search"); + width = configSettings->value("/window width", parent->width() / 2).toInt(); + height = configSettings->value("/window height", parent->height() / 2).toInt(); + resize(width, height); + x = configSettings->value("/window x"); + y = configSettings->value("/window y"); + if (x.isValid() && y.isValid()) + move(x.toInt(), y.toInt()); + QList sizes = configSettings->readSizes("/split", &ok); + if (ok) + split->setSizes(sizes); + configSettings->endGroup(); + connect(configApp, &QApplication::aboutToQuit, + this, &ConfigSearchWindow::saveSettings); } void ConfigSearchWindow::saveSettings(void) @@ -1324,7 +1300,7 @@ void ConfigSearchWindow::search(void) ConfigItem *lastItem = NULL; free(result); - list->list->clear(); + list->clear(); info->clear(); result = sym_re_search(editField->text().toLatin1()); @@ -1332,7 +1308,7 @@ void ConfigSearchWindow::search(void) return; for (p = result; *p; p++) { for_all_prompts((*p), prop) - lastItem = new ConfigItem(list->list, lastItem, prop->menu, + lastItem = new ConfigItem(list, lastItem, prop->menu, menu_is_visible(prop->menu)); } } @@ -1343,116 +1319,143 @@ void ConfigSearchWindow::search(void) ConfigMainWindow::ConfigMainWindow(void) : searchWindow(0) { - QMenuBar* menu; bool ok = true; QVariant x, y; int width, height; char title[256]; - QDesktopWidget *d = configApp->desktop(); snprintf(title, sizeof(title), "%s%s", rootmenu.prompt->text, "" ); setWindowTitle(title); - width = configSettings->value("/window width", d->width() - 64).toInt(); - height = configSettings->value("/window height", d->height() - 64).toInt(); + QRect g = configApp->primaryScreen()->geometry(); + width = configSettings->value("/window width", g.width() - 64).toInt(); + height = configSettings->value("/window height", g.height() - 64).toInt(); resize(width, height); x = configSettings->value("/window x"); y = configSettings->value("/window y"); if ((x.isValid())&&(y.isValid())) move(x.toInt(), y.toInt()); - split1 = new QSplitter(this); + // set up icons + ConfigItem::symbolYesIcon = QIcon(QPixmap(xpm_symbol_yes)); + ConfigItem::symbolModIcon = QIcon(QPixmap(xpm_symbol_mod)); + ConfigItem::symbolNoIcon = QIcon(QPixmap(xpm_symbol_no)); + ConfigItem::choiceYesIcon = QIcon(QPixmap(xpm_choice_yes)); + ConfigItem::choiceNoIcon = QIcon(QPixmap(xpm_choice_no)); + ConfigItem::menuIcon = QIcon(QPixmap(xpm_menu)); + ConfigItem::menubackIcon = QIcon(QPixmap(xpm_menuback)); + + QWidget *widget = new QWidget(this); + QVBoxLayout *layout = new QVBoxLayout(widget); + setCentralWidget(widget); + + split1 = new QSplitter(widget); split1->setOrientation(Qt::Horizontal); - setCentralWidget(split1); + split1->setChildrenCollapsible(false); - menuView = new ConfigView(split1, "menu"); - menuList = menuView->list; + menuList = new ConfigList(widget, "menu"); - split2 = new QSplitter(split1); + split2 = new QSplitter(widget); + split2->setChildrenCollapsible(false); split2->setOrientation(Qt::Vertical); // create config tree - configView = new ConfigView(split2, "config"); - configList = configView->list; + configList = new ConfigList(widget, "config"); + + helpText = new ConfigInfoView(widget, "help"); - helpText = new ConfigInfoView(split2, "help"); + layout->addWidget(split2); + split2->addWidget(split1); + split1->addWidget(configList); + split1->addWidget(menuList); + split2->addWidget(helpText); setTabOrder(configList, helpText); configList->setFocus(); - menu = menuBar(); - toolBar = new QToolBar("Tools", this); - addToolBar(toolBar); - - backAction = new QAction(QPixmap(xpm_back), _("Back"), this); - connect(backAction, SIGNAL(triggered(bool)), SLOT(goBack())); - backAction->setEnabled(false); - QAction *quitAction = new QAction(_("&Quit"), this); - quitAction->setShortcut(Qt::CTRL + Qt::Key_Q); - connect(quitAction, SIGNAL(triggered(bool)), SLOT(close())); - QAction *loadAction = new QAction(QPixmap(xpm_load), _("&Load"), this); - loadAction->setShortcut(Qt::CTRL + Qt::Key_L); - connect(loadAction, SIGNAL(triggered(bool)), SLOT(loadConfig())); - saveAction = new QAction(QPixmap(xpm_save), _("&Save"), this); - saveAction->setShortcut(Qt::CTRL + Qt::Key_S); - connect(saveAction, SIGNAL(triggered(bool)), SLOT(saveConfig())); + backAction = new QAction(QPixmap(xpm_back), "Back", this); + connect(backAction, &QAction::triggered, + this, &ConfigMainWindow::goBack); + + QAction *quitAction = new QAction("&Quit", this); + quitAction->setShortcut(Qt::CTRL | Qt::Key_Q); + connect(quitAction, &QAction::triggered, + this, &ConfigMainWindow::close); + + QAction *loadAction = new QAction(QPixmap(xpm_load), "&Load", this); + loadAction->setShortcut(Qt::CTRL | Qt::Key_L); + connect(loadAction, &QAction::triggered, + this, &ConfigMainWindow::loadConfig); + + saveAction = new QAction(QPixmap(xpm_save), "&Save", this); + saveAction->setShortcut(Qt::CTRL | Qt::Key_S); + connect(saveAction, &QAction::triggered, + this, &ConfigMainWindow::saveConfig); + conf_set_changed_callback(conf_changed); + // Set saveAction's initial state conf_changed(); - QAction *saveAsAction = new QAction(_("Save &As..."), this); - connect(saveAsAction, SIGNAL(triggered(bool)), SLOT(saveConfigAs())); - QAction *searchAction = new QAction(_("&Find"), this); - searchAction->setShortcut(Qt::CTRL + Qt::Key_F); - connect(searchAction, SIGNAL(triggered(bool)), SLOT(searchConfig())); - singleViewAction = new QAction(QPixmap(xpm_single_view), _("Single View"), this); + configname = xstrdup(conf_get_configname()); + + QAction *saveAsAction = new QAction("Save &As...", this); + connect(saveAsAction, &QAction::triggered, + this, &ConfigMainWindow::saveConfigAs); + QAction *searchAction = new QAction("&Find", this); + searchAction->setShortcut(Qt::CTRL | Qt::Key_F); + connect(searchAction, &QAction::triggered, + this, &ConfigMainWindow::searchConfig); + singleViewAction = new QAction(QPixmap(xpm_single_view), "Single View", this); singleViewAction->setCheckable(true); - connect(singleViewAction, SIGNAL(triggered(bool)), SLOT(showSingleView())); - splitViewAction = new QAction(QPixmap(xpm_split_view), _("Split View"), this); + connect(singleViewAction, &QAction::triggered, + this, &ConfigMainWindow::showSingleView); + splitViewAction = new QAction(QPixmap(xpm_split_view), "Split View", this); splitViewAction->setCheckable(true); - connect(splitViewAction, SIGNAL(triggered(bool)), SLOT(showSplitView())); - fullViewAction = new QAction(QPixmap(xpm_tree_view), _("Full View"), this); + connect(splitViewAction, &QAction::triggered, + this, &ConfigMainWindow::showSplitView); + fullViewAction = new QAction(QPixmap(xpm_tree_view), "Full View", this); fullViewAction->setCheckable(true); - connect(fullViewAction, SIGNAL(triggered(bool)), SLOT(showFullView())); + connect(fullViewAction, &QAction::triggered, + this, &ConfigMainWindow::showFullView); - QAction *showNameAction = new QAction(_("Show Name"), this); + QAction *showNameAction = new QAction("Show Name", this); showNameAction->setCheckable(true); - connect(showNameAction, SIGNAL(toggled(bool)), configView, SLOT(setShowName(bool))); - showNameAction->setChecked(configView->showName()); - QAction *showRangeAction = new QAction(_("Show Range"), this); - showRangeAction->setCheckable(true); - connect(showRangeAction, SIGNAL(toggled(bool)), configView, SLOT(setShowRange(bool))); - QAction *showDataAction = new QAction(_("Show Data"), this); - showDataAction->setCheckable(true); - connect(showDataAction, SIGNAL(toggled(bool)), configView, SLOT(setShowData(bool))); + connect(showNameAction, &QAction::toggled, + configList, &ConfigList::setShowName); + showNameAction->setChecked(configList->showName); QActionGroup *optGroup = new QActionGroup(this); optGroup->setExclusive(true); - connect(optGroup, SIGNAL(triggered(QAction*)), configView, - SLOT(setOptionMode(QAction *))); - connect(optGroup, SIGNAL(triggered(QAction *)), menuView, - SLOT(setOptionMode(QAction *))); - - configView->showNormalAction = new QAction(_("Show Normal Options"), optGroup); - configView->showAllAction = new QAction(_("Show All Options"), optGroup); - configView->showPromptAction = new QAction(_("Show Prompt Options"), optGroup); - configView->showNormalAction->setCheckable(true); - configView->showAllAction->setCheckable(true); - configView->showPromptAction->setCheckable(true); - - QAction *showDebugAction = new QAction( _("Show Debug Info"), this); + connect(optGroup, &QActionGroup::triggered, + configList, &ConfigList::setOptionMode); + connect(optGroup, &QActionGroup::triggered, + menuList, &ConfigList::setOptionMode); + + ConfigList::showNormalAction = new QAction("Show Normal Options", optGroup); + ConfigList::showNormalAction->setCheckable(true); + ConfigList::showAllAction = new QAction("Show All Options", optGroup); + ConfigList::showAllAction->setCheckable(true); + ConfigList::showPromptAction = new QAction("Show Prompt Options", optGroup); + ConfigList::showPromptAction->setCheckable(true); + + QAction *showDebugAction = new QAction("Show Debug Info", this); showDebugAction->setCheckable(true); - connect(showDebugAction, SIGNAL(toggled(bool)), helpText, SLOT(setShowDebug(bool))); + connect(showDebugAction, &QAction::toggled, + helpText, &ConfigInfoView::setShowDebug); showDebugAction->setChecked(helpText->showDebug()); - QAction *showIntroAction = new QAction( _("Introduction"), this); - connect(showIntroAction, SIGNAL(triggered(bool)), SLOT(showIntro())); - QAction *showAboutAction = new QAction( _("About"), this); - connect(showAboutAction, SIGNAL(triggered(bool)), SLOT(showAbout())); + QAction *showIntroAction = new QAction("Introduction", this); + connect(showIntroAction, &QAction::triggered, + this, &ConfigMainWindow::showIntro); + QAction *showAboutAction = new QAction("About", this); + connect(showAboutAction, &QAction::triggered, + this, &ConfigMainWindow::showAbout); // init tool bar + QToolBar *toolBar = addToolBar("Tools"); toolBar->addAction(backAction); toolBar->addSeparator(); toolBar->addAction(loadAction); @@ -1462,53 +1465,55 @@ ConfigMainWindow::ConfigMainWindow(void) toolBar->addAction(splitViewAction); toolBar->addAction(fullViewAction); - // create config menu - QMenu* config = menu->addMenu(_("&File")); - config->addAction(loadAction); - config->addAction(saveAction); - config->addAction(saveAsAction); - config->addSeparator(); - config->addAction(quitAction); + // create file menu + QMenu *menu = menuBar()->addMenu("&File"); + menu->addAction(loadAction); + menu->addAction(saveAction); + menu->addAction(saveAsAction); + menu->addSeparator(); + menu->addAction(quitAction); // create edit menu - QMenu* editMenu = menu->addMenu(_("&Edit")); - editMenu->addAction(searchAction); + menu = menuBar()->addMenu("&Edit"); + menu->addAction(searchAction); // create options menu - QMenu* optionMenu = menu->addMenu(_("&Option")); - optionMenu->addAction(showNameAction); - optionMenu->addAction(showRangeAction); - optionMenu->addAction(showDataAction); - optionMenu->addSeparator(); - optionMenu->addActions(optGroup->actions()); - optionMenu->addSeparator(); - optionMenu->addAction(showDebugAction); + menu = menuBar()->addMenu("&Option"); + menu->addAction(showNameAction); + menu->addSeparator(); + menu->addActions(optGroup->actions()); + menu->addSeparator(); + menu->addAction(showDebugAction); // create help menu - menu->addSeparator(); - QMenu* helpMenu = menu->addMenu(_("&Help")); - helpMenu->addAction(showIntroAction); - helpMenu->addAction(showAboutAction); - - connect(configList, SIGNAL(menuChanged(struct menu *)), - helpText, SLOT(setInfo(struct menu *))); - connect(configList, SIGNAL(menuSelected(struct menu *)), - SLOT(changeMenu(struct menu *))); - connect(configList, SIGNAL(parentSelected()), - SLOT(goBack())); - connect(menuList, SIGNAL(menuChanged(struct menu *)), - helpText, SLOT(setInfo(struct menu *))); - connect(menuList, SIGNAL(menuSelected(struct menu *)), - SLOT(changeMenu(struct menu *))); - - connect(configList, SIGNAL(gotFocus(struct menu *)), - helpText, SLOT(setInfo(struct menu *))); - connect(menuList, SIGNAL(gotFocus(struct menu *)), - helpText, SLOT(setInfo(struct menu *))); - connect(menuList, SIGNAL(gotFocus(struct menu *)), - SLOT(listFocusChanged(void))); - connect(helpText, SIGNAL(menuSelected(struct menu *)), - SLOT(setMenuLink(struct menu *))); + menu = menuBar()->addMenu("&Help"); + menu->addAction(showIntroAction); + menu->addAction(showAboutAction); + + connect(helpText, &ConfigInfoView::anchorClicked, + helpText, &ConfigInfoView::clicked); + + connect(configList, &ConfigList::menuChanged, + helpText, &ConfigInfoView::setInfo); + connect(configList, &ConfigList::menuSelected, + this, &ConfigMainWindow::changeMenu); + connect(configList, &ConfigList::itemSelected, + this, &ConfigMainWindow::changeItens); + connect(configList, &ConfigList::parentSelected, + this, &ConfigMainWindow::goBack); + connect(menuList, &ConfigList::menuChanged, + helpText, &ConfigInfoView::setInfo); + connect(menuList, &ConfigList::menuSelected, + this, &ConfigMainWindow::changeMenu); + + connect(configList, &ConfigList::gotFocus, + helpText, &ConfigInfoView::setInfo); + connect(menuList, &ConfigList::gotFocus, + helpText, &ConfigInfoView::setInfo); + connect(menuList, &ConfigList::gotFocus, + this, &ConfigMainWindow::listFocusChanged); + connect(helpText, &ConfigInfoView::menuSelected, + this, &ConfigMainWindow::setMenuLink); QString listMode = configSettings->value("/listMode", "symbol").toString(); if (listMode == "single") @@ -1530,45 +1535,74 @@ ConfigMainWindow::ConfigMainWindow(void) void ConfigMainWindow::loadConfig(void) { - QString s = QFileDialog::getOpenFileName(this, "", conf_get_configname()); - if (s.isNull()) + QString str; + QByteArray ba; + const char *name; + + str = QFileDialog::getOpenFileName(this, "", configname); + if (str.isNull()) return; - if (conf_read(QFile::encodeName(s))) - QMessageBox::information(this, "qconf", _("Unable to load configuration!")); - ConfigView::updateListAll(); + + ba = str.toLocal8Bit(); + name = ba.data(); + + if (conf_read(name)) + QMessageBox::information(this, "qconf", "Unable to load configuration!"); + + free(configname); + configname = xstrdup(name); + + ConfigList::updateListAllForAll(); } bool ConfigMainWindow::saveConfig(void) { - if (conf_write(NULL)) { - QMessageBox::information(this, "qconf", _("Unable to save configuration!")); + if (conf_write(configname)) { + QMessageBox::information(this, "qconf", "Unable to save configuration!"); return false; } + conf_write_autoconf(0); + return true; } void ConfigMainWindow::saveConfigAs(void) { - QString s = QFileDialog::getSaveFileName(this, "", conf_get_configname()); - if (s.isNull()) + QString str; + QByteArray ba; + const char *name; + + str = QFileDialog::getSaveFileName(this, "", configname); + if (str.isNull()) return; - saveConfig(); + + ba = str.toLocal8Bit(); + name = ba.data(); + + if (conf_write(name)) { + QMessageBox::information(this, "qconf", "Unable to save configuration!"); + } + conf_write_autoconf(0); + + free(configname); + configname = xstrdup(name); } void ConfigMainWindow::searchConfig(void) { if (!searchWindow) - searchWindow = new ConfigSearchWindow(this, "search"); + searchWindow = new ConfigSearchWindow(this); searchWindow->show(); } -void ConfigMainWindow::changeMenu(struct menu *menu) +void ConfigMainWindow::changeItens(struct menu *menu) { configList->setRootMenu(menu); - if (configList->rootEntry->parent == &rootmenu) - backAction->setEnabled(false); - else - backAction->setEnabled(true); +} + +void ConfigMainWindow::changeMenu(struct menu *menu) +{ + menuList->setRootMenu(menu); } void ConfigMainWindow::setMenuLink(struct menu *menu) @@ -1588,22 +1622,26 @@ void ConfigMainWindow::setMenuLink(struct menu *menu) return; list->setRootMenu(parent); break; - case symbolMode: + case menuMode: if (menu->flags & MENU_ROOT) { - configList->setRootMenu(menu); + menuList->setRootMenu(menu); configList->clearSelection(); - list = menuList; - } else { list = configList; + } else { parent = menu_get_parent_menu(menu->parent); if (!parent) return; - item = menuList->findConfigItem(parent); + + /* Select the config view */ + item = configList->findConfigItem(parent); if (item) { - item->setSelected(true); - menuList->scrollToItem(item); + configList->setSelected(item, true); + configList->scrollToItem(item); } - list->setRootMenu(parent); + + menuList->setRootMenu(parent); + menuList->clearSelection(); + list = menuList; } break; case fullMode: @@ -1616,9 +1654,10 @@ void ConfigMainWindow::setMenuLink(struct menu *menu) if (list) { item = list->findConfigItem(menu); if (item) { - item->setSelected(true); + list->setSelected(item, true); list->scrollToItem(item); list->setFocus(); + helpText->setInfo(menu); } } } @@ -1631,25 +1670,10 @@ void ConfigMainWindow::listFocusChanged(void) void ConfigMainWindow::goBack(void) { - ConfigItem* item, *oldSelection; - - configList->setParentMenu(); if (configList->rootEntry == &rootmenu) - backAction->setEnabled(false); - - if (menuList->selectedItems().count() == 0) return; - item = (ConfigItem*)menuList->selectedItems().first(); - oldSelection = item; - while (item) { - if (item->menu == configList->rootEntry) { - oldSelection->setSelected(false); - item->setSelected(true); - break; - } - item = (ConfigItem*)item->parent(); - } + configList->setParentMenu(); } void ConfigMainWindow::showSingleView(void) @@ -1661,7 +1685,9 @@ void ConfigMainWindow::showSingleView(void) fullViewAction->setEnabled(true); fullViewAction->setChecked(false); - menuView->hide(); + backAction->setEnabled(true); + + menuList->hide(); menuList->setRootMenu(0); configList->mode = singleMode; if (configList->rootEntry == &rootmenu) @@ -1680,17 +1706,19 @@ void ConfigMainWindow::showSplitView(void) fullViewAction->setEnabled(true); fullViewAction->setChecked(false); - configList->mode = symbolMode; + backAction->setEnabled(false); + + configList->mode = menuMode; if (configList->rootEntry == &rootmenu) configList->updateListAll(); else configList->setRootMenu(&rootmenu); configList->setAllOpen(true); configApp->processEvents(); - menuList->mode = menuMode; + menuList->mode = symbolMode; menuList->setRootMenu(&rootmenu); menuList->setAllOpen(true); - menuView->show(); + menuList->show(); menuList->setFocus(); } @@ -1703,7 +1731,9 @@ void ConfigMainWindow::showFullView(void) fullViewAction->setEnabled(false); fullViewAction->setChecked(true); - menuView->hide(); + backAction->setEnabled(false); + + menuList->hide(); menuList->setRootMenu(0); configList->mode = fullMode; if (configList->rootEntry == &rootmenu) @@ -1715,7 +1745,6 @@ void ConfigMainWindow::showFullView(void) /* * ask for saving configuration before quitting - * TODO ask only when something changed */ void ConfigMainWindow::closeEvent(QCloseEvent* e) { @@ -1723,11 +1752,21 @@ void ConfigMainWindow::closeEvent(QCloseEvent* e) e->accept(); return; } - QMessageBox mb("qconf", _("Save configuration?"), QMessageBox::Warning, - QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::Cancel | QMessageBox::Escape); - mb.setButtonText(QMessageBox::Yes, _("&Save Changes")); - mb.setButtonText(QMessageBox::No, _("&Discard Changes")); - mb.setButtonText(QMessageBox::Cancel, _("Cancel Exit")); + + QMessageBox mb(QMessageBox::Icon::Warning, "qconf", + "Save configuration?"); + + QPushButton *yb = mb.addButton(QMessageBox::Yes); + QPushButton *db = mb.addButton(QMessageBox::No); + QPushButton *cb = mb.addButton(QMessageBox::Cancel); + + yb->setText("&Save Changes"); + db->setText("&Discard Changes"); + cb->setText("Cancel Exit"); + + mb.setDefaultButton(yb); + mb.setEscapeButton(cb); + switch (mb.exec()) { case QMessageBox::Yes: if (saveConfig()) @@ -1746,28 +1785,40 @@ void ConfigMainWindow::closeEvent(QCloseEvent* e) void ConfigMainWindow::showIntro(void) { - static const QString str = _("Welcome to the qconf graphical configuration tool.\n\n" - "For each option, a blank box indicates the feature is disabled, a check\n" - "indicates it is enabled, and a dot indicates that it is to be compiled\n" - "as a module. Clicking on the box will cycle through the three states.\n\n" - "If you do not see an option (e.g., a device driver) that you believe\n" - "should be present, try turning on Show All Options under the Options menu.\n" - "Although there is no cross reference yet to help you figure out what other\n" - "options must be enabled to support the option you are interested in, you can\n" - "still view the help of a grayed-out option.\n\n" - "Toggling Show Debug Info under the Options menu will show the dependencies,\n" - "which you can then match by examining other options.\n\n"); + static const QString str = + "Welcome to the qconf graphical configuration tool.\n" + "\n" + "For bool and tristate options, a blank box indicates the " + "feature is disabled, a check indicates it is enabled, and a " + "dot indicates that it is to be compiled as a module. Clicking " + "on the box will cycle through the three states. For int, hex, " + "and string options, double-clicking or pressing F2 on the " + "Value cell will allow you to edit the value.\n" + "\n" + "If you do not see an option (e.g., a device driver) that you " + "believe should be present, try turning on Show All Options " + "under the Options menu. Enabling Show Debug Info will help you" + "figure out what other options must be enabled to support the " + "option you are interested in, and hyperlinks will navigate to " + "them.\n" + "\n" + "Toggling Show Debug Info under the Options menu will show the " + "dependencies, which you can then match by examining other " + "options.\n"; QMessageBox::information(this, "qconf", str); } void ConfigMainWindow::showAbout(void) { - static const QString str = _("qconf is Copyright (C) 2002 Roman Zippel .\n" - "Copyright (C) 2015 Boris Barbulovski .\n\n" - "Bug reports and feature request can also be entered at http://bugzilla.kernel.org/\n"); + static const QString str = "qconf is Copyright (C) 2002 Roman Zippel .\n" + "Copyright (C) 2015 Boris Barbulovski .\n" + "\n" + "Bug reports and feature request can also be entered at http://bugzilla.kernel.org/\n" + "\n" + "Qt Version: "; - QMessageBox::information(this, "qconf", str); + QMessageBox::information(this, "qconf", str + qVersion()); } void ConfigMainWindow::saveSettings(void) @@ -1826,7 +1877,7 @@ static const char *progname; static void usage(void) { - printf(_("%s [-s] \n").toLatin1().constData(), progname); + printf("%s [-s] \n", progname); exit(0); } @@ -1835,11 +1886,7 @@ int main(int ac, char** av) ConfigMainWindow* v; const char *name; - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); - progname = av[0]; - configApp = new QApplication(ac, av); if (ac > 1 && av[1][0] == '-') { switch (av[1][1]) { case 's': @@ -1860,6 +1907,8 @@ int main(int ac, char** av) conf_read(NULL); //zconfdump(stdout); + configApp = new QApplication(ac, av); + configSettings = new ConfigSettings(); configSettings->beginGroup("/kconfig/qconf"); v = new ConfigMainWindow(); diff --git a/support/kconfig/qconf.h b/support/kconfig/qconf.h index a40036d1b0..78b0a1dfcd 100644 --- a/support/kconfig/qconf.h +++ b/support/kconfig/qconf.h @@ -1,25 +1,24 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ -#include -#include -#include +#include +#include #include -#include +#include +#include #include #include -#include #include -#include -#include +#include +#include +#include + #include "expr.h" -class ConfigView; class ConfigList; class ConfigItem; -class ConfigLineEdit; class ConfigMainWindow; class ConfigSettings : public QSettings { @@ -30,7 +29,7 @@ public: }; enum colIdx { - promptColIdx, nameColIdx, noColIdx, modColIdx, yesColIdx, dataColIdx, colNr + promptColIdx, nameColIdx, dataColIdx }; enum listMode { singleMode, menuMode, symbolMode, fullMode, listMode @@ -43,13 +42,16 @@ class ConfigList : public QTreeWidget { Q_OBJECT typedef class QTreeWidget Parent; public: - ConfigList(ConfigView* p, const char *name = 0); + ConfigList(QWidget *parent, const char *name = 0); + ~ConfigList(); void reinit(void); - ConfigView* parent(void) const - { - return (ConfigView*)Parent::parent(); - } ConfigItem* findConfigItem(struct menu *); + void setSelected(QTreeWidgetItem *item, bool enable) { + for (int i = 0; i < selectedItems().size(); i++) + selectedItems().at(i)->setSelected(false); + + item->setSelected(enable); + } protected: void keyPressEvent(QKeyEvent *e); @@ -63,61 +65,52 @@ protected: public slots: void setRootMenu(struct menu *menu); - void updateList(ConfigItem *item); + void updateList(); void setValue(ConfigItem* item, tristate val); void changeValue(ConfigItem* item); void updateSelection(void); void saveSettings(void); + void setOptionMode(QAction *action); + void setShowName(bool on); + signals: void menuChanged(struct menu *menu); void menuSelected(struct menu *menu); + void itemSelected(struct menu *menu); void parentSelected(void); void gotFocus(struct menu *); + void showNameChanged(bool on); public: void updateListAll(void) { updateAll = true; - updateList(NULL); + updateList(); updateAll = false; } - ConfigList* listView() - { - return this; - } - ConfigItem* firstChild() const - { - return (ConfigItem *)children().first(); - } - void addColumn(colIdx idx) - { - showColumn(idx); - } - void removeColumn(colIdx idx) - { - hideColumn(idx); - } void setAllOpen(bool open); void setParentMenu(void); bool menuSkip(struct menu *); void updateMenuList(ConfigItem *parent, struct menu*); - void updateMenuList(ConfigList *parent, struct menu*); + void updateMenuList(struct menu *menu); bool updateAll; - QPixmap symbolYesPix, symbolModPix, symbolNoPix; - QPixmap choiceYesPix, choiceNoPix; - QPixmap menuPix, menuInvPix, menuBackPix, voidPix; - - bool showName, showRange, showData; + bool showName; enum listMode mode; enum optionMode optMode; struct menu *rootEntry; QPalette disabledColorGroup; QPalette inactivedColorGroup; QMenu* headerPopup; + + static QList allLists; + static void updateListForAll(); + static void updateListAllForAll(); + + static QAction *showNormalAction, *showAllAction, *showPromptAction; }; class ConfigItem : public QTreeWidgetItem { @@ -140,7 +133,6 @@ public: } ~ConfigItem(void); void init(void); - void okRename(int col); void updateMenu(void); void testUpdateMenu(bool v); ConfigList* listView() const @@ -165,82 +157,36 @@ public: return ret; } - void setText(colIdx idx, const QString& text) - { - Parent::setText(idx, text); - } - QString text(colIdx idx) const - { - return Parent::text(idx); - } - void setPixmap(colIdx idx, const QIcon &icon) - { - Parent::setIcon(idx, icon); - } - const QIcon pixmap(colIdx idx) const - { - return icon(idx); - } // TODO: Implement paintCell ConfigItem* nextItem; struct menu *menu; bool visible; bool goParent; -}; -class ConfigLineEdit : public QLineEdit { - Q_OBJECT - typedef class QLineEdit Parent; -public: - ConfigLineEdit(ConfigView* parent); - ConfigView* parent(void) const - { - return (ConfigView*)Parent::parent(); - } - void show(ConfigItem *i); - void keyPressEvent(QKeyEvent *e); - -public: - ConfigItem *item; + static QIcon symbolYesIcon, symbolModIcon, symbolNoIcon; + static QIcon choiceYesIcon, choiceNoIcon; + static QIcon menuIcon, menubackIcon; }; -class ConfigView : public QWidget { - Q_OBJECT - typedef class QWidget Parent; -public: - ConfigView(QWidget* parent, const char *name = 0); - ~ConfigView(void); - static void updateList(ConfigItem* item); - static void updateListAll(void); - - bool showName(void) const { return list->showName; } - bool showRange(void) const { return list->showRange; } - bool showData(void) const { return list->showData; } -public slots: - void setShowName(bool); - void setShowRange(bool); - void setShowData(bool); - void setOptionMode(QAction *); -signals: - void showNameChanged(bool); - void showRangeChanged(bool); - void showDataChanged(bool); +class ConfigItemDelegate : public QStyledItemDelegate +{ +private: + struct menu *menu; public: - ConfigList* list; - ConfigLineEdit* lineEdit; - - static ConfigView* viewList; - ConfigView* nextView; - - static QAction *showNormalAction; - static QAction *showAllAction; - static QAction *showPromptAction; + ConfigItemDelegate(QObject *parent = nullptr) + : QStyledItemDelegate(parent) {} + QWidget *createEditor(QWidget *parent, + const QStyleOptionViewItem &option, + const QModelIndex &index) const override; + void setModelData(QWidget *editor, QAbstractItemModel *model, + const QModelIndex &index) const override; }; class ConfigInfoView : public QTextBrowser { Q_OBJECT typedef class QTextBrowser Parent; + QMenu *contextMenu; public: ConfigInfoView(QWidget* parent, const char *name = 0); bool showDebug(void) const { return _showDebug; } @@ -249,6 +195,7 @@ public slots: void setInfo(struct menu *menu); void saveSettings(void); void setShowDebug(bool); + void clicked (const QUrl &url); signals: void showDebugChanged(bool); @@ -260,8 +207,7 @@ protected: QString debug_info(struct symbol *sym); static QString print_filter(const QString &str); static void expr_print_help(void *data, struct symbol *sym, const char *str); - QMenu *createStandardContextMenu(const QPoint & pos); - void contextMenuEvent(QContextMenuEvent *e); + void contextMenuEvent(QContextMenuEvent *event); struct symbol *sym; struct menu *_menu; @@ -272,7 +218,7 @@ class ConfigSearchWindow : public QDialog { Q_OBJECT typedef class QDialog Parent; public: - ConfigSearchWindow(ConfigMainWindow* parent, const char *name = 0); + ConfigSearchWindow(ConfigMainWindow *parent); public slots: void saveSettings(void); @@ -282,7 +228,7 @@ protected: QLineEdit* editField; QPushButton* searchButton; QSplitter* split; - ConfigView* list; + ConfigList *list; ConfigInfoView* info; struct symbol **result; @@ -291,12 +237,14 @@ protected: class ConfigMainWindow : public QMainWindow { Q_OBJECT + char *configname; static QAction *saveAction; static void conf_changed(void); public: ConfigMainWindow(void); public slots: void changeMenu(struct menu *); + void changeItens(struct menu *); void setMenuLink(struct menu *); void listFocusChanged(void); void goBack(void); @@ -315,12 +263,9 @@ protected: void closeEvent(QCloseEvent *e); ConfigSearchWindow *searchWindow; - ConfigView *menuView; ConfigList *menuList; - ConfigView *configView; ConfigList *configList; ConfigInfoView *helpText; - QToolBar *toolBar; QAction *backAction; QAction *singleViewAction; QAction *splitViewAction; diff --git a/support/kconfig/streamline_config.pl b/support/kconfig/streamline_config.pl index a2e83ab17d..d51cd7ac15 100755 --- a/support/kconfig/streamline_config.pl +++ b/support/kconfig/streamline_config.pl @@ -1,7 +1,7 @@ #!/usr/bin/env perl +# SPDX-License-Identifier: GPL-2.0 # # Copyright 2005-2009 - Steven Rostedt -# Licensed under the terms of the GNU GPL License version 2 # # It's simple enough to figure out how this works. # If not, then you can ask me at stripconfig at goodmis.org @@ -21,7 +21,7 @@ # 1. Boot up the kernel that you want to stream line the config on. # 2. Change directory to the directory holding the source of the # kernel that you just booted. -# 3. Copy the configuraton file to this directory as .config +# 3. Copy the configuration file to this directory as .config # 4. Have all your devices that you need modules for connected and # operational (make sure that their corresponding modules are loaded) # 5. Run this script redirecting the output to some other file @@ -56,8 +56,6 @@ sub dprint { print STDERR @_; } -my $config = ".config"; - my $uname = `uname -r`; chomp $uname; @@ -145,6 +143,7 @@ my %depends; my %selects; my %prompts; my %objects; +my %config2kfile; my $var; my $iflevel = 0; my @ifdeps; @@ -165,13 +164,13 @@ sub read_kconfig { my $last_source = ""; # Check for any environment variables used - while ($source =~ /\$(\w+)/ && $last_source ne $source) { + while ($source =~ /\$\((\w+)\)/ && $last_source ne $source) { my $env = $1; $last_source = $source; - $source =~ s/\$$env/$ENV{$env}/; + $source =~ s/\$\($env\)/$ENV{$env}/; } - open(my $kinfile, '<', $source) || die "Can't open $kconfig"; + open(my $kinfile, '<', $source) || die "Can't open $source"; while (<$kinfile>) { chomp; @@ -203,6 +202,7 @@ sub read_kconfig { if (/^\s*(menu)?config\s+(\S+)\s*$/) { $state = "NEW"; $config = $2; + $config2kfile{"CONFIG_$config"} = $kconfig; # Add depends for 'if' nesting for (my $i = 0; $i < $iflevel; $i++) { @@ -317,7 +317,7 @@ foreach my $makefile (@makefiles) { $_ = convert_vars($_, %make_vars); # collect objects after obj-$(CONFIG_FOO_BAR) - if (/obj-\$\((CONFIG_[^\)]*)\)\s*[+:]?=\s*(.*)/) { + if (/obj-\$[({](CONFIG_[^})]*)[)}]\s*[+:]?=\s*(.*)/) { $var = $1; $objs = $2; @@ -374,7 +374,7 @@ if (defined($lsmod_file)) { $lsmod = "$dir/lsmod"; last; } -} + } if (!defined($lsmod)) { # try just the path $lsmod = "lsmod"; @@ -481,7 +481,7 @@ sub parse_config_depends # The idea is we look at all the configs that select it. If one # is already in our list of configs to enable, then there's nothing # else to do. If there isn't, we pick the first config that was -# enabled in the orignal config and use that. +# enabled in the original config and use that. sub parse_config_selects { my ($config, $p) = @_; @@ -593,6 +593,23 @@ while ($repeat) { } my %setconfigs; +my @preserved_kconfigs; +if (defined($ENV{'LMC_KEEP'})) { + @preserved_kconfigs = split(/:/,$ENV{LMC_KEEP}); +} + +sub in_preserved_kconfigs { + my $kconfig = $config2kfile{$_[0]}; + if (!defined($kconfig)) { + return 0; + } + foreach my $excl (@preserved_kconfigs) { + if($kconfig =~ /^$excl/) { + return 1; + } + } + return 0; +} # Finally, read the .config file and turn off any module enabled that # we could not find a reason to keep enabled. @@ -612,47 +629,52 @@ foreach my $line (@config_file) { } if (/CONFIG_MODULE_SIG_KEY="(.+)"/) { - my $orig_cert = $1; - my $default_cert = "certs/signing_key.pem"; - - # Check that the logic in this script still matches the one in Kconfig - if (!defined($depends{"MODULE_SIG_KEY"}) || - $depends{"MODULE_SIG_KEY"} !~ /"\Q$default_cert\E"/) { - print STDERR "WARNING: MODULE_SIG_KEY assertion failure, ", - "update needed to ", __FILE__, " line ", __LINE__, "\n"; - print; - } elsif ($orig_cert ne $default_cert && ! -f $orig_cert) { - print STDERR "Module signature verification enabled but ", - "module signing key \"$orig_cert\" not found. Resetting ", - "signing key to default value.\n"; - print "CONFIG_MODULE_SIG_KEY=\"$default_cert\"\n"; - } else { - print; - } - next; + my $orig_cert = $1; + my $default_cert = "certs/signing_key.pem"; + + # Check that the logic in this script still matches the one in Kconfig + if (!defined($depends{"MODULE_SIG_KEY"}) || + $depends{"MODULE_SIG_KEY"} !~ /"\Q$default_cert\E"/) { + print STDERR "WARNING: MODULE_SIG_KEY assertion failure, ", + "update needed to ", __FILE__, " line ", __LINE__, "\n"; + print; + } elsif ($orig_cert ne $default_cert && ! -f $orig_cert) { + print STDERR "Module signature verification enabled but ", + "module signing key \"$orig_cert\" not found. Resetting ", + "signing key to default value.\n"; + print "CONFIG_MODULE_SIG_KEY=\"$default_cert\"\n"; + } else { + print; + } + next; } if (/CONFIG_SYSTEM_TRUSTED_KEYS="(.+)"/) { - my $orig_keys = $1; - - if (! -f $orig_keys) { - print STDERR "System keyring enabled but keys \"$orig_keys\" ", - "not found. Resetting keys to default value.\n"; - print "CONFIG_SYSTEM_TRUSTED_KEYS=\"\"\n"; - } else { - print; - } - next; + my $orig_keys = $1; + + if (! -f $orig_keys) { + print STDERR "System keyring enabled but keys \"$orig_keys\" ", + "not found. Resetting keys to default value.\n"; + print "CONFIG_SYSTEM_TRUSTED_KEYS=\"\"\n"; + } else { + print; + } + next; } if (/^(CONFIG.*)=(m|y)/) { + if (in_preserved_kconfigs($1)) { + dprint "Preserve config $1"; + print; + next; + } if (defined($configs{$1})) { if ($localyesconfig) { - $setconfigs{$1} = 'y'; + $setconfigs{$1} = 'y'; print "$1=y\n"; next; } else { - $setconfigs{$1} = $2; + $setconfigs{$1} = $2; } } elsif ($2 eq "m") { print "# $1 is not set\n"; @@ -680,3 +702,5 @@ foreach my $module (keys(%modules)) { print STDERR "\n"; } } + +# vim: softtabstop=4 diff --git a/support/kconfig/symbol.c b/support/kconfig/symbol.c index f0b2e3b310..81fe1884ef 100644 --- a/support/kconfig/symbol.c +++ b/support/kconfig/symbol.c @@ -1,64 +1,41 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ +#include #include #include #include #include -#include +#include "internal.h" #include "lkc.h" struct symbol symbol_yes = { .name = "y", .curr = { "y", yes }, + .menus = LIST_HEAD_INIT(symbol_yes.menus), .flags = SYMBOL_CONST|SYMBOL_VALID, -}, symbol_mod = { +}; + +struct symbol symbol_mod = { .name = "m", .curr = { "m", mod }, + .menus = LIST_HEAD_INIT(symbol_mod.menus), .flags = SYMBOL_CONST|SYMBOL_VALID, -}, symbol_no = { +}; + +struct symbol symbol_no = { .name = "n", .curr = { "n", no }, + .menus = LIST_HEAD_INIT(symbol_no.menus), .flags = SYMBOL_CONST|SYMBOL_VALID, -}, symbol_empty = { - .name = "", - .curr = { "", no }, - .flags = SYMBOL_VALID, }; -struct symbol *sym_defconfig_list; struct symbol *modules_sym; -tristate modules_val; - -struct expr *sym_env_list; - -static void sym_add_default(struct symbol *sym, const char *def) -{ - struct property *prop = prop_alloc(P_DEFAULT, sym); - - prop->expr = expr_alloc_symbol(sym_lookup(def, SYMBOL_CONST)); -} - -void sym_init(void) -{ - struct symbol *sym; - struct utsname uts; - static bool inited = false; - - if (inited) - return; - inited = true; - - uname(&uts); - - sym = sym_lookup("UNAME_RELEASE", 0); - sym->type = S_STRING; - sym->flags |= SYMBOL_AUTO; - sym_add_default(sym, uts.release); -} +static tristate modules_val; +static int sym_warnings; enum symbol_type sym_get_type(struct symbol *sym) { @@ -88,8 +65,6 @@ const char *sym_type_name(enum symbol_type type) return "string"; case S_UNKNOWN: return "unknown"; - case S_OTHER: - break; } return "???"; } @@ -103,15 +78,6 @@ struct property *sym_get_choice_prop(struct symbol *sym) return NULL; } -struct property *sym_get_env_prop(struct symbol *sym) -{ - struct property *prop; - - for_all_properties(sym, prop, P_ENV) - return prop; - return NULL; -} - static struct property *sym_get_default_prop(struct symbol *sym) { struct property *prop; @@ -124,7 +90,7 @@ static struct property *sym_get_default_prop(struct symbol *sym) return NULL; } -static struct property *sym_get_range_prop(struct symbol *sym) +struct property *sym_get_range_prop(struct symbol *sym) { struct property *prop; @@ -155,9 +121,9 @@ static long long sym_get_range_val(struct symbol *sym, int base) static void sym_validate_range(struct symbol *sym) { struct property *prop; + struct symbol *range_sym; int base; long long val, val2; - char str[64]; switch (sym->type) { case S_INT: @@ -173,17 +139,15 @@ static void sym_validate_range(struct symbol *sym) if (!prop) return; val = strtoll(sym->curr.val, NULL, base); - val2 = sym_get_range_val(prop->expr->left.sym, base); + range_sym = prop->expr->left.sym; + val2 = sym_get_range_val(range_sym, base); if (val >= val2) { - val2 = sym_get_range_val(prop->expr->right.sym, base); + range_sym = prop->expr->right.sym; + val2 = sym_get_range_val(range_sym, base); if (val <= val2) return; } - if (sym->type == S_INT) - sprintf(str, "%lld", val2); - else - sprintf(str, "0x%llx", val2); - sym->curr.val = xstrdup(str); + sym->curr.val = range_sym->curr.val; } static void sym_set_changed(struct symbol *sym) @@ -200,9 +164,8 @@ static void sym_set_changed(struct symbol *sym) static void sym_set_all_changed(void) { struct symbol *sym; - int i; - for_all_symbols(i, sym) + for_all_symbols(sym) sym_set_changed(sym); } @@ -259,7 +222,7 @@ static void sym_calc_visibility(struct symbol *sym) sym_set_changed(sym); } tri = no; - if (sym->implied.expr && sym->dir_dep.tri != no) + if (sym->implied.expr) tri = expr_calc_value(sym->implied.expr); if (tri == mod && sym_get_type(sym) == S_BOOLEAN) tri = yes; @@ -352,6 +315,14 @@ static void sym_warn_unmet_dep(struct symbol *sym) " Selected by [m]:\n"); fputs(str_get(&gs), stderr); + sym_warnings++; +} + +bool sym_dep_errors(void) +{ + if (sym_warnings) + return getenv("KCONFIG_WERROR"); + return false; } void sym_calc_value(struct symbol *sym) @@ -377,15 +348,21 @@ void sym_calc_value(struct symbol *sym) oldval = sym->curr; + newval.tri = no; + switch (sym->type) { case S_INT: + newval.val = "0"; + break; case S_HEX: + newval.val = "0x0"; + break; case S_STRING: - newval = symbol_empty.curr; + newval.val = ""; break; case S_BOOLEAN: case S_TRISTATE: - newval = symbol_no.curr; + newval.val = "n"; break; default: sym->curr.val = sym->name; @@ -432,6 +409,8 @@ void sym_calc_value(struct symbol *sym) if (sym->implied.tri != no) { sym->flags |= SYMBOL_WRITE; newval.tri = EXPR_OR(newval.tri, sym->implied.tri); + newval.tri = EXPR_AND(newval.tri, + sym->dir_dep.tri); } } calc_newval: @@ -439,8 +418,7 @@ void sym_calc_value(struct symbol *sym) sym_warn_unmet_dep(sym); newval.tri = EXPR_OR(newval.tri, sym->rev_dep.tri); } - if (newval.tri == mod && - (sym_get_type(sym) == S_BOOLEAN || sym->implied.tri == yes)) + if (newval.tri == mod && sym_get_type(sym) == S_BOOLEAN) newval.tri = yes; break; case S_STRING: @@ -490,7 +468,7 @@ void sym_calc_value(struct symbol *sym) } } - if (sym->flags & SYMBOL_AUTO) + if (sym->flags & SYMBOL_NO_WRITE) sym->flags &= ~SYMBOL_WRITE; if (sym->flags & SYMBOL_NEED_SET_CHOICE_VALUES) @@ -500,11 +478,10 @@ void sym_calc_value(struct symbol *sym) void sym_clear_all_valid(void) { struct symbol *sym; - int i; - for_all_symbols(i, sym) + for_all_symbols(sym) sym->flags &= ~SYMBOL_VALID; - sym_add_change_count(1); + conf_set_changed(true); sym_calc_value(modules_sym); } @@ -522,8 +499,6 @@ bool sym_tristate_within_range(struct symbol *sym, tristate val) return false; if (sym->visible <= sym->rev_dep.tri) return false; - if (sym->implied.tri == yes && val == mod) - return false; if (sym_is_choice_value(sym) && sym->visible == yes) return val == yes; return val >= sym->rev_dep.tri && val <= sym->visible; @@ -733,13 +708,12 @@ const char *sym_get_string_default(struct symbol *sym) { struct property *prop; struct symbol *ds; - const char *str; + const char *str = ""; tristate val; sym_calc_visibility(sym); sym_calc_value(modules_sym); val = symbol_no.curr.tri; - str = symbol_empty.curr.val; /* If symbol has a default value look it up */ prop = sym_get_default_prop(sym); @@ -789,15 +763,17 @@ const char *sym_get_string_default(struct symbol *sym) case yes: return "y"; } case S_INT: + if (!str[0]) + str = "0"; + break; case S_HEX: - return str; - case S_STRING: - return str; - case S_OTHER: - case S_UNKNOWN: + if (!str[0]) + str = "0x0"; + break; + default: break; } - return ""; + return str; } const char *sym_get_string_value(struct symbol *sym) @@ -824,19 +800,12 @@ const char *sym_get_string_value(struct symbol *sym) return (const char *)sym->curr.val; } -bool sym_is_changable(struct symbol *sym) +bool sym_is_changeable(struct symbol *sym) { return sym->visible > sym->rev_dep.tri; } -static unsigned strhash(const char *s) -{ - /* fnv32 hash */ - unsigned hash = 2166136261U; - for (; *s; s++) - hash = (hash ^ *s) * 0x01000193; - return hash; -} +HASHTABLE_DEFINE(sym_hashtable, SYMBOL_HASHSIZE); struct symbol *sym_lookup(const char *name, int flags) { @@ -852,9 +821,9 @@ struct symbol *sym_lookup(const char *name, int flags) case 'n': return &symbol_no; } } - hash = strhash(name) % SYMBOL_HASHSIZE; + hash = strhash(name); - for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) { + hash_for_each_possible(sym_hashtable, symbol, node, hash) { if (symbol->name && !strcmp(symbol->name, name) && (flags ? symbol->flags & flags @@ -871,10 +840,10 @@ struct symbol *sym_lookup(const char *name, int flags) memset(symbol, 0, sizeof(*symbol)); symbol->name = new_name; symbol->type = S_UNKNOWN; - symbol->flags |= flags; + symbol->flags = flags; + INIT_LIST_HEAD(&symbol->menus); - symbol->next = symbol_hash[hash]; - symbol_hash[hash] = symbol; + hash_add(sym_hashtable, &symbol->node, hash); return symbol; } @@ -894,9 +863,9 @@ struct symbol *sym_find(const char *name) case 'n': return &symbol_no; } } - hash = strhash(name) % SYMBOL_HASHSIZE; + hash = strhash(name); - for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) { + hash_for_each_possible(sym_hashtable, symbol, node, hash) { if (symbol->name && !strcmp(symbol->name, name) && !(symbol->flags & SYMBOL_CONST)) @@ -906,102 +875,6 @@ struct symbol *sym_find(const char *name) return symbol; } -/* - * Expand symbol's names embedded in the string given in argument. Symbols' - * name to be expanded shall be prefixed by a '$'. Unknown symbol expands to - * the empty string. - */ -char *sym_expand_string_value(const char *in) -{ - const char *src; - char *res; - size_t reslen; - - /* - * Note: 'in' might come from a token that's about to be - * freed, so make sure to always allocate a new string - */ - reslen = strlen(in) + 1; - res = xmalloc(reslen); - res[0] = '\0'; - - while ((src = strchr(in, '$'))) { - char *p, name[SYMBOL_MAXLENGTH]; - const char *symval = ""; - struct symbol *sym; - size_t newlen; - - strncat(res, in, src - in); - src++; - - p = name; - while (isalnum(*src) || *src == '_') - *p++ = *src++; - *p = '\0'; - - sym = sym_find(name); - if (sym != NULL) { - sym_calc_value(sym); - symval = sym_get_string_value(sym); - } - - newlen = strlen(res) + strlen(symval) + strlen(src) + 1; - if (newlen > reslen) { - reslen = newlen; - res = xrealloc(res, reslen); - } - - strcat(res, symval); - in = src; - } - strcat(res, in); - - return res; -} - -const char *sym_escape_string_value(const char *in) -{ - const char *p; - size_t reslen; - char *res; - size_t l; - - reslen = strlen(in) + strlen("\"\"") + 1; - - p = in; - for (;;) { - l = strcspn(p, "\"\\"); - p += l; - - if (p[0] == '\0') - break; - - reslen++; - p++; - } - - res = xmalloc(reslen); - res[0] = '\0'; - - strcat(res, "\""); - - p = in; - for (;;) { - l = strcspn(p, "\"\\"); - strncat(res, p, l); - p += l; - - if (p[0] == '\0') - break; - - strcat(res, "\\"); - strncat(res, p++, 1); - } - - strcat(res, "\""); - return res; -} - struct sym_match { struct symbol *sym; off_t so, eo; @@ -1052,7 +925,7 @@ struct symbol **sym_re_search(const char *pattern) if (regcomp(&re, pattern, REG_EXTENDED|REG_ICASE)) return NULL; - for_all_symbols(i, sym) { + for_all_symbols(sym) { if (sym->flags & SYMBOL_CONST || !sym->name) continue; if (regexec(&re, sym->name, 1, match, 0)) @@ -1100,7 +973,7 @@ static struct dep_stack { struct dep_stack *prev, *next; struct symbol *sym; struct property *prop; - struct expr *expr; + struct expr **expr; } *check_top; static void dep_stack_insert(struct dep_stack *stack, struct symbol *sym) @@ -1163,39 +1036,50 @@ static void sym_check_print_recursive(struct symbol *last_sym) } if (stack->sym == last_sym) fprintf(stderr, "%s:%d:error: recursive dependency detected!\n", - prop->file->name, prop->lineno); + prop->filename, prop->lineno); - if (stack->expr) { - fprintf(stderr, "%s:%d:\tsymbol %s %s value contains %s\n", - prop->file->name, prop->lineno, + if (sym_is_choice(sym)) { + fprintf(stderr, "%s:%d:\tchoice %s contains symbol %s\n", + menu->filename, menu->lineno, + sym->name ? sym->name : "", + next_sym->name ? next_sym->name : ""); + } else if (sym_is_choice_value(sym)) { + fprintf(stderr, "%s:%d:\tsymbol %s is part of choice %s\n", + menu->filename, menu->lineno, sym->name ? sym->name : "", - prop_get_type_name(prop->type), next_sym->name ? next_sym->name : ""); - } else if (stack->prop) { + } else if (stack->expr == &sym->dir_dep.expr) { fprintf(stderr, "%s:%d:\tsymbol %s depends on %s\n", - prop->file->name, prop->lineno, + prop->filename, prop->lineno, sym->name ? sym->name : "", next_sym->name ? next_sym->name : ""); - } else if (sym_is_choice(sym)) { - fprintf(stderr, "%s:%d:\tchoice %s contains symbol %s\n", - menu->file->name, menu->lineno, + } else if (stack->expr == &sym->rev_dep.expr) { + fprintf(stderr, "%s:%d:\tsymbol %s is selected by %s\n", + prop->filename, prop->lineno, sym->name ? sym->name : "", next_sym->name ? next_sym->name : ""); - } else if (sym_is_choice_value(sym)) { - fprintf(stderr, "%s:%d:\tsymbol %s is part of choice %s\n", - menu->file->name, menu->lineno, + } else if (stack->expr == &sym->implied.expr) { + fprintf(stderr, "%s:%d:\tsymbol %s is implied by %s\n", + prop->filename, prop->lineno, + sym->name ? sym->name : "", + next_sym->name ? next_sym->name : ""); + } else if (stack->expr) { + fprintf(stderr, "%s:%d:\tsymbol %s %s value contains %s\n", + prop->filename, prop->lineno, sym->name ? sym->name : "", + prop_get_type_name(prop->type), next_sym->name ? next_sym->name : ""); } else { - fprintf(stderr, "%s:%d:\tsymbol %s is selected by %s\n", - prop->file->name, prop->lineno, + fprintf(stderr, "%s:%d:\tsymbol %s %s is visible depending on %s\n", + prop->filename, prop->lineno, sym->name ? sym->name : "", + prop_get_type_name(prop->type), next_sym->name ? next_sym->name : ""); } } fprintf(stderr, - "For a resolution refer to Documentation/kbuild/kconfig-language.txt\n" + "For a resolution refer to Documentation/kbuild/kconfig-language.rst\n" "subsection \"Kconfig recursive dependency limitations\"\n" "\n"); @@ -1246,12 +1130,26 @@ static struct symbol *sym_check_sym_deps(struct symbol *sym) dep_stack_insert(&stack, sym); + stack.expr = &sym->dir_dep.expr; + sym2 = sym_check_expr_deps(sym->dir_dep.expr); + if (sym2) + goto out; + + stack.expr = &sym->rev_dep.expr; sym2 = sym_check_expr_deps(sym->rev_dep.expr); if (sym2) goto out; + stack.expr = &sym->implied.expr; + sym2 = sym_check_expr_deps(sym->implied.expr); + if (sym2) + goto out; + + stack.expr = NULL; + for (prop = sym->prop; prop; prop = prop->next) { - if (prop->type == P_CHOICE || prop->type == P_SELECT) + if (prop->type == P_CHOICE || prop->type == P_SELECT || + prop->type == P_IMPLY) continue; stack.prop = prop; sym2 = sym_check_expr_deps(prop->visible.expr); @@ -1259,7 +1157,7 @@ static struct symbol *sym_check_sym_deps(struct symbol *sym) break; if (prop->type != P_DEFAULT || sym_is_choice(sym)) continue; - stack.expr = prop->expr; + stack.expr = &prop->expr; sym2 = sym_check_expr_deps(prop->expr); if (sym2) break; @@ -1337,34 +1235,9 @@ struct symbol *sym_check_deps(struct symbol *sym) sym->flags &= ~SYMBOL_CHECK; } - if (sym2 && sym2 == sym) - sym2 = NULL; - return sym2; } -struct property *prop_alloc(enum prop_type type, struct symbol *sym) -{ - struct property *prop; - struct property **propp; - - prop = xmalloc(sizeof(*prop)); - memset(prop, 0, sizeof(*prop)); - prop->type = type; - prop->sym = sym; - prop->file = current_file; - prop->lineno = zconf_lineno(); - - /* append property to the prop list of symbol */ - if (sym) { - for (propp = &sym->prop; *propp; propp = &(*propp)->next) - ; - *propp = prop; - } - - return prop; -} - struct symbol *prop_get_symbol(struct property *prop) { if (prop->expr && (prop->expr->type == E_SYMBOL || @@ -1378,8 +1251,6 @@ const char *prop_get_type_name(enum prop_type type) switch (type) { case P_PROMPT: return "prompt"; - case P_ENV: - return "env"; case P_COMMENT: return "comment"; case P_MENU: @@ -1401,32 +1272,3 @@ const char *prop_get_type_name(enum prop_type type) } return "unknown"; } - -static void prop_add_env(const char *env) -{ - struct symbol *sym, *sym2; - struct property *prop; - char *p; - - sym = current_entry->sym; - sym->flags |= SYMBOL_AUTO; - for_all_properties(sym, prop, P_ENV) { - sym2 = prop_get_symbol(prop); - if (strcmp(sym2->name, env)) - menu_warn(current_entry, "redefining environment symbol from %s", - sym2->name); - return; - } - - prop = prop_alloc(P_ENV, sym); - prop->expr = expr_alloc_symbol(sym_lookup(env, SYMBOL_CONST)); - - sym_env_list = expr_alloc_one(E_LIST, sym_env_list); - sym_env_list->right.sym = sym; - - p = getenv(env); - if (p) - sym_add_default(sym, p); - else - menu_warn(current_entry, "environment variable %s undefined", env); -} diff --git a/support/kconfig/util.c b/support/kconfig/util.c index 8665f5bb89..439c131b42 100644 --- a/support/kconfig/util.c +++ b/support/kconfig/util.c @@ -1,93 +1,57 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002-2005 Roman Zippel * Copyright (C) 2002-2005 Sam Ravnborg - * - * Released under the terms of the GNU GPL v2.0. */ #include #include #include + +#include "hashtable.h" #include "lkc.h" +unsigned int strhash(const char *s) +{ + /* fnv32 hash */ + unsigned int hash = 2166136261U; + + for (; *s; s++) + hash = (hash ^ *s) * 0x01000193; + return hash; +} + +/* hash table of all parsed Kconfig files */ +static HASHTABLE_DEFINE(file_hashtable, 1U << 11); + +struct file { + struct hlist_node node; + char name[]; +}; + /* file already present in list? If not add it */ -struct file *file_lookup(const char *name) +const char *file_lookup(const char *name) { struct file *file; - char *file_name = sym_expand_string_value(name); + size_t len; + int hash = strhash(name); - for (file = file_list; file; file = file->next) { - if (!strcmp(name, file->name)) { - free(file_name); - return file; - } - } + hash_for_each_possible(file_hashtable, file, node, hash) + if (!strcmp(name, file->name)) + return file->name; - file = xmalloc(sizeof(*file)); + len = strlen(name); + file = xmalloc(sizeof(*file) + len + 1); memset(file, 0, sizeof(*file)); - file->name = file_name; - file->next = file_list; - file_list = file; - return file; -} + memcpy(file->name, name, len); + file->name[len] = '\0'; -/* write a dependency file as used by kbuild to track dependencies */ -int file_write_dep(const char *name) -{ - char *str; - char buf[PATH_MAX+20], buf2[PATH_MAX+1], dir[PATH_MAX+1]; - struct symbol *sym, *env_sym; - struct expr *e; - struct file *file; - FILE *out; - - if (!name) - name = ".kconfig.d"; - - strcpy(dir, conf_get_configname()); - str = strrchr(dir, '/'); - if (str) - str[1] = 0; - else - dir[0] = 0; - - sprintf(buf, "%s..config.tmp", dir); - out = fopen(buf, "w"); - if (!out) - return 1; - fprintf(out, "deps_config := \\\n"); - for (file = file_list; file; file = file->next) { - if (file->next) - fprintf(out, "\t%s \\\n", file->name); - else - fprintf(out, "\t%s\n", file->name); - } - fprintf(out, "\n%s: \\\n" - "\t$(deps_config)\n\n", conf_get_autoconfig_name()); - - expr_list_for_each_sym(sym_env_list, e, sym) { - struct property *prop; - const char *value; - - prop = sym_get_env_prop(sym); - env_sym = prop_get_symbol(prop); - if (!env_sym) - continue; - value = getenv(env_sym->name); - if (!value) - value = ""; - fprintf(out, "ifneq \"$(%s)\" \"%s\"\n", env_sym->name, value); - fprintf(out, "%s: FORCE\n", conf_get_autoconfig_name()); - fprintf(out, "endif\n"); - } + hash_add(file_hashtable, &file->node, hash); - fprintf(out, "\n$(deps_config): ;\n"); - fclose(out); - sprintf(buf2, "%s%s", dir, name); - rename(buf, buf2); - return 0; -} + str_printf(&autoconf_cmd, "\t%s \\\n", name); + return file->name; +} /* Allocate initial growable string */ struct gstr str_new(void) @@ -103,8 +67,7 @@ struct gstr str_new(void) /* Free storage for growable string */ void str_free(struct gstr *gs) { - if (gs->s) - free(gs->s); + free(gs->s); gs->s = NULL; gs->len = 0; } @@ -135,7 +98,7 @@ void str_printf(struct gstr *gs, const char *fmt, ...) } /* Retrieve value of growable string */ -const char *str_get(struct gstr *gs) +char *str_get(struct gstr *gs) { return gs->s; } @@ -177,3 +140,14 @@ char *xstrdup(const char *s) fprintf(stderr, "Out of memory.\n"); exit(1); } + +char *xstrndup(const char *s, size_t n) +{ + char *p; + + p = strndup(s, n); + if (p) + return p; + fprintf(stderr, "Out of memory.\n"); + exit(1); +} diff --git a/support/kconfig/zconf.l b/support/kconfig/zconf.l deleted file mode 100644 index 045093d827..0000000000 --- a/support/kconfig/zconf.l +++ /dev/null @@ -1,372 +0,0 @@ -%option nostdinit noyywrap never-interactive full ecs -%option 8bit nodefault yylineno -%option noinput -%x COMMAND HELP STRING PARAM -%{ -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include -#include -#include - -#include "lkc.h" - -#define START_STRSIZE 16 - -static struct { - struct file *file; - int lineno; -} current_pos; - -static char *text; -static int text_size, text_asize; - -struct buffer { - struct buffer *parent; - YY_BUFFER_STATE state; -}; - -struct buffer *current_buf; - -static int last_ts, first_ts; - -static void zconf_endhelp(void); -static void zconf_endfile(void); - -static void new_string(void) -{ - text = xmalloc(START_STRSIZE); - text_asize = START_STRSIZE; - text_size = 0; - *text = 0; -} - -static void append_string(const char *str, int size) -{ - int new_size = text_size + size + 1; - if (new_size > text_asize) { - new_size += START_STRSIZE - 1; - new_size &= -START_STRSIZE; - text = xrealloc(text, new_size); - text_asize = new_size; - } - memcpy(text + text_size, str, size); - text_size += size; - text[text_size] = 0; -} - -static void alloc_string(const char *str, int size) -{ - text = xmalloc(size + 1); - memcpy(text, str, size); - text[size] = 0; -} - -static void warn_ignored_character(char chr) -{ - fprintf(stderr, - "%s:%d:warning: ignoring unsupported character '%c'\n", - zconf_curname(), zconf_lineno(), chr); -} -%} - -n [A-Za-z0-9_-] - -%% - int str = 0; - int ts, i; - -[ \t]*#.*\n | -[ \t]*\n { - return T_EOL; -} -[ \t]*#.* - - -[ \t]+ { - BEGIN(COMMAND); -} - -. { - unput(yytext[0]); - BEGIN(COMMAND); -} - - -{ - {n}+ { - const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); - BEGIN(PARAM); - current_pos.file = current_file; - current_pos.lineno = yylineno; - if (id && id->flags & TF_COMMAND) { - yylval.id = id; - return id->token; - } - alloc_string(yytext, yyleng); - yylval.string = text; - return T_WORD; - } - . warn_ignored_character(*yytext); - \n { - BEGIN(INITIAL); - return T_EOL; - } -} - -{ - "&&" return T_AND; - "||" return T_OR; - "(" return T_OPEN_PAREN; - ")" return T_CLOSE_PAREN; - "!" return T_NOT; - "=" return T_EQUAL; - "!=" return T_UNEQUAL; - "<=" return T_LESS_EQUAL; - ">=" return T_GREATER_EQUAL; - "<" return T_LESS; - ">" return T_GREATER; - \"|\' { - str = yytext[0]; - new_string(); - BEGIN(STRING); - } - \n BEGIN(INITIAL); return T_EOL; - ({n}|[/.])+ { - const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); - if (id && id->flags & TF_PARAM) { - yylval.id = id; - return id->token; - } - alloc_string(yytext, yyleng); - yylval.string = text; - return T_WORD; - } - #.* /* comment */ - \\\n ; - [[:blank:]]+ - . warn_ignored_character(*yytext); - <> { - BEGIN(INITIAL); - } -} - -{ - [^'"\\\n]+/\n { - append_string(yytext, yyleng); - yylval.string = text; - return T_WORD_QUOTE; - } - [^'"\\\n]+ { - append_string(yytext, yyleng); - } - \\.?/\n { - append_string(yytext + 1, yyleng - 1); - yylval.string = text; - return T_WORD_QUOTE; - } - \\.? { - append_string(yytext + 1, yyleng - 1); - } - \'|\" { - if (str == yytext[0]) { - BEGIN(PARAM); - yylval.string = text; - return T_WORD_QUOTE; - } else - append_string(yytext, 1); - } - \n { - fprintf(stderr, - "%s:%d:warning: multi-line strings not supported\n", - zconf_curname(), zconf_lineno()); - BEGIN(INITIAL); - return T_EOL; - } - <> { - BEGIN(INITIAL); - } -} - -{ - [ \t]+ { - ts = 0; - for (i = 0; i < yyleng; i++) { - if (yytext[i] == '\t') - ts = (ts & ~7) + 8; - else - ts++; - } - last_ts = ts; - if (first_ts) { - if (ts < first_ts) { - zconf_endhelp(); - return T_HELPTEXT; - } - ts -= first_ts; - while (ts > 8) { - append_string(" ", 8); - ts -= 8; - } - append_string(" ", ts); - } - } - [ \t]*\n/[^ \t\n] { - zconf_endhelp(); - return T_HELPTEXT; - } - [ \t]*\n { - append_string("\n", 1); - } - [^ \t\n].* { - while (yyleng) { - if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t')) - break; - yyleng--; - } - append_string(yytext, yyleng); - if (!first_ts) - first_ts = last_ts; - } - <> { - zconf_endhelp(); - return T_HELPTEXT; - } -} - -<> { - if (current_file) { - zconf_endfile(); - return T_EOL; - } - fclose(yyin); - yyterminate(); -} - -%% -void zconf_starthelp(void) -{ - new_string(); - last_ts = first_ts = 0; - BEGIN(HELP); -} - -static void zconf_endhelp(void) -{ - yylval.string = text; - BEGIN(INITIAL); -} - - -/* - * Try to open specified file with following names: - * ./name - * $(srctree)/name - * The latter is used when srctree is separate from objtree - * when compiling the kernel. - * Return NULL if file is not found. - */ -FILE *zconf_fopen(const char *name) -{ - char *env, fullname[PATH_MAX+1]; - FILE *f; - - f = fopen(name, "r"); - if (!f && name != NULL && name[0] != '/') { - env = getenv(SRCTREE); - if (env) { - sprintf(fullname, "%s/%s", env, name); - f = fopen(fullname, "r"); - } - } - return f; -} - -void zconf_initscan(const char *name) -{ - yyin = zconf_fopen(name); - if (!yyin) { - fprintf(stderr, "can't find file %s\n", name); - exit(1); - } - - current_buf = xmalloc(sizeof(*current_buf)); - memset(current_buf, 0, sizeof(*current_buf)); - - current_file = file_lookup(name); - yylineno = 1; -} - -void zconf_nextfile(const char *name) -{ - struct file *iter; - struct file *file = file_lookup(name); - struct buffer *buf = xmalloc(sizeof(*buf)); - memset(buf, 0, sizeof(*buf)); - - current_buf->state = YY_CURRENT_BUFFER; - yyin = zconf_fopen(file->name); - if (!yyin) { - fprintf(stderr, "%s:%d: can't open file \"%s\"\n", - zconf_curname(), zconf_lineno(), file->name); - exit(1); - } - yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); - buf->parent = current_buf; - current_buf = buf; - - current_file->lineno = yylineno; - file->parent = current_file; - - for (iter = current_file; iter; iter = iter->parent) { - if (!strcmp(iter->name, file->name)) { - fprintf(stderr, - "Recursive inclusion detected.\n" - "Inclusion path:\n" - " current file : %s\n", file->name); - iter = file; - do { - iter = iter->parent; - fprintf(stderr, " included from: %s:%d\n", - iter->name, iter->lineno - 1); - } while (strcmp(iter->name, file->name)); - exit(1); - } - } - - yylineno = 1; - current_file = file; -} - -static void zconf_endfile(void) -{ - struct buffer *parent; - - current_file = current_file->parent; - if (current_file) - yylineno = current_file->lineno; - - parent = current_buf->parent; - if (parent) { - fclose(yyin); - yy_delete_buffer(YY_CURRENT_BUFFER); - yy_switch_to_buffer(parent->state); - } - free(current_buf); - current_buf = parent; -} - -int zconf_lineno(void) -{ - return current_pos.lineno; -} - -const char *zconf_curname(void) -{ - return current_pos.file ? current_pos.file->name : ""; -} diff --git a/support/kconfig/zconf.lex.c_shipped b/support/kconfig/zconf.lex.c_shipped deleted file mode 100644 index 33913d43c7..0000000000 --- a/support/kconfig/zconf.lex.c_shipped +++ /dev/null @@ -1,2500 +0,0 @@ - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 4 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif - -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#ifndef SIZE_MAX -#define SIZE_MAX (~(size_t)0) -#endif - -#endif /* ! C99 */ - -#endif /* ! FLEXINT_H */ - -/* begin standard C++ headers. */ - -/* TODO: this is always defined, so inline it */ -#define yyconst const - -#if defined(__GNUC__) && __GNUC__ >= 3 -#define yynoreturn __attribute__((__noreturn__)) -#else -#define yynoreturn -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an - * integer in range [0..255] for use as an array index. - */ -#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN (yy_start) = 1 + 2 * -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START (((yy_start) - 1) / 2) -#define YYSTATE YY_START -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart( yyin ) -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else -#define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ -#endif - -/* The state buf must be large enough to hold one state per character in the main buffer. - */ -#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -extern int yyleng; - -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - - /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires - * access to the local variable yy_act. Since yyless() is a macro, it would break - * existing scanners that call yyless() from OUTSIDE yylex. - * One obvious solution it to make yy_act a global. I tried that, and saw - * a 5% performance hit in a non-yylineno scanner, because yy_act is - * normally declared as a register variable-- so it is not worth it. - */ - #define YY_LESS_LINENO(n) \ - do { \ - int yyl;\ - for ( yyl = n; yyl < yyleng; ++yyl )\ - if ( yytext[yyl] == '\n' )\ - --yylineno;\ - }while(0) - #define YY_LINENO_REWIND_TO(dst) \ - do {\ - const char *p;\ - for ( p = yy_cp-1; p >= (dst); --p)\ - if ( *p == '\n' )\ - --yylineno;\ - }while(0) - -/* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = (yy_hold_char); \ - YY_RESTORE_YY_MORE_OFFSET \ - (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) -#define unput(c) yyunput( c, (yytext_ptr) ) - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - int yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -/* Stack of input buffers. */ -static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ -static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - * - * Returns the top of the stack, or NULL. - */ -#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ - ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ - : NULL) -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = NULL; -static int yy_init = 0; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart ( FILE *input_file ); -void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); -void yy_delete_buffer ( YY_BUFFER_STATE b ); -void yy_flush_buffer ( YY_BUFFER_STATE b ); -void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); -void yypop_buffer_state ( void ); - -static void yyensure_buffer_stack ( void ); -static void yy_load_buffer_state ( void ); -static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); -#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) - -YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); -YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); - -void *yyalloc ( yy_size_t ); -void *yyrealloc ( void *, yy_size_t ); -void yyfree ( void * ); - -#define yy_new_buffer yy_create_buffer -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! YY_CURRENT_BUFFER ){ \ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } -#define yy_set_bol(at_bol) \ - { \ - if ( ! YY_CURRENT_BUFFER ){\ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) - -/* Begin user sect3 */ - -#define yywrap() (/*CONSTCOND*/1) -#define YY_SKIP_YYWRAP -typedef flex_uint8_t YY_CHAR; - -FILE *yyin = NULL, *yyout = NULL; - -typedef int yy_state_type; - -extern int yylineno; -int yylineno = 1; - -extern char *yytext; -#ifdef yytext_ptr -#undef yytext_ptr -#endif -#define yytext_ptr yytext - -static const flex_int16_t yy_nxt[][18] = - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0 - }, - - { - 11, 12, 13, 14, 12, 12, 15, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12 - }, - - { - 11, 12, 13, 14, 12, 12, 15, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12 - }, - - { - 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, - 16, 18, 16, 16, 16, 16, 16, 16 - }, - - { - 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, - 16, 18, 16, 16, 16, 16, 16, 16 - - }, - - { - 11, 19, 20, 21, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19 - }, - - { - 11, 19, 20, 21, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19 - }, - - { - 11, 22, 22, 23, 22, 24, 22, 22, 24, 22, - 22, 22, 22, 22, 22, 22, 25, 22 - }, - - { - 11, 22, 22, 23, 22, 24, 22, 22, 24, 22, - 22, 22, 22, 22, 22, 22, 25, 22 - }, - - { - 11, 26, 27, 28, 29, 30, 31, 32, 30, 33, - 34, 35, 35, 36, 37, 38, 39, 40 - - }, - - { - 11, 26, 27, 28, 29, 30, 31, 32, 30, 33, - 34, 35, 35, 36, 37, 38, 39, 40 - }, - - { - -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, - -11, -11, -11, -11, -11, -11, -11, -11 - }, - - { - 11, -12, -12, -12, -12, -12, -12, -12, -12, -12, - -12, -12, -12, -12, -12, -12, -12, -12 - }, - - { - 11, -13, 41, 42, -13, -13, 43, -13, -13, -13, - -13, -13, -13, -13, -13, -13, -13, -13 - }, - - { - 11, -14, -14, -14, -14, -14, -14, -14, -14, -14, - -14, -14, -14, -14, -14, -14, -14, -14 - - }, - - { - 11, 44, 44, 45, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44 - }, - - { - 11, -16, -16, -16, -16, -16, -16, -16, -16, -16, - -16, -16, -16, -16, -16, -16, -16, -16 - }, - - { - 11, -17, -17, -17, -17, -17, -17, -17, -17, -17, - -17, -17, -17, -17, -17, -17, -17, -17 - }, - - { - 11, -18, -18, -18, -18, -18, -18, -18, -18, -18, - -18, 46, -18, -18, -18, -18, -18, -18 - }, - - { - 11, 47, 47, -19, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47 - - }, - - { - 11, -20, 48, 49, -20, -20, -20, -20, -20, -20, - -20, -20, -20, -20, -20, -20, -20, -20 - }, - - { - 11, 50, -21, -21, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50 - }, - - { - 11, 51, 51, 52, 51, -22, 51, 51, -22, 51, - 51, 51, 51, 51, 51, 51, -22, 51 - }, - - { - 11, -23, -23, -23, -23, -23, -23, -23, -23, -23, - -23, -23, -23, -23, -23, -23, -23, -23 - }, - - { - 11, -24, -24, -24, -24, -24, -24, -24, -24, -24, - -24, -24, -24, -24, -24, -24, -24, -24 - - }, - - { - 11, 53, 53, 54, 53, 53, 53, 53, 53, 53, - 53, 53, 53, 53, 53, 53, 53, 53 - }, - - { - 11, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26 - }, - - { - 11, -27, 55, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27 - }, - - { - 11, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28 - }, - - { - 11, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, 56, -29, -29, -29 - - }, - - { - 11, -30, -30, -30, -30, -30, -30, -30, -30, -30, - -30, -30, -30, -30, -30, -30, -30, -30 - }, - - { - 11, 57, 57, -31, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57 - }, - - { - 11, -32, -32, -32, -32, -32, -32, 58, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32 - }, - - { - 11, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33 - }, - - { - 11, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34 - - }, - - { - 11, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, 59, 59, -35, -35, -35, -35, -35 - }, - - { - 11, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, 60, -36, -36, -36 - }, - - { - 11, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37 - }, - - { - 11, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, 61, -38, -38, -38 - }, - - { - 11, -39, -39, 62, -39, -39, -39, -39, -39, -39, - -39, -39, -39, -39, -39, -39, -39, -39 - - }, - - { - 11, -40, -40, -40, -40, -40, -40, -40, -40, -40, - -40, -40, -40, -40, -40, -40, -40, 63 - }, - - { - 11, -41, 41, 42, -41, -41, 43, -41, -41, -41, - -41, -41, -41, -41, -41, -41, -41, -41 - }, - - { - 11, -42, -42, -42, -42, -42, -42, -42, -42, -42, - -42, -42, -42, -42, -42, -42, -42, -42 - }, - - { - 11, 44, 44, 45, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44 - }, - - { - 11, 44, 44, 45, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44 - - }, - - { - 11, -45, -45, -45, -45, -45, -45, -45, -45, -45, - -45, -45, -45, -45, -45, -45, -45, -45 - }, - - { - 11, -46, -46, -46, -46, -46, -46, -46, -46, -46, - -46, 46, -46, -46, -46, -46, -46, -46 - }, - - { - 11, 47, 47, -47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47 - }, - - { - 11, -48, 48, 49, -48, -48, -48, -48, -48, -48, - -48, -48, -48, -48, -48, -48, -48, -48 - }, - - { - 11, 50, -49, -49, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50 - - }, - - { - 11, -50, -50, -50, -50, -50, -50, -50, -50, -50, - -50, -50, -50, -50, -50, -50, -50, -50 - }, - - { - 11, 51, 51, 52, 51, -51, 51, 51, -51, 51, - 51, 51, 51, 51, 51, 51, -51, 51 - }, - - { - 11, -52, -52, -52, -52, -52, -52, -52, -52, -52, - -52, -52, -52, -52, -52, -52, -52, -52 - }, - - { - 11, -53, -53, 54, -53, -53, -53, -53, -53, -53, - -53, -53, -53, -53, -53, -53, -53, -53 - }, - - { - 11, -54, -54, -54, -54, -54, -54, -54, -54, -54, - -54, -54, -54, -54, -54, -54, -54, -54 - - }, - - { - 11, -55, 55, -55, -55, -55, -55, -55, -55, -55, - -55, -55, -55, -55, -55, -55, -55, -55 - }, - - { - 11, -56, -56, -56, -56, -56, -56, -56, -56, -56, - -56, -56, -56, -56, -56, -56, -56, -56 - }, - - { - 11, 57, 57, -57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57 - }, - - { - 11, -58, -58, -58, -58, -58, -58, -58, -58, -58, - -58, -58, -58, -58, -58, -58, -58, -58 - }, - - { - 11, -59, -59, -59, -59, -59, -59, -59, -59, -59, - -59, 59, 59, -59, -59, -59, -59, -59 - - }, - - { - 11, -60, -60, -60, -60, -60, -60, -60, -60, -60, - -60, -60, -60, -60, -60, -60, -60, -60 - }, - - { - 11, -61, -61, -61, -61, -61, -61, -61, -61, -61, - -61, -61, -61, -61, -61, -61, -61, -61 - }, - - { - 11, -62, -62, -62, -62, -62, -62, -62, -62, -62, - -62, -62, -62, -62, -62, -62, -62, -62 - }, - - { - 11, -63, -63, -63, -63, -63, -63, -63, -63, -63, - -63, -63, -63, -63, -63, -63, -63, -63 - }, - - } ; - -static yy_state_type yy_get_previous_state ( void ); -static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); -static int yy_get_next_buffer ( void ); -static void yynoreturn yy_fatal_error ( const char* msg ); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - (yytext_ptr) = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - (yy_hold_char) = *yy_cp; \ - *yy_cp = '\0'; \ - (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 37 -#define YY_END_OF_BUFFER 38 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static const flex_int16_t yy_accept[64] = - { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 38, 5, 4, 2, 3, 7, 8, 6, 36, 33, - 35, 28, 32, 31, 30, 26, 25, 21, 13, 20, - 23, 26, 11, 12, 22, 18, 14, 19, 26, 26, - 4, 2, 3, 3, 1, 6, 36, 33, 35, 34, - 28, 27, 30, 29, 25, 15, 23, 9, 22, 16, - 17, 24, 10 - } ; - -static const YY_CHAR yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 4, 5, 6, 1, 1, 7, 8, 9, - 10, 1, 1, 1, 11, 12, 12, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 1, 1, 13, - 14, 15, 1, 1, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 1, 16, 1, 1, 11, 1, 11, 11, 11, 11, - - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 1, 17, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -/* Table of booleans, true if rule could match eol. */ -static const flex_int32_t yy_rule_can_match_eol[38] = - { 0, -1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, }; - -extern int yy_flex_debug; -int yy_flex_debug = 0; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *yytext; -#define YY_NO_INPUT 1 - -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include -#include -#include - -#include "lkc.h" - -#define START_STRSIZE 16 - -static struct { - struct file *file; - int lineno; -} current_pos; - -static char *text; -static int text_size, text_asize; - -struct buffer { - struct buffer *parent; - YY_BUFFER_STATE state; -}; - -struct buffer *current_buf; - -static int last_ts, first_ts; - -static void zconf_endhelp(void); -static void zconf_endfile(void); - -static void new_string(void) -{ - text = xmalloc(START_STRSIZE); - text_asize = START_STRSIZE; - text_size = 0; - *text = 0; -} - -static void append_string(const char *str, int size) -{ - int new_size = text_size + size + 1; - if (new_size > text_asize) { - new_size += START_STRSIZE - 1; - new_size &= -START_STRSIZE; - text = xrealloc(text, new_size); - text_asize = new_size; - } - memcpy(text + text_size, str, size); - text_size += size; - text[text_size] = 0; -} - -static void alloc_string(const char *str, int size) -{ - text = xmalloc(size + 1); - memcpy(text, str, size); - text[size] = 0; -} - -static void warn_ignored_character(char chr) -{ - fprintf(stderr, - "%s:%d:warning: ignoring unsupported character '%c'\n", - zconf_curname(), zconf_lineno(), chr); -} - -#define INITIAL 0 -#define COMMAND 1 -#define HELP 2 -#define STRING 3 -#define PARAM 4 - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include -#endif - -#ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * -#endif - -static int yy_init_globals ( void ); - -/* Accessor methods to globals. - These are made visible to non-reentrant scanners for convenience. */ - -int yylex_destroy ( void ); - -int yyget_debug ( void ); - -void yyset_debug ( int debug_flag ); - -YY_EXTRA_TYPE yyget_extra ( void ); - -void yyset_extra ( YY_EXTRA_TYPE user_defined ); - -FILE *yyget_in ( void ); - -void yyset_in ( FILE * _in_str ); - -FILE *yyget_out ( void ); - -void yyset_out ( FILE * _out_str ); - - int yyget_leng ( void ); - -char *yyget_text ( void ); - -int yyget_lineno ( void ); - -void yyset_lineno ( int _line_number ); - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap ( void ); -#else -extern int yywrap ( void ); -#endif -#endif - -#ifndef YY_NO_UNPUT - - static void yyunput ( int c, char *buf_ptr ); - -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy ( char *, const char *, int ); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen ( const char * ); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput ( void ); -#else -static int input ( void ); -#endif - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else -#define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ -#endif - -/* Copy whatever the last rule matched to the standard output. */ -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - errno=0; \ - while ( (result = (int) read( fileno(yyin), buf, (yy_size_t) max_size )) < 0 ) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(yyin); \ - }\ -\ - -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -#endif - -/* end tables serialization structures and prototypes */ - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int yylex (void); - -#define YY_DECL int yylex (void) -#endif /* !YY_DECL */ - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK /*LINTED*/break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -/** The main scanner function which does all the work. - */ -YY_DECL -{ - yy_state_type yy_current_state; - char *yy_cp, *yy_bp; - int yy_act; - - if ( !(yy_init) ) - { - (yy_init) = 1; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! (yy_start) ) - (yy_start) = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! YY_CURRENT_BUFFER ) { - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); - } - - yy_load_buffer_state( ); - } - - { - - int str = 0; - int ts, i; - - while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ - { - yy_cp = (yy_c_buf_p); - - /* Support of yytext. */ - *yy_cp = (yy_hold_char); - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = (yy_start); -yy_match: - while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 ) - ++yy_cp; - - yy_current_state = -yy_current_state; - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - - YY_DO_BEFORE_ACTION; - - if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) - { - int yyl; - for ( yyl = 0; yyl < yyleng; ++yyl ) - if ( yytext[yyl] == '\n' ) - - yylineno++; -; - } - -do_action: /* This label is used only to access EOF actions. */ - - switch ( yy_act ) - { /* beginning of action switch */ -case 1: -/* rule 1 can match eol */ -case 2: -/* rule 2 can match eol */ -YY_RULE_SETUP -{ - return T_EOL; -} - YY_BREAK -case 3: -YY_RULE_SETUP - - YY_BREAK -case 4: -YY_RULE_SETUP -{ - BEGIN(COMMAND); -} - YY_BREAK -case 5: -YY_RULE_SETUP -{ - unput(yytext[0]); - BEGIN(COMMAND); -} - YY_BREAK - -case 6: -YY_RULE_SETUP -{ - const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); - BEGIN(PARAM); - current_pos.file = current_file; - current_pos.lineno = yylineno; - if (id && id->flags & TF_COMMAND) { - yylval.id = id; - return id->token; - } - alloc_string(yytext, yyleng); - yylval.string = text; - return T_WORD; - } - YY_BREAK -case 7: -YY_RULE_SETUP -warn_ignored_character(*yytext); - YY_BREAK -case 8: -/* rule 8 can match eol */ -YY_RULE_SETUP -{ - BEGIN(INITIAL); - return T_EOL; - } - YY_BREAK - -case 9: -YY_RULE_SETUP -return T_AND; - YY_BREAK -case 10: -YY_RULE_SETUP -return T_OR; - YY_BREAK -case 11: -YY_RULE_SETUP -return T_OPEN_PAREN; - YY_BREAK -case 12: -YY_RULE_SETUP -return T_CLOSE_PAREN; - YY_BREAK -case 13: -YY_RULE_SETUP -return T_NOT; - YY_BREAK -case 14: -YY_RULE_SETUP -return T_EQUAL; - YY_BREAK -case 15: -YY_RULE_SETUP -return T_UNEQUAL; - YY_BREAK -case 16: -YY_RULE_SETUP -return T_LESS_EQUAL; - YY_BREAK -case 17: -YY_RULE_SETUP -return T_GREATER_EQUAL; - YY_BREAK -case 18: -YY_RULE_SETUP -return T_LESS; - YY_BREAK -case 19: -YY_RULE_SETUP -return T_GREATER; - YY_BREAK -case 20: -YY_RULE_SETUP -{ - str = yytext[0]; - new_string(); - BEGIN(STRING); - } - YY_BREAK -case 21: -/* rule 21 can match eol */ -YY_RULE_SETUP -BEGIN(INITIAL); return T_EOL; - YY_BREAK -case 22: -YY_RULE_SETUP -{ - const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); - if (id && id->flags & TF_PARAM) { - yylval.id = id; - return id->token; - } - alloc_string(yytext, yyleng); - yylval.string = text; - return T_WORD; - } - YY_BREAK -case 23: -YY_RULE_SETUP -/* comment */ - YY_BREAK -case 24: -/* rule 24 can match eol */ -YY_RULE_SETUP -; - YY_BREAK -case 25: -YY_RULE_SETUP - - YY_BREAK -case 26: -YY_RULE_SETUP -warn_ignored_character(*yytext); - YY_BREAK -case YY_STATE_EOF(PARAM): -{ - BEGIN(INITIAL); - } - YY_BREAK - -case 27: -/* rule 27 can match eol */ -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ -YY_LINENO_REWIND_TO(yy_cp - 1); -(yy_c_buf_p) = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -{ - append_string(yytext, yyleng); - yylval.string = text; - return T_WORD_QUOTE; - } - YY_BREAK -case 28: -YY_RULE_SETUP -{ - append_string(yytext, yyleng); - } - YY_BREAK -case 29: -/* rule 29 can match eol */ -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ -YY_LINENO_REWIND_TO(yy_cp - 1); -(yy_c_buf_p) = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -{ - append_string(yytext + 1, yyleng - 1); - yylval.string = text; - return T_WORD_QUOTE; - } - YY_BREAK -case 30: -YY_RULE_SETUP -{ - append_string(yytext + 1, yyleng - 1); - } - YY_BREAK -case 31: -YY_RULE_SETUP -{ - if (str == yytext[0]) { - BEGIN(PARAM); - yylval.string = text; - return T_WORD_QUOTE; - } else - append_string(yytext, 1); - } - YY_BREAK -case 32: -/* rule 32 can match eol */ -YY_RULE_SETUP -{ - fprintf(stderr, - "%s:%d:warning: multi-line strings not supported\n", - zconf_curname(), zconf_lineno()); - BEGIN(INITIAL); - return T_EOL; - } - YY_BREAK -case YY_STATE_EOF(STRING): -{ - BEGIN(INITIAL); - } - YY_BREAK - -case 33: -YY_RULE_SETUP -{ - ts = 0; - for (i = 0; i < yyleng; i++) { - if (yytext[i] == '\t') - ts = (ts & ~7) + 8; - else - ts++; - } - last_ts = ts; - if (first_ts) { - if (ts < first_ts) { - zconf_endhelp(); - return T_HELPTEXT; - } - ts -= first_ts; - while (ts > 8) { - append_string(" ", 8); - ts -= 8; - } - append_string(" ", ts); - } - } - YY_BREAK -case 34: -/* rule 34 can match eol */ -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ -YY_LINENO_REWIND_TO(yy_cp - 1); -(yy_c_buf_p) = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -{ - zconf_endhelp(); - return T_HELPTEXT; - } - YY_BREAK -case 35: -/* rule 35 can match eol */ -YY_RULE_SETUP -{ - append_string("\n", 1); - } - YY_BREAK -case 36: -YY_RULE_SETUP -{ - while (yyleng) { - if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t')) - break; - yyleng--; - } - append_string(yytext, yyleng); - if (!first_ts) - first_ts = last_ts; - } - YY_BREAK -case YY_STATE_EOF(HELP): -{ - zconf_endhelp(); - return T_HELPTEXT; - } - YY_BREAK - -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(COMMAND): -{ - if (current_file) { - zconf_endfile(); - return T_EOL; - } - fclose(yyin); - yyterminate(); -} - YY_BREAK -case 37: -YY_RULE_SETUP -YY_FATAL_ERROR( "flex scanner jammed" ); - YY_BREAK - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = (yy_hold_char); - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++(yy_c_buf_p); - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = (yy_c_buf_p); - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_END_OF_FILE: - { - (yy_did_buffer_switch_on_eof) = 0; - - if ( yywrap( ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = - (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - (yy_c_buf_p) = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ - } /* end of user's declarations */ -} /* end of yylex */ - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ -static int yy_get_next_buffer (void) -{ - char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - char *source = (yytext_ptr); - int number_to_move, i; - int ret_val; - - if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; - - else - { - int num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; - - int yy_c_buf_p_offset = - (int) ((yy_c_buf_p) - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - yyrealloc( (void *) b->yy_ch_buf, - (yy_size_t) (b->yy_buf_size + 2) ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = NULL; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - - number_to_move - 1; - - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - if ( (yy_n_chars) == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { - /* Extend the array by 50%, plus the number we really need. */ - int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( - (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); - if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - /* "- 2" to take care of EOB's */ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); - } - - (yy_n_chars) += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; - - (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; -} - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - - static yy_state_type yy_get_previous_state (void) -{ - yy_state_type yy_current_state; - char *yy_cp; - - yy_current_state = (yy_start); - - for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) - { - yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; - } - - return yy_current_state; -} - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) -{ - int yy_is_jam; - - yy_current_state = yy_nxt[yy_current_state][1]; - yy_is_jam = (yy_current_state <= 0); - - return yy_is_jam ? 0 : yy_current_state; -} - -#ifndef YY_NO_UNPUT - - static void yyunput (int c, char * yy_bp ) -{ - char *yy_cp; - - yy_cp = (yy_c_buf_p); - - /* undo effects of setting up yytext */ - *yy_cp = (yy_hold_char); - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - { /* need to shift things up to make room */ - /* +2 for EOB chars. */ - int number_to_move = (yy_n_chars) + 2; - char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; - char *source = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; - - while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = - (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } - - *--yy_cp = (char) c; - - if ( c == '\n' ){ - --yylineno; - } - - (yytext_ptr) = yy_bp; - (yy_hold_char) = *yy_cp; - (yy_c_buf_p) = yy_cp; -} - -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus - static int yyinput (void) -#else - static int input (void) -#endif - -{ - int c; - - *(yy_c_buf_p) = (yy_hold_char); - - if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - /* This was really a NUL. */ - *(yy_c_buf_p) = '\0'; - - else - { /* need more input */ - int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); - ++(yy_c_buf_p); - - switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - yyrestart( yyin ); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { - if ( yywrap( ) ) - return 0; - - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(); -#else - return input(); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = (yytext_ptr) + offset; - break; - } - } - } - - c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ - *(yy_c_buf_p) = '\0'; /* preserve yytext */ - (yy_hold_char) = *++(yy_c_buf_p); - - if ( c == '\n' ) - - yylineno++; -; - - return c; -} -#endif /* ifndef YY_NO_INPUT */ - -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * - * @note This function does not reset the start condition to @c INITIAL . - */ - void yyrestart (FILE * input_file ) -{ - - if ( ! YY_CURRENT_BUFFER ){ - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); - } - - yy_init_buffer( YY_CURRENT_BUFFER, input_file ); - yy_load_buffer_state( ); -} - -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * - */ - void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) -{ - - /* TODO. We should be able to replace this entire function body - * with - * yypop_buffer_state(); - * yypush_buffer_state(new_buffer); - */ - yyensure_buffer_stack (); - if ( YY_CURRENT_BUFFER == new_buffer ) - return; - - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( ); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - (yy_did_buffer_switch_on_eof) = 1; -} - -static void yy_load_buffer_state (void) -{ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - (yy_hold_char) = *(yy_c_buf_p); -} - -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * - * @return the allocated buffer state. - */ - YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) -{ - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer( b, file ); - - return b; -} - -/** Destroy the buffer. - * @param b a buffer created with yy_create_buffer() - * - */ - void yy_delete_buffer (YY_BUFFER_STATE b ) -{ - - if ( ! b ) - return; - - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yyfree( (void *) b->yy_ch_buf ); - - yyfree( (void *) b ); -} - -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a yyrestart() or at EOF. - */ - static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) - -{ - int oerrno = errno; - - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - - /* If b is the current buffer, then yy_init_buffer was _probably_ - * called from yyrestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } - - b->yy_is_interactive = 0; - - errno = oerrno; -} - -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * - */ - void yy_flush_buffer (YY_BUFFER_STATE b ) -{ - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( ); -} - -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * - */ -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) -{ - if (new_buffer == NULL) - return; - - yyensure_buffer_stack(); - - /* This block is copied from yy_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - (yy_buffer_stack_top)++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; -} - -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * - */ -void yypop_buffer_state (void) -{ - if (!YY_CURRENT_BUFFER) - return; - - yy_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - if ((yy_buffer_stack_top) > 0) - --(yy_buffer_stack_top); - - if (YY_CURRENT_BUFFER) { - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; - } -} - -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -static void yyensure_buffer_stack (void) -{ - yy_size_t num_to_alloc; - - if (!(yy_buffer_stack)) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ - (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - - memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - (yy_buffer_stack_max) = num_to_alloc; - (yy_buffer_stack_top) = 0; - return; - } - - if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - yy_size_t grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = (yy_buffer_stack_max) + grow_size; - (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc - ((yy_buffer_stack), - num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - - /* zero only the new slots.*/ - memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); - (yy_buffer_stack_max) = num_to_alloc; - } -} - -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) -{ - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return NULL; - - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); - - b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = NULL; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - yy_switch_to_buffer( b ); - - return b; -} - -/** Setup the input buffer state to scan a string. The next call to yylex() will - * scan from a @e copy of @a str. - * @param yystr a NUL-terminated string to scan - * - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * yy_scan_bytes() instead. - */ -YY_BUFFER_STATE yy_scan_string (const char * yystr ) -{ - - return yy_scan_bytes( yystr, (int) strlen(yystr) ); -} - -/** Setup the input buffer state to scan the given bytes. The next call to yylex() will - * scan from a @e copy of @a bytes. - * @param yybytes the byte buffer to scan - * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) -{ - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = (yy_size_t) (_yybytes_len + 2); - buf = (char *) yyalloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < _yybytes_len; ++i ) - buf[i] = yybytes[i]; - - buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer( buf, n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; -} - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -static void yynoreturn yy_fatal_error (const char* msg ) -{ - fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - yytext[yyleng] = (yy_hold_char); \ - (yy_c_buf_p) = yytext + yyless_macro_arg; \ - (yy_hold_char) = *(yy_c_buf_p); \ - *(yy_c_buf_p) = '\0'; \ - yyleng = yyless_macro_arg; \ - } \ - while ( 0 ) - -/* Accessor methods (get/set functions) to struct members. */ - -/** Get the current line number. - * - */ -int yyget_lineno (void) -{ - - return yylineno; -} - -/** Get the input stream. - * - */ -FILE *yyget_in (void) -{ - return yyin; -} - -/** Get the output stream. - * - */ -FILE *yyget_out (void) -{ - return yyout; -} - -/** Get the length of the current token. - * - */ -int yyget_leng (void) -{ - return yyleng; -} - -/** Get the current token. - * - */ - -char *yyget_text (void) -{ - return yytext; -} - -/** Set the current line number. - * @param _line_number line number - * - */ -void yyset_lineno (int _line_number ) -{ - - yylineno = _line_number; -} - -/** Set the input stream. This does not discard the current - * input buffer. - * @param _in_str A readable stream. - * - * @see yy_switch_to_buffer - */ -void yyset_in (FILE * _in_str ) -{ - yyin = _in_str ; -} - -void yyset_out (FILE * _out_str ) -{ - yyout = _out_str ; -} - -int yyget_debug (void) -{ - return yy_flex_debug; -} - -void yyset_debug (int _bdebug ) -{ - yy_flex_debug = _bdebug ; -} - -static int yy_init_globals (void) -{ - /* Initialization is the same as for the non-reentrant scanner. - * This function is called from yylex_destroy(), so don't allocate here. - */ - - /* We do not touch yylineno unless the option is enabled. */ - yylineno = 1; - - (yy_buffer_stack) = NULL; - (yy_buffer_stack_top) = 0; - (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = NULL; - (yy_init) = 0; - (yy_start) = 0; - -/* Defined in main.c */ -#ifdef YY_STDINIT - yyin = stdin; - yyout = stdout; -#else - yyin = NULL; - yyout = NULL; -#endif - - /* For future reference: Set errno on error, since we are called by - * yylex_init() - */ - return 0; -} - -/* yylex_destroy is for both reentrant and non-reentrant scanners. */ -int yylex_destroy (void) -{ - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - yy_delete_buffer( YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - yypop_buffer_state(); - } - - /* Destroy the stack itself. */ - yyfree((yy_buffer_stack) ); - (yy_buffer_stack) = NULL; - - /* Reset the globals. This is important in a non-reentrant scanner so the next time - * yylex() is called, initialization will occur. */ - yy_init_globals( ); - - return 0; -} - -/* - * Internal utility routines. - */ - -#ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, const char * s2, int n ) -{ - - int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; -} -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (const char * s ) -{ - int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; -} -#endif - -void *yyalloc (yy_size_t size ) -{ - return malloc(size); -} - -void *yyrealloc (void * ptr, yy_size_t size ) -{ - - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return realloc(ptr, size); -} - -void yyfree (void * ptr ) -{ - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ -} - -#define YYTABLES_NAME "yytables" - -void zconf_starthelp(void) -{ - new_string(); - last_ts = first_ts = 0; - BEGIN(HELP); -} - -static void zconf_endhelp(void) -{ - yylval.string = text; - BEGIN(INITIAL); -} - -/* - * Try to open specified file with following names: - * ./name - * $(srctree)/name - * The latter is used when srctree is separate from objtree - * when compiling the kernel. - * Return NULL if file is not found. - */ -FILE *zconf_fopen(const char *name) -{ - char *env, fullname[PATH_MAX+1]; - FILE *f; - - f = fopen(name, "r"); - if (!f && name != NULL && name[0] != '/') { - env = getenv(SRCTREE); - if (env) { - sprintf(fullname, "%s/%s", env, name); - f = fopen(fullname, "r"); - } - } - return f; -} - -void zconf_initscan(const char *name) -{ - yyin = zconf_fopen(name); - if (!yyin) { - fprintf(stderr, "can't find file %s\n", name); - exit(1); - } - - current_buf = xmalloc(sizeof(*current_buf)); - memset(current_buf, 0, sizeof(*current_buf)); - - current_file = file_lookup(name); - yylineno = 1; -} - -void zconf_nextfile(const char *name) -{ - struct file *iter; - struct file *file = file_lookup(name); - struct buffer *buf = xmalloc(sizeof(*buf)); - memset(buf, 0, sizeof(*buf)); - - current_buf->state = YY_CURRENT_BUFFER; - yyin = zconf_fopen(file->name); - if (!yyin) { - fprintf(stderr, "%s:%d: can't open file \"%s\"\n", - zconf_curname(), zconf_lineno(), file->name); - exit(1); - } - yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); - buf->parent = current_buf; - current_buf = buf; - - current_file->lineno = yylineno; - file->parent = current_file; - - for (iter = current_file; iter; iter = iter->parent) { - if (!strcmp(iter->name, file->name)) { - fprintf(stderr, - "Recursive inclusion detected.\n" - "Inclusion path:\n" - " current file : %s\n", file->name); - iter = file; - do { - iter = iter->parent; - fprintf(stderr, " included from: %s:%d\n", - iter->name, iter->lineno - 1); - } while (strcmp(iter->name, file->name)); - exit(1); - } - } - - yylineno = 1; - current_file = file; -} - -static void zconf_endfile(void) -{ - struct buffer *parent; - - current_file = current_file->parent; - if (current_file) - yylineno = current_file->lineno; - - parent = current_buf->parent; - if (parent) { - fclose(yyin); - yy_delete_buffer(YY_CURRENT_BUFFER); - yy_switch_to_buffer(parent->state); - } - free(current_buf); - current_buf = parent; -} - -int zconf_lineno(void) -{ - return current_pos.lineno; -} - -const char *zconf_curname(void) -{ - return current_pos.file ? current_pos.file->name : ""; -} - diff --git a/support/kconfig/zconf.tab.c_shipped b/support/kconfig/zconf.tab.c_shipped deleted file mode 100644 index 4eca5b3135..0000000000 --- a/support/kconfig/zconf.tab.c_shipped +++ /dev/null @@ -1,2488 +0,0 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ - -/* Bison implementation for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -/* As a special exception, you may create a larger work that contains - part or all of the Bison parser skeleton and distribute that work - under terms of your choice, so long as that work isn't itself a - parser generator using the skeleton or a modified version thereof - as a parser skeleton. Alternatively, if you modify or redistribute - the parser skeleton itself, you may (at your option) remove this - special exception, which will cause the skeleton and the resulting - Bison output files to be licensed under the GNU General Public - License without this special exception. - - This special exception was added by the Free Software Foundation in - version 2.2 of Bison. */ - -/* C LALR(1) parser skeleton written by Richard Stallman, by - simplifying the original so-called "semantic" parser. */ - -/* All symbols defined below should begin with yy or YY, to avoid - infringing on user name space. This should be done even for local - variables, as they might otherwise be expanded by user macros. - There are some unavoidable exceptions within include files to - define necessary library symbols; they are noted "INFRINGES ON - USER NAME SPACE" below. */ - -/* Identify Bison output. */ -#define YYBISON 1 - -/* Bison version. */ -#define YYBISON_VERSION "3.0.4" - -/* Skeleton name. */ -#define YYSKELETON_NAME "yacc.c" - -/* Pure parsers. */ -#define YYPURE 0 - -/* Push parsers. */ -#define YYPUSH 0 - -/* Pull parsers. */ -#define YYPULL 1 - - - - -/* Copy the first part of user declarations. */ - - -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include -#include -#include -#include - -#include "lkc.h" - -#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) - -#define PRINTD 0x0001 -#define DEBUG_PARSE 0x0002 - -int cdebug = PRINTD; - -int yylex(void); -static void yyerror(const char *err); -static void zconfprint(const char *err, ...); -static void zconf_error(const char *err, ...); -static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken); - -struct symbol *symbol_hash[SYMBOL_HASHSIZE]; - -static struct menu *current_menu, *current_entry; - - - - -# ifndef YY_NULLPTR -# if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif -# endif - -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 0 -#endif - - -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 1 -#endif -#if YYDEBUG -extern int yydebug; -#endif - -/* Token type. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - T_MAINMENU = 258, - T_MENU = 259, - T_ENDMENU = 260, - T_SOURCE = 261, - T_CHOICE = 262, - T_ENDCHOICE = 263, - T_COMMENT = 264, - T_CONFIG = 265, - T_MENUCONFIG = 266, - T_HELP = 267, - T_HELPTEXT = 268, - T_IF = 269, - T_ENDIF = 270, - T_DEPENDS = 271, - T_OPTIONAL = 272, - T_PROMPT = 273, - T_TYPE = 274, - T_DEFAULT = 275, - T_SELECT = 276, - T_IMPLY = 277, - T_RANGE = 278, - T_VISIBLE = 279, - T_OPTION = 280, - T_ON = 281, - T_WORD = 282, - T_WORD_QUOTE = 283, - T_UNEQUAL = 284, - T_LESS = 285, - T_LESS_EQUAL = 286, - T_GREATER = 287, - T_GREATER_EQUAL = 288, - T_CLOSE_PAREN = 289, - T_OPEN_PAREN = 290, - T_EOL = 291, - T_OR = 292, - T_AND = 293, - T_EQUAL = 294, - T_NOT = 295 - }; -#endif - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - -union YYSTYPE -{ - - - char *string; - struct file *file; - struct symbol *symbol; - struct expr *expr; - struct menu *menu; - const struct kconf_id *id; - - -}; - -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 -#endif - - -extern YYSTYPE yylval; - -int yyparse (void); - - - -/* Copy the second part of user declarations. */ - - -/* Include kconf_id.c here so it can see the token constants. */ -#include "kconf_id.c" - - - -#ifdef short -# undef short -#endif - -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; -#else -typedef unsigned char yytype_uint8; -#endif - -#ifdef YYTYPE_INT8 -typedef YYTYPE_INT8 yytype_int8; -#else -typedef signed char yytype_int8; -#endif - -#ifdef YYTYPE_UINT16 -typedef YYTYPE_UINT16 yytype_uint16; -#else -typedef unsigned short int yytype_uint16; -#endif - -#ifdef YYTYPE_INT16 -typedef YYTYPE_INT16 yytype_int16; -#else -typedef short int yytype_int16; -#endif - -#ifndef YYSIZE_T -# ifdef __SIZE_TYPE__ -# define YYSIZE_T __SIZE_TYPE__ -# elif defined size_t -# define YYSIZE_T size_t -# elif ! defined YYSIZE_T -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# else -# define YYSIZE_T unsigned int -# endif -#endif - -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) - -#ifndef YY_ -# if defined YYENABLE_NLS && YYENABLE_NLS -# if ENABLE_NLS -# include /* INFRINGES ON USER NAME SPACE */ -# define YY_(Msgid) dgettext ("bison-runtime", Msgid) -# endif -# endif -# ifndef YY_ -# define YY_(Msgid) Msgid -# endif -#endif - -#ifndef YY_ATTRIBUTE -# if (defined __GNUC__ \ - && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ - || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C -# define YY_ATTRIBUTE(Spec) __attribute__(Spec) -# else -# define YY_ATTRIBUTE(Spec) /* empty */ -# endif -#endif - -#ifndef YY_ATTRIBUTE_PURE -# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) -#endif - -#ifndef YY_ATTRIBUTE_UNUSED -# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) -#endif - -#if !defined _Noreturn \ - && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) -# if defined _MSC_VER && 1200 <= _MSC_VER -# define _Noreturn __declspec (noreturn) -# else -# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) -# endif -#endif - -/* Suppress unused-variable warnings by "using" E. */ -#if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) -#else -# define YYUSE(E) /* empty */ -#endif - -#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ -/* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ - _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ - _Pragma ("GCC diagnostic pop") -#else -# define YY_INITIAL_VALUE(Value) Value -#endif -#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_END -#endif -#ifndef YY_INITIAL_VALUE -# define YY_INITIAL_VALUE(Value) /* Nothing. */ -#endif - - -#if ! defined yyoverflow || YYERROR_VERBOSE - -/* The parser invokes alloca or malloc; define the necessary symbols. */ - -# ifdef YYSTACK_USE_ALLOCA -# if YYSTACK_USE_ALLOCA -# ifdef __GNUC__ -# define YYSTACK_ALLOC __builtin_alloca -# elif defined __BUILTIN_VA_ARG_INCR -# include /* INFRINGES ON USER NAME SPACE */ -# elif defined _AIX -# define YYSTACK_ALLOC __alloca -# elif defined _MSC_VER -# include /* INFRINGES ON USER NAME SPACE */ -# define alloca _alloca -# else -# define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS -# include /* INFRINGES ON USER NAME SPACE */ - /* Use EXIT_SUCCESS as a witness for stdlib.h. */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -# endif -# endif -# endif -# endif -# endif - -# ifdef YYSTACK_ALLOC - /* Pacify GCC's 'empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) -# ifndef YYSTACK_ALLOC_MAXIMUM - /* The OS might guarantee only one guard page at the bottom of the stack, - and a page size can be as small as 4096 bytes. So we cannot safely - invoke alloca (N) if N exceeds 4096. Use a slightly smaller number - to allow for a few compiler-allocated temporary stack slots. */ -# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ -# endif -# else -# define YYSTACK_ALLOC YYMALLOC -# define YYSTACK_FREE YYFREE -# ifndef YYSTACK_ALLOC_MAXIMUM -# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM -# endif -# if (defined __cplusplus && ! defined EXIT_SUCCESS \ - && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) -# include /* INFRINGES ON USER NAME SPACE */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -# endif -# endif -# ifndef YYMALLOC -# define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS -void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# ifndef YYFREE -# define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS -void free (void *); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# endif -#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ - - -#if (! defined yyoverflow \ - && (! defined __cplusplus \ - || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) - -/* A type that is properly aligned for any stack member. */ -union yyalloc -{ - yytype_int16 yyss_alloc; - YYSTYPE yyvs_alloc; -}; - -/* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) - -/* The size of an array large to enough to hold all stacks, each with - N elements. */ -# define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ - + YYSTACK_GAP_MAXIMUM) - -# define YYCOPY_NEEDED 1 - -/* Relocate STACK from its old location to the new one. The - local variables YYSIZE and YYSTACKSIZE give the old and new number of - elements in the stack, and YYPTR gives the new location of the - stack. Advance YYPTR to a properly aligned location for the next - stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (0) - -#endif - -#if defined YYCOPY_NEEDED && YYCOPY_NEEDED -/* Copy COUNT objects from SRC to DST. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) -# else -# define YYCOPY(Dst, Src, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (Dst)[yyi] = (Src)[yyi]; \ - } \ - while (0) -# endif -# endif -#endif /* !YYCOPY_NEEDED */ - -/* YYFINAL -- State number of the termination state. */ -#define YYFINAL 11 -/* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 325 - -/* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 41 -/* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 52 -/* YYNRULES -- Number of rules. */ -#define YYNRULES 126 -/* YYNSTATES -- Number of states. */ -#define YYNSTATES 206 - -/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned - by yylex, with out-of-bounds checking. */ -#define YYUNDEFTOK 2 -#define YYMAXUTOK 295 - -#define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) - -/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, without out-of-bounds checking. */ -static const yytype_uint8 yytranslate[] = -{ - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40 -}; - -#if YYDEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_uint16 yyrline[] = -{ - 0, 110, 110, 110, 112, 112, 116, 124, 134, 136, - 137, 138, 139, 140, 141, 145, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 153, 154, 155, 156, 157, - 158, 162, 163, 169, 176, 181, 188, 197, 199, 200, - 201, 202, 203, 204, 207, 215, 221, 231, 237, 243, - 249, 252, 254, 267, 268, 273, 283, 288, 296, 299, - 301, 302, 303, 304, 305, 308, 314, 325, 331, 341, - 343, 348, 356, 364, 367, 369, 370, 371, 376, 383, - 388, 396, 399, 401, 402, 403, 406, 415, 422, 427, - 433, 451, 453, 454, 455, 458, 466, 468, 469, 472, - 479, 481, 486, 487, 490, 491, 492, 496, 497, 500, - 501, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 518, 520, 521, 524, 525 -}; -#endif - -#if YYDEBUG || YYERROR_VERBOSE || 0 -/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -static const char *const yytname[] = -{ - "$end", "error", "$undefined", "T_MAINMENU", "T_MENU", "T_ENDMENU", - "T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG", - "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS", - "T_OPTIONAL", "T_PROMPT", "T_TYPE", "T_DEFAULT", "T_SELECT", "T_IMPLY", - "T_RANGE", "T_VISIBLE", "T_OPTION", "T_ON", "T_WORD", "T_WORD_QUOTE", - "T_UNEQUAL", "T_LESS", "T_LESS_EQUAL", "T_GREATER", "T_GREATER_EQUAL", - "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_EOL", "T_OR", "T_AND", "T_EQUAL", - "T_NOT", "$accept", "input", "start", "mainmenu_stmt", - "no_mainmenu_stmt", "stmt_list", "option_name", "common_stmt", - "option_error", "config_entry_start", "config_stmt", - "menuconfig_entry_start", "menuconfig_stmt", "config_option_list", - "config_option", "symbol_option", "symbol_option_list", - "symbol_option_arg", "choice", "choice_entry", "choice_end", - "choice_stmt", "choice_option_list", "choice_option", "choice_block", - "if_entry", "if_end", "if_stmt", "if_block", "menu", "menu_entry", - "menu_end", "menu_stmt", "menu_block", "source_stmt", "comment", - "comment_stmt", "help_start", "help", "depends_list", "depends", - "visibility_list", "visible", "prompt_stmt_opt", "prompt", "end", "nl", - "if_expr", "expr", "nonconst_symbol", "symbol", "word_opt", YY_NULLPTR -}; -#endif - -# ifdef YYPRINT -/* YYTOKNUM[NUM] -- (External) token number corresponding to the - (internal) symbol number NUM (which must be that of a token). */ -static const yytype_uint16 yytoknum[] = -{ - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295 -}; -# endif - -#define YYPACT_NINF -92 - -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-92))) - -#define YYTABLE_NINF -89 - -#define yytable_value_is_error(Yytable_value) \ - 0 - - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -static const yytype_int16 yypact[] = -{ - 20, 33, -92, 16, -92, -92, -92, 21, -92, -92, - 29, -92, 152, 186, -92, -92, 40, 67, 33, 71, - 33, 42, 80, 33, 78, 78, 31, 82, -92, -92, - -92, -92, -92, -92, -92, -92, -92, 120, -92, 131, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, 109, -92, - 118, -92, 128, -92, 129, -92, 141, 142, -92, 31, - 31, 74, -92, 69, -92, 144, 145, 28, 119, 248, - 286, 77, 38, 77, 219, -92, -92, -92, -92, -92, - -92, -7, -92, 31, 31, 40, 52, 52, 52, 52, - 52, 52, -92, -92, 146, 147, 158, 33, 33, 31, - 78, 78, 52, -92, 184, -92, -92, -92, -92, 176, - -92, -92, 162, 33, 33, 78, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, 197, - -92, 272, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, 174, -92, -92, -92, -92, -92, -92, -92, - -92, -92, 31, 197, 178, 197, 59, 197, 197, 52, - 27, 179, -92, -92, 197, 180, 197, 31, -92, 111, - 181, -92, -92, 182, 185, 195, 197, 193, -92, -92, - 208, -92, 209, 113, -92, -92, -92, -92, -92, 211, - 33, -92, -92, -92, -92, -92 -}; - - /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ -static const yytype_uint8 yydefact[] = -{ - 7, 0, 107, 0, 3, 8, 8, 7, 102, 103, - 0, 1, 0, 0, 108, 2, 6, 0, 0, 0, - 0, 125, 0, 0, 0, 0, 0, 0, 16, 21, - 17, 18, 23, 19, 20, 22, 24, 0, 25, 0, - 9, 37, 28, 37, 29, 59, 69, 10, 74, 26, - 96, 82, 11, 30, 91, 27, 12, 15, 0, 104, - 0, 126, 0, 105, 0, 122, 0, 0, 124, 0, - 0, 0, 123, 111, 106, 0, 0, 0, 0, 0, - 0, 0, 91, 0, 0, 78, 86, 55, 87, 33, - 35, 0, 119, 0, 0, 71, 0, 0, 0, 0, - 0, 0, 13, 14, 0, 0, 0, 0, 100, 0, - 0, 0, 0, 51, 0, 43, 42, 38, 39, 0, - 41, 40, 0, 0, 100, 0, 63, 64, 60, 62, - 61, 70, 58, 57, 75, 77, 73, 76, 72, 109, - 98, 0, 97, 83, 85, 81, 84, 80, 93, 94, - 92, 118, 120, 121, 117, 112, 113, 114, 115, 116, - 32, 89, 0, 109, 0, 109, 109, 109, 109, 0, - 0, 0, 90, 67, 109, 0, 109, 0, 99, 0, - 0, 44, 101, 0, 0, 0, 109, 53, 50, 31, - 0, 66, 0, 110, 95, 45, 46, 47, 48, 0, - 0, 52, 65, 68, 49, 54 -}; - - /* YYPGOTO[NTERM-NUM]. */ -static const yytype_int16 yypgoto[] = -{ - -92, -92, 241, -92, -92, 244, -92, -13, -66, -92, - -92, -92, -92, 218, -92, -92, -92, -92, -92, -92, - -92, -69, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, 12, -92, -92, -92, -92, -92, 172, 170, - -64, -92, -92, 148, -1, 34, 1, 139, -68, -21, - -91, -92 -}; - - /* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int16 yydefgoto[] = -{ - -1, 3, 4, 5, 6, 12, 39, 40, 116, 41, - 42, 43, 44, 77, 117, 118, 170, 201, 45, 46, - 132, 47, 79, 128, 80, 48, 136, 49, 81, 50, - 51, 145, 52, 83, 53, 54, 55, 119, 120, 84, - 121, 82, 142, 164, 165, 56, 7, 178, 71, 72, - 73, 62 -}; - - /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_int16 yytable[] = -{ - 10, 91, 92, 66, 67, 154, 155, 156, 157, 158, - 159, 16, 135, 127, 144, 130, 11, 58, 149, 60, - 150, 169, 64, 1, 1, 152, 153, 151, -34, 104, - 93, 94, -34, -34, -34, -34, -34, -34, -34, -34, - 105, 166, -34, -34, 106, -34, 107, 108, 109, 110, - 111, 112, -34, 113, 187, 114, 2, 14, 65, 68, - 8, 9, 139, 188, 115, 2, 69, 131, 134, 61, - 143, 70, 95, 177, 140, 149, 14, 150, 186, 65, - 68, 18, 19, 20, 21, 22, 23, 24, 25, 167, - 168, 26, 27, 137, 179, 146, 93, 94, 96, 97, - 98, 99, 100, 57, 176, 65, 163, 59, 101, 193, - 2, 93, 94, 38, 133, 138, 63, 147, 74, -36, - 104, 75, 174, -36, -36, -36, -36, -36, -36, -36, - -36, 105, 76, -36, -36, 106, -36, 107, 108, 109, - 110, 111, 112, -36, 113, 85, 114, 194, 93, 94, - 93, 94, -4, 17, 86, 115, 18, 19, 20, 21, - 22, 23, 24, 25, 87, 88, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 89, 90, 37, - 102, 103, 160, 161, 162, 171, -5, 17, 38, 172, - 18, 19, 20, 21, 22, 23, 24, 25, 173, 205, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 177, 94, 37, 181, 189, 191, 195, 196, -88, - 104, 197, 38, -88, -88, -88, -88, -88, -88, -88, - -88, 198, 200, -88, -88, 106, -88, -88, -88, -88, - -88, -88, -88, -88, 202, 203, 114, 204, 15, 104, - 13, 129, 141, -56, -56, 148, -56, -56, -56, -56, - 105, 78, -56, -56, 106, 122, 123, 124, 125, 0, - 0, 0, 175, 104, 0, 114, -79, -79, -79, -79, - -79, -79, -79, -79, 126, 0, -79, -79, 106, 0, - 0, 19, 20, 0, 22, 23, 24, 25, 0, 114, - 26, 27, 180, 0, 182, 183, 184, 185, 148, 0, - 0, 0, 0, 190, 0, 192, 0, 0, 0, 0, - 0, 0, 38, 0, 0, 199 -}; - -static const yytype_int16 yycheck[] = -{ - 1, 69, 70, 24, 25, 96, 97, 98, 99, 100, - 101, 10, 81, 79, 83, 79, 0, 18, 84, 20, - 84, 112, 23, 3, 3, 93, 94, 34, 0, 1, - 37, 38, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 109, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 27, 27, 36, 36, 27, 28, - 27, 28, 24, 36, 36, 36, 35, 80, 81, 27, - 83, 40, 71, 14, 36, 141, 36, 141, 169, 27, - 28, 4, 5, 6, 7, 8, 9, 10, 11, 110, - 111, 14, 15, 81, 162, 83, 37, 38, 29, 30, - 31, 32, 33, 36, 125, 27, 107, 36, 39, 177, - 36, 37, 38, 36, 80, 81, 36, 83, 36, 0, - 1, 1, 123, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 1, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 36, 27, 36, 37, 38, - 37, 38, 0, 1, 36, 36, 4, 5, 6, 7, - 8, 9, 10, 11, 36, 36, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 36, 36, 27, - 36, 36, 36, 36, 26, 1, 0, 1, 36, 13, - 4, 5, 6, 7, 8, 9, 10, 11, 36, 200, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 14, 38, 27, 36, 36, 36, 36, 36, 0, - 1, 36, 36, 4, 5, 6, 7, 8, 9, 10, - 11, 36, 39, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 36, 36, 27, 36, 7, 1, - 6, 79, 82, 5, 6, 36, 8, 9, 10, 11, - 12, 43, 14, 15, 16, 17, 18, 19, 20, -1, - -1, -1, 124, 1, -1, 27, 4, 5, 6, 7, - 8, 9, 10, 11, 36, -1, 14, 15, 16, -1, - -1, 5, 6, -1, 8, 9, 10, 11, -1, 27, - 14, 15, 163, -1, 165, 166, 167, 168, 36, -1, - -1, -1, -1, 174, -1, 176, -1, -1, -1, -1, - -1, -1, 36, -1, -1, 186 -}; - - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const yytype_uint8 yystos[] = -{ - 0, 3, 36, 42, 43, 44, 45, 87, 27, 28, - 85, 0, 46, 46, 36, 43, 87, 1, 4, 5, - 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 27, 36, 47, - 48, 50, 51, 52, 53, 59, 60, 62, 66, 68, - 70, 71, 73, 75, 76, 77, 86, 36, 85, 36, - 85, 27, 92, 36, 85, 27, 90, 90, 28, 35, - 40, 89, 90, 91, 36, 1, 1, 54, 54, 63, - 65, 69, 82, 74, 80, 36, 36, 36, 36, 36, - 36, 89, 89, 37, 38, 87, 29, 30, 31, 32, - 33, 39, 36, 36, 1, 12, 16, 18, 19, 20, - 21, 22, 23, 25, 27, 36, 49, 55, 56, 78, - 79, 81, 17, 18, 19, 20, 36, 49, 64, 79, - 81, 48, 61, 86, 48, 62, 67, 73, 86, 24, - 36, 80, 83, 48, 62, 72, 73, 86, 36, 49, - 81, 34, 89, 89, 91, 91, 91, 91, 91, 91, - 36, 36, 26, 85, 84, 85, 89, 90, 90, 91, - 57, 1, 13, 36, 85, 84, 90, 14, 88, 89, - 88, 36, 88, 88, 88, 88, 91, 27, 36, 36, - 88, 36, 88, 89, 36, 36, 36, 36, 36, 88, - 39, 58, 36, 36, 36, 85 -}; - - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint8 yyr1[] = -{ - 0, 41, 42, 42, 43, 43, 44, 45, 46, 46, - 46, 46, 46, 46, 46, 46, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 48, 48, 48, 48, 48, - 48, 49, 49, 50, 51, 52, 53, 54, 54, 54, - 54, 54, 54, 54, 55, 55, 55, 55, 55, 55, - 56, 57, 57, 58, 58, 59, 60, 61, 62, 63, - 63, 63, 63, 63, 63, 64, 64, 64, 64, 65, - 65, 66, 67, 68, 69, 69, 69, 69, 70, 71, - 72, 73, 74, 74, 74, 74, 75, 76, 77, 78, - 79, 80, 80, 80, 80, 81, 82, 82, 82, 83, - 84, 84, 85, 85, 86, 86, 86, 87, 87, 88, - 88, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 90, 91, 91, 92, 92 -}; - - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = -{ - 0, 2, 2, 1, 2, 2, 3, 0, 0, 2, - 2, 2, 2, 4, 4, 3, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 2, 3, 2, 3, 2, 0, 2, 2, - 2, 2, 2, 2, 3, 4, 4, 4, 4, 5, - 3, 0, 3, 0, 2, 3, 2, 1, 3, 0, - 2, 2, 2, 2, 2, 4, 3, 2, 4, 0, - 2, 3, 1, 3, 0, 2, 2, 2, 3, 3, - 1, 3, 0, 2, 2, 2, 3, 3, 2, 2, - 2, 0, 2, 2, 2, 4, 0, 2, 2, 2, - 0, 2, 1, 1, 2, 2, 2, 1, 2, 0, - 2, 1, 3, 3, 3, 3, 3, 3, 3, 2, - 3, 3, 1, 1, 1, 0, 1 -}; - - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab - - -#define YYRECOVERING() (!!yyerrstatus) - -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (yylen); \ - yystate = *yyssp; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (0) - -/* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 - - - -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) - -/* This macro is provided for backward compatibility. */ -#ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -#endif - - -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) - - -/*----------------------------------------. -| Print this symbol's value on YYOUTPUT. | -`----------------------------------------*/ - -static void -yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -{ - FILE *yyo = yyoutput; - YYUSE (yyo); - if (!yyvaluep) - return; -# ifdef YYPRINT - if (yytype < YYNTOKENS) - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# endif - YYUSE (yytype); -} - - -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ - -static void -yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -{ - YYFPRINTF (yyoutput, "%s %s (", - yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); - - yy_symbol_value_print (yyoutput, yytype, yyvaluep); - YYFPRINTF (yyoutput, ")"); -} - -/*------------------------------------------------------------------. -| yy_stack_print -- Print the state stack from its BOTTOM up to its | -| TOP (included). | -`------------------------------------------------------------------*/ - -static void -yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) -{ - YYFPRINTF (stderr, "Stack now"); - for (; yybottom <= yytop; yybottom++) - { - int yybot = *yybottom; - YYFPRINTF (stderr, " %d", yybot); - } - YYFPRINTF (stderr, "\n"); -} - -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (0) - - -/*------------------------------------------------. -| Report that the YYRULE is going to be reduced. | -`------------------------------------------------*/ - -static void -yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) -{ - unsigned long int yylno = yyrline[yyrule]; - int yynrhs = yyr2[yyrule]; - int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); - /* The symbols being reduced. */ - for (yyi = 0; yyi < yynrhs; yyi++) - { - YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, - yystos[yyssp[yyi + 1 - yynrhs]], - &(yyvsp[(yyi + 1) - (yynrhs)]) - ); - YYFPRINTF (stderr, "\n"); - } -} - -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyssp, yyvsp, Rule); \ -} while (0) - -/* Nonzero means print parse trace. It is left uninitialized so that - multiple parsers can coexist. */ -int yydebug; -#else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) -# define YY_STACK_PRINT(Bottom, Top) -# define YY_REDUCE_PRINT(Rule) -#endif /* !YYDEBUG */ - - -/* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH -# define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). - - Do not make this value too large; the results are undefined if - YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) - evaluated with infinite-precision integer arithmetic. */ - -#ifndef YYMAXDEPTH -# define YYMAXDEPTH 10000 -#endif - - -#if YYERROR_VERBOSE - -# ifndef yystrlen -# if defined __GLIBC__ && defined _STRING_H -# define yystrlen strlen -# else -/* Return the length of YYSTR. */ -static YYSIZE_T -yystrlen (const char *yystr) -{ - YYSIZE_T yylen; - for (yylen = 0; yystr[yylen]; yylen++) - continue; - return yylen; -} -# endif -# endif - -# ifndef yystpcpy -# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -static char * -yystpcpy (char *yydest, const char *yysrc) -{ - char *yyd = yydest; - const char *yys = yysrc; - - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif - -# ifndef yytnamerr -/* Copy to YYRES the contents of YYSTR after stripping away unnecessary - quotes and backslashes, so that it's suitable for yyerror. The - heuristic is that double-quoting is unnecessary unless the string - contains an apostrophe, a comma, or backslash (other than - backslash-backslash). YYSTR is taken from yytname. If YYRES is - null, do not copy; instead, return the length of what the result - would have been. */ -static YYSIZE_T -yytnamerr (char *yyres, const char *yystr) -{ - if (*yystr == '"') - { - YYSIZE_T yyn = 0; - char const *yyp = yystr; - - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } - do_not_strip_quotes: ; - } - - if (! yyres) - return yystrlen (yystr); - - return yystpcpy (yyres, yystr) - yyres; -} -# endif - -/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message - about the unexpected token YYTOKEN for the state stack whose top is - YYSSP. - - Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is - not large enough to hold the message. In that case, also set - *YYMSG_ALLOC to the required number of bytes. Return 2 if the - required number of bytes is too large to store. */ -static int -yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, - yytype_int16 *yyssp, int yytoken) -{ - YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - YYSIZE_T yysize = yysize0; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - /* Internationalized format string. */ - const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat. */ - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Number of reported tokens (one for the "unexpected", one per - "expected"). */ - int yycount = 0; - - /* There are many possibilities here to consider: - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yychar) is if - this state is a consistent state with a default action. Thus, - detecting the absence of a lookahead is sufficient to determine - that there is no unexpected or expected token to report. In that - case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is a - consistent state with a default action. There might have been a - previous inconsistent state, consistent state with a non-default - action, or user semantic action that manipulated yychar. - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state merging - (from LALR or IELR) and default reductions corrupt the expected - token list. However, the list is correct for canonical LR with - one exception: it will still contain any token that will not be - accepted due to an error action in a later state. - */ - if (yytoken != YYEMPTY) - { - int yyn = yypact[*yyssp]; - yyarg[yycount++] = yytname[yytoken]; - if (!yypact_value_is_default (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yyx; - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR - && !yytable_value_is_error (yytable[yyx + yyn])) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - break; - } - yyarg[yycount++] = yytname[yyx]; - { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (! (yysize <= yysize1 - && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; - } - } - } - } - - switch (yycount) - { -# define YYCASE_(N, S) \ - case N: \ - yyformat = S; \ - break - YYCASE_(0, YY_("syntax error")); - YYCASE_(1, YY_("syntax error, unexpected %s")); - YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -# undef YYCASE_ - } - - { - YYSIZE_T yysize1 = yysize + yystrlen (yyformat); - if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; - } - - if (*yymsg_alloc < yysize) - { - *yymsg_alloc = 2 * yysize; - if (! (yysize <= *yymsg_alloc - && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) - *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; - return 1; - } - - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - { - char *yyp = *yymsg; - int yyi = 0; - while ((*yyp = *yyformat) != '\0') - if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyformat += 2; - } - else - { - yyp++; - yyformat++; - } - } - return 0; -} -#endif /* YYERROR_VERBOSE */ - -/*-----------------------------------------------. -| Release the memory associated to this symbol. | -`-----------------------------------------------*/ - -static void -yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) -{ - YYUSE (yyvaluep); - if (!yymsg) - yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - switch (yytype) - { - case 60: /* choice_entry */ - - { - fprintf(stderr, "%s:%d: missing end statement for this entry\n", - ((*yyvaluep).menu)->file->name, ((*yyvaluep).menu)->lineno); - if (current_menu == ((*yyvaluep).menu)) - menu_end_menu(); -} - - break; - - case 66: /* if_entry */ - - { - fprintf(stderr, "%s:%d: missing end statement for this entry\n", - ((*yyvaluep).menu)->file->name, ((*yyvaluep).menu)->lineno); - if (current_menu == ((*yyvaluep).menu)) - menu_end_menu(); -} - - break; - - case 71: /* menu_entry */ - - { - fprintf(stderr, "%s:%d: missing end statement for this entry\n", - ((*yyvaluep).menu)->file->name, ((*yyvaluep).menu)->lineno); - if (current_menu == ((*yyvaluep).menu)) - menu_end_menu(); -} - - break; - - - default: - break; - } - YY_IGNORE_MAYBE_UNINITIALIZED_END -} - - - - -/* The lookahead symbol. */ -int yychar; - -/* The semantic value of the lookahead symbol. */ -YYSTYPE yylval; -/* Number of syntax errors so far. */ -int yynerrs; - - -/*----------. -| yyparse. | -`----------*/ - -int -yyparse (void) -{ - int yystate; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - - Refer to the stacks through separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss; - yytype_int16 *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; - - YYSIZE_T yystacksize; - - int yyn; - int yyresult; - /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; - -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -#endif - -#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) - - /* The number of symbols on the RHS of the reduced rule. - Keep to zero when no symbol should be popped. */ - int yylen = 0; - - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - yystacksize = YYINITDEPTH; - - YYDPRINTF ((stderr, "Starting parse\n")); - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - goto yysetstate; - -/*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | -`------------------------------------------------------------*/ - yynewstate: - /* In all cases, when you get here, the value and location stacks - have just been pushed. So pushing a state here evens the stacks. */ - yyssp++; - - yysetstate: - *yyssp = yystate; - - if (yyss + yystacksize - 1 <= yyssp) - { - /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = yyssp - yyss + 1; - -#ifdef yyoverflow - { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yystacksize); - - yyss = yyss1; - yyvs = yyvs1; - } -#else /* no yyoverflow */ -# ifndef YYSTACK_RELOCATE - goto yyexhaustedlab; -# else - /* Extend the stack our own way. */ - if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; - yystacksize *= 2; - if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; - - { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); - } -# endif -#endif /* no yyoverflow */ - - yyssp = yyss + yysize - 1; - yyvsp = yyvs + yysize - 1; - - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); - - if (yyss + yystacksize - 1 <= yyssp) - YYABORT; - } - - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - - if (yystate == YYFINAL) - YYACCEPT; - - goto yybackup; - -/*-----------. -| yybackup. | -`-----------*/ -yybackup: - - /* Do appropriate processing given the current state. Read a - lookahead token if we need one and don't already have one. */ - - /* First try to decide what to do without reference to lookahead token. */ - yyn = yypact[yystate]; - if (yypact_value_is_default (yyn)) - goto yydefault; - - /* Not known => get a lookahead token if don't already have one. */ - - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ - if (yychar == YYEMPTY) - { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = yylex (); - } - - if (yychar <= YYEOF) - { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yytoken = YYTRANSLATE (yychar); - YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); - } - - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - yyn += yytoken; - if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) - goto yydefault; - yyn = yytable[yyn]; - if (yyn <= 0) - { - if (yytable_value_is_error (yyn)) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus) - yyerrstatus--; - - /* Shift the lookahead token. */ - YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the shifted token. */ - yychar = YYEMPTY; - - yystate = yyn; - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END - - goto yynewstate; - - -/*-----------------------------------------------------------. -| yydefault -- do the default action for the current state. | -`-----------------------------------------------------------*/ -yydefault: - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; - - -/*-----------------------------. -| yyreduce -- Do a reduction. | -`-----------------------------*/ -yyreduce: - /* yyn is the number of a rule to reduce with. */ - yylen = yyr2[yyn]; - - /* If YYLEN is nonzero, implement the default value of the action: - '$$ = $1'. - - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. Assigning to YYVAL - unconditionally makes the parser a bit smaller, and it avoids a - GCC warning that YYVAL may be used uninitialized. */ - yyval = yyvsp[1-yylen]; - - - YY_REDUCE_PRINT (yyn); - switch (yyn) - { - case 6: - - { - menu_add_prompt(P_MENU, (yyvsp[-1].string), NULL); -} - - break; - - case 7: - - { - /* - * Hack: Keep the main menu title on the heap so we can safely free it - * later regardless of whether it comes from the 'prompt' in - * mainmenu_stmt or here - */ - menu_add_prompt(P_MENU, xstrdup("Buildroot Configuration"), NULL); -} - - break; - - case 12: - - { zconf_error("unexpected end statement"); } - - break; - - case 13: - - { zconf_error("unknown statement \"%s\"", (yyvsp[-2].string)); } - - break; - - case 14: - - { - zconf_error("unexpected option \"%s\"", (yyvsp[-2].id)->name); -} - - break; - - case 15: - - { zconf_error("invalid statement"); } - - break; - - case 31: - - { zconf_error("unknown option \"%s\"", (yyvsp[-2].string)); } - - break; - - case 32: - - { zconf_error("invalid option"); } - - break; - - case 33: - - { - (yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL; - menu_add_entry((yyvsp[-1].symbol)); - printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), (yyvsp[-1].symbol)->name); -} - - break; - - case 34: - - { - printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 35: - - { - (yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL; - menu_add_entry((yyvsp[-1].symbol)); - printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), (yyvsp[-1].symbol)->name); -} - - break; - - case 36: - - { - if (current_entry->prompt) - current_entry->prompt->type = P_MENU; - else - zconfprint("warning: menuconfig statement without prompt"); - printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 44: - - { - menu_set_type((yyvsp[-2].id)->stype); - printd(DEBUG_PARSE, "%s:%d:type(%u)\n", - zconf_curname(), zconf_lineno(), - (yyvsp[-2].id)->stype); -} - - break; - - case 45: - - { - menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 46: - - { - menu_add_expr(P_DEFAULT, (yyvsp[-2].expr), (yyvsp[-1].expr)); - if ((yyvsp[-3].id)->stype != S_UNKNOWN) - menu_set_type((yyvsp[-3].id)->stype); - printd(DEBUG_PARSE, "%s:%d:default(%u)\n", - zconf_curname(), zconf_lineno(), - (yyvsp[-3].id)->stype); -} - - break; - - case 47: - - { - menu_add_symbol(P_SELECT, (yyvsp[-2].symbol), (yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 48: - - { - menu_add_symbol(P_IMPLY, (yyvsp[-2].symbol), (yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:imply\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 49: - - { - menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[-3].symbol), (yyvsp[-2].symbol)), (yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 52: - - { - const struct kconf_id *id = kconf_id_lookup((yyvsp[-1].string), strlen((yyvsp[-1].string))); - if (id && id->flags & TF_OPTION) { - menu_add_option(id->token, (yyvsp[0].string)); - free((yyvsp[0].string)); - } - else - zconfprint("warning: ignoring unknown option %s", (yyvsp[-1].string)); - free((yyvsp[-1].string)); -} - - break; - - case 53: - - { (yyval.string) = NULL; } - - break; - - case 54: - - { (yyval.string) = (yyvsp[0].string); } - - break; - - case 55: - - { - struct symbol *sym = sym_lookup((yyvsp[-1].string), SYMBOL_CHOICE); - sym->flags |= SYMBOL_AUTO; - menu_add_entry(sym); - menu_add_expr(P_CHOICE, NULL, NULL); - free((yyvsp[-1].string)); - printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 56: - - { - (yyval.menu) = menu_add_menu(); -} - - break; - - case 57: - - { - if (zconf_endtoken((yyvsp[0].id), T_CHOICE, T_ENDCHOICE)) { - menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno()); - } -} - - break; - - case 65: - - { - menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 66: - - { - if ((yyvsp[-2].id)->stype == S_BOOLEAN || (yyvsp[-2].id)->stype == S_TRISTATE) { - menu_set_type((yyvsp[-2].id)->stype); - printd(DEBUG_PARSE, "%s:%d:type(%u)\n", - zconf_curname(), zconf_lineno(), - (yyvsp[-2].id)->stype); - } else - YYERROR; -} - - break; - - case 67: - - { - current_entry->sym->flags |= SYMBOL_OPTIONAL; - printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 68: - - { - if ((yyvsp[-3].id)->stype == S_UNKNOWN) { - menu_add_symbol(P_DEFAULT, (yyvsp[-2].symbol), (yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:default\n", - zconf_curname(), zconf_lineno()); - } else - YYERROR; -} - - break; - - case 71: - - { - printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); - menu_add_entry(NULL); - menu_add_dep((yyvsp[-1].expr)); - (yyval.menu) = menu_add_menu(); -} - - break; - - case 72: - - { - if (zconf_endtoken((yyvsp[0].id), T_IF, T_ENDIF)) { - menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno()); - } -} - - break; - - case 78: - - { - menu_add_entry(NULL); - menu_add_prompt(P_MENU, (yyvsp[-1].string), NULL); - printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 79: - - { - (yyval.menu) = menu_add_menu(); -} - - break; - - case 80: - - { - if (zconf_endtoken((yyvsp[0].id), T_MENU, T_ENDMENU)) { - menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno()); - } -} - - break; - - case 86: - - { - printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), (yyvsp[-1].string)); - zconf_nextfile((yyvsp[-1].string)); - free((yyvsp[-1].string)); -} - - break; - - case 87: - - { - menu_add_entry(NULL); - menu_add_prompt(P_COMMENT, (yyvsp[-1].string), NULL); - printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 89: - - { - printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno()); - zconf_starthelp(); -} - - break; - - case 90: - - { - if (current_entry->help) { - free(current_entry->help); - zconfprint("warning: '%s' defined with more than one help text -- only the last one will be used", - current_entry->sym->name ?: ""); - } - - /* Is the help text empty or all whitespace? */ - if ((yyvsp[0].string)[strspn((yyvsp[0].string), " \f\n\r\t\v")] == '\0') - zconfprint("warning: '%s' defined with blank help text", - current_entry->sym->name ?: ""); - - current_entry->help = (yyvsp[0].string); -} - - break; - - case 95: - - { - menu_add_dep((yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 99: - - { - menu_add_visibility((yyvsp[0].expr)); -} - - break; - - case 101: - - { - menu_add_prompt(P_PROMPT, (yyvsp[-1].string), (yyvsp[0].expr)); -} - - break; - - case 104: - - { (yyval.id) = (yyvsp[-1].id); } - - break; - - case 105: - - { (yyval.id) = (yyvsp[-1].id); } - - break; - - case 106: - - { (yyval.id) = (yyvsp[-1].id); } - - break; - - case 109: - - { (yyval.expr) = NULL; } - - break; - - case 110: - - { (yyval.expr) = (yyvsp[0].expr); } - - break; - - case 111: - - { (yyval.expr) = expr_alloc_symbol((yyvsp[0].symbol)); } - - break; - - case 112: - - { (yyval.expr) = expr_alloc_comp(E_LTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } - - break; - - case 113: - - { (yyval.expr) = expr_alloc_comp(E_LEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } - - break; - - case 114: - - { (yyval.expr) = expr_alloc_comp(E_GTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } - - break; - - case 115: - - { (yyval.expr) = expr_alloc_comp(E_GEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } - - break; - - case 116: - - { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } - - break; - - case 117: - - { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } - - break; - - case 118: - - { (yyval.expr) = (yyvsp[-1].expr); } - - break; - - case 119: - - { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[0].expr)); } - - break; - - case 120: - - { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[-2].expr), (yyvsp[0].expr)); } - - break; - - case 121: - - { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); } - - break; - - case 122: - - { (yyval.symbol) = sym_lookup((yyvsp[0].string), 0); free((yyvsp[0].string)); } - - break; - - case 124: - - { (yyval.symbol) = sym_lookup((yyvsp[0].string), SYMBOL_CONST); free((yyvsp[0].string)); } - - break; - - case 125: - - { (yyval.string) = NULL; } - - break; - - - - default: break; - } - /* User semantic actions sometimes alter yychar, and that requires - that yytoken be updated with the new translation. We take the - approach of translating immediately before every use of yytoken. - One alternative is translating here after every semantic action, - but that translation would be missed if the semantic action invokes - YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or - if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an - incorrect destructor might then be invoked immediately. In the - case of YYERROR or YYBACKUP, subsequent parser actions might lead - to an incorrect destructor call or verbose syntax error message - before the lookahead is translated. */ - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); - - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - - *++yyvsp = yyval; - - /* Now 'shift' the result of the reduction. Determine what state - that goes to, based on the state we popped back to and the rule - number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; - if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTOKENS]; - - goto yynewstate; - - -/*--------------------------------------. -| yyerrlab -- here on detecting error. | -`--------------------------------------*/ -yyerrlab: - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); - - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus) - { - ++yynerrs; -#if ! YYERROR_VERBOSE - yyerror (YY_("syntax error")); -#else -# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ - yyssp, yytoken) - { - char const *yymsgp = YY_("syntax error"); - int yysyntax_error_status; - yysyntax_error_status = YYSYNTAX_ERROR; - if (yysyntax_error_status == 0) - yymsgp = yymsg; - else if (yysyntax_error_status == 1) - { - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); - if (!yymsg) - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - yysyntax_error_status = 2; - } - else - { - yysyntax_error_status = YYSYNTAX_ERROR; - yymsgp = yymsg; - } - } - yyerror (yymsgp); - if (yysyntax_error_status == 2) - goto yyexhaustedlab; - } -# undef YYSYNTAX_ERROR -#endif - } - - - - if (yyerrstatus == 3) - { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ - - if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } - else - { - yydestruct ("Error: discarding", - yytoken, &yylval); - yychar = YYEMPTY; - } - } - - /* Else will try to reuse lookahead token after shifting the error - token. */ - goto yyerrlab1; - - -/*---------------------------------------------------. -| yyerrorlab -- error raised explicitly by YYERROR. | -`---------------------------------------------------*/ -yyerrorlab: - - /* Pacify compilers like GCC when the user code never invokes - YYERROR and the label yyerrorlab therefore never appears in user - code. */ - if (/*CONSTCOND*/ 0) - goto yyerrorlab; - - /* Do not reclaim the symbols of the rule whose action triggered - this YYERROR. */ - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - yystate = *yyssp; - goto yyerrlab1; - - -/*-------------------------------------------------------------. -| yyerrlab1 -- common code for both syntax error and YYERROR. | -`-------------------------------------------------------------*/ -yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ - - for (;;) - { - yyn = yypact[yystate]; - if (!yypact_value_is_default (yyn)) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } - - /* Pop the current state because it cannot handle the error token. */ - if (yyssp == yyss) - YYABORT; - - - yydestruct ("Error: popping", - yystos[yystate], yyvsp); - YYPOPSTACK (1); - yystate = *yyssp; - YY_STACK_PRINT (yyss, yyssp); - } - - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END - - - /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); - - yystate = yyn; - goto yynewstate; - - -/*-------------------------------------. -| yyacceptlab -- YYACCEPT comes here. | -`-------------------------------------*/ -yyacceptlab: - yyresult = 0; - goto yyreturn; - -/*-----------------------------------. -| yyabortlab -- YYABORT comes here. | -`-----------------------------------*/ -yyabortlab: - yyresult = 1; - goto yyreturn; - -#if !defined yyoverflow || YYERROR_VERBOSE -/*-------------------------------------------------. -| yyexhaustedlab -- memory exhaustion comes here. | -`-------------------------------------------------*/ -yyexhaustedlab: - yyerror (YY_("memory exhausted")); - yyresult = 2; - /* Fall through. */ -#endif - -yyreturn: - if (yychar != YYEMPTY) - { - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = YYTRANSLATE (yychar); - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval); - } - /* Do not reclaim the symbols of the rule whose action triggered - this YYABORT or YYACCEPT. */ - YYPOPSTACK (yylen); - YY_STACK_PRINT (yyss, yyssp); - while (yyssp != yyss) - { - yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp); - YYPOPSTACK (1); - } -#ifndef yyoverflow - if (yyss != yyssa) - YYSTACK_FREE (yyss); -#endif -#if YYERROR_VERBOSE - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); -#endif - return yyresult; -} - - - -void conf_parse(const char *name) -{ - const char *tmp; - struct symbol *sym; - int i; - - zconf_initscan(name); - - sym_init(); - _menu_init(); - - if (getenv("ZCONF_DEBUG")) - yydebug = 1; - yyparse(); - if (yynerrs) - exit(1); - if (!modules_sym) - modules_sym = sym_find( "n" ); - - tmp = rootmenu.prompt->text; - rootmenu.prompt->text = _(rootmenu.prompt->text); - rootmenu.prompt->text = sym_expand_string_value(rootmenu.prompt->text); - free((char*)tmp); - - menu_finalize(&rootmenu); - for_all_symbols(i, sym) { - if (sym_check_deps(sym)) - yynerrs++; - } - if (yynerrs) - exit(1); - sym_set_change_count(1); -} - -static const char *zconf_tokenname(int token) -{ - switch (token) { - case T_MENU: return "menu"; - case T_ENDMENU: return "endmenu"; - case T_CHOICE: return "choice"; - case T_ENDCHOICE: return "endchoice"; - case T_IF: return "if"; - case T_ENDIF: return "endif"; - case T_DEPENDS: return "depends"; - case T_VISIBLE: return "visible"; - } - return ""; -} - -static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken) -{ - if (id->token != endtoken) { - zconf_error("unexpected '%s' within %s block", - id->name, zconf_tokenname(starttoken)); - yynerrs++; - return false; - } - if (current_menu->file != current_file) { - zconf_error("'%s' in different file than '%s'", - id->name, zconf_tokenname(starttoken)); - fprintf(stderr, "%s:%d: location of the '%s'\n", - current_menu->file->name, current_menu->lineno, - zconf_tokenname(starttoken)); - yynerrs++; - return false; - } - return true; -} - -static void zconfprint(const char *err, ...) -{ - va_list ap; - - fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); - va_start(ap, err); - vfprintf(stderr, err, ap); - va_end(ap); - fprintf(stderr, "\n"); -} - -static void zconf_error(const char *err, ...) -{ - va_list ap; - - yynerrs++; - fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); - va_start(ap, err); - vfprintf(stderr, err, ap); - va_end(ap); - fprintf(stderr, "\n"); -} - -static void yyerror(const char *err) -{ - fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err); -} - -static void print_quoted_string(FILE *out, const char *str) -{ - const char *p; - int len; - - putc('"', out); - while ((p = strchr(str, '"'))) { - len = p - str; - if (len) - fprintf(out, "%.*s", len, str); - fputs("\\\"", out); - str = p + 1; - } - fputs(str, out); - putc('"', out); -} - -static void print_symbol(FILE *out, struct menu *menu) -{ - struct symbol *sym = menu->sym; - struct property *prop; - - if (sym_is_choice(sym)) - fprintf(out, "\nchoice\n"); - else - fprintf(out, "\nconfig %s\n", sym->name); - switch (sym->type) { - case S_BOOLEAN: - fputs(" bool\n", out); - break; - case S_TRISTATE: - fputs(" tristate\n", out); - break; - case S_STRING: - fputs(" string\n", out); - break; - case S_INT: - fputs(" integer\n", out); - break; - case S_HEX: - fputs(" hex\n", out); - break; - default: - fputs(" ???\n", out); - break; - } - for (prop = sym->prop; prop; prop = prop->next) { - if (prop->menu != menu) - continue; - switch (prop->type) { - case P_PROMPT: - fputs(" prompt ", out); - print_quoted_string(out, prop->text); - if (!expr_is_yes(prop->visible.expr)) { - fputs(" if ", out); - expr_fprint(prop->visible.expr, out); - } - fputc('\n', out); - break; - case P_DEFAULT: - fputs( " default ", out); - expr_fprint(prop->expr, out); - if (!expr_is_yes(prop->visible.expr)) { - fputs(" if ", out); - expr_fprint(prop->visible.expr, out); - } - fputc('\n', out); - break; - case P_CHOICE: - fputs(" #choice value\n", out); - break; - case P_SELECT: - fputs( " select ", out); - expr_fprint(prop->expr, out); - fputc('\n', out); - break; - case P_IMPLY: - fputs( " imply ", out); - expr_fprint(prop->expr, out); - fputc('\n', out); - break; - case P_RANGE: - fputs( " range ", out); - expr_fprint(prop->expr, out); - fputc('\n', out); - break; - case P_MENU: - fputs( " menu ", out); - print_quoted_string(out, prop->text); - fputc('\n', out); - break; - default: - fprintf(out, " unknown prop %d!\n", prop->type); - break; - } - } - if (menu->help) { - int len = strlen(menu->help); - while (menu->help[--len] == '\n') - menu->help[len] = 0; - fprintf(out, " help\n%s\n", menu->help); - } -} - -void zconfdump(FILE *out) -{ - struct property *prop; - struct symbol *sym; - struct menu *menu; - - menu = rootmenu.list; - while (menu) { - if ((sym = menu->sym)) - print_symbol(out, menu); - else if ((prop = menu->prompt)) { - switch (prop->type) { - case P_COMMENT: - fputs("\ncomment ", out); - print_quoted_string(out, prop->text); - fputs("\n", out); - break; - case P_MENU: - fputs("\nmenu ", out); - print_quoted_string(out, prop->text); - fputs("\n", out); - break; - default: - ; - } - if (!expr_is_yes(prop->visible.expr)) { - fputs(" depends ", out); - expr_fprint(prop->visible.expr, out); - fputc('\n', out); - } - } - - if (menu->list) - menu = menu->list; - else if (menu->next) - menu = menu->next; - else while ((menu = menu->parent)) { - if (menu->prompt && menu->prompt->type == P_MENU) - fputs("\nendmenu\n", out); - if (menu->next) { - menu = menu->next; - break; - } - } - } -} - -#include "zconf.lex.c" -#include "util.c" -#include "confdata.c" -#include "expr.c" -#include "symbol.c" -#include "menu.c" -- 2.44.0 From thomas.petazzoni at bootlin.com Mon May 6 19:04:40 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:04:40 +0200 Subject: [Buildroot] [PATCH v1 0/8] support/kconfig: bump to linux-v6.9-rc5 version In-Reply-To: <20240506144555.31709-1-ps.report@gmx.net> References: <20240506144555.31709-1-ps.report@gmx.net> Message-ID: <20240506210440.323ccb15@windsurf> Hello, On Mon, 6 May 2024 16:45:43 +0200 Peter Seiderer via buildroot wrote: > The patches are orderd by the first 5 handling some minor nits (result of > the new kconfig beeing a little more strict about the syntax, can be > applied in advance): > > - boot/barebox/Config.in: source argument needs quotation marks > - package/cmocka/Config.in: bool argument needs quotation marks > - package/dovecot/Config.in: source argument needs quotation marks > - package/python-pydal/Config.in: bool argument needs quotation marks > - package/x11r7/Config.in: source argument needs quotation marks I have applied those preparation patches that make sense regardless of what happens with the bump. > The kconfig version dump itself: > > - support/kconfig: bump to linux-v6.9-rc5 version So this commit without the next two leads to a broken situation, correct? (Note: this is not a complaint, I agree with them being split). > And two 'real' changes due to kconfig language changes: > > - support/kconfig: reference environment variables directly (remove 'option env=') > - package/openssl: move libopenssl/libressl source statemetns outside of the choice But don't we have this situation of source statements inside a choice..endchoice in other places? I remember Yann saying that this was a problematic change for us in the upstream kconfig code. Best regards, Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 19:04:40 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:04:40 +0200 Subject: [Buildroot] [PATCH v1 0/8] support/kconfig: bump to linux-v6.9-rc5 version In-Reply-To: <20240506144555.31709-1-ps.report@gmx.net> References: <20240506144555.31709-1-ps.report@gmx.net> Message-ID: <20240506210440.323ccb15@windsurf> Hello, On Mon, 6 May 2024 16:45:43 +0200 Peter Seiderer via buildroot wrote: > The patches are orderd by the first 5 handling some minor nits (result of > the new kconfig beeing a little more strict about the syntax, can be > applied in advance): > > - boot/barebox/Config.in: source argument needs quotation marks > - package/cmocka/Config.in: bool argument needs quotation marks > - package/dovecot/Config.in: source argument needs quotation marks > - package/python-pydal/Config.in: bool argument needs quotation marks > - package/x11r7/Config.in: source argument needs quotation marks I have applied those preparation patches that make sense regardless of what happens with the bump. > The kconfig version dump itself: > > - support/kconfig: bump to linux-v6.9-rc5 version So this commit without the next two leads to a broken situation, correct? (Note: this is not a complaint, I agree with them being split). > And two 'real' changes due to kconfig language changes: > > - support/kconfig: reference environment variables directly (remove 'option env=') > - package/openssl: move libopenssl/libressl source statemetns outside of the choice But don't we have this situation of source statements inside a choice..endchoice in other places? I remember Yann saying that this was a problematic change for us in the upstream kconfig code. Best regards, Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 19:06:23 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:06:23 +0200 Subject: [Buildroot] [PATCH v1 7/8] support/kconfig: reference environment variables directly (remove 'option env=') In-Reply-To: <20240506144555.31709-8-ps.report@gmx.net> References: <20240506144555.31709-1-ps.report@gmx.net> <20240506144555.31709-8-ps.report@gmx.net> Message-ID: <20240506210623.7c3b3065@windsurf> On Mon, 6 May 2024 16:45:50 +0200 Peter Seiderer via buildroot wrote: > config BR2_DEFCONFIG > string "Location to save buildroot config" > - default BR2_DEFCONFIG_FROM_ENV if BR2_DEFCONFIG_FROM_ENV != "" > + default "$(BR2_DEFCONFIG)" if "$(BR2_DEFCONFIG)" != "" > default "$(CONFIG_DIR)/defconfig" > help > When running 'make savedefconfig', the defconfig file will be > @@ -197,7 +176,7 @@ config BR2_DEFCONFIG > > config BR2_DL_DIR > string "Download dir" > - default "$(TOPDIR)/dl" > + default "\$(TOPDIR)/dl" So here the "\$(TOPDIR)" is because we actually don't want the "new" feature to kick in, and we want the value of this variable to be expanded not by kconfig, but by the makefile machinery? So this also means that when we do $(BR2_EXTERNAL_BLABLA_PATH) in our .config, it now also need to be \$(BR2_EXTERNAL_BLABLA_PATH) ? If so that's going to break a *lot* of things... Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 19:06:23 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:06:23 +0200 Subject: [Buildroot] [PATCH v1 7/8] support/kconfig: reference environment variables directly (remove 'option env=') In-Reply-To: <20240506144555.31709-8-ps.report@gmx.net> References: <20240506144555.31709-1-ps.report@gmx.net> <20240506144555.31709-8-ps.report@gmx.net> Message-ID: <20240506210623.7c3b3065@windsurf> On Mon, 6 May 2024 16:45:50 +0200 Peter Seiderer via buildroot wrote: > config BR2_DEFCONFIG > string "Location to save buildroot config" > - default BR2_DEFCONFIG_FROM_ENV if BR2_DEFCONFIG_FROM_ENV != "" > + default "$(BR2_DEFCONFIG)" if "$(BR2_DEFCONFIG)" != "" > default "$(CONFIG_DIR)/defconfig" > help > When running 'make savedefconfig', the defconfig file will be > @@ -197,7 +176,7 @@ config BR2_DEFCONFIG > > config BR2_DL_DIR > string "Download dir" > - default "$(TOPDIR)/dl" > + default "\$(TOPDIR)/dl" So here the "\$(TOPDIR)" is because we actually don't want the "new" feature to kick in, and we want the value of this variable to be expanded not by kconfig, but by the makefile machinery? So this also means that when we do $(BR2_EXTERNAL_BLABLA_PATH) in our .config, it now also need to be \$(BR2_EXTERNAL_BLABLA_PATH) ? If so that's going to break a *lot* of things... Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 19:14:00 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:14:00 +0200 Subject: [Buildroot] [git commit] package/ell: bump to version 0.65 Message-ID: <20240506191436.CC62E867AB@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=82ed4fb1c9348426c1e598b6d255dfe0e426be0d branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: James Hilliard Signed-off-by: Thomas Petazzoni --- package/ell/ell.hash | 2 +- package/ell/ell.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/ell/ell.hash b/package/ell/ell.hash index f5ded676c3..3adca75140 100644 --- a/package/ell/ell.hash +++ b/package/ell/ell.hash @@ -1,5 +1,5 @@ # From https://mirrors.edge.kernel.org/pub/linux/libs/ell/sha256sums.asc -sha256 7397c76996d7646b9917ebf016cd67586b10166295af2e0e18cdb5b8f6659965 ell-0.63.tar.xz +sha256 9ee7ac57b188d391cead705d3596a6d3240341786475149db297782a52269aa5 ell-0.65.tar.xz # License files sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING diff --git a/package/ell/ell.mk b/package/ell/ell.mk index f43dbdb5f7..a682635539 100644 --- a/package/ell/ell.mk +++ b/package/ell/ell.mk @@ -4,7 +4,7 @@ # ################################################################################ -ELL_VERSION = 0.63 +ELL_VERSION = 0.65 ELL_SOURCE = ell-$(ELL_VERSION).tar.xz ELL_SITE = $(BR2_KERNEL_MIRROR)/linux/libs/ell ELL_LICENSE = LGPL-2.1+ From thomas.petazzoni at bootlin.com Mon May 6 19:14:03 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:14:03 +0200 Subject: [Buildroot] [git commit] package/iwd: bump to version 2.17 Message-ID: <20240506191436.D8167867AC@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=ffc4af650aeff6787569fa70957f8fe3c1c297b7 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: James Hilliard Signed-off-by: Thomas Petazzoni --- package/iwd/iwd.hash | 2 +- package/iwd/iwd.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/iwd/iwd.hash b/package/iwd/iwd.hash index 3f18146e13..9f88b2d6f1 100644 --- a/package/iwd/iwd.hash +++ b/package/iwd/iwd.hash @@ -1,5 +1,5 @@ # From https://mirrors.edge.kernel.org/pub/linux/network/wireless/sha256sums.asc -sha256 c1a82032e994861e794cf3b5a16d07ae1aa03a6674f716c73408ffeae2a233ba iwd-2.16.tar.xz +sha256 5901ab3fbb74bb75ec9adda35daeff595e4d238882fee7fc8c805b30ca79d943 iwd-2.17.tar.xz # License files sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING diff --git a/package/iwd/iwd.mk b/package/iwd/iwd.mk index af6b2f849a..c516bab471 100644 --- a/package/iwd/iwd.mk +++ b/package/iwd/iwd.mk @@ -4,7 +4,7 @@ # ################################################################################ -IWD_VERSION = 2.16 +IWD_VERSION = 2.17 IWD_SOURCE = iwd-$(IWD_VERSION).tar.xz IWD_SITE = $(BR2_KERNEL_MIRROR)/linux/network/wireless IWD_LICENSE = LGPL-2.1+ From thomas.petazzoni at bootlin.com Mon May 6 19:14:52 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:14:52 +0200 Subject: [Buildroot] [PATCH 1/2] package/ell: bump to version 0.65 In-Reply-To: <20240506185231.3470040-1-james.hilliard1@gmail.com> References: <20240506185231.3470040-1-james.hilliard1@gmail.com> Message-ID: <20240506211452.3dc4b395@windsurf> On Mon, 6 May 2024 12:52:30 -0600 James Hilliard wrote: > Signed-off-by: James Hilliard > --- > package/ell/ell.hash | 2 +- > package/ell/ell.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Both applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 19:25:51 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:25:51 +0200 Subject: [Buildroot] [PATCH 1/1] package/highway: fix build with powerpc7 In-Reply-To: <20240505084753.38281-1-fontaine.fabrice@gmail.com> References: <20240505084753.38281-1-fontaine.fabrice@gmail.com> Message-ID: <20240506212551.55d9132c@windsurf> Hello Fabrice, On Sun, 5 May 2024 10:47:53 +0200 Fabrice Fontaine wrote: > +ifeq ($(BR2_powerpc_power7),y) > +HIGHWAY_CXXFLAGS += -DHWY_DISABLE_PPC8_CRYPTO > +endif You're going to hate me, but this really shouldn't require a hack in Buildroot's packaging. It should be handled directly by the highway build system/conditional build logic. BTW, some stuff in hwy/detect_targets.h is weird: #if HWY_ARCH_PPC && HWY_COMPILER_GCC && defined(__ALTIVEC__) && \ defined(__VSX__) && defined(__POWER8_VECTOR__) && \ (defined(__CRYPTO__) || defined(HWY_DISABLE_PPC8_CRYPTO)) #define HWY_BASELINE_PPC8 HWY_PPC8 #else #define HWY_BASELINE_PPC8 0 #endif Why is this defined(__CRYPTO__) || defined(HWY_DISABLE_PPC8_CRYPTO) ? So when you *disable* PPC8 crypto, it uses it? Or I am misunderstanding things? The problematic code starts with: #if !HWY_S390X_HAVE_Z14 && !defined(HWY_DISABLE_PPC8_CRYPTO) I guess it needs some additional condition to not kick in on Power7. Could you have a look into this, or report the bug upstream? Best regards, Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 19:27:53 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:27:53 +0200 Subject: [Buildroot] [git commit] package/shadow: fix NLS build Message-ID: <20240506192805.DED12867B1@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=f82384652c0feed99dc07f08fae5ec1646d38dfc branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master NLS is an optional dependency since the addition of the package in commit f78c5cb5cae93a9e63dad4361d78e1787759382f: /home/autobuild/autobuild/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-musleabi/12.3.0/../../../../arm-buildroot-linux-musleabi/bin/ld: ../lib/.libs/libshadow.a(libshadow_la-alloc.o): in function `xcalloc': alloc.c:(.text+0x7c): undefined reference to `libintl_gettext' Fixes: f78c5cb5cae93a9e63dad4361d78e1787759382f - http://autobuild.buildroot.org/results/9f604d09745ffa1f4db3bdcfe0326c236effac0c Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/shadow/shadow.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package/shadow/shadow.mk b/package/shadow/shadow.mk index 491f271330..e4d8b67b8a 100644 --- a/package/shadow/shadow.mk +++ b/package/shadow/shadow.mk @@ -10,6 +10,8 @@ SHADOW_SOURCE = shadow-$(SHADOW_VERSION).tar.xz SHADOW_LICENSE = BSD-3-Clause SHADOW_LICENSE_FILES = COPYING SHADOW_CPE_ID_VENDOR = debian +SHADOW_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) +SHADOW_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) SHADOW_CONF_OPTS = \ --disable-man \ From thomas.petazzoni at bootlin.com Mon May 6 19:28:11 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:28:11 +0200 Subject: [Buildroot] [PATCH 1/1] package/shadow: fix NLS build In-Reply-To: <20240505141759.872371-1-fontaine.fabrice@gmail.com> References: <20240505141759.872371-1-fontaine.fabrice@gmail.com> Message-ID: <20240506212811.548239ea@windsurf> On Sun, 5 May 2024 16:17:59 +0200 Fabrice Fontaine wrote: > NLS is an optional dependency since the addition of the package in > commit f78c5cb5cae93a9e63dad4361d78e1787759382f: > > /home/autobuild/autobuild/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-musleabi/12.3.0/../../../../arm-buildroot-linux-musleabi/bin/ld: ../lib/.libs/libshadow.a(libshadow_la-alloc.o): in function `xcalloc': > alloc.c:(.text+0x7c): undefined reference to `libintl_gettext' > > Fixes: f78c5cb5cae93a9e63dad4361d78e1787759382f > - http://autobuild.buildroot.org/results/9f604d09745ffa1f4db3bdcfe0326c236effac0c > > Signed-off-by: Fabrice Fontaine > --- > package/shadow/shadow.mk | 2 ++ > 1 file changed, 2 insertions(+) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 19:28:53 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:28:53 +0200 Subject: [Buildroot] [PATCH 1/1] package/pppd: fix build with kernel < 4.7 In-Reply-To: <20240505155349.1149835-1-fontaine.fabrice@gmail.com> References: <20240505155349.1149835-1-fontaine.fabrice@gmail.com> Message-ID: <20240506212853.0f36f8d2@windsurf> On Sun, 5 May 2024 17:53:49 +0200 Fabrice Fontaine wrote: > Fix the following build failure with kernel < 4.7 raised since bump to > version 2.5.0 in commit 0c15169f5ae57d88a77df34cc896044a37c9597b and > https://github.com/ppp-project/ppp/commit/81ad945630120cc1c27c8bb00503be42b76ff202: > > sys-linux.c: In function 'get_ppp_stats_rtnetlink': > sys-linux.c:1783:29: error: field 'ifsm' has incomplete type > 1783 | struct if_stats_msg ifsm; > | ^~~~ > > Fixes: > - http://autobuild.buildroot.org/results/82392df447f650f241f23e59e65131fb4a930010 > > Signed-off-by: Fabrice Fontaine > --- > ...pile-with-older-Linux-kernel-headers.patch | 66 +++++++++++++++++++ > 1 file changed, 66 insertions(+) > create mode 100644 package/pppd/0005-pppd-sys-linux-Fix-compile-with-older-Linux-kernel-headers.patch Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 19:30:17 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:30:17 +0200 Subject: [Buildroot] [git commit] configs/sheevaplug_defconfig: bump Linux to fix binutils 2.41 build Message-ID: <20240506193050.A943C867B0@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=c0dc1b3425ae3bade14553a96e7475a79d753d4e branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6761770801 The Linux kernel fails to build since commit e88225ed882 (package/binutils: make 2.41 the default version): arch/arm/mm/proc-feroceon.S: Assembler messages: arch/arm/mm/proc-feroceon.S:587: Error: junk at end of line, first unrecognized character is `#' make[3]: *** [scripts/Makefile.build:430: arch/arm/mm/proc-feroceon.o] Error 1 make[3]: *** Waiting for unfinished jobs.... Fix the build by bumping the kernel to 4.14.336, which includes commit 3ab03df64f77 (ARM: 8933/1: replace Sun/Solaris style flag on section directive): https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-4.14.y&id=3ab03df64f7754728a2257c47775a70a88428331 Signed-off-by: Peter Korsgaard Signed-off-by: Thomas Petazzoni --- configs/sheevaplug_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/sheevaplug_defconfig b/configs/sheevaplug_defconfig index 7f186df22c..0879f17071 100644 --- a/configs/sheevaplug_defconfig +++ b/configs/sheevaplug_defconfig @@ -27,7 +27,7 @@ BR2_TARGET_UBOOT_FORMAT_KWB=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.253" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.336" BR2_LINUX_KERNEL_DEFCONFIG="mvebu_v5" BR2_LINUX_KERNEL_APPENDED_UIMAGE=y BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" From thomas.petazzoni at bootlin.com Mon May 6 19:28:47 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:28:47 +0200 Subject: [Buildroot] [git commit] package/pppd: fix build with kernel < 4.7 Message-ID: <20240506193050.9A14A867DB@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=45c1def9915ead52a5e4b874c33194653b598117 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fix the following build failure with kernel < 4.7 raised since bump to version 2.5.0 in commit 0c15169f5ae57d88a77df34cc896044a37c9597b and https://github.com/ppp-project/ppp/commit/81ad945630120cc1c27c8bb00503be42b76ff202: sys-linux.c: In function 'get_ppp_stats_rtnetlink': sys-linux.c:1783:29: error: field 'ifsm' has incomplete type 1783 | struct if_stats_msg ifsm; | ^~~~ Fixes: - http://autobuild.buildroot.org/results/82392df447f650f241f23e59e65131fb4a930010 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- ...x-compile-with-older-Linux-kernel-headers.patch | 66 ++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/package/pppd/0005-pppd-sys-linux-Fix-compile-with-older-Linux-kernel-headers.patch b/package/pppd/0005-pppd-sys-linux-Fix-compile-with-older-Linux-kernel-headers.patch new file mode 100644 index 0000000000..46c293103a --- /dev/null +++ b/package/pppd/0005-pppd-sys-linux-Fix-compile-with-older-Linux-kernel-headers.patch @@ -0,0 +1,66 @@ +From 7a3f478a4b7128d4f70ea64d99fedec766b1c009 Mon Sep 17 00:00:00 2001 +From: Jaco Kroon +Date: Tue, 31 Oct 2023 11:47:21 +0200 +Subject: [PATCH] pppd/sys-linux: Fix compile with older Linux kernel headers + (#452) + +When compiling pppd against kernel headers which don't provide +the definitions for the NETLINK mechanisms, leave out the code +which uses NETLINK, so as to avoid getting compile errors. + +Upstream commit in Linux refers. + +commit 10c9ead9f3c6bb24bddc9a96681f7d58e6623966 +Author: Roopa Prabhu +Date: Wed Apr 20 08:43:43 2016 -0700 +rtnetlink: add new RTM_GETSTATS message to dump link stats + +This commit adds the #defines and structs used, so simply not compiling +this code if the required #defines isn't there should solve the problem. + +Closes: #450 + +Signed-off-by: Jaco Kroon +Upstream: https://github.com/ppp-project/ppp/commit/7a3f478a4b7128d4f70ea64d99fedec766b1c009 +Signed-off-by: Fabrice Fontaine +--- + pppd/sys-linux.c | 12 ++---------- + 1 file changed, 2 insertions(+), 10 deletions(-) + +diff --git a/pppd/sys-linux.c b/pppd/sys-linux.c +index 561b150f2..a8d6cd95b 100644 +--- a/pppd/sys-linux.c ++++ b/pppd/sys-linux.c +@@ -131,16 +131,6 @@ + #include + #include + #include +- +-/* Attempt at retaining compile-support with older than 4.7 kernels, or kernels +- * where RTM_NEWSTATS isn't defined for whatever reason. +- */ +-#ifndef RTM_NEWSTATS +-#define RTM_NEWSTATS 92 +-#define RTM_GETSTATS 94 +-#define IFLA_STATS_LINK_64 1 +-#endif +- + #include + + /* glibc versions prior to 2.24 do not define SOL_NETLINK */ +@@ -1776,6 +1766,7 @@ get_ppp_stats_ioctl(int u, struct pppd_stats *stats) + static int + get_ppp_stats_rtnetlink(int u, struct pppd_stats *stats) + { ++#ifdef RTM_NEWSTATS + static int fd = -1; + + struct { +@@ -1825,6 +1816,7 @@ get_ppp_stats_rtnetlink(int u, struct pppd_stats *stats) + err: + close(fd); + fd = -1; ++#endif + return 0; + } + From thomas.petazzoni at bootlin.com Mon May 6 19:30:33 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:30:33 +0200 Subject: [Buildroot] [git commit] configs/sheevaplug_defconfig: add hashes for u-boot and Linux Message-ID: <20240506193050.B7544867DD@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=56ce35d235b7f7b297e33c118e4e7b64491f73c6 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master And enable BR2_DOWNLOAD_FORCE_CHECK_HASHES. Generated by utils/add-custom-hashes, with the (redundant) linux-headers.hash replaced by a symlink. Signed-off-by: Peter Korsgaard Signed-off-by: Thomas Petazzoni --- .checkpackageignore | 1 - board/sheevaplug/patches/linux-headers/linux-headers.hash | 1 + board/sheevaplug/patches/linux/linux.hash | 2 ++ board/sheevaplug/patches/uboot/uboot.hash | 2 ++ configs/sheevaplug_defconfig | 1 + 5 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.checkpackageignore b/.checkpackageignore index 1135fa7175..44d4250e14 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -348,7 +348,6 @@ configs/rock_pi_n8_defconfig lib_defconfig.ForceCheckHash configs/rockpro64_defconfig lib_defconfig.ForceCheckHash configs/roseapplepi_defconfig lib_defconfig.ForceCheckHash configs/s6lx9_microboard_defconfig lib_defconfig.ForceCheckHash -configs/sheevaplug_defconfig lib_defconfig.ForceCheckHash configs/sipeed_lichee_rv_defconfig lib_defconfig.ForceCheckHash configs/sipeed_lichee_rv_dock_defconfig lib_defconfig.ForceCheckHash configs/sipeed_licheepi_nano_defconfig lib_defconfig.ForceCheckHash diff --git a/board/sheevaplug/patches/linux-headers/linux-headers.hash b/board/sheevaplug/patches/linux-headers/linux-headers.hash new file mode 120000 index 0000000000..5808d92afe --- /dev/null +++ b/board/sheevaplug/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/sheevaplug/patches/linux/linux.hash b/board/sheevaplug/patches/linux/linux.hash new file mode 100644 index 0000000000..b207306a2b --- /dev/null +++ b/board/sheevaplug/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 0820fdb7971c6974338081c11fbf2dc869870501e7bdcac4d0ed58ba1f57b61c linux-4.14.336.tar.xz diff --git a/board/sheevaplug/patches/uboot/uboot.hash b/board/sheevaplug/patches/uboot/uboot.hash new file mode 100644 index 0000000000..d6818bac36 --- /dev/null +++ b/board/sheevaplug/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9f10df88bc91b35642e461217f73256bbaeeca9ae2db8db56197ba5e89e1f6d4 u-boot-2018.07.tar.bz2 diff --git a/configs/sheevaplug_defconfig b/configs/sheevaplug_defconfig index 0879f17071..6b3719a507 100644 --- a/configs/sheevaplug_defconfig +++ b/configs/sheevaplug_defconfig @@ -4,6 +4,7 @@ BR2_arm926t=y # system BR2_GLOBAL_PATCH_DIR="board/sheevaplug/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y BR2_TARGET_GENERIC_GETTY=y BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" BR2_SYSTEM_DHCP="eth0" From thomas.petazzoni at bootlin.com Mon May 6 19:31:22 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:31:22 +0200 Subject: [Buildroot] [PATCH v2 1/2] configs/sheevaplug_defconfig: bump Linux to fix binutils 2.41 build In-Reply-To: <20240506074013.263439-1-peter@korsgaard.com> References: <20240506074013.263439-1-peter@korsgaard.com> Message-ID: <20240506213122.1da7a111@windsurf> On Mon, 6 May 2024 09:40:11 +0200 Peter Korsgaard wrote: > Fixes: > https://gitlab.com/buildroot.org/buildroot/-/jobs/6761770801 > > The Linux kernel fails to build since commit e88225ed882 (package/binutils: > make 2.41 the default version): > > arch/arm/mm/proc-feroceon.S: Assembler messages: > arch/arm/mm/proc-feroceon.S:587: Error: junk at end of line, first unrecognized character is `#' > make[3]: *** [scripts/Makefile.build:430: arch/arm/mm/proc-feroceon.o] Error 1 > make[3]: *** Waiting for unfinished jobs.... > > Fix the build by bumping the kernel to 4.14.336, which includes commit > 3ab03df64f77 (ARM: 8933/1: replace Sun/Solaris style flag on section > directive): > > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-4.14.y&id=3ab03df64f7754728a2257c47775a70a88428331 > > Signed-off-by: Peter Korsgaard > --- > configs/sheevaplug_defconfig | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Series applied. In the second patch you had forgotten (perhaps intentionally?) to update .checkpackageignore, so I did it while applying. Thanks! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 19:31:35 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:31:35 +0200 Subject: [Buildroot] [git commit] package/libhtp: security bump to version 0.5.48 Message-ID: <20240506193257.48156867E9@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=babb39c87366217ce84269ba11b29475d3d183b7 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fix CVE-2024-23837 and CVE-2024-28871 https://github.com/OISF/libhtp/security/advisories/GHSA-f9wf-rrjj-qx8m https://github.com/OISF/libhtp/security/advisories/GHSA-ffr2-45w9-7wmg https://github.com/OISF/libhtp/blob/0.5.48/ChangeLog Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/libhtp/libhtp.hash | 2 +- package/libhtp/libhtp.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/libhtp/libhtp.hash b/package/libhtp/libhtp.hash index c016cb3439..1809bc93a3 100644 --- a/package/libhtp/libhtp.hash +++ b/package/libhtp/libhtp.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 d4214f94522fa5a1ec1909dbb52831c534788d93bc6b2ca8252de9332b11b606 libhtp-0.5.45.tar.gz +sha256 7f0719732fd0c82f9915e3df27e31548798590ad624fbad24f58b50885248ab8 libhtp-0.5.48.tar.gz sha256 87c93904e5434c81622ea690c2b90097b9f162aaa92a96542649a157dbf98d15 LICENSE diff --git a/package/libhtp/libhtp.mk b/package/libhtp/libhtp.mk index 8a732d1d5c..8735f593d9 100644 --- a/package/libhtp/libhtp.mk +++ b/package/libhtp/libhtp.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBHTP_VERSION = 0.5.45 +LIBHTP_VERSION = 0.5.48 LIBHTP_SITE = $(call github,OISF,libhtp,$(LIBHTP_VERSION)) LIBHTP_LICENSE = BSD-3-Clause LIBHTP_LICENSE_FILES = LICENSE From thomas.petazzoni at bootlin.com Mon May 6 19:31:38 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:31:38 +0200 Subject: [Buildroot] [git commit] package/suricata: security bump to version 6.0.19 Message-ID: <20240506193257.59F07867EA@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=a8e60c4600f42212cb8c42e5b288d6406bb80db4 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fixes: - CVE-2024-23839 - Critical severity - CVE-2024-23836 - Critical severity - CVE-2024-23835 - High severity - CVE-2024-24568 - Moderate severity - CVE-2024-28870 - HIGH - CVE-2024-32663 CRITICAL (HIGH for 6.0.x) - CVE-2024-32664 CRITICAL (HIGH for 7.0.x) - CVE-2024-32867 MODERATE https://forum.suricata.io/t/suricata-7-0-3-and-6-0-16-released/4468 https://forum.suricata.io/t/suricata-7-0-4-and-6-0-17-released/4534 https://forum.suricata.io/t/suricata-6-0-18-released/4539 https://forum.suricata.io/t/suricata-7-0-5-and-6-0-19-released/4617 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/suricata/suricata.hash | 2 +- package/suricata/suricata.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/suricata/suricata.hash b/package/suricata/suricata.hash index 41befa61b9..58ab0d93b0 100644 --- a/package/suricata/suricata.hash +++ b/package/suricata/suricata.hash @@ -1,5 +1,5 @@ # Locally computed: -sha256 1bd546149ac6671c2476d520a38eab7755e10c3080fd2ec2dc8624b0cf89ee75 suricata-6.0.15.tar.gz +sha256 98c812faef466d337f107f13ae37843f1c719942b93832d70f1a2fd7ee1b5c2c suricata-6.0.19.tar.gz # Hash for license files: sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/suricata/suricata.mk b/package/suricata/suricata.mk index 5b52635328..2083e0caba 100644 --- a/package/suricata/suricata.mk +++ b/package/suricata/suricata.mk @@ -4,7 +4,7 @@ # ################################################################################ -SURICATA_VERSION = 6.0.15 +SURICATA_VERSION = 6.0.19 SURICATA_SITE = https://www.openinfosecfoundation.org/download SURICATA_LICENSE = GPL-2.0 SURICATA_LICENSE_FILES = COPYING LICENSE From thomas.petazzoni at bootlin.com Mon May 6 19:33:03 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:33:03 +0200 Subject: [Buildroot] [PATCH 1/2] package/libhtp: security bump to version 0.5.48 In-Reply-To: <20240506081959.330708-1-fontaine.fabrice@gmail.com> References: <20240506081959.330708-1-fontaine.fabrice@gmail.com> Message-ID: <20240506213303.69b9fa83@windsurf> On Mon, 6 May 2024 10:19:58 +0200 Fabrice Fontaine wrote: > Fix CVE-2024-23837 and CVE-2024-28871 > > https://github.com/OISF/libhtp/security/advisories/GHSA-f9wf-rrjj-qx8m > https://github.com/OISF/libhtp/security/advisories/GHSA-ffr2-45w9-7wmg > https://github.com/OISF/libhtp/blob/0.5.48/ChangeLog > > Signed-off-by: Fabrice Fontaine > --- > package/libhtp/libhtp.hash | 2 +- > package/libhtp/libhtp.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Both applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 19:41:09 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:41:09 +0200 Subject: [Buildroot] [git commit] package/oprofile: fix static build with binutils >= 2.40 Message-ID: <20240506194527.B37D3867F1@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=5272c6bea1247e87a32947bd960757a19fdf8b90 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master sframe library was added by binutils 2.40 and https://github.com/bminor/binutils-gdb/commit/19e559f1c91bfaedbd2f91d85ee161f3f03fda3c resulting in the following static build failure: /home/buildroot/autobuild/run/instance-1/output-1/build/binutils-2.41/bfd/elf-sframe.c:220: undefined reference to `sframe_decode' [...] configure: error: bfd library not found Fixes: - http://autobuild.buildroot.org/results/a9f3e09e6543b3773440c011e93bd41e357691e4 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- .../0002-fix-static-build-with-binutils-2.40.patch | 62 ++++++++++++++++++++++ package/oprofile/oprofile.mk | 7 +++ 2 files changed, 69 insertions(+) diff --git a/package/oprofile/0002-fix-static-build-with-binutils-2.40.patch b/package/oprofile/0002-fix-static-build-with-binutils-2.40.patch new file mode 100644 index 0000000000..3134363abc --- /dev/null +++ b/package/oprofile/0002-fix-static-build-with-binutils-2.40.patch @@ -0,0 +1,62 @@ +From 1e4cd78bca2bd6e0d17b6cb9caf1b172d7bac564 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 6 May 2024 08:41:49 +0200 +Subject: [PATCH] fix static build with binutils >= 2.40 + +sframe library was added by binutils 2.40 and +https://github.com/bminor/binutils-gdb/commit/19e559f1c91bfaedbd2f91d85ee161f3f03fda3c +resulting in the following static build failure: + +/home/buildroot/autobuild/run/instance-1/output-1/build/binutils-2.41/bfd/elf-sframe.c:220: undefined reference to `sframe_decode' + +[...] + +configure: error: bfd library not found + +Fixes: + - http://autobuild.buildroot.org/results/a9f3e09e6543b3773440c011e93bd41e357691e4 + +Signed-off-by: Fabrice Fontaine +Upstream: https://sourceforge.net/p/oprofile/bugs/295 +--- + configure.ac | 2 +- + m4/binutils.m4 | 7 +++++-- + 2 files changed, 6 insertions(+), 3 deletions(-) + +diff --git a/configure.ac b/configure.ac +index dc447f89..72ef0a21 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -334,7 +334,7 @@ AX_CHECK_DOCBOOK + dnl finally restore the original libs setting + LIBS="$ORIG_SAVE_LIBS" + LIBERTY_LIBS="-liberty $DL_LIB $INTL_LIB" +-BFD_LIBS="-lbfd -liberty $DL_LIB $INTL_LIB $Z_LIB" ++BFD_LIBS="-lbfd -liberty $DL_LIB $INTL_LIB $SFRAME_LIB $Z_LIB" + POPT_LIBS="-lpopt" + AC_SUBST(LIBERTY_LIBS) + AC_SUBST(BFD_LIBS) +diff --git a/m4/binutils.m4 b/m4/binutils.m4 +index c50e2f3c..e1ccd8e7 100644 +--- a/m4/binutils.m4 ++++ b/m4/binutils.m4 +@@ -10,11 +10,14 @@ AC_CHECK_FUNCS(xmemdup) + AC_CHECK_LIB(dl, dlopen, LIBS="$LIBS -ldl"; DL_LIB="-ldl", DL_LIB="") + AC_CHECK_LIB(intl, main, LIBS="$LIBS -lintl"; INTL_LIB="-lintl", INTL_LIB="") + +-AC_CHECK_LIB(bfd, bfd_openr, LIBS="-lbfd $LIBS"; Z_LIB="", ++AC_CHECK_LIB(bfd, bfd_openr, LIBS="-lbfd $LIBS"; SFRAME_LIB=""; Z_LIB="", + [AC_CHECK_LIB(z, compress, + dnl Use a different bfd function here so as not to use cached result from above + [AC_CHECK_LIB(bfd, bfd_fdopenr, LIBS="-lbfd -lz $LIBS"; Z_LIB="-lz", +- [AC_MSG_ERROR([bfd library not found])], -lz) ++dnl Use a different bfd function here so as not to use cached result from above ++ [AC_CHECK_LIB(bfd, bfd_close, LIBS="-lbfd -lsframe -lz $LIBS"; SFRAME_LIB="-lsframe"; Z_LIB="-lz", ++ [AC_MSG_ERROR([bfd library not found])], -lsframe -lz) ++ ], -lz) + ], + [AC_MSG_ERROR([libz library not found; required by libbfd])]) + ] +-- +2.43.0 + diff --git a/package/oprofile/oprofile.mk b/package/oprofile/oprofile.mk index 512fbf9ea1..590e63b4ac 100644 --- a/package/oprofile/oprofile.mk +++ b/package/oprofile/oprofile.mk @@ -12,6 +12,13 @@ OPROFILE_CPE_ID_VENDOR = maynard_johnson OPROFILE_CONF_OPTS = \ --disable-account-check \ --with-kernel=$(STAGING_DIR)/usr +# 0002-fix-static-build-with-binutils-2.40.patch +OPROFILE_AUTORECONF = YES + +define OPROFILE_CREATE_MISSING_FILES + touch $(@D)/NEWS $(@D)/AUTHORS $(@D)/ChangeLog +endef +OPROFILE_POST_EXTRACT_HOOKS += OPROFILE_CREATE_MISSING_FILES OPROFILE_DEPENDENCIES = popt binutils host-pkgconf From thomas.petazzoni at bootlin.com Mon May 6 19:45:51 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:45:51 +0200 Subject: [Buildroot] [PATCH 1/1] package/oprofile: fix static build with binutils >= 2.40 In-Reply-To: <20240506070049.137839-1-fontaine.fabrice@gmail.com> References: <20240506070049.137839-1-fontaine.fabrice@gmail.com> Message-ID: <20240506214551.4fda91cf@windsurf> On Mon, 6 May 2024 09:00:49 +0200 Fabrice Fontaine wrote: > sframe library was added by binutils 2.40 and > https://github.com/bminor/binutils-gdb/commit/19e559f1c91bfaedbd2f91d85ee161f3f03fda3c > resulting in the following static build failure: > > /home/buildroot/autobuild/run/instance-1/output-1/build/binutils-2.41/bfd/elf-sframe.c:220: undefined reference to `sframe_decode' > > [...] > > configure: error: bfd library not found > > Fixes: > - http://autobuild.buildroot.org/results/a9f3e09e6543b3773440c011e93bd41e357691e4 > > Signed-off-by: Fabrice Fontaine > --- > ...-fix-static-build-with-binutils-2.40.patch | 62 +++++++++++++++++++ > package/oprofile/oprofile.mk | 7 +++ > 2 files changed, 69 insertions(+) > create mode 100644 package/oprofile/0002-fix-static-build-with-binutils-2.40.patch Life would *really* be easier if binutils was installing a libbfd.pc, and oprofile would use it to detect libbfd and automatically know about its indirect dependencies. But oh well, patch applied, thanks! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 19:51:00 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:51:00 +0200 Subject: [Buildroot] [PATCH v2] configs/beagleboneai64_defconfig: new defconfig In-Reply-To: <20240506083905.14681-1-romain.naour@smile.fr> References: <20240506083905.14681-1-romain.naour@smile.fr> Message-ID: <20240506215100.13296b7a@windsurf> Hello Romain, On Mon, 6 May 2024 10:39:05 +0200 Romain Naour wrote: > Adds support for BeagleBone AI-64 board by introducing the > beagleboneai64_defconfig file and related support files. Perhaps you should state that this board uses the J721E SoC, also known as DRA829, also known as TDA4VM. This would help... > > Retrieve BSP settings from meta-ti (may be useful for other TI boards): > > - This defconfig requires u-boot binman support added in u-boot since > 2023.10. > See FOSDEM 2024 talk by TI folks about Binman and how it simplify > the overall boot-loader build flow [1]. > > - Set BR2_TARGET_ARM_TRUSTED_FIRMWARE_TARGET_BOARD = "generic" > meta-ti]$ git grep TFA_BOARD > meta-ti-bsp/conf/machine/beagleplay.conf:TFA_BOARD = "lite" > meta-ti-bsp/conf/machine/include/am62axx.inc:TFA_BOARD = "lite" > meta-ti-bsp/conf/machine/include/am62pxx.inc:TFA_BOARD = "lite" > meta-ti-bsp/conf/machine/include/am62xx.inc:TFA_BOARD = "lite" > meta-ti-bsp/conf/machine/include/am64xx.inc:TFA_BOARD = "lite" > meta-ti-bsp/conf/machine/include/am65xx.inc:TFA_BOARD = "generic" > meta-ti-bsp/conf/machine/include/j7200.inc:TFA_BOARD = "generic" > meta-ti-bsp/conf/machine/include/j721e.inc:TFA_BOARD = "generic" ... understand that this setting is the important one. > meta-ti-bsp/conf/machine/include/j721s2.inc:TFA_BOARD = "generic" > meta-ti-bsp/conf/machine/include/j722s.inc:TFA_BOARD = "lite" > meta-ti-bsp/conf/machine/include/j784s4.inc:TFA_BOARD = "j784s4" > > - Set BR2_TARGET_UBOOT_NEEDS_ATF_BL31 to provide BL31 variable pointing > to ATF bl31.bin to the U-Boot build process [2]. > > - Set BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE to OP-TEE as BL32 > secure payload. meta-ti set "SPD=opteed" to build ATF [3]. > > - Set BR2_TARGET_OPTEE_OS_PLATFORM to "k3-j721e". ... and understand this setting as well. > - u-boot is looking at /boot/dtb/ti for devicetree. But Buildroot > strips the prefixes when installing them into /boot. Set > BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME to keep "ti" directory used by > the kernel to organize device tree sources. > TI's mmc.env [5] uses "dtb" as additional subdirectory, so we need > to create a symlink to make sure /boot/dtb/ti exist. > (Yocto uses KERNEL_DTBDEST = "${KERNEL_IMAGEDEST}/dtb"). > Using a symlink avoid to customize too much the u-boot environment. > > - At least, provide a custom uEnv.txt to avoid using "Standard boot" > or "distroboot" [6] to boot. I'm not sure to understand the "At least" here. Also, why don't you want to use distroboot? We precisely try to encourage using distroboot in Buildroot defconfigs, instead of uEnv.txt stuff. So it's a bit going backward to use uEnv.txt here. Could you explain this? > diff --git a/configs/beagleboneai64_defconfig b/configs/beagleboneai64_defconfig > new file mode 100644 > index 0000000000..593c41625c > --- /dev/null > +++ b/configs/beagleboneai64_defconfig > @@ -0,0 +1,50 @@ > +BR2_aarch64=y > +BR2_cortex_a72=y > +BR2_GLOBAL_PATCH_DIR="board/beagleboard/beagleboneai64/patches" > +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y Aren't we supposed to have BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_XYZ=y somewhere? Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 19:58:18 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:58:18 +0200 Subject: [Buildroot] [git commit] configs/orangepi_zero2w: new board Message-ID: <20240506195843.AA73B86805@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=837d2a7ef257bfe0c091ab8ed3416ccc94b188b0 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master This patch adds basic support for the new OrangePi Zero2W board: - http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-Zero-2W.html Brief summary of the board features: - H618 Allwinner SoC - Quad-Core ARM Cortex-A53 Processor 1.5GHz - Mali G31 MP2 GPU - LPDDR4: 1GB/2GB/4GB - Wi-Fi5.0+BT 5.0 - 2x Type-C USB 2.0 - 1x Mini HDMI - Wi-Fi 5.0 + BT 5.0 - 40-pin expansion interface (GPIO / UART / I2C / SPI / PWM) - 24-pin expansion interface (2x USB 2.0 / ETH / IR / audio) BSP includes the following components: - mainline ATF v2.10 - mainline U-Boot v2024.04 - mainline Linux kernel v6.8 No custom scripts required: all is covered by common orangepi scripts. However new option BR2_DOWNLOAD_FORCE_CHECK_HASHES requires checksums for all the BSP components. They are added as board specific patches. Signed-off-by: Sergey Matyukevich Signed-off-by: Thomas Petazzoni --- DEVELOPERS | 2 + .../arm-trusted-firmware/arm-trusted-firmware.hash | 2 + .../patches/linux-headers/linux-headers.hash | 1 + .../orangepi-zero2w/patches/linux/linux.hash | 2 + .../orangepi-zero2w/patches/uboot/uboot.hash | 2 + board/orangepi/orangepi-zero2w/readme.txt | 32 ++++++++++++ configs/orangepi_zero2w_defconfig | 58 ++++++++++++++++++++++ 7 files changed, 99 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index c2d3f52a59..3b19665a84 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2800,11 +2800,13 @@ F: board/orangepi/orangepi-zero F: board/orangepi/orangepi-one F: board/orangepi/orangepi-pc-plus/ F: board/orangepi/orangepi-zero-plus2/ +F: board/orangepi/orangepi-zero2w/ F: configs/linksprite_pcduino_defconfig F: configs/orangepi_one_defconfig F: configs/orangepi_pc_plus_defconfig F: configs/orangepi_zero_defconfig F: configs/orangepi_zero_plus2_defconfig +F: configs/orangepi_zero2w_defconfig F: package/armbian-firmware/ F: package/hostapd/ F: package/rtl8189fs/ diff --git a/board/orangepi/orangepi-zero2w/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/orangepi/orangepi-zero2w/patches/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 0000000000..c9d043c46f --- /dev/null +++ b/board/orangepi/orangepi-zero2w/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 2e18b881ada9198173238cca80086c787b1fa3f698944bde1743142823fc511c arm-trusted-firmware-v2.10.tar.gz diff --git a/board/orangepi/orangepi-zero2w/patches/linux-headers/linux-headers.hash b/board/orangepi/orangepi-zero2w/patches/linux-headers/linux-headers.hash new file mode 120000 index 0000000000..5808d92afe --- /dev/null +++ b/board/orangepi/orangepi-zero2w/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/orangepi/orangepi-zero2w/patches/linux/linux.hash b/board/orangepi/orangepi-zero2w/patches/linux/linux.hash new file mode 100644 index 0000000000..5a6f308c7b --- /dev/null +++ b/board/orangepi/orangepi-zero2w/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9e723232d603ab45ebf043c34714c48f277ab195c29abcb8472f2a4c3a5a1995 linux-6.8.6.tar.xz diff --git a/board/orangepi/orangepi-zero2w/patches/uboot/uboot.hash b/board/orangepi/orangepi-zero2w/patches/uboot/uboot.hash new file mode 100644 index 0000000000..97a2b4eaf9 --- /dev/null +++ b/board/orangepi/orangepi-zero2w/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 diff --git a/board/orangepi/orangepi-zero2w/readme.txt b/board/orangepi/orangepi-zero2w/readme.txt new file mode 100644 index 0000000000..84796579da --- /dev/null +++ b/board/orangepi/orangepi-zero2w/readme.txt @@ -0,0 +1,32 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the OrangePi Zero2W. Current configuration will +bring-up the board and allow access through the serial console. + +Orangepi Zero 2W links: +- http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-Zero-2W.html +- https://linux-sunxi.org/Xunlong_Orange_Pi_Zero2W + +How to build +============ + + $ make orangepi_zero2w_defconfig + $ make + +Note: you will need access to the internet to download the required sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Orangepi Zero2W and power it up. The console +is on the serial line, 115200 8N1. diff --git a/configs/orangepi_zero2w_defconfig b/configs/orangepi_zero2w_defconfig new file mode 100644 index 0000000000..4d8f25f451 --- /dev/null +++ b/configs/orangepi_zero2w_defconfig @@ -0,0 +1,58 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_8=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y + +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_GLOBAL_PATCH_DIR="board/orangepi/orangepi-zero2w/patches" + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.10" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50i_h616" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_zero2w" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="SCP=/dev/null" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.6" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-h618-orangepi-zero2w" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME=y + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Orangepi Zero2W" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="256M" +# BR2_TARGET_ROOTFS_TAR is not set + +# host tools +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y + +# image scripts +BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c $(BINARIES_DIR)/genimage.cfg" From thomas.petazzoni at bootlin.com Mon May 6 19:59:13 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:59:13 +0200 Subject: [Buildroot] [PATCH v2 1/1] configs/orangepi_zero2w: new board In-Reply-To: <20240505195427.3622027-1-geomatsi@gmail.com> References: <20240505195427.3622027-1-geomatsi@gmail.com> Message-ID: <20240506215913.43aa1fd3@windsurf> On Sun, 5 May 2024 22:54:19 +0300 Sergey Matyukevich wrote: > This patch adds basic support for the new OrangePi Zero2W board: > - http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-Zero-2W.html > > Brief summary of the board features: > - H618 Allwinner SoC > - Quad-Core ARM Cortex-A53 Processor 1.5GHz > - Mali G31 MP2 GPU > - LPDDR4: 1GB/2GB/4GB > - Wi-Fi5.0+BT 5.0 > - 2x Type-C USB 2.0 > - 1x Mini HDMI > - Wi-Fi 5.0 + BT 5.0 > - 40-pin expansion interface (GPIO / UART / I2C / SPI / PWM) > - 24-pin expansion interface (2x USB 2.0 / ETH / IR / audio) > > BSP includes the following components: > - mainline ATF v2.10 > - mainline U-Boot v2024.04 > - mainline Linux kernel v6.8 > > No custom scripts required: all is covered by common orangepi scripts. > However new option BR2_DOWNLOAD_FORCE_CHECK_HASHES requires checksums > for all the BSP components. They are added as board specific patches. > > Signed-off-by: Sergey Matyukevich > --- You had forgotten to add board/orangepi/orangepi-zero2w/ to the DEVELOPERS file, so I did that when applying. Thanks for this contribution! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From fontaine.fabrice at gmail.com Mon May 6 20:02:06 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Mon, 6 May 2024 22:02:06 +0200 Subject: [Buildroot] [PATCH 1/1] package/pppd: add linux-pam optional dependency Message-ID: <20240506200206.111393-1-fontaine.fabrice@gmail.com> linux-pam is an optional dependency which is enbled by default since bump to version 2.5.0 in commit 0c15169f5ae57d88a77df34cc896044a37c9597b and https://github.com/ppp-project/ppp/commit/2883dd07101bf851e2ea368f0c04c91aea85cff2 Signed-off-by: Fabrice Fontaine --- package/pppd/pppd.mk | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/package/pppd/pppd.mk b/package/pppd/pppd.mk index 616b843e3d..0a1eaf9209 100644 --- a/package/pppd/pppd.mk +++ b/package/pppd/pppd.mk @@ -17,6 +17,13 @@ PPPD_AUTORECONF = YES PPPD_INSTALL_STAGING = YES PPPD_CONF_OPTS = --enable-multilink +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +PPPD_CONF_OPTS += --with-pam=$(STAGING_DIR)/usr +PPPD_DEPENDENCIES += linux-pam +else +PPPD_CONF_OPTS += --without-pam +endif + ifeq ($(BR2_PACKAGE_OPENSSL),y) PPPD_CONF_OPTS += \ --enable-eaptls \ -- 2.43.0 From thomas.petazzoni at bootlin.com Mon May 6 20:02:24 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:02:24 +0200 Subject: [Buildroot] [PATCH 1/1] package/liburiparser: security bump to version 0.9.8 In-Reply-To: <20240505190821.1252791-1-fontaine.fabrice@gmail.com> References: <20240505190821.1252791-1-fontaine.fabrice@gmail.com> Message-ID: <20240506220224.4b53441a@windsurf> On Sun, 5 May 2024 21:08:21 +0200 Fabrice Fontaine wrote: > - Fixed: [CVE-2024-34402] > Protect against integer overflow in ComposeQueryEngine > - Fixed: [CVE-2024-34403] > Protect against integer overflow in ComposeQueryMallocExMm > > https://github.com/uriparser/uriparser/blob/uriparser-0.9.8/ChangeLog > > Signed-off-by: Fabrice Fontaine > --- > package/liburiparser/liburiparser.hash | 2 +- > package/liburiparser/liburiparser.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 19:59:21 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:59:21 +0200 Subject: [Buildroot] [git commit] package/liburiparser: security bump to version 0.9.8 Message-ID: <20240506200229.341AA8680C@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=6fe29e41ccd6682bca48b0d9d206ae3a631339f0 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master - Fixed: [CVE-2024-34402] Protect against integer overflow in ComposeQueryEngine - Fixed: [CVE-2024-34403] Protect against integer overflow in ComposeQueryMallocExMm https://github.com/uriparser/uriparser/blob/uriparser-0.9.8/ChangeLog Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/liburiparser/liburiparser.hash | 2 +- package/liburiparser/liburiparser.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/liburiparser/liburiparser.hash b/package/liburiparser/liburiparser.hash index 73b4ec6867..f2e3317897 100644 --- a/package/liburiparser/liburiparser.hash +++ b/package/liburiparser/liburiparser.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 1ddae35cb3cc2c36e8199829d46f1c7f8b222e74a723fdae67ec8561e1ac5a39 uriparser-0.9.7.tar.xz +sha256 1d71c054837ea32a31e462bce5a1af272379ecf511e33448e88100b87ff73b2e uriparser-0.9.8.tar.xz sha256 287f09e6546a9610f949f89e8fb937cacfeabd7bfaa8c8a0c18312193bf04ad3 COPYING diff --git a/package/liburiparser/liburiparser.mk b/package/liburiparser/liburiparser.mk index 6d25b1d9bb..b0ba8c387b 100644 --- a/package/liburiparser/liburiparser.mk +++ b/package/liburiparser/liburiparser.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBURIPARSER_VERSION = 0.9.7 +LIBURIPARSER_VERSION = 0.9.8 LIBURIPARSER_SOURCE = uriparser-$(LIBURIPARSER_VERSION).tar.xz LIBURIPARSER_SITE = https://github.com/uriparser/uriparser/releases/download/uriparser-$(LIBURIPARSER_VERSION) LIBURIPARSER_LICENSE = BSD-3-Clause From thomas.petazzoni at bootlin.com Mon May 6 20:02:44 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:02:44 +0200 Subject: [Buildroot] [PATCH v2, 1/1] package/libutempter: do not hardcode PIE In-Reply-To: <20240505190044.1246330-1-fontaine.fabrice@gmail.com> References: <20240505190044.1246330-1-fontaine.fabrice@gmail.com> Message-ID: <20240506220244.720638ca@windsurf> On Sun, 5 May 2024 21:00:44 +0200 Fabrice Fontaine wrote: > PIE will be set by buildroot if the user wants it so set > {COMPILE,LINK}_PIE to an empty value to fix the following build failure > raised since the addition of the package in commit > 02c818bc5c7a6967a212f12e4caa8ccdfa0b452b: > > /home/buildroot/autobuild/run/instance-3/output-1/host/bin/m68k-linux-gcc -W -Wall -Waggregate-return -Wcast-align -Wconversion -Wdisabled-optimization -Wmissing-declarations -Wmissing-format-attribute -Wmissing-noreturn -Wmissing-prototypes -Wpointer-arith -Wredundant-decls -Wshadow -Wstrict-prototypes -Wwrite-strings -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -std=gnu99 -DLIBEXECDIR=\"/usr/lib\" -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Wl,-z,relro -Wl,-stats -fPIE -pie -Wl,-z,now utempter.c -o utempter > > [...] > > /home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/m68k-buildroot-linux-uclibc/12.3.0/../../../../m68k-buildroot-linux-uclibc/bin/ld: /home/buildroot/autobuild/run/instance-3/output-1/host/m68k-buildroot-linux-uclibc/sysroot/usr/lib/Scrt1.o: in function `lib_main': > (.text+0x4): undefined reference to `__shared_flat_add_library' > > Fixes: 02c818bc5c7a6967a212f12e4caa8ccdfa0b452b > - http://autobuild.buildroot.org/results/3a5581fd4edf56bbdc48ab111a2351fc70f1c703 > > Signed-off-by: Fabrice Fontaine > --- > Changes v1 -> v2 (after review of Yann E. Morin): > - Also set COMPILE_PIE Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:03:21 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:03:21 +0200 Subject: [Buildroot] [git commit] boot/optee-os: bump to release v4.2.0 Message-ID: <20240506200643.967E6868B6@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=314e9549a4533cf94707cf0c1736dcbf5b0266ac branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Bump OP-TEE to the latest tagged release Signed-off-by: Bryan Brattlof Signed-off-by: Thomas Petazzoni --- boot/optee-os/Config.in | 4 ++-- boot/optee-os/optee-os.hash | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/boot/optee-os/Config.in b/boot/optee-os/Config.in index 75bf00d450..34ea993136 100644 --- a/boot/optee-os/Config.in +++ b/boot/optee-os/Config.in @@ -18,7 +18,7 @@ choice Select the version of OP-TEE OS you want to use config BR2_TARGET_OPTEE_OS_LATEST - bool "4.0.0" + bool "4.2.0" depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS select BR2_TARGET_OPTEE_OS_NEEDS_PYTHON_CRYPTOGRAPHY help @@ -70,7 +70,7 @@ endif config BR2_TARGET_OPTEE_OS_VERSION string - default "4.0.0" if BR2_TARGET_OPTEE_OS_LATEST + default "4.2.0" if BR2_TARGET_OPTEE_OS_LATEST default "custom" if BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL default BR2_TARGET_OPTEE_OS_CUSTOM_REPO_VERSION \ if BR2_TARGET_OPTEE_OS_CUSTOM_GIT diff --git a/boot/optee-os/optee-os.hash b/boot/optee-os/optee-os.hash index 1f13931ca2..663640b2ce 100644 --- a/boot/optee-os/optee-os.hash +++ b/boot/optee-os/optee-os.hash @@ -1,4 +1,4 @@ -# From https://github.com/OP-TEE/optee_os/archive/4.0.0/optee-os-4.0.0.tar.gz -sha256 2c2c9525b36c96dfad6216520721b8e9663e6cacc61d0108a0c8bffc0ea175f1 optee-os-4.0.0.tar.gz +# From https://github.com/OP-TEE/optee_os/archive/4.2.0/optee-os-4.2.0.tar.gz +sha256 ce70f0d177001bf4855cd6cd6396f515af6126e4bba9b12c716a437a5cb40c7b optee-os-4.2.0.tar.gz # Locally computed sha256 1247ee90858f4037b6cac63cbffddfed435d0d73c631b37d78c1e6e6ab3e5d1a LICENSE From thomas.petazzoni at bootlin.com Mon May 6 20:04:37 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:04:37 +0200 Subject: [Buildroot] [git commit] boot/ti-k3-r5-loader: bump to version v2024.04 Message-ID: <20240506200643.B9719868B5@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=7ff2c03287302213968e00b54e5b7a4e79238fcb branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master The ti-k3-r5-loader is just U-Boot with a different defconfig compiled for the 32b MCU cores needed for TI's K3 generation of SoCs. Update to match the U-Boot version Signed-off-by: Bryan Brattlof Signed-off-by: Thomas Petazzoni --- boot/ti-k3-r5-loader/Config.in | 4 ++-- boot/ti-k3-r5-loader/ti-k3-r5-loader.hash | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/boot/ti-k3-r5-loader/Config.in b/boot/ti-k3-r5-loader/Config.in index a6cc16a0c3..c276528fad 100644 --- a/boot/ti-k3-r5-loader/Config.in +++ b/boot/ti-k3-r5-loader/Config.in @@ -17,7 +17,7 @@ choice here as it is used to build the main U-Boot package. config BR2_TARGET_TI_K3_R5_LOADER_LATEST_VERSION - bool "2024.01" + bool "2024.04" config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION bool "Custom version" @@ -61,7 +61,7 @@ endif config BR2_TARGET_TI_K3_R5_LOADER_VERSION string - default "2024.01" if BR2_TARGET_TI_K3_R5_LOADER_LATEST_VERSION + default "2024.04" if BR2_TARGET_TI_K3_R5_LOADER_LATEST_VERSION default BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE \ if BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION default "custom" if BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_TARBALL diff --git a/boot/ti-k3-r5-loader/ti-k3-r5-loader.hash b/boot/ti-k3-r5-loader/ti-k3-r5-loader.hash index fbe5d21540..a8021fb696 100644 --- a/boot/ti-k3-r5-loader/ti-k3-r5-loader.hash +++ b/boot/ti-k3-r5-loader/ti-k3-r5-loader.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 b99611f1ed237bf3541bdc8434b68c96a6e05967061f992443cb30aabebef5b3 u-boot-2024.01.tar.bz2 +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 Licenses/gpl-2.0.txt From thomas.petazzoni at bootlin.com Mon May 6 20:04:02 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:04:02 +0200 Subject: [Buildroot] [git commit] boot/uboot: bump to version v2024.04 Message-ID: <20240506200643.A9EA0868B7@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=b95b7752930356775dd19d6f30088c84feff0f11 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Update to the latest tagged release of U-Boot Signed-off-by: Bryan Brattlof Signed-off-by: Thomas Petazzoni --- boot/uboot/Config.in | 6 +++--- boot/uboot/uboot.hash | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/boot/uboot/Config.in b/boot/uboot/Config.in index ba95964139..d0901edc9d 100644 --- a/boot/uboot/Config.in +++ b/boot/uboot/Config.in @@ -41,7 +41,7 @@ choice Select the specific U-Boot version you want to use config BR2_TARGET_UBOOT_LATEST_VERSION - bool "2024.01" + bool "2024.04" config BR2_TARGET_UBOOT_CUSTOM_VERSION bool "Custom version" @@ -85,7 +85,7 @@ endif config BR2_TARGET_UBOOT_VERSION string - default "2024.01" if BR2_TARGET_UBOOT_LATEST_VERSION + default "2024.04" if BR2_TARGET_UBOOT_LATEST_VERSION default BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE \ if BR2_TARGET_UBOOT_CUSTOM_VERSION default "custom" if BR2_TARGET_UBOOT_CUSTOM_TARBALL @@ -279,7 +279,7 @@ config BR2_TARGET_UBOOT_USE_BINMAN help Use binman tool for generation and signing of boot images. - https://docs.u-boot.org/en/v2024.01/develop/package/binman.html + https://docs.u-boot.org/en/v2024.04/develop/package/binman.html menu "U-Boot binary format" diff --git a/boot/uboot/uboot.hash b/boot/uboot/uboot.hash index fbe5d21540..a8021fb696 100644 --- a/boot/uboot/uboot.hash +++ b/boot/uboot/uboot.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 b99611f1ed237bf3541bdc8434b68c96a6e05967061f992443cb30aabebef5b3 u-boot-2024.01.tar.bz2 +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 Licenses/gpl-2.0.txt From thomas.petazzoni at bootlin.com Mon May 6 20:05:05 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:05:05 +0200 Subject: [Buildroot] [git commit] configs/ti_am64x_sk_defconfig: update TFA to v2.10 Message-ID: <20240506200643.E52B1868B5@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=c1fdfc00dbaaceb2d4b6ae29e50c20992bed7292 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Update the TFA firmware to the latest LTS tag for v2.10 release of arm-trusted-firmware Signed-off-by: Bryan Brattlof Signed-off-by: Thomas Petazzoni --- .../ti/am64x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash | 2 +- configs/ti_am64x_sk_defconfig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/board/ti/am64x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/ti/am64x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash index 74fe35c9bc..8f60864fbf 100644 --- a/board/ti/am64x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash +++ b/board/ti/am64x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -1,2 +1,2 @@ # Locally computed: -sha256 327c65b1bc231608a7a808b068b00c1a22310e9fc86158813cd10a9711d5725e arm-trusted-firmware-v2.7.tar.gz +sha256 ba215404fe9db26e5f2cef3fdce17b7c8ed344a2a1d592dd01a5f1c5e72cfdbd arm-trusted-firmware-lts-v2.10.4.tar.gz diff --git a/configs/ti_am64x_sk_defconfig b/configs/ti_am64x_sk_defconfig index 8dbe0fae33..bd576d90bb 100644 --- a/configs/ti_am64x_sk_defconfig +++ b/configs/ti_am64x_sk_defconfig @@ -19,7 +19,7 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_ROOTFS_EXT2_SIZE="120M" BR2_TARGET_ARM_TRUSTED_FIRMWARE=y BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y -BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.7" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="lts-v2.10.4" BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="k3" BR2_TARGET_ARM_TRUSTED_FIRMWARE_TARGET_BOARD="lite" BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE=y From thomas.petazzoni at bootlin.com Mon May 6 20:05:01 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:05:01 +0200 Subject: [Buildroot] [git commit] configs/ti_am62x_sk_defconfig: update TFA to v2.10 Message-ID: <20240506200643.D4A15868B7@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=33e092f8bb0db1000718d9a78ccccf0534382b08 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Update the TFA firmware to the latest LTS tag for v2.10 release of arm-trusted-firmware Signed-off-by: Bryan Brattlof Signed-off-by: Thomas Petazzoni --- .../ti/am62x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash | 2 +- configs/ti_am62x_sk_defconfig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/board/ti/am62x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/ti/am62x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash index 74fe35c9bc..8f60864fbf 100644 --- a/board/ti/am62x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash +++ b/board/ti/am62x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -1,2 +1,2 @@ # Locally computed: -sha256 327c65b1bc231608a7a808b068b00c1a22310e9fc86158813cd10a9711d5725e arm-trusted-firmware-v2.7.tar.gz +sha256 ba215404fe9db26e5f2cef3fdce17b7c8ed344a2a1d592dd01a5f1c5e72cfdbd arm-trusted-firmware-lts-v2.10.4.tar.gz diff --git a/configs/ti_am62x_sk_defconfig b/configs/ti_am62x_sk_defconfig index 84a409fc3b..3ce4862999 100644 --- a/configs/ti_am62x_sk_defconfig +++ b/configs/ti_am62x_sk_defconfig @@ -19,7 +19,7 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_ROOTFS_EXT2_SIZE="256M" BR2_TARGET_ARM_TRUSTED_FIRMWARE=y BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y -BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.7" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="lts-v2.10.4" BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="k3" BR2_TARGET_ARM_TRUSTED_FIRMWARE_TARGET_BOARD="lite" BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE=y From thomas.petazzoni at bootlin.com Mon May 6 20:05:09 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:05:09 +0200 Subject: [Buildroot] [git commit] configs/ti_am62x_sk_defconfig: update U-Boot to v2024.04 Message-ID: <20240506200644.047F5868B6@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=cc2910a7dbd331ae0ad6a8f06ce7cd0559a1ebe1 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Bump to the latest release from U-Boot Signed-off-by: Bryan Brattlof Signed-off-by: Thomas Petazzoni --- configs/ti_am62x_sk_defconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configs/ti_am62x_sk_defconfig b/configs/ti_am62x_sk_defconfig index 3ce4862999..51e8793a66 100644 --- a/configs/ti_am62x_sk_defconfig +++ b/configs/ti_am62x_sk_defconfig @@ -27,12 +27,12 @@ BR2_TARGET_OPTEE_OS=y BR2_TARGET_OPTEE_OS_PLATFORM="k3-am62x" BR2_TARGET_TI_K3_R5_LOADER=y BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION=y -BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE="2024.04" BR2_TARGET_TI_K3_R5_LOADER_BOARD_DEFCONFIG="am62x_evm_r5" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="am62x_evm_a53" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_NEEDS_OPENSSL=y From thomas.petazzoni at bootlin.com Mon May 6 20:05:13 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:05:13 +0200 Subject: [Buildroot] [git commit] configs/ti_am64x_sk_defconfig: update U-Boot to v2024.04 Message-ID: <20240506200644.19036868B5@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=7efd75867cd84926b7aa6524e0a41c50c32b20e1 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Bump to the latest release from U-Boot Signed-off-by: Bryan Brattlof Signed-off-by: Thomas Petazzoni --- configs/ti_am64x_sk_defconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configs/ti_am64x_sk_defconfig b/configs/ti_am64x_sk_defconfig index bd576d90bb..dc53d8f141 100644 --- a/configs/ti_am64x_sk_defconfig +++ b/configs/ti_am64x_sk_defconfig @@ -27,12 +27,12 @@ BR2_TARGET_OPTEE_OS=y BR2_TARGET_OPTEE_OS_PLATFORM="k3-am64x" BR2_TARGET_TI_K3_R5_LOADER=y BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION=y -BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE="2024.04" BR2_TARGET_TI_K3_R5_LOADER_BOARD_DEFCONFIG="am64x_evm_r5" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="am64x_evm_a53" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_NEEDS_OPENSSL=y From thomas.petazzoni at bootlin.com Mon May 6 20:06:31 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:06:31 +0200 Subject: [Buildroot] [git commit] DEVELOPERS: add myself to TI's packages and reference boards Message-ID: <20240506200644.4907B868B6@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=35c7cc56441ea58834201c7d08026e05209fc1e9 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Add myself to the DEVELOPERS files to help review patches related to TI's reference boards. Signed-off-by: Bryan Brattlof Signed-off-by: Thomas Petazzoni --- DEVELOPERS | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index 3b19665a84..1c5ad1e42a 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -551,6 +551,13 @@ F: package/vmtouch/ N: Brock Williams F: package/pdmenu/ +N: Bryan Brattlof +F: board/ti/ +F: boot/ti-k3-boot-firmware/ +F: boot/ti-k3-r5-loader/ +F: configs/ti_am62x_sk_defconfig +F: configs/ti_am64x_sk_defconfig + N: Carlo Caione F: package/jailhouse/ F: package/sunxi-boards/ From thomas.petazzoni at bootlin.com Mon May 6 20:02:31 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:02:31 +0200 Subject: [Buildroot] [git commit] package/libutempter: do not hardcode PIE Message-ID: <20240506200643.7D041868B5@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=36b06928c8d63ef82cc785aaa72c5818c8dec0bc branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master PIE will be set by buildroot if the user wants it so set {COMPILE,LINK}_PIE to an empty value to fix the following build failure raised since the addition of the package in commit 02c818bc5c7a6967a212f12e4caa8ccdfa0b452b: /home/buildroot/autobuild/run/instance-3/output-1/host/bin/m68k-linux-gcc -W -Wall -Waggregate-return -Wcast-align -Wconversion -Wdisabled-optimization -Wmissing-declarations -Wmissing-format-attribute -Wmissing-noreturn -Wmissing-prototypes -Wpointer-arith -Wredundant-decls -Wshadow -Wstrict-prototypes -Wwrite-strings -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -std=gnu99 -DLIBEXECDIR=\"/usr/lib\" -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Wl,-z,relro -Wl,-stats -fPIE -pie -Wl,-z,now utempter.c -o utempter [...] /home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/m68k-buildroot-linux-uclibc/12.3.0/../../../../m68k-buildroot-linux-uclibc/bin/ld: /home/buildroot/autobuild/run/instance-3/output-1/host/m68k-buildroot-linux-uclibc/sysroot/usr/lib/Scrt1.o: in function `lib_main': (.text+0x4): undefined reference to `__shared_flat_add_library' Fixes: 02c818bc5c7a6967a212f12e4caa8ccdfa0b452b - http://autobuild.buildroot.org/results/3a5581fd4edf56bbdc48ab111a2351fc70f1c703 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/libutempter/libutempter.mk | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package/libutempter/libutempter.mk b/package/libutempter/libutempter.mk index d51f70049c..aad98126f7 100644 --- a/package/libutempter/libutempter.mk +++ b/package/libutempter/libutempter.mk @@ -11,7 +11,8 @@ LIBUTEMPTER_LICENSE = LGPL-2.1+ LIBUTEMPTER_LICENSE_FILES = COPYING define LIBUTEMPTER_BUILD_CMDS - $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + COMPILE_PIE= LINK_PIE= endef define LIBUTEMPTER_INSTALL_STAGING_CMDS From thomas.petazzoni at bootlin.com Mon May 6 20:06:19 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:06:19 +0200 Subject: [Buildroot] [git commit] configs/ti_am64x_sk_defconfig: update kernel to v6.8.8 Message-ID: <20240506200644.3A1BA868B5@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=deede5e9dee8ba34a15919e95385cae1847d72b4 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Update to the latest kernel to pull in the latest bug fixes and features for TI's SoCs and reference boards Signed-off-by: Bryan Brattlof Signed-off-by: Thomas Petazzoni --- board/ti/am64x-sk/patches/linux/linux.hash | 2 +- configs/ti_am64x_sk_defconfig | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/board/ti/am64x-sk/patches/linux/linux.hash b/board/ti/am64x-sk/patches/linux/linux.hash index cedae67f33..2e9aad399e 100644 --- a/board/ti/am64x-sk/patches/linux/linux.hash +++ b/board/ti/am64x-sk/patches/linux/linux.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 4e43d8c5fba14f7c82597838011648056487b7550fd83276ad534559e8499b1d linux-6.6.18.tar.xz +sha256 1c4cdcb9d560fad1fb95db2cb8afbedc922f9ead848371fe40363b13f9f631ba linux-6.8.8.tar.xz diff --git a/configs/ti_am64x_sk_defconfig b/configs/ti_am64x_sk_defconfig index dc53d8f141..1e8b8c9c02 100644 --- a/configs/ti_am64x_sk_defconfig +++ b/configs/ti_am64x_sk_defconfig @@ -1,5 +1,5 @@ BR2_aarch64=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_8=y BR2_GLOBAL_PATCH_DIR="board/ti/am64x-sk/patches" BR2_DOWNLOAD_FORCE_CHECK_HASHES=y BR2_ROOTFS_POST_BUILD_SCRIPT="board/ti/common/am6xx/post-build.sh" @@ -8,7 +8,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS="-c board/ti/am64x-sk/genimage.cfg" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.18" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.8" BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="ti/k3-am642-sk" From thomas.petazzoni at bootlin.com Mon May 6 20:05:54 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:05:54 +0200 Subject: [Buildroot] [git commit] configs/ti_am62x_sk_defconfig: bump kernel to v6.8.8 Message-ID: <20240506200644.29802868B6@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=1f5fd13567a6ecfbb91f832ce2e20d50337dcd86 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Update to the latest kernel to pull in the latest bug fixes and features for TI's SoCs and reference boards Signed-off-by: Bryan Brattlof Signed-off-by: Thomas Petazzoni --- board/ti/am62x-sk/patches/linux/linux.hash | 2 +- configs/ti_am62x_sk_defconfig | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/board/ti/am62x-sk/patches/linux/linux.hash b/board/ti/am62x-sk/patches/linux/linux.hash index cedae67f33..2e9aad399e 100644 --- a/board/ti/am62x-sk/patches/linux/linux.hash +++ b/board/ti/am62x-sk/patches/linux/linux.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 4e43d8c5fba14f7c82597838011648056487b7550fd83276ad534559e8499b1d linux-6.6.18.tar.xz +sha256 1c4cdcb9d560fad1fb95db2cb8afbedc922f9ead848371fe40363b13f9f631ba linux-6.8.8.tar.xz diff --git a/configs/ti_am62x_sk_defconfig b/configs/ti_am62x_sk_defconfig index 51e8793a66..36052dba40 100644 --- a/configs/ti_am62x_sk_defconfig +++ b/configs/ti_am62x_sk_defconfig @@ -1,5 +1,5 @@ BR2_aarch64=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_8=y BR2_GLOBAL_PATCH_DIR="board/ti/am62x-sk/patches" BR2_DOWNLOAD_FORCE_CHECK_HASHES=y BR2_ROOTFS_POST_BUILD_SCRIPT="board/ti/common/am6xx/post-build.sh" @@ -8,7 +8,7 @@ BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS="-c ttyS2,115200n8 -d k3-am625-sk.dtb -l am62x BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS="-c board/ti/am62x-sk/genimage.cfg" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.18" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.8" BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="ti/k3-am625-sk" From thomas.petazzoni at bootlin.com Mon May 6 20:04:51 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:04:51 +0200 Subject: [Buildroot] [git commit] boot/ti-k3-boot-firmware: bump to version 09.02.00.009 Message-ID: <20240506200643.C5DC7868B6@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=ae6d1f7375534351440b2b151721cb9eb8d5bca8 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master The 09.02.00.009 release of ti-linux-firmware has the latest updates to TI's TIFS, DM and DMSC firmware needed for the K3 generation of processors. Update to pull in these latest updates. Reviewed-by: Heiko Thiery Tested-by: Andreas Dannenberg Signed-off-by: Bryan Brattlof Signed-off-by: Thomas Petazzoni --- boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash | 2 +- boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash index 95131180ef..2398d02da2 100644 --- a/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash +++ b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash @@ -1,3 +1,3 @@ # Locally calculated sha256 ab20ffbe7bba7e94be246b3417d33a914b3f07c16c47ef5a7f7602349a666a61 LICENSE.ti -sha256 6032a258ce731d987576115f5de44c677a6b0cf8bddcd61a9a2852928bdfff92 ti-linux-firmware-08.06.00.006.tar.xz +sha256 ae888a0a22f8c5b8fe841236d6e40bb2f821d9a4161dab6924fd989e1467ef0e ti-linux-firmware-09.02.00.009.tar.xz diff --git a/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk index 1f8ade207c..9332732ad4 100644 --- a/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk +++ b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk @@ -4,9 +4,7 @@ # ################################################################################ -# The hash 340194800a581baf976360386dfc7b5acab8d948 defined in the -# Makefile of ti-k3-image-gen corresponds to the tag 08.06.00.006. -TI_K3_BOOT_FIRMWARE_VERSION = 08.06.00.006 +TI_K3_BOOT_FIRMWARE_VERSION = 09.02.00.009 TI_K3_BOOT_FIRMWARE_SITE = https://git.ti.com/cgit/processor-firmware/ti-linux-firmware/snapshot TI_K3_BOOT_FIRMWARE_SOURCE = ti-linux-firmware-$(TI_K3_BOOT_FIRMWARE_VERSION).tar.xz TI_K3_BOOT_FIRMWARE_INSTALL_IMAGES = YES From thomas.petazzoni at bootlin.com Mon May 6 20:07:18 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:07:18 +0200 Subject: [Buildroot] [PATCH RESEND v2 00/11] update bsp binaries for TI SoCs In-Reply-To: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> Message-ID: <20240506220718.3902a86a@windsurf> Hello Bryan, On Thu, 2 May 2024 11:26:50 -0500 Bryan Brattlof via buildroot wrote: > Bryan Brattlof (11): > boot/optee-os: bump to release v4.2.0 > boot/uboot: bump to version v2024.04 > boot/ti-k3-r5-loader: bump to version v2024.04 > boot/ti-k3-boot-firmware: bump to version 09.02.00.009 > configs/ti_am62x_sk_defconfig: update TFA to v2.10 > configs/ti_am64x_sk_defconfig: update TFA to v2.10 > configs/ti_am62x_sk_defconfig: update U-Boot to v2024.04 > configs/ti_am64x_sk_defconfig: update U-Boot to v2024.04 > configs/ti_am62x_sk_defconfig: bump kernel to v6.8.8 > configs/ti_am64x_sk_defconfig: update kernel to v6.8.8 > DEVELOPERS: add myself to TI's packages and reference boards Thanks, entire series applied! I'll reply individually to a few of the patches with a few remarks/comments (not much). Best regards, Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From francois.perrad at gadz.org Mon May 6 20:08:56 2024 From: francois.perrad at gadz.org (Francois Perrad) Date: Mon, 6 May 2024 22:08:56 +0200 Subject: [Buildroot] [PATCH v2 1/3] configs/olimex_imx233_olinuxino: bump Linux and U-Boot Message-ID: <20240506200858.30197-1-francois.perrad@gadz.org> Signed-off-by: Francois Perrad --- configs/olimex_imx233_olinuxino_defconfig | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/configs/olimex_imx233_olinuxino_defconfig b/configs/olimex_imx233_olinuxino_defconfig index 275dd98af..647292899 100644 --- a/configs/olimex_imx233_olinuxino_defconfig +++ b/configs/olimex_imx233_olinuxino_defconfig @@ -2,8 +2,8 @@ BR2_arm=y BR2_arm926t=y -# Linux headers same as kernel, a 5.4 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_4=y +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y # System BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" @@ -14,7 +14,7 @@ BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.4.8" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.83" BR2_LINUX_KERNEL_DEFCONFIG="mxs" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/olimex/imx233_olinuxino/linux-wifi.fragment" BR2_LINUX_KERNEL_DTS_SUPPORT=y @@ -40,7 +40,7 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="mx23_olinuxino" BR2_TARGET_UBOOT_FORMAT_SD=y -- 2.40.1 From francois.perrad at gadz.org Mon May 6 20:08:57 2024 From: francois.perrad at gadz.org (Francois Perrad) Date: Mon, 6 May 2024 22:08:57 +0200 Subject: [Buildroot] [PATCH v2 2/3] configs/olimex_imx233_olinuxino: configure eth0 with DHCP In-Reply-To: <20240506200858.30197-1-francois.perrad@gadz.org> References: <20240506200858.30197-1-francois.perrad@gadz.org> Message-ID: <20240506200858.30197-2-francois.perrad@gadz.org> Signed-off-by: Francois Perrad --- configs/olimex_imx233_olinuxino_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/olimex_imx233_olinuxino_defconfig b/configs/olimex_imx233_olinuxino_defconfig index 647292899..7049cfeac 100644 --- a/configs/olimex_imx233_olinuxino_defconfig +++ b/configs/olimex_imx233_olinuxino_defconfig @@ -7,6 +7,7 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y # System BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" +BR2_SYSTEM_DHCP="eth0" # For automatic firmware loading BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y -- 2.40.1 From francois.perrad at gadz.org Mon May 6 20:08:58 2024 From: francois.perrad at gadz.org (Francois Perrad) Date: Mon, 6 May 2024 22:08:58 +0200 Subject: [Buildroot] [PATCH v2 3/3] configs/olimex_imx233_olinuxino: add hashes for Linux & U-Boot In-Reply-To: <20240506200858.30197-1-francois.perrad@gadz.org> References: <20240506200858.30197-1-francois.perrad@gadz.org> Message-ID: <20240506200858.30197-3-francois.perrad@gadz.org> and enable BR2_DOWNLOAD_FORCE_CHECK_HASHES Signed-off-by: Francois Perrad --- .../imx233_olinuxino/patches/linux-headers/linux-headers.hash | 1 + board/olimex/imx233_olinuxino/patches/linux/linux.hash | 2 ++ board/olimex/imx233_olinuxino/patches/uboot/uboot.hash | 2 ++ configs/olimex_imx233_olinuxino_defconfig | 4 ++++ 4 files changed, 9 insertions(+) create mode 120000 board/olimex/imx233_olinuxino/patches/linux-headers/linux-headers.hash create mode 100644 board/olimex/imx233_olinuxino/patches/linux/linux.hash create mode 100644 board/olimex/imx233_olinuxino/patches/uboot/uboot.hash diff --git a/board/olimex/imx233_olinuxino/patches/linux-headers/linux-headers.hash b/board/olimex/imx233_olinuxino/patches/linux-headers/linux-headers.hash new file mode 120000 index 000000000..5808d92af --- /dev/null +++ b/board/olimex/imx233_olinuxino/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/olimex/imx233_olinuxino/patches/linux/linux.hash b/board/olimex/imx233_olinuxino/patches/linux/linux.hash new file mode 100644 index 000000000..1dba724d0 --- /dev/null +++ b/board/olimex/imx233_olinuxino/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 88b69611093613ce4494527685f833af0c31b986dcbeda7086f69f18f9e0b190 linux-6.1.83.tar.xz diff --git a/board/olimex/imx233_olinuxino/patches/uboot/uboot.hash b/board/olimex/imx233_olinuxino/patches/uboot/uboot.hash new file mode 100644 index 000000000..c1aeddf06 --- /dev/null +++ b/board/olimex/imx233_olinuxino/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 diff --git a/configs/olimex_imx233_olinuxino_defconfig b/configs/olimex_imx233_olinuxino_defconfig index 7049cfeac..d45c55ada 100644 --- a/configs/olimex_imx233_olinuxino_defconfig +++ b/configs/olimex_imx233_olinuxino_defconfig @@ -5,6 +5,10 @@ BR2_arm926t=y # Linux headers same as kernel, a 6.1 series BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y +# Build +BR2_GLOBAL_PATCH_DIR="board/olimex/imx233_olinuxino/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + # System BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" BR2_SYSTEM_DHCP="eth0" -- 2.40.1 From thomas.petazzoni at bootlin.com Mon May 6 20:09:48 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:09:48 +0200 Subject: [Buildroot] [PATCH RESEND v2 02/11] boot/uboot: bump to version v2024.04 In-Reply-To: <20240506085315.lb4frefetaffps6i@dasso> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> <20240430-optee-update-v2-2-5bdc2f940db1@ti.com> <20240506085315.lb4frefetaffps6i@dasso> Message-ID: <20240506220948.7baeea19@windsurf> Hello Andreas, On Mon, 6 May 2024 03:53:15 -0500 Andreas Dannenberg via buildroot wrote: > Similar to your other patch ("boot/optee-os: bump to release v4.2.0") > changing the global default will affect other platforms so there's some > risk for breakage I suppose. Why not keeping those specific changes to > the AM62/AM64 platforms? What Bryan did is totally fine and in line with how we handle things in Buildroot. For packages that are close the hardware (OP-TEE, TF-A, U-Boot, Linux), Buildroot offers: - Using a "latest" version, which is regularly updated to the latest upstream version, which means that if you change Buildroot version, this version changes, like for any other package. - Using a "custom" version, which is provided as an URL to a custom tarball, a tag/commit in a Git repo, etc. In this case, the version is explicitly specified in the user's .config file, and doesn't change when Buildroot is updated. So, what Bryan did is update the "latest" version, and this is perfectly correct. All our defconfigs use a "custom" version for all of Linux, U-Boot, OP-TEE, TF-A, specifically to ensure that despite the update in Buildroot, our defconfig keep on using the versions that were tested by the developer who submitted the defconfig. Best regards, Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:10:40 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:10:40 +0200 Subject: [Buildroot] [PATCH RESEND v2 05/11] configs/ti_am62x_sk_defconfig: update TFA to v2.10 In-Reply-To: <20240430-optee-update-v2-5-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> <20240430-optee-update-v2-5-5bdc2f940db1@ti.com> Message-ID: <20240506221040.7d93b31e@windsurf> On Thu, 2 May 2024 11:26:55 -0500 Bryan Brattlof via buildroot wrote: > Update the TFA firmware to the latest LTS tag for v2.10 release of > arm-trusted-firmware > > Signed-off-by: Bryan Brattlof > --- > .../ti/am62x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash | 2 +- > configs/ti_am62x_sk_defconfig | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) The update of TF-A/U-Boot/Linux in one defconfig could be done in one single commit, so you could have done: configs/ti_am62x_sk: update Linux, U-Boot, TF-A configs/ti_am64x_sk: update Linux, U-Boot, TF-A This is generally considered a good enough split. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:11:05 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:11:05 +0200 Subject: [Buildroot] [PATCH RESEND v2 03/11] boot/ti-k3-r5-loader: bump to version v2024.04 In-Reply-To: <20240430-optee-update-v2-3-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> <20240430-optee-update-v2-3-5bdc2f940db1@ti.com> Message-ID: <20240506221105.3a75f41c@windsurf> On Thu, 2 May 2024 11:26:53 -0500 Bryan Brattlof via buildroot wrote: > TI_K3_R5_LOADER_VERSION = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_VERSION)) > +TI_K3_R5_LOADER_DL_DIR = $(UBOOT_DL_DIR) This is an unrelated change, so I dropped it from the commit when applying. Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From yann.morin.1998 at free.fr Mon May 6 20:11:14 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Mon, 6 May 2024 22:11:14 +0200 Subject: [Buildroot] [PATCH v1 8/8] package/openssl: move libopenssl/libressl source statemetns outside of the choice In-Reply-To: <20240506144555.31709-9-ps.report@gmx.net> References: <20240506144555.31709-1-ps.report@gmx.net> <20240506144555.31709-9-ps.report@gmx.net> Message-ID: > https://lists.buildroot.org/mailman/listinfo/buildroot Peter, All, On 2024-05-06 16:45 +0200, Peter Seiderer via buildroot spake thusly: > Signed-off-by: Peter Seiderer > --- > Notes/ToDo: > - with this solution the external support needs to be splitted into > two imports/lines... NMot sure I understand wht you meant here... > --- > package/openssl/Config.in | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/package/openssl/Config.in b/package/openssl/Config.in > index 3d14988d99..fcf996f03f 100644 > --- a/package/openssl/Config.in > +++ b/package/openssl/Config.in > @@ -28,8 +28,6 @@ config BR2_PACKAGE_LIBOPENSSL > > Note: Some helper scripts need perl. > > -source "package/libopenssl/Config.in" > - > config BR2_PACKAGE_LIBRESSL > bool "libressl" > depends on !BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL > @@ -44,13 +42,14 @@ config BR2_PACKAGE_LIBRESSL > > http://www.libressl.org/ > > -source "package/libressl/Config.in" > - > # openssl from br2-external trees, if any > source "$(BASE_DIR)/.br2-external.in.openssl" This leaves one 'source' statement in te choice, which is no longer accepted, AFAIU. > endchoice > > +source "package/libopenssl/Config.in" > +source "package/libressl/Config.in" I think the best solution is to move the if-endif conditional block out of package/libopenssl/Config.in back into package/openssl/Config.in, and add a new choice entry, so that basically we end up with something lie; choice bool "ssl library" config BR2_PACKAGE_LIBOPENSSL bool "openssl" config BR2_PACKAGE_LIBRESSL bool "libressl" config BR2_PACKAGE_OPENSSL_EXTERNAL bool "from an external tree" depends on $BR2_EXTERNAL != "" # Or something along those lines, adapt endchoice if BR2_PACKAGE_LIBOPENSSL source "package/libopenssl/Config.in" endif if BR2_PACKAGE_LIBRESSL source "package/libressl/Config.in" endif if BR2_PACKAGE_OPENSSL_EXTERNAL source "$(BASE_DIR)/.br2-external.in.openssl" endif Basically, that would make for an uglier state, but that's the best we can do given the new limitsations introduced by upstream kconfig... Thoughts? Regards, Yann E. MORIN. > config BR2_PACKAGE_HAS_OPENSSL > bool > > -- > 2.44.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From thomas.petazzoni at bootlin.com Mon May 6 20:11:39 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:11:39 +0200 Subject: [Buildroot] [PATCH RESEND v2 09/11] configs/ti_am62x_sk_defconfig: bump kernel to v6.8.8 In-Reply-To: <20240430-optee-update-v2-9-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> <20240430-optee-update-v2-9-5bdc2f940db1@ti.com> Message-ID: <20240506221139.3fe56f1c@windsurf> On Thu, 2 May 2024 11:26:59 -0500 Bryan Brattlof via buildroot wrote: > diff --git a/configs/ti_am62x_sk_defconfig b/configs/ti_am62x_sk_defconfig > index fbceca791161e..070eaa42bfa7e 100644 > --- a/configs/ti_am62x_sk_defconfig > +++ b/configs/ti_am62x_sk_defconfig > @@ -1,5 +1,4 @@ > BR2_aarch64=y > -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y This should have stayed there, but become: BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_8=y and ditto for the am64x_sk patch, of course. Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:12:14 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:12:14 +0200 Subject: [Buildroot] [git commit] package/pppd: add linux-pam optional dependency Message-ID: <20240506201307.7D65E868D7@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=bbcf02c7ff586a110a576a85b9634b5f11eb6ee3 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master linux-pam is an optional dependency which is enbled by default since bump to version 2.5.0 in commit 0c15169f5ae57d88a77df34cc896044a37c9597b and https://github.com/ppp-project/ppp/commit/2883dd07101bf851e2ea368f0c04c91aea85cff2 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/pppd/pppd.mk | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/package/pppd/pppd.mk b/package/pppd/pppd.mk index 616b843e3d..0a1eaf9209 100644 --- a/package/pppd/pppd.mk +++ b/package/pppd/pppd.mk @@ -17,6 +17,13 @@ PPPD_AUTORECONF = YES PPPD_INSTALL_STAGING = YES PPPD_CONF_OPTS = --enable-multilink +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +PPPD_CONF_OPTS += --with-pam=$(STAGING_DIR)/usr +PPPD_DEPENDENCIES += linux-pam +else +PPPD_CONF_OPTS += --without-pam +endif + ifeq ($(BR2_PACKAGE_OPENSSL),y) PPPD_CONF_OPTS += \ --enable-eaptls \ From thomas.petazzoni at bootlin.com Mon May 6 20:12:25 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:12:25 +0200 Subject: [Buildroot] [git commit] configs/olimex_imx233_olinuxino: configure eth0 with DHCP Message-ID: <20240506201307.97CDC868D9@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=1e3cc620b4320aa045b3e23c6111171489437b29 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Francois Perrad Signed-off-by: Thomas Petazzoni --- configs/olimex_imx233_olinuxino_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/olimex_imx233_olinuxino_defconfig b/configs/olimex_imx233_olinuxino_defconfig index 647292899e..7049cfeac1 100644 --- a/configs/olimex_imx233_olinuxino_defconfig +++ b/configs/olimex_imx233_olinuxino_defconfig @@ -7,6 +7,7 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y # System BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" +BR2_SYSTEM_DHCP="eth0" # For automatic firmware loading BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y From thomas.petazzoni at bootlin.com Mon May 6 20:12:50 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:12:50 +0200 Subject: [Buildroot] [git commit] configs/olimex_imx233_olinuxino: add hashes for Linux & U-Boot Message-ID: <20240506201307.A5E16868DC@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=20817818333acb9bbfb22b4b194a1b36fadf7648 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master and enable BR2_DOWNLOAD_FORCE_CHECK_HASHES Signed-off-by: Francois Perrad Signed-off-by: Thomas Petazzoni --- .checkpackageignore | 1 - .../olimex/imx233_olinuxino/patches/linux-headers/linux-headers.hash | 1 + board/olimex/imx233_olinuxino/patches/linux/linux.hash | 2 ++ board/olimex/imx233_olinuxino/patches/uboot/uboot.hash | 2 ++ configs/olimex_imx233_olinuxino_defconfig | 4 ++++ 5 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.checkpackageignore b/.checkpackageignore index 44d4250e14..33d2b011ae 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -262,7 +262,6 @@ configs/olimex_a20_olinuxino_lime_defconfig lib_defconfig.ForceCheckHash configs/olimex_a20_olinuxino_micro_defconfig lib_defconfig.ForceCheckHash configs/olimex_a33_olinuxino_defconfig lib_defconfig.ForceCheckHash configs/olimex_a64_olinuxino_defconfig lib_defconfig.ForceCheckHash -configs/olimex_imx233_olinuxino_defconfig lib_defconfig.ForceCheckHash configs/olimex_stmp157_olinuxino_lime_defconfig lib_defconfig.ForceCheckHash configs/olpc_xo175_defconfig lib_defconfig.ForceCheckHash configs/olpc_xo1_defconfig lib_defconfig.ForceCheckHash diff --git a/board/olimex/imx233_olinuxino/patches/linux-headers/linux-headers.hash b/board/olimex/imx233_olinuxino/patches/linux-headers/linux-headers.hash new file mode 120000 index 0000000000..5808d92afe --- /dev/null +++ b/board/olimex/imx233_olinuxino/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/olimex/imx233_olinuxino/patches/linux/linux.hash b/board/olimex/imx233_olinuxino/patches/linux/linux.hash new file mode 100644 index 0000000000..1dba724d0c --- /dev/null +++ b/board/olimex/imx233_olinuxino/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 88b69611093613ce4494527685f833af0c31b986dcbeda7086f69f18f9e0b190 linux-6.1.83.tar.xz diff --git a/board/olimex/imx233_olinuxino/patches/uboot/uboot.hash b/board/olimex/imx233_olinuxino/patches/uboot/uboot.hash new file mode 100644 index 0000000000..c1aeddf06c --- /dev/null +++ b/board/olimex/imx233_olinuxino/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 diff --git a/configs/olimex_imx233_olinuxino_defconfig b/configs/olimex_imx233_olinuxino_defconfig index 7049cfeac1..d45c55ada3 100644 --- a/configs/olimex_imx233_olinuxino_defconfig +++ b/configs/olimex_imx233_olinuxino_defconfig @@ -5,6 +5,10 @@ BR2_arm926t=y # Linux headers same as kernel, a 6.1 series BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y +# Build +BR2_GLOBAL_PATCH_DIR="board/olimex/imx233_olinuxino/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + # System BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" BR2_SYSTEM_DHCP="eth0" From thomas.petazzoni at bootlin.com Mon May 6 20:12:19 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:12:19 +0200 Subject: [Buildroot] [git commit] configs/olimex_imx233_olinuxino: bump Linux and U-Boot Message-ID: <20240506201307.8BC65868B4@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=274eaa6c4087f8582966e6d6bf22f86497a67bdb branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Francois Perrad Signed-off-by: Thomas Petazzoni --- configs/olimex_imx233_olinuxino_defconfig | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/configs/olimex_imx233_olinuxino_defconfig b/configs/olimex_imx233_olinuxino_defconfig index 275dd98afe..647292899e 100644 --- a/configs/olimex_imx233_olinuxino_defconfig +++ b/configs/olimex_imx233_olinuxino_defconfig @@ -2,8 +2,8 @@ BR2_arm=y BR2_arm926t=y -# Linux headers same as kernel, a 5.4 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_4=y +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y # System BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" @@ -14,7 +14,7 @@ BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.4.8" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.83" BR2_LINUX_KERNEL_DEFCONFIG="mxs" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/olimex/imx233_olinuxino/linux-wifi.fragment" BR2_LINUX_KERNEL_DTS_SUPPORT=y @@ -40,7 +40,7 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="mx23_olinuxino" BR2_TARGET_UBOOT_FORMAT_SD=y From thomas.petazzoni at bootlin.com Mon May 6 20:13:40 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:13:40 +0200 Subject: [Buildroot] [PATCH v2 1/3] configs/olimex_imx233_olinuxino: bump Linux and U-Boot In-Reply-To: <20240506200858.30197-1-francois.perrad@gadz.org> References: <20240506200858.30197-1-francois.perrad@gadz.org> Message-ID: <20240506221340.5167483b@windsurf> On Mon, 6 May 2024 22:08:56 +0200 Francois Perrad wrote: > Signed-off-by: Francois Perrad > --- > configs/olimex_imx233_olinuxino_defconfig | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) Series applied to master, thanks! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:13:45 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:13:45 +0200 Subject: [Buildroot] [PATCH 1/1] package/pppd: add linux-pam optional dependency In-Reply-To: <20240506200206.111393-1-fontaine.fabrice@gmail.com> References: <20240506200206.111393-1-fontaine.fabrice@gmail.com> Message-ID: <20240506221345.1ea81209@windsurf> On Mon, 6 May 2024 22:02:06 +0200 Fabrice Fontaine wrote: > linux-pam is an optional dependency which is enbled by default since > bump to version 2.5.0 in commit 0c15169f5ae57d88a77df34cc896044a37c9597b > and > https://github.com/ppp-project/ppp/commit/2883dd07101bf851e2ea368f0c04c91aea85cff2 > > Signed-off-by: Fabrice Fontaine > --- > package/pppd/pppd.mk | 7 +++++++ > 1 file changed, 7 insertions(+) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:14:50 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:14:50 +0200 Subject: [Buildroot] [PATCH 1/1] package/agentpp: bump to version 4.6.1 In-Reply-To: <20240506121919.118af862@booty> References: <20240430203401.74587-1-jesseevg@gmail.com> <20240506121919.118af862@booty> Message-ID: <20240506221450.5fafb5bc@windsurf> On Mon, 6 May 2024 12:19:19 +0200 Luca Ceresoli via buildroot wrote: > Hello Jesse, > > On Tue, 30 Apr 2024 22:34:01 +0200 > Jesse Van Gavere wrote: > > > This version integrates the patch to fix building without v3 so remove > > that patch, there is however another failure when linking the library, > > debugprintf is used which was removed in snmp++, so patch that. > > This patch has been sent to agentpp. > > Sure about this? snmp++ 3.5.1 does not seem to have any changes related > to debugprintf compared to 3.5.0. Also, testing with both of your > patches (this and the snmppp 3.5.1 bump), agentpp builds fine without > the added patch. Also, we would prefer the added patch to be formatted using "git format-patch". Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:15:14 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:15:14 +0200 Subject: [Buildroot] [git commit] package/snmppp: bump to version 3.5.1 Message-ID: <20240506201524.D7615868E0@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=aae8ebc9a5a0bc997d2ab986623f7b0fd9d86f85 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Drop non-v3 fix patch as this was upstreamed Signed-off-by: Jesse Van Gavere Tested-by: Luca Ceresoli Reviewed-by: Luca Ceresoli Signed-off-by: Thomas Petazzoni --- .checkpackageignore | 1 - package/snmppp/0001-fix-build-without-v3.patch | 43 -------------------------- package/snmppp/snmppp.hash | 2 +- package/snmppp/snmppp.mk | 2 +- 4 files changed, 2 insertions(+), 46 deletions(-) diff --git a/.checkpackageignore b/.checkpackageignore index 33d2b011ae..2118269003 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -1466,7 +1466,6 @@ package/smcroute/S41smcroute NotExecutable lib_sysv.Indent lib_sysv.Variables package/smstools3/0001-fix-Makefile.patch lib_patch.Upstream package/smstools3/0002-fix-build-with-gcc-10.x.patch lib_patch.Upstream package/smstools3/S50smsd Shellcheck lib_sysv.Variables -package/snmppp/0001-fix-build-without-v3.patch lib_patch.Upstream package/snort/0001-configure.in-Avoid-path-poisoning-with-libpcap.patch lib_patch.Upstream package/snort/0002-configure.in-Allow-to-override-the-INADDR_NONE-check.patch lib_patch.Upstream package/snort/0003-configure.in-convert-AC_RUN_IFELSE-to-AC_CHECK_MEMBE.patch lib_patch.Upstream diff --git a/package/snmppp/0001-fix-build-without-v3.patch b/package/snmppp/0001-fix-build-without-v3.patch deleted file mode 100644 index 4e81f7bfc1..0000000000 --- a/package/snmppp/0001-fix-build-without-v3.patch +++ /dev/null @@ -1,43 +0,0 @@ -fix build without v3 - -Fix the following build failure without version3 raised since version -3.5.0: - -msgqueue.cpp: In member function 'int Snmp_pp::CSNMPMessage::ResendMessage()': -msgqueue.cpp:263:34: error: 'version3' was not declared in this scope; did you mean 'version1'? - 263 | if (m_target->get_version() == version3) { - | ^~~~~~~~ - | version1 - -Fixes: - - http://autobuild.buildroot.org/results/8ef3e4407a51c53c15e530606227338761dd905b - -Signed-off-by: Fabrice Fontaine -[Upstream status: sent to katz.agentpp.com at magenta.de] - -diff -Nura snmp++-3.5.0.orig/src/msgqueue.cpp snmp++-3.5.0/src/msgqueue.cpp ---- snmp++-3.5.0.orig/src/msgqueue.cpp 2023-03-20 10:49:30.629000853 +0100 -+++ snmp++-3.5.0/src/msgqueue.cpp 2023-03-20 10:51:36.880664304 +0100 -@@ -260,18 +260,20 @@ - m_target->set_retry(m_target->get_retry() - 1); - SetSendTime(); - int status; -- if (m_target->get_version() == version3) { - #ifdef _SNMPv3 -+ if (m_target->get_version() == version3) { - // delete entry in cache - if (m_snmp->get_mpv3()) - m_snmp->get_mpv3()->delete_from_cache(m_pdu.get_request_id()); --#endif - status = m_snmp->snmp_engine(m_pdu, m_pdu.get_error_status(), m_pdu.get_error_index(), - *m_target, m_callBack, m_callData, m_socket, 0, this); - } - else { -+#endif - status = send_snmp_request(m_socket, m_rawPdu, m_rawPduLen, *m_address); -+#ifdef _SNMPv3 - } -+#endif - if (status != 0) - return SNMP_CLASS_TL_FAILED; - diff --git a/package/snmppp/snmppp.hash b/package/snmppp/snmppp.hash index 74c6a3e98f..b66056ef40 100644 --- a/package/snmppp/snmppp.hash +++ b/package/snmppp/snmppp.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 43a433bd5f6fd67add5a26add6521ca664c41aead438405658ed57483664b4bf snmp++-3.5.0.tar.gz +sha256 034553f7cb75d7ce1fe70cb3ba06e88587b6bca4fa062d10344ce4555a1395f7 snmp++-3.5.1.tar.gz sha256 61337e799c8274e596e5783b22607beea8073ee296c6b27fc5c7487296e56851 src/v3.cpp diff --git a/package/snmppp/snmppp.mk b/package/snmppp/snmppp.mk index 9f1916dd66..966bb340fd 100644 --- a/package/snmppp/snmppp.mk +++ b/package/snmppp/snmppp.mk @@ -4,7 +4,7 @@ # ################################################################################ -SNMPPP_VERSION = 3.5.0 +SNMPPP_VERSION = 3.5.1 SNMPPP_SOURCE = snmp++-$(SNMPPP_VERSION).tar.gz SNMPPP_SITE = http://www.agentpp.com/download SNMPPP_DEPENDENCIES = host-pkgconf From thomas.petazzoni at bootlin.com Mon May 6 20:15:38 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:15:38 +0200 Subject: [Buildroot] [PATCH 1/1] package/snmppp: bump to version 3.5.1 In-Reply-To: <20240430203708.75367-1-jesseevg@gmail.com> References: <20240430203708.75367-1-jesseevg@gmail.com> Message-ID: <20240506221538.2e3ad1b9@windsurf> On Tue, 30 Apr 2024 22:37:08 +0200 Jesse Van Gavere wrote: > Drop non-v3 fix patch as this was upstreamed > > Signed-off-by: Jesse Van Gavere > --- > .../snmppp/0001-fix-build-without-v3.patch | 43 ------------------- > package/snmppp/snmppp.hash | 2 +- > package/snmppp/snmppp.mk | 2 +- > 3 files changed, 2 insertions(+), 45 deletions(-) > delete mode 100644 package/snmppp/0001-fix-build-without-v3.patch Updating .checkpackageignore after removing the patch was missing, so I did that when applying. Thanks for the contribution! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:16:23 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:16:23 +0200 Subject: [Buildroot] [git commit] package/perl-dbd-mysql: fix runtime issue with MariaDB Message-ID: <20240506201635.92DE7868ED@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=cefcd5bbadf2a8c8cb8c97049a478964ebddb95e branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Now that the TestPerlDBDmysql can be run normally, a new runtime issue appear due to switch from oracle-mysql to MariaDB: # perl -MDBI -e '1' # echo $? 0 # perl -MDBD::mysql -e '1' Can't load '/usr/lib/perl5/site_perl/5.38.2/arm-linux/auto/DBD/mysql/mysql.so' for module DBD::mysql: /usr/lib/perl5/site_perl/5.38.2/arm-linux/auto/DBD/mysql/mysql.so: undefined symbol: net_buffer_length at /usr/lib/perl5/5.38.2/arm-linux/DynaLoader.pm line 206. This is fixed by an upstream commit [1] from 4.046_01 release. [1] https://github.com/perl5-dbi/DBD-mysql/commit/0f0cebe87fab335873fd3701bc304922da826940 Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6735654506 Signed-off-by: Romain Naour Signed-off-by: Thomas Petazzoni --- ...-Use-net_buffer_length-macro-if-available.patch | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/package/perl-dbd-mysql/0001-Use-net_buffer_length-macro-if-available.patch b/package/perl-dbd-mysql/0001-Use-net_buffer_length-macro-if-available.patch new file mode 100644 index 0000000000..d7767c1f42 --- /dev/null +++ b/package/perl-dbd-mysql/0001-Use-net_buffer_length-macro-if-available.patch @@ -0,0 +1,41 @@ +From 9189ef77679c22de3bbd2142031858373236520b Mon Sep 17 00:00:00 2001 +From: Michiel Beijen +Date: Fri, 23 Feb 2018 07:52:33 +0000 +Subject: [PATCH] Use net_buffer_length macro if available + +Upstream: https://github.com/perl5-dbi/DBD-mysql/commit/0f0cebe87fab335873fd3701bc304922da826940 + +(cherry picked from commit 0f0cebe87fab335873fd3701bc304922da826940) +Signed-off-by: Romain Naour +--- + mysql.xs | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +diff --git a/mysql.xs b/mysql.xs +index 8edee55..9b4d60f 100644 +--- a/mysql.xs ++++ b/mysql.xs +@@ -819,15 +819,14 @@ dbd_mysql_get_info(dbh, sql_info_type) + retsv = newSVpvn("`", 1); + break; + case SQL_MAXIMUM_STATEMENT_LENGTH: +-#if !defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 50709 +- /* MariaDB 10 is not MySQL source level compatible so this +- only applies to MySQL*/ +- /* mysql_get_option() was added in mysql 5.7.3 */ +- /* MYSQL_OPT_NET_BUFFER_LENGTH was added in mysql 5.7.9 */ ++ /* net_buffer_length macro is not defined in MySQL 5.7 and some MariaDB ++ versions - if it is not available, use newer mysql_get_option */ ++#if !defined(net_buffer_length) ++ ; ++ unsigned long buffer_len; + mysql_get_option(NULL, MYSQL_OPT_NET_BUFFER_LENGTH, &buffer_len); + retsv = newSViv(buffer_len); + #else +- /* before mysql 5.7.9 use net_buffer_length macro */ + retsv = newSViv(net_buffer_length); + #endif + break; +-- +2.44.0 + From thomas.petazzoni at bootlin.com Mon May 6 20:16:02 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:16:02 +0200 Subject: [Buildroot] [git commit] support/testing: TestPerlDBDmysql: use ext2 instead of cpio Message-ID: <20240506201635.86E8C868EE@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=8937cd065cb4004d9eade7e75ec808fc2400ba4b branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master The CPIO filesystem generated by TestPerlDBDmysql is too large, and doesn't fit as an initramfs in the 256MB of RAM available in the versatilepb machine. This causes a failure while running a basic test "perl -MDBI -e '1'" since "/usr/lib/perl5", and many files being missing from the root filesystem, ultimately causing the test to fail. Can't locate DBI.pm in @INC (you may need to install the DBI module) (@INC entries checked: /usr/lib/perl5/site_perl/5.38.2/arm-linux /usr/lib/perl5/site_perl/5.38.2 /usr/lib/perl5/5.38.2/arm-linux /usr/lib/perl5/5.38.2). It would make sense to switch all test cases to use ext2 + a hard-drive, but for now, let's fix the few test cases that are causing problems. Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6735654506 Signed-off-by: Romain Naour Signed-off-by: Thomas Petazzoni --- support/testing/tests/package/test_perl_dbd_mysql.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/support/testing/tests/package/test_perl_dbd_mysql.py b/support/testing/tests/package/test_perl_dbd_mysql.py index f8fe832b41..93551b420f 100644 --- a/support/testing/tests/package/test_perl_dbd_mysql.py +++ b/support/testing/tests/package/test_perl_dbd_mysql.py @@ -1,4 +1,5 @@ from tests.package.test_perl import TestPerlBase +import os class TestPerlDBDmysql(TestPerlBase): @@ -13,8 +14,18 @@ class TestPerlDBDmysql(TestPerlBase): """ BR2_PACKAGE_PERL=y BR2_PACKAGE_PERL_DBD_MYSQL=y + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_SIZE="120M" """ + def login(self): + ext2_file = os.path.join(self.builddir, "images", "rootfs.ext2") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-drive", "file=%s,if=scsi,format=raw" % ext2_file], + kernel_cmdline=["rootwait", "root=/dev/sda"]) + self.emulator.login() + def test_run(self): self.login() self.module_test("DBI") From thomas.petazzoni at bootlin.com Mon May 6 20:16:40 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:16:40 +0200 Subject: [Buildroot] [PATCH 1/2] support/testing: TestPerlDBDmysql: use ext2 instead of cpio In-Reply-To: <20240430204744.1014238-1-romain.naour@smile.fr> References: <20240430204744.1014238-1-romain.naour@smile.fr> Message-ID: <20240506221640.50f0181c@windsurf> On Tue, 30 Apr 2024 22:47:43 +0200 Romain Naour wrote: > The CPIO filesystem generated by TestPerlDBDmysql is too large, and > doesn't fit as an initramfs in the 256MB of RAM available in the > versatilepb machine. This causes a failure while running a basic > test "perl -MDBI -e '1'" since "/usr/lib/perl5", and many files > being missing from the root filesystem, ultimately causing the test > to fail. > > Can't locate DBI.pm in @INC (you may need to install the DBI module) > (@INC entries checked: /usr/lib/perl5/site_perl/5.38.2/arm-linux > /usr/lib/perl5/site_perl/5.38.2 /usr/lib/perl5/5.38.2/arm-linux > /usr/lib/perl5/5.38.2). > > It would make sense to switch all test cases to use ext2 + a > hard-drive, but for now, let's fix the few test cases that are causing > problems. > > Fixes: > https://gitlab.com/buildroot.org/buildroot/-/jobs/6735654506 > > Signed-off-by: Romain Naour > --- > support/testing/tests/package/test_perl_dbd_mysql.py | 11 +++++++++++ > 1 file changed, 11 insertions(+) Both applied, thanks a lot! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From yann.morin.1998 at free.fr Mon May 6 20:19:39 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Mon, 6 May 2024 22:19:39 +0200 Subject: [Buildroot] [PATCH v1 0/8] support/kconfig: bump to linux-v6.9-rc5 version In-Reply-To: <20240506210440.323ccb15@windsurf> References: <20240506144555.31709-1-ps.report@gmx.net> <20240506210440.323ccb15@windsurf> Message-ID: Thomas, Peter, All, On 2024-05-06 21:04 +0200, Thomas Petazzoni via buildroot spake thusly: > On Mon, 6 May 2024 16:45:43 +0200 > Peter Seiderer via buildroot wrote: [--SNIP--] > > The kconfig version dump itself: > > - support/kconfig: bump to linux-v6.9-rc5 version > So this commit without the next two leads to a broken situation, > correct? (Note: this is not a complaint, I agree with them being split). Except they should be reversed: the new commits can work with the kconfig we currently have, so it looks like it should be OK to do the required changes before doing the kconfig bump. > > And two 'real' changes due to kconfig language changes: > > - support/kconfig: reference environment variables directly (remove 'option env=') > > - package/openssl: move libopenssl/libressl source statemetns outside of the choice > But don't we have this situation of source statements inside a > choice..endchoice in other places? Toolchains, skeletons, init systems, jpeg library, linux extensions, and indeed openssl. > I remember Yann saying that this was > a problematic change for us in the upstream kconfig code. Yes, so given that there are two problematic changes: - source statements in choices, - environment variable direct expansion, I wonder if it makes sense for us to update our kconfig infra... Regards, Yann E. MORIN. -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Mon May 6 20:19:39 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Mon, 6 May 2024 22:19:39 +0200 Subject: [Buildroot] [PATCH v1 0/8] support/kconfig: bump to linux-v6.9-rc5 version In-Reply-To: <20240506210440.323ccb15@windsurf> References: <20240506144555.31709-1-ps.report@gmx.net> <20240506210440.323ccb15@windsurf> Message-ID: Thomas, Peter, All, On 2024-05-06 21:04 +0200, Thomas Petazzoni via buildroot spake thusly: > On Mon, 6 May 2024 16:45:43 +0200 > Peter Seiderer via buildroot wrote: [--SNIP--] > > The kconfig version dump itself: > > - support/kconfig: bump to linux-v6.9-rc5 version > So this commit without the next two leads to a broken situation, > correct? (Note: this is not a complaint, I agree with them being split). Except they should be reversed: the new commits can work with the kconfig we currently have, so it looks like it should be OK to do the required changes before doing the kconfig bump. > > And two 'real' changes due to kconfig language changes: > > - support/kconfig: reference environment variables directly (remove 'option env=') > > - package/openssl: move libopenssl/libressl source statemetns outside of the choice > But don't we have this situation of source statements inside a > choice..endchoice in other places? Toolchains, skeletons, init systems, jpeg library, linux extensions, and indeed openssl. > I remember Yann saying that this was > a problematic change for us in the upstream kconfig code. Yes, so given that there are two problematic changes: - source statements in choices, - environment variable direct expansion, I wonder if it makes sense for us to update our kconfig infra... Regards, Yann E. MORIN. -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From thomas.petazzoni at bootlin.com Mon May 6 20:21:43 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:21:43 +0200 Subject: [Buildroot] [PATCH v1 0/8] support/kconfig: bump to linux-v6.9-rc5 version In-Reply-To: References: <20240506144555.31709-1-ps.report@gmx.net> <20240506210440.323ccb15@windsurf> Message-ID: <20240506222143.075e7731@windsurf> On Mon, 6 May 2024 22:19:39 +0200 "Yann E. MORIN" wrote: > > So this commit without the next two leads to a broken situation, > > correct? (Note: this is not a complaint, I agree with them being split). > > Except they should be reversed: the new commits can work with the > kconfig we currently have, so it looks like it should be OK to do the > required changes before doing the kconfig bump. I don't think the logic changed in "support/kconfig: reference environment variables directly (remove 'option env=')" can work with the current kconfig code base. > > I remember Yann saying that this was > > a problematic change for us in the upstream kconfig code. > > Yes, so given that there are two problematic changes: > - source statements in choices, > - environment variable direct expansion, > I wonder if it makes sense for us to update our kconfig infra... But we'd hate to stay stuck on an old kconfig code base forever. Gtk is going to move on, Qt is going to move on, which means at some point in the future, our "make xconfig" and "make gconfig" would no longer work. Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:21:43 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:21:43 +0200 Subject: [Buildroot] [PATCH v1 0/8] support/kconfig: bump to linux-v6.9-rc5 version In-Reply-To: References: <20240506144555.31709-1-ps.report@gmx.net> <20240506210440.323ccb15@windsurf> Message-ID: <20240506222143.075e7731@windsurf> On Mon, 6 May 2024 22:19:39 +0200 "Yann E. MORIN" wrote: > > So this commit without the next two leads to a broken situation, > > correct? (Note: this is not a complaint, I agree with them being split). > > Except they should be reversed: the new commits can work with the > kconfig we currently have, so it looks like it should be OK to do the > required changes before doing the kconfig bump. I don't think the logic changed in "support/kconfig: reference environment variables directly (remove 'option env=')" can work with the current kconfig code base. > > I remember Yann saying that this was > > a problematic change for us in the upstream kconfig code. > > Yes, so given that there are two problematic changes: > - source statements in choices, > - environment variable direct expansion, > I wonder if it makes sense for us to update our kconfig infra... But we'd hate to stay stuck on an old kconfig code base forever. Gtk is going to move on, Qt is going to move on, which means at some point in the future, our "make xconfig" and "make gconfig" would no longer work. Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From jesseevg at gmail.com Mon May 6 20:22:04 2024 From: jesseevg at gmail.com (Jesse Van Gavere) Date: Mon, 6 May 2024 22:22:04 +0200 Subject: [Buildroot] [PATCH 1/1] package/agentpp: bump to version 4.6.1 In-Reply-To: <20240506221450.5fafb5bc@windsurf> References: <20240430203401.74587-1-jesseevg@gmail.com> <20240506121919.118af862@booty> <20240506221450.5fafb5bc@windsurf> Message-ID: Op ma 6 mei 2024 om 22:14 schreef Thomas Petazzoni : > > On Mon, 6 May 2024 12:19:19 +0200 > Luca Ceresoli via buildroot wrote: > > > Hello Jesse, > > > > On Tue, 30 Apr 2024 22:34:01 +0200 > > Jesse Van Gavere wrote: > > > > > This version integrates the patch to fix building without v3 so remove > > > that patch, there is however another failure when linking the library, > > > debugprintf is used which was removed in snmp++, so patch that. > > > This patch has been sent to agentpp. > > > > Sure about this? snmp++ 3.5.1 does not seem to have any changes related > > to debugprintf compared to 3.5.0. Also, testing with both of your > > patches (this and the snmppp 3.5.1 bump), agentpp builds fine without > > the added patch. > > Also, we would prefer the added patch to be formatted using "git > format-patch". > > Thomas > -- > Thomas Petazzoni, co-owner and CEO, Bootlin > Embedded Linux and Kernel engineering and training > https://bootlin.com Hello Luca, You're correct that it does not seem to fail initially, however when using the Snmpx class from agentpp in my own application is when I got a linking error on debugprintf it could not resolve, this I could only fix with the included patch. What makes me suspect an oversight is that they mentioned that debugprintf was going to be removed entirely from agentpp in earlier release notes but some calls remain in the source code, this issue is also present in both versions hence no changes there. Thomas, They make it a bit tricky with their tarball only approach but I'll see to resubmit it as a git patch. Best regards, Jesse From fontaine.fabrice at gmail.com Mon May 6 20:23:04 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Mon, 6 May 2024 22:23:04 +0200 Subject: [Buildroot] [PATCH 1/1] package/suricata: fix static build Message-ID: <20240506202304.509499-1-fontaine.fabrice@gmail.com> Fix the following static build failure raised since bump to version version 6.0.14 in commit ce17f93e828a07292e03653be04a49480250f23f and https://github.com/OISF/suricata/commit/31ba4fd1522dd0d7f933767b9205c67a4e726fe5: configure:22378: checking for pcap_open_dead in -lpcap configure:22407: /home/buildroot/autobuild/run/instance-3/output-1/host/bin/x86_64-linux-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -static -std=c11 -march=native -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -static -rdynamic conftest.c -lpcap -ljansson -lpthread -lyaml -lpcre -latomic -lz >&5 /home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/x86_64-buildroot-linux-musl/12.3.0/../../../../x86_64-buildroot-linux-musl/bin/ld: /home/buildroot/autobuild/run/instance-3/output-1/host/x86_64-buildroot-linux-musl/sysroot/usr/lib/../lib64/libpcap.a(pcap-linux.o): in function `nl80211_init': pcap-linux.c:(.text+0xc34): undefined reference to `nl_socket_alloc' [...] checking for pcap_open_dead in -lpcap... no Fixes: ce17f93e828a07292e03653be04a49480250f23f - http://autobuild.buildroot.org/results/9e25c2508bd4100d2d1d3180e79060d762361213 Signed-off-by: Fabrice Fontaine --- .../0002-configure.ac-fix-static-build.patch | 52 +++++++++++++++++++ package/suricata/suricata.mk | 1 + 2 files changed, 53 insertions(+) create mode 100644 package/suricata/0002-configure.ac-fix-static-build.patch diff --git a/package/suricata/0002-configure.ac-fix-static-build.patch b/package/suricata/0002-configure.ac-fix-static-build.patch new file mode 100644 index 0000000000..fc5384a114 --- /dev/null +++ b/package/suricata/0002-configure.ac-fix-static-build.patch @@ -0,0 +1,52 @@ +From 6e1d8aceea8c4e49f00d8e630b681641a36c688f Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 6 May 2024 09:31:05 +0200 +Subject: [PATCH] configure.ac: fix static build + +static build is broken since +https://github.com/OISF/suricata/commit/31ba4fd1522dd0d7f933767b9205c67a4e726fe5 +because AC_CHECK_LIB is called before PKG_CHECK_MODULES: + +configure:22378: checking for pcap_open_dead in -lpcap +configure:22407: /home/buildroot/autobuild/run/instance-3/output-1/host/bin/x86_64-linux-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -static -std=c11 -march=native -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -static -rdynamic conftest.c -lpcap -ljansson -lpthread -lyaml -lpcre -latomic -lz >&5 +/home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/x86_64-buildroot-linux-musl/12.3.0/../../../../x86_64-buildroot-linux-musl/bin/ld: /home/buildroot/autobuild/run/instance-3/output-1/host/x86_64-buildroot-linux-musl/sysroot/usr/lib/../lib64/libpcap.a(pcap-linux.o): in function `nl80211_init': +pcap-linux.c:(.text+0xc34): undefined reference to `nl_socket_alloc' + +[...] + +checking for pcap_open_dead in -lpcap... no + +Fixes: + - http://autobuild.buildroot.org/results/9e25c2508bd4100d2d1d3180e79060d762361213 + +Signed-off-by: Fabrice Fontaine +Upstream: https://redmine.openinfosecfoundation.org/issues/7008 +--- + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 232ee9bed..6277cb9b6 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1219,6 +1219,8 @@ + fi + fi + ++ PKG_CHECK_MODULES([PCAP],libpcap,[CPPFLAGS="${CPPFLAGS} ${PCAP_CFLAGS}" LIBS="${LIBS} ${PCAP_LIBS}"],[:]) ++ + if test "$have_wpcap" != "yes"; then + AC_CHECK_LIB(pcap, pcap_open_dead, [], [ + echo +@@ -1234,8 +1236,6 @@ + PCAP_LIB_NAME="pcap" + fi + +- PKG_CHECK_MODULES([PCAP],libpcap,[CPPFLAGS="${CPPFLAGS} ${PCAP_CFLAGS}" LIBS="${LIBS} ${PCAP_LIBS}"],[:]) +- + AC_PATH_PROG(HAVE_PCAP_CONFIG, pcap-config, "no") + if test "$HAVE_PCAP_CONFIG" = "no" -o "$cross_compiling" = "yes"; then + AC_MSG_RESULT(no pcap-config is use) +-- +2.43.0 + diff --git a/package/suricata/suricata.mk b/package/suricata/suricata.mk index 2083e0caba..e60ed2fce8 100644 --- a/package/suricata/suricata.mk +++ b/package/suricata/suricata.mk @@ -10,6 +10,7 @@ SURICATA_LICENSE = GPL-2.0 SURICATA_LICENSE_FILES = COPYING LICENSE SURICATA_CPE_ID_VENDOR = oisf # 0001-configure.ac-allow-the-user-to-override-RUST_TARGET.patch +# 0002-configure.ac-fix-static-build.patch SURICATA_AUTORECONF = YES SURICATA_DEPENDENCIES = \ -- 2.43.0 From thomas.petazzoni at bootlin.com Mon May 6 20:19:19 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:19:19 +0200 Subject: [Buildroot] [git commit] package/flannel: bump to version 0.25.1 Message-ID: <20240506202540.BEBAD868F3@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=e379f1c5dd51d46ce4f5979e5efcae09538b7e1f branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Geoff Levand Signed-off-by: Thomas Petazzoni --- package/flannel/flannel.hash | 2 +- package/flannel/flannel.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/flannel/flannel.hash b/package/flannel/flannel.hash index c1ceeed9e8..97700d37ec 100644 --- a/package/flannel/flannel.hash +++ b/package/flannel/flannel.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 f9e68bc9c5b41ee7f721a754c9fa4eddf3da775faa9e638581a564e33b3fabcf flannel-0.24.2.tar.gz +sha256 c0de130efa2b14bc0f057a17df07bfd61154b30ce4a5eca24594c5b533ce661d flannel-0.25.1.tar.gz sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/flannel/flannel.mk b/package/flannel/flannel.mk index 02e62256cf..aa24644764 100644 --- a/package/flannel/flannel.mk +++ b/package/flannel/flannel.mk @@ -4,7 +4,7 @@ # ################################################################################ -FLANNEL_VERSION = 0.24.2 +FLANNEL_VERSION = 0.25.1 FLANNEL_SITE = $(call github,flannel-io,flannel,v$(FLANNEL_VERSION)) FLANNEL_LICENSE = Apache-2.0 From thomas.petazzoni at bootlin.com Mon May 6 20:27:06 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:27:06 +0200 Subject: [Buildroot] [PATCH] package/flannel: Bump to version 0.25.1 In-Reply-To: References: Message-ID: <20240506222706.157b4045@windsurf> On Wed, 1 May 2024 11:53:05 +0900 Geoff Levand wrote: > Signed-off-by: Geoff Levand > > diff --git a/package/flannel/flannel.hash b/package/flannel/flannel.hash > index 2e0198debe..97700d37ec 100644 > --- a/package/flannel/flannel.hash > +++ b/package/flannel/flannel.hash > @@ -1,3 +1,3 @@ > # Locally computed: > -sha256 98dde4eda016fec9aa6394cb4b283bdd972deda6ef9e1f2c3669dd2719ea1fe9 flannel-0.24.4.tar.gz > +sha256 c0de130efa2b14bc0f057a17df07bfd61154b30ce4a5eca24594c5b533ce661d flannel-0.25.1.tar.gz > sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE > diff --git a/package/flannel/flannel.mk b/package/flannel/flannel.mk > index 5cdfa0e09e..aa24644764 100644 > --- a/package/flannel/flannel.mk > +++ b/package/flannel/flannel.mk > @@ -4,7 +4,7 @@ > # > ################################################################################ > > -FLANNEL_VERSION = 0.24.4 > +FLANNEL_VERSION = 0.25.1 This was not applying on master, because you created this commit on top of your previous 0.24.2 -> 0.24.4 bump, which still had not been applied to master. So when something like this happen, we ideally expect you to mark your previous patch as Changes Requested, and then submit a brand new patch that does the 0.24.2 -> 0.25.1 in one go. I fixed up the conflicts when applying, and pushed to master. Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:29:23 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:29:23 +0200 Subject: [Buildroot] [git commit] package/sdbus-cpp: bump to version 2.0.0 Message-ID: <20240506203024.7ED3986906@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=0f5bb364c629dd7fc91f4295f872e46d89c0feef branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Changelog: https://github.com/Kistler-Group/sdbus-cpp/releases/tag/v2.0.0 Signed-off-by: Sergey Bobrenok Signed-off-by: Thomas Petazzoni --- package/sdbus-cpp/sdbus-cpp.hash | 2 +- package/sdbus-cpp/sdbus-cpp.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/sdbus-cpp/sdbus-cpp.hash b/package/sdbus-cpp/sdbus-cpp.hash index b5ca7ecdff..1350fc6781 100644 --- a/package/sdbus-cpp/sdbus-cpp.hash +++ b/package/sdbus-cpp/sdbus-cpp.hash @@ -1,4 +1,4 @@ # Locally computed: -sha256 577986929f911320fb9ef6a3e2badd464dc38411ebc25d2966f5cb85c39f0897 sdbus-cpp-1.5.0.tar.gz +sha256 88af4569161a0d0192f0f4a94582a1af4e75722499d06984fb7f91f638f5afb3 sdbus-cpp-2.0.0.tar.gz sha256 20c17d8b8c48a600800dfd14f95d5cb9ff47066a9641ddeab48dc54aec96e331 COPYING sha256 a1c9e75e25d8f2ce18017c88978edab2f0dbc7814ad0697d4ff2e5e59959f657 COPYING-LGPL-Exception diff --git a/package/sdbus-cpp/sdbus-cpp.mk b/package/sdbus-cpp/sdbus-cpp.mk index 18fc6a88a9..675ed1fa1f 100644 --- a/package/sdbus-cpp/sdbus-cpp.mk +++ b/package/sdbus-cpp/sdbus-cpp.mk @@ -4,7 +4,7 @@ # ################################################################################ -SDBUS_CPP_VERSION = 1.5.0 +SDBUS_CPP_VERSION = 2.0.0 SDBUS_CPP_SITE = $(call github,Kistler-Group,sdbus-cpp,v$(SDBUS_CPP_VERSION)) SDBUS_CPP_INSTALL_STAGING = YES SDBUS_CPP_DEPENDENCIES = host-pkgconf systemd From thomas.petazzoni at bootlin.com Mon May 6 20:30:26 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:30:26 +0200 Subject: [Buildroot] [PATCH 1/1] package/sdbus-cpp: bump to version 2.0.0 In-Reply-To: <20240429170441.996821-1-bobrofon@gmail.com> References: <20240429170441.996821-1-bobrofon@gmail.com> Message-ID: <20240506223026.683c8af7@windsurf> On Mon, 29 Apr 2024 20:04:41 +0300 Sergey Bobrenok wrote: > Changelog: > https://github.com/Kistler-Group/sdbus-cpp/releases/tag/v2.0.0 > > Signed-off-by: Sergey Bobrenok > --- > package/sdbus-cpp/sdbus-cpp.hash | 2 +- > package/sdbus-cpp/sdbus-cpp.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:30:44 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:30:44 +0200 Subject: [Buildroot] [PATCH 1/1] package/libjwt: add CPE variables In-Reply-To: <20240501150507.284189-1-fontaine.fabrice@gmail.com> References: <20240501150507.284189-1-fontaine.fabrice@gmail.com> Message-ID: <20240506223044.4f3d7772@windsurf> On Wed, 1 May 2024 17:05:07 +0200 Fabrice Fontaine wrote: > cpe:2.3:a:bencollins:jwt_c_library is a valid CPE identifier for this > package: > > https://nvd.nist.gov/products/cpe/detail/6335E595-6F38-4837-83BB-C78B687BB75B > > Signed-off-by: Fabrice Fontaine > --- > package/libjwt/libjwt.mk | 2 ++ > 1 file changed, 2 insertions(+) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:30:34 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:30:34 +0200 Subject: [Buildroot] [git commit] package/libjwt: add CPE variables Message-ID: <20240506203847.D404686920@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=1a2564e6880b70256c850a3fb54e9ec77d109d58 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master cpe:2.3:a:bencollins:jwt_c_library is a valid CPE identifier for this package: https://nvd.nist.gov/products/cpe/detail/6335E595-6F38-4837-83BB-C78B687BB75B Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/libjwt/libjwt.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package/libjwt/libjwt.mk b/package/libjwt/libjwt.mk index 1643aa7b7a..8929904d10 100644 --- a/package/libjwt/libjwt.mk +++ b/package/libjwt/libjwt.mk @@ -11,6 +11,8 @@ LIBJWT_AUTORECONF = YES LIBJWT_INSTALL_STAGING = YES LIBJWT_LICENSE = MPL-2.0 LIBJWT_LICENSE_FILES = LICENSE +LIBJWT_CPE_ID_VENDOR = bencollins +LIBJWT_CPE_ID_PRODUCT = jwt_c_library LIBJWT_CONF_OPTS = --without-examples ifeq ($(BR2_PACKAGE_OPENSSL),y) From thomas.petazzoni at bootlin.com Mon May 6 20:38:03 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:38:03 +0200 Subject: [Buildroot] [git commit] arch/Config.in: allow building a buildroot toolchain on SPARC Message-ID: <20240506203847.EDE2086922@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=6db46a67852acba97930fd43a372607b138700de branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master With this patch series we again allow building a Buildroot toolchain for SPARC, because SPARC was fixed in uClibc-ng, so SPARC systems work fine now. Signed-off-by: Dmitry Chestnykh Signed-off-by: Thomas Petazzoni --- arch/Config.in | 5 ----- 1 file changed, 5 deletions(-) diff --git a/arch/Config.in b/arch/Config.in index 9912f9fce6..e7349e83ae 100644 --- a/arch/Config.in +++ b/arch/Config.in @@ -216,11 +216,6 @@ config BR2_sh config BR2_sparc bool "SPARC" select BR2_USE_MMU - # uClibc-ng broken on sparc due to recent gcc changes - # that need to be reverted since gcc 8.4, 9.3 and 10.1. - # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784 - # gcc <= 10.x has been removed from Buildroot. - select BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT help SPARC (from Scalable Processor Architecture) is a RISC instruction set architecture (ISA) developed by Sun From thomas.petazzoni at bootlin.com Mon May 6 20:31:01 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:31:01 +0200 Subject: [Buildroot] [git commit] package/uclibc: bump to 1.0.48 Message-ID: <20240506203847.E09EF86921@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=7e6098f9b487c5bc8ee6a36b5e14964c98ad2cb9 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master - The 1.0.48 release of uClibc-ng includes the fix for the SPARC related issue discussed at https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784 - The hash for COPYING.LIB was changed because '^L' (0x0C) characters were removed from COPYING.LIB in uClibc-ng repo. Signed-off-by: Dmitry Chestnykh Signed-off-by: Thomas Petazzoni --- package/uclibc/uclibc.hash | 6 +++--- package/uclibc/uclibc.mk | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/uclibc/uclibc.hash b/package/uclibc/uclibc.hash index a10ceab54c..7097bbf99a 100644 --- a/package/uclibc/uclibc.hash +++ b/package/uclibc/uclibc.hash @@ -1,4 +1,4 @@ -# From https://downloads.uclibc-ng.org/releases/1.0.47/uClibc-ng-1.0.47.tar.xz.sha256 -sha256 29a4d684a06da344ee3ee09acc2ca7649d592ae3ff848f698145c46def05efcb uClibc-ng-1.0.47.tar.xz +# From https://downloads.uclibc-ng.org/releases/1.0.47/uClibc-ng-1.0.48.tar.xz.sha256 +sha256 3bf5fc6cc5cbc454b6c478424755c6f71e7c15578a2c966f02606aa5c5596e21 uClibc-ng-1.0.48.tar.xz # Locally calculated -sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 COPYING.LIB +sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING.LIB diff --git a/package/uclibc/uclibc.mk b/package/uclibc/uclibc.mk index a7b18133ff..9593e18d45 100644 --- a/package/uclibc/uclibc.mk +++ b/package/uclibc/uclibc.mk @@ -4,7 +4,7 @@ # ################################################################################ -UCLIBC_VERSION = 1.0.47 +UCLIBC_VERSION = 1.0.48 UCLIBC_SOURCE = uClibc-ng-$(UCLIBC_VERSION).tar.xz UCLIBC_SITE = https://downloads.uclibc-ng.org/releases/$(UCLIBC_VERSION) UCLIBC_LICENSE = LGPL-2.1+ From thomas.petazzoni at bootlin.com Mon May 6 20:39:13 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:39:13 +0200 Subject: [Buildroot] [PATCH v2 1/3] package/uclibc: Bump to 1.0.48. In-Reply-To: <20240502045518.4875-1-dm.chestnykh@gmail.com> References: <20240502045518.4875-1-dm.chestnykh@gmail.com> Message-ID: <20240506223913.31a83b67@windsurf> On Thu, 2 May 2024 07:55:16 +0300 Dmitry Chestnykh wrote: > - In 1.0.48 release uClibc-ng has provided the fix > for SPARC related to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784 > - The hash for COPYING.LIB was changed because '^L' (0x0C) characters > were removed from COPYING.LIB in uClibc-ng repo. > > Signed-off-by: Dmitry Chestnykh > --- > v1 -> v2: > - Describe the change of COPYING.LIB hash. > --- > package/uclibc/uclibc.hash | 6 +++--- > package/uclibc/uclibc.mk | 2 +- > 2 files changed, 4 insertions(+), 4 deletions(-) Applied to master, with minor commit log fixups. Thanks a lot! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:39:24 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:39:24 +0200 Subject: [Buildroot] [PATCH v2 2/3] arch/Config.in: Allow building buildroot toolchain. In-Reply-To: <20240502045518.4875-2-dm.chestnykh@gmail.com> References: <20240502045518.4875-1-dm.chestnykh@gmail.com> <20240502045518.4875-2-dm.chestnykh@gmail.com> Message-ID: <20240506223924.308ea7ba@windsurf> On Thu, 2 May 2024 07:55:17 +0300 Dmitry Chestnykh wrote: > With this patch series we allow it again because SPARC > was fixed in uClibc-ng so SPARC systems works fine now. > > Signed-off-by: Dmitry Chestnykh > --- > v1 -> v2: > - Split the patch into two parts: > this part allows building buildroot toolchain > for SPARC. > --- > arch/Config.in | 5 ----- > 1 file changed, 5 deletions(-) Applied to master, with minor commit title/log fixups, thanks a lot! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:40:54 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:40:54 +0200 Subject: [Buildroot] [PATCH v2 3/3] configs/qemu_sparc_ss10_defconfig: Re-introduce. In-Reply-To: <20240502045518.4875-3-dm.chestnykh@gmail.com> References: <20240502045518.4875-1-dm.chestnykh@gmail.com> <20240502045518.4875-3-dm.chestnykh@gmail.com> Message-ID: <20240506224054.218238be@windsurf> Hello, On Thu, 2 May 2024 07:55:18 +0300 Dmitry Chestnykh wrote: > With uClibc-ng-1.0.48 we can restore this config > because uClibc-ng was provided the fix for SPARC. > > Signed-off-by: Dmitry Chestnykh Could you confirm that the instructions in board/qemu/sparc-ss10/readme.txt are still valid? Also, could you in this same commit add yourself in the DEVELOPERS file for this defconfig and the board/qemu/sparc-ss10/ ? Thanks a lot! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:42:16 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:42:16 +0200 Subject: [Buildroot] [git commit] package/linux-firmware: bump version to 20240410 Message-ID: <20240506204325.D64838692C@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=26f5efd7cd1f4074c5e8dcc77199ad78e6033fec branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Updated WHENCE hash due to various new entries for new blobs. Signed-off-by: Andy Shevchenko Signed-off-by: Thomas Petazzoni --- package/linux-firmware/linux-firmware.hash | 4 ++-- package/linux-firmware/linux-firmware.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/linux-firmware/linux-firmware.hash b/package/linux-firmware/linux-firmware.hash index 5a19292a74..6462112fea 100644 --- a/package/linux-firmware/linux-firmware.hash +++ b/package/linux-firmware/linux-firmware.hash @@ -1,5 +1,5 @@ # From https://mirrors.edge.kernel.org/pub/linux/kernel/firmware/sha256sums.asc -sha256 ab7caff09bbb9e68e2b8a7c3e86d32b65f6444caa4ef8b0aabca9503da2c678d linux-firmware-20240115.tar.xz +sha256 b7f231228439c4302be2dfb5014dad18f4a77d663a11667c08c7b8aea7580d99 linux-firmware-20240410.tar.xz # Hash for license files sha256 8116433f4004fc0c24d72b3d9e497808b724aa0e5e1cd63fc1bf66b715b1e2e9 LICENCE.Abilis @@ -38,6 +38,6 @@ sha256 8542aeabf2761935122d693561e16766ce1bcc2b0d003204f9040b7d6d929f2e LICENS sha256 be904cd28cb292b80cdb6cf412ab0d9159d431671e987ad433c1f62e0988a9bc LICENSE.qcom sha256 fc6223d4bfe9f2f9e2eddc44b9fe5721d0caf49f01cb08d602906add686d8c6f LICENSE.radeon sha256 2bdd2e716f05d9737d3f9a20f9a3a3c0caee0e866100ddb0673f1178e42f92b9 LICENSE.sdma_firmware -sha256 92d477fe15d81875bc5bcc4c54df7e95b65f42e4c44d64d840f39cd0aa153d6f WHENCE +sha256 77a4c5cacd61e58b47af61a6bf636f7fc37b626647a2a406210ac61d0ddd9aef WHENCE sha256 fa43e1b9a13b341a07adca9dbe73d0f9072d7966fdfe811c01f0dd2872d7309a qcom/NOTICE.txt sha256 bef9c828e84f21e7835b4de7daf954a327e1ff777871b58e116039b684c0d604 LICENCE.e100 diff --git a/package/linux-firmware/linux-firmware.mk b/package/linux-firmware/linux-firmware.mk index 7e1e5cf6f2..0821816246 100644 --- a/package/linux-firmware/linux-firmware.mk +++ b/package/linux-firmware/linux-firmware.mk @@ -4,7 +4,7 @@ # ################################################################################ -LINUX_FIRMWARE_VERSION = 20240115 +LINUX_FIRMWARE_VERSION = 20240410 LINUX_FIRMWARE_SOURCE = linux-firmware-$(LINUX_FIRMWARE_VERSION).tar.xz LINUX_FIRMWARE_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/firmware LINUX_FIRMWARE_INSTALL_IMAGES = YES From thomas.petazzoni at bootlin.com Mon May 6 20:42:21 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:42:21 +0200 Subject: [Buildroot] [git commit] package/linux-firmware: Add Intel AtomISP v2 firmwares Message-ID: <20240506204325.E0D218692F@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=9b25246e9b731f167454ba4f8182eed1926f50a6 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Many of Intel based tablets (and all phones that were designed with Intel SoCs) have Intel AtomISP v2 engine. Add an entry for recently added firmwares for them. Signed-off-by: Andy Shevchenko Signed-off-by: Thomas Petazzoni --- package/linux-firmware/Config.in | 6 ++++++ package/linux-firmware/linux-firmware.mk | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/package/linux-firmware/Config.in b/package/linux-firmware/Config.in index 920c0a2ef1..ce0b88ad6c 100644 --- a/package/linux-firmware/Config.in +++ b/package/linux-firmware/Config.in @@ -637,6 +637,12 @@ config BR2_PACKAGE_LINUX_FIRMWARE_CX23885 Firmware files for Conexant Cx23885/7/8 PCIe broadcast A/V decoder needed by the Linux CX23885 driver. +config BR2_PACKAGE_LINUX_FIRMWARE_INTEL_ATOMISP + bool "Intel AtomISP v2" + help + Firmware files for Intel AtomISP v2 (also know as IPU2) + needed by the Linux AtomISP v2 driver. + endmenu endif diff --git a/package/linux-firmware/linux-firmware.mk b/package/linux-firmware/linux-firmware.mk index 0821816246..84c96d2216 100644 --- a/package/linux-firmware/linux-firmware.mk +++ b/package/linux-firmware/linux-firmware.mk @@ -846,6 +846,12 @@ LINUX_FIRMWARE_FILES += v4l-cx23885-avcore-01.fw # which is installed unconditionally endif +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_INTEL_ATOMISP),y) +LINUX_FIRMWARE_FILES += intel/ipu/shisp_2400b0_v21.bin +LINUX_FIRMWARE_FILES += intel/ipu/shisp_2401a0_v21.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ivsc +endif + ifneq ($(LINUX_FIRMWARE_FILES)$(LINUX_FIRMWARE_DIRS),) define LINUX_FIRMWARE_BUILD_CMDS From thomas.petazzoni at bootlin.com Mon May 6 20:43:34 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:43:34 +0200 Subject: [Buildroot] [PATCH 1/2] package/linux-firmware: bump version to 20240410 In-Reply-To: <20240425173213.3772586-1-andriy.shevchenko@linux.intel.com> References: <20240425173213.3772586-1-andriy.shevchenko@linux.intel.com> Message-ID: <20240506224334.296e25c3@windsurf> On Thu, 25 Apr 2024 20:32:12 +0300 Andy Shevchenko wrote: > Updated WHENCE hash due to various new entries for new blobs. > > Signed-off-by: Andy Shevchenko > --- > package/linux-firmware/linux-firmware.hash | 4 ++-- > package/linux-firmware/linux-firmware.mk | 2 +- > 2 files changed, 3 insertions(+), 3 deletions(-) Thanks both patches applied! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From peter at korsgaard.com Mon May 6 20:45:52 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 06 May 2024 22:45:52 +0200 Subject: [Buildroot] [PATCH v2, 1/3] package/php-xdebug: drop unrecognized variable In-Reply-To: <20240330090336.567660-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sat, 30 Mar 2024 10:03:34 +0100") References: <20240330090336.567660-1-fontaine.fabrice@gmail.com> Message-ID: <87le4mzn27.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > --with-xdebug is not recognized since the addition of the package in > commit 7b7dffd0984e1b274273f5638a975165606384f9: > configure: WARNING: unrecognized options: --disable-gtk-doc, > --disable-gtk-doc-html, --disable-doc, --disable-docs, > --disable-documentation, --with-xmlto, --with-fop, > --disable-dependency-tracking, --enable-ipv6, --disable-nls, > --with-xdebug > Fixes: 7b7dffd0984e1b274273f5638a975165606384f9 > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Mon May 6 20:46:03 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 06 May 2024 22:46:03 +0200 Subject: [Buildroot] [PATCH v2, 2/3] package/php-xdebug: add zlib optional dependency In-Reply-To: <20240330090336.567660-2-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sat, 30 Mar 2024 10:03:35 +0100") References: <20240330090336.567660-1-fontaine.fabrice@gmail.com> <20240330090336.567660-2-fontaine.fabrice@gmail.com> Message-ID: <87h6fazn1w.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > zlib is an optional dependency (enabled by default) since bump to > version 3.2.0 in commit 8280400fbadde09e51ccff312d7a4ef6a386f589 and > https://github.com/xdebug/xdebug/commit/3954e5cd9e48eec0a8a2a0c6a2fc120bbe562656 > Fixes: 8280400fbadde09e51ccff312d7a4ef6a386f589 > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Mon May 6 20:49:51 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 06 May 2024 22:49:51 +0200 Subject: [Buildroot] [PATCH] package/libblockdev: bump to version 3.1.1 In-Reply-To: <20240410234613.205a7b78@windsurf> (Thomas Petazzoni via buildroot's message of "Wed, 10 Apr 2024 23:46:13 +0200") References: <20240326225031.224022-1-giulio.benetti@benettiengineering.com> <20240326225031.224022-3-giulio.benetti@benettiengineering.com> <20240410234613.205a7b78@windsurf> Message-ID: <87cypyzmvk.fsf@dell.be.48ers.dk> >>>>> "Thomas" == Thomas Petazzoni via buildroot writes: > On Tue, 26 Mar 2024 23:50:31 +0100 > Giulio Benetti wrote: >> Signed-off-by: Giulio Benetti >> --- >> package/libblockdev/libblockdev.hash | 2 +- >> package/libblockdev/libblockdev.mk | 2 +- >> 2 files changed, 2 insertions(+), 2 deletions(-) > Applied to master, thanks. Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Mon May 6 20:49:39 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 6 May 2024 22:49:39 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/libblockdev: bump to version 3.1.1 Message-ID: <20240506205017.D0D118693E@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=233ba540f5c21a2305fcd29217a9767e819cfdd1 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: Giulio Benetti Signed-off-by: Thomas Petazzoni (cherry picked from commit dd79b8dd60ab6817f2d3a0db9eedc1526005c9be) Signed-off-by: Peter Korsgaard --- package/libblockdev/libblockdev.hash | 2 +- package/libblockdev/libblockdev.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/libblockdev/libblockdev.hash b/package/libblockdev/libblockdev.hash index 79700a4996..1438fad741 100644 --- a/package/libblockdev/libblockdev.hash +++ b/package/libblockdev/libblockdev.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 41e4af66c9d78e795302d37825dfd88a4970f82da7b4ebe6487feba2afae44fb libblockdev-3.1.0.tar.gz +sha256 a5cb33a53ff5969067982704f45399d02555fdb2313ed0c56eac9555397dc2db libblockdev-3.1.1.tar.gz sha256 97bdc721d875501b6243a456333fdfdb1ab64d31c4da2554de845caf4674b946 LICENSE diff --git a/package/libblockdev/libblockdev.mk b/package/libblockdev/libblockdev.mk index ebf01acfb5..9ffa15a7a9 100644 --- a/package/libblockdev/libblockdev.mk +++ b/package/libblockdev/libblockdev.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBBLOCKDEV_VERSION = 3.1.0 +LIBBLOCKDEV_VERSION = 3.1.1 LIBBLOCKDEV_SITE = https://github.com/storaged-project/libblockdev/releases/download/$(LIBBLOCKDEV_VERSION)-1 LIBBLOCKDEV_LICENSE = LGPL-2.1 LIBBLOCKDEV_LICENSE_FILES = LICENSE From peter at korsgaard.com Mon May 6 20:45:09 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 6 May 2024 22:45:09 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/php-xdebug: add zlib optional dependency Message-ID: <20240506205017.C23ED8693D@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=71e6b2765b0fec5cd55aab2fc2907d076a92ec17 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x zlib is an optional dependency (enabled by default) since bump to version 3.2.0 in commit 8280400fbadde09e51ccff312d7a4ef6a386f589 and https://github.com/xdebug/xdebug/commit/3954e5cd9e48eec0a8a2a0c6a2fc120bbe562656 Fixes: 8280400fbadde09e51ccff312d7a4ef6a386f589 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni (cherry picked from commit 4b7aeee28ed2f62370084dac4a92bdef89046b41) Signed-off-by: Peter Korsgaard --- package/php-xdebug/php-xdebug.mk | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/package/php-xdebug/php-xdebug.mk b/package/php-xdebug/php-xdebug.mk index 62ef3fa997..3bc197e556 100644 --- a/package/php-xdebug/php-xdebug.mk +++ b/package/php-xdebug/php-xdebug.mk @@ -25,4 +25,11 @@ endef PHP_XDEBUG_PRE_CONFIGURE_HOOKS += PHP_XDEBUG_PHPIZE +ifeq ($(BR2_PACKAGE_ZLIB),y) +PHP_XDEBUG_CONF_OPTS += --with-xdebug-compression +PHP_XDEBUG_DEPENDENCIES += zlib +else +PHP_XDEBUG_CONF_OPTS += --without-xdebug-compression +endif + $(eval $(autotools-package)) From peter at korsgaard.com Mon May 6 20:45:01 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 6 May 2024 22:45:01 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/php-xdebug: drop unrecognized variable Message-ID: <20240506205017.B67668693C@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=ba45833429c5d86a01917f68564ee9e620c771b2 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x --with-xdebug is not recognized since the addition of the package in commit 7b7dffd0984e1b274273f5638a975165606384f9: configure: WARNING: unrecognized options: --disable-gtk-doc, --disable-gtk-doc-html, --disable-doc, --disable-docs, --disable-documentation, --with-xmlto, --with-fop, --disable-dependency-tracking, --enable-ipv6, --disable-nls, --with-xdebug Fixes: 7b7dffd0984e1b274273f5638a975165606384f9 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni (cherry picked from commit 98ee9f8b49ebd7aa6d9dc2c726030ec396910f6c) Signed-off-by: Peter Korsgaard --- package/php-xdebug/php-xdebug.mk | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package/php-xdebug/php-xdebug.mk b/package/php-xdebug/php-xdebug.mk index c5a1e10ebc..62ef3fa997 100644 --- a/package/php-xdebug/php-xdebug.mk +++ b/package/php-xdebug/php-xdebug.mk @@ -14,8 +14,7 @@ PHP_XDEBUG_LICENSE_FILES = LICENSE PHP_XDEBUG_DEPENDENCIES = php host-autoconf PHP_XDEBUG_CONF_OPTS = \ --enable-xdebug \ - --with-php-config=$(STAGING_DIR)/usr/bin/php-config \ - --with-xdebug=$(STAGING_DIR)/usr + --with-php-config=$(STAGING_DIR)/usr/bin/php-config define PHP_XDEBUG_PHPIZE (cd $(@D); \ From peter at korsgaard.com Mon May 6 20:51:32 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 06 May 2024 22:51:32 +0200 Subject: [Buildroot] [PATCH] support/testing: TestFileCapabilities: update kernel to 4.19.310 In-Reply-To: <20240327162319.149021-1-romain.naour@smile.fr> (Romain Naour's message of "Wed, 27 Mar 2024 17:23:19 +0100") References: <20240327162319.149021-1-romain.naour@smile.fr> Message-ID: <878r0mzmsr.fsf@dell.be.48ers.dk> >>>>> "Romain" == Romain Naour writes: > Since the toolchain Bootlin update to 2023.11-1 [1], the arm Linux > kernel build is broken with binutils >= 2.41 with: > arch/arm/mm/proc-v7.S: Assembler messages: > arch/arm/mm/proc-v7.S:640: Error: junk at end of line, first unrecognized character is `#' > A similar issue has already be fixed for qemu m68k [2]. > Bump to the latest kernel 4.19 that already include the backport > of 790756c7e022 ("ARM: 8933/1: replace Sun/Solaris style flag on section directive") > [1] 7e0e6e3b8618ab942f25b11ee72fbc5a4deefdf1 > [2] a1ce9474e40f731f327035d8c0962abb16f00ff7 > Fixes: > https://gitlab.com/buildroot.org/buildroot/-/jobs/6414160106 (TestFileCapabilities) > Signed-off-by: Romain Naour Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Mon May 6 20:50:57 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 6 May 2024 22:50:57 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] support/testing: TestFileCapabilities: update kernel to 4.19.310 Message-ID: <20240506205155.A3E5486942@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=3948fb33272a5c013f0b76c2e1b57daf16f5eb26 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Since the toolchain Bootlin update to 2023.11-1 [1], the arm Linux kernel build is broken with binutils >= 2.41 with: arch/arm/mm/proc-v7.S: Assembler messages: arch/arm/mm/proc-v7.S:640: Error: junk at end of line, first unrecognized character is `#' A similar issue has already be fixed for qemu m68k [2]. Bump to the latest kernel 4.19 that already include the backport of 790756c7e022 ("ARM: 8933/1: replace Sun/Solaris style flag on section directive") [1] 7e0e6e3b8618ab942f25b11ee72fbc5a4deefdf1 [2] a1ce9474e40f731f327035d8c0962abb16f00ff7 Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6414160106 (TestFileCapabilities) Signed-off-by: Romain Naour Signed-off-by: Thomas Petazzoni (cherry picked from commit 07ef00df9bdff1486622fe8248168137aa531c9d) Signed-off-by: Peter Korsgaard --- support/testing/tests/core/test_file_capabilities.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/support/testing/tests/core/test_file_capabilities.py b/support/testing/tests/core/test_file_capabilities.py index fe21d76c94..e2600ae794 100644 --- a/support/testing/tests/core/test_file_capabilities.py +++ b/support/testing/tests/core/test_file_capabilities.py @@ -13,7 +13,7 @@ class TestFileCapabilities(infra.basetest.BRTest): BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y - BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.204" + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.310" BR2_LINUX_KERNEL_DEFCONFIG="vexpress" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}" BR2_LINUX_KERNEL_DTS_SUPPORT=y From fontaine.fabrice at gmail.com Mon May 6 20:52:49 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Mon, 6 May 2024 22:52:49 +0200 Subject: [Buildroot] [PATCH 1/1] package/openocd: fix build with libgpiod2 Message-ID: <20240506205250.1264901-1-fontaine.fabrice@gmail.com> openocd is not compatible with libgpiod2 resulting in the following build failure since the addition of libgpiod2 in commit 57391fad2e619395340b81957ddceab1b1df2e20: src/jtag/drivers/linuxgpiod.c: In function 'helper_get_line': src/jtag/drivers/linuxgpiod.c:283:19: error: 'GPIOD_LINE_REQUEST_DIRECTION_INPUT' undeclared (first use in this function); did you mean 'GPIOD_LINE_DIRECTION_INPUT'? 283 | int dir = GPIOD_LINE_REQUEST_DIRECTION_INPUT, flags = 0, val = 0, retval; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | GPIOD_LINE_DIRECTION_INPUT Fixes: 57391fad2e619395340b81957ddceab1b1df2e20 - http://autobuild.buildroot.org/results/7195e8b76350f26ab3b963702d88b254512e6928 Signed-off-by: Fabrice Fontaine --- package/openocd/openocd.mk | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/package/openocd/openocd.mk b/package/openocd/openocd.mk index 78c6e10c58..b24d1eacf0 100644 --- a/package/openocd/openocd.mk +++ b/package/openocd/openocd.mk @@ -56,8 +56,14 @@ OPENOCD_DEPENDENCIES = \ $(if $(BR2_PACKAGE_LIBUSB),libusb) \ $(if $(BR2_PACKAGE_LIBUSB_COMPAT),libusb-compat) \ $(if $(BR2_PACKAGE_LIBHID),libhid) \ - $(if $(BR2_PACKAGE_HIDAPI),hidapi) \ - $(if $(BR2_PACKAGE_LIBGPIOD),libgpiod) + $(if $(BR2_PACKAGE_HIDAPI),hidapi) + +ifeq ($(BR2_PACKAGE_LIBGPIOD),y) +OPENOCD_DEPENDENCIES += libgpiod +OPENOCD_CONF_OPTS += --enable-linuxgpiod +else +OPENOCD_CONF_OPTS += --disable-linuxgpiod +endif # Adapters OPENOCD_CONF_OPTS += \ -- 2.43.0 From peter at korsgaard.com Mon May 6 20:53:42 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 06 May 2024 22:53:42 +0200 Subject: [Buildroot] [PATCH] package/python-segno: add missing python3-{pyexpat, zlib} dependencies In-Reply-To: <20240327172351.411598-1-romain.naour@smile.fr> (Romain Naour's message of "Wed, 27 Mar 2024 18:23:51 +0100") References: <20240327172351.411598-1-romain.naour@smile.fr> Message-ID: <874jbazmp5.fsf@dell.be.48ers.dk> >>>>> "Romain" == Romain Naour writes: > The last version bump removed python-setuptools runtime dependency > but doing so also removed the python3-pyexpat and python3-zlib > runtime depdencies [1] that are actually direct runtime > dependencies. > [1] 081162580f99d1a68133f7f513bf2cd6d1b8b6b6 > Fixes: > https://gitlab.com/buildroot.org/buildroot/-/jobs/6477656982 (TestPythonPy3Segno) > Cc: James Hilliard > Signed-off-by: Romain Naour Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Mon May 6 20:54:27 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 06 May 2024 22:54:27 +0200 Subject: [Buildroot] [PATCH] package/python-service-identity: add missing python-cryptography dependency In-Reply-To: <20240327162207.148920-1-romain.naour@smile.fr> (Romain Naour's message of "Wed, 27 Mar 2024 17:22:07 +0100") References: <20240327162207.148920-1-romain.naour@smile.fr> Message-ID: <87zft2y83g.fsf@dell.be.48ers.dk> >>>>> "Romain" == Romain Naour writes: > The last version bump removed python-pyopenssl runtime dependency but > doing so also removed the python-cryptography runtime depdency [1] that > is actually a direct runtime dependency. > While at it, update BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS > dependency comment. > [1] 6008f2b1b901be1374ac201b5e560cca61b4b61e > Fixes: > https://gitlab.com/buildroot.org/buildroot/-/jobs/6477656983 (TestPythonPy3ServiceIdentity) > Cc: James Hilliard > Signed-off-by: Romain Naour Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Mon May 6 20:57:18 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 06 May 2024 22:57:18 +0200 Subject: [Buildroot] [PATCH] package/petitboot: bump to version 1.15 In-Reply-To: <20240326121634.1248184-1-laurent@vivier.eu> (Laurent Vivier's message of "Tue, 26 Mar 2024 13:16:34 +0100") References: <20240326121634.1248184-1-laurent@vivier.eu> Message-ID: <87v83qy7yp.fsf@dell.be.48ers.dk> >>>>> "Laurent" == Laurent Vivier writes: > Signed-off-by: Laurent Vivier Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Mon May 6 21:01:06 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 06 May 2024 23:01:06 +0200 Subject: [Buildroot] [git commit] support/testing: sync TestATFAllwinner with orangepi_zero_plus2_defconfig In-Reply-To: <20240411043420.511368601F@busybox.osuosl.org> (Yann E. MORIN's message of "Thu, 11 Apr 2024 06:33:25 +0200") References: <20240411043420.511368601F@busybox.osuosl.org> Message-ID: <87r0eey7sd.fsf@dell.be.48ers.dk> >>>>> "Yann" == Yann E MORIN writes: > commit: https://git.buildroot.net/buildroot/commit/?id=eb16148dddc6be39b0d850181c2461fdaba1ee6f > branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master > u-boot-2021.04 seems to be broken when pylibfdt support is enabled > and the latest python3/setuptools are used. > Since the TestATFAllwinner is using bananapi_m64 as u-boot defconfig > but the Buildroot defconfig of this board was removed in 2022.11 [1] > update TestATFAllwinner to use a newer BSP. Use the one provided > by orangepi_zero_plus2_defconfig. > [1] daf3c6661f823e566b6310042884c36c1d73f1de > Fixes: > https://gitlab.com/buildroot.org/buildroot/-/jobs/6477656317 (TestATFAllwinner) > Signed-off-by: Romain Naour > Signed-off-by: Yann E. MORIN Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Mon May 6 21:01:32 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 06 May 2024 23:01:32 +0200 Subject: [Buildroot] [git commit] support/testing: remove TestATFVexpress In-Reply-To: <20240411043420.5B0FE86020@busybox.osuosl.org> (Yann E. MORIN's message of "Thu, 11 Apr 2024 06:34:03 +0200") References: <20240411043420.5B0FE86020@busybox.osuosl.org> Message-ID: <87msp2y7rn.fsf@dell.be.48ers.dk> >>>>> "Yann" == Yann E MORIN writes: > commit: https://git.buildroot.net/buildroot/commit/?id=107bcd536dae1bc26e4f34ed510484d3abcc6b5f > branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master > TestATFVexpress is using vexpress_aemv8a_juno as as u-boot defconfig > but the Buildroot defconfig of this board was removed in 2022.11 [1] > Since both TestATFVexpress and TestATFAllwinner are now using mainline > ATF, we don't really need several ATF test anymore. Initially [2], > several runtime test were added to test ATF/U-Boot combinations when > ATF was provided by a vendor: vexpress (mainline), Allwinner and > Marvell. > Keep TestATFAllwinner as ATF mainline test. > [1] 347c1087388d7782e6865f112f195e6780d473a7 > [2] 8cf3ce04e9c4a4c4685b80edd9e8e873fe44d8e8 > Signed-off-by: Romain Naour > Signed-off-by: Yann E. MORIN Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Mon May 6 21:02:27 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 06 May 2024 23:02:27 +0200 Subject: [Buildroot] [PATCH] package/python-pypng: add missing python3-zlib dependency In-Reply-To: <20240410221806.89203-1-romain.naour@smile.fr> (Romain Naour's message of "Thu, 11 Apr 2024 00:18:03 +0200") References: <20240410221806.89203-1-romain.naour@smile.fr> Message-ID: <87ikzqy7q4.fsf@dell.be.48ers.dk> >>>>> "Romain" == Romain Naour writes: > png.py import zlib [1] so python3-zlib needs to be installed at > runtime. > [1] https://gitlab.com/drj11/pypng/-/blob/pypng-0.20220715.0/code/png.py?ref_type=tags#L185 > Fixes: > https://gitlab.com/buildroot.org/buildroot/-/jobs/6477656971 (TestPythonPy3Qrcode) > Cc: James Hilliard > Signed-off-by: Romain Naour Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From fontaine.fabrice at gmail.com Mon May 6 21:03:48 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Mon, 6 May 2024 23:03:48 +0200 Subject: [Buildroot] [PATCH 1/1] package/mdadm: fix uclibc and musl build Message-ID: <20240506210348.1285002-1-fontaine.fabrice@gmail.com> Fix following uclibc build failure raised since bump to version 4.3 in commit 99e9ff08d0705279532ca0cf3de22ea54660cbdc and https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=577fd10486d8d1472a6b559066f344ac30a3a391: Create.c: In function 'write_zeroes_fork': Create.c:155:35: error: 'FALLOC_FL_ZERO_RANGE' undeclared (first use in this function) 155 | if (fallocate(fd, FALLOC_FL_ZERO_RANGE | FALLOC_FL_KEEP_SIZE, | ^~~~~~~~~~~~~~~~~~~~ as well as the following musl build failure: util.c: In function 'get_md_name': util.c:1031:29: error: 'NAME_MAX' undeclared (first use in this function); did you mean 'MD_NAME_MAX'? 1031 | static char devname[NAME_MAX]; | ^~~~~~~~ | MD_NAME_MAX util.c:1031:29: note: each undeclared identifier is reported only once for each function it appears in /home/buildroot/instance-0/output-1/host/bin/x86_64-linux-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -DNO_LIBUDEV -DSendmail=\""/usr/sbin/sendmail -t"\" -DCONFFILE=\"/etc/mdadm.conf\" -DCONFFILE2=\"/etc/mdadm/mdadm.conf\" -DMAP_DIR=\"/run/mdadm\" -DMAP_FILE=\"map\" -DMDMON_DIR=\"/run/mdadm\" -DFAILED_SLOTS_DIR=\"/run/mdadm/failed-slots\" -DNO_COROSYNC -DNO_DLM -DUSE_PTHREADS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DBINDIR=\"/sbin\" -o Monitor.o -c Monitor.c /home/buildroot/instance-0/output-1/host/bin/x86_64-linux-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -DNO_LIBUDEV -DSendmail=\""/usr/sbin/sendmail -t"\" -DCONFFILE=\"/etc/mdadm.conf\" -DCONFFILE2=\"/etc/mdadm/mdadm.conf\" -DMAP_DIR=\"/run/mdadm\" -DMAP_FILE=\"map\" -DMDMON_DIR=\"/run/mdadm\" -DFAILED_SLOTS_DIR=\"/run/mdadm/failed-slots\" -DNO_COROSYNC -DNO_DLM -DUSE_PTHREADS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DBINDIR=\"/sbin\" -o dlink.o -c dlink.c Create.c: In function 'write_zeroes_fork': Create.c:155:35: error: 'FALLOC_FL_ZERO_RANGE' undeclared (first use in this function) 155 | if (fallocate(fd, FALLOC_FL_ZERO_RANGE | FALLOC_FL_KEEP_SIZE, | ^~~~~~~~~~~~~~~~~~~~ Fixes: 99e9ff08d0705279532ca0cf3de22ea54660cbdc - http://autobuild.buildroot.org/results/0e04bcdb591ca5642053e1f7e31384f06581e989 - http://autobuild.buildroot.org/results/c77ee2615e9d473e93d95c778648c7e897b7f234 Signed-off-by: Fabrice Fontaine --- ...ts-h-include-for-NAME_MAX-definition.patch | 32 ++++++++++++++ .../0003-Create.c-fix-uclibc-build.patch | 42 +++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 package/mdadm/0002-util-c-add-limits-h-include-for-NAME_MAX-definition.patch create mode 100644 package/mdadm/0003-Create.c-fix-uclibc-build.patch diff --git a/package/mdadm/0002-util-c-add-limits-h-include-for-NAME_MAX-definition.patch b/package/mdadm/0002-util-c-add-limits-h-include-for-NAME_MAX-definition.patch new file mode 100644 index 0000000000..ceaf7f923c --- /dev/null +++ b/package/mdadm/0002-util-c-add-limits-h-include-for-NAME_MAX-definition.patch @@ -0,0 +1,32 @@ +From 8bda86099089b44129ef6206764f9de47a45f0db Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin +Date: Tue, 12 Mar 2024 11:01:50 +0100 +Subject: util.c: add limits.h include for NAME_MAX definition + +Add limits.h include for NAME_MAX definition. + +Signed-off-by: Alexander Kanavin +Signed-off-by: Mariusz Tkaczyk + +Upstream: https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=8bda86099089b44129ef6206764f9de47a45f0db +Signed-off-by: Fabrice Fontaine +--- + util.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/util.c b/util.c +index 05ad3343..49a9c6e2 100644 +--- a/util.c ++++ b/util.c +@@ -36,7 +36,7 @@ + #include + #include + #include +- ++#include + + /* + * following taken from linux/blkpg.h because they aren't +-- +cgit 1.2.3-korg + diff --git a/package/mdadm/0003-Create.c-fix-uclibc-build.patch b/package/mdadm/0003-Create.c-fix-uclibc-build.patch new file mode 100644 index 0000000000..c8399be076 --- /dev/null +++ b/package/mdadm/0003-Create.c-fix-uclibc-build.patch @@ -0,0 +1,42 @@ +From 52bead95d2957437c691891fcdc49bd6afccdd49 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 12 Apr 2024 18:45:13 +0200 +Subject: Create.c: fix uclibc build + +Define FALLOC_FL_ZERO_RANGE if needed as FALLOC_FL_ZERO_RANGE is only +defined for aarch64 on uclibc-ng resulting in the following or1k build +failure since commit 577fd10486d8d1472a6b559066f344ac30a3a391: + +Create.c: In function 'write_zeroes_fork': +Create.c:155:35: error: 'FALLOC_FL_ZERO_RANGE' undeclared (first use in this function) + 155 | if (fallocate(fd, FALLOC_FL_ZERO_RANGE | FALLOC_FL_KEEP_SIZE, + | ^~~~~~~~~~~~~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/0e04bcdb591ca5642053e1f7e31384f06581e989 + +Signed-off-by: Fabrice Fontaine +Signed-off-by: Mariusz Tkaczyk +Upstream: https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=52bead95d2957437c691891fcdc49bd6afccdd49 +--- + Create.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/Create.c b/Create.c +index 4397ff49..d94253b1 100644 +--- a/Create.c ++++ b/Create.c +@@ -32,6 +32,10 @@ + #include + #include + ++#ifndef FALLOC_FL_ZERO_RANGE ++#define FALLOC_FL_ZERO_RANGE 16 ++#endif ++ + static int round_size_and_verify(unsigned long long *size, int chunk) + { + if (*size == 0) +-- +cgit 1.2.3-korg + -- 2.43.0 From peter at korsgaard.com Mon May 6 21:04:01 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 06 May 2024 23:04:01 +0200 Subject: [Buildroot] [PATCH] package/skeleton-init-sysv: Set sticky bit on /dev/shm In-Reply-To: <20240411152016.1185109-1-ben.hutchings@mind.be> (Ben Hutchings via buildroot's message of "Thu, 11 Apr 2024 17:20:16 +0200") References: <20240411152016.1185109-1-ben.hutchings@mind.be> Message-ID: <87edaey7ni.fsf@dell.be.48ers.dk> >>>>> "Ben" == Ben Hutchings via buildroot writes: > /dev/shm is a world-writable directory, like /tmp, and should also > have the sticky bit set. Without this, any user can delete and > replace another user's files in /dev/shm. > This bug has been present since /dev/shm was added to the skeleton > /etc/fstab, but appears to have been fixed for systems using systemd > by commit 76fc9275f14e "system: separate sysv and systemd parts of the > skeleton" which went into Buildroot 2017.08. > Signed-off-by: Ben Hutchings > Fixes: 22fde22e35f98f7830c2f8955465532328348cd1 Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Mon May 6 20:53:10 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 6 May 2024 22:53:10 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/python-segno: add missing python3-{pyexpat, zlib} dependencies Message-ID: <20240506212727.7164D86962@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=14e1388a95e3df3732d70c0b94a89836f3e072e2 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x The last version bump removed python-setuptools runtime dependency but doing so also removed the python3-pyexpat and python3-zlib runtime depdencies [1] that are actually direct runtime dependencies. [1] 081162580f99d1a68133f7f513bf2cd6d1b8b6b6 Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6477656982 (TestPythonPy3Segno) Cc: James Hilliard Signed-off-by: Romain Naour Signed-off-by: Thomas Petazzoni (cherry picked from commit d4833cc14df8496bb98e5ccbf0c020fdd502edc9) Signed-off-by: Peter Korsgaard --- package/python-segno/Config.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package/python-segno/Config.in b/package/python-segno/Config.in index 7107e67443..e6080fd417 100644 --- a/package/python-segno/Config.in +++ b/package/python-segno/Config.in @@ -1,5 +1,7 @@ config BR2_PACKAGE_PYTHON_SEGNO bool "python-segno" + select BR2_PACKAGE_PYTHON3_PYEXPAT # runtime + select BR2_PACKAGE_PYTHON3_ZLIB # runtime help QR Code and Micro QR Code generator for Python. From peter at korsgaard.com Mon May 6 21:02:09 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 6 May 2024 23:02:09 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/python-pypng: add missing python3-zlib dependency Message-ID: <20240506212727.B069686963@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=549aaab347586c2f1636a78c4e14185a14e00740 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x png.py import zlib [1] so python3-zlib needs to be installed at runtime. [1] https://gitlab.com/drj11/pypng/-/blob/pypng-0.20220715.0/code/png.py?ref_type=tags#L185 Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6477656971 (TestPythonPy3Qrcode) Cc: James Hilliard Signed-off-by: Romain Naour Signed-off-by: Yann E. MORIN (cherry picked from commit 15381b57559182693f6d5530544937f8fcf3b471) Signed-off-by: Peter Korsgaard --- package/python-pypng/Config.in | 1 + 1 file changed, 1 insertion(+) diff --git a/package/python-pypng/Config.in b/package/python-pypng/Config.in index c1ed405615..952b46c2c5 100644 --- a/package/python-pypng/Config.in +++ b/package/python-pypng/Config.in @@ -1,5 +1,6 @@ config BR2_PACKAGE_PYTHON_PYPNG bool "python-pypng" + select BR2_PACKAGE_PYTHON3_ZLIB # runtime help Pure Python library for saving and loading PNG images. From peter at korsgaard.com Mon May 6 21:02:53 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 6 May 2024 23:02:53 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/skeleton-init-sysv: Set sticky bit on /dev/shm Message-ID: <20240506212727.BBE4586967@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=3d1c04c05c27c206e336ad7338d0a882c9c4736d branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x /dev/shm is a world-writable directory, like /tmp, and should also have the sticky bit set. Without this, any user can delete and replace another user's files in /dev/shm. This bug has been present since /dev/shm was added to the skeleton /etc/fstab, but appears to have been fixed for systems using systemd by commit 76fc9275f14e "system: separate sysv and systemd parts of the skeleton" which went into Buildroot 2017.08. Signed-off-by: Ben Hutchings Fixes: 22fde22e35f98f7830c2f8955465532328348cd1 Signed-off-by: Yann E. MORIN (cherry picked from commit 0b2967e15800421efbdfe3a7a6061cf6bd84134d) Signed-off-by: Peter Korsgaard --- package/skeleton-init-sysv/skeleton/etc/fstab | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/skeleton-init-sysv/skeleton/etc/fstab b/package/skeleton-init-sysv/skeleton/etc/fstab index 169054b74f..06c20fe9d5 100644 --- a/package/skeleton-init-sysv/skeleton/etc/fstab +++ b/package/skeleton-init-sysv/skeleton/etc/fstab @@ -2,7 +2,7 @@ /dev/root / ext2 rw,noauto 0 1 proc /proc proc defaults 0 0 devpts /dev/pts devpts defaults,gid=5,mode=620,ptmxmode=0666 0 0 -tmpfs /dev/shm tmpfs mode=0777 0 0 +tmpfs /dev/shm tmpfs mode=1777 0 0 tmpfs /tmp tmpfs mode=1777 0 0 tmpfs /run tmpfs mode=0755,nosuid,nodev 0 0 sysfs /sys sysfs defaults 0 0 From peter at korsgaard.com Mon May 6 20:54:08 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 6 May 2024 22:54:08 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/python-service-identity: add missing python-cryptography dependency Message-ID: <20240506212727.7D3BB86963@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=63d5a3b88e345a620ffebf04f18b81ef659db609 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x The last version bump removed python-pyopenssl runtime dependency but doing so also removed the python-cryptography runtime depdency [1] that is actually a direct runtime dependency. While at it, update BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS dependency comment. [1] 6008f2b1b901be1374ac201b5e560cca61b4b61e Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6477656983 (TestPythonPy3ServiceIdentity) Cc: James Hilliard Signed-off-by: Romain Naour Signed-off-by: Thomas Petazzoni (cherry picked from commit ee074ddf6f0d00a97a1cae4ba62c1cffc77bb6e4) Signed-off-by: Peter Korsgaard --- package/python-service-identity/Config.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/python-service-identity/Config.in b/package/python-service-identity/Config.in index dccd8f37c0..3bb5c08c6f 100644 --- a/package/python-service-identity/Config.in +++ b/package/python-service-identity/Config.in @@ -1,8 +1,8 @@ config BR2_PACKAGE_PYTHON_SERVICE_IDENTITY bool "python-service-identity" - # python-pyopenssl -> python-cryptography - depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-cryptography select BR2_PACKAGE_PYTHON_ATTRS # runtime + select BR2_PACKAGE_PYTHON_CRYPTOGRAPHY # runtime select BR2_PACKAGE_PYTHON_PYASN1 # runtime select BR2_PACKAGE_PYTHON_PYASN1_MODULES # runtime help From peter at korsgaard.com Mon May 6 20:57:12 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 6 May 2024 22:57:12 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/petitboot: bump to version 1.15 Message-ID: <20240506212727.89EB986964@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=c28be13d01d7aa216d64817f4e9c728b73157a51 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: Laurent Vivier Signed-off-by: Thomas Petazzoni (cherry picked from commit 5652306f7e72792655f0b2b2ea978734fc2e5938) Signed-off-by: Peter Korsgaard --- package/petitboot/petitboot.hash | 2 +- package/petitboot/petitboot.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/petitboot/petitboot.hash b/package/petitboot/petitboot.hash index a9a21f2c1b..3a90bc5296 100644 --- a/package/petitboot/petitboot.hash +++ b/package/petitboot/petitboot.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 fa2367370d3ce5dd9910ab08a0832071e2508c8bf75cfec6d3b9807fbefc507a petitboot-v1.14.tar.gz +sha256 eed29ec841c2bcd5ecc65347f5b95a0087a541bd9c04ca3c17c55d1f7357d189 petitboot-v1.15.tar.gz sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 COPYING diff --git a/package/petitboot/petitboot.mk b/package/petitboot/petitboot.mk index 4c8bc35adb..cd7631fa5c 100644 --- a/package/petitboot/petitboot.mk +++ b/package/petitboot/petitboot.mk @@ -4,7 +4,7 @@ # ################################################################################ -PETITBOOT_VERSION = 1.14 +PETITBOOT_VERSION = 1.15 PETITBOOT_SOURCE = petitboot-v$(PETITBOOT_VERSION).tar.gz PETITBOOT_SITE = https://github.com/open-power/petitboot/releases/download/v$(PETITBOOT_VERSION) PETITBOOT_DEPENDENCIES = \ From peter at korsgaard.com Mon May 6 20:59:50 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 6 May 2024 22:59:50 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] support/testing: sync TestATFAllwinner with orangepi_zero_plus2_defconfig Message-ID: <20240506212727.9781C86965@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=2e929607565c479fffe6cfe1e0379f7c53abdf09 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x u-boot-2021.04 seems to be broken when pylibfdt support is enabled and the latest python3/setuptools are used. Since the TestATFAllwinner is using bananapi_m64 as u-boot defconfig but the Buildroot defconfig of this board was removed in 2022.11 [1] update TestATFAllwinner to use a newer BSP. Use the one provided by orangepi_zero_plus2_defconfig. [1] daf3c6661f823e566b6310042884c36c1d73f1de Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6477656317 (TestATFAllwinner) Signed-off-by: Romain Naour Signed-off-by: Yann E. MORIN (cherry picked from commit eb16148dddc6be39b0d850181c2461fdaba1ee6f) Signed-off-by: Peter Korsgaard --- support/testing/tests/boot/test_atf.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/support/testing/tests/boot/test_atf.py b/support/testing/tests/boot/test_atf.py index 4fcb9b241c..1995f83a54 100644 --- a/support/testing/tests/boot/test_atf.py +++ b/support/testing/tests/boot/test_atf.py @@ -34,15 +34,15 @@ class TestATFAllwinner(infra.basetest.BRTest): BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64=y BR2_TARGET_ARM_TRUSTED_FIRMWARE=y BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y - BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.5" + BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.9" BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50i_a64" # BR2_TARGET_ARM_TRUSTED_FIRMWARE_SSP is not set BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y - BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.04" - BR2_TARGET_UBOOT_BOARD_DEFCONFIG="bananapi_m64" + BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.10" + BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_zero_plus2" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_NEEDS_PYTHON3=y BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y From peter at korsgaard.com Mon May 6 21:01:24 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 6 May 2024 23:01:24 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] support/testing: remove TestATFVexpress Message-ID: <20240506212727.A3B7286962@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=0bbae94e2292bdf83437dbf31efe73bf889eaa53 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x TestATFVexpress is using vexpress_aemv8a_juno as as u-boot defconfig but the Buildroot defconfig of this board was removed in 2022.11 [1] Since both TestATFVexpress and TestATFAllwinner are now using mainline ATF, we don't really need several ATF test anymore. Initially [2], several runtime test were added to test ATF/U-Boot combinations when ATF was provided by a vendor: vexpress (mainline), Allwinner and Marvell. Keep TestATFAllwinner as ATF mainline test. [1] 347c1087388d7782e6865f112f195e6780d473a7 [2] 8cf3ce04e9c4a4c4685b80edd9e8e873fe44d8e8 Signed-off-by: Romain Naour Signed-off-by: Yann E. MORIN (cherry picked from commit 107bcd536dae1bc26e4f34ed510484d3abcc6b5f) Signed-off-by: Peter Korsgaard --- support/testing/tests/boot/test_atf.py | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/support/testing/tests/boot/test_atf.py b/support/testing/tests/boot/test_atf.py index 1995f83a54..352725e721 100644 --- a/support/testing/tests/boot/test_atf.py +++ b/support/testing/tests/boot/test_atf.py @@ -1,31 +1,6 @@ import infra.basetest -class TestATFVexpress(infra.basetest.BRTest): - config = \ - """ - BR2_aarch64=y - BR2_TOOLCHAIN_EXTERNAL=y - BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64=y - BR2_TARGET_ARM_TRUSTED_FIRMWARE=y - BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y - BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/ARM-software/arm-trusted-firmware.git" - BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="v2.5" - BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="juno" - BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y - BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y - BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_DTC=y - BR2_TARGET_UBOOT=y - BR2_TARGET_UBOOT_BOARDNAME="vexpress_aemv8a_juno" - BR2_TARGET_UBOOT_CUSTOM_VERSION=y - BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2020.07" - BR2_TARGET_VEXPRESS_FIRMWARE=y - """ - - def test_run(self): - pass - - class TestATFAllwinner(infra.basetest.BRTest): config = \ """ From romain.naour at smile.fr Mon May 6 21:30:38 2024 From: romain.naour at smile.fr (Romain Naour) Date: Mon, 6 May 2024 23:30:38 +0200 Subject: [Buildroot] [PATCH] package/python-rpds-py: bump to version 0.18.1 Message-ID: <20240506213038.418213-1-romain.naour@smile.fr> As reported by Antoine Coutant on the Buildroot mailing list [1]: rpds depends on the crate pyo3. This crate uses "std::sync::atomic::AtomicI64" which doesn't exist for 32 bits targets. That leads to an error as reported by Buildroot Gitlab-ci. An issue have been opened on pyo3's github [2]. A fix have been accepted by pyo3 [3] and merged in pyo3 0.20.3 release [4]. This pyo3 0.20.3 uses crate portable-atomic [5] to provide atomic types and compare and swap operations for all targets that can use std. python-rpds-py 0.18.1 is the first release that use pyo3 0.20.3. Before python-rpds-py 0.18.1 release fixing this issue would require that we be able to patch a package during the Cargo vendoring step [6]. [1] http://lists.busybox.net/pipermail/buildroot/2024-February/684867.html [2]: https://github.com/PyO3/pyo3/issues/3614 [3]: https://github.com/PyO3/pyo3/pull/3619 [4]: https://github.com/PyO3/pyo3/blob/v0.20.3/CHANGELOG.md [5]: https://github.com/taiki-e/portable-atomic [6]: http://lists.busybox.net/pipermail/buildroot/2024-February/684886.html Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6783811842 (TestPythonPy3Dtschema) https://gitlab.com/buildroot.org/buildroot/-/jobs/6783811860 (TestPythonPy3FlaskExpectsJson) Reported-by: Antoine Coutant Cc: James Hilliard Signed-off-by: Romain Naour --- package/python-rpds-py/python-rpds-py.hash | 2 +- package/python-rpds-py/python-rpds-py.mk | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/python-rpds-py/python-rpds-py.hash b/package/python-rpds-py/python-rpds-py.hash index 4650d9c385..62b508ae6b 100644 --- a/package/python-rpds-py/python-rpds-py.hash +++ b/package/python-rpds-py/python-rpds-py.hash @@ -1,4 +1,4 @@ # Locally calculated after vendoring -sha256 760b05720269195d86071ac7cf627b3a4ab9366680d8d449a6a63b84d96a5bc0 rpds_py-0.17.1.tar.gz +sha256 d9b542bf5321495737005a78d9fbf40541b898d1e2b3309cbe36a2431977be8b rpds_py-0.18.1.tar.gz # Locally computed sha256 checksums sha256 314e4e91be3baa93c0fb4bccc9e4e97cd643eb839b065af921782c2175fe9909 LICENSE diff --git a/package/python-rpds-py/python-rpds-py.mk b/package/python-rpds-py/python-rpds-py.mk index cee2ff290a..c38f749521 100644 --- a/package/python-rpds-py/python-rpds-py.mk +++ b/package/python-rpds-py/python-rpds-py.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_RPDS_PY_VERSION = 0.17.1 +PYTHON_RPDS_PY_VERSION = 0.18.1 PYTHON_RPDS_PY_SOURCE = rpds_py-$(PYTHON_RPDS_PY_VERSION).tar.gz -PYTHON_RPDS_PY_SITE = https://files.pythonhosted.org/packages/b7/0a/e3bdcc977e6db3bf32a3f42172f583adfa7c3604091a03d512333e0161fe +PYTHON_RPDS_PY_SITE = https://files.pythonhosted.org/packages/2d/aa/e7c404bdee1db7be09860dff423d022ffdce9269ec8e6532cce09ee7beea PYTHON_RPDS_PY_SETUP_TYPE = maturin PYTHON_RPDS_PY_LICENSE = MIT PYTHON_RPDS_PY_LICENSE_FILES = LICENSE -- 2.44.0 From november at dismail.de Mon May 6 23:47:03 2024 From: november at dismail.de (Dylan) Date: Mon, 06 May 2024 19:47:03 -0400 Subject: [Buildroot] Issue Building New Package cmus In-Reply-To: References: Message-ID: Hi Arnout, I will try that out. I appreciate your assistance! Thank you, Dylan On Mon, May 6 2024 at 09:01:13 AM +0200, Arnout Vandecappelle wrote: > > > On 06/05/2024 00:36, Dylan wrote: >> Hello Arnout, >> >> Thank you for the prompt reply. I moved the $(TARGET_CONFIGURE_OPTS) >> variable behind the ./configure and MAKE invocations and it has >> solved that issue (pasted below). >> >> define CMUS_CONFIGURE_CMDS >> (cd $(@D); \ >> $(TARGET_CONFIGURE_OPTS) \ >> $(TARGET_CONFIGURE_ARGS) \ >> ./configure $(CMUS_CONFIGURE_OPTS)) >> endef >> >> define CMUS_BUILD_CMDS >> $(TARGET_MAKE_ENV) \ >> $(TARGET_CONFIGURE_OPTS) \ >> $(TARGET_CONFIGURE_ARGS) \ >> $(MAKE) -C $(@D) all >> endef >> >> define CMUS_INSTALL_TARGET_CMDS >> $(TARGET_MAKE_ENV) \ >> $(TARGET_CONFIGURE_OPTS) \ >> $(TARGET_CONFIGURE_ARGS) \ >> $(MAKE) -C $(@D) install \ >> DESTDIR="$(TARGET_DIR)/usr/bin" >> endef >> >> >> I'm now receiving errors related to "undefined references", which by >> their names, seem rather essential: >> >> main.c:(.text+0x4): undefined reference to `__stack_chk_guard' >> buildroot/output/host/bin/aarch64-buildroot-linux-gnu-ld: >> main.c:(.text+0x14): undefined reference to `__stack_chk_guard' >> buildroot/output/host/bin/aarch64-buildroot-linux-gnu-ld: >> main.c:(.text+0x4c): undefined reference to `read' >> buildroot/output/host/bin/aarch64-buildroot-linux-gnu-ld: >> main.c:(.text+0x64): undefined reference to `__stack_chk_guard' >> buildroot/output/host/bin/aarch64-buildroot-linux-gnu-ld: >> main.c:(.text+0x68): undefined reference to `__stack_chk_guard' >> buildroot/output/host/bin/aarch64-buildroot-linux-gnu-ld: >> main.c:(.text+0x80): undefined reference to `__stack_chk_fail' > > Sounds like the Makefile unconditionally enables stack smashing > protection, but it's disabled in your Buildroot configuration. Check > in the Makefile how it's done and then either patch it out, or give > whatever config option is needed to disable it. If you disable it, it > will still be enabled by Buildroot when it's enabled in the Buildroot > configuration (through the CFLAGS that Buildroot passes in). > >> buildroot/output/host/bin/aarch64-buildroot-linux-gnu-ld: main.o: in >> function `write_line': >> main.c:(.text+0x138): undefined reference to `strlen' > > This is most likely a similar situation but with FORTIFY. > > Regards, > Arnout > >> >> Specifically, right after the line, >> LD cmus-remote >> >> Do you have any suggestions for resources I could dive deeper into >> this? I've been combing through the buildroot and bootlin docs, but >> it seems there are some specifics that I am missing. >> >> I have the full build log here, if you're so inclined: >> https://paste.ack.tf/f86eab >> >> Thank you for your assistance! >> Dylan >> >> On Sun, May 5 2024 at 09:33:22 PM +0200, Arnout Vandecappelle >> wrote: >>> >>> >>> On 05/05/2024 20:41, Dylan via buildroot wrote: >>>> Hello, >>>> >>>> I have added a new package, cmus, to my buildroot package list, >>>> but when I try to compile it during a full rebuild, it returns >>>> an error message, >>>> >>>> input.c: In function 'do_http_get': >>>> input.c:223:54: error: expected ')' before 'VERSION' >>>> CC lib.o >>>> make[2]: *** [scripts/lib.mk:66: input.o] Error 1 >>>> make[2]: *** Waiting for unfinished jobs.... >>>> make[1]: *** [package/pkg-generic.mk:283: >>>> buildroot/output/build/cmus-2.10.0/.stamp_built] Error 2 >>>> make: *** [Makefile:82: _all] Error 2 >>>> >>>> >>>> I can build the cmus package outside of buildroot, so I think it >>>> may be related to my cmus.mk file, but I am not sure what is >>>> wrong with the file. >>>> >>>> I've uploaded the contents of the cmus.mk file here: >>>> https://paste.ack.tf/8471de >>> >>> You have: >>> >>> $(MAKE) $(TARGET_CONFIGURE_OPTS) >>> >>> This forces an override of all variables defined in >>> TARGET_CONFIGURE_OPTS. One of those is CFLAGS, and in the >>> Makefile itself the definition of VERSION is added to CFLAGS. >>> >>> The solution is typically to use >>> >>> $(TARGET_CONFIGURE_OPTS) $(MAKE) >>> >>> i.e. pass everything in the environment. But then you have to make >>> sure that the Makefile properly handles that - e.g. that it uses >>> += for CFLAGS (which it does). >>> >>> Regards, >>> Arnout >>> >>>> >>>> If the mailing list supports it, I have the hash and config files >>>> attached, as well. >>>> >>>> >>>> I'm using buildroot version 2024.02 and have tried running "make >>>> clean all". >>>> Is anyone else able to reproduce the same error, or can tell me >>>> what I've done incorrectly? >>>> >>>> Thank you, >>>> Dylan >>>> >>>> >>>> _______________________________________________ >>>> buildroot mailing list >>>> buildroot at buildroot.org >>>> https://lists.buildroot.org/mailman/listinfo/buildroot >> >> From thomas.petazzoni at bootlin.com Tue May 7 04:01:54 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 07 May 2024 04:01:54 -0000 Subject: [Buildroot] [autobuild.buildroot.net] Daily results for 2024-05-06 Message-ID: Hello, Autobuild statistics for 2024-05-06 =================================== branch | OK | NOK | TIM | TOT | 2024.02.x | 4 | 8 | 0 | 12 | master | 86 | 89 | 0 | 175 | Classification of failures by reason for master ----------------------------------------------- ibm-sw-tpm2-5452af422edeff7... | 8 unknown | 7 host-heimdal-f4faaeaba371ff... | 6 fail2ban-1.0.2 | 5 gobject-introspection-1.76.1 | 5 host-libxcrypt-4.4.36 | 5 linux-6.8.6 | 4 host-sentry-cli-2.20.3 | 3 openssh-9.7p1 | 3 elfutils-0.189 | 2 host-binutils-2.42 | 2 libressl-3.8.4 | 2 mdadm-4.3 | 2 python-remi-2022.7.27 | 2 cni-plugins-1.3.0 | 1 containerd-1.7.14 | 1 coreutils-9.3 | 1 dmraid-1.0.0.rc16-3 | 1 eza-0.18.8 | 1 fcft-3.1.6 | 1 file-5.45 | 1 frr-8.5.4 | 1 fs/axfs/axfs.mk:33: /home/a... | 1 fs/erofs/erofs.mk:47: /home... | 1 fs/jffs2/jffs2.mk:71: /home... | 1 fs/ubifs/ubifs.mk:50: /home... | 1 glibc-2.39-5-ge0910f1d3278f... | 1 host-go-1.22.2 | 1 ipmitool-1_8_19 | 1 jack2-1.9.22 | 1 libarchive-3.7.3 | 1 libcamera-apps-1.2.1 | 1 libffi-3.4.6 | 1 libopenssl-3.3.0 | 1 libp11-0.4.12 | 1 linux-5.10.162-cip24-rt10 | 1 openal-1.22.0 | 1 openocd-0.12.0 | 1 openvmtools-11.3.5-18557794 | 1 oprofile-1.4.0 | 1 proj-9.3.0 | 1 qt5webkit-5.212.0-alpha4 | 1 sofia-sip-1.13.17 | 1 stress-ng-0.17.07 | 1 util-linux-2.39.3 | 1 v4l2loopback-0.12.7 | 1 zeek-4.1.1 | 1 Detail of failures for master ----------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- riscv64 | cni-plugins-1.3.0 | NOK | http://autobuild.buildroot.net/results/df01c1f03b8a900edf835c50a310aae4579d436b | riscv64 | containerd-1.7.14 | NOK | http://autobuild.buildroot.net/results/c4a7f74679502856072070d4bb661083da339794 | microblazeel | coreutils-9.3 | NOK | http://autobuild.buildroot.net/results/ed914ec0f5783ced0d5c180a29dfb63ad6b54dff | ORPH microblazeel | dmraid-1.0.0.rc16-3 | NOK | http://autobuild.buildroot.net/results/87d14187a7c6f4a3ccf4d66cfced85561185a507 | ORPH microblazeel | elfutils-0.189 | NOK | http://autobuild.buildroot.net/results/47f8fe910a88b7517ee335076a5e2431f5c00e98 | ORPH microblazeel | elfutils-0.189 | NOK | http://autobuild.buildroot.net/results/ab5639ea1f7fc9dcfcba00c64cb90903e8be4d86 | ORPH i586 | eza-0.18.8 | NOK | http://autobuild.buildroot.net/results/c28b729e71641a0844e6a57d3bb43834951fb0c9 | microblazeel | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/627f3c1a39e74bfd0da2bcd88201b6f0dcbe8a70 | microblaze | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/c4be4761350d52397d02db54a9fceb540aa15908 | mips64el | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/1b0ae28a4d3e634e098b2b64f02b0fcd5b2f59bd | arm | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/4d7c000e8df7dc14ae1b7a2cb43d9393888670f8 | powerpc64 | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/5e6949a36457b76c6a7467056ff1e559dd761560 | aarch64_be | fcft-3.1.6 | NOK | http://autobuild.buildroot.net/results/6220a4ae399659d1523a2c73da752665223bd94a | armeb | file-5.45 | NOK | http://autobuild.buildroot.net/results/804abc4a839e6f8d3f1cb62aff11dd76afeb7622 | ORPH arc | frr-8.5.4 | NOK | http://autobuild.buildroot.net/results/f37fe352dc2dacd13a9a6c81e25b4f0f9b3b500b | nios2 | fs/axfs/axfs.mk:33: /home/a... | NOK | http://autobuild.buildroot.net/results/8f456915676eeecc0d2e73633f6356d6e13de2fa | powerpc64le | fs/erofs/erofs.mk:47: /home... | NOK | http://autobuild.buildroot.net/results/a017263e64a6f833d2282b6ac3d2b1d829656151 | i686 | fs/jffs2/jffs2.mk:71: /home... | NOK | http://autobuild.buildroot.net/results/8d8779095e10422a641c8b03f170de2308f58ccb | mips | fs/ubifs/ubifs.mk:50: /home... | NOK | http://autobuild.buildroot.net/results/0594ee48d2c853b2467d79e5f4bb0c994521e0a1 | powerpc | glibc-2.39-5-ge0910f1d3278f... | NOK | http://autobuild.buildroot.net/results/f687939771e3295d786cd8b6b68106dd196c2cd8 | m68k | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/2e71228e96141b2378167c9b543c4b9a26b6c950 | ORPH powerpc | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/cd1004826c3f9f011a0fac39c100586fc778a868 | ORPH nios2 | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/3d6aa50cf27868440185b572e1580abd3b88c398 | ORPH sparc64 | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/720c9d20f45887fe8d69d01537422cdf2a33570a | ORPH m68k | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/effa61b8d0c44106a7bcc0f7883377d10963d039 | ORPH arc | host-binutils-2.42 | NOK | http://autobuild.buildroot.net/results/4a67d281652e3ff40522acc98d551fc106d65167 | arm | host-binutils-2.42 | NOK | http://autobuild.buildroot.net/results/b732267d508abe8d1ebf2c7889383f10de1822fe | mips64el | host-go-1.22.2 | NOK | http://autobuild.buildroot.net/results/ba32795558bb5185262bc374d8407187aaf8ed83 | aarch64 | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/8e184141bd3c04bc79c01d4656de606e4b0a23a0 | ORPH powerpc64le | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/40f045690ebf136431250613e0119def705027b9 | ORPH microblazeel | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/3daf44e8d636f822d2f19e456f1b49fca92d94bd | ORPH aarch64_be | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/4e6a65a18f4742d165c10993cb4d54f9e8d8eb61 | ORPH or1k | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/09870284eca8ed8ae643e4eb7aa7f2e4dc6eddc6 | ORPH mips64el | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/b172020293ee72811f1785a5c8a22d781eaba4bd | ORPH s390x | host-libxcrypt-4.4.36 | NOK | http://autobuild.buildroot.net/results/bce7c0a48ee30d0957a4552a29ef5cc8c3d37235 | aarch64_be | host-libxcrypt-4.4.36 | NOK | http://autobuild.buildroot.net/results/2d8b669a92948fed1418f2859e509c4b89a47579 | sparc64 | host-libxcrypt-4.4.36 | NOK | http://autobuild.buildroot.net/results/ba63c3f55480e138f7f793fcd1fe2af8d823908b | or1k | host-libxcrypt-4.4.36 | NOK | http://autobuild.buildroot.net/results/7f39b9313a3b3a651778b705274a44dc8958d26e | arm | host-libxcrypt-4.4.36 | NOK | http://autobuild.buildroot.net/results/82e58ef4872aca7c064fb70216d143f038207194 | arm | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/3d54586e990aa621f3b9a9369e30eb493f51068e | x86_64 | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/5ea8b53ddabd98c8011d617fd1f52a69f994d525 | mips64el | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/142455238da7c78d98b9d52331c8183251b49090 | powerpc64 | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/5505680389ffe17c12dfb22f3c7a09c242f72a20 | s390x | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/94c631877f2841f65a036fab507b1386eb48f72e | or1k | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/e72b89a051c8cae605fb7bf2fb4d9e2802f26f50 | powerpc64 | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/c997dbef24b8448b6728e456c8c7c999fef1667a | powerpc | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/82e29b1ef347c95e01da56e0c446788815180914 | or1k | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/e03cc8906015317b59e2ed728396aac4dc0ee94f | mipsel | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/755ba06e56193b3444f63749af04914f21b5c60d | aarch64_be | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/eaf3b8c686b0023e47b7b48c587bfcc39d81e66e | microblazeel | ipmitool-1_8_19 | NOK | http://autobuild.buildroot.net/results/b84667860ca4154564f52bc6a6c847cb747d35c6 | m68k | jack2-1.9.22 | NOK | http://autobuild.buildroot.net/results/47e105b9cc4cbe5204f37b5829694e74e1dab9f2 | armeb | libarchive-3.7.3 | NOK | http://autobuild.buildroot.net/results/cba970b10d80e7c1c01c924c996fce15b81d4d71 | s390x | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/ec1221ad1103f35769a06fecfa63160fd14da075 | arceb | libffi-3.4.6 | NOK | http://autobuild.buildroot.net/results/013aacb9f060cd17c004bdf4527f55b14bcbac67 | arm | libopenssl-3.3.0 | NOK | http://autobuild.buildroot.net/results/c6bb8fc1fdc2ef674b97e8d2676a84de65f1e8af | ORPH x86_64 | libp11-0.4.12 | NOK | http://autobuild.buildroot.net/results/2292465f02be206a3876585a40e56e52dde66684 | ORPH or1k | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/f0c3ca9b05f85147b417eb3c42ac0f2aa3563c8c | ORPH s390x | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/56947afd9170fa6ed07e0de3845de75b7f34d2fc | ORPH nios2 | linux-5.10.162-cip24-rt10 | NOK | http://autobuild.buildroot.net/results/1639e6c60c1e59896a0bbf00aec2f0c52ce763bf | ORPH mips64 | linux-6.8.6 | NOK | http://autobuild.buildroot.net/results/7bc825ec28ff3ea69fbc3e89a2e533700dd1cfef | ORPH mips64 | linux-6.8.6 | NOK | http://autobuild.buildroot.net/results/be4e88672635f13f931a8f46e05400bd377e15da | ORPH aarch64 | linux-6.8.6 | NOK | http://autobuild.buildroot.net/results/805892aad41431b18162c878cb8ac7f67e9c23a3 | ORPH nios2 | linux-6.8.6 | NOK | http://autobuild.buildroot.net/results/55cdc8f28b01a0e1baba99fd59fd4106a0bd43e2 | ORPH x86_64 | mdadm-4.3 | NOK | http://autobuild.buildroot.net/results/c77ee2615e9d473e93d95c778648c7e897b7f234 | ORPH arc | mdadm-4.3 | NOK | http://autobuild.buildroot.net/results/942549afb8e9d1a508ec28693a89e0c1b38c1a7c | ORPH mips | openal-1.22.0 | NOK | http://autobuild.buildroot.net/results/e96cc4e253d3cb2dfe22230a91680958b7c94e5e | ORPH or1k | openocd-0.12.0 | NOK | http://autobuild.buildroot.net/results/7195e8b76350f26ab3b963702d88b254512e6928 | ORPH mips64 | openssh-9.7p1 | NOK | http://autobuild.buildroot.net/results/ed341b0715f15341ef175fffa0bfb7520a8861ab | ORPH mips64 | openssh-9.7p1 | NOK | http://autobuild.buildroot.net/results/1ae665acbc30a161914da81032563ce37333bb11 | ORPH mips64 | openssh-9.7p1 | NOK | http://autobuild.buildroot.net/results/f4b74d023953ea35a43dea0ac7dff024010ce849 | ORPH aarch64 | openvmtools-11.3.5-18557794 | NOK | http://autobuild.buildroot.net/results/a2272452eab8a378b0a3a613de336acf233e2939 | mips64el | oprofile-1.4.0 | NOK | http://autobuild.buildroot.net/results/a9f3e09e6543b3773440c011e93bd41e357691e4 | mips | proj-9.3.0 | NOK | http://autobuild.buildroot.net/results/df4ba7b931a3e4f0717133e88fb60080862b963c | nios2 | python-remi-2022.7.27 | NOK | http://autobuild.buildroot.net/results/da4512c0a8aa5869e1da011579b9ec6a1c4f8425 | nios2 | python-remi-2022.7.27 | NOK | http://autobuild.buildroot.net/results/593ada0385b939b2208a253c77ac7c20c374e33e | arm | qt5webkit-5.212.0-alpha4 | NOK | http://autobuild.buildroot.net/results/c7ca68c1859c4dfbd8d0356b7e85d24a519cd02a | mips64 | sofia-sip-1.13.17 | NOK | http://autobuild.buildroot.net/results/65f5708823d31920a3b16cee6f7956c3c69dac79 | xtensa | stress-ng-0.17.07 | NOK | http://autobuild.buildroot.net/results/d13d20146bf059977d55fad134e79d36bc845339 | s390x | unknown | NOK | http://autobuild.buildroot.net/results/e77787c7cab442774ef85cf2ba05b4f97458e88a | mips64 | unknown | NOK | http://autobuild.buildroot.net/results/f4438327914e71589de9f7ba75c91ceecab56c0b | microblazeel | unknown | NOK | http://autobuild.buildroot.net/results/53bdcb9b3cab1b2fd6571053eab1bf6a413f6156 | arm | unknown | NOK | http://autobuild.buildroot.net/results/8ee65226e1382c04c3d90d7c460af5c53add97fb | riscv32 | unknown | NOK | http://autobuild.buildroot.net/results/96c06b5a5bc436003ed7a9a1e32685787745ab64 | mipsel | unknown | NOK | http://autobuild.buildroot.net/results/a697a57eb7f38856c4b342fa2540529d882bf373 | arceb | unknown | NOK | http://autobuild.buildroot.net/results/ed87605bd407daf77fe59cb0a550cf5a42f46088 | arm | util-linux-2.39.3 | NOK | http://autobuild.buildroot.net/results/c804711462dcf600de7c09e0e70142ac8e6780fd | ORPH powerpc64le | v4l2loopback-0.12.7 | NOK | http://autobuild.buildroot.net/results/45f0e298593f0488d82e140ce2d92a7c4dfeb670 | sparc | zeek-4.1.1 | NOK | http://autobuild.buildroot.net/results/d5700ea3562c9a0c23de1297ab92fa83d681fd2e | Classification of failures by reason for 2024.02.x -------------------------------------------------- libressl-3.8.4 | 2 apcupsd-3.14.14 | 1 dmraid-1.0.0.rc16-3 | 1 glibc-2.38-44-gd37c2b20a478... | 1 mongodb-4.2.18 | 1 openssh-9.7p1 | 1 python-grpcio-1.60.0 | 1 Detail of failures for 2024.02.x -------------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- sparc64 | apcupsd-3.14.14 | NOK | http://autobuild.buildroot.net/results/48749ce9b2193feeb40908132fd5750bbbe3e0bd | x86_64 | dmraid-1.0.0.rc16-3 | NOK | http://autobuild.buildroot.net/results/7762a189548944fb418ec123268fca477a3cf175 | ORPH powerpc64 | glibc-2.38-44-gd37c2b20a478... | NOK | http://autobuild.buildroot.net/results/be8df3bdbb21abd13d576e15f48a098ca6570118 | or1k | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/642a797f11f56f441f663613723f34c36a5ab267 | ORPH s390x | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/7dfd2964237e37f3715c36ec863c6ea3e10ec7a3 | ORPH aarch64 | mongodb-4.2.18 | NOK | http://autobuild.buildroot.net/results/29464b81bdc4b40149f80559b0c964ca4c729942 | mips64el | openssh-9.7p1 | NOK | http://autobuild.buildroot.net/results/4dc7fc5fcc31ff6472a40776f5e092824b910966 | ORPH mips64el | python-grpcio-1.60.0 | NOK | http://autobuild.buildroot.net/results/ed8a5416fc62e58c005454f92f1136a610bc2261 | Gitlab CI results for 2024-05-06 ================================ Detail of runtime-test failures for master ------------------------------------------ runtime-test | link to the job | orph? --------------------------+---------------------------------------------------------------+------ TestDockerCompose | https://gitlab.com/buildroot.org/buildroot/-/jobs/6783811249 | ORPH ...ilp32dMuslBleedingEdge | https://gitlab.com/buildroot.org/buildroot/-/jobs/6783812563 | ORPH ...iscv32ilp32dMuslStable | https://gitlab.com/buildroot.org/buildroot/-/jobs/6783812567 | ORPH TestMender | https://gitlab.com/buildroot.org/buildroot/-/jobs/6783811637 | ORPH TestOci | https://gitlab.com/buildroot.org/buildroot/-/jobs/6783810998 | ORPH TestPerlDBDmysql | https://gitlab.com/buildroot.org/buildroot/-/jobs/6783811699 | ORPH TestPythonPy3Dtschema | https://gitlab.com/buildroot.org/buildroot/-/jobs/6783811842 | ORPH ...honPy3FlaskExpectsJson | https://gitlab.com/buildroot.org/buildroot/-/jobs/6783811860 | ORPH TestPythonPy3MlDtypes | https://gitlab.com/buildroot.org/buildroot/-/jobs/6783811913 | ORPH TestPythonPy3SciPy | https://gitlab.com/buildroot.org/buildroot/-/jobs/6783811967 | ORPH -- http://autobuild.buildroot.net From dm.chestnykh at gmail.com Tue May 7 04:15:48 2024 From: dm.chestnykh at gmail.com (Dmitry Chestnykh) Date: Tue, 7 May 2024 07:15:48 +0300 Subject: [Buildroot] [PATCH v3] configs/qemu_sparc_ss10_defconfig: Re-introduce. Message-ID: <20240507041548.382997-1-dm.chestnykh@gmail.com> - With uClibc-ng-1.0.48 we can restore this config because uClibc-ng was provided the fix for SPARC. - The instructions in board/qemu/sparc-ss10/readme.txt are still valid without any corrections. The system boots properly ang the login prompt appears. Signed-off-by: Dmitry Chestnykh --- v2 -> v3: - The first two patches are merged. - It has been checked and it is written in commit message that the instructions in board/qemu/sparc-ss10/readme.txt don't require changes. - Add myself to DEVELOPERS for board/qemu/sparc-ss10/ and defconfig. --- DEVELOPERS | 4 ++++ configs/qemu_sparc_ss10_defconfig | 28 ++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 configs/qemu_sparc_ss10_defconfig diff --git a/DEVELOPERS b/DEVELOPERS index 1c5ad1e42a..4bd6c58d4a 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -3343,3 +3343,7 @@ F: package/quazip/ F: package/shapelib/ F: package/simple-mail/ F: package/tinc/ + +N: Dmitry Chestnykh +F: board/qemu/sparc-ss10/ +F: configs/qemu_sparc_ss10_defconfig diff --git a/configs/qemu_sparc_ss10_defconfig b/configs/qemu_sparc_ss10_defconfig new file mode 100644 index 0000000000..a8e3df9180 --- /dev/null +++ b/configs/qemu_sparc_ss10_defconfig @@ -0,0 +1,28 @@ +# Architecture +BR2_sparc=y +BR2_sparc_v8=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_AS_KERNEL=y + +# Linux kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.6" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sparc-ss10/linux.config" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y -- 2.45.0 From dannenberg at ti.com Tue May 7 06:17:51 2024 From: dannenberg at ti.com (Andreas Dannenberg) Date: Tue, 7 May 2024 01:17:51 -0500 Subject: [Buildroot] [PATCH RESEND v2 02/11] boot/uboot: bump to version v2024.04 In-Reply-To: <20240506220948.7baeea19@windsurf> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> <20240430-optee-update-v2-2-5bdc2f940db1@ti.com> <20240506085315.lb4frefetaffps6i@dasso> <20240506220948.7baeea19@windsurf> Message-ID: <20240507061751.pzljxk2hd6al5fkj@dasso> Hi Thomas, On Mon, May 06, 2024 at 10:09:48PM +0200, Thomas Petazzoni wrote: > Hello Andreas, > > On Mon, 6 May 2024 03:53:15 -0500 > Andreas Dannenberg via buildroot wrote: > > > Similar to your other patch ("boot/optee-os: bump to release v4.2.0") > > changing the global default will affect other platforms so there's some > > risk for breakage I suppose. Why not keeping those specific changes to > > the AM62/AM64 platforms? > > What Bryan did is totally fine and in line with how we handle things in > Buildroot. For packages that are close the hardware (OP-TEE, TF-A, > U-Boot, Linux), Buildroot offers: > > - Using a "latest" version, which is regularly updated to the latest > upstream version, which means that if you change Buildroot version, > this version changes, like for any other package. > > - Using a "custom" version, which is provided as an URL to a custom > tarball, a tag/commit in a Git repo, etc. In this case, the version > is explicitly specified in the user's .config file, and doesn't > change when Buildroot is updated. > > So, what Bryan did is update the "latest" version, and this is > perfectly correct. > > All our defconfigs use a "custom" version for all of Linux, U-Boot, > OP-TEE, TF-A, specifically to ensure that despite the update in > Buildroot, our defconfig keep on using the versions that were tested by > the developer who submitted the defconfig. Ah, that's the piece I wasn't fully aware of, that all of the defconfigs use a "custom" version, very much limiting the impact of the change here. Thanks for clarifying! Regards, Andreas > Best regards, > > Thomas > -- > Thomas Petazzoni, co-owner and CEO, Bootlin > Embedded Linux and Kernel engineering and training > https://bootlin.com From peter at korsgaard.com Tue May 7 06:29:20 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Tue, 07 May 2024 08:29:20 +0200 Subject: [Buildroot] [PATCH v2 1/2] configs/sheevaplug_defconfig: bump Linux to fix binutils 2.41 build In-Reply-To: <20240506213122.1da7a111@windsurf> (Thomas Petazzoni's message of "Mon, 6 May 2024 21:31:22 +0200") References: <20240506074013.263439-1-peter@korsgaard.com> <20240506213122.1da7a111@windsurf> Message-ID: <87a5l2xhhb.fsf@dell.be.48ers.dk> >>>>> "Thomas" == Thomas Petazzoni writes: Hi, >> Fix the build by bumping the kernel to 4.14.336, which includes commit >> 3ab03df64f77 (ARM: 8933/1: replace Sun/Solaris style flag on section >> directive): >> >> https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-4.14.y&id=3ab03df64f7754728a2257c47775a70a88428331 >> >> Signed-off-by: Peter Korsgaard >> --- >> configs/sheevaplug_defconfig | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) > Series applied. In the second patch you had forgotten (perhaps > intentionally?) to update .checkpackageignore, so I did it while > applying. Ahh, I hadn't seen commit 7931f78c16f08f7 yet, still running a bit behind for 2024.02.x after the holidays. Thanks for fixing it up. -- Bye, Peter Korsgaard From fontaine.fabrice at gmail.com Tue May 7 06:45:20 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Tue, 7 May 2024 08:45:20 +0200 Subject: [Buildroot] [PATCH 1/1] package/libgpiod2: drop host-autoconf-archive dependency Message-ID: <20240507064520.25653-1-fontaine.fabrice@gmail.com> host-autoconf-archive was added to libgpiod in commit 8df6ae3127ccdc0873df2246b32918e846b074c3 because of a patch to configure.ac. It is not needed by libgpiod2 as there is no patch since the addition of the package in commit 57391fad2e619395340b81957ddceab1b1df2e20 Fixes: 57391fad2e619395340b81957ddceab1b1df2e20 Signed-off-by: Fabrice Fontaine --- package/libgpiod2/libgpiod2.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/libgpiod2/libgpiod2.mk b/package/libgpiod2/libgpiod2.mk index 9c478f1ffb..856eb9bd14 100644 --- a/package/libgpiod2/libgpiod2.mk +++ b/package/libgpiod2/libgpiod2.mk @@ -12,7 +12,7 @@ LIBGPIOD2_SITE = https://www.kernel.org/pub/software/libs/libgpiod LIBGPIOD2_LICENSE = LGPL-2.1+ LIBGPIOD2_LICENSE_FILES = COPYING LIBGPIOD2_INSTALL_STAGING = YES -LIBGPIOD2_DEPENDENCIES = host-pkgconf host-autoconf-archive +LIBGPIOD2_DEPENDENCIES = host-pkgconf LIBGPIOD2_CONF_OPTS = \ --disable-bindings-python \ --disable-examples \ -- 2.43.0 From thomas.petazzoni at bootlin.com Tue May 7 07:01:15 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:01:15 +0200 Subject: [Buildroot] [git commit] package/suricata: fix static build Message-ID: <20240507070215.C5CD286988@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=a3ee47ef22f4035d715461e98ff8a2c4f76735ea branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fix the following static build failure raised since bump to version version 6.0.14 in commit ce17f93e828a07292e03653be04a49480250f23f and https://github.com/OISF/suricata/commit/31ba4fd1522dd0d7f933767b9205c67a4e726fe5: configure:22378: checking for pcap_open_dead in -lpcap configure:22407: /home/buildroot/autobuild/run/instance-3/output-1/host/bin/x86_64-linux-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -static -std=c11 -march=native -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -static -rdynamic conftest.c -lpcap -ljansson -lpthread -lyaml -lpcre -latomic -lz >&5 /home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/x86_64-buildroot-linux-musl/12.3.0/../../../../x86_64-buildroot-linux-musl/bin/ld: /home/buildroot/autobuild/run/instance-3/output-1/host/x86_64-buildroot-linux-musl/sysroot/usr/lib/../lib64/libpcap.a(pcap-linux.o): in function `nl80211_init': pcap-linux.c:(.text+0xc34): undefined reference to `nl_socket_alloc' [...] checking for pcap_open_dead in -lpcap... no Fixes: ce17f93e828a07292e03653be04a49480250f23f - http://autobuild.buildroot.org/results/9e25c2508bd4100d2d1d3180e79060d762361213 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- .../0002-configure.ac-fix-static-build.patch | 52 ++++++++++++++++++++++ package/suricata/suricata.mk | 1 + 2 files changed, 53 insertions(+) diff --git a/package/suricata/0002-configure.ac-fix-static-build.patch b/package/suricata/0002-configure.ac-fix-static-build.patch new file mode 100644 index 0000000000..fc5384a114 --- /dev/null +++ b/package/suricata/0002-configure.ac-fix-static-build.patch @@ -0,0 +1,52 @@ +From 6e1d8aceea8c4e49f00d8e630b681641a36c688f Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 6 May 2024 09:31:05 +0200 +Subject: [PATCH] configure.ac: fix static build + +static build is broken since +https://github.com/OISF/suricata/commit/31ba4fd1522dd0d7f933767b9205c67a4e726fe5 +because AC_CHECK_LIB is called before PKG_CHECK_MODULES: + +configure:22378: checking for pcap_open_dead in -lpcap +configure:22407: /home/buildroot/autobuild/run/instance-3/output-1/host/bin/x86_64-linux-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -static -std=c11 -march=native -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -static -rdynamic conftest.c -lpcap -ljansson -lpthread -lyaml -lpcre -latomic -lz >&5 +/home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/x86_64-buildroot-linux-musl/12.3.0/../../../../x86_64-buildroot-linux-musl/bin/ld: /home/buildroot/autobuild/run/instance-3/output-1/host/x86_64-buildroot-linux-musl/sysroot/usr/lib/../lib64/libpcap.a(pcap-linux.o): in function `nl80211_init': +pcap-linux.c:(.text+0xc34): undefined reference to `nl_socket_alloc' + +[...] + +checking for pcap_open_dead in -lpcap... no + +Fixes: + - http://autobuild.buildroot.org/results/9e25c2508bd4100d2d1d3180e79060d762361213 + +Signed-off-by: Fabrice Fontaine +Upstream: https://redmine.openinfosecfoundation.org/issues/7008 +--- + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 232ee9bed..6277cb9b6 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1219,6 +1219,8 @@ + fi + fi + ++ PKG_CHECK_MODULES([PCAP],libpcap,[CPPFLAGS="${CPPFLAGS} ${PCAP_CFLAGS}" LIBS="${LIBS} ${PCAP_LIBS}"],[:]) ++ + if test "$have_wpcap" != "yes"; then + AC_CHECK_LIB(pcap, pcap_open_dead, [], [ + echo +@@ -1234,8 +1236,6 @@ + PCAP_LIB_NAME="pcap" + fi + +- PKG_CHECK_MODULES([PCAP],libpcap,[CPPFLAGS="${CPPFLAGS} ${PCAP_CFLAGS}" LIBS="${LIBS} ${PCAP_LIBS}"],[:]) +- + AC_PATH_PROG(HAVE_PCAP_CONFIG, pcap-config, "no") + if test "$HAVE_PCAP_CONFIG" = "no" -o "$cross_compiling" = "yes"; then + AC_MSG_RESULT(no pcap-config is use) +-- +2.43.0 + diff --git a/package/suricata/suricata.mk b/package/suricata/suricata.mk index 2083e0caba..e60ed2fce8 100644 --- a/package/suricata/suricata.mk +++ b/package/suricata/suricata.mk @@ -10,6 +10,7 @@ SURICATA_LICENSE = GPL-2.0 SURICATA_LICENSE_FILES = COPYING LICENSE SURICATA_CPE_ID_VENDOR = oisf # 0001-configure.ac-allow-the-user-to-override-RUST_TARGET.patch +# 0002-configure.ac-fix-static-build.patch SURICATA_AUTORECONF = YES SURICATA_DEPENDENCIES = \ From thomas.petazzoni at bootlin.com Tue May 7 07:01:53 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:01:53 +0200 Subject: [Buildroot] [git commit] package/openocd: fix build with libgpiod2 Message-ID: <20240507070215.D63CF86989@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=be3252fe01f39f8ac21d611861bd0c5dda58b09f branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master openocd is not compatible with libgpiod2 resulting in the following build failure since the addition of libgpiod2 in commit 57391fad2e619395340b81957ddceab1b1df2e20: src/jtag/drivers/linuxgpiod.c: In function 'helper_get_line': src/jtag/drivers/linuxgpiod.c:283:19: error: 'GPIOD_LINE_REQUEST_DIRECTION_INPUT' undeclared (first use in this function); did you mean 'GPIOD_LINE_DIRECTION_INPUT'? 283 | int dir = GPIOD_LINE_REQUEST_DIRECTION_INPUT, flags = 0, val = 0, retval; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | GPIOD_LINE_DIRECTION_INPUT Fixes: 57391fad2e619395340b81957ddceab1b1df2e20 - http://autobuild.buildroot.org/results/7195e8b76350f26ab3b963702d88b254512e6928 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/openocd/openocd.mk | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/package/openocd/openocd.mk b/package/openocd/openocd.mk index 78c6e10c58..b24d1eacf0 100644 --- a/package/openocd/openocd.mk +++ b/package/openocd/openocd.mk @@ -56,8 +56,14 @@ OPENOCD_DEPENDENCIES = \ $(if $(BR2_PACKAGE_LIBUSB),libusb) \ $(if $(BR2_PACKAGE_LIBUSB_COMPAT),libusb-compat) \ $(if $(BR2_PACKAGE_LIBHID),libhid) \ - $(if $(BR2_PACKAGE_HIDAPI),hidapi) \ - $(if $(BR2_PACKAGE_LIBGPIOD),libgpiod) + $(if $(BR2_PACKAGE_HIDAPI),hidapi) + +ifeq ($(BR2_PACKAGE_LIBGPIOD),y) +OPENOCD_DEPENDENCIES += libgpiod +OPENOCD_CONF_OPTS += --enable-linuxgpiod +else +OPENOCD_CONF_OPTS += --disable-linuxgpiod +endif # Adapters OPENOCD_CONF_OPTS += \ From thomas.petazzoni at bootlin.com Tue May 7 07:02:38 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:02:38 +0200 Subject: [Buildroot] [git commit] package/mdadm: fix uclibc and musl build Message-ID: <20240507071154.4271F869AA@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=e0066bcb851b730f0517b5d5712a9e49b4296c7d branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fix following uclibc build failure raised since bump to version 4.3 in commit 99e9ff08d0705279532ca0cf3de22ea54660cbdc and https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=577fd10486d8d1472a6b559066f344ac30a3a391: Create.c: In function 'write_zeroes_fork': Create.c:155:35: error: 'FALLOC_FL_ZERO_RANGE' undeclared (first use in this function) 155 | if (fallocate(fd, FALLOC_FL_ZERO_RANGE | FALLOC_FL_KEEP_SIZE, | ^~~~~~~~~~~~~~~~~~~~ as well as the following musl build failure: util.c: In function 'get_md_name': util.c:1031:29: error: 'NAME_MAX' undeclared (first use in this function); did you mean 'MD_NAME_MAX'? 1031 | static char devname[NAME_MAX]; | ^~~~~~~~ | MD_NAME_MAX util.c:1031:29: note: each undeclared identifier is reported only once for each function it appears in /home/buildroot/instance-0/output-1/host/bin/x86_64-linux-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -DNO_LIBUDEV -DSendmail=\""/usr/sbin/sendmail -t"\" -DCONFFILE=\"/etc/mdadm.conf\" -DCONFFILE2=\"/etc/mdadm/mdadm.conf\" -DMAP_DIR=\"/run/mdadm\" -DMAP_FILE=\"map\" -DMDMON_DIR=\"/run/mdadm\" -DFAILED_SLOTS_DIR=\"/run/mdadm/failed-slots\" -DNO_COROSYNC -DNO_DLM -DUSE_PTHREADS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DBINDIR=\"/sbin\" -o Monitor.o -c Monitor.c /home/buildroot/instance-0/output-1/host/bin/x86_64-linux-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -DNO_LIBUDEV -DSendmail=\""/usr/sbin/sendmail -t"\" -DCONFFILE=\"/etc/mdadm.conf\" -DCONFFILE2=\"/etc/mdadm/mdadm.conf\" -DMAP_DIR=\"/run/mdadm\" -DMAP_FILE=\"map\" -DMDMON_DIR=\"/run/mdadm\" -DFAILED_SLOTS_DIR=\"/run/mdadm/failed-slots\" -DNO_COROSYNC -DNO_DLM -DUSE_PTHREADS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DBINDIR=\"/sbin\" -o dlink.o -c dlink.c Create.c: In function 'write_zeroes_fork': Create.c:155:35: error: 'FALLOC_FL_ZERO_RANGE' undeclared (first use in this function) 155 | if (fallocate(fd, FALLOC_FL_ZERO_RANGE | FALLOC_FL_KEEP_SIZE, | ^~~~~~~~~~~~~~~~~~~~ Fixes: 99e9ff08d0705279532ca0cf3de22ea54660cbdc - http://autobuild.buildroot.org/results/0e04bcdb591ca5642053e1f7e31384f06581e989 - http://autobuild.buildroot.org/results/c77ee2615e9d473e93d95c778648c7e897b7f234 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- ...-limits-h-include-for-NAME_MAX-definition.patch | 32 +++++++++++++++++ package/mdadm/0003-Create.c-fix-uclibc-build.patch | 42 ++++++++++++++++++++++ 2 files changed, 74 insertions(+) diff --git a/package/mdadm/0002-util-c-add-limits-h-include-for-NAME_MAX-definition.patch b/package/mdadm/0002-util-c-add-limits-h-include-for-NAME_MAX-definition.patch new file mode 100644 index 0000000000..ceaf7f923c --- /dev/null +++ b/package/mdadm/0002-util-c-add-limits-h-include-for-NAME_MAX-definition.patch @@ -0,0 +1,32 @@ +From 8bda86099089b44129ef6206764f9de47a45f0db Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin +Date: Tue, 12 Mar 2024 11:01:50 +0100 +Subject: util.c: add limits.h include for NAME_MAX definition + +Add limits.h include for NAME_MAX definition. + +Signed-off-by: Alexander Kanavin +Signed-off-by: Mariusz Tkaczyk + +Upstream: https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=8bda86099089b44129ef6206764f9de47a45f0db +Signed-off-by: Fabrice Fontaine +--- + util.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/util.c b/util.c +index 05ad3343..49a9c6e2 100644 +--- a/util.c ++++ b/util.c +@@ -36,7 +36,7 @@ + #include + #include + #include +- ++#include + + /* + * following taken from linux/blkpg.h because they aren't +-- +cgit 1.2.3-korg + diff --git a/package/mdadm/0003-Create.c-fix-uclibc-build.patch b/package/mdadm/0003-Create.c-fix-uclibc-build.patch new file mode 100644 index 0000000000..c8399be076 --- /dev/null +++ b/package/mdadm/0003-Create.c-fix-uclibc-build.patch @@ -0,0 +1,42 @@ +From 52bead95d2957437c691891fcdc49bd6afccdd49 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 12 Apr 2024 18:45:13 +0200 +Subject: Create.c: fix uclibc build + +Define FALLOC_FL_ZERO_RANGE if needed as FALLOC_FL_ZERO_RANGE is only +defined for aarch64 on uclibc-ng resulting in the following or1k build +failure since commit 577fd10486d8d1472a6b559066f344ac30a3a391: + +Create.c: In function 'write_zeroes_fork': +Create.c:155:35: error: 'FALLOC_FL_ZERO_RANGE' undeclared (first use in this function) + 155 | if (fallocate(fd, FALLOC_FL_ZERO_RANGE | FALLOC_FL_KEEP_SIZE, + | ^~~~~~~~~~~~~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/0e04bcdb591ca5642053e1f7e31384f06581e989 + +Signed-off-by: Fabrice Fontaine +Signed-off-by: Mariusz Tkaczyk +Upstream: https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=52bead95d2957437c691891fcdc49bd6afccdd49 +--- + Create.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/Create.c b/Create.c +index 4397ff49..d94253b1 100644 +--- a/Create.c ++++ b/Create.c +@@ -32,6 +32,10 @@ + #include + #include + ++#ifndef FALLOC_FL_ZERO_RANGE ++#define FALLOC_FL_ZERO_RANGE 16 ++#endif ++ + static int round_size_and_verify(unsigned long long *size, int chunk) + { + if (*size == 0) +-- +cgit 1.2.3-korg + From thomas.petazzoni at bootlin.com Tue May 7 07:11:40 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:11:40 +0200 Subject: [Buildroot] [git commit] package/libgpiod2: drop host-autoconf-archive dependency Message-ID: <20240507071154.73D1C869AA@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=9b235e3cacb32b002a624cf47fb3393a875df968 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master host-autoconf-archive was added to libgpiod in commit 8df6ae3127ccdc0873df2246b32918e846b074c3 because of a patch to configure.ac. It is not needed by libgpiod2 as there is no patch since the addition of the package in commit 57391fad2e619395340b81957ddceab1b1df2e20 Fixes: 57391fad2e619395340b81957ddceab1b1df2e20 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/libgpiod2/libgpiod2.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/libgpiod2/libgpiod2.mk b/package/libgpiod2/libgpiod2.mk index 9c478f1ffb..856eb9bd14 100644 --- a/package/libgpiod2/libgpiod2.mk +++ b/package/libgpiod2/libgpiod2.mk @@ -12,7 +12,7 @@ LIBGPIOD2_SITE = https://www.kernel.org/pub/software/libs/libgpiod LIBGPIOD2_LICENSE = LGPL-2.1+ LIBGPIOD2_LICENSE_FILES = COPYING LIBGPIOD2_INSTALL_STAGING = YES -LIBGPIOD2_DEPENDENCIES = host-pkgconf host-autoconf-archive +LIBGPIOD2_DEPENDENCIES = host-pkgconf LIBGPIOD2_CONF_OPTS = \ --disable-bindings-python \ --disable-examples \ From thomas.petazzoni at bootlin.com Tue May 7 07:03:17 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:03:17 +0200 Subject: [Buildroot] [git commit] package/python-rpds-py: bump to version 0.18.1 Message-ID: <20240507071154.5667C869B8@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=26b054083d36a0fb16340b10a9df239879a2c573 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master As reported by Antoine Coutant on the Buildroot mailing list [1]: rpds depends on the crate pyo3. This crate uses "std::sync::atomic::AtomicI64" which doesn't exist for 32 bits targets. That leads to an error as reported by Buildroot Gitlab-ci. An issue have been opened on pyo3's github [2]. A fix have been accepted by pyo3 [3] and merged in pyo3 0.20.3 release [4]. This pyo3 0.20.3 uses crate portable-atomic [5] to provide atomic types and compare and swap operations for all targets that can use std. python-rpds-py 0.18.1 is the first release that use pyo3 0.20.3. Before python-rpds-py 0.18.1 release fixing this issue would require that we be able to patch a package during the Cargo vendoring step [6]. [1] http://lists.busybox.net/pipermail/buildroot/2024-February/684867.html [2]: https://github.com/PyO3/pyo3/issues/3614 [3]: https://github.com/PyO3/pyo3/pull/3619 [4]: https://github.com/PyO3/pyo3/blob/v0.20.3/CHANGELOG.md [5]: https://github.com/taiki-e/portable-atomic [6]: http://lists.busybox.net/pipermail/buildroot/2024-February/684886.html Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6783811842 (TestPythonPy3Dtschema) https://gitlab.com/buildroot.org/buildroot/-/jobs/6783811860 (TestPythonPy3FlaskExpectsJson) Reported-by: Antoine Coutant Cc: James Hilliard Signed-off-by: Romain Naour Signed-off-by: Thomas Petazzoni --- package/python-rpds-py/python-rpds-py.hash | 2 +- package/python-rpds-py/python-rpds-py.mk | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/python-rpds-py/python-rpds-py.hash b/package/python-rpds-py/python-rpds-py.hash index 4650d9c385..62b508ae6b 100644 --- a/package/python-rpds-py/python-rpds-py.hash +++ b/package/python-rpds-py/python-rpds-py.hash @@ -1,4 +1,4 @@ # Locally calculated after vendoring -sha256 760b05720269195d86071ac7cf627b3a4ab9366680d8d449a6a63b84d96a5bc0 rpds_py-0.17.1.tar.gz +sha256 d9b542bf5321495737005a78d9fbf40541b898d1e2b3309cbe36a2431977be8b rpds_py-0.18.1.tar.gz # Locally computed sha256 checksums sha256 314e4e91be3baa93c0fb4bccc9e4e97cd643eb839b065af921782c2175fe9909 LICENSE diff --git a/package/python-rpds-py/python-rpds-py.mk b/package/python-rpds-py/python-rpds-py.mk index cee2ff290a..c38f749521 100644 --- a/package/python-rpds-py/python-rpds-py.mk +++ b/package/python-rpds-py/python-rpds-py.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_RPDS_PY_VERSION = 0.17.1 +PYTHON_RPDS_PY_VERSION = 0.18.1 PYTHON_RPDS_PY_SOURCE = rpds_py-$(PYTHON_RPDS_PY_VERSION).tar.gz -PYTHON_RPDS_PY_SITE = https://files.pythonhosted.org/packages/b7/0a/e3bdcc977e6db3bf32a3f42172f583adfa7c3604091a03d512333e0161fe +PYTHON_RPDS_PY_SITE = https://files.pythonhosted.org/packages/2d/aa/e7c404bdee1db7be09860dff423d022ffdce9269ec8e6532cce09ee7beea PYTHON_RPDS_PY_SETUP_TYPE = maturin PYTHON_RPDS_PY_LICENSE = MIT PYTHON_RPDS_PY_LICENSE_FILES = LICENSE From thomas.petazzoni at bootlin.com Tue May 7 07:10:18 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:10:18 +0200 Subject: [Buildroot] [git commit] configs/qemu_sparc_ss10: re-introduce defconfig Message-ID: <20240507071154.65123869B9@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=c3e17c407a39ee4d576540c86b4b3b0549e81136 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master - With uClibc-ng-1.0.48 we can restore this defconfig because uClibc-ng now provides the fix for SPARC. - The instructions in board/qemu/sparc-ss10/readme.txt are still valid without any corrections. The system boots properly ang the login prompt appears. Signed-off-by: Dmitry Chestnykh Signed-off-by: Thomas Petazzoni --- DEVELOPERS | 4 ++++ board/qemu/sparc-ss10/patches/linux/linux.hash | 2 ++ configs/qemu_sparc_ss10_defconfig | 32 ++++++++++++++++++++++++++ 3 files changed, 38 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index 1c5ad1e42a..77971e03db 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -846,6 +846,10 @@ F: package/wolftpm/ N: Dimitrios Siganos F: package/wireless-regdb/ +N: Dmitry Chestnykh +F: board/qemu/sparc-ss10/ +F: configs/qemu_sparc_ss10_defconfig + N: Dominik Faessler F: package/logsurfer/ diff --git a/board/qemu/sparc-ss10/patches/linux/linux.hash b/board/qemu/sparc-ss10/patches/linux/linux.hash new file mode 100644 index 0000000000..762f8575e7 --- /dev/null +++ b/board/qemu/sparc-ss10/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# From https://cdn.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc +sha256 1973e6fc3e8617fc8b0e24b33180449f1a39fa6a607f8dba61cf91b4c5bba466 linux-6.8.6.tar.gz diff --git a/configs/qemu_sparc_ss10_defconfig b/configs/qemu_sparc_ss10_defconfig new file mode 100644 index 0000000000..67d6cf67f6 --- /dev/null +++ b/configs/qemu_sparc_ss10_defconfig @@ -0,0 +1,32 @@ +# Architecture +BR2_sparc=y +BR2_sparc_v8=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/sparc-ss10/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_8=y + +# Linux kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.6" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sparc-ss10/linux.config" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y From thomas.petazzoni at bootlin.com Tue May 7 07:12:29 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:12:29 +0200 Subject: [Buildroot] [PATCH 1/1] package/suricata: fix static build In-Reply-To: <20240506202304.509499-1-fontaine.fabrice@gmail.com> References: <20240506202304.509499-1-fontaine.fabrice@gmail.com> Message-ID: <20240507091229.11ebe7d4@windsurf> On Mon, 6 May 2024 22:23:04 +0200 Fabrice Fontaine wrote: > Fix the following static build failure raised since bump to version > version 6.0.14 in commit ce17f93e828a07292e03653be04a49480250f23f and > https://github.com/OISF/suricata/commit/31ba4fd1522dd0d7f933767b9205c67a4e726fe5: > > configure:22378: checking for pcap_open_dead in -lpcap > configure:22407: /home/buildroot/autobuild/run/instance-3/output-1/host/bin/x86_64-linux-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -static -std=c11 -march=native -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -static -rdynamic conftest.c -lpcap -ljansson -lpthread -lyaml -lpcre -latomic -lz >&5 > /home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/x86_64-buildroot-linux-musl/12.3.0/../../../../x86_64-buildroot-linux-musl/bin/ld: /home/buildroot/autobuild/run/instance-3/output-1/host/x86_64-buildroot-linux-musl/sysroot/usr/lib/../lib64/libpcap.a(pcap-linux.o): in function `nl80211_init': > pcap-linux.c:(.text+0xc34): undefined reference to `nl_socket_alloc' > > [...] > > checking for pcap_open_dead in -lpcap... no > > Fixes: ce17f93e828a07292e03653be04a49480250f23f > - http://autobuild.buildroot.org/results/9e25c2508bd4100d2d1d3180e79060d762361213 > > Signed-off-by: Fabrice Fontaine > --- > .../0002-configure.ac-fix-static-build.patch | 52 +++++++++++++++++++ > package/suricata/suricata.mk | 1 + > 2 files changed, 53 insertions(+) > create mode 100644 package/suricata/0002-configure.ac-fix-static-build.patch Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Tue May 7 07:12:35 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:12:35 +0200 Subject: [Buildroot] [PATCH 1/1] package/openocd: fix build with libgpiod2 In-Reply-To: <20240506205250.1264901-1-fontaine.fabrice@gmail.com> References: <20240506205250.1264901-1-fontaine.fabrice@gmail.com> Message-ID: <20240507091235.613acaaa@windsurf> On Mon, 6 May 2024 22:52:49 +0200 Fabrice Fontaine wrote: > openocd is not compatible with libgpiod2 resulting in the following > build failure since the addition of libgpiod2 in commit > 57391fad2e619395340b81957ddceab1b1df2e20: > > src/jtag/drivers/linuxgpiod.c: In function 'helper_get_line': > src/jtag/drivers/linuxgpiod.c:283:19: error: 'GPIOD_LINE_REQUEST_DIRECTION_INPUT' undeclared (first use in this function); did you mean 'GPIOD_LINE_DIRECTION_INPUT'? > 283 | int dir = GPIOD_LINE_REQUEST_DIRECTION_INPUT, flags = 0, val = 0, retval; > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > | GPIOD_LINE_DIRECTION_INPUT > > Fixes: 57391fad2e619395340b81957ddceab1b1df2e20 > - http://autobuild.buildroot.org/results/7195e8b76350f26ab3b963702d88b254512e6928 > > Signed-off-by: Fabrice Fontaine > --- > package/openocd/openocd.mk | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Tue May 7 07:12:40 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:12:40 +0200 Subject: [Buildroot] [PATCH 1/1] package/mdadm: fix uclibc and musl build In-Reply-To: <20240506210348.1285002-1-fontaine.fabrice@gmail.com> References: <20240506210348.1285002-1-fontaine.fabrice@gmail.com> Message-ID: <20240507091240.39efce59@windsurf> On Mon, 6 May 2024 23:03:48 +0200 Fabrice Fontaine wrote: > Fix following uclibc build failure raised since bump to version 4.3 in > commit 99e9ff08d0705279532ca0cf3de22ea54660cbdc and > https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=577fd10486d8d1472a6b559066f344ac30a3a391: > > Create.c: In function 'write_zeroes_fork': > Create.c:155:35: error: 'FALLOC_FL_ZERO_RANGE' undeclared (first use in this function) > 155 | if (fallocate(fd, FALLOC_FL_ZERO_RANGE | FALLOC_FL_KEEP_SIZE, > | ^~~~~~~~~~~~~~~~~~~~ > > as well as the following musl build failure: > > util.c: In function 'get_md_name': > util.c:1031:29: error: 'NAME_MAX' undeclared (first use in this function); did you mean 'MD_NAME_MAX'? > 1031 | static char devname[NAME_MAX]; > | ^~~~~~~~ > | MD_NAME_MAX > util.c:1031:29: note: each undeclared identifier is reported only once for each function it appears in > /home/buildroot/instance-0/output-1/host/bin/x86_64-linux-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -DNO_LIBUDEV -DSendmail=\""/usr/sbin/sendmail -t"\" -DCONFFILE=\"/etc/mdadm.conf\" -DCONFFILE2=\"/etc/mdadm/mdadm.conf\" -DMAP_DIR=\"/run/mdadm\" -DMAP_FILE=\"map\" -DMDMON_DIR=\"/run/mdadm\" -DFAILED_SLOTS_DIR=\"/run/mdadm/failed-slots\" -DNO_COROSYNC -DNO_DLM -DUSE_PTHREADS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DBINDIR=\"/sbin\" -o Monitor.o -c Monitor.c > /home/buildroot/instance-0/output-1/host/bin/x86_64-linux-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -DNO_LIBUDEV -DSendmail=\""/usr/sbin/sendmail -t"\" -DCONFFILE=\"/etc/mdadm.conf\" -DCONFFILE2=\"/etc/mdadm/mdadm.conf\" -DMAP_DIR=\"/run/mdadm\" -DMAP_FILE=\"map\" -DMDMON_DIR=\"/run/mdadm\" -DFAILED_SLOTS_DIR=\"/run/mdadm/failed-slots\" -DNO_COROSYNC -DNO_DLM -DUSE_PTHREADS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DBINDIR=\"/sbin\" -o dlink.o -c dlink.c > Create.c: In function 'write_zeroes_fork': > Create.c:155:35: error: 'FALLOC_FL_ZERO_RANGE' undeclared (first use in this function) > 155 | if (fallocate(fd, FALLOC_FL_ZERO_RANGE | FALLOC_FL_KEEP_SIZE, > | ^~~~~~~~~~~~~~~~~~~~ > > Fixes: 99e9ff08d0705279532ca0cf3de22ea54660cbdc > - http://autobuild.buildroot.org/results/0e04bcdb591ca5642053e1f7e31384f06581e989 > - http://autobuild.buildroot.org/results/c77ee2615e9d473e93d95c778648c7e897b7f234 > > Signed-off-by: Fabrice Fontaine > --- > ...ts-h-include-for-NAME_MAX-definition.patch | 32 ++++++++++++++ > .../0003-Create.c-fix-uclibc-build.patch | 42 +++++++++++++++++++ > 2 files changed, 74 insertions(+) > create mode 100644 package/mdadm/0002-util-c-add-limits-h-include-for-NAME_MAX-definition.patch > create mode 100644 package/mdadm/0003-Create.c-fix-uclibc-build.patch Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Tue May 7 07:12:44 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:12:44 +0200 Subject: [Buildroot] [PATCH] package/python-rpds-py: bump to version 0.18.1 In-Reply-To: <20240506213038.418213-1-romain.naour@smile.fr> References: <20240506213038.418213-1-romain.naour@smile.fr> Message-ID: <20240507091244.45d6b5ba@windsurf> On Mon, 6 May 2024 23:30:38 +0200 Romain Naour wrote: > As reported by Antoine Coutant on the Buildroot mailing list [1]: > > rpds depends on the crate pyo3. This crate uses > > "std::sync::atomic::AtomicI64" > > which doesn't exist for 32 bits targets. > That leads to an error as reported by Buildroot Gitlab-ci. > > An issue have been opened on pyo3's github [2]. > A fix have been accepted by pyo3 [3] and merged in pyo3 0.20.3 release > [4]. This pyo3 0.20.3 uses crate portable-atomic [5] to provide atomic > types and compare and swap operations for all targets that can use std. > > python-rpds-py 0.18.1 is the first release that use pyo3 0.20.3. > > Before python-rpds-py 0.18.1 release fixing this issue would require > that we be able to patch a package during the Cargo vendoring step [6]. > > [1] http://lists.busybox.net/pipermail/buildroot/2024-February/684867.html > [2]: https://github.com/PyO3/pyo3/issues/3614 > [3]: https://github.com/PyO3/pyo3/pull/3619 > [4]: https://github.com/PyO3/pyo3/blob/v0.20.3/CHANGELOG.md > [5]: https://github.com/taiki-e/portable-atomic > [6]: http://lists.busybox.net/pipermail/buildroot/2024-February/684886.html > > Fixes: > https://gitlab.com/buildroot.org/buildroot/-/jobs/6783811842 (TestPythonPy3Dtschema) > https://gitlab.com/buildroot.org/buildroot/-/jobs/6783811860 (TestPythonPy3FlaskExpectsJson) > > Reported-by: Antoine Coutant > Cc: James Hilliard > Signed-off-by: Romain Naour > --- > package/python-rpds-py/python-rpds-py.hash | 2 +- > package/python-rpds-py/python-rpds-py.mk | 4 ++-- > 2 files changed, 3 insertions(+), 3 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Tue May 7 07:14:42 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:14:42 +0200 Subject: [Buildroot] [PATCH v3] configs/qemu_sparc_ss10_defconfig: Re-introduce. In-Reply-To: <20240507041548.382997-1-dm.chestnykh@gmail.com> References: <20240507041548.382997-1-dm.chestnykh@gmail.com> Message-ID: <20240507091442.25a27b48@windsurf> Hello Dmitry, Thanks for this new iteration, which I have applied, after doing a few changes, see below. On Tue, 7 May 2024 07:15:48 +0300 Dmitry Chestnykh wrote: > diff --git a/DEVELOPERS b/DEVELOPERS > index 1c5ad1e42a..4bd6c58d4a 100644 > --- a/DEVELOPERS > +++ b/DEVELOPERS > @@ -3343,3 +3343,7 @@ F: package/quazip/ > F: package/shapelib/ > F: package/simple-mail/ > F: package/tinc/ > + > +N: Dmitry Chestnykh This file is alphabetically sorted, by name of developers, so you should have added this entry in the "right" place rather than at the end of the file. I fixed that up. > diff --git a/configs/qemu_sparc_ss10_defconfig b/configs/qemu_sparc_ss10_defconfig > new file mode 100644 > index 0000000000..a8e3df9180 > --- /dev/null > +++ b/configs/qemu_sparc_ss10_defconfig > @@ -0,0 +1,28 @@ > +# Architecture > +BR2_sparc=y > +BR2_sparc_v8=y We now require (since just a week or two) hashes of custom packages to be checked as well, so I added: +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/sparc-ss10/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y as well as a board/qemu/sparc-ss10/patches/linux/linux.hash which contains the hash of the linux 6.8.6 tarball. > +# Linux headers same as kernel > +BR2_PACKAGE_HOST_LINUX_HEADERS_AS_KERNEL=y This should have been: +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_8=y Again: patch applied with those fixes, thanks a lot for your contribution! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Tue May 7 07:48:16 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:48:16 +0200 Subject: [Buildroot] [git commit] package/libusbgx: bump to recent git version Message-ID: <20240507074830.0487686973@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=c6ef948f298dcfe68942787c0ce5040105f65395 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master The current tagged version is more than 6 years old, and no new tags have been made upstream, so let's update to the latest git version. The current version contains many fixes and improvements and supports several new types of USB gadgets. The patch was a backport from upstream, so it can be dropped. Also, upstream has changed from https://github.com/libusbgx/libusbgx to https://github.com/linux-usb-gadgets/libusbgx: the former is a redirect to the latter. Signed-off-by: Alexander Shiyan Signed-off-by: Thomas Petazzoni --- .checkpackageignore | 1 - .../0001-Add-include-of-sys-sysmacro.h.patch | 98 ---------------------- package/libusbgx/Config.in | 2 +- package/libusbgx/libusbgx.hash | 2 +- package/libusbgx/libusbgx.mk | 4 +- 5 files changed, 4 insertions(+), 103 deletions(-) diff --git a/.checkpackageignore b/.checkpackageignore index 2118269003..3be4f6a1df 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -982,7 +982,6 @@ package/libubootenv/0001-src-CMakeLists.txt-do-not-force-the-build-of-a-share.pa package/libuhttpd/0001-add-compatibility-for-wolfssl-5-0.patch lib_patch.Upstream package/libuio/0001-configure.ac-set-automake-strictness-to-foreign.patch lib_patch.Upstream package/liburcu/0001-Only-blacklist-ARM-gcc-4.8.0-and-4.8.1.patch lib_patch.Upstream -package/libusbgx/0001-Add-include-of-sys-sysmacro.h.patch lib_patch.Upstream package/libvpx/0001-vpx_mem-vpx_mem.h-Fix-compilation-with-uClibc.patch lib_patch.Upstream package/libwebsock/0001-Switch-to-use-pkg-config-to-detect-libevent-and-open.patch lib_patch.Upstream package/libwebsock/0002-fix-ssl.patch lib_patch.Upstream diff --git a/package/libusbgx/0001-Add-include-of-sys-sysmacro.h.patch b/package/libusbgx/0001-Add-include-of-sys-sysmacro.h.patch deleted file mode 100644 index 0f47454f7a..0000000000 --- a/package/libusbgx/0001-Add-include-of-sys-sysmacro.h.patch +++ /dev/null @@ -1,98 +0,0 @@ -From 45c14ef4d5d7ced0fbf984208de44ced6d5ed898 Mon Sep 17 00:00:00 2001 -From: Gwenhael Goavec-Merou -Date: Mon, 10 Sep 2018 15:52:09 +0200 -Subject: [PATCH] libusbgx: fix build with glibc-2.28 since - is no more included by - -Since https://sourceware.org/ml/libc-alpha/2015-11/msg00253.html sys/sysmacros.h -must be explicitly included. -Without sys/sysmacros.h and with glibc-2.28 build fails with error like: -src/.libs/libusbgx.so: undefined reference to minor' src/.libs/libusbgx.so: undefined reference tomajor' -src/.libs/libusbgx.so: undefined reference to `makedev' - -Signed-off-by: Sid Spry -Signed-off-by: Gwenhael Goavec-Merou ---- - examples/gadget-acm-ecm.c | 1 + - examples/gadget-import.c | 1 + - examples/gadget-ms.c | 1 + - examples/show-gadgets.c | 1 + - examples/show-udcs.c | 1 + - include/usbg/usbg_internal_libconfig.h | 1 + - 6 files changed, 6 insertions(+) - -diff --git a/examples/gadget-acm-ecm.c b/examples/gadget-acm-ecm.c -index 1c5e2ca..29360da 100644 ---- a/examples/gadget-acm-ecm.c -+++ b/examples/gadget-acm-ecm.c -@@ -20,6 +20,7 @@ - - #include - #include -+#include - #include - #include - -diff --git a/examples/gadget-import.c b/examples/gadget-import.c -index e684fdb..63df449 100644 ---- a/examples/gadget-import.c -+++ b/examples/gadget-import.c -@@ -25,6 +25,7 @@ - #include - #include - #include -+#include - #include - - int main(int argc, char **argv) -diff --git a/examples/gadget-ms.c b/examples/gadget-ms.c -index 478c370..a5c6681 100644 ---- a/examples/gadget-ms.c -+++ b/examples/gadget-ms.c -@@ -23,6 +23,7 @@ - - #include - #include -+#include - #include - #include - #include -diff --git a/examples/show-gadgets.c b/examples/show-gadgets.c -index 707d448..a2a21c8 100644 ---- a/examples/show-gadgets.c -+++ b/examples/show-gadgets.c -@@ -21,6 +21,7 @@ - #include - #include - #include -+#include - #include - #include - #include -diff --git a/examples/show-udcs.c b/examples/show-udcs.c -index 66e950f..2f5cc45 100644 ---- a/examples/show-udcs.c -+++ b/examples/show-udcs.c -@@ -23,6 +23,7 @@ - - #include - #include -+#include - #include - - int main(void) -diff --git a/include/usbg/usbg_internal_libconfig.h b/include/usbg/usbg_internal_libconfig.h -index ac51758..3fa55c0 100644 ---- a/include/usbg/usbg_internal_libconfig.h -+++ b/include/usbg/usbg_internal_libconfig.h -@@ -12,6 +12,7 @@ - #ifndef USBG_INTERNAL_LIBCONFIG_H - #define USBG_INTERNAL_LIBCONFIG_H - -+#include - #include - #ifdef __cplusplus - extern "C" { --- -2.16.4 - diff --git a/package/libusbgx/Config.in b/package/libusbgx/Config.in index fcebf3cfaa..09a2b8f15e 100644 --- a/package/libusbgx/Config.in +++ b/package/libusbgx/Config.in @@ -6,7 +6,7 @@ config BR2_PACKAGE_LIBUSBGX libusbgx is a C library encapsulating the kernel USB gadget-configfs userspace API functionality. - https://github.com/libusbgx/libusbgx + https://github.com/linux-usb-gadgets/libusbgx comment "libusbgx needs a toolchain w/ threads" depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libusbgx/libusbgx.hash b/package/libusbgx/libusbgx.hash index dd43ec7b97..b18258978f 100644 --- a/package/libusbgx/libusbgx.hash +++ b/package/libusbgx/libusbgx.hash @@ -1,4 +1,4 @@ # Locally computed: -sha256 b15abc89a0ef82c6a650cc1d58b5ba50f7ce076db392add84caabcd86c608ee2 libusbgx-0.2.0.tar.gz +sha256 d0b483d8b190a75a1f9b52d6db229de5580c78b201077361a524cf32c5aad517 libusbgx-a5bfa81017a9b2064bc449cf74f5f9d106445f62.tar.gz sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LGPL diff --git a/package/libusbgx/libusbgx.mk b/package/libusbgx/libusbgx.mk index 516ad25970..03e8dff6bb 100644 --- a/package/libusbgx/libusbgx.mk +++ b/package/libusbgx/libusbgx.mk @@ -4,8 +4,8 @@ # ################################################################################ -LIBUSBGX_VERSION = 0.2.0 -LIBUSBGX_SITE = $(call github,libusbgx,libusbgx,libusbgx-v$(LIBUSBGX_VERSION)) +LIBUSBGX_VERSION = a5bfa81017a9b2064bc449cf74f5f9d106445f62 +LIBUSBGX_SITE = $(call github,linux-usb-gadgets,libusbgx,$(LIBUSBGX_VERSION)) LIBUSBGX_LICENSE = GPL-2.0+ (examples), LGPL-2.1+ (library) LIBUSBGX_LICENSE_FILES = COPYING COPYING.LGPL LIBUSBGX_DEPENDENCIES = host-pkgconf libconfig From thomas.petazzoni at bootlin.com Tue May 7 07:50:50 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:50:50 +0200 Subject: [Buildroot] [PATCH] libusbgx: Update package from git In-Reply-To: <20240419061241.116608-1-eagle.alexander923@gmail.com> References: <20240419061241.116608-1-eagle.alexander923@gmail.com> Message-ID: <20240507095050.0db0e77c@windsurf> Hello Alexander, On Fri, 19 Apr 2024 09:12:41 +0300 Alexander Shiyan wrote: > The current version is more than 6 years old. Update to the latest git > version. > The current version contains many fixes and improvements and supports > several new types of USB gadgets. > > Signed-off-by: Alexander Shiyan Thanks for your patch. I have applied it, but after fixing a number of small things. First, the commit title should have been: package/libusbgx: bump to recent git version i.e, "package/libusbgx" as prefix, no capital letter when starting the title. > .../0001-Add-include-of-sys-sysmacro.h.patch | 98 ------------------- The removal of this patch should have been explained in the commit log, and also the .checkpackageignore file in Buildroot should have been updated with the removal of this patch. > -LIBUSBGX_VERSION = 0.2.0 > -LIBUSBGX_SITE = $(call github,libusbgx,libusbgx,libusbgx-v$(LIBUSBGX_VERSION)) > +LIBUSBGX_VERSION = a5bfa81017a9b2064bc449cf74f5f9d106445f62 > +LIBUSBGX_SITE = https://github.com/linux-usb-gadgets/libusbgx.git The change from https://github.com/libusbgx -> https://github.com/linux-usb-gadgets should have been explained in the commit log, and the Config.in file should have been updated as well. Also, there was not really any reason to switch to the git SITE_METHOD: you can use $(call github,...) also with an arbitrary commit like this. As said above: I fixed all those minor details when applying, and pushed to master. Thanks a lot for your contribution! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Tue May 7 07:51:03 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:51:03 +0200 Subject: [Buildroot] [git commit] package/batctl: update to 2023.1 to match batman-adv Message-ID: <20240507080516.03A0086920@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=818b6270a845df43d03d85622d4dfc1d48248bf6 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Although the kernel interface has not changed, it is convenient to have the batctl match the batman-adv version. So, bump the package to match 01ec4a39f5ceb83c62b0040067ba53197a0a6843 batman-adv bump. Signed-off-by: Charles Hardin Signed-off-by: Thomas Petazzoni --- package/batctl/batctl.hash | 6 +++--- package/batctl/batctl.mk | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/batctl/batctl.hash b/package/batctl/batctl.hash index 56bea3c5da..7bc6fee67f 100644 --- a/package/batctl/batctl.hash +++ b/package/batctl/batctl.hash @@ -1,6 +1,6 @@ -# From https://downloads.open-mesh.org/batman/releases/batman-adv-2021.0/batctl-2021.0.tar.gz.sha1 -sha1 87d0bb34950cb70578a0ca5ce706513a8279a01c batctl-2021.0.tar.gz +# From https://downloads.open-mesh.org/batman/releases/batman-adv-2023.1/batctl-2023.1.tar.gz.sha1 +sha1 8d899c6323e228b9b370caf28e6d67621cb7d35d batctl-2023.1.tar.gz # Locally calculated -sha256 9cec8bf1952f885192749a9dc0318a54633b717aaf05c438d504efd83f5201e4 batctl-2021.0.tar.gz +sha256 e5bf47305d955abb199244bd0e5fffab96108b1affabd0d9705533f8059395f1 batctl-2023.1.tar.gz sha256 cecbf53d1148e13256ac29f8b900655b7fc8dc12d59939a95bc2323ea1747025 LICENSES/preferred/GPL-2.0 sha256 323c587d0ccf10e376f8bf9a7f31fb4ca6078105194b42e0b1e0ee2bc9bde71f LICENSES/preferred/MIT diff --git a/package/batctl/batctl.mk b/package/batctl/batctl.mk index 8ff591844d..197e4beb72 100644 --- a/package/batctl/batctl.mk +++ b/package/batctl/batctl.mk @@ -4,7 +4,7 @@ # ################################################################################ -BATCTL_VERSION = 2021.0 +BATCTL_VERSION = 2023.1 BATCTL_SITE = http://downloads.open-mesh.org/batman/releases/batman-adv-$(BATCTL_VERSION) BATCTL_LICENSE = GPL-2.0, MIT (batman_adv.h, list.h) BATCTL_LICENSE_FILES = LICENSES/preferred/GPL-2.0 LICENSES/preferred/MIT From thomas.petazzoni at bootlin.com Tue May 7 08:05:20 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 10:05:20 +0200 Subject: [Buildroot] [PATCH 1/1] package/batctl: update to 2023.1 to match batman-adv In-Reply-To: <20240417181322.36344-1-ckhardin@gmail.com> References: <20240417181322.36344-1-ckhardin@gmail.com> Message-ID: <20240507100520.5666eeb9@windsurf> On Wed, 17 Apr 2024 11:13:21 -0700 Charles Hardin wrote: > Although the kernel interface has not changed, it is convenient to > have the batctl match the batman-adv version. So, bump the package > to match 01ec4a39f5ceb83c62b0040067ba53197a0a6843 batman-adv bump. > > Signed-off-by: Charles Hardin > --- > package/batctl/batctl.hash | 6 +++--- > package/batctl/batctl.mk | 2 +- > 2 files changed, 4 insertions(+), 4 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From peter at korsgaard.com Tue May 7 08:44:51 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Tue, 07 May 2024 10:44:51 +0200 Subject: [Buildroot] Buildroot 2024.02.2 released Message-ID: <874jbaxb7g.fsf@dell.be.48ers.dk> Hi, Buildroot is a simple tool for creating complete embedded Linux systems (http://buildroot.org). Buildroot 2024.02.2 is released - Go download it at: http://buildroot.org/downloads/buildroot-2024.02.2.tar.gz or http://buildroot.org/downloads/buildroot-2024.02.2.tar.xz Or get it from Git: git://git.buildroot.org/buildroot Buildroot 2024.02.2 is a bugfix release on the current long term release, fixing a number of important / security related issues discovered since the 2024.02 .1release. - Security: The /dev/shm entry in the default /etc/fstab used for busybox and sysv init systems was missing the sticky bit, allowing users to delete and replace other users files. https://nvd.nist.gov/vuln/detail/CVE-2024-34455 - Security fixes for apache, botan, docker-engine, go, libcurl, mbedtls, skeleton-init-sysv, wolfssl - Fixes for download/compilation/runtime/license issues in brcmfmac_sdio-firmware-rpi, clamav, cmake, containerd, crucible, dmenu-wayland, dmraid, docker-cli, domoticz, fmc, freeipmi, gdal, gdb, giflib, gnupg2, google-breakpad, googlefontdirectory, imx-gpu-viv, inih, libassuan, libblockdev, libdrm, libgpg-error, libksba, libnpth, libressl, libtracefs, lxc, mesa3d, oatpp, opensc, oprofile, perl-net-ssleay, petitboot, php-xdebug, psplash, python-pypng, python-segno, python-service-identity, python3, systemd, tcf-agent, tiff, uuu, xmrig, zic For more details, see the CHANGES file: https://git.buildroot.net/buildroot/plain/CHANGES?id=2024.02.2 Users of the affected packages are strongly encouraged to upgrade. Many thanks to all the people contributing to this release: git shortlog -sn 2024.02.1.. 25 Fabrice Fontaine 6 Francois Perrad 6 Romain Naour 4 Bernd Kuhls 4 Christian Stewart 4 Peter Korsgaard 4 Yann E. MORIN 3 Julien Olivain 2 Christian Hitz 2 Giulio Benetti 2 Sen Hastings 2 Thomas Petazzoni 1 Andreas Naumann 1 Ben Hutchings 1 Dario Binacchi 1 David Gouarin 1 Fabio Estevam 1 Francois Dugast 1 Heiko Thiery 1 Laurent Vivier 1 Marcus Hoffmann 1 Nisarg Jhaveri 1 Norbert Lange 1 Peter Seiderer 1 Petr Vorel 1 Rapha?l M?lotte 1 Thomas De Schampheleire 1 Vincent Fazio 1 Wojciech Nizinski -- Bye, Peter Korsgaard From peter at korsgaard.com Tue May 7 08:49:03 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Tue, 7 May 2024 10:49:03 +0200 Subject: [Buildroot] [git commit] Update for 2024.02.2 Message-ID: <20240507085144.CCA0086A0C@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=b34fa00d85df2b8905d0edd60a2d3863815b1a71 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Peter Korsgaard (cherry picked from commit 0155095c558e915d6c5261a4d8cb4ec9ee9953a7) [Peter: drop Makefile change] Signed-off-by: Peter Korsgaard --- CHANGES | 28 ++++++++++++++++++++++++++++ support/misc/Vagrantfile | 2 +- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 4b0cc08244..13ac108549 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,31 @@ +2024.02.2, released May 7th, 2024 + + Important / security related fixes. + + Security: The /dev/shm entry in the default /etc/fstab used + for busybox and sysv init systems was missing the sticky bit, + allowing users to delete and replace other users files. + + Defconfigs: Mangopi mq1rdw1: Lock kernel headers to 6.6.x. + + Updated/fixed packages: apache, botan, + brcmfmac_sdio-firmware-rpi, clamav, cmake, containerd, + crucible, dmenu-wayland, dmraid, docker-cli, docker-engine, + domoticz, fmc, freeipmi, gdal, gdb, giflib, gnupg2, go, + google-breakpad, googlefontdirectory, imx-gpu-viv, inih, + libassuan, libblockdev, libcurl, libdrm, libgpg-error, + libksba, libnpth, libressl, libtracefs, lxc, mbedtls, mesa3d, + oatpp, opensc, oprofile, perl-net-ssleay, petitboot, + php-xdebug, psplash, python-pypng, python-segno, + python-service-identity, python3, skeleton-init-sysv, systemd, + tcf-agent, tiff, uuu, wolfssl, xmrig, zic + + Issues resolved (http://bugs.uclibc.org): + + #14416: Mesa3D missing DRI3 support for various Gallium drivers + #16009: 'select' does not work with 'choice' + #16036: android-tools version is too old + 2024.02.1, released March 26th, 2024 Important / security related fixes. diff --git a/support/misc/Vagrantfile b/support/misc/Vagrantfile index cb7a81af6e..ac595f5749 100644 --- a/support/misc/Vagrantfile +++ b/support/misc/Vagrantfile @@ -5,7 +5,7 @@ ################################################################################ # Buildroot version to use -RELEASE='2024.02.1' +RELEASE='2024.02.2' ### Change here for more memory/cores ### VM_MEMORY=2048 From peter at korsgaard.com Tue May 7 08:51:08 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Tue, 7 May 2024 10:51:08 +0200 Subject: [Buildroot] [git commit] docs/website: Update for 2024.02.2 Message-ID: <20240507085144.E08458455F@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=2e07cd5a1bc7f2b2d2db9702eca159729232b839 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Peter Korsgaard --- docs/website/download.html | 18 +++++++++--------- docs/website/news.html | 19 +++++++++++++++++++ 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/docs/website/download.html b/docs/website/download.html index 559d396ed2..cc83d42a9f 100644 --- a/docs/website/download.html +++ b/docs/website/download.html @@ -8,37 +8,37 @@
Download
-

Latest stable / long term support release: 2024.02.1

+

Latest stable / long term support release: 2024.02.2

BR2_VERSION_FULL BR2_HOSTARCH --> HOSTARCH BR2_SKIP_LEGACY --> SKIP_LEGACY BR2_BASE_DIR --> BASE_DIR BR2_HOST_GCC_VERSION --> HOST_GCC_VERSION BR2_DEFCONFIG_FROM_ENV --> BR2_DEFCONFIG [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=104daea149c45cc84842ce77a9bd6436d19f3dd8 Signed-off-by: Peter Seiderer --- Changes v1 -> v2: - moved escape fixes to extra/preliminary patch Notes/ToDo: - take a look at BR2_HOSTARCH usage in utils/checksymbolslib/br.py - take a look at BR2_BASE_DIR usage in utils/checksymbolslib/br.py and utils/checksymbolslib/test_kconfig.py --- Config.in | 45 +++++-------------- Config.in.legacy | 6 +-- boot/arm-trusted-firmware/Config.in | 2 +- boot/beaglev-ddrinit/Config.in | 2 +- boot/beaglev-secondboot/Config.in | 2 +- boot/s500-bootloader/Config.in | 2 +- linux/Config.ext.in | 2 +- package/amlogic-boot-fip/Config.in.host | 2 +- package/erlang/Config.in | 6 +-- package/flutter-sdk-bin/Config.in.host | 2 +- package/go-bootstrap-stage1/Config.in.host | 6 +-- package/google-breakpad/Config.in.host | 12 ++--- package/jpeg/Config.in | 2 +- package/kvm-unit-tests/Config.in | 2 +- package/luajit/Config.in | 4 +- package/mono/Config.in | 4 +- package/nodejs/Config.in.host | 8 ++-- package/openjdk/Config.in | 4 +- package/openssl/Config.in | 2 +- package/protobuf/Config.in | 22 ++++----- package/qt5/qt5webengine/Config.in | 2 +- package/rustc/Config.in.host | 16 +++---- package/sam-ba/Config.in.host | 2 +- package/supertuxkart/Config.in | 4 +- package/ti-cgt-pru/Config.in.host | 2 +- package/ti-gfx/Config.in | 2 +- package/wine/Config.in | 6 +-- system/Config.in | 4 +- toolchain/toolchain-external/Config.in | 2 +- .../Config.in | 2 +- .../toolchain-external-arm-aarch64/Config.in | 2 +- .../toolchain-external-arm-arm/Config.in | 2 +- .../toolchain-external-bootlin/Config.in | 2 +- .../Config.in | 2 +- .../Config.in | 2 +- .../Config.in | 2 +- .../toolchain-external-linaro-arm/Config.in | 2 +- .../toolchain-external-linaro-armeb/Config.in | 2 +- .../toolchain-external-synopsys-arc/Config.in | 2 +- 39 files changed, 86 insertions(+), 111 deletions(-) diff --git a/Config.in b/Config.in index 035900c971..1d35d6e50e 100644 --- a/Config.in +++ b/Config.in @@ -1,68 +1,51 @@ # -mainmenu "Buildroot $BR2_VERSION Configuration" +mainmenu "Buildroot $(BR2_VERSION_FULL) Configuration" config BR2_HAVE_DOT_CONFIG bool default y -config BR2_VERSION - string - option env="BR2_VERSION_FULL" - -config BR2_HOSTARCH - string - option env="HOSTARCH" - -config BR2_BASE_DIR - string - option env="BASE_DIR" - # br2-external paths definitions -source "$BR2_BASE_DIR/.br2-external.in.paths" - -# Hidden config symbols for packages to check system gcc version -config BR2_HOST_GCC_VERSION - string - option env="HOST_GCC_VERSION" +source "$(BASE_DIR)/.br2-external.in.paths" config BR2_HOST_GCC_AT_LEAST_4_9 bool - default y if BR2_HOST_GCC_VERSION = "4 9" + default y if "$(HOST_GCC_VERSION)" = "4 9" config BR2_HOST_GCC_AT_LEAST_5 bool - default y if BR2_HOST_GCC_VERSION = "5" + default y if "$(HOST_GCC_VERSION)" = "5" select BR2_HOST_GCC_AT_LEAST_4_9 config BR2_HOST_GCC_AT_LEAST_6 bool - default y if BR2_HOST_GCC_VERSION = "6" + default y if "$(HOST_GCC_VERSION)" = "6" select BR2_HOST_GCC_AT_LEAST_5 config BR2_HOST_GCC_AT_LEAST_7 bool - default y if BR2_HOST_GCC_VERSION = "7" + default y if "$(HOST_GCC_VERSION)" = "7" select BR2_HOST_GCC_AT_LEAST_6 config BR2_HOST_GCC_AT_LEAST_8 bool - default y if BR2_HOST_GCC_VERSION = "8" + default y if "$(HOST_GCC_VERSION)" = "8" select BR2_HOST_GCC_AT_LEAST_7 config BR2_HOST_GCC_AT_LEAST_9 bool - default y if BR2_HOST_GCC_VERSION = "9" + default y if "$(HOST_GCC_VERSION)" = "9" select BR2_HOST_GCC_AT_LEAST_8 config BR2_HOST_GCC_AT_LEAST_10 bool - default y if BR2_HOST_GCC_VERSION = "10" + default y if "$(HOST_GCC_VERSION)" = "10" select BR2_HOST_GCC_AT_LEAST_9 config BR2_HOST_GCC_AT_LEAST_11 bool - default y if BR2_HOST_GCC_VERSION = "11" + default y if "$(HOST_GCC_VERSION)" = "11" select BR2_HOST_GCC_AT_LEAST_10 # When adding new entries above, be sure to update @@ -183,13 +166,9 @@ config BR2_TAR_OPTIONS endmenu -config BR2_DEFCONFIG_FROM_ENV - string - option env="BR2_DEFCONFIG" - config BR2_DEFCONFIG string "Location to save buildroot config" - default BR2_DEFCONFIG_FROM_ENV if BR2_DEFCONFIG_FROM_ENV != "" + default "$(BR2_DEFCONFIG)" if "$(BR2_DEFCONFIG)" != "" default "$(CONFIG_DIR)/defconfig" help When running 'make savedefconfig', the defconfig file will be @@ -988,4 +967,4 @@ source "package/Config.in.host" source "Config.in.legacy" # br2-external menus definitions -source "$BR2_BASE_DIR/.br2-external.in.menus" +source "$(BASE_DIR)/.br2-external.in.menus" diff --git a/Config.in.legacy b/Config.in.legacy index 46f7a304cb..c8d916e1fc 100644 --- a/Config.in.legacy +++ b/Config.in.legacy @@ -90,11 +90,7 @@ # # [End of example] -config BR2_SKIP_LEGACY - bool - option env="SKIP_LEGACY" - -if !BR2_SKIP_LEGACY +if "$(SKIP_LEGACY)" = "" config BR2_LEGACY bool diff --git a/boot/arm-trusted-firmware/Config.in b/boot/arm-trusted-firmware/Config.in index 2fe3dd1146..6cf8e88929 100644 --- a/boot/arm-trusted-firmware/Config.in +++ b/boot/arm-trusted-firmware/Config.in @@ -243,7 +243,7 @@ config BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_DTC config BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_ARM32_TOOLCHAIN bool "Needs arm-none-eabi toolchain" depends on BR2_aarch64 - depends on BR2_HOSTARCH = "x86_64" + depends on "$(HOSTARCH)" = "x86_64" help Select this option if your ATF board configuration requires an ARM32 bare metal toolchain to be available. diff --git a/boot/beaglev-ddrinit/Config.in b/boot/beaglev-ddrinit/Config.in index 7ca92a7b9b..585b2ba7be 100644 --- a/boot/beaglev-ddrinit/Config.in +++ b/boot/beaglev-ddrinit/Config.in @@ -1,7 +1,7 @@ config BR2_TARGET_BEAGLEV_DDRINIT bool "beaglev-ddrinit" depends on BR2_riscv - depends on BR2_HOSTARCH = "x86_64" # host-riscv64-elf-toolchain + depends on "$(HOSTARCH)" = "x86_64" # host-riscv64-elf-toolchain help This package builds the DDRinit firmware used on the BeagleV platform. diff --git a/boot/beaglev-secondboot/Config.in b/boot/beaglev-secondboot/Config.in index a9695fc138..0616efb0c5 100644 --- a/boot/beaglev-secondboot/Config.in +++ b/boot/beaglev-secondboot/Config.in @@ -1,7 +1,7 @@ config BR2_TARGET_BEAGLEV_SECONDBOOT bool "beaglev-secondboot" depends on BR2_riscv - depends on BR2_HOSTARCH = "x86_64" # host-riscv64-elf-toolchain + depends on "$(HOSTARCH)" = "x86_64" # host-riscv64-elf-toolchain help This package builds the SecondBoot firmware used on the BeagleV platform. diff --git a/boot/s500-bootloader/Config.in b/boot/s500-bootloader/Config.in index 7bb689f305..a7d85214d4 100644 --- a/boot/s500-bootloader/Config.in +++ b/boot/s500-bootloader/Config.in @@ -1,7 +1,7 @@ config BR2_TARGET_S500_BOOTLOADER bool "s500-bootloader" depends on BR2_arm - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86" select BR2_HOSTARCH_NEEDS_IA32_LIBS help 1st level bootloader for Actions Semiconductor S500 SoC. diff --git a/linux/Config.ext.in b/linux/Config.ext.in index 3cbf42d344..301f1e642c 100644 --- a/linux/Config.ext.in +++ b/linux/Config.ext.in @@ -149,6 +149,6 @@ config BR2_LINUX_KERNEL_EXT_AUFS_VERSION endif # aufs # kernel extensions from br2-external trees, if any -source "$BR2_BASE_DIR/.br2-external.in.linux" +source "$(BASE_DIR)/.br2-external.in.linux" endmenu diff --git a/package/amlogic-boot-fip/Config.in.host b/package/amlogic-boot-fip/Config.in.host index bccc6296d1..54f4075f27 100644 --- a/package/amlogic-boot-fip/Config.in.host +++ b/package/amlogic-boot-fip/Config.in.host @@ -1,6 +1,6 @@ config BR2_PACKAGE_HOST_AMLOGIC_BOOT_FIP bool "host amlogic-boot-fip" - depends on BR2_HOSTARCH = "x86_64" + depends on "$(HOSTARCH)" = "x86_64" help Firmware Image Package (FIP) sources used to sign Amlogic u-boot binaries in LibreELEC images diff --git a/package/erlang/Config.in b/package/erlang/Config.in index 724f91123b..f3830cefad 100644 --- a/package/erlang/Config.in +++ b/package/erlang/Config.in @@ -1,8 +1,8 @@ config BR2_PACKAGE_HOST_ERLANG_ARCH_SUPPORTS bool - default y if BR2_HOSTARCH = "aarch64" - default y if BR2_HOSTARCH = "x86_64" - default y if BR2_HOSTARCH = "x86" + default y if "$(HOSTARCH)" = "aarch64" + default y if "$(HOSTARCH)" = "x86_64" + default y if "$(HOSTARCH)" = "x86" config BR2_PACKAGE_ERLANG_ARCH_SUPPORTS bool diff --git a/package/flutter-sdk-bin/Config.in.host b/package/flutter-sdk-bin/Config.in.host index 181a2ee6e5..c1c97e2ca8 100644 --- a/package/flutter-sdk-bin/Config.in.host +++ b/package/flutter-sdk-bin/Config.in.host @@ -1,6 +1,6 @@ config BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS bool - default y if BR2_HOSTARCH = "x86_64" + default y if "$(HOSTARCH)" = "x86_64" config BR2_PACKAGE_HOST_FLUTTER_SDK_BIN bool "host flutter-sdk-bin" diff --git a/package/go-bootstrap-stage1/Config.in.host b/package/go-bootstrap-stage1/Config.in.host index 56a743caf9..50caad0a8b 100644 --- a/package/go-bootstrap-stage1/Config.in.host +++ b/package/go-bootstrap-stage1/Config.in.host @@ -1,6 +1,6 @@ config BR2_PACKAGE_HOST_GO_BOOTSTRAP_STAGE1_ARCH_SUPPORTS bool # See src/cmd/dist/unix.c for the list of supported architectures - default y if BR2_HOSTARCH = "x86" - default y if BR2_HOSTARCH = "x86_64" - default y if BR2_HOSTARCH = "arm" + default y if "$(HOSTARCH)" = "x86" + default y if "$(HOSTARCH)" = "x86_64" + default y if "$(HOSTARCH)" = "arm" diff --git a/package/google-breakpad/Config.in.host b/package/google-breakpad/Config.in.host index 28d304766a..84e95957b2 100644 --- a/package/google-breakpad/Config.in.host +++ b/package/google-breakpad/Config.in.host @@ -1,8 +1,8 @@ config BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS bool - default y if BR2_HOSTARCH = "x86_64" - default y if BR2_HOSTARCH = "x86" - default y if BR2_HOSTARCH = "arm" - default y if BR2_HOSTARCH = "aarch64" - default y if BR2_HOSTARCH = "mips" - default y if BR2_HOSTARCH = "mipsel" + default y if "$(HOSTARCH)" = "x86_64" + default y if "$(HOSTARCH)" = "x86" + default y if "$(HOSTARCH)" = "arm" + default y if "$(HOSTARCH)" = "aarch64" + default y if "$(HOSTARCH)" = "mips" + default y if "$(HOSTARCH)" = "mipsel" diff --git a/package/jpeg/Config.in b/package/jpeg/Config.in index 371f89aa49..0a7e01d28b 100644 --- a/package/jpeg/Config.in +++ b/package/jpeg/Config.in @@ -40,7 +40,7 @@ config BR2_PACKAGE_JPEG_TURBO http://www.libjpeg-turbo.org # libjpeg from br2-external trees, if any -source "$BR2_BASE_DIR/.br2-external.in.jpeg" +source "$(BASE_DIR)/.br2-external.in.jpeg" endchoice diff --git a/package/kvm-unit-tests/Config.in b/package/kvm-unit-tests/Config.in index 02ea8dd58c..c99bad8fd5 100644 --- a/package/kvm-unit-tests/Config.in +++ b/package/kvm-unit-tests/Config.in @@ -19,7 +19,7 @@ config BR2_PACKAGE_KVM_UNIT_TESTS # gcc 4.5 at least. on i386, we use the target gcc, while on # x86-64 we use the host gcc (see .mk file for details) depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 || !BR2_i386 - depends on BR2_HOSTARCH = "x86_64" || !BR2_x86_64 + depends on "$(HOSTARCH)" = "x86_64" || !BR2_x86_64 select BR2_HOSTARCH_NEEDS_IA32_COMPILER if BR2_x86_64 help kvm-unit-tests is a project as old as KVM. As its name diff --git a/package/luajit/Config.in b/package/luajit/Config.in index 31e9e0243e..408032c7e8 100644 --- a/package/luajit/Config.in +++ b/package/luajit/Config.in @@ -7,9 +7,9 @@ config BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS default y if BR2_powerpc # -m32 flag is used for 32bit builds and host-luajit has # limited architecture support - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86" # Building for 64-bit target requires a 64-bit host - depends on !BR2_ARCH_IS_64 || BR2_HOSTARCH = "x86_64" + depends on !BR2_ARCH_IS_64 || "$(HOSTARCH)" = "x86_64" config BR2_PACKAGE_LUAJIT bool "luajit" diff --git a/package/mono/Config.in b/package/mono/Config.in index 0152df8268..354dc56d24 100644 --- a/package/mono/Config.in +++ b/package/mono/Config.in @@ -1,7 +1,7 @@ config BR2_PACKAGE_HOST_MONO_ARCH_SUPPORTS bool - default y if BR2_HOSTARCH = "x86_64" - default y if BR2_HOSTARCH = "x86" + default y if "$(HOSTARCH)" = "x86_64" + default y if "$(HOSTARCH)" = "x86" config BR2_PACKAGE_MONO_ARCH_SUPPORTS bool diff --git a/package/nodejs/Config.in.host b/package/nodejs/Config.in.host index a8ab89176c..a8b0f3997d 100644 --- a/package/nodejs/Config.in.host +++ b/package/nodejs/Config.in.host @@ -1,9 +1,9 @@ config BR2_PACKAGE_HOST_NODEJS_BIN_ARCH_SUPPORTS bool - default y if BR2_HOSTARCH = "aarch64" - default y if BR2_HOSTARCH = "arm" - default y if BR2_HOSTARCH = "ppc64le" - default y if BR2_HOSTARCH = "x86_64" + default y if "$(HOSTARCH)" = "aarch64" + default y if "$(HOSTARCH)" = "arm" + default y if "$(HOSTARCH)" = "ppc64le" + default y if "$(HOSTARCH)" = "x86_64" comment "host nodejs needs a host gcc >= 8" depends on !BR2_PACKAGE_HOST_NODEJS_BIN_ARCH_SUPPORTS diff --git a/package/openjdk/Config.in b/package/openjdk/Config.in index 25d6960ecf..66963ed885 100644 --- a/package/openjdk/Config.in +++ b/package/openjdk/Config.in @@ -1,7 +1,7 @@ config BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS bool - default y if BR2_HOSTARCH = "x86_64" - default y if BR2_HOSTARCH = "aarch64" + default y if "$(HOSTARCH)" = "x86_64" + default y if "$(HOSTARCH)" = "aarch64" # Taken from make/autoconf/platform.m4 config BR2_PACKAGE_OPENJDK_ARCH_SUPPORTS diff --git a/package/openssl/Config.in b/package/openssl/Config.in index c7641ecefa..3d14988d99 100644 --- a/package/openssl/Config.in +++ b/package/openssl/Config.in @@ -47,7 +47,7 @@ config BR2_PACKAGE_LIBRESSL source "package/libressl/Config.in" # openssl from br2-external trees, if any -source "$BR2_BASE_DIR/.br2-external.in.openssl" +source "$(BASE_DIR)/.br2-external.in.openssl" endchoice diff --git a/package/protobuf/Config.in b/package/protobuf/Config.in index 47e987fa2b..df87918273 100644 --- a/package/protobuf/Config.in +++ b/package/protobuf/Config.in @@ -16,17 +16,17 @@ # host-protobuf only builds on certain architectures config BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS bool - default y if BR2_HOSTARCH = "aarch64" - default y if BR2_HOSTARCH = "arm" - default y if BR2_HOSTARCH = "mips" - default y if BR2_HOSTARCH = "mipsel" - default y if BR2_HOSTARCH = "powerpc" - default y if BR2_HOSTARCH = "powerpc64" - default y if BR2_HOSTARCH = "powerpc64le" - default y if BR2_HOSTARCH = "sparc" - default y if BR2_HOSTARCH = "sparc64" - default y if BR2_HOSTARCH = "x86" - default y if BR2_HOSTARCH = "x86_64" + default y if "$(HOSTARCH)" = "aarch64" + default y if "$(HOSTARCH)" = "arm" + default y if "$(HOSTARCH)" = "mips" + default y if "$(HOSTARCH)" = "mipsel" + default y if "$(HOSTARCH)" = "powerpc" + default y if "$(HOSTARCH)" = "powerpc64" + default y if "$(HOSTARCH)" = "powerpc64le" + default y if "$(HOSTARCH)" = "sparc" + default y if "$(HOSTARCH)" = "sparc64" + default y if "$(HOSTARCH)" = "x86" + default y if "$(HOSTARCH)" = "x86_64" config BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS bool diff --git a/package/qt5/qt5webengine/Config.in b/package/qt5/qt5webengine/Config.in index 67c843e5f6..b1b7d73d05 100644 --- a/package/qt5/qt5webengine/Config.in +++ b/package/qt5/qt5webengine/Config.in @@ -5,7 +5,7 @@ config BR2_PACKAGE_QT5WEBENGINE_ARCH_SUPPORTS BR2_mips || BR2_mips64 # -m32 flag is used for 32bit builds and host tools have # limited architecture support - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86" depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5declarative depends on !BR2_BINFMT_FLAT # qt5base-icu depends on BR2_USE_MMU # libglib2, qt5base-dbus diff --git a/package/rustc/Config.in.host b/package/rustc/Config.in.host index baa68994e6..77f5bf0645 100644 --- a/package/rustc/Config.in.host +++ b/package/rustc/Config.in.host @@ -1,14 +1,14 @@ # All host rust packages should depend on this option config BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS bool - default y if BR2_HOSTARCH = "aarch64" - default y if BR2_HOSTARCH = "powerpc" - default y if BR2_HOSTARCH = "powerpc64" - default y if BR2_HOSTARCH = "powerpc64le" - default y if BR2_HOSTARCH = "riscv64" - default y if BR2_HOSTARCH = "s390x" - default y if BR2_HOSTARCH = "x86" - default y if BR2_HOSTARCH = "x86_64" + default y if "$(HOSTARCH)" = "aarch64" + default y if "$(HOSTARCH)" = "powerpc" + default y if "$(HOSTARCH)" = "powerpc64" + default y if "$(HOSTARCH)" = "powerpc64le" + default y if "$(HOSTARCH)" = "riscv64" + default y if "$(HOSTARCH)" = "s390x" + default y if "$(HOSTARCH)" = "x86" + default y if "$(HOSTARCH)" = "x86_64" # The pre-built Rust standard library is only available for a number # of architectures/C libraries combinations, with different levels of diff --git a/package/sam-ba/Config.in.host b/package/sam-ba/Config.in.host index cd11e8633e..9b2e2afb75 100644 --- a/package/sam-ba/Config.in.host +++ b/package/sam-ba/Config.in.host @@ -1,6 +1,6 @@ config BR2_PACKAGE_HOST_SAM_BA bool "host sam-ba" - depends on BR2_HOSTARCH = "x86_64" + depends on "$(HOSTARCH)" = "x86_64" help Atmel SAM-BA software provides an open set of tools for programming the Atmel SAM3, SAM7 and SAM9 ARM-based diff --git a/package/supertuxkart/Config.in b/package/supertuxkart/Config.in index 319415754a..d442846fdd 100644 --- a/package/supertuxkart/Config.in +++ b/package/supertuxkart/Config.in @@ -1,6 +1,6 @@ config BR2_PACKAGE_SUPERTUXKART bool "supertuxkart" - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86" depends on BR2_i386 || BR2_x86_64 depends on BR2_USE_MMU # fork() depends on BR2_INSTALL_LIBSTDCPP # openal @@ -34,7 +34,7 @@ config BR2_PACKAGE_SUPERTUXKART http://supertuxkart.sourceforge.net/Main_Page comment "supertuxkart needs an OpenGL backend, a uClibc or glibc toolchain w/ NPTL, C++, gcc >= 4.9" - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86" depends on BR2_i386 || BR2_x86_64 depends on BR2_USE_MMU depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS diff --git a/package/ti-cgt-pru/Config.in.host b/package/ti-cgt-pru/Config.in.host index eab3cd72d5..cf56854dd1 100644 --- a/package/ti-cgt-pru/Config.in.host +++ b/package/ti-cgt-pru/Config.in.host @@ -1,7 +1,7 @@ config BR2_PACKAGE_HOST_TI_CGT_PRU_ARCH_SUPPORTS bool default y - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86" depends on BR2_arm config BR2_PACKAGE_HOST_TI_CGT_PRU diff --git a/package/ti-gfx/Config.in b/package/ti-gfx/Config.in index 40f46335a3..093417fa21 100644 --- a/package/ti-gfx/Config.in +++ b/package/ti-gfx/Config.in @@ -1,7 +1,7 @@ config BR2_PACKAGE_TI_GFX bool "ti-gfx" depends on BR2_LINUX_KERNEL && BR2_TOOLCHAIN_USES_GLIBC && BR2_arm - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86" select BR2_HOSTARCH_NEEDS_IA32_LIBS select BR2_PACKAGE_HAS_LIBEGL select BR2_PACKAGE_HAS_LIBGLES diff --git a/package/wine/Config.in b/package/wine/Config.in index db3b1570ef..cb764f0c9b 100644 --- a/package/wine/Config.in +++ b/package/wine/Config.in @@ -2,9 +2,9 @@ config BR2_PACKAGE_WINE_ARCH_SUPPORTS bool default y # Wine only builds on certain architectures - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" || \ - BR2_HOSTARCH = "powerpc" || BR2_HOSTARCH = "arm" || \ - BR2_HOSTARCH = "aarch64" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86" || \ + "$(HOSTARCH)" = "powerpc" || "$(HOSTARCH)" = "arm" || \ + "$(HOSTARCH)" = "aarch64" # Wine has much CPU specific code and mostly makes sense on x86 depends on BR2_i386 diff --git a/system/Config.in b/system/Config.in index 3fb17ed1c6..b8db1e755f 100644 --- a/system/Config.in +++ b/system/Config.in @@ -20,7 +20,7 @@ config BR2_ROOTFS_SKELETON_CUSTOM Use custom target skeleton. # skeleton from br2-external trees, if any -source "$BR2_BASE_DIR/.br2-external.in.skeleton" +source "$(BASE_DIR)/.br2-external.in.skeleton" endchoice @@ -154,7 +154,7 @@ config BR2_INIT_NONE or with a rootfs-overlay. # Init systems from br2-external trees, if any -source "$BR2_BASE_DIR/.br2-external.in.init" +source "$(BASE_DIR)/.br2-external.in.init" endchoice diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in index e91aa16326..9067193282 100644 --- a/toolchain/toolchain-external/Config.in +++ b/toolchain/toolchain-external/Config.in @@ -38,7 +38,7 @@ source "toolchain/toolchain-external/toolchain-external-bootlin/Config.in" source "toolchain/toolchain-external/toolchain-external-custom/Config.in" # Toolchains from br2-external trees, if any -source "$BR2_BASE_DIR/.br2-external.in.toolchains" +source "$(BASE_DIR)/.br2-external.in.toolchains" endchoice diff --git a/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in b/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in index 1cee601a89..07d1e4b232 100644 --- a/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in +++ b/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in @@ -1,7 +1,7 @@ config BR2_TOOLCHAIN_EXTERNAL_ARM_AARCH64_BE bool "Arm AArch64 BE 13.2.rel1" depends on BR2_aarch64_be - depends on BR2_HOSTARCH = "x86_64" + depends on "$(HOSTARCH)" = "x86_64" depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_SSP diff --git a/toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in b/toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in index 2565707def..65159c38bb 100644 --- a/toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in +++ b/toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in @@ -1,7 +1,7 @@ config BR2_TOOLCHAIN_EXTERNAL_ARM_AARCH64 bool "Arm AArch64 13.2.rel1" depends on BR2_aarch64 - depends on BR2_HOSTARCH = "x86_64" + depends on "$(HOSTARCH)" = "x86_64" depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_SSP diff --git a/toolchain/toolchain-external/toolchain-external-arm-arm/Config.in b/toolchain/toolchain-external/toolchain-external-arm-arm/Config.in index bee8d61164..bbc8168160 100644 --- a/toolchain/toolchain-external/toolchain-external-arm-arm/Config.in +++ b/toolchain/toolchain-external/toolchain-external-arm-arm/Config.in @@ -7,7 +7,7 @@ config BR2_TOOLCHAIN_EXTERNAL_ARM_ARM depends on BR2_arm depends on BR2_ARM_CPU_ARMV7A || BR2_ARM_CPU_ARMV8A depends on BR2_ARM_CPU_HAS_NEON - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "aarch64" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "aarch64" depends on BR2_ARM_EABIHF depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 select BR2_TOOLCHAIN_EXTERNAL_GLIBC diff --git a/toolchain/toolchain-external/toolchain-external-bootlin/Config.in b/toolchain/toolchain-external/toolchain-external-bootlin/Config.in index 6552da9a84..1fa4fccb0f 100644 --- a/toolchain/toolchain-external/toolchain-external-bootlin/Config.in +++ b/toolchain/toolchain-external/toolchain-external-bootlin/Config.in @@ -1,7 +1,7 @@ config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN bool "Bootlin toolchains" depends on BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCH_SUPPORTS - depends on BR2_HOSTARCH = "x86_64" + depends on "$(HOSTARCH)" = "x86_64" help Bootlin toolchains are built using Buildroot for a large number of architectures and C libraries configurations. diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in b/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in index 8e067c8ffb..1938e8f5fc 100644 --- a/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in +++ b/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in @@ -5,7 +5,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_6 # Unsupported MIPS cores depends on !BR2_mips_interaptiv - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86" depends on !BR2_MIPS_NABI32 select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_SSP diff --git a/toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/Config.in b/toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/Config.in index 295a8987f1..ae727ffc4c 100644 --- a/toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/Config.in +++ b/toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/Config.in @@ -1,7 +1,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE bool "Linaro AArch64 BE 2018.05" depends on BR2_aarch64_be - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86" depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_8 select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_SSP diff --git a/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in b/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in index 1b0ec7cd9f..bee49235d4 100644 --- a/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in +++ b/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in @@ -1,7 +1,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64 bool "Linaro AArch64 2018.05" depends on BR2_aarch64 - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86" depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_8 select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_SSP diff --git a/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in b/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in index 8b3b4c844e..4390482ab9 100644 --- a/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in +++ b/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in @@ -6,7 +6,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM bool "Linaro ARM 2018.05" depends on BR2_arm depends on BR2_ARM_CPU_ARMV7A || BR2_ARM_CPU_ARMV8A - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86" depends on BR2_ARM_EABIHF depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_8 select BR2_TOOLCHAIN_EXTERNAL_GLIBC diff --git a/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in b/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in index b143ee5e24..3448864e4c 100644 --- a/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in +++ b/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in @@ -6,7 +6,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB bool "Linaro armeb 2018.05" depends on BR2_armeb depends on BR2_ARM_CPU_ARMV7A || BR2_ARM_CPU_ARMV8A - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86" depends on BR2_ARM_EABIHF depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_8 select BR2_TOOLCHAIN_EXTERNAL_GLIBC diff --git a/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in b/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in index 292e652fb0..44ff9593b3 100644 --- a/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in +++ b/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in @@ -1,7 +1,7 @@ config BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC bool "Synopsys ARC 2019.09 toolchain" depends on BR2_arc - depends on BR2_HOSTARCH = "x86_64" + depends on "$(HOSTARCH)" = "x86_64" depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_10 select BR2_TOOLCHAIN_EXTERNAL_UCLIBC select BR2_INSTALL_LIBSTDCPP -- 2.45.0 From ps.report at gmx.net Mon May 13 09:19:48 2024 From: ps.report at gmx.net (Peter Seiderer) Date: Mon, 13 May 2024 11:19:48 +0200 Subject: [Buildroot] [PATCH v2 4/4] package/openssl: move libopenssl/libressl/.br2-external.in.openssl source statements outside of the choice In-Reply-To: <20240513091950.30116-1-ps.report@gmx.net> References: <20240513091950.30116-1-ps.report@gmx.net> Message-ID: <20240513091950.30116-4-ps.report@gmx.net> Fixes the following error/warnings with kconfig from linux-6.9-rc5: package/libopenssl/Config.in:5:warning: choice value must have a prompt package/libopenssl/Config.in:7:warning: defaults for choice values not supported package/libopenssl/Config.in:15:warning: choice value must have a prompt package/libopenssl/Config.in:18:warning: defaults for choice values not supported package/libopenssl/Config.in:19:warning: defaults for choice values not supported package/libopenssl/Config.in:20:warning: defaults for choice values not supported package/libopenssl/Config.in:21:warning: defaults for choice values not supported package/libopenssl/Config.in:22:warning: defaults for choice values not supported package/libopenssl/Config.in:23:warning: defaults for choice values not supported package/libopenssl/Config.in:24:warning: defaults for choice values not supported package/libopenssl/Config.in:25:warning: defaults for choice values not supported package/libopenssl/Config.in:26:warning: defaults for choice values not supported package/libopenssl/Config.in:27:warning: defaults for choice values not supported package/libopenssl/Config.in:28:warning: defaults for choice values not supported package/libopenssl/Config.in:32:warning: defaults for choice values not supported package/libopenssl/Config.in:33:warning: defaults for choice values not supported package/libopenssl/Config.in:34:warning: defaults for choice values not supported package/libopenssl/Config.in:50:warning: defaults for choice values not supported package/libopenssl/Config.in:54:warning: defaults for choice values not supported package/libopenssl/Config.in:58:warning: defaults for choice values not supported package/libopenssl/Config.in:62:warning: defaults for choice values not supported package/libopenssl/Config.in:66:warning: defaults for choice values not supported package/libopenssl/Config.in:70:warning: defaults for choice values not supported package/libopenssl/Config.in:75:warning: defaults for choice values not supported package/libopenssl/Config.in:79:warning: defaults for choice values not supported package/libopenssl/Config.in:83:warning: defaults for choice values not supported package/libopenssl/Config.in:87:warning: defaults for choice values not supported package/libopenssl/Config.in:91:warning: defaults for choice values not supported package/libopenssl/Config.in:95:warning: defaults for choice values not supported package/libopenssl/Config.in:99:warning: defaults for choice values not supported package/libopenssl/Config.in:103:warning: defaults for choice values not supported package/libopenssl/Config.in:107:warning: defaults for choice values not supported package/libopenssl/Config.in:111:warning: defaults for choice values not supported package/libopenssl/Config.in:115:warning: defaults for choice values not supported package/libopenssl/Config.in:119:warning: defaults for choice values not supported package/libopenssl/Config.in:123:warning: defaults for choice values not supported package/libopenssl/Config.in:130:warning: defaults for choice values not supported package/libopenssl/Config.in:134:warning: defaults for choice values not supported package/openssl/Config.in:12:error: recursive dependency detected! package/openssl/Config.in:12: choice contains symbol BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH_LINUX_PPC package/libopenssl/Config.in:5: symbol BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH_LINUX_PPC is part of choice BR2_PACKAGE_LIBOPENSSL package/openssl/Config.in:17: symbol BR2_PACKAGE_LIBOPENSSL is part of choice For a resolution refer to Documentation/kbuild/kconfig-language.rst subsection "Kconfig recursive dependency limitations" Signed-off-by: Peter Seiderer --- Changes v1 -> v2: - fix typo in subject line (statements vs. statemetns) - move 'if BR2_PACKAGE_LIBOPENSSL' from package/libopenssl/Config.in to package/openssl/Config.in (suggested by Yann E. MORIN) - move 'f BR2_PACKAGE_LIBRESSL' from ackage/libressl/Config.in to package/openssl/Config.in (suggested by Yann E. MORIN) - move .br2-external.in.openssl source statement outside of the choice (suggested by Yann E. MORIN) Notes: - with this solution for .br2-external.in.openssl exactly one alternative/ external openssl library can be provided (previously more than one additional entry could be provided inside the choice) --- package/libopenssl/Config.in | 4 ---- package/libressl/Config.in | 4 ---- package/openssl/Config.in | 19 ++++++++++++++----- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/package/libopenssl/Config.in b/package/libopenssl/Config.in index 0c8db52e2e..53112ff927 100644 --- a/package/libopenssl/Config.in +++ b/package/libopenssl/Config.in @@ -1,5 +1,3 @@ -if BR2_PACKAGE_LIBOPENSSL - # 4xx PowerPC cores seem to have trouble with openssl's ASM # optimizations config BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH_LINUX_PPC @@ -132,5 +130,3 @@ config BR2_PACKAGE_LIBOPENSSL_DYNAMIC_ENGINE config BR2_PACKAGE_LIBOPENSSL_ENABLE_COMP bool "enable compression" default y - -endif # BR2_PACKAGE_LIBOPENSSL diff --git a/package/libressl/Config.in b/package/libressl/Config.in index 600829cb9e..2146481faa 100644 --- a/package/libressl/Config.in +++ b/package/libressl/Config.in @@ -1,9 +1,5 @@ -if BR2_PACKAGE_LIBRESSL - config BR2_PACKAGE_LIBRESSL_BIN bool "openssl binary" help Install the openssl binary to the target file system. This is a command line tool for doing various cryptographic stuff. - -endif diff --git a/package/openssl/Config.in b/package/openssl/Config.in index 3d14988d99..bee22aa69f 100644 --- a/package/openssl/Config.in +++ b/package/openssl/Config.in @@ -28,8 +28,6 @@ config BR2_PACKAGE_LIBOPENSSL Note: Some helper scripts need perl. -source "package/libopenssl/Config.in" - config BR2_PACKAGE_LIBRESSL bool "libressl" depends on !BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL @@ -44,12 +42,23 @@ config BR2_PACKAGE_LIBRESSL http://www.libressl.org/ +config BR2_PACKAGE_OPENSSL_EXTERNAL + bool "from an external tree" + depends on "$(BR2_EXTERNAL)" != "" + +endchoice + +if BR2_PACKAGE_LIBOPENSSL +source "package/libopenssl/Config.in" +endif + +if BR2_PACKAGE_LIBRESSL source "package/libressl/Config.in" +endif -# openssl from br2-external trees, if any +if BR2_PACKAGE_OPENSSL_EXTERNAL source "$(BASE_DIR)/.br2-external.in.openssl" - -endchoice +endif config BR2_PACKAGE_HAS_OPENSSL bool -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 10:29:33 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Mon, 13 May 2024 12:29:33 +0200 Subject: [Buildroot] [PATCH v3 02/14] package/qt6/qt6base: patch CVE-2024-33861 In-Reply-To: References: <20240512114617.2564569-1-roykollensvendsen@gmail.com> <20240512114617.2564569-2-roykollensvendsen@gmail.com> <20240513084026.4513d1f6@windsurf> Message-ID: Hi Thomas and Jesse, I assume I should add this information to the commit message and make a v4 patch-set? Best regards, Roy man. 13. mai 2024 kl. 09:57 skrev Jesse Van Gavere : > Hello Thomas, > > Op ma 13 mei 2024 om 08:40 schreef Thomas Petazzoni > : > > > > > Hello Roy, > > > > On Sun, 12 May 2024 13:45:49 +0200 > > Roy Kollen Svendsen wrote: > > > > > From: Roy Kollen Svendsen > > > > > > Got patch from: > > > > > > https://download.qt.io/archive/qt/6.7/ > > > Signed-off-by: Roy Kollen Svendsen > > > > Thanks for this v3. However, you're again putting a fix as PATCH 02/14 > > of the series, after a bump. Is it because this CVE is only applicable > > to Qt 6.7 (and not the 6.4.3 we already have in Buildroot) ? Could you > > clarify this point, which is very important? > > This is not applicable to 6.4.3, the affected versions are detailed in > the bugzilla report below and it's only 6.5.0+ > So this seems perfectly valid to go along with the version bump. > > OpenSUSE report: > https://www.suse.com/security/cve/CVE-2024-33861.html > Bugzilla report clarifying affected versions > https://bugzilla.suse.com/show_bug.cgi?id=1223917 > > > Thanks! > > > > Thomas > > -- > > Thomas Petazzoni, co-owner and CEO, Bootlin > > Embedded Linux and Kernel engineering and training > > https://bootlin.com > > Best regards, > Jesse > -------------- next part -------------- An HTML attachment was scrubbed... URL: From fontaine.fabrice at gmail.com Mon May 13 10:55:34 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Mon, 13 May 2024 12:55:34 +0200 Subject: [Buildroot] [PATCH 1/1] package/openblas: fix build without MMU In-Reply-To: <20240510225353.43655bcb@windsurf> References: <20240310182439.441668-1-fontaine.fabrice@gmail.com> <20240510225353.43655bcb@windsurf> Message-ID: Hello, Le ven. 10 mai 2024 ? 22:53, Thomas Petazzoni a ?crit : > > On Sun, 10 Mar 2024 19:24:39 +0100 > Fabrice Fontaine wrote: > > > Fix the following build failure without MMU: > > > > /home/buildroot/autobuild/instance-1/output-1/host/riscv64-buildroot-linux-uclibc/bin/ld.real: test_fork.o: in function `.L6': > > test_fork.c:(.text+0x120): undefined reference to `fork' > > > > autobuilder failure is raised since the addition of RISC-V support by > > commit c789bcddf0fb17580bef0cdc45b5334a90ecdf13 > > > > Fixes: > > - http://autobuild.buildroot.org/results/b9d097ae077f2cb40fc60de94bf25423636af005 > > > > Signed-off-by: Fabrice Fontaine > > --- > > ...ding-against-an-uClibc-that-does-not.patch | 28 +++++++++++++++++++ > > ...-uclibc-that-does-not-implement-fork.patch | 28 +++++++++++++++++++ > > 2 files changed, 56 insertions(+) > > create mode 100644 package/openblas/0002-Skip-the-fork-test-when-building-against-an-uClibc-that-does-not.patch > > create mode 100644 package/openblas/0003-Skip-test-when-building-with-a-uclibc-that-does-not-implement-fork.patch > > It seems like following the bump in > 59b48b5cff057f2429b1143d6f50c39d93ca8ef3, these patches are no longer > needed. Could you confirm? At least patch 0002 no longer applies. Yes, I confirm that both patches are included in version 0.3.27. > > Thanks, > > Thomas > -- > Thomas Petazzoni, CTO, Bootlin > Embedded Linux and Kernel engineering > https://bootlin.com Best Regards, Fabrice From jesseevg at gmail.com Mon May 13 11:05:05 2024 From: jesseevg at gmail.com (Jesse Van Gavere) Date: Mon, 13 May 2024 13:05:05 +0200 Subject: [Buildroot] [PATCH v3 02/14] package/qt6/qt6base: patch CVE-2024-33861 In-Reply-To: References: <20240512114617.2564569-1-roykollensvendsen@gmail.com> <20240512114617.2564569-2-roykollensvendsen@gmail.com> <20240513084026.4513d1f6@windsurf> Message-ID: Hello Roy, On Mon, 13 May 2024, 12:29 Roy Kollen Svendsen, wrote: > Hi Thomas and Jesse, > > I assume I should add this information to the commit message and make a v4 > patch-set? > Personally I don't see why that would be necessary, it's applicable to your version bump only and it's a valid CVE identifier (even if reserved for the moment) that can be looked up, putting the exact same CVE info in the commit for the patch seems a bit redundant Best regards, Jesse > Best regards, > Roy > > man. 13. mai 2024 kl. 09:57 skrev Jesse Van Gavere : > >> Hello Thomas, >> >> Op ma 13 mei 2024 om 08:40 schreef Thomas Petazzoni >> : >> >> > >> > Hello Roy, >> > >> > On Sun, 12 May 2024 13:45:49 +0200 >> > Roy Kollen Svendsen wrote: >> > >> > > From: Roy Kollen Svendsen >> > > >> > > Got patch from: >> > > >> > > https://download.qt.io/archive/qt/6.7/ >> > > Signed-off-by: Roy Kollen Svendsen >> > >> > Thanks for this v3. However, you're again putting a fix as PATCH 02/14 >> > of the series, after a bump. Is it because this CVE is only applicable >> > to Qt 6.7 (and not the 6.4.3 we already have in Buildroot) ? Could you >> > clarify this point, which is very important? >> >> This is not applicable to 6.4.3, the affected versions are detailed in >> the bugzilla report below and it's only 6.5.0+ >> So this seems perfectly valid to go along with the version bump. >> >> OpenSUSE report: >> https://www.suse.com/security/cve/CVE-2024-33861.html >> Bugzilla report clarifying affected versions >> https://bugzilla.suse.com/show_bug.cgi?id=1223917 >> >> > Thanks! >> > >> > Thomas >> > -- >> > Thomas Petazzoni, co-owner and CEO, Bootlin >> > Embedded Linux and Kernel engineering and training >> > https://bootlin.com >> >> Best regards, >> Jesse > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From troglobit at gmail.com Mon May 13 11:22:05 2024 From: troglobit at gmail.com (Joachim Wiberg) Date: Mon, 13 May 2024 13:22:05 +0200 Subject: [Buildroot] [PATCH 1/1] pacakge/smcroute: bump to version v2.5.7 Message-ID: <20240513112205.985165-1-troglobit@gmail.com> Fixes segfault on kernel without IPv6 support. For details, see https://github.com/troglobit/smcroute/releases/tag/2.5.7 Signed-off-by: Joachim Wiberg --- package/smcroute/smcroute.hash | 5 ++--- package/smcroute/smcroute.mk | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/package/smcroute/smcroute.hash b/package/smcroute/smcroute.hash index b472dfbc04..d51745c076 100644 --- a/package/smcroute/smcroute.hash +++ b/package/smcroute/smcroute.hash @@ -1,5 +1,4 @@ -# Hash from https://github.com/troglobit/smcroute/releases/download/2.5.6/smcroute-2.5.6.tar.gz.sha256 -sha256 0be38f617e322daafaa941c02423239f5c117b940cf0f45bacadb6733c4b3916 smcroute-2.5.6.tar.gz - +# Hash from https://github.com/troglobit/smcroute/releases/ generated by GitHub +sha256 7d2c83e11908fe37844fa9b49ae50924555c4e1bb440fb059a95c94e442ea8a5 smcroute-2.5.7.tar.gz # Locally generated sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/smcroute/smcroute.mk b/package/smcroute/smcroute.mk index 0c4f88ab1b..f7476f1100 100644 --- a/package/smcroute/smcroute.mk +++ b/package/smcroute/smcroute.mk @@ -4,7 +4,7 @@ # ################################################################################ -SMCROUTE_VERSION = 2.5.6 +SMCROUTE_VERSION = 2.5.7 SMCROUTE_SITE = https://github.com/troglobit/smcroute/releases/download/$(SMCROUTE_VERSION) SMCROUTE_LICENSE = GPL-2.0+ SMCROUTE_LICENSE_FILES = COPYING -- 2.34.1 From festevam at gmail.com Mon May 13 11:39:38 2024 From: festevam at gmail.com (Fabio Estevam) Date: Mon, 13 May 2024 08:39:38 -0300 Subject: [Buildroot] imx93-evk: Fails to boot from the SD card Message-ID: Hi S?bastien and Julien, I built an image for freescale_imx93evk_defconfig using the top of tree Buildroot, flashed the sdcard.img into an SD card an put the boot switch to SD card boot mode, but the image fails to boot: U-Boot SPL 2023.04 (Apr 28 2024 - 10:59:35 -0300) SOC: 0xa1009300 LC: 0x2040010 PMIC: Over Drive Voltage Mode DDR: 3733MTS M33 prepare ok Normal Boot Trying to boot from BOOTROM Boot Stage: Primary boot image offset 0x8000, pagesize 0x200, ivt offset 0x0 Load image from 0x56800 by ROM_API NOTICE: BL31: v2.8(release):custom NOTICE: BL31: Built : 10:55:27, Apr 28 2024 U-Boot 2023.04 (Apr 28 2024 - 10:59:35 -0300) CPU: i.MX93(52) rev1.1 1700 MHz (running at 1692 MHz) CPU: Industrial temperature grade (-40C to 105C) at 43C Reset cause: POR (0x1) Model: NXP i.MX93 11X11 EVK board DRAM: 2 GiB optee optee: OP-TEE api uid mismatch TCPC: Vendor ID [0x1fc9], Product ID [0x5110], Addr [I2C2 0x52] SNK.Power3.0 on CC1 PDO 0: type 0, 5000 mV, 3000 mA [E] PDO 1: type 0, 9000 mV, 3000 mA [] PDO 2: type 0, 15000 mV, 3000 mA [] PDO 3: type 0, 20000 mV, 2250 mA [] Requesting PDO 3: 20000 mV, 750 mA Source accept request PD source ready! tcpc_pd_receive_message: Polling ALERT register, TCPC_ALERT_RX_STATUS bit failed, ret = -62 TCPC: Vendor ID [0x1fc9], Product ID [0x5110], Addr [I2C2 0x51] TCPC: Vendor ID [0x1fc9], Product ID [0x5110], Addr [I2C2 0x50] Core: 229 devices, 36 uclasses, devicetree: separate MMC: FSL_SDHC: 0, FSL_SDHC: 1 Loading Environment from MMC... *** Warning - No block device, using default environment [*]-Video Link 0adv7535_mipi2hdmi hdmi at 3d: Can't find cec device id=0x3c fail to probe panel device hdmi at 3d fail to get display timings probe video device failed, ret -19 [0] lcd-controller at 4ae30000, video [1] dsi at 4ae10000, video_bridge [2] hdmi at 3d, panel adv7535_mipi2hdmi hdmi at 3d: Can't find cec device id=0x3c fail to probe panel device hdmi at 3d fail to get display timings probe video device failed, ret -19 In: serial Out: serial Err: serial BuildInfo: - ELE firmware version 0.1.0-44880904 UID: 0x6280a860 0x58465520 0x9883799f 0x311012fb flash target is MMC:1 MMC card init failed! ** Block device MMC 1 not supported The SD card is not recognized. Would you happen to have any suggestions? Thanks, Fabio Estevam From mf at go-sys.de Mon May 13 11:39:36 2024 From: mf at go-sys.de (Michael Fischer) Date: Mon, 13 May 2024 13:39:36 +0200 Subject: [Buildroot] [PATCH] package/sdl2: bump version to 2.30.3 Message-ID: <20240513113936.7471-1-mf@go-sys.de> Signed-off-by: Michael Fischer --- package/sdl2/sdl2.hash | 4 ++-- package/sdl2/sdl2.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/sdl2/sdl2.hash b/package/sdl2/sdl2.hash index 3c4b06cf3e..3c72d1d6d1 100644 --- a/package/sdl2/sdl2.hash +++ b/package/sdl2/sdl2.hash @@ -1,4 +1,4 @@ -# Locally calculated after checking http://www.libsdl.org/release/SDL2-2.30.2.tar.gz.sig -sha256 891d66ac8cae51361d3229e3336ebec1c407a8a2a063b61df14f5fdf3ab5ac31 SDL2-2.30.2.tar.gz +# Locally calculated after checking http://www.libsdl.org/release/SDL2-2.30.3.tar.gz.sig +sha256 820440072f8f5b50188c1dae104f2ad25984de268785be40c41a099a510f0aec SDL2-2.30.3.tar.gz # Locally calculated sha256 9b9e1764f06701bcf7ce21e942c682d5921ba0900c6fca760321b1c8837a9662 LICENSE.txt diff --git a/package/sdl2/sdl2.mk b/package/sdl2/sdl2.mk index 70f765f0ea..b5b0fb49e1 100644 --- a/package/sdl2/sdl2.mk +++ b/package/sdl2/sdl2.mk @@ -4,7 +4,7 @@ # ################################################################################ -SDL2_VERSION = 2.30.2 +SDL2_VERSION = 2.30.3 SDL2_SOURCE = SDL2-$(SDL2_VERSION).tar.gz SDL2_SITE = http://www.libsdl.org/release SDL2_LICENSE = Zlib -- 2.20.1 From festevam at gmail.com Mon May 13 11:44:48 2024 From: festevam at gmail.com (Fabio Estevam) Date: Mon, 13 May 2024 08:44:48 -0300 Subject: [Buildroot] imx93-evk: Fails to boot from the SD card In-Reply-To: References: Message-ID: On Mon, May 13, 2024 at 8:39?AM Fabio Estevam wrote: > UID: 0x6280a860 0x58465520 0x9883799f 0x311012fb > flash target is MMC:1 > MMC card init failed! > ** Block device MMC 1 not supported > > The SD card is not recognized. > > Would you happen to have any suggestions? Nevermind. I tried another SD card and it booted. Thanks From thomas.petazzoni at bootlin.com Mon May 13 11:59:11 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 13:59:11 +0200 Subject: [Buildroot] [PATCH v3 02/14] package/qt6/qt6base: patch CVE-2024-33861 In-Reply-To: References: <20240512114617.2564569-1-roykollensvendsen@gmail.com> <20240512114617.2564569-2-roykollensvendsen@gmail.com> <20240513084026.4513d1f6@windsurf> Message-ID: <20240513135911.209d094b@windsurf> Hell Jesse, Hello Roy, On Mon, 13 May 2024 13:05:05 +0200 Jesse Van Gavere wrote: > > I assume I should add this information to the commit message and make a v4 > > patch-set? > > Personally I don't see why that would be necessary, it's applicable to your > version bump only and it's a valid CVE identifier (even if reserved for the > moment) that can be looked up, putting the exact same CVE info in the > commit for the patch seems a bit redundant Well, in fact in this particular case, the CVE fix should be directly with the version bump, and indeed clarify in the commit log why it is together with the version bump. Also, QT6BASE_IGNORE_CVES variable will be needed in qt6base.mk. I'd say no need to resend the full series for this at this point. I'll try to apply some parts of it, and see if I have other review comments for the rest. Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From Alex.Michel at wiedemann-group.com Mon May 13 12:30:49 2024 From: Alex.Michel at wiedemann-group.com (Michel Alex) Date: Mon, 13 May 2024 12:30:49 +0000 Subject: [Buildroot] [PATCH v5 1/1] package/libzenoh-c: new package Message-ID: This package provides a C binding based on the main Zenoh implementation written in Rust. Because this lib does not provide any binaries or examples, and the cargo infra does not provide any possibility to disable the --bins option in cargo install step, we have to override the INSTALL_STAGING_CMDS and the INSTALL_TARGET_CMDS macros to prevent failing of the buildroot installation step. https://github.com/eclipse-zenoh/zenoh-c Signed-off-by: Alex Michel --- Changes v4 -> v5: - bump package to 0.11.0.2 Changes v3 -> v4: - wrapped long lines to 80 characters - use BR2_ENABLE_DEBUG variable instead of "release" path component - use RUSTC_TARGET_NAME variable instead of "*" path component - shared macro installs only the common set of files - INSTALL_TARGET_CMDS installs only the lib - INSTALL_STAGING_CMDS installs both the lib and include files Changes v2 -> v3: - bump package to 0.10.1-rc - set INSTALL_STAGING Changes v1 -> v2: - renamed zenoh-c to libzenoh-c - added myself to DEVELOPERS - fixed LICENSE - install shared libraries to staging and to target Signed-off-by: Alex Michel --- DEVELOPERS | 1 + package/Config.in | 1 + package/libzenoh-c/Config.in | 9 ++++++++ package/libzenoh-c/libzenoh-c.hash | 3 +++ package/libzenoh-c/libzenoh-c.mk | 35 ++++++++++++++++++++++++++++++ 5 files changed, 49 insertions(+) create mode 100644 package/libzenoh-c/Config.in create mode 100644 package/libzenoh-c/libzenoh-c.hash create mode 100644 package/libzenoh-c/libzenoh-c.mk diff --git a/DEVELOPERS b/DEVELOPERS index d653648718..930fdf8d3a 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -83,6 +83,7 @@ N: Alessandro Partesotti F: package/oatpp/ N: Alex Michel +F: package/libzenoh-c/ F: package/libzenoh-pico/ F: package/network-manager-openvpn/ diff --git a/package/Config.in b/package/Config.in index c29b4a5101..135e8f6bb6 100644 --- a/package/Config.in +++ b/package/Config.in @@ -2048,6 +2048,7 @@ menu "Networking" source "package/libwebsock/Config.in" source "package/libwebsockets/Config.in" source "package/libyang/Config.in" + source "package/libzenoh-c/Config.in" source "package/libzenoh-pico/Config.in" source "package/lksctp-tools/Config.in" source "package/mbuffer/Config.in" diff --git a/package/libzenoh-c/Config.in b/package/libzenoh-c/Config.in new file mode 100644 index 0000000000..d22807c047 --- /dev/null +++ b/package/libzenoh-c/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBZENOH_C + bool "libzenoh-c" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_RUSTC + help + This package provides a C binding based on the main + Zenoh implementation written in Rust. + + https://github.com/eclipse-zenoh/zenoh-c diff --git a/package/libzenoh-c/libzenoh-c.hash b/package/libzenoh-c/libzenoh-c.hash new file mode 100644 index 0000000000..969f9eed6b --- /dev/null +++ b/package/libzenoh-c/libzenoh-c.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 8a8058cb5277e36652cb4186f0a76b7555892eeaef4225b1f1aa556a1e77619f libzenoh-c-0.11.0.2.tar.gz +sha256 01a44774f7b1a453595c7c6d7f7308284ba6a1059dc49e14dad6647e1d44a338 LICENSE diff --git a/package/libzenoh-c/libzenoh-c.mk b/package/libzenoh-c/libzenoh-c.mk new file mode 100644 index 0000000000..5a340ba138 --- /dev/null +++ b/package/libzenoh-c/libzenoh-c.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# libzenoh-c +# +################################################################################ + +LIBZENOH_C_VERSION = 0.11.0.2 +LIBZENOH_C_SITE = $(call github,eclipse-zenoh,zenoh-c,$(LIBZENOH_C_VERSION)) +LIBZENOH_C_LICENSE = Apache-2.0 or EPL-2.0 +LIBZENOH_C_LICENSE_FILES = LICENSE +LIBZENOH_C_INSTALL_STAGING = YES + +ifeq ($(BR2_ENABLE_DEBUG),y) +LIBZENOH_C_LIB_LOCATION = $(@D)/target/$(RUSTC_TARGET_NAME)/debug +else +LIBZENOH_C_LIB_LOCATION = $(@D)/target/$(RUSTC_TARGET_NAME)/release +endif + +define LIBZENOH_C_INSTALL_FILES + $(INSTALL) -D -m 644 \ + $(LIBZENOH_C_LIB_LOCATION)/libzenohc.so \ + $(1)/usr/lib/libzenohc.so +endef + +define LIBZENOH_C_INSTALL_TARGET_CMDS + $(call LIBZENOH_C_INSTALL_FILES,$(TARGET_DIR)) +endef + +define LIBZENOH_C_INSTALL_STAGING_CMDS + $(call LIBZENOH_C_INSTALL_FILES,$(STAGING_DIR)) + mkdir -p $(STAGING_DIR)/usr/include/ + cp -dpfr $(@D)/include/* $(STAGING_DIR)/usr/include/ +endef + +$(eval $(cargo-package)) -- 2.34.1 From festevam at gmail.com Mon May 13 12:34:42 2024 From: festevam at gmail.com (Fabio Estevam) Date: Mon, 13 May 2024 09:34:42 -0300 Subject: [Buildroot] [PATCH] configs/freescale_imx93evk: Update to NXP lf-6.6.3-1.0.0 Message-ID: <20240513123442.213242-1-festevam@gmail.com> Update kernel, TF-A and U-Boot repos to the NXP lf-6.6.3-1.0.0 versions. Signed-off-by: Fabio Estevam --- configs/freescale_imx93evk_defconfig | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/configs/freescale_imx93evk_defconfig b/configs/freescale_imx93evk_defconfig index fa1696788464..f30bafd9a2c3 100644 --- a/configs/freescale_imx93evk_defconfig +++ b/configs/freescale_imx93evk_defconfig @@ -1,13 +1,13 @@ BR2_aarch64=y BR2_cortex_a55=y BR2_ARM_FPU_VFPV4D16=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y BR2_GLOBAL_PATCH_DIR="board/freescale/imx93evk/patches" BR2_TARGET_GENERIC_GETTY_PORT="ttyLP0" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/imx9-bootloader-prepare.sh board/freescale/common/imx/post-image.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,linux-imx,lf-6.1.55-2.2.0)/linux-imx-lf-6.1.55-2.2.0.tar.gz" +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,linux-imx,lf-6.6.3-1.0.0)/linux-imx-lf-6.6.3-1.0.0.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="imx_v8" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx93-11x11-evk" @@ -21,13 +21,13 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_ROOTFS_EXT2_SIZE="120M" BR2_TARGET_ARM_TRUSTED_FIRMWARE=y BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y -BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,imx-atf,lf-6.1.55-2.2.0)/imx-atf-lf-6.1.55-2.2.0.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,imx-atf,lf-6.6.3-1.0.0)/imx-atf-lf-6.6.3-1.0.0.tar.gz" BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx93" BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_TARBALL=y -BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,uboot-imx,lf-6.1.55-2.2.0)/uboot-imx-lf-6.1.55-2.2.0.tar.gz" +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,uboot-imx,lf-6.6.3-1.0.0)/uboot-imx-lf-6.6.3-1.0.0.tar.gz" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx93_11x11_evk" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_NEEDS_OPENSSL=y -- 2.34.1 From Alex.Michel at wiedemann-group.com Mon May 13 12:42:52 2024 From: Alex.Michel at wiedemann-group.com (Michel Alex) Date: Mon, 13 May 2024 12:42:52 +0000 Subject: [Buildroot] [PATCH 1/1] package/network-manager-openvpn: bump to version 1.11.0 Message-ID: https://download.gnome.org/sources/NetworkManager-openvpn/1.11/NetworkManager-openvpn-1.11.0.news Signed-off-by: Alex Michel --- package/network-manager-openvpn/network-manager-openvpn.hash | 4 ++-- package/network-manager-openvpn/network-manager-openvpn.mk | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/network-manager-openvpn/network-manager-openvpn.hash b/package/network-manager-openvpn/network-manager-openvpn.hash index 11fb28f8c8..59d03fae2a 100644 --- a/package/network-manager-openvpn/network-manager-openvpn.hash +++ b/package/network-manager-openvpn/network-manager-openvpn.hash @@ -1,4 +1,4 @@ -# From https://download.gnome.org/sources/NetworkManager-openvpn/1.10/NetworkManager-openvpn-1.10.2.sha256sum -sha256 62f0f2a8782221b923f212ac2a8ebbc1002efd6a90ee945dad4adfb56d076d21 NetworkManager-openvpn-1.10.2.tar.xz +# From https://download.gnome.org/sources/NetworkManager-openvpn/1.11/NetworkManager-openvpn-1.11.0.sha256sum +sha256 2128de06f91b33c13d63cdaa6e178bc1ca57fc770cde3bc7c24891f4d9824501 NetworkManager-openvpn-1.11.0.tar.xz # Locally computed sha256 c39e345d992dfba62db265f8c6d6ff1d90c61d92876635ae05adbfa2f45fff46 COPYING diff --git a/package/network-manager-openvpn/network-manager-openvpn.mk b/package/network-manager-openvpn/network-manager-openvpn.mk index ccc86e45f7..f39edf3209 100644 --- a/package/network-manager-openvpn/network-manager-openvpn.mk +++ b/package/network-manager-openvpn/network-manager-openvpn.mk @@ -4,8 +4,8 @@ # ################################################################################ -NETWORK_MANAGER_OPENVPN_VERSION_MAJOR = 1.10 -NETWORK_MANAGER_OPENVPN_VERSION = $(NETWORK_MANAGER_OPENVPN_VERSION_MAJOR).2 +NETWORK_MANAGER_OPENVPN_VERSION_MAJOR = 1.11 +NETWORK_MANAGER_OPENVPN_VERSION = $(NETWORK_MANAGER_OPENVPN_VERSION_MAJOR).0 NETWORK_MANAGER_OPENVPN_SOURCE = NetworkManager-openvpn-$(NETWORK_MANAGER_OPENVPN_VERSION).tar.xz NETWORK_MANAGER_OPENVPN_SITE = https://download.gnome.org/sources/NetworkManager-openvpn/$(NETWORK_MANAGER_OPENVPN_VERSION_MAJOR) NETWORK_MANAGER_OPENVPN_DEPENDENCIES = network-manager openvpn -- 2.34.1 From ps.report at gmx.net Mon May 13 09:19:46 2024 From: ps.report at gmx.net (Peter Seiderer) Date: Mon, 13 May 2024 11:19:46 +0200 Subject: [Buildroot] [PATCH v2 2/4] support/kconfig: bump to linux-v6.9-rc5 version In-Reply-To: <20240513091950.30116-1-ps.report@gmx.net> References: <20240513091950.30116-1-ps.report@gmx.net> Message-ID: <20240513091950.30116-2-ps.report@gmx.net> - update RAEDME.buildroot (add copy step for kconfig.new, update copy steps for *_shipped files - rebased 01-kconfig-kernel-to-buildroot.patch - rebased 06-br-build-system-integration.patch - updated 10-br-build-system.patch - removed 11-use-mktemp-for-lxdialog.patch (no longer applicable) - rebased 12-fix-glade-file-path.patch - rebased 14-support-out-of-tree-config.patch - rebased 16-fix-space-to-de-select-options.patch - removed 17-backport-kecho.patch (use complete Kbuild.include instead of backporting single parts) - rebased 18-merge-config.sh-create-temporary-files-in-tmp.patch - rebased 19-merge_config.sh-add-br2-external-support.patch - removed 20-merge_config.sh-Allow-to-define-config-prefix.patch (already upstream included) - removed 21-Avoid-false-positive-matches-from-comment-lines.patch (already upstream included) - removed 22-kconfig-lxdialog-fix-check-with-GCC14.patch (no longer applicable) - new 23-Revert-kconfig-allow-only-config-comment-and-if-insi.patch (revert to re-enable source statement inside of choice, as suggested by Yann E. MORIN, see [1]) [1] https://lore.kernel.org/buildroot/Zhdu7zT3FZl7sk1q at landeda/ Signed-off-by: Peter Seiderer --- Changes v1 -> v2: - no changes --- support/kconfig/Kbuild.include | 273 ++ support/kconfig/Makefile | 375 +- support/kconfig/Makefile.br | 10 +- support/kconfig/POTFILES.in | 12 - support/kconfig/README.buildroot | 9 +- support/kconfig/array_size.h | 11 + support/kconfig/check.sh | 14 - support/kconfig/conf.c | 562 ++- support/kconfig/confdata.c | 1358 +++--- support/kconfig/expr.c | 29 +- support/kconfig/expr.h | 49 +- support/kconfig/foo.h | 12 - support/kconfig/gconf-cfg.sh | 33 + support/kconfig/gconf.c | 100 +- support/kconfig/hashtable.h | 48 + support/kconfig/images.c | 34 +- support/kconfig/images.h | 33 + support/kconfig/internal.h | 21 + support/kconfig/kconf_id.c | 53 - support/kconfig/kxgettext.c | 235 - support/kconfig/lexer.l | 460 ++ support/kconfig/lexer.lex.c_shipped | 4103 +++++++++++++++++ support/kconfig/list.h | 254 +- support/kconfig/list_types.h | 17 + support/kconfig/lkc.h | 117 +- support/kconfig/lkc_proto.h | 33 +- support/kconfig/lxdialog/.gitignore | 4 - support/kconfig/lxdialog/BIG.FAT.WARNING | 2 +- support/kconfig/lxdialog/check-lxdialog.sh | 93 - support/kconfig/lxdialog/checklist.c | 26 +- support/kconfig/lxdialog/dialog.h | 76 +- support/kconfig/lxdialog/inputbox.c | 24 +- support/kconfig/lxdialog/menubox.c | 35 +- support/kconfig/lxdialog/textbox.c | 330 +- support/kconfig/lxdialog/util.c | 41 +- support/kconfig/lxdialog/yesno.c | 21 +- support/kconfig/mconf-cfg.sh | 55 + support/kconfig/mconf.c | 529 +-- support/kconfig/menu.c | 345 +- support/kconfig/merge_config.sh | 91 +- support/kconfig/mnconf-common.c | 53 + support/kconfig/mnconf-common.h | 18 + support/kconfig/nconf-cfg.sh | 53 + support/kconfig/nconf.c | 297 +- support/kconfig/nconf.gui.c | 329 +- support/kconfig/nconf.h | 62 +- support/kconfig/parser.tab.c_shipped | 2189 +++++++++ support/kconfig/parser.tab.h_shipped | 134 + support/kconfig/{zconf.y => parser.y} | 467 +- .../01-kconfig-kernel-to-buildroot.patch | 115 +- .../06-br-build-system-integration.patch | 103 +- .../kconfig/patches/10-br-build-system.patch | 66 +- .../patches/11-use-mktemp-for-lxdialog.patch | 17 - .../patches/12-fix-glade-file-path.patch | 14 +- .../14-support-out-of-tree-config.patch | 202 +- .../16-fix-space-to-de-select-options.patch | 19 +- .../kconfig/patches/17-backport-kecho.patch | 26 - ...fig.sh-create-temporary-files-in-tmp.patch | 19 +- ...e_config.sh-add-br2-external-support.patch | 24 +- ...fig.sh-Allow-to-define-config-prefix.patch | 31 - ...-positive-matches-from-comment-lines.patch | 32 - ...config-lxdialog-fix-check-with-GCC14.patch | 43 - ...llow-only-config-comment-and-if-insi.patch | 956 ++++ support/kconfig/patches/series | 6 +- support/kconfig/preprocess.c | 580 +++ support/kconfig/preprocess.h | 19 + support/kconfig/qconf-cfg.sh | 40 + support/kconfig/qconf.cc | 1199 ++--- support/kconfig/qconf.h | 163 +- support/kconfig/streamline_config.pl | 104 +- support/kconfig/symbol.c | 374 +- support/kconfig/util.c | 122 +- support/kconfig/zconf.l | 372 -- support/kconfig/zconf.lex.c_shipped | 2500 ---------- support/kconfig/zconf.tab.c_shipped | 2488 ---------- 75 files changed, 12875 insertions(+), 10288 deletions(-) create mode 100644 support/kconfig/Kbuild.include delete mode 100644 support/kconfig/POTFILES.in create mode 100644 support/kconfig/array_size.h delete mode 100755 support/kconfig/check.sh delete mode 100644 support/kconfig/foo.h create mode 100755 support/kconfig/gconf-cfg.sh create mode 100644 support/kconfig/hashtable.h create mode 100644 support/kconfig/images.h create mode 100644 support/kconfig/internal.h delete mode 100644 support/kconfig/kconf_id.c delete mode 100644 support/kconfig/kxgettext.c create mode 100644 support/kconfig/lexer.l create mode 100644 support/kconfig/lexer.lex.c_shipped create mode 100644 support/kconfig/list_types.h delete mode 100644 support/kconfig/lxdialog/.gitignore delete mode 100755 support/kconfig/lxdialog/check-lxdialog.sh create mode 100755 support/kconfig/mconf-cfg.sh create mode 100644 support/kconfig/mnconf-common.c create mode 100644 support/kconfig/mnconf-common.h create mode 100755 support/kconfig/nconf-cfg.sh create mode 100644 support/kconfig/parser.tab.c_shipped create mode 100644 support/kconfig/parser.tab.h_shipped rename support/kconfig/{zconf.y => parser.y} (56%) delete mode 100644 support/kconfig/patches/11-use-mktemp-for-lxdialog.patch delete mode 100644 support/kconfig/patches/17-backport-kecho.patch delete mode 100644 support/kconfig/patches/20-merge_config.sh-Allow-to-define-config-prefix.patch delete mode 100644 support/kconfig/patches/21-Avoid-false-positive-matches-from-comment-lines.patch delete mode 100644 support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch create mode 100644 support/kconfig/patches/23-Revert-kconfig-allow-only-config-comment-and-if-insi.patch create mode 100644 support/kconfig/preprocess.c create mode 100644 support/kconfig/preprocess.h create mode 100755 support/kconfig/qconf-cfg.sh delete mode 100644 support/kconfig/zconf.l delete mode 100644 support/kconfig/zconf.lex.c_shipped delete mode 100644 support/kconfig/zconf.tab.c_shipped diff --git a/support/kconfig/Kbuild.include b/support/kconfig/Kbuild.include new file mode 100644 index 0000000000..2f33187981 --- /dev/null +++ b/support/kconfig/Kbuild.include @@ -0,0 +1,273 @@ +# SPDX-License-Identifier: GPL-2.0 +#### +# kbuild: Generic definitions + +# Convenient variables +comma := , +quote := " +squote := ' +empty := +space := $(empty) $(empty) +space_escape := _-_SPACE_-_ +pound := \# +define newline + + +endef + +### +# Comparison macros. +# Usage: $(call test-lt, $(CONFIG_LLD_VERSION), 150000) +# +# Use $(intcmp ...) if supported. (Make >= 4.4) +# Otherwise, fall back to the 'test' shell command. +ifeq ($(intcmp 1,0,,,y),y) +test-ge = $(intcmp $(strip $1)0, $(strip $2)0,,y,y) +test-gt = $(intcmp $(strip $1)0, $(strip $2)0,,,y) +else +test-ge = $(shell test $(strip $1)0 -ge $(strip $2)0 && echo y) +test-gt = $(shell test $(strip $1)0 -gt $(strip $2)0 && echo y) +endif +test-le = $(call test-ge, $2, $1) +test-lt = $(call test-gt, $2, $1) + +### +# Name of target with a '.' as filename prefix. foo/bar.o => foo/.bar.o +dot-target = $(dir $@).$(notdir $@) + +### +# Name of target with a '.tmp_' as filename prefix. foo/bar.o => foo/.tmp_bar.o +tmp-target = $(dir $@).tmp_$(notdir $@) + +### +# The temporary file to save gcc -MMD generated dependencies must not +# contain a comma +depfile = $(subst $(comma),_,$(dot-target).d) + +### +# filename of target with directory and extension stripped +basetarget = $(basename $(notdir $@)) + +### +# real prerequisites without phony targets +real-prereqs = $(filter-out $(PHONY), $^) + +### +# Escape single quote for use in echo statements +escsq = $(subst $(squote),'\$(squote)',$1) + +### +# Quote a string to pass it to C files. foo => '"foo"' +stringify = $(squote)$(quote)$1$(quote)$(squote) + +### +# The path to Kbuild or Makefile. Kbuild has precedence over Makefile. +kbuild-dir = $(if $(filter /%,$(src)),$(src),$(srctree)/$(src)) +kbuild-file = $(or $(wildcard $(kbuild-dir)/Kbuild),$(kbuild-dir)/Makefile) + +### +# Read a file, replacing newlines with spaces +# +# Make 4.2 or later can read a file by using its builtin function. +ifneq ($(filter-out 3.% 4.0 4.1, $(MAKE_VERSION)),) +read-file = $(subst $(newline),$(space),$(file < $1)) +else +read-file = $(shell cat $1 2>/dev/null) +endif + +### +# Easy method for doing a status message + kecho := : + quiet_kecho := echo +silent_kecho := : +kecho := $($(quiet)kecho) + +### +# filechk is used to check if the content of a generated file is updated. +# Sample usage: +# +# filechk_sample = echo $(KERNELRELEASE) +# version.h: FORCE +# $(call filechk,sample) +# +# The rule defined shall write to stdout the content of the new file. +# The existing file will be compared with the new one. +# - If no file exist it is created +# - If the content differ the new file is used +# - If they are equal no change, and no timestamp update +define filechk + $(check-FORCE) + $(Q)set -e; \ + mkdir -p $(dir $@); \ + trap "rm -f $(tmp-target)" EXIT; \ + { $(filechk_$(1)); } > $(tmp-target); \ + if [ ! -r $@ ] || ! cmp -s $@ $(tmp-target); then \ + $(kecho) ' UPD $@'; \ + mv -f $(tmp-target) $@; \ + fi +endef + +### +# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build obj= +# Usage: +# $(Q)$(MAKE) $(build)=dir +build := -f $(srctree)/scripts/Makefile.build obj + +### +# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj= +# Usage: +# $(Q)$(MAKE) $(clean)=dir +clean := -f $(srctree)/scripts/Makefile.clean obj + +# pring log +# +# If quiet is "silent_", print nothing and sink stdout +# If quiet is "quiet_", print short log +# If quiet is empty, print short log and whole command +silent_log_print = exec >/dev/null; + quiet_log_print = $(if $(quiet_cmd_$1), echo ' $(call escsq,$(quiet_cmd_$1)$(why))';) + log_print = echo '$(pound) $(call escsq,$(or $(quiet_cmd_$1),cmd_$1 $@)$(why))'; \ + echo ' $(call escsq,$(cmd_$1))'; + +# Delete the target on interruption +# +# GNU Make automatically deletes the target if it has already been changed by +# the interrupted recipe. So, you can safely stop the build by Ctrl-C (Make +# will delete incomplete targets), and resume it later. +# +# However, this does not work when the stderr is piped to another program, like +# $ make >&2 | tee log +# Make dies with SIGPIPE before cleaning the targets. +# +# To address it, we clean the target in signal traps. +# +# Make deletes the target when it catches SIGHUP, SIGINT, SIGQUIT, SIGTERM. +# So, we cover them, and also SIGPIPE just in case. +# +# Of course, this is unneeded for phony targets. +delete-on-interrupt = \ + $(if $(filter-out $(PHONY), $@), \ + $(foreach sig, HUP INT QUIT TERM PIPE, \ + trap 'rm -f $@; trap - $(sig); kill -s $(sig) $$$$' $(sig);)) + +# print and execute commands +cmd = @$(if $(cmd_$(1)),set -e; $($(quiet)log_print) $(delete-on-interrupt) $(cmd_$(1)),:) + +### +# if_changed - execute command if any prerequisite is newer than +# target, or command line has changed +# if_changed_dep - as if_changed, but uses fixdep to reveal dependencies +# including used config symbols +# if_changed_rule - as if_changed but execute rule instead +# See Documentation/kbuild/makefiles.rst for more info + +ifneq ($(KBUILD_NOCMDDEP),1) +# Check if both commands are the same including their order. Result is empty +# string if equal. User may override this check using make KBUILD_NOCMDDEP=1 +# If the target does not exist, the *.cmd file should not be included so +# $(savedcmd_$@) gets empty. Then, target will be built even if $(newer-prereqs) +# happens to become empty. +cmd-check = $(filter-out $(subst $(space),$(space_escape),$(strip $(savedcmd_$@))), \ + $(subst $(space),$(space_escape),$(strip $(cmd_$1)))) +else +# We still need to detect missing targets. +cmd-check = $(if $(strip $(savedcmd_$@)),,1) +endif + +# Replace >$< with >$$< to preserve $ when reloading the .cmd file +# (needed for make) +# Replace >#< with >$(pound)< to avoid starting a comment in the .cmd file +# (needed for make) +# Replace >'< with >'\''< to be able to enclose the whole string in '...' +# (needed for the shell) +make-cmd = $(call escsq,$(subst $(pound),$$(pound),$(subst $$,$$$$,$(cmd_$(1))))) + +# Find any prerequisites that are newer than target or that do not exist. +# PHONY targets skipped in both cases. +# If there is no prerequisite other than phony targets, $(newer-prereqs) becomes +# empty even if the target does not exist. cmd-check saves this corner case. +newer-prereqs = $(filter-out $(PHONY),$?) + +# It is a typical mistake to forget the FORCE prerequisite. Check it here so +# no more breakage will slip in. +check-FORCE = $(if $(filter FORCE, $^),,$(warning FORCE prerequisite is missing)) + +if-changed-cond = $(newer-prereqs)$(cmd-check)$(check-FORCE) + +# Execute command if command has changed or prerequisite(s) are updated. +if_changed = $(if $(if-changed-cond),$(cmd_and_savecmd),@:) + +cmd_and_savecmd = \ + $(cmd); \ + printf '%s\n' 'savedcmd_$@ := $(make-cmd)' > $(dot-target).cmd + +# Execute the command and also postprocess generated .d dependencies file. +if_changed_dep = $(if $(if-changed-cond),$(cmd_and_fixdep),@:) + +cmd_and_fixdep = \ + $(cmd); \ + scripts/basic/fixdep $(depfile) $@ '$(make-cmd)' > $(dot-target).cmd;\ + rm -f $(depfile) + +# Usage: $(call if_changed_rule,foo) +# Will check if $(cmd_foo) or any of the prerequisites changed, +# and if so will execute $(rule_foo). +if_changed_rule = $(if $(if-changed-cond),$(rule_$(1)),@:) + +### +# why - tell why a target got built +# enabled by make V=2 +# Output (listed in the order they are checked): +# (1) - due to target is PHONY +# (2) - due to target missing +# (3) - due to: file1.h file2.h +# (4) - due to command line change +# (5) - due to missing .cmd file +# (6) - due to target not in $(targets) +# (1) PHONY targets are always build +# (2) No target, so we better build it +# (3) Prerequisite is newer than target +# (4) The command line stored in the file named dir/.target.cmd +# differed from actual command line. This happens when compiler +# options changes +# (5) No dir/.target.cmd file (used to store command line) +# (6) No dir/.target.cmd file and target not listed in $(targets) +# This is a good hint that there is a bug in the kbuild file +ifneq ($(findstring 2, $(KBUILD_VERBOSE)),) +_why = \ + $(if $(filter $@, $(PHONY)),- due to target is PHONY, \ + $(if $(wildcard $@), \ + $(if $(newer-prereqs),- due to: $(newer-prereqs), \ + $(if $(cmd-check), \ + $(if $(savedcmd_$@),- due to command line change, \ + $(if $(filter $@, $(targets)), \ + - due to missing .cmd file, \ + - due to $(notdir $@) not in $$(targets) \ + ) \ + ) \ + ) \ + ), \ + - due to target missing \ + ) \ + ) + +why = $(space)$(strip $(_why)) +endif + +############################################################################### + +# delete partially updated (i.e. corrupted) files on error +.DELETE_ON_ERROR: + +# do not delete intermediate files automatically +# +# .NOTINTERMEDIATE is more correct, but only available on newer Make versions. +# Make 4.4 introduced .NOTINTERMEDIATE, and it appears in .FEATURES, but the +# global .NOTINTERMEDIATE does not work. We can use it on Make > 4.4. +# Use .SECONDARY for older Make versions, but "newer-prereq" cannot detect +# deleted files. +ifneq ($(and $(filter notintermediate, $(.FEATURES)),$(filter-out 4.4,$(MAKE_VERSION))),) +.NOTINTERMEDIATE: +else +.SECONDARY: +endif diff --git a/support/kconfig/Makefile b/support/kconfig/Makefile index b0bcc2627a..f5f934d644 100644 --- a/support/kconfig/Makefile +++ b/support/kconfig/Makefile @@ -3,14 +3,10 @@ # Kernel configuration targets # These targets are used from top-level makefile -PHONY += xconfig gconfig menuconfig config syncconfig update-po-config \ - localmodconfig localyesconfig +HOSTPKG_CONFIG = pkg-config +export HOSTPKG_CONFIG -# Easy method for doing a status message - kecho := : - quiet_kecho := echo -silent_kecho := : -kecho := $($(quiet)kecho) +include $(src)/Kbuild.include ifdef KBUILD_KCONFIG Kconfig := $(KBUILD_KCONFIG) @@ -18,103 +14,87 @@ else Kconfig := Kconfig endif +ifndef KBUILD_DEFCONFIG +KBUILD_DEFCONFIG := defconfig +endif + ifeq ($(quiet),silent_) silent := -s endif -# We need this, in case the user has it in its environment -unexport CONFIG_ +export KCONFIG_DEFCONFIG_LIST := +ifndef cross_compiling +kernel-release := $(shell uname -r) +KCONFIG_DEFCONFIG_LIST += \ + /lib/modules/$(kernel-release)/.config \ + /etc/kernel-config \ + /boot/config-$(kernel-release) +endif +KCONFIG_DEFCONFIG_LIST += arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) -xconfig: $(obj)/qconf - $< $(silent) $(Kconfig) +ifneq ($(findstring c, $(KBUILD_EXTRA_WARN)),) +export KCONFIG_WARN_UNKNOWN_SYMBOLS=1 +endif -gconfig: $(obj)/gconf - $< $(silent) $(Kconfig) +ifneq ($(findstring e, $(KBUILD_EXTRA_WARN)),) +export KCONFIG_WERROR=1 +endif -menuconfig: $(obj)/mconf - $< $(silent) $(Kconfig) +# We need this, in case the user has it in its environment +unexport CONFIG_ -config: $(obj)/conf - $< $(silent) --oldaskconfig $(Kconfig) +config-prog := conf +menuconfig-prog := mconf +nconfig-prog := nconf +gconfig-prog := gconf +xconfig-prog := qconf -nconfig: $(obj)/nconf - $< $(silent) $(Kconfig) +define config_rule +PHONY += $(1) +$(1): $(obj)/$($(1)-prog) + $(Q)$$< $(silent) $(Kconfig) -# This has become an internal implementation detail and is now deprecated -# for external use. -syncconfig: $(obj)/conf - $(Q)mkdir -p include/config include/generated - $< $(silent) --$@ $(Kconfig) +PHONY += build_$(1) +build_$(1): $(obj)/$($(1)-prog) +endef +$(foreach c, config menuconfig nconfig gconfig xconfig, $(eval $(call config_rule,$(c)))) + +PHONY += localmodconfig localyesconfig localyesconfig localmodconfig: $(obj)/conf - $(Q)mkdir -p include/config include/generated - $(Q)perl $(srctree)/$(src)/streamline_config.pl --$@ $(srctree) $(Kconfig) > .tmp.config - $(Q)if [ -f .config ]; then \ - cmp -s .tmp.config .config || \ - (mv -f .config .config.old.1; \ - mv -f .tmp.config .config; \ - $< $(silent) --oldconfig $(Kconfig); \ - mv -f .config.old.1 .config.old) \ - else \ - mv -f .tmp.config .config; \ - $< $(silent) --oldconfig $(Kconfig); \ + $(Q)$(PERL) $(srctree)/$(src)/streamline_config.pl --$@ $(srctree) $(Kconfig) > .tmp.config + $(Q)if [ -f .config ]; then \ + cmp -s .tmp.config .config || \ + (mv -f .config .config.old.1; \ + mv -f .tmp.config .config; \ + $< $(silent) --oldconfig $(Kconfig); \ + mv -f .config.old.1 .config.old) \ + else \ + mv -f .tmp.config .config; \ + $< $(silent) --oldconfig $(Kconfig); \ fi $(Q)rm -f .tmp.config -# Create new linux.pot file -# Adjust charset to UTF-8 in .po file to accept UTF-8 in Kconfig files -update-po-config: $(obj)/kxgettext $(obj)/gconf.glade.h - $(Q)$(kecho) " GEN config.pot" - $(Q)xgettext --default-domain=linux \ - --add-comments --keyword=_ --keyword=N_ \ - --from-code=UTF-8 \ - --files-from=$(srctree)/scripts/kconfig/POTFILES.in \ - --directory=$(srctree) --directory=$(objtree) \ - --output $(obj)/config.pot - $(Q)sed -i s/CHARSET/UTF-8/ $(obj)/config.pot - $(Q)(for i in `ls $(srctree)/arch/*/Kconfig \ - $(srctree)/arch/*/um/Kconfig`; \ - do \ - $(kecho) " GEN $$i"; \ - $(obj)/kxgettext $$i \ - >> $(obj)/config.pot; \ - done ) - $(Q)$(kecho) " GEN linux.pot" - $(Q)msguniq --sort-by-file --to-code=UTF-8 $(obj)/config.pot \ - --output $(obj)/linux.pot - $(Q)rm -f $(obj)/config.pot - # These targets map 1:1 to the commandline options of 'conf' +# +# Note: +# syncconfig has become an internal implementation detail and is now +# deprecated for external use simple-targets := oldconfig allnoconfig allyesconfig allmodconfig \ - alldefconfig randconfig listnewconfig olddefconfig + alldefconfig randconfig listnewconfig olddefconfig syncconfig \ + helpnewconfig yes2modconfig mod2yesconfig mod2noconfig + PHONY += $(simple-targets) $(simple-targets): $(obj)/conf - $< $(silent) --$@ $(Kconfig) - -PHONY += oldnoconfig silentoldconfig savedefconfig defconfig - -# oldnoconfig is an alias of olddefconfig, because people already are dependent -# on its behavior (sets new symbols to their default value but not 'n') with the -# counter-intuitive name. -oldnoconfig: olddefconfig - @echo " WARNING: \"oldnoconfig\" target will be removed after Linux 4.19" - @echo " Please use \"olddefconfig\" instead, which is an alias." + $(Q)$< $(silent) --$@ $(Kconfig) -# We do not expect manual invokcation of "silentoldcofig" (or "syncconfig"). -silentoldconfig: syncconfig - @echo " WARNING: \"silentoldconfig\" has been renamed to \"syncconfig\"" - @echo " and is now an internal implementation detail." - @echo " What you want is probably \"oldconfig\"." - @echo " \"silentoldconfig\" will be removed after Linux 4.19" +PHONY += savedefconfig defconfig savedefconfig: $(obj)/conf - $< $(silent) --$@=defconfig $(Kconfig) + $(Q)$< $(silent) --$@=defconfig $(Kconfig) defconfig: $(obj)/conf -ifeq ($(KBUILD_DEFCONFIG),) - $< $(silent) --defconfig $(Kconfig) -else ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)),) @$(kecho) "*** Default configuration is based on '$(KBUILD_DEFCONFIG)'" $(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) $(Kconfig) @@ -122,49 +102,45 @@ else @$(kecho) "*** Default configuration is based on target '$(KBUILD_DEFCONFIG)'" $(Q)$(MAKE) -f $(srctree)/Makefile $(KBUILD_DEFCONFIG) endif -endif %_defconfig: $(obj)/conf $(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig) -configfiles=$(wildcard $(srctree)/kernel/configs/$@ $(srctree)/arch/$(SRCARCH)/configs/$@) +configfiles = $(wildcard $(srctree)/kernel/configs/$(1) $(srctree)/arch/$(SRCARCH)/configs/$(1)) +all-config-fragments = $(call configfiles,*.config) +config-fragments = $(call configfiles,$@) %.config: $(obj)/conf - $(if $(call configfiles),, $(error No configuration exists for this target on this architecture)) - $(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh -m .config $(configfiles) - +$(Q)yes "" | $(MAKE) -f $(srctree)/Makefile oldconfig - -PHONY += kvmconfig -kvmconfig: kvm_guest.config - @: - -PHONY += xenconfig -xenconfig: xen.config - @: + $(if $(config-fragments),, $(error $@ fragment does not exists on this architecture)) + $(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh -m $(KCONFIG_CONFIG) $(config-fragments) + $(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig PHONY += tinyconfig tinyconfig: - $(Q)$(MAKE) -f $(srctree)/Makefile allnoconfig tiny.config + $(Q)KCONFIG_ALLCONFIG=kernel/configs/tiny-base.config $(MAKE) -f $(srctree)/Makefile allnoconfig + $(Q)$(MAKE) -f $(srctree)/Makefile tiny.config # CHECK: -o cache_dir= working? PHONY += testconfig testconfig: $(obj)/conf - $(PYTHON3) -B -m pytest $(srctree)/$(src)/tests \ + $(Q)$(PYTHON3) -B -m pytest $(srctree)/$(src)/tests \ -o cache_dir=$(abspath $(obj)/tests/.cache) \ $(if $(findstring 1,$(KBUILD_VERBOSE)),--capture=no) -clean-dirs += tests/.cache +clean-files += tests/.cache # Help text used by make help help: + @echo 'Configuration targets:' @echo ' config - Update current config utilising a line-oriented program' - @echo ' nconfig - Update current config utilising a ncurses menu based' - @echo ' program' + @echo ' nconfig - Update current config utilising a ncurses menu based program' @echo ' menuconfig - Update current config utilising a menu based program' @echo ' xconfig - Update current config utilising a Qt based front-end' @echo ' gconfig - Update current config utilising a GTK+ based front-end' @echo ' oldconfig - Update current config utilising a provided .config as base' @echo ' localmodconfig - Update current config disabling modules not loaded' + @echo ' except those preserved by LMC_KEEP environment variable' @echo ' localyesconfig - Update current config converting local mods to core' + @echo ' except those preserved by LMC_KEEP environment variable' @echo ' defconfig - New config with default from ARCH supplied defconfig' @echo ' savedefconfig - Save current config as ./defconfig (minimal config)' @echo ' allnoconfig - New config where all options are answered with no' @@ -172,171 +148,100 @@ help: @echo ' allmodconfig - New config selecting modules when possible' @echo ' alldefconfig - New config with all symbols set to default' @echo ' randconfig - New config with random answer to all options' + @echo ' yes2modconfig - Change answers from yes to mod if possible' + @echo ' mod2yesconfig - Change answers from mod to yes if possible' + @echo ' mod2noconfig - Change answers from mod to no if possible' @echo ' listnewconfig - List new options' + @echo ' helpnewconfig - List new options and help text' @echo ' olddefconfig - Same as oldconfig but sets new symbols to their' @echo ' default value without prompting' - @echo ' kvmconfig - Enable additional options for kvm guest kernel support' - @echo ' xenconfig - Enable additional options for xen dom0 and guest kernel support' @echo ' tinyconfig - Configure the tiniest possible kernel' - -# lxdialog stuff -check-lxdialog := $(srctree)/$(src)/lxdialog/check-lxdialog.sh - -# Use recursively expanded variables so we do not call gcc unless -# we really need to do so. (Do not call gcc as part of make mrproper) -HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags) \ - -DLOCALE + @echo ' testconfig - Run Kconfig unit tests (requires python3 and pytest)' + @echo '' + @echo 'Configuration topic targets:' + @$(foreach f, $(all-config-fragments), \ + if help=$$(grep -m1 '^# Help: ' $(f)); then \ + printf ' %-25s - %s\n' '$(notdir $(f))' "$${help#*: }"; \ + fi;) # =========================================================================== -# Shared Makefile for the various kconfig executables: -# conf: Used for defconfig, oldconfig and related targets -# nconf: Used for the nconfig target. -# Utilizes ncurses -# mconf: Used for the menuconfig target -# Utilizes the lxdialog package -# qconf: Used for the xconfig target -# Based on Qt which needs to be installed to compile it -# gconf: Used for the gconfig target -# Based on GTK+ which needs to be installed to compile it # object files used by all kconfig flavours +common-objs := confdata.o expr.o lexer.lex.o menu.o parser.tab.o \ + preprocess.o symbol.o util.o -lxdialog := lxdialog/checklist.o lxdialog/util.o lxdialog/inputbox.o -lxdialog += lxdialog/textbox.o lxdialog/yesno.o lxdialog/menubox.o - -conf-objs := conf.o zconf.tab.o -mconf-objs := mconf.o zconf.tab.o $(lxdialog) -nconf-objs := nconf.o zconf.tab.o nconf.gui.o -kxgettext-objs := kxgettext.o zconf.tab.o -qconf-cxxobjs := qconf.o -qconf-objs := zconf.tab.o -gconf-objs := gconf.o zconf.tab.o +$(obj)/lexer.lex.o: $(obj)/parser.tab.h +HOSTCFLAGS_lexer.lex.o := -I $(srctree)/$(src) +HOSTCFLAGS_parser.tab.o := -I $(srctree)/$(src) -hostprogs-y := conf +# conf: Used for defconfig, oldconfig and related targets +hostprogs += conf +conf-objs := conf.o $(common-objs) +# nconf: Used for the nconfig target based on ncurses ifeq ($(MAKECMDGOALS),nconf) - hostprogs-y += nconf -endif - -ifeq ($(MAKECMDGOALS),mconf) - hostprogs-y += mconf -endif +hostprogs += nconf +nconf-objs := nconf.o nconf.gui.o mnconf-common.o $(common-objs) -ifeq ($(MAKECMDGOALS),update-po-config) - hostprogs-y += kxgettext -endif +HOSTLDLIBS_nconf = $(call read-file, $(obj)/nconf-libs) +HOSTCFLAGS_nconf.o = $(call read-file, $(obj)/nconf-cflags) +HOSTCFLAGS_nconf.gui.o = $(call read-file, $(obj)/nconf-cflags) -ifeq ($(MAKECMDGOALS),qconf) - qconf-target := 1 +$(obj)/nconf: | $(obj)/nconf-libs +$(obj)/nconf.o $(obj)/nconf.gui.o: | $(obj)/nconf-cflags endif -ifeq ($(MAKECMDGOALS),gconf) - gconf-target := 1 -endif +# mconf: Used for the menuconfig target based on lxdialog +ifeq ($(MAKECMDGOALS),mconf) +hostprogs += mconf +lxdialog := $(addprefix lxdialog/, \ + checklist.o inputbox.o menubox.o textbox.o util.o yesno.o) +mconf-objs := mconf.o $(lxdialog) mnconf-common.o $(common-objs) -ifeq ($(qconf-target),1) - hostprogs-y += qconf -endif +HOSTLDLIBS_mconf = $(call read-file, $(obj)/mconf-libs) +$(foreach f, mconf.o $(lxdialog), \ + $(eval HOSTCFLAGS_$f = $$(call read-file, $(obj)/mconf-cflags))) -ifeq ($(gconf-target),1) - hostprogs-y += gconf +$(obj)/mconf: | $(obj)/mconf-libs +$(addprefix $(obj)/, mconf.o $(lxdialog)): | $(obj)/mconf-cflags endif -targets += zconf.lex.c -clean-files := qconf.moc .tmp_qtcheck .tmp_gtkcheck -clean-files += gconf.glade.h -clean-files += config.pot linux.pot - -# Check that we have the required ncurses stuff installed for lxdialog (menuconfig) -PHONY += $(obj)/dochecklxdialog -$(addprefix $(obj)/, mconf.o $(lxdialog)): $(obj)/dochecklxdialog -$(obj)/dochecklxdialog: - $(Q)$(CONFIG_SHELL) $(check-lxdialog) -check $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTLOADLIBES_mconf) - -always := dochecklxdialog - -# Add environment specific flags -HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(srctree)/$(src)/check.sh $(HOSTCC) $(HOSTCFLAGS)) -HOST_EXTRACXXFLAGS += $(shell $(CONFIG_SHELL) $(srctree)/$(src)/check.sh $(HOSTCXX) $(HOSTCXXFLAGS)) - -# generated files seem to need this to find local include files -HOSTCFLAGS_zconf.lex.o := -I$(src) -HOSTCFLAGS_zconf.tab.o := -I$(src) - -HOSTLOADLIBES_qconf = $(KC_QT_LIBS) -HOSTCXXFLAGS_qconf.o = $(KC_QT_CFLAGS) +# qconf: Used for the xconfig target based on Qt +ifeq ($(MAKECMDGOALS),qconf) +hostprogs += qconf +qconf-cxxobjs := qconf.o qconf-moc.o +qconf-objs := images.o $(common-objs) -HOSTLOADLIBES_gconf = `pkg-config --libs gtk+-2.0 gmodule-2.0 libglade-2.0` -HOSTCFLAGS_gconf.o = `pkg-config --cflags gtk+-2.0 gmodule-2.0 libglade-2.0` \ - -Wno-missing-prototypes +HOSTLDLIBS_qconf = $(call read-file, $(obj)/qconf-libs) +HOSTCXXFLAGS_qconf.o = -std=c++11 -fPIC $(call read-file, $(obj)/qconf-cflags) +HOSTCXXFLAGS_qconf-moc.o = -std=c++11 -fPIC $(call read-file, $(obj)/qconf-cflags) +$(obj)/qconf: | $(obj)/qconf-libs +$(obj)/qconf.o $(obj)/qconf-moc.o: | $(obj)/qconf-cflags -HOSTLOADLIBES_mconf = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC)) +quiet_cmd_moc = MOC $@ + cmd_moc = $(call read-file, $(obj)/qconf-bin)/moc $< -o $@ -HOSTLOADLIBES_nconf = $(shell \ - pkg-config --libs menuw panelw ncursesw 2>/dev/null \ - || pkg-config --libs menu panel ncurses 2>/dev/null \ - || echo "-lmenu -lpanel -lncurses" ) -$(obj)/qconf.o: $(obj)/.tmp_qtcheck +$(obj)/qconf-moc.cc: $(src)/qconf.h FORCE | $(obj)/qconf-bin + $(call if_changed,moc) -ifeq ($(MAKECMDGOALS),qconf) -$(obj)/.tmp_qtcheck: $(src)/Makefile --include $(obj)/.tmp_qtcheck - -# Qt needs some extra effort... -$(obj)/.tmp_qtcheck: - @set -e; $(kecho) " CHECK qt"; \ - if pkg-config --exists Qt5Core; then \ - cflags="-std=c++11 -fPIC `pkg-config --cflags Qt5Core Qt5Gui Qt5Widgets`"; \ - libs=`pkg-config --libs Qt5Core Qt5Gui Qt5Widgets`; \ - moc=`pkg-config --variable=host_bins Qt5Core`/moc; \ - elif pkg-config --exists QtCore; then \ - cflags=`pkg-config --cflags QtCore QtGui`; \ - libs=`pkg-config --libs QtCore QtGui`; \ - moc=`pkg-config --variable=moc_location QtCore`; \ - else \ - echo >&2 "*"; \ - echo >&2 "* Could not find Qt via pkg-config."; \ - echo >&2 "* Please install either Qt 4.8 or 5.x. and make sure it's in PKG_CONFIG_PATH"; \ - echo >&2 "*"; \ - exit 1; \ - fi; \ - echo "KC_QT_CFLAGS=$$cflags" > $@; \ - echo "KC_QT_LIBS=$$libs" >> $@; \ - echo "KC_QT_MOC=$$moc" >> $@ +targets += qconf-moc.cc endif +# gconf: Used for the gconfig target based on GTK+ ifeq ($(MAKECMDGOALS),gconf) -$(obj)/gconf.o: $(obj)/.tmp_gtkcheck --include $(obj)/.tmp_gtkcheck - -# GTK+ needs some extra effort, too... -$(obj)/.tmp_gtkcheck: - @if `pkg-config --exists gtk+-2.0 gmodule-2.0 libglade-2.0`; then \ - if `pkg-config --atleast-version=2.0.0 gtk+-2.0`; then \ - touch $@; \ - else \ - echo >&2 "*"; \ - echo >&2 "* GTK+ is present but version >= 2.0.0 is required."; \ - echo >&2 "*"; \ - false; \ - fi \ - else \ - echo >&2 "*"; \ - echo >&2 "* Unable to find the GTK+ installation. Please make sure that"; \ - echo >&2 "* the GTK+ 2.0 development package is correctly installed..."; \ - echo >&2 "* You need gtk+-2.0, glib-2.0 and libglade-2.0."; \ - echo >&2 "*"; \ - false; \ - fi -endif +hostprogs += gconf +gconf-objs := gconf.o images.o $(common-objs) -$(obj)/zconf.tab.o: $(obj)/zconf.lex.c +HOSTLDLIBS_gconf = $(call read-file, $(obj)/gconf-libs) +HOSTCFLAGS_gconf.o = $(call read-file, $(obj)/gconf-cflags) + +$(obj)/gconf: | $(obj)/gconf-libs +$(obj)/gconf.o: | $(obj)/gconf-cflags +endif -$(obj)/qconf.o: $(obj)/qconf.moc +# check if necessary packages are available, and configure build flags +cmd_conf_cfg = $(src)/$< $(addprefix $(obj)/$*conf-, cflags libs bin); touch $(obj)/$*conf-bin -$(obj)/%.moc: $(src)/%.h $(obj)/.tmp_qtcheck - $(KC_QT_MOC) -i $< -o $@ +$(obj)/%conf-cflags $(obj)/%conf-libs $(obj)/%conf-bin: $(src)/%conf-cfg.sh + $(call cmd,conf_cfg) -# Extract gconf menu items for i18n support -$(obj)/gconf.glade.h: $(obj)/gconf.glade - $(Q)intltool-extract --type=gettext/glade --srcdir=$(srctree) \ - $(obj)/gconf.glade +clean-files += *conf-cflags *conf-libs *conf-bin diff --git a/support/kconfig/Makefile.br b/support/kconfig/Makefile.br index 41c5ce165d..d163256846 100644 --- a/support/kconfig/Makefile.br +++ b/support/kconfig/Makefile.br @@ -5,12 +5,11 @@ srctree := . obj ?= . include Makefile -#HOSTCFLAGS+=-Dinline="" -include foo.h -include $(obj)/.depend $(obj)/.depend: $(wildcard *.h *.c) $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) -MM *.c > $@ 2>/dev/null || : -__hostprogs := $(sort $(hostprogs-y) $(hostprogs-m)) +__hostprogs := $(sort $(hostprogs)) host-csingle := $(foreach m,$(__hostprogs),$(if $($(m)-objs),,$(m))) host-cmulti := $(foreach m,$(__hostprogs),\ $(if $($(m)-cxxobjs),,$(if $($(m)-objs),$(m)))) @@ -25,10 +24,10 @@ $(host-csingle): %: %.c $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< -o $(obj)/$@ $(host-cmulti): %: $(host-cobjs) $(host-cshlib) - $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLDLIBS_$(@F)) -o $(obj)/$@ $(host-cxxmulti): %: $(host-cxxobjs) $(host-cobjs) $(host-cshlib) - $(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ + $(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLDLIBS_$(@F)) -o $(obj)/$@ $(obj)/%.o: %.c $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) -c $< -o $@ @@ -39,6 +38,9 @@ $(obj)/%.o: $(obj)/%.c $(obj)/%.o: %.cc $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$(@F)) -c $< -o $@ +$(obj)/%.o: $(obj)/%.cc + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$(@F)) -c $< -o $@ + $(obj)/%:: $(src)/%_shipped $(Q)cat $< > $@ diff --git a/support/kconfig/POTFILES.in b/support/kconfig/POTFILES.in deleted file mode 100644 index 9674573969..0000000000 --- a/support/kconfig/POTFILES.in +++ /dev/null @@ -1,12 +0,0 @@ -scripts/kconfig/lxdialog/checklist.c -scripts/kconfig/lxdialog/inputbox.c -scripts/kconfig/lxdialog/menubox.c -scripts/kconfig/lxdialog/textbox.c -scripts/kconfig/lxdialog/util.c -scripts/kconfig/lxdialog/yesno.c -scripts/kconfig/mconf.c -scripts/kconfig/conf.c -scripts/kconfig/confdata.c -scripts/kconfig/gconf.c -scripts/kconfig/gconf.glade.h -scripts/kconfig/qconf.cc diff --git a/support/kconfig/README.buildroot b/support/kconfig/README.buildroot index 76808f85b4..82bb855d01 100644 --- a/support/kconfig/README.buildroot +++ b/support/kconfig/README.buildroot @@ -3,10 +3,13 @@ to suit Buildroot. To update: cp -r /usr/src/linux/scripts/kconfig support/kconfig.new + cp /usr/src/linux/scripts/Kbuild.include support/kconfig.new cd support/kconfig.new - # zconf.lex.c and zconf.tab.c needs to be generated by 'make menuconfig' - mv zconf.lex.c zconf.lex.c_shipped - mv zconf.tab.c zconf.tab.c_shipped + # lexer.lex.c, parser.tab.c and parser.tab.h needs to be generated + # by 'make menuconfig' + mv lexer.lex.c lexer.lex.c_shipped + mv parser.tab.c parser.tab.c_shipped + mv parser.tab.h parser.tab.h_shipped rm -rf tests/ cp -a ../kconfig/patches ../kconfig/README.buildroot ../kconfig/.gitignore . quilt push -a diff --git a/support/kconfig/array_size.h b/support/kconfig/array_size.h new file mode 100644 index 0000000000..26ba78d867 --- /dev/null +++ b/support/kconfig/array_size.h @@ -0,0 +1,11 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef ARRAY_SIZE_H +#define ARRAY_SIZE_H + +/** + * ARRAY_SIZE - get the number of elements in array @arr + * @arr: array to be sized + */ +#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) + +#endif /* ARRAY_SIZE_H */ diff --git a/support/kconfig/check.sh b/support/kconfig/check.sh deleted file mode 100755 index 97f0fee7d1..0000000000 --- a/support/kconfig/check.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Needed for systems without gettext -$* -x c -o /dev/null - > /dev/null 2>&1 << EOF -#include -int main() -{ - gettext(""); - return 0; -} -EOF -if [ ! "$?" -eq "0" ]; then - echo -DKBUILD_NO_NLS; -fi diff --git a/support/kconfig/conf.c b/support/kconfig/conf.c index 2d7a7ac437..965bb40c50 100644 --- a/support/kconfig/conf.c +++ b/support/kconfig/conf.c @@ -1,9 +1,8 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ -#include #include #include #include @@ -12,10 +11,10 @@ #include #include #include -#include #include #include +#include "internal.h" #include "lkc.h" static void conf(struct menu *menu); @@ -33,10 +32,14 @@ enum input_mode { defconfig, savedefconfig, listnewconfig, + helpnewconfig, olddefconfig, + yes2modconfig, + mod2yesconfig, + mod2noconfig, }; static enum input_mode input_mode = oldaskconfig; - +static int input_mode_opt; static int indent = 1; static int tty_stdio; static int sync_kconfig; @@ -81,17 +84,245 @@ static void xfgets(char *str, int size, FILE *in) printf("%s", str); } -static int conf_askvalue(struct symbol *sym, const char *def) +static void set_randconfig_seed(void) +{ + unsigned int seed; + char *env; + bool seed_set = false; + + env = getenv("KCONFIG_SEED"); + if (env && *env) { + char *endp; + + seed = strtol(env, &endp, 0); + if (*endp == '\0') + seed_set = true; + } + + if (!seed_set) { + struct timeval now; + + /* + * Use microseconds derived seed, compensate for systems where it may + * be zero. + */ + gettimeofday(&now, NULL); + seed = (now.tv_sec + 1) * (now.tv_usec + 1); + } + + printf("KCONFIG_SEED=0x%X\n", seed); + srand(seed); +} + +static bool randomize_choice_values(struct symbol *csym) +{ + struct property *prop; + struct symbol *sym; + struct expr *e; + int cnt, def; + + /* + * If choice is mod then we may have more items selected + * and if no then no-one. + * In both cases stop. + */ + if (csym->curr.tri != yes) + return false; + + prop = sym_get_choice_prop(csym); + + /* count entries in choice block */ + cnt = 0; + expr_list_for_each_sym(prop->expr, e, sym) + cnt++; + + /* + * find a random value and set it to yes, + * set the rest to no so we have only one set + */ + def = rand() % cnt; + + cnt = 0; + expr_list_for_each_sym(prop->expr, e, sym) { + if (def == cnt++) { + sym->def[S_DEF_USER].tri = yes; + csym->def[S_DEF_USER].val = sym; + } else { + sym->def[S_DEF_USER].tri = no; + } + sym->flags |= SYMBOL_DEF_USER; + /* clear VALID to get value calculated */ + sym->flags &= ~SYMBOL_VALID; + } + csym->flags |= SYMBOL_DEF_USER; + /* clear VALID to get value calculated */ + csym->flags &= ~SYMBOL_VALID; + + return true; +} + +enum conf_def_mode { + def_default, + def_yes, + def_mod, + def_no, + def_random +}; + +static bool conf_set_all_new_symbols(enum conf_def_mode mode) +{ + struct symbol *sym, *csym; + int cnt; + /* + * can't go as the default in switch-case below, otherwise gcc whines + * about -Wmaybe-uninitialized + */ + int pby = 50; /* probability of bool = y */ + int pty = 33; /* probability of tristate = y */ + int ptm = 33; /* probability of tristate = m */ + bool has_changed = false; + + if (mode == def_random) { + int n, p[3]; + char *env = getenv("KCONFIG_PROBABILITY"); + + n = 0; + while (env && *env) { + char *endp; + int tmp = strtol(env, &endp, 10); + + if (tmp >= 0 && tmp <= 100) { + p[n++] = tmp; + } else { + errno = ERANGE; + perror("KCONFIG_PROBABILITY"); + exit(1); + } + env = (*endp == ':') ? endp + 1 : endp; + if (n >= 3) + break; + } + switch (n) { + case 1: + pby = p[0]; + ptm = pby / 2; + pty = pby - ptm; + break; + case 2: + pty = p[0]; + ptm = p[1]; + pby = pty + ptm; + break; + case 3: + pby = p[0]; + pty = p[1]; + ptm = p[2]; + break; + } + + if (pty + ptm > 100) { + errno = ERANGE; + perror("KCONFIG_PROBABILITY"); + exit(1); + } + } + + for_all_symbols(sym) { + if (sym_has_value(sym) || sym->flags & SYMBOL_VALID) + continue; + switch (sym_get_type(sym)) { + case S_BOOLEAN: + case S_TRISTATE: + has_changed = true; + switch (mode) { + case def_yes: + sym->def[S_DEF_USER].tri = yes; + break; + case def_mod: + sym->def[S_DEF_USER].tri = mod; + break; + case def_no: + sym->def[S_DEF_USER].tri = no; + break; + case def_random: + sym->def[S_DEF_USER].tri = no; + cnt = rand() % 100; + if (sym->type == S_TRISTATE) { + if (cnt < pty) + sym->def[S_DEF_USER].tri = yes; + else if (cnt < pty + ptm) + sym->def[S_DEF_USER].tri = mod; + } else if (cnt < pby) + sym->def[S_DEF_USER].tri = yes; + break; + default: + continue; + } + if (!(sym_is_choice(sym) && mode == def_random)) + sym->flags |= SYMBOL_DEF_USER; + break; + default: + break; + } + + } + + sym_clear_all_valid(); + + /* + * We have different type of choice blocks. + * If curr.tri equals to mod then we can select several + * choice symbols in one block. + * In this case we do nothing. + * If curr.tri equals yes then only one symbol can be + * selected in a choice block and we set it to yes, + * and the rest to no. + */ + if (mode != def_random) { + for_all_symbols(csym) { + if ((sym_is_choice(csym) && !sym_has_value(csym)) || + sym_is_choice_value(csym)) + csym->flags |= SYMBOL_NEED_SET_CHOICE_VALUES; + } + } + + for_all_symbols(csym) { + if (sym_has_value(csym) || !sym_is_choice(csym)) + continue; + + sym_calc_value(csym); + if (mode == def_random) + has_changed |= randomize_choice_values(csym); + else { + set_all_choice_values(csym); + has_changed = true; + } + } + + return has_changed; +} + +static void conf_rewrite_tristates(tristate old_val, tristate new_val) { - enum symbol_type type = sym_get_type(sym); + struct symbol *sym; + for_all_symbols(sym) { + if (sym_get_type(sym) == S_TRISTATE && + sym->def[S_DEF_USER].tri == old_val) + sym->def[S_DEF_USER].tri = new_val; + } + sym_clear_all_valid(); +} + +static int conf_askvalue(struct symbol *sym, const char *def) +{ if (!sym_has_value(sym)) - printf(_("(NEW) ")); + printf("(NEW) "); line[0] = '\n'; line[1] = 0; - if (!sym_is_changable(sym)) { + if (!sym_is_changeable(sym)) { printf("%s\n", def); line[0] = '\n'; line[1] = 0; @@ -106,24 +337,12 @@ static int conf_askvalue(struct symbol *sym, const char *def) return 0; } /* fall through */ - case oldaskconfig: + default: fflush(stdout); xfgets(line, sizeof(line), stdin); - return 1; - default: break; } - switch (type) { - case S_INT: - case S_HEX: - case S_STRING: - printf("%s\n", def); - return 1; - default: - ; - } - printf("%s", line); return 1; } @@ -133,10 +352,10 @@ static int conf_string(struct menu *menu) const char *def; while (1) { - printf("%*s%s ", indent - 1, "", _(menu->prompt->text)); + printf("%*s%s ", indent - 1, "", menu->prompt->text); printf("(%s) ", sym->name); def = sym_get_string_value(sym); - if (sym_get_string_value(sym)) + if (def) printf("[%s] ", def); if (!conf_askvalue(sym, def)) return 0; @@ -166,7 +385,7 @@ static int conf_sym(struct menu *menu) tristate oldval, newval; while (1) { - printf("%*s%s ", indent - 1, "", _(menu->prompt->text)); + printf("%*s%s ", indent - 1, "", menu->prompt->text); if (sym->name) printf("(%s) ", sym->name); putchar('['); @@ -235,7 +454,7 @@ static int conf_choice(struct menu *menu) sym = menu->sym; is_new = !sym_has_value(sym); - if (sym_is_changable(sym)) { + if (sym_is_changeable(sym)) { conf_sym(menu); sym_calc_value(sym); switch (sym_get_tristate_value(sym)) { @@ -251,7 +470,7 @@ static int conf_choice(struct menu *menu) case no: return 1; case mod: - printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu))); + printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu)); return 0; case yes: break; @@ -261,7 +480,7 @@ static int conf_choice(struct menu *menu) while (1) { int cnt, def; - printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu))); + printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu)); def_sym = sym_get_choice_value(sym); cnt = def = 0; line[0] = 0; @@ -269,7 +488,7 @@ static int conf_choice(struct menu *menu) if (!menu_is_visible(child)) continue; if (!child->sym) { - printf("%*c %s\n", indent, '*', _(menu_get_prompt(child))); + printf("%*c %s\n", indent, '*', menu_get_prompt(child)); continue; } cnt++; @@ -278,14 +497,14 @@ static int conf_choice(struct menu *menu) printf("%*c", indent, '>'); } else printf("%*c", indent, ' '); - printf(" %d. %s", cnt, _(menu_get_prompt(child))); + printf(" %d. %s", cnt, menu_get_prompt(child)); if (child->sym->name) printf(" (%s)", child->sym->name); if (!sym_has_value(child->sym)) - printf(_(" (NEW)")); + printf(" (NEW)"); printf("\n"); } - printf(_("%*schoice"), indent - 1, ""); + printf("%*schoice", indent - 1, ""); if (cnt == 1) { printf("[1]: 1\n"); goto conf_childs; @@ -332,12 +551,7 @@ static int conf_choice(struct menu *menu) print_help(child); continue; } - sym_set_choice_value(sym, child->sym); - for (child = child->list; child; child = child->next) { - indent += 2; - conf(child); - indent -= 2; - } + sym_set_tristate_value(child->sym, yes); return 1; } } @@ -372,7 +586,7 @@ static void conf(struct menu *menu) if (prompt) printf("%*c\n%*c %s\n%*c\n", indent, '*', - indent, '*', _(prompt), + indent, '*', prompt, indent, '*'); default: ; @@ -418,29 +632,26 @@ static void check_conf(struct menu *menu) return; sym = menu->sym; - if (sym && !sym_has_value(sym)) { - if (sym_is_changable(sym) || - (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) { - if (input_mode == listnewconfig) { - if (sym->name) { - const char *str; - - if (sym->type == S_STRING) { - str = sym_get_string_value(sym); - str = sym_escape_string_value(str); - printf("%s%s=%s\n", CONFIG_, sym->name, str); - free((void *)str); - } else { - str = sym_get_string_value(sym); - printf("%s%s=%s\n", CONFIG_, sym->name, str); - } - } - } else { - if (!conf_cnt++) - printf(_("*\n* Restart config...\n*\n")); - rootEntry = menu_get_parent_menu(menu); - conf(rootEntry); - } + if (sym && !sym_has_value(sym) && + (sym_is_changeable(sym) || + (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes))) { + + switch (input_mode) { + case listnewconfig: + if (sym->name) + print_symbol_for_listconfig(sym); + break; + case helpnewconfig: + printf("-----\n"); + print_help(menu); + printf("-----\n"); + break; + default: + if (!conf_cnt++) + printf("*\n* Restart config...\n*\n"); + rootEntry = menu_get_parent_menu(menu); + conf(rootEntry); + break; } } @@ -448,40 +659,44 @@ static void check_conf(struct menu *menu) check_conf(child); } -static struct option long_opts[] = { - {"oldaskconfig", no_argument, NULL, oldaskconfig}, - {"oldconfig", no_argument, NULL, oldconfig}, - {"syncconfig", no_argument, NULL, syncconfig}, - {"defconfig", optional_argument, NULL, defconfig}, - {"savedefconfig", required_argument, NULL, savedefconfig}, - {"allnoconfig", no_argument, NULL, allnoconfig}, - {"allyesconfig", no_argument, NULL, allyesconfig}, - {"allmodconfig", no_argument, NULL, allmodconfig}, - {"alldefconfig", no_argument, NULL, alldefconfig}, - {"randconfig", no_argument, NULL, randconfig}, - {"listnewconfig", no_argument, NULL, listnewconfig}, - {"olddefconfig", no_argument, NULL, olddefconfig}, - /* - * oldnoconfig is an alias of olddefconfig, because people already - * are dependent on its behavior(sets new symbols to their default - * value but not 'n') with the counter-intuitive name. - */ - {"oldnoconfig", no_argument, NULL, olddefconfig}, +static const struct option long_opts[] = { + {"help", no_argument, NULL, 'h'}, + {"silent", no_argument, NULL, 's'}, + {"oldaskconfig", no_argument, &input_mode_opt, oldaskconfig}, + {"oldconfig", no_argument, &input_mode_opt, oldconfig}, + {"syncconfig", no_argument, &input_mode_opt, syncconfig}, + {"defconfig", required_argument, &input_mode_opt, defconfig}, + {"savedefconfig", required_argument, &input_mode_opt, savedefconfig}, + {"allnoconfig", no_argument, &input_mode_opt, allnoconfig}, + {"allyesconfig", no_argument, &input_mode_opt, allyesconfig}, + {"allmodconfig", no_argument, &input_mode_opt, allmodconfig}, + {"alldefconfig", no_argument, &input_mode_opt, alldefconfig}, + {"randconfig", no_argument, &input_mode_opt, randconfig}, + {"listnewconfig", no_argument, &input_mode_opt, listnewconfig}, + {"helpnewconfig", no_argument, &input_mode_opt, helpnewconfig}, + {"olddefconfig", no_argument, &input_mode_opt, olddefconfig}, + {"yes2modconfig", no_argument, &input_mode_opt, yes2modconfig}, + {"mod2yesconfig", no_argument, &input_mode_opt, mod2yesconfig}, + {"mod2noconfig", no_argument, &input_mode_opt, mod2noconfig}, {NULL, 0, NULL, 0} }; static void conf_usage(const char *progname) { - - printf("Usage: %s [-s] [option] \n", progname); - printf("[option] is _one_ of the following:\n"); + printf("Usage: %s [options] \n", progname); + printf("\n"); + printf("Generic options:\n"); + printf(" -h, --help Print this message and exit.\n"); + printf(" -s, --silent Do not print log.\n"); + printf("\n"); + printf("Mode options:\n"); printf(" --listnewconfig List new options\n"); + printf(" --helpnewconfig List new options and help text\n"); printf(" --oldaskconfig Start a new configuration using a line-oriented program\n"); printf(" --oldconfig Update a configuration using a provided .config as base\n"); printf(" --syncconfig Similar to oldconfig but generates configuration in\n" " include/{generated/,config/}\n"); printf(" --olddefconfig Same as oldconfig but sets new symbols to their default value\n"); - printf(" --oldnoconfig An alias of olddefconfig\n"); printf(" --defconfig New config with default defined in \n"); printf(" --savedefconfig Save the minimal current configuration to \n"); printf(" --allnoconfig New config where all options are answered with no\n"); @@ -489,6 +704,10 @@ static void conf_usage(const char *progname) printf(" --allmodconfig New config where all options are answered with mod\n"); printf(" --alldefconfig New config with all symbols set to default\n"); printf(" --randconfig New config with random answer to all options\n"); + printf(" --yes2modconfig Change answers from yes to mod if possible\n"); + printf(" --mod2yesconfig Change answers from mod to yes if possible\n"); + printf(" --mod2noconfig Change answers from mod to no if possible\n"); + printf(" (If none of the above is given, --oldaskconfig is the default)\n"); } int main(int ac, char **av) @@ -496,97 +715,60 @@ int main(int ac, char **av) const char *progname = av[0]; int opt; const char *name, *defconfig_file = NULL /* gcc uninit */; - struct stat tmpstat; - - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + int no_conf_write = 0; tty_stdio = isatty(0) && isatty(1); - while ((opt = getopt_long(ac, av, "s", long_opts, NULL)) != -1) { - if (opt == 's') { - conf_set_message_callback(NULL); - continue; - } - input_mode = (enum input_mode)opt; + while ((opt = getopt_long(ac, av, "hs", long_opts, NULL)) != -1) { switch (opt) { - case syncconfig: - sync_kconfig = 1; + case 'h': + conf_usage(progname); + exit(1); break; - case defconfig: - case savedefconfig: - defconfig_file = optarg; + case 's': + conf_set_message_callback(NULL); break; - case randconfig: - { - struct timeval now; - unsigned int seed; - char *seed_env; - - /* - * Use microseconds derived seed, - * compensate for systems where it may be zero - */ - gettimeofday(&now, NULL); - seed = (unsigned int)((now.tv_sec + 1) * (now.tv_usec + 1)); - - seed_env = getenv("KCONFIG_SEED"); - if( seed_env && *seed_env ) { - char *endp; - int tmp = (int)strtol(seed_env, &endp, 0); - if (*endp == '\0') { - seed = tmp; - } + case 0: + input_mode = input_mode_opt; + switch (input_mode) { + case syncconfig: + /* + * syncconfig is invoked during the build stage. + * Suppress distracting + * "configuration written to ..." + */ + conf_set_message_callback(NULL); + sync_kconfig = 1; + break; + case defconfig: + case savedefconfig: + defconfig_file = optarg; + break; + case randconfig: + set_randconfig_seed(); + break; + default: + break; } - fprintf( stderr, "KCONFIG_SEED=0x%X\n", seed ); - srand(seed); - break; - } - case oldaskconfig: - case oldconfig: - case allnoconfig: - case allyesconfig: - case allmodconfig: - case alldefconfig: - case listnewconfig: - case olddefconfig: - break; - case '?': - conf_usage(progname); - exit(1); + default: break; } } if (ac == optind) { - fprintf(stderr, _("%s: Kconfig file missing\n"), av[0]); + fprintf(stderr, "%s: Kconfig file missing\n", av[0]); conf_usage(progname); exit(1); } - name = av[optind]; - conf_parse(name); - if (sync_kconfig) { - name = conf_get_configname(); - if (stat(name, &tmpstat)) { - fprintf(stderr, _("***\n" - "*** Configuration file \"%s\" not found!\n" - "***\n" - "*** Please run some configurator (e.g. \"make oldconfig\" or\n" - "*** \"make menuconfig\" or \"make xconfig\").\n" - "***\n"), name); - exit(1); - } - } + conf_parse(av[optind]); + //zconfdump(stdout); switch (input_mode) { case defconfig: - if (!defconfig_file) - defconfig_file = conf_get_default_confname(); if (conf_read(defconfig_file)) { fprintf(stderr, - _("***\n" + "***\n" "*** Can't find default configuration \"%s\"!\n" - "***\n"), + "***\n", defconfig_file); exit(1); } @@ -596,7 +778,11 @@ int main(int ac, char **av) case oldaskconfig: case oldconfig: case listnewconfig: + case helpnewconfig: case olddefconfig: + case yes2modconfig: + case mod2yesconfig: + case mod2noconfig: conf_read(NULL); break; case allnoconfig: @@ -610,7 +796,7 @@ int main(int ac, char **av) if ((strcmp(name, "") != 0) && (strcmp(name, "1") != 0)) { if (conf_read_simple(name, S_DEF_USER)) { fprintf(stderr, - _("*** Can't read seed configuration \"%s\"!\n"), + "*** Can't read seed configuration \"%s\"!\n", name); exit(1); } @@ -627,7 +813,7 @@ int main(int ac, char **av) if (conf_read_simple(name, S_DEF_USER) && conf_read_simple("all.config", S_DEF_USER)) { fprintf(stderr, - _("*** KCONFIG_ALLCONFIG set, but no \"%s\" or \"all.config\" file found\n"), + "*** KCONFIG_ALLCONFIG set, but no \"%s\" or \"all.config\" file found\n", name); exit(1); } @@ -636,14 +822,18 @@ int main(int ac, char **av) break; } + if (conf_errors()) + exit(1); + if (sync_kconfig) { - if (conf_get_changed()) { - name = getenv("KCONFIG_NOSILENTUPDATE"); - if (name && *name) { + name = getenv("KCONFIG_NOSILENTUPDATE"); + if (name && *name) { + if (conf_get_changed()) { fprintf(stderr, - _("\n*** The configuration requires explicit update.\n\n")); + "\n*** The configuration requires explicit update.\n\n"); return 1; } + no_conf_write = 1; } } @@ -669,6 +859,15 @@ int main(int ac, char **av) break; case savedefconfig: break; + case yes2modconfig: + conf_rewrite_tristates(yes, mod); + break; + case mod2yesconfig: + conf_rewrite_tristates(mod, yes); + break; + case mod2noconfig: + conf_rewrite_tristates(mod, no); + break; case oldaskconfig: rootEntry = &rootmenu; conf(&rootmenu); @@ -676,6 +875,7 @@ int main(int ac, char **av) /* fall through */ case oldconfig: case listnewconfig: + case helpnewconfig: case syncconfig: /* Update until a loop caused no more changes */ do { @@ -688,29 +888,35 @@ int main(int ac, char **av) break; } - if (sync_kconfig) { - /* syncconfig is used during the build so we shall update autoconf. - * All other commands are only used to generate a config. - */ - if (conf_get_changed() && conf_write(NULL)) { - fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n")); - exit(1); - } - if (conf_write_autoconf()) { - fprintf(stderr, _("\n*** Error during update of the configuration.\n\n")); - return 1; - } - } else if (input_mode == savedefconfig) { + if (sym_dep_errors()) + exit(1); + + if (input_mode == savedefconfig) { if (conf_write_defconfig(defconfig_file)) { - fprintf(stderr, _("n*** Error while saving defconfig to: %s\n\n"), + fprintf(stderr, "n*** Error while saving defconfig to: %s\n\n", defconfig_file); return 1; } - } else if (input_mode != listnewconfig) { - if (conf_write(NULL)) { - fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n")); + } else if (input_mode != listnewconfig && input_mode != helpnewconfig) { + if (!no_conf_write && conf_write(NULL)) { + fprintf(stderr, "\n*** Error during writing of the configuration.\n\n"); exit(1); } + + /* + * Create auto.conf if it does not exist. + * This prevents GNU Make 4.1 or older from emitting + * "include/config/auto.conf: No such file or directory" + * in the top-level Makefile + * + * syncconfig always creates or updates auto.conf because it is + * used during the build. + */ + if (conf_write_autoconf(sync_kconfig) && sync_kconfig) { + fprintf(stderr, + "\n*** Error during sync of the configuration.\n\n"); + return 1; + } } return 0; } diff --git a/support/kconfig/confdata.c b/support/kconfig/confdata.c index 9ab980edd8..eb952e89ac 100644 --- a/support/kconfig/confdata.c +++ b/support/kconfig/confdata.c @@ -1,13 +1,17 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ +#include #include +#include #include #include #include +#include #include +#include #include #include #include @@ -15,12 +19,136 @@ #include #include +#include "internal.h" #include "lkc.h" -struct conf_printer { - void (*print_symbol)(FILE *, struct symbol *, const char *, void *); - void (*print_comment)(FILE *, const char *, void *); -}; +struct gstr autoconf_cmd; + +/* return true if 'path' exists, false otherwise */ +static bool is_present(const char *path) +{ + struct stat st; + + return !stat(path, &st); +} + +/* return true if 'path' exists and it is a directory, false otherwise */ +static bool is_dir(const char *path) +{ + struct stat st; + + if (stat(path, &st)) + return false; + + return S_ISDIR(st.st_mode); +} + +/* return true if the given two files are the same, false otherwise */ +static bool is_same(const char *file1, const char *file2) +{ + int fd1, fd2; + struct stat st1, st2; + void *map1, *map2; + bool ret = false; + + fd1 = open(file1, O_RDONLY); + if (fd1 < 0) + return ret; + + fd2 = open(file2, O_RDONLY); + if (fd2 < 0) + goto close1; + + ret = fstat(fd1, &st1); + if (ret) + goto close2; + ret = fstat(fd2, &st2); + if (ret) + goto close2; + + if (st1.st_size != st2.st_size) + goto close2; + + map1 = mmap(NULL, st1.st_size, PROT_READ, MAP_PRIVATE, fd1, 0); + if (map1 == MAP_FAILED) + goto close2; + + map2 = mmap(NULL, st2.st_size, PROT_READ, MAP_PRIVATE, fd2, 0); + if (map2 == MAP_FAILED) + goto close2; + + if (bcmp(map1, map2, st1.st_size)) + goto close2; + + ret = true; +close2: + close(fd2); +close1: + close(fd1); + + return ret; +} + +/* + * Create the parent directory of the given path. + * + * For example, if 'include/config/auto.conf' is given, create 'include/config'. + */ +static int make_parent_dir(const char *path) +{ + char tmp[PATH_MAX + 1]; + char *p; + + strncpy(tmp, path, sizeof(tmp)); + tmp[sizeof(tmp) - 1] = 0; + + /* Remove the base name. Just return if nothing is left */ + p = strrchr(tmp, '/'); + if (!p) + return 0; + *(p + 1) = 0; + + /* Just in case it is an absolute path */ + p = tmp; + while (*p == '/') + p++; + + while ((p = strchr(p, '/'))) { + *p = 0; + + /* skip if the directory exists */ + if (!is_dir(tmp) && mkdir(tmp, 0755)) + return -1; + + *p = '/'; + while (*p == '/') + p++; + } + + return 0; +} + +static char depfile_path[PATH_MAX]; +static size_t depfile_prefix_len; + +/* touch depfile for symbol 'name' */ +static int conf_touch_dep(const char *name) +{ + int fd; + + /* check overflow: prefix + name + '\0' must fit in buffer. */ + if (depfile_prefix_len + strlen(name) + 1 > sizeof(depfile_path)) + return -1; + + strcpy(depfile_path + depfile_prefix_len, name); + + fd = open(depfile_path, O_WRONLY | O_CREAT | O_TRUNC, 0644); + if (fd == -1) + return -1; + close(fd); + + return 0; +} static void conf_warning(const char *fmt, ...) __attribute__ ((format (printf, 1, 2))); @@ -31,7 +159,12 @@ static void conf_message(const char *fmt, ...) static const char *conf_filename; static int conf_lineno, conf_warnings; -const char conf_defname[] = ".defconfig"; +bool conf_errors(void) +{ + if (conf_warnings) + return getenv("KCONFIG_WERROR"); + return false; +} static void conf_warning(const char *fmt, ...) { @@ -44,16 +177,16 @@ static void conf_warning(const char *fmt, ...) conf_warnings++; } -static void conf_default_message_callback(const char *fmt, va_list ap) +static void conf_default_message_callback(const char *s) { printf("#\n# "); - vprintf(fmt, ap); + printf("%s", s); printf("\n#\n"); } -static void (*conf_message_callback) (const char *fmt, va_list ap) = +static void (*conf_message_callback)(const char *s) = conf_default_message_callback; -void conf_set_message_callback(void (*fn) (const char *fmt, va_list ap)) +void conf_set_message_callback(void (*fn)(const char *s)) { conf_message_callback = fn; } @@ -61,10 +194,15 @@ void conf_set_message_callback(void (*fn) (const char *fmt, va_list ap)) static void conf_message(const char *fmt, ...) { va_list ap; + char buf[4096]; + + if (!conf_message_callback) + return; va_start(ap, fmt); - if (conf_message_callback) - conf_message_callback(fmt, ap); + + vsnprintf(buf, sizeof(buf), fmt, ap); + conf_message_callback(buf); va_end(ap); } @@ -75,51 +213,23 @@ const char *conf_get_configname(void) return name ? name : ".config"; } -const char *conf_get_autoconfig_name(void) +static const char *conf_get_autoconfig_name(void) { return getenv("KCONFIG_AUTOCONFIG"); } -static char *conf_expand_value(const char *in) +static const char *conf_get_autoheader_name(void) { - struct symbol *sym; - const char *src; - static char res_value[SYMBOL_MAXLENGTH]; - char *dst, name[SYMBOL_MAXLENGTH]; - - res_value[0] = 0; - dst = name; - while ((src = strchr(in, '$'))) { - strncat(res_value, in, src - in); - src++; - dst = name; - while (isalnum(*src) || *src == '_') - *dst++ = *src++; - *dst = 0; - sym = sym_lookup(name, 0); - sym_calc_value(sym); - strcat(res_value, sym_get_string_value(sym)); - in = src; - } - strcat(res_value, in); + char *name = getenv("KCONFIG_AUTOHEADER"); - return res_value; + return name ? name : "include/generated/autoconf.h"; } -char *conf_get_default_confname(void) +static const char *conf_get_rustccfg_name(void) { - struct stat buf; - static char fullname[PATH_MAX+1]; - char *env, *name; - - name = conf_expand_value(conf_defname); - env = getenv(SRCTREE); - if (env) { - sprintf(fullname, "%s/%s", env, name); - if (!stat(fullname, &buf)) - return fullname; - } - return name; + char *name = getenv("KCONFIG_RUSTCCFG"); + + return name ? name : "include/generated/rustc_cfg"; } static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p) @@ -149,33 +259,26 @@ static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p) conf_warning("symbol value '%s' invalid for %s", p, sym->name); return 1; - case S_OTHER: - if (*p != '"') { - for (p2 = p; *p2 && !isspace(*p2); p2++) - ; - sym->type = S_STRING; - goto done; - } - /* fall through */ case S_STRING: - if (*p++ != '"') - break; - for (p2 = p; (p2 = strpbrk(p2, "\"\\")); p2++) { - if (*p2 == '"') { - *p2 = 0; + /* No escaping for S_DEF_AUTO (include/config/auto.conf) */ + if (def != S_DEF_AUTO) { + if (*p++ != '"') break; + for (p2 = p; (p2 = strpbrk(p2, "\"\\")); p2++) { + if (*p2 == '"') { + *p2 = 0; + break; + } + memmove(p2, p2 + 1, strlen(p2)); } - memmove(p2, p2 + 1, strlen(p2)); - } - if (!p2) { - if (def != S_DEF_AUTO) + if (!p2) { conf_warning("invalid string found"); - return 1; + return 1; + } } /* fall through */ case S_INT: case S_HEX: - done: if (sym_string_valid(sym, p)) { sym->def[def].val = xstrdup(p); sym->flags |= def_flags; @@ -192,59 +295,24 @@ static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p) return 0; } -#define LINE_GROWTH 16 -static int add_byte(int c, char **lineptr, size_t slen, size_t *n) +/* like getline(), but the newline character is stripped away */ +static ssize_t getline_stripped(char **lineptr, size_t *n, FILE *stream) { - char *nline; - size_t new_size = slen + 1; - if (new_size > *n) { - new_size += LINE_GROWTH - 1; - new_size *= 2; - nline = xrealloc(*lineptr, new_size); - if (!nline) - return -1; + ssize_t len; - *lineptr = nline; - *n = new_size; - } - - (*lineptr)[slen] = c; - - return 0; -} - -static ssize_t compat_getline(char **lineptr, size_t *n, FILE *stream) -{ - char *line = *lineptr; - size_t slen = 0; + len = getline(lineptr, n, stream); - for (;;) { - int c = getc(stream); + if (len > 0 && (*lineptr)[len - 1] == '\n') { + len--; + (*lineptr)[len] = '\0'; - switch (c) { - case '\n': - if (add_byte(c, &line, slen, n) < 0) - goto e_out; - slen++; - /* fall through */ - case EOF: - if (add_byte('\0', &line, slen, n) < 0) - goto e_out; - *lineptr = line; - if (slen == 0) - return -1; - return slen; - default: - if (add_byte(c, &line, slen, n) < 0) - goto e_out; - slen++; + if (len > 0 && (*lineptr)[len - 1] == '\r') { + len--; + (*lineptr)[len] = '\0'; } } -e_out: - line[slen-1] = '\0'; - *lineptr = line; - return -1; + return len; } int conf_read_simple(const char *name, int def) @@ -252,34 +320,55 @@ int conf_read_simple(const char *name, int def) FILE *in = NULL; char *line = NULL; size_t line_asize = 0; - char *p, *p2; + char *p, *val; struct symbol *sym; - int i, def_flags; + int def_flags; + const char *warn_unknown, *sym_name; + warn_unknown = getenv("KCONFIG_WARN_UNKNOWN_SYMBOLS"); if (name) { in = zconf_fopen(name); } else { - struct property *prop; + char *env; name = conf_get_configname(); in = zconf_fopen(name); if (in) goto load; - sym_add_change_count(1); - if (!sym_defconfig_list) + conf_set_changed(true); + + env = getenv("KCONFIG_DEFCONFIG_LIST"); + if (!env) return 1; - for_all_defaults(sym_defconfig_list, prop) { - if (expr_calc_value(prop->visible.expr) == no || - prop->expr->type != E_SYMBOL) - continue; - name = conf_expand_value(prop->expr->left.sym->name); - in = zconf_fopen(name); + while (1) { + bool is_last; + + while (isspace(*env)) + env++; + + if (!*env) + break; + + p = env; + while (*p && !isspace(*p)) + p++; + + is_last = (*p == '\0'); + + *p = '\0'; + + in = zconf_fopen(env); if (in) { - conf_message(_("using defaults found in %s"), - name); + conf_message("using defaults found in %s", + env); goto load; } + + if (is_last) + break; + + env = p + 1; } } if (!in) @@ -291,7 +380,7 @@ load: conf_warnings = 0; def_flags = SYMBOL_DEF << def; - for_all_symbols(i, sym) { + for_all_symbols(sym) { sym->flags |= SYMBOL_CHANGED; sym->flags &= ~(def_flags|SYMBOL_VALID); if (sym_is_choice(sym)) @@ -300,8 +389,7 @@ load: case S_INT: case S_HEX: case S_STRING: - if (sym->def[def].val) - free(sym->def[def].val); + free(sym->def[def].val); /* fall through */ default: sym->def[def].val = NULL; @@ -309,76 +397,68 @@ load: } } - while (compat_getline(&line, &line_asize, in) != -1) { + while (getline_stripped(&line, &line_asize, in) != -1) { conf_lineno++; - sym = NULL; + + if (!line[0]) /* blank line */ + continue; + if (line[0] == '#') { - if (memcmp(line + 2, CONFIG_, strlen(CONFIG_))) + if (line[1] != ' ') continue; - p = strchr(line + 2 + strlen(CONFIG_), ' '); + p = line + 2; + if (memcmp(p, CONFIG_, strlen(CONFIG_))) + continue; + sym_name = p + strlen(CONFIG_); + p = strchr(sym_name, ' '); if (!p) continue; *p++ = 0; - if (strncmp(p, "is not set", 10)) + if (strcmp(p, "is not set")) + continue; + + val = "n"; + } else { + if (memcmp(line, CONFIG_, strlen(CONFIG_))) { + conf_warning("unexpected data: %s", line); continue; - if (def == S_DEF_USER) { - sym = sym_find(line + 2 + strlen(CONFIG_)); - if (!sym) { - sym_add_change_count(1); - goto setsym; - } - } else { - sym = sym_lookup(line + 2 + strlen(CONFIG_), 0); - if (sym->type == S_UNKNOWN) - sym->type = S_BOOLEAN; - } - if (sym->flags & def_flags) { - conf_warning("override: reassigning to symbol %s", sym->name); - } - switch (sym->type) { - case S_BOOLEAN: - case S_TRISTATE: - sym->def[def].tri = no; - sym->flags |= def_flags; - break; - default: - ; } - } else if (memcmp(line, CONFIG_, strlen(CONFIG_)) == 0) { - p = strchr(line + strlen(CONFIG_), '='); - if (!p) + + sym_name = line + strlen(CONFIG_); + p = strchr(sym_name, '='); + if (!p) { + conf_warning("unexpected data: %s", line); continue; - *p++ = 0; - p2 = strchr(p, '\n'); - if (p2) { - *p2-- = 0; - if (*p2 == '\r') - *p2 = 0; } - if (def == S_DEF_USER) { - sym = sym_find(line + strlen(CONFIG_)); - if (!sym) { - sym_add_change_count(1); - goto setsym; - } + *p = 0; + val = p + 1; + } + + sym = sym_find(sym_name); + if (!sym) { + if (def == S_DEF_AUTO) { + /* + * Reading from include/config/auto.conf. + * If CONFIG_FOO previously existed in auto.conf + * but it is missing now, include/config/FOO + * must be touched. + */ + conf_touch_dep(sym_name); } else { - sym = sym_lookup(line + strlen(CONFIG_), 0); - if (sym->type == S_UNKNOWN) - sym->type = S_OTHER; - } - if (sym->flags & def_flags) { - conf_warning("override: reassigning to symbol %s", sym->name); - } - if (conf_set_sym_val(sym, def, def_flags, p)) - continue; - } else { - if (line[0] != '\r' && line[0] != '\n') - conf_warning("unexpected data: %.*s", - (int)strcspn(line, "\r\n"), line); + if (warn_unknown) + conf_warning("unknown symbol: %s", sym_name); + conf_set_changed(true); + } continue; } -setsym: + + if (sym->flags & def_flags) + conf_warning("override: reassigning to symbol %s", sym->name); + + if (conf_set_sym_val(sym, def, def_flags, val)) + continue; + if (sym && sym_is_choice_value(sym)) { struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym)); switch (sym->def[def].tri) { @@ -401,6 +481,7 @@ setsym: } free(line); fclose(in); + return 0; } @@ -408,9 +489,8 @@ int conf_read(const char *name) { struct symbol *sym; int conf_unsaved = 0; - int i; - sym_set_change_count(0); + conf_set_changed(false); if (conf_read_simple(name, S_DEF_USER)) { sym_calc_value(modules_sym); @@ -419,20 +499,18 @@ int conf_read(const char *name) sym_calc_value(modules_sym); - for_all_symbols(i, sym) { + for_all_symbols(sym) { sym_calc_value(sym); - if (sym_is_choice(sym) || (sym->flags & SYMBOL_AUTO)) + if (sym_is_choice(sym) || (sym->flags & SYMBOL_NO_WRITE)) continue; if (sym_has_value(sym) && (sym->flags & SYMBOL_WRITE)) { /* check that calculated value agrees with saved value */ switch (sym->type) { case S_BOOLEAN: case S_TRISTATE: - if (sym->def[S_DEF_USER].tri != sym_get_tristate_value(sym)) - break; - if (!sym_is_choice(sym)) + if (sym->def[S_DEF_USER].tri == sym_get_tristate_value(sym)) continue; - /* fall through */ + break; default: if (!strcmp(sym->curr.val, sym->def[S_DEF_USER].val)) continue; @@ -445,7 +523,7 @@ int conf_read(const char *name) /* maybe print value in verbose mode... */ } - for_all_symbols(i, sym) { + for_all_symbols(sym) { if (sym_has_value(sym) && !sym_is_choice_value(sym)) { /* Reset values of generates values, so they'll appear * as new, if they should become visible, but that @@ -461,7 +539,7 @@ int conf_read(const char *name) /* Reset a string value if it's out of range */ if (sym_string_within_range(sym, sym->def[S_DEF_USER].val)) break; - sym->flags &= ~(SYMBOL_VALID|SYMBOL_DEF_USER); + sym->flags &= ~SYMBOL_VALID; conf_unsaved++; break; default: @@ -470,194 +548,232 @@ int conf_read(const char *name) } } - sym_add_change_count(conf_warnings || conf_unsaved); + if (conf_warnings || conf_unsaved) + conf_set_changed(true); return 0; } -/* - * Kconfig configuration printer - * - * This printer is used when generating the resulting configuration after - * kconfig invocation and `defconfig' files. Unset symbol might be omitted by - * passing a non-NULL argument to the printer. - * - */ -static void -kconfig_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) +struct comment_style { + const char *decoration; + const char *prefix; + const char *postfix; +}; + +static const struct comment_style comment_style_pound = { + .decoration = "#", + .prefix = "#", + .postfix = "#", +}; + +static const struct comment_style comment_style_c = { + .decoration = " *", + .prefix = "/*", + .postfix = " */", +}; + +static void conf_write_heading(FILE *fp, const struct comment_style *cs) { + if (!cs) + return; - switch (sym->type) { - case S_BOOLEAN: - case S_TRISTATE: - if (*value == 'n') { - bool skip_unset = (arg != NULL); + fprintf(fp, "%s\n", cs->prefix); - if (!skip_unset) - fprintf(fp, "# %s%s is not set\n", - CONFIG_, sym->name); - return; - } - break; - default: - break; - } + fprintf(fp, "%s Automatically generated file; DO NOT EDIT.\n", + cs->decoration); + + fprintf(fp, "%s %s\n", cs->decoration, rootmenu.prompt->text); - fprintf(fp, "%s%s=%s\n", CONFIG_, sym->name, value); + fprintf(fp, "%s\n", cs->postfix); } -static void -kconfig_print_comment(FILE *fp, const char *value, void *arg) +/* The returned pointer must be freed on the caller side */ +static char *escape_string_value(const char *in) { - const char *p = value; - size_t l; - - for (;;) { - l = strcspn(p, "\n"); - fprintf(fp, "#"); - if (l) { - fprintf(fp, " "); - xfwrite(p, l, 1, fp); - p += l; - } - fprintf(fp, "\n"); - if (*p++ == '\0') + const char *p; + char *out; + size_t len; + + len = strlen(in) + strlen("\"\"") + 1; + + p = in; + while (1) { + p += strcspn(p, "\"\\"); + + if (p[0] == '\0') + break; + + len++; + p++; + } + + out = xmalloc(len); + out[0] = '\0'; + + strcat(out, "\""); + + p = in; + while (1) { + len = strcspn(p, "\"\\"); + strncat(out, p, len); + p += len; + + if (p[0] == '\0') break; + + strcat(out, "\\"); + strncat(out, p++, 1); } + + strcat(out, "\""); + + return out; } -static struct conf_printer kconfig_printer_cb = +enum output_n { OUTPUT_N, OUTPUT_N_AS_UNSET, OUTPUT_N_NONE }; + +static void __print_symbol(FILE *fp, struct symbol *sym, enum output_n output_n, + bool escape_string) { - .print_symbol = kconfig_print_symbol, - .print_comment = kconfig_print_comment, -}; + const char *val; + char *escaped = NULL; -/* - * Header printer - * - * This printer is used when generating the `include/generated/autoconf.h' file. - */ -static void -header_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) + if (sym->type == S_UNKNOWN) + return; + + val = sym_get_string_value(sym); + + if ((sym->type == S_BOOLEAN || sym->type == S_TRISTATE) && + output_n != OUTPUT_N && *val == 'n') { + if (output_n == OUTPUT_N_AS_UNSET) + fprintf(fp, "# %s%s is not set\n", CONFIG_, sym->name); + return; + } + + if (sym->type == S_STRING && escape_string) { + escaped = escape_string_value(val); + val = escaped; + } + + fprintf(fp, "%s%s=%s\n", CONFIG_, sym->name, val); + + free(escaped); +} + +static void print_symbol_for_dotconfig(FILE *fp, struct symbol *sym) +{ + __print_symbol(fp, sym, OUTPUT_N_AS_UNSET, true); +} + +static void print_symbol_for_autoconf(FILE *fp, struct symbol *sym) +{ + __print_symbol(fp, sym, OUTPUT_N_NONE, false); +} + +void print_symbol_for_listconfig(struct symbol *sym) +{ + __print_symbol(stdout, sym, OUTPUT_N, true); +} + +static void print_symbol_for_c(FILE *fp, struct symbol *sym) { + const char *val; + const char *sym_suffix = ""; + const char *val_prefix = ""; + char *escaped = NULL; + + if (sym->type == S_UNKNOWN) + return; + + val = sym_get_string_value(sym); switch (sym->type) { case S_BOOLEAN: - case S_TRISTATE: { - const char *suffix = ""; - - switch (*value) { + case S_TRISTATE: + switch (*val) { case 'n': - break; + return; case 'm': - suffix = "_MODULE"; + sym_suffix = "_MODULE"; /* fall through */ default: - fprintf(fp, "#define %s%s%s 1\n", - CONFIG_, sym->name, suffix); + val = "1"; } break; - } - case S_HEX: { - const char *prefix = ""; - - if (value[0] != '0' || (value[1] != 'x' && value[1] != 'X')) - prefix = "0x"; - fprintf(fp, "#define %s%s %s%s\n", - CONFIG_, sym->name, prefix, value); + case S_HEX: + if (val[0] != '0' || (val[1] != 'x' && val[1] != 'X')) + val_prefix = "0x"; break; - } case S_STRING: - case S_INT: - fprintf(fp, "#define %s%s %s\n", - CONFIG_, sym->name, value); - break; + escaped = escape_string_value(val); + val = escaped; default: break; } -} + fprintf(fp, "#define %s%s%s %s%s\n", CONFIG_, sym->name, sym_suffix, + val_prefix, val); -static void -header_print_comment(FILE *fp, const char *value, void *arg) -{ - const char *p = value; - size_t l; - - fprintf(fp, "/*\n"); - for (;;) { - l = strcspn(p, "\n"); - fprintf(fp, " *"); - if (l) { - fprintf(fp, " "); - xfwrite(p, l, 1, fp); - p += l; - } - fprintf(fp, "\n"); - if (*p++ == '\0') - break; - } - fprintf(fp, " */\n"); + free(escaped); } -static struct conf_printer header_printer_cb = -{ - .print_symbol = header_print_symbol, - .print_comment = header_print_comment, -}; - -/* - * Tristate printer - * - * This printer is used when generating the `include/config/tristate.conf' file. - */ -static void -tristate_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) +static void print_symbol_for_rustccfg(FILE *fp, struct symbol *sym) { + const char *val; + const char *val_prefix = ""; + char *val_prefixed = NULL; + size_t val_prefixed_len; + char *escaped = NULL; - if (sym->type == S_TRISTATE && *value != 'n') - fprintf(fp, "%s%s=%c\n", CONFIG_, sym->name, (char)toupper(*value)); -} - -static struct conf_printer tristate_printer_cb = -{ - .print_symbol = tristate_print_symbol, - .print_comment = kconfig_print_comment, -}; + if (sym->type == S_UNKNOWN) + return; -static void conf_write_symbol(FILE *fp, struct symbol *sym, - struct conf_printer *printer, void *printer_arg) -{ - const char *str; + val = sym_get_string_value(sym); switch (sym->type) { - case S_OTHER: - case S_UNKNOWN: + case S_BOOLEAN: + case S_TRISTATE: + /* + * We do not care about disabled ones, i.e. no need for + * what otherwise are "comments" in other printers. + */ + if (*val == 'n') + return; + + /* + * To have similar functionality to the C macro `IS_ENABLED()` + * we provide an empty `--cfg CONFIG_X` here in both `y` + * and `m` cases. + * + * Then, the common `fprintf()` below will also give us + * a `--cfg CONFIG_X="y"` or `--cfg CONFIG_X="m"`, which can + * be used as the equivalent of `IS_BUILTIN()`/`IS_MODULE()`. + */ + fprintf(fp, "--cfg=%s%s\n", CONFIG_, sym->name); break; - case S_STRING: - str = sym_get_string_value(sym); - str = sym_escape_string_value(str); - printer->print_symbol(fp, sym, str, printer_arg); - free((void *)str); + case S_HEX: + if (val[0] != '0' || (val[1] != 'x' && val[1] != 'X')) + val_prefix = "0x"; break; default: - str = sym_get_string_value(sym); - printer->print_symbol(fp, sym, str, printer_arg); + break; } -} -static void -conf_write_heading(FILE *fp, struct conf_printer *printer, void *printer_arg) -{ - char buf[256]; + if (strlen(val_prefix) > 0) { + val_prefixed_len = strlen(val) + strlen(val_prefix) + 1; + val_prefixed = xmalloc(val_prefixed_len); + snprintf(val_prefixed, val_prefixed_len, "%s%s", val_prefix, val); + val = val_prefixed; + } + + /* All values get escaped: the `--cfg` option only takes strings */ + escaped = escape_string_value(val); + val = escaped; - snprintf(buf, sizeof(buf), - "\n" - "Automatically generated file; DO NOT EDIT.\n" - "%s\n", - rootmenu.prompt->text); + fprintf(fp, "--cfg=%s%s=%s\n", CONFIG_, sym->name, val); - printer->print_comment(fp, buf, printer_arg); + free(escaped); + free(val_prefixed); } /* @@ -682,16 +798,13 @@ int conf_write_defconfig(const char *filename) while (menu != NULL) { sym = menu->sym; - if (sym == NULL) { - if (!menu_is_visible(menu)) - goto next_menu; - } else if (!sym_is_choice(sym)) { + if (sym && !sym_is_choice(sym)) { sym_calc_value(sym); if (!(sym->flags & SYMBOL_WRITE)) goto next_menu; sym->flags &= ~SYMBOL_WRITE; /* If we cannot change the symbol - skip */ - if (!sym_is_changable(sym)) + if (!sym_is_changeable(sym)) goto next_menu; /* If symbol equals to default value - skip */ if (strcmp(sym_get_string_value(sym), sym_get_string_default(sym)) == 0) @@ -716,7 +829,7 @@ int conf_write_defconfig(const char *filename) goto next_menu; } } - conf_write_symbol(out, sym, &kconfig_printer_cb, NULL); + print_symbol_for_dotconfig(out, sym); } next_menu: if (menu->list != NULL) { @@ -742,49 +855,40 @@ int conf_write(const char *name) FILE *out; struct symbol *sym; struct menu *menu; - const char *basename; const char *str; - char dirname[PATH_MAX+1], tmpname[PATH_MAX+20], newname[PATH_MAX+1]; + char tmpname[PATH_MAX + 1], oldname[PATH_MAX + 1]; char *env; + bool need_newline = false; if (!name) name = conf_get_configname(); - dirname[0] = 0; - if (name && name[0]) { - struct stat st; - char *slash; - - if (!stat(name, &st) && S_ISDIR(st.st_mode)) { - strcpy(dirname, name); - strcat(dirname, "/"); - basename = conf_get_configname(); - } else if ((slash = strrchr(name, '/'))) { - int size = slash - name + 1; - memcpy(dirname, name, size); - dirname[size] = 0; - if (slash[1]) - basename = slash + 1; - else - basename = conf_get_configname(); - } else - basename = name; - } else - basename = conf_get_configname(); - - sprintf(newname, "%s%s", dirname, basename); + if (!*name) { + fprintf(stderr, "config name is empty\n"); + return -1; + } + + if (is_dir(name)) { + fprintf(stderr, "%s: Is a directory\n", name); + return -1; + } + + if (make_parent_dir(name)) + return -1; + env = getenv("KCONFIG_OVERWRITECONFIG"); - if (!env || !*env) { - sprintf(tmpname, "%s.tmpconfig.%d", dirname, (int)getpid()); - out = fopen(tmpname, "w"); - } else { + if (env && *env) { *tmpname = 0; - out = fopen(newname, "w"); + out = fopen(name, "w"); + } else { + snprintf(tmpname, sizeof(tmpname), "%s.%d.tmp", + name, (int)getpid()); + out = fopen(tmpname, "w"); } if (!out) return 1; - conf_write_heading(out, &kconfig_printer_cb, NULL); + conf_write_heading(out, &comment_style_pound); if (!conf_get_changed()) sym_clear_all_valid(); @@ -800,13 +904,18 @@ int conf_write(const char *name) "#\n" "# %s\n" "#\n", str); - } else if (!(sym->flags & SYMBOL_CHOICE)) { + need_newline = false; + } else if (!(sym->flags & SYMBOL_CHOICE) && + !(sym->flags & SYMBOL_WRITTEN)) { sym_calc_value(sym); if (!(sym->flags & SYMBOL_WRITE)) goto next; - sym->flags &= ~SYMBOL_WRITE; - - conf_write_symbol(out, sym, &kconfig_printer_cb, NULL); + if (need_newline) { + fprintf(out, "\n"); + need_newline = false; + } + sym->flags |= SYMBOL_WRITTEN; + print_symbol_for_dotconfig(out, sym); } next: @@ -814,65 +923,111 @@ next: menu = menu->list; continue; } - if (menu->next) + +end_check: + if (!menu->sym && menu_is_visible(menu) && menu != &rootmenu && + menu->prompt->type == P_MENU) { + fprintf(out, "# end of %s\n", menu_get_prompt(menu)); + need_newline = true; + } + + if (menu->next) { menu = menu->next; - else while ((menu = menu->parent)) { - if (menu->next) { - menu = menu->next; - break; - } + } else { + menu = menu->parent; + if (menu) + goto end_check; } } fclose(out); + for_all_symbols(sym) + sym->flags &= ~SYMBOL_WRITTEN; + if (*tmpname) { - strcat(dirname, basename); - strcat(dirname, ".old"); - rename(newname, dirname); - if (rename(tmpname, newname)) + if (is_same(name, tmpname)) { + conf_message("No change to %s", name); + unlink(tmpname); + conf_set_changed(false); + return 0; + } + + snprintf(oldname, sizeof(oldname), "%s.old", name); + rename(name, oldname); + if (rename(tmpname, name)) return 1; } - conf_message(_("configuration written to %s"), newname); + conf_message("configuration written to %s", name); + + conf_set_changed(false); + + return 0; +} + +/* write a dependency file as used by kbuild to track dependencies */ +static int conf_write_autoconf_cmd(const char *autoconf_name) +{ + char name[PATH_MAX], tmp[PATH_MAX]; + FILE *out; + int ret; + + ret = snprintf(name, sizeof(name), "%s.cmd", autoconf_name); + if (ret >= sizeof(name)) /* check truncation */ + return -1; + + if (make_parent_dir(name)) + return -1; + + ret = snprintf(tmp, sizeof(tmp), "%s.cmd.tmp", autoconf_name); + if (ret >= sizeof(tmp)) /* check truncation */ + return -1; + + out = fopen(tmp, "w"); + if (!out) { + perror("fopen"); + return -1; + } + + fprintf(out, "autoconfig := %s\n", autoconf_name); + + fputs(str_get(&autoconf_cmd), out); + + fflush(out); + ret = ferror(out); /* error check for all fprintf() calls */ + fclose(out); + if (ret) + return -1; - sym_set_change_count(0); + if (rename(tmp, name)) { + perror("rename"); + return -1; + } return 0; } -static int conf_split_config(void) +static int conf_touch_deps(void) { - const char *name; - char path[PATH_MAX+1]; - char *opwd, *dir, *_name; - char *s, *d, c; + const char *name, *tmp; struct symbol *sym; - struct stat sb; - int res, i, fd; + int res; name = conf_get_autoconfig_name(); + tmp = strrchr(name, '/'); + depfile_prefix_len = tmp ? tmp - name + 1 : 0; + if (depfile_prefix_len + 1 > sizeof(depfile_path)) + return -1; + + strncpy(depfile_path, name, depfile_prefix_len); + depfile_path[depfile_prefix_len] = 0; + conf_read_simple(name, S_DEF_AUTO); sym_calc_value(modules_sym); - opwd = malloc(256); - _name = strdup(name); - if (opwd == NULL || _name == NULL) - return 1; - opwd = getcwd(opwd, 256); - dir = dirname(_name); - if (dir == NULL) { - res = 1; - goto err; - } - if (chdir(dir)) { - res = 1; - goto err; - } - - res = 0; - for_all_symbols(i, sym) { + for_all_symbols(sym) { sym_calc_value(sym); - if ((sym->flags & SYMBOL_AUTO) || !sym->name) + if ((sym->flags & SYMBOL_NO_WRITE) || !sym->name) continue; if (sym->flags & SYMBOL_WRITE) { if (sym->flags & SYMBOL_DEF_AUTO) { @@ -921,163 +1076,118 @@ static int conf_split_config(void) * different from 'no'). */ - /* Replace all '_' and append ".h" */ - s = sym->name; - d = path; - while ((c = *s++)) { - c = tolower(c); - *d++ = (c == '_') ? '/' : c; - } - strcpy(d, ".h"); - - /* Assume directory path already exists. */ - fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644); - if (fd == -1) { - if (errno != ENOENT) { - res = 1; - break; - } - /* - * Create directory components, - * unless they exist already. - */ - d = path; - while ((d = strchr(d, '/'))) { - *d = 0; - if (stat(path, &sb) && mkdir(path, 0755)) { - res = 1; - goto out; - } - *d++ = '/'; - } - /* Try it again. */ - fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644); - if (fd == -1) { - res = 1; - break; - } - } - close(fd); + res = conf_touch_dep(sym->name); + if (res) + return res; } -out: - if (chdir(opwd)) - res = 1; -err: - free(opwd); - free(_name); - return res; + + return 0; } -int conf_write_autoconf(void) +static int __conf_write_autoconf(const char *filename, + void (*print_symbol)(FILE *, struct symbol *), + const struct comment_style *comment_style) { + char tmp[PATH_MAX]; + FILE *file; struct symbol *sym; - const char *name; - FILE *out, *tristate, *out_h; - int i; - char dir[PATH_MAX+1], buf[PATH_MAX+20]; - char *s; - - strcpy(dir, conf_get_configname()); - s = strrchr(dir, '/'); - if (s) - s[1] = 0; - else - dir[0] = 0; + int ret; - sym_clear_all_valid(); + if (make_parent_dir(filename)) + return -1; - sprintf(buf, "%s.config.cmd", dir); - file_write_dep(buf); + ret = snprintf(tmp, sizeof(tmp), "%s.tmp", filename); + if (ret >= sizeof(tmp)) /* check truncation */ + return -1; - if (conf_split_config()) - return 1; + file = fopen(tmp, "w"); + if (!file) { + perror("fopen"); + return -1; + } - sprintf(buf, "%s.tmpconfig", dir); - out = fopen(buf, "w"); - if (!out) - return 1; + conf_write_heading(file, comment_style); - sprintf(buf, "%s.tmpconfig_tristate", dir); - tristate = fopen(buf, "w"); - if (!tristate) { - fclose(out); - return 1; - } + for_all_symbols(sym) + if ((sym->flags & SYMBOL_WRITE) && sym->name) + print_symbol(file, sym); - sprintf(buf, "%s.tmpconfig.h", dir); - out_h = fopen(buf, "w"); - if (!out_h) { - fclose(out); - fclose(tristate); - return 1; + fflush(file); + /* check possible errors in conf_write_heading() and print_symbol() */ + ret = ferror(file); + fclose(file); + if (ret) + return -1; + + if (rename(tmp, filename)) { + perror("rename"); + return -1; } - conf_write_heading(out, &kconfig_printer_cb, NULL); + return 0; +} - conf_write_heading(tristate, &tristate_printer_cb, NULL); +int conf_write_autoconf(int overwrite) +{ + struct symbol *sym; + const char *autoconf_name = conf_get_autoconfig_name(); + int ret; - conf_write_heading(out_h, &header_printer_cb, NULL); + if (!overwrite && is_present(autoconf_name)) + return 0; - for_all_symbols(i, sym) { - sym_calc_value(sym); - if (!(sym->flags & SYMBOL_WRITE) || !sym->name) - continue; + ret = conf_write_autoconf_cmd(autoconf_name); + if (ret) + return -1; - /* write symbol to auto.conf, tristate and header files */ - conf_write_symbol(out, sym, &kconfig_printer_cb, (void *)1); + if (conf_touch_deps()) + return 1; - conf_write_symbol(tristate, sym, &tristate_printer_cb, (void *)1); + for_all_symbols(sym) + sym_calc_value(sym); - conf_write_symbol(out_h, sym, &header_printer_cb, NULL); - } - fclose(out); - fclose(tristate); - fclose(out_h); + ret = __conf_write_autoconf(conf_get_autoheader_name(), + print_symbol_for_c, + &comment_style_c); + if (ret) + return ret; + + ret = __conf_write_autoconf(conf_get_rustccfg_name(), + print_symbol_for_rustccfg, + NULL); + if (ret) + return ret; - name = getenv("KCONFIG_AUTOHEADER"); - if (!name) - name = "include/generated/autoconf.h"; - sprintf(buf, "%s.tmpconfig.h", dir); - if (rename(buf, name)) - return 1; - name = getenv("KCONFIG_TRISTATE"); - if (!name) - name = "include/config/tristate.conf"; - sprintf(buf, "%s.tmpconfig_tristate", dir); - if (rename(buf, name)) - return 1; - name = conf_get_autoconfig_name(); /* - * This must be the last step, kbuild has a dependency on auto.conf - * and this marks the successful completion of the previous steps. + * Create include/config/auto.conf. This must be the last step because + * Kbuild has a dependency on auto.conf and this marks the successful + * completion of the previous steps. */ - sprintf(buf, "%s.tmpconfig", dir); - if (rename(buf, name)) - return 1; + ret = __conf_write_autoconf(conf_get_autoconfig_name(), + print_symbol_for_autoconf, + &comment_style_pound); + if (ret) + return ret; return 0; } -static int sym_change_count; +static bool conf_changed; static void (*conf_changed_callback)(void); -void sym_set_change_count(int count) +void conf_set_changed(bool val) { - int _sym_change_count = sym_change_count; - sym_change_count = count; - if (conf_changed_callback && - (bool)_sym_change_count != (bool)count) - conf_changed_callback(); -} + bool changed = conf_changed != val; -void sym_add_change_count(int count) -{ - sym_set_change_count(count + sym_change_count); + conf_changed = val; + + if (conf_changed_callback && changed) + conf_changed_callback(); } bool conf_get_changed(void) { - return sym_change_count; + return conf_changed; } void conf_set_changed_callback(void (*fn)(void)) @@ -1085,54 +1195,6 @@ void conf_set_changed_callback(void (*fn)(void)) conf_changed_callback = fn; } -static bool randomize_choice_values(struct symbol *csym) -{ - struct property *prop; - struct symbol *sym; - struct expr *e; - int cnt, def; - - /* - * If choice is mod then we may have more items selected - * and if no then no-one. - * In both cases stop. - */ - if (csym->curr.tri != yes) - return false; - - prop = sym_get_choice_prop(csym); - - /* count entries in choice block */ - cnt = 0; - expr_list_for_each_sym(prop->expr, e, sym) - cnt++; - - /* - * find a random value and set it to yes, - * set the rest to no so we have only one set - */ - def = (rand() % cnt); - - cnt = 0; - expr_list_for_each_sym(prop->expr, e, sym) { - if (def == cnt++) { - sym->def[S_DEF_USER].tri = yes; - csym->def[S_DEF_USER].val = sym; - } - else { - sym->def[S_DEF_USER].tri = no; - } - sym->flags |= SYMBOL_DEF_USER; - /* clear VALID to get value calculated */ - sym->flags &= ~SYMBOL_VALID; - } - csym->flags |= SYMBOL_DEF_USER; - /* clear VALID to get value calculated */ - csym->flags &= ~(SYMBOL_VALID); - - return true; -} - void set_all_choice_values(struct symbol *csym) { struct property *prop; @@ -1152,131 +1214,3 @@ void set_all_choice_values(struct symbol *csym) /* clear VALID to get value calculated */ csym->flags &= ~(SYMBOL_VALID | SYMBOL_NEED_SET_CHOICE_VALUES); } - -bool conf_set_all_new_symbols(enum conf_def_mode mode) -{ - struct symbol *sym, *csym; - int i, cnt, pby, pty, ptm; /* pby: probability of bool = y - * pty: probability of tristate = y - * ptm: probability of tristate = m - */ - - pby = 50; pty = ptm = 33; /* can't go as the default in switch-case - * below, otherwise gcc whines about - * -Wmaybe-uninitialized */ - if (mode == def_random) { - int n, p[3]; - char *env = getenv("KCONFIG_PROBABILITY"); - n = 0; - while( env && *env ) { - char *endp; - int tmp = strtol( env, &endp, 10 ); - if( tmp >= 0 && tmp <= 100 ) { - p[n++] = tmp; - } else { - errno = ERANGE; - perror( "KCONFIG_PROBABILITY" ); - exit( 1 ); - } - env = (*endp == ':') ? endp+1 : endp; - if( n >=3 ) { - break; - } - } - switch( n ) { - case 1: - pby = p[0]; ptm = pby/2; pty = pby-ptm; - break; - case 2: - pty = p[0]; ptm = p[1]; pby = pty + ptm; - break; - case 3: - pby = p[0]; pty = p[1]; ptm = p[2]; - break; - } - - if( pty+ptm > 100 ) { - errno = ERANGE; - perror( "KCONFIG_PROBABILITY" ); - exit( 1 ); - } - } - bool has_changed = false; - - for_all_symbols(i, sym) { - if (sym_has_value(sym) || (sym->flags & SYMBOL_VALID)) - continue; - switch (sym_get_type(sym)) { - case S_BOOLEAN: - case S_TRISTATE: - has_changed = true; - switch (mode) { - case def_yes: - sym->def[S_DEF_USER].tri = yes; - break; - case def_mod: - sym->def[S_DEF_USER].tri = mod; - break; - case def_no: - if (sym->flags & SYMBOL_ALLNOCONFIG_Y) - sym->def[S_DEF_USER].tri = yes; - else - sym->def[S_DEF_USER].tri = no; - break; - case def_random: - sym->def[S_DEF_USER].tri = no; - cnt = rand() % 100; - if (sym->type == S_TRISTATE) { - if (cnt < pty) - sym->def[S_DEF_USER].tri = yes; - else if (cnt < (pty+ptm)) - sym->def[S_DEF_USER].tri = mod; - } else if (cnt < pby) - sym->def[S_DEF_USER].tri = yes; - break; - default: - continue; - } - if (!(sym_is_choice(sym) && mode == def_random)) - sym->flags |= SYMBOL_DEF_USER; - break; - default: - break; - } - - } - - sym_clear_all_valid(); - - /* - * We have different type of choice blocks. - * If curr.tri equals to mod then we can select several - * choice symbols in one block. - * In this case we do nothing. - * If curr.tri equals yes then only one symbol can be - * selected in a choice block and we set it to yes, - * and the rest to no. - */ - if (mode != def_random) { - for_all_symbols(i, csym) { - if ((sym_is_choice(csym) && !sym_has_value(csym)) || - sym_is_choice_value(csym)) - csym->flags |= SYMBOL_NEED_SET_CHOICE_VALUES; - } - } - - for_all_symbols(i, csym) { - if (sym_has_value(csym) || !sym_is_choice(csym)) - continue; - - sym_calc_value(csym); - if (mode == def_random) - has_changed = randomize_choice_values(csym); - else { - set_all_choice_values(csym); - has_changed = true; - } - } - - return has_changed; -} diff --git a/support/kconfig/expr.c b/support/kconfig/expr.c index e1a39e9084..a290de3630 100644 --- a/support/kconfig/expr.c +++ b/support/kconfig/expr.c @@ -1,8 +1,10 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ +#include +#include #include #include #include @@ -11,7 +13,6 @@ #define DEBUG_EXPR 0 -static int expr_eq(struct expr *e1, struct expr *e2); static struct expr *expr_eliminate_yn(struct expr *e); struct expr *expr_alloc_symbol(struct symbol *sym) @@ -248,10 +249,17 @@ void expr_eliminate_eq(struct expr **ep1, struct expr **ep2) * equals some operand in the other (operands do not need to appear in the same * order), recursively. */ -static int expr_eq(struct expr *e1, struct expr *e2) +int expr_eq(struct expr *e1, struct expr *e2) { int res, old_count; + /* + * A NULL expr is taken to be yes, but there's also a different way to + * represent yes. expr_is_yes() checks for either representation. + */ + if (!e1 || !e2) + return expr_is_yes(e1) && expr_is_yes(e2); + if (e1->type != e2->type) return 0; switch (e1->type) { @@ -980,7 +988,6 @@ enum string_value_kind { k_string, k_signed, k_unsigned, - k_invalid }; union string_value { @@ -1011,13 +1018,10 @@ static enum string_value_kind expr_parse_string(const char *str, val->u = strtoull(str, &tail, 16); kind = k_unsigned; break; - case S_STRING: - case S_UNKNOWN: + default: val->s = strtoll(str, &tail, 0); kind = k_signed; break; - default: - return k_invalid; } return !errno && !*tail && tail > str && isxdigit(tail[-1]) ? kind : k_string; @@ -1073,13 +1077,7 @@ tristate expr_calc_value(struct expr *e) if (k1 == k_string || k2 == k_string) res = strcmp(str1, str2); - else if (k1 == k_invalid || k2 == k_invalid) { - if (e->type != E_EQUAL && e->type != E_UNEQUAL) { - printf("Cannot compare \"%s\" and \"%s\"\n", str1, str2); - return no; - } - res = strcmp(str1, str2); - } else if (k1 == k_unsigned || k2 == k_unsigned) + else if (k1 == k_unsigned || k2 == k_unsigned) res = (lval.u > rval.u) - (lval.u < rval.u); else /* if (k1 == k_signed && k2 == k_signed) */ res = (lval.s > rval.s) - (lval.s < rval.s); @@ -1133,7 +1131,6 @@ static int expr_compare_type(enum expr_type t1, enum expr_type t2) default: return -1; } - printf("[%dgt%d?]", t1, t2); return 0; } diff --git a/support/kconfig/expr.h b/support/kconfig/expr.h index 94a383b21d..0158f5eac4 100644 --- a/support/kconfig/expr.h +++ b/support/kconfig/expr.h @@ -1,6 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ #ifndef EXPR_H @@ -12,17 +12,12 @@ extern "C" { #include #include -#include "list.h" +#include "list_types.h" #ifndef __cplusplus #include #endif -struct file { - struct file *next; - struct file *parent; - const char *name; - int lineno; -}; +#include "list_types.h" typedef enum tristate { no, mod, yes @@ -62,7 +57,7 @@ struct symbol_value { }; enum symbol_type { - S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING, S_OTHER + S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING }; /* enum values are used as index to symbol.def[] */ @@ -81,8 +76,8 @@ enum { * SYMBOL_CHOICE bit set in 'flags'. */ struct symbol { - /* The next symbol in the same bucket in the symbol hash table */ - struct symbol *next; + /* link node for the hash table */ + struct hlist_node node; /* The name of the symbol, e.g. "FOO" for 'config FOO' */ char *name; @@ -113,6 +108,9 @@ struct symbol { */ tristate visible; + /* config entries associated with this symbol */ + struct list_head menus; + /* SYMBOL_* flags */ int flags; @@ -131,8 +129,6 @@ struct symbol { struct expr_value implied; }; -#define for_all_symbols(i, sym) for (i = 0; i < SYMBOL_HASHSIZE; i++) for (sym = symbol_hash[i]; sym; sym = sym->next) if (sym->type != S_OTHER) - #define SYMBOL_CONST 0x0001 /* symbol is const */ #define SYMBOL_CHECK 0x0008 /* used during dependency checking */ #define SYMBOL_CHOICE 0x0010 /* start of a choice block (null name) */ @@ -141,7 +137,8 @@ struct symbol { #define SYMBOL_OPTIONAL 0x0100 /* choice is optional - values can be 'n' */ #define SYMBOL_WRITE 0x0200 /* write symbol to file (KCONFIG_CONFIG) */ #define SYMBOL_CHANGED 0x0400 /* ? */ -#define SYMBOL_AUTO 0x1000 /* value from environment variable */ +#define SYMBOL_WRITTEN 0x0800 /* track info to avoid double-write to .config */ +#define SYMBOL_NO_WRITE 0x1000 /* Symbol for internal use only; it will not be written */ #define SYMBOL_CHECKED 0x2000 /* used during dependency checking */ #define SYMBOL_WARNED 0x8000 /* warning has been issued */ @@ -155,11 +152,7 @@ struct symbol { /* choice values need to be set before calculating this symbol value */ #define SYMBOL_NEED_SET_CHOICE_VALUES 0x100000 -/* Set symbol to y if allnoconfig; used for symbols that hide others */ -#define SYMBOL_ALLNOCONFIG_Y 0x200000 - #define SYMBOL_MAXLENGTH 256 -#define SYMBOL_HASHSIZE 9973 /* A property represent the config options that can be associated * with a config "symbol". @@ -171,6 +164,9 @@ struct symbol { * config BAZ * int "BAZ Value" * range 1..255 + * + * Please, also check parser.y:print_symbol() when modifying the + * list of property types! */ enum prop_type { P_UNKNOWN, @@ -182,13 +178,11 @@ enum prop_type { P_SELECT, /* select BAR */ P_IMPLY, /* imply BAR */ P_RANGE, /* range 7..100 (for a symbol) */ - P_ENV, /* value from environment variable */ P_SYMBOL, /* where a symbol is defined */ }; struct property { struct property *next; /* next property - null if last */ - struct symbol *sym; /* the symbol for which the property is associated */ enum prop_type type; /* type of property */ const char *text; /* the prompt value - P_PROMPT, P_MENU, P_COMMENT */ struct expr_value visible; @@ -196,7 +190,7 @@ struct property { struct menu *menu; /* the menu the property are associated with * valid for: P_SELECT, P_RANGE, P_CHOICE, * P_PROMPT, P_DEFAULT, P_MENU, P_COMMENT */ - struct file *file; /* what file was this property defined */ + const char *filename; /* what file was this property defined */ int lineno; /* what lineno was this property defined */ }; @@ -231,6 +225,8 @@ struct menu { */ struct symbol *sym; + struct list_head link; /* link to symbol::menus */ + /* * The prompt associated with the node. This holds the prompt for a * symbol as well as the text for a menu or comment, along with the @@ -257,7 +253,7 @@ struct menu { char *help; /* The location where the menu node appears in the Kconfig files */ - struct file *file; + const char *filename; int lineno; /* For use by front ends that need to store auxiliary data */ @@ -276,18 +272,10 @@ struct jump_key { struct list_head entries; size_t offset; struct menu *target; - int index; }; -#define JUMP_NB 9 - -extern struct file *file_list; -extern struct file *current_file; -struct file *lookup_file(const char *name); - extern struct symbol symbol_yes, symbol_no, symbol_mod; extern struct symbol *modules_sym; -extern struct symbol *sym_defconfig_list; extern int cdebug; struct expr *expr_alloc_symbol(struct symbol *sym); struct expr *expr_alloc_one(enum expr_type type, struct expr *ce); @@ -298,6 +286,7 @@ struct expr *expr_alloc_or(struct expr *e1, struct expr *e2); struct expr *expr_copy(const struct expr *org); void expr_free(struct expr *e); void expr_eliminate_eq(struct expr **ep1, struct expr **ep2); +int expr_eq(struct expr *e1, struct expr *e2); tristate expr_calc_value(struct expr *e); struct expr *expr_trans_bool(struct expr *e); struct expr *expr_eliminate_dups(struct expr *e); diff --git a/support/kconfig/foo.h b/support/kconfig/foo.h deleted file mode 100644 index b9cfdf8312..0000000000 --- a/support/kconfig/foo.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef __KCONFIG_FOO_H -#define __KCONFIG_FOO_H - -#ifndef __APPLE__ -#include -#endif -#include - -#ifndef PATH_MAX -#define PATH_MAX 1024 -#endif -#endif /* __KCONFIG_FOO_H */ diff --git a/support/kconfig/gconf-cfg.sh b/support/kconfig/gconf-cfg.sh new file mode 100755 index 0000000000..040d8f3388 --- /dev/null +++ b/support/kconfig/gconf-cfg.sh @@ -0,0 +1,33 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +cflags=$1 +libs=$2 + +PKG="gtk+-2.0 gmodule-2.0 libglade-2.0" + +if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then + echo >&2 "*" + echo >&2 "* 'make gconfig' requires '${HOSTPKG_CONFIG}'. Please install it." + echo >&2 "*" + exit 1 +fi + +if ! ${HOSTPKG_CONFIG} --exists $PKG; then + echo >&2 "*" + echo >&2 "* Unable to find the GTK+ installation. Please make sure that" + echo >&2 "* the GTK+ 2.0 development package is correctly installed." + echo >&2 "* You need $PKG" + echo >&2 "*" + exit 1 +fi + +if ! ${HOSTPKG_CONFIG} --atleast-version=2.0.0 gtk+-2.0; then + echo >&2 "*" + echo >&2 "* GTK+ is present but version >= 2.0.0 is required." + echo >&2 "*" + exit 1 +fi + +${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags} +${HOSTPKG_CONFIG} --libs ${PKG} > ${libs} diff --git a/support/kconfig/gconf.c b/support/kconfig/gconf.c index 0c2d1c18f9..d24cebd974 100644 --- a/support/kconfig/gconf.c +++ b/support/kconfig/gconf.c @@ -1,18 +1,11 @@ -/* Hey EMACS -*- linux-c -*- */ +// SPDX-License-Identifier: GPL-2.0 /* - * * Copyright (C) 2002-2003 Romain Lievin - * Released under the terms of the GNU GPL v2.0. - * */ -#ifdef HAVE_CONFIG_H -# include -#endif - #include #include "lkc.h" -#include "images.c" +#include "images.h" #include #include @@ -21,6 +14,7 @@ #include #include +#include #include #include @@ -78,8 +72,8 @@ static gchar **fill_row(struct menu *menu); static void conf_changed(void); /* Helping/Debugging Functions */ - -const char *dbg_sym_flags(int val) +#ifdef DEBUG +static const char *dbg_sym_flags(int val) { static char buf[256]; @@ -101,16 +95,17 @@ const char *dbg_sym_flags(int val) strcat(buf, "write/"); if (val & SYMBOL_CHANGED) strcat(buf, "changed/"); - if (val & SYMBOL_AUTO) - strcat(buf, "auto/"); + if (val & SYMBOL_NO_WRITE) + strcat(buf, "no_write/"); buf[strlen(buf) - 1] = '\0'; return buf; } +#endif -void replace_button_icon(GladeXML * xml, GdkDrawable * window, - GtkStyle * style, gchar * btn_name, gchar ** xpm) +static void replace_button_icon(GladeXML *xml, GdkDrawable *window, + GtkStyle *style, gchar *btn_name, gchar **xpm) { GdkPixmap *pixmap; GdkBitmap *mask; @@ -128,7 +123,7 @@ void replace_button_icon(GladeXML * xml, GdkDrawable * window, } /* Main Window Initialization */ -void init_main_window(const gchar * glade_file) +static void init_main_window(const gchar *glade_file) { GladeXML *xml; GtkWidget *widget; @@ -137,7 +132,7 @@ void init_main_window(const gchar * glade_file) xml = glade_xml_new(glade_file, "window1", NULL); if (!xml) - g_error(_("GUI loading failed !\n")); + g_error("GUI loading failed !\n"); glade_xml_signal_autoconnect(xml); main_wnd = glade_xml_get_widget(xml, "window1"); @@ -190,7 +185,7 @@ void init_main_window(const gchar * glade_file) gtk_widget_show(main_wnd); } -void init_tree_model(void) +static void init_tree_model(void) { gint i; @@ -220,7 +215,7 @@ void init_tree_model(void) model1 = GTK_TREE_MODEL(tree1); } -void init_left_tree(void) +static void init_left_tree(void) { GtkTreeView *view = GTK_TREE_VIEW(tree1_w); GtkCellRenderer *renderer; @@ -233,7 +228,7 @@ void init_left_tree(void) column = gtk_tree_view_column_new(); gtk_tree_view_append_column(view, column); - gtk_tree_view_column_set_title(column, _("Options")); + gtk_tree_view_column_set_title(column, "Options"); renderer = gtk_cell_renderer_toggle_new(); gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), @@ -262,7 +257,7 @@ static void renderer_edited(GtkCellRendererText * cell, const gchar * path_string, const gchar * new_text, gpointer user_data); -void init_right_tree(void) +static void init_right_tree(void) { GtkTreeView *view = GTK_TREE_VIEW(tree2_w); GtkCellRenderer *renderer; @@ -276,7 +271,7 @@ void init_right_tree(void) column = gtk_tree_view_column_new(); gtk_tree_view_append_column(view, column); - gtk_tree_view_column_set_title(column, _("Options")); + gtk_tree_view_column_set_title(column, "Options"); renderer = gtk_cell_renderer_pixbuf_new(); gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), @@ -305,7 +300,7 @@ void init_right_tree(void) renderer = gtk_cell_renderer_text_new(); gtk_tree_view_insert_column_with_attributes(view, -1, - _("Name"), renderer, + "Name", renderer, "text", COL_NAME, "foreground-gdk", COL_COLOR, NULL); @@ -329,7 +324,7 @@ void init_right_tree(void) COL_COLOR, NULL); renderer = gtk_cell_renderer_text_new(); gtk_tree_view_insert_column_with_attributes(view, -1, - _("Value"), renderer, + "Value", renderer, "text", COL_VALUE, "editable", COL_EDIT, @@ -368,7 +363,7 @@ static void text_insert_help(struct menu *menu) { GtkTextBuffer *buffer; GtkTextIter start, end; - const char *prompt = _(menu_get_prompt(menu)); + const char *prompt = menu_get_prompt(menu); struct gstr help = str_new(); menu_get_ext_help(menu, &help); @@ -422,7 +417,7 @@ gboolean on_window1_delete_event(GtkWidget * widget, GdkEvent * event, if (!conf_get_changed()) return FALSE; - dialog = gtk_dialog_new_with_buttons(_("Warning !"), + dialog = gtk_dialog_new_with_buttons("Warning !", GTK_WINDOW(main_wnd), (GtkDialogFlags) (GTK_DIALOG_MODAL | @@ -436,7 +431,7 @@ gboolean on_window1_delete_event(GtkWidget * widget, GdkEvent * event, gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_CANCEL); - label = gtk_label_new(_("\nSave configuration ?\n")); + label = gtk_label_new("\nSave configuration ?\n"); gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), label); gtk_widget_show(label); @@ -496,7 +491,7 @@ load_filename(GtkFileSelection * file_selector, gpointer user_data) (user_data)); if (conf_read(fn)) - text_insert_msg(_("Error"), _("Unable to load configuration !")); + text_insert_msg("Error", "Unable to load configuration !"); else display_tree(&rootmenu); } @@ -505,7 +500,7 @@ void on_load1_activate(GtkMenuItem * menuitem, gpointer user_data) { GtkWidget *fs; - fs = gtk_file_selection_new(_("Load file...")); + fs = gtk_file_selection_new("Load file..."); g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fs)->ok_button), "clicked", G_CALLBACK(load_filename), (gpointer) fs); @@ -524,7 +519,8 @@ void on_load1_activate(GtkMenuItem * menuitem, gpointer user_data) void on_save_activate(GtkMenuItem * menuitem, gpointer user_data) { if (conf_write(NULL)) - text_insert_msg(_("Error"), _("Unable to save configuration !")); + text_insert_msg("Error", "Unable to save configuration !"); + conf_write_autoconf(0); } @@ -537,7 +533,7 @@ store_filename(GtkFileSelection * file_selector, gpointer user_data) (user_data)); if (conf_write(fn)) - text_insert_msg(_("Error"), _("Unable to save configuration !")); + text_insert_msg("Error", "Unable to save configuration !"); gtk_widget_destroy(GTK_WIDGET(user_data)); } @@ -546,7 +542,7 @@ void on_save_as1_activate(GtkMenuItem * menuitem, gpointer user_data) { GtkWidget *fs; - fs = gtk_file_selection_new(_("Save file as...")); + fs = gtk_file_selection_new("Save file as..."); g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fs)->ok_button), "clicked", G_CALLBACK(store_filename), (gpointer) fs); @@ -639,8 +635,8 @@ on_set_option_mode3_activate(GtkMenuItem *menuitem, gpointer user_data) void on_introduction1_activate(GtkMenuItem * menuitem, gpointer user_data) { GtkWidget *dialog; - const gchar *intro_text = _( - "Welcome to gkc, the GTK+ graphical configuration tool\n" + const gchar *intro_text = + "Welcome to gconfig, the GTK+ graphical configuration tool.\n" "For each option, a blank box indicates the feature is disabled, a\n" "check indicates it is enabled, and a dot indicates that it is to\n" "be compiled as a module. Clicking on the box will cycle through the three states.\n" @@ -651,10 +647,7 @@ void on_introduction1_activate(GtkMenuItem * menuitem, gpointer user_data) "Although there is no cross reference yet to help you figure out\n" "what other options must be enabled to support the option you\n" "are interested in, you can still view the help of a grayed-out\n" - "option.\n" - "\n" - "Toggling Show Debug Info under the Options menu will show \n" - "the dependencies, which you can then match by examining other options."); + "option."; dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), GTK_DIALOG_DESTROY_WITH_PARENT, @@ -671,8 +664,8 @@ void on_about1_activate(GtkMenuItem * menuitem, gpointer user_data) { GtkWidget *dialog; const gchar *about_text = - _("gkc is copyright (c) 2002 Romain Lievin .\n" - "Based on the source code from Roman Zippel.\n"); + "gconfig is copyright (c) 2002 Romain Lievin .\n" + "Based on the source code from Roman Zippel.\n"; dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), GTK_DIALOG_DESTROY_WITH_PARENT, @@ -689,9 +682,9 @@ void on_license1_activate(GtkMenuItem * menuitem, gpointer user_data) { GtkWidget *dialog; const gchar *license_text = - _("gkc is released under the terms of the GNU GPL v2.\n" + "gconfig is released under the terms of the GNU GPL v2.\n" "For more information, please see the source code or\n" - "visit http://www.fsf.org/licenses/licenses.html\n"); + "visit http://www.fsf.org/licenses/licenses.html\n"; dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), GTK_DIALOG_DESTROY_WITH_PARENT, @@ -1048,8 +1041,13 @@ static gchar **fill_row(struct menu *menu) g_free(row[i]); bzero(row, sizeof(row)); + ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; + row[COL_OPTION] = - g_strdup_printf("%s %s", _(menu_get_prompt(menu)), + g_strdup_printf("%s %s %s %s", + ptype == P_COMMENT ? "***" : "", + menu_get_prompt(menu), + ptype == P_COMMENT ? "***" : "", sym && !sym_has_value(sym) ? "(NEW)" : ""); if (opt_mode == OPT_ALL && !menu_is_visible(menu)) @@ -1060,7 +1058,6 @@ static gchar **fill_row(struct menu *menu) else row[COL_COLOR] = g_strdup("Black"); - ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; switch (ptype) { case P_MENU: row[COL_PIXBUF] = (gchar *) xpm_menu; @@ -1102,7 +1099,7 @@ static gchar **fill_row(struct menu *menu) if (def_menu) row[COL_VALUE] = - g_strdup(_(menu_get_prompt(def_menu))); + g_strdup(menu_get_prompt(def_menu)); } if (sym->flags & SYMBOL_CHOICEVAL) row[COL_BTNRAD] = GINT_TO_POINTER(TRUE); @@ -1211,8 +1208,8 @@ static GtkTreeIter found; /* * Find a menu in the GtkTree starting at parent. */ -GtkTreeIter *gtktree_iter_find_node(GtkTreeIter * parent, - struct menu *tofind) +static GtkTreeIter *gtktree_iter_find_node(GtkTreeIter *parent, + struct menu *tofind) { GtkTreeIter iter; GtkTreeIter *child = &iter; @@ -1423,7 +1420,7 @@ static void display_list(void) tree = tree2; } -void fixup_rootmenu(struct menu *menu) +static void fixup_rootmenu(struct menu *menu) { struct menu *child; static int menu_cnt = 0; @@ -1447,18 +1444,11 @@ int main(int ac, char *av[]) char *env; gchar *glade_file; - bindtextdomain(PACKAGE, LOCALEDIR); - bind_textdomain_codeset(PACKAGE, "UTF-8"); - textdomain(PACKAGE); - /* GTK stuffs */ gtk_set_locale(); gtk_init(&ac, &av); glade_init(); - //add_pixmap_directory (PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps"); - //add_pixmap_directory (PACKAGE_SOURCE_DIR "/pixmaps"); - /* Determine GUI path */ env = getenv(SRCTREE); if (env) diff --git a/support/kconfig/hashtable.h b/support/kconfig/hashtable.h new file mode 100644 index 0000000000..a0a2c8f5f6 --- /dev/null +++ b/support/kconfig/hashtable.h @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +#ifndef HASHTABLE_H +#define HASHTABLE_H + +#include "array_size.h" +#include "list.h" + +#define HASH_SIZE(name) (ARRAY_SIZE(name)) + +#define HASHTABLE_DECLARE(name, size) struct hlist_head name[size] + +#define HASHTABLE_DEFINE(name, size) \ + HASHTABLE_DECLARE(name, size) = \ + { [0 ... ((size) - 1)] = HLIST_HEAD_INIT } + +#define hash_head(table, key) (&(table)[(key) % HASH_SIZE(table)]) + +/** + * hash_add - add an object to a hashtable + * @table: hashtable to add to + * @node: the &struct hlist_node of the object to be added + * @key: the key of the object to be added + */ +#define hash_add(table, node, key) \ + hlist_add_head(node, hash_head(table, key)) + +/** + * hash_for_each - iterate over a hashtable + * @table: hashtable to iterate + * @obj: the type * to use as a loop cursor for each entry + * @member: the name of the hlist_node within the struct + */ +#define hash_for_each(table, obj, member) \ + for (int _bkt = 0; _bkt < HASH_SIZE(table); _bkt++) \ + hlist_for_each_entry(obj, &table[_bkt], member) + +/** + * hash_for_each_possible - iterate over all possible objects hashing to the + * same bucket + * @table: hashtable to iterate + * @obj: the type * to use as a loop cursor for each entry + * @member: the name of the hlist_node within the struct + * @key: the key of the objects to iterate over + */ +#define hash_for_each_possible(table, obj, member, key) \ + hlist_for_each_entry(obj, hash_head(table, key), member) + +#endif /* HASHTABLE_H */ diff --git a/support/kconfig/images.c b/support/kconfig/images.c index d4f84bd4a9..2f9afffa5d 100644 --- a/support/kconfig/images.c +++ b/support/kconfig/images.c @@ -1,9 +1,11 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ -static const char *xpm_load[] = { +#include "images.h" + +const char * const xpm_load[] = { "22 22 5 1", ". c None", "# c #000000", @@ -33,7 +35,7 @@ static const char *xpm_load[] = { "###############.......", "......................"}; -static const char *xpm_save[] = { +const char * const xpm_save[] = { "22 22 5 1", ". c None", "# c #000000", @@ -63,7 +65,7 @@ static const char *xpm_save[] = { "..##################..", "......................"}; -static const char *xpm_back[] = { +const char * const xpm_back[] = { "22 22 3 1", ". c None", "# c #000083", @@ -91,7 +93,7 @@ static const char *xpm_back[] = { "......................", "......................"}; -static const char *xpm_tree_view[] = { +const char * const xpm_tree_view[] = { "22 22 2 1", ". c None", "# c #000000", @@ -118,7 +120,7 @@ static const char *xpm_tree_view[] = { "......................", "......................"}; -static const char *xpm_single_view[] = { +const char * const xpm_single_view[] = { "22 22 2 1", ". c None", "# c #000000", @@ -145,7 +147,7 @@ static const char *xpm_single_view[] = { "......................", "......................"}; -static const char *xpm_split_view[] = { +const char * const xpm_split_view[] = { "22 22 2 1", ". c None", "# c #000000", @@ -172,7 +174,7 @@ static const char *xpm_split_view[] = { "......................", "......................"}; -static const char *xpm_symbol_no[] = { +const char * const xpm_symbol_no[] = { "12 12 2 1", " c white", ". c black", @@ -189,7 +191,7 @@ static const char *xpm_symbol_no[] = { " .......... ", " "}; -static const char *xpm_symbol_mod[] = { +const char * const xpm_symbol_mod[] = { "12 12 2 1", " c white", ". c black", @@ -206,7 +208,7 @@ static const char *xpm_symbol_mod[] = { " .......... ", " "}; -static const char *xpm_symbol_yes[] = { +const char * const xpm_symbol_yes[] = { "12 12 2 1", " c white", ". c black", @@ -223,7 +225,7 @@ static const char *xpm_symbol_yes[] = { " .......... ", " "}; -static const char *xpm_choice_no[] = { +const char * const xpm_choice_no[] = { "12 12 2 1", " c white", ". c black", @@ -240,7 +242,7 @@ static const char *xpm_choice_no[] = { " .... ", " "}; -static const char *xpm_choice_yes[] = { +const char * const xpm_choice_yes[] = { "12 12 2 1", " c white", ". c black", @@ -257,7 +259,7 @@ static const char *xpm_choice_yes[] = { " .... ", " "}; -static const char *xpm_menu[] = { +const char * const xpm_menu[] = { "12 12 2 1", " c white", ". c black", @@ -274,7 +276,7 @@ static const char *xpm_menu[] = { " .......... ", " "}; -static const char *xpm_menu_inv[] = { +const char * const xpm_menu_inv[] = { "12 12 2 1", " c white", ". c black", @@ -291,7 +293,7 @@ static const char *xpm_menu_inv[] = { " .......... ", " "}; -static const char *xpm_menuback[] = { +const char * const xpm_menuback[] = { "12 12 2 1", " c white", ". c black", @@ -308,7 +310,7 @@ static const char *xpm_menuback[] = { " .......... ", " "}; -static const char *xpm_void[] = { +const char * const xpm_void[] = { "12 12 2 1", " c white", ". c black", diff --git a/support/kconfig/images.h b/support/kconfig/images.h new file mode 100644 index 0000000000..7212dec200 --- /dev/null +++ b/support/kconfig/images.h @@ -0,0 +1,33 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2002 Roman Zippel + */ + +#ifndef IMAGES_H +#define IMAGES_H + +#ifdef __cplusplus +extern "C" { +#endif + +extern const char * const xpm_load[]; +extern const char * const xpm_save[]; +extern const char * const xpm_back[]; +extern const char * const xpm_tree_view[]; +extern const char * const xpm_single_view[]; +extern const char * const xpm_split_view[]; +extern const char * const xpm_symbol_no[]; +extern const char * const xpm_symbol_mod[]; +extern const char * const xpm_symbol_yes[]; +extern const char * const xpm_choice_no[]; +extern const char * const xpm_choice_yes[]; +extern const char * const xpm_menu[]; +extern const char * const xpm_menu_inv[]; +extern const char * const xpm_menuback[]; +extern const char * const xpm_void[]; + +#ifdef __cplusplus +} +#endif + +#endif /* IMAGES_H */ diff --git a/support/kconfig/internal.h b/support/kconfig/internal.h new file mode 100644 index 0000000000..6c721c4cfd --- /dev/null +++ b/support/kconfig/internal.h @@ -0,0 +1,21 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +#ifndef INTERNAL_H +#define INTERNAL_H + +#include "hashtable.h" + +#define SYMBOL_HASHSIZE (1U << 14) + +extern HASHTABLE_DECLARE(sym_hashtable, SYMBOL_HASHSIZE); + +#define for_all_symbols(sym) \ + hash_for_each(sym_hashtable, sym, node) + +struct menu; + +extern struct menu *current_menu, *current_entry; + +extern const char *cur_filename; +extern int cur_lineno; + +#endif /* INTERNAL_H */ diff --git a/support/kconfig/kconf_id.c b/support/kconfig/kconf_id.c deleted file mode 100644 index 3ea9c5f9f7..0000000000 --- a/support/kconfig/kconf_id.c +++ /dev/null @@ -1,53 +0,0 @@ - -static struct kconf_id kconf_id_array[] = { - { "mainmenu", T_MAINMENU, TF_COMMAND }, - { "menu", T_MENU, TF_COMMAND }, - { "endmenu", T_ENDMENU, TF_COMMAND }, - { "source", T_SOURCE, TF_COMMAND }, - { "choice", T_CHOICE, TF_COMMAND }, - { "endchoice", T_ENDCHOICE, TF_COMMAND }, - { "comment", T_COMMENT, TF_COMMAND }, - { "config", T_CONFIG, TF_COMMAND }, - { "menuconfig", T_MENUCONFIG, TF_COMMAND }, - { "help", T_HELP, TF_COMMAND }, - { "---help---", T_HELP, TF_COMMAND }, - { "if", T_IF, TF_COMMAND|TF_PARAM }, - { "endif", T_ENDIF, TF_COMMAND }, - { "depends", T_DEPENDS, TF_COMMAND }, - { "optional", T_OPTIONAL, TF_COMMAND }, - { "default", T_DEFAULT, TF_COMMAND, S_UNKNOWN }, - { "prompt", T_PROMPT, TF_COMMAND }, - { "tristate", T_TYPE, TF_COMMAND, S_TRISTATE }, - { "def_tristate", T_DEFAULT, TF_COMMAND, S_TRISTATE }, - { "bool", T_TYPE, TF_COMMAND, S_BOOLEAN }, - { "def_bool", T_DEFAULT, TF_COMMAND, S_BOOLEAN }, - { "int", T_TYPE, TF_COMMAND, S_INT }, - { "hex", T_TYPE, TF_COMMAND, S_HEX }, - { "string", T_TYPE, TF_COMMAND, S_STRING }, - { "select", T_SELECT, TF_COMMAND }, - { "imply", T_IMPLY, TF_COMMAND }, - { "range", T_RANGE, TF_COMMAND }, - { "visible", T_VISIBLE, TF_COMMAND }, - { "option", T_OPTION, TF_COMMAND }, - { "on", T_ON, TF_PARAM }, - { "modules", T_OPT_MODULES, TF_OPTION }, - { "defconfig_list", T_OPT_DEFCONFIG_LIST, TF_OPTION }, - { "env", T_OPT_ENV, TF_OPTION }, - { "allnoconfig_y", T_OPT_ALLNOCONFIG_Y, TF_OPTION }, -}; - -#define KCONF_ID_ARRAY_SIZE (sizeof(kconf_id_array)/sizeof(struct kconf_id)) - -static const struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len) -{ - int i; - - for (i = 0; i < KCONF_ID_ARRAY_SIZE; i++) { - struct kconf_id *id = kconf_id_array+i; - int l = strlen(id->name); - - if (len == l && !memcmp(str, id->name, len)) - return id; - } - return NULL; -} diff --git a/support/kconfig/kxgettext.c b/support/kconfig/kxgettext.c deleted file mode 100644 index 240880a891..0000000000 --- a/support/kconfig/kxgettext.c +++ /dev/null @@ -1,235 +0,0 @@ -/* - * Arnaldo Carvalho de Melo , 2005 - * - * Released under the terms of the GNU GPL v2.0 - */ - -#include -#include - -#include "lkc.h" - -static char *escape(const char* text, char *bf, int len) -{ - char *bfp = bf; - int multiline = strchr(text, '\n') != NULL; - int eol = 0; - int textlen = strlen(text); - - if ((textlen > 0) && (text[textlen-1] == '\n')) - eol = 1; - - *bfp++ = '"'; - --len; - - if (multiline) { - *bfp++ = '"'; - *bfp++ = '\n'; - *bfp++ = '"'; - len -= 3; - } - - while (*text != '\0' && len > 1) { - if (*text == '"') - *bfp++ = '\\'; - else if (*text == '\n') { - *bfp++ = '\\'; - *bfp++ = 'n'; - *bfp++ = '"'; - *bfp++ = '\n'; - *bfp++ = '"'; - len -= 5; - ++text; - goto next; - } - else if (*text == '\\') { - *bfp++ = '\\'; - len--; - } - *bfp++ = *text++; -next: - --len; - } - - if (multiline && eol) - bfp -= 3; - - *bfp++ = '"'; - *bfp = '\0'; - - return bf; -} - -struct file_line { - struct file_line *next; - const char *file; - int lineno; -}; - -static struct file_line *file_line__new(const char *file, int lineno) -{ - struct file_line *self = malloc(sizeof(*self)); - - if (self == NULL) - goto out; - - self->file = file; - self->lineno = lineno; - self->next = NULL; -out: - return self; -} - -struct message { - const char *msg; - const char *option; - struct message *next; - struct file_line *files; -}; - -static struct message *message__list; - -static struct message *message__new(const char *msg, char *option, - const char *file, int lineno) -{ - struct message *self = malloc(sizeof(*self)); - - if (self == NULL) - goto out; - - self->files = file_line__new(file, lineno); - if (self->files == NULL) - goto out_fail; - - self->msg = xstrdup(msg); - if (self->msg == NULL) - goto out_fail_msg; - - self->option = option; - self->next = NULL; -out: - return self; -out_fail_msg: - free(self->files); -out_fail: - free(self); - self = NULL; - goto out; -} - -static struct message *mesage__find(const char *msg) -{ - struct message *m = message__list; - - while (m != NULL) { - if (strcmp(m->msg, msg) == 0) - break; - m = m->next; - } - - return m; -} - -static int message__add_file_line(struct message *self, const char *file, - int lineno) -{ - int rc = -1; - struct file_line *fl = file_line__new(file, lineno); - - if (fl == NULL) - goto out; - - fl->next = self->files; - self->files = fl; - rc = 0; -out: - return rc; -} - -static int message__add(const char *msg, char *option, const char *file, - int lineno) -{ - int rc = 0; - char bf[16384]; - char *escaped = escape(msg, bf, sizeof(bf)); - struct message *m = mesage__find(escaped); - - if (m != NULL) - rc = message__add_file_line(m, file, lineno); - else { - m = message__new(escaped, option, file, lineno); - - if (m != NULL) { - m->next = message__list; - message__list = m; - } else - rc = -1; - } - return rc; -} - -static void menu_build_message_list(struct menu *menu) -{ - struct menu *child; - - message__add(menu_get_prompt(menu), NULL, - menu->file == NULL ? "Root Menu" : menu->file->name, - menu->lineno); - - if (menu->sym != NULL && menu_has_help(menu)) - message__add(menu_get_help(menu), menu->sym->name, - menu->file == NULL ? "Root Menu" : menu->file->name, - menu->lineno); - - for (child = menu->list; child != NULL; child = child->next) - if (child->prompt != NULL) - menu_build_message_list(child); -} - -static void message__print_file_lineno(struct message *self) -{ - struct file_line *fl = self->files; - - putchar('\n'); - if (self->option != NULL) - printf("# %s:00000\n", self->option); - - printf("#: %s:%d", fl->file, fl->lineno); - fl = fl->next; - - while (fl != NULL) { - printf(", %s:%d", fl->file, fl->lineno); - fl = fl->next; - } - - putchar('\n'); -} - -static void message__print_gettext_msgid_msgstr(struct message *self) -{ - message__print_file_lineno(self); - - printf("msgid %s\n" - "msgstr \"\"\n", self->msg); -} - -static void menu__xgettext(void) -{ - struct message *m = message__list; - - while (m != NULL) { - /* skip empty lines ("") */ - if (strlen(m->msg) > sizeof("\"\"")) - message__print_gettext_msgid_msgstr(m); - m = m->next; - } -} - -int main(int ac, char **av) -{ - conf_parse(av[1]); - - menu_build_message_list(menu_get_root_menu(NULL)); - menu__xgettext(); - return 0; -} diff --git a/support/kconfig/lexer.l b/support/kconfig/lexer.l new file mode 100644 index 0000000000..89544c3a1a --- /dev/null +++ b/support/kconfig/lexer.l @@ -0,0 +1,460 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2002 Roman Zippel + */ +%option nostdinit noyywrap never-interactive full ecs +%option 8bit nodefault yylineno +%x ASSIGN_VAL HELP STRING +%{ + +#include +#include +#include +#include +#include + +#include "lkc.h" +#include "preprocess.h" + +#include "parser.tab.h" + +#define YY_DECL static int yylex1(void) + +#define START_STRSIZE 16 + +/* The Kconfig file currently being parsed. */ +const char *cur_filename; + +/* + * The line number of the current statement. This does not match yylineno. + * yylineno is used by the lexer, while cur_lineno is used by the parser. + */ +int cur_lineno; + +static int prev_prev_token = T_EOL; +static int prev_token = T_EOL; +static char *text; +static int text_size, text_asize; + +struct buffer { + struct buffer *parent; + YY_BUFFER_STATE state; + int yylineno; + const char *filename; + int source_lineno; +}; + +static struct buffer *current_buf; + +static int last_ts, first_ts; + +static char *expand_token(const char *in, size_t n); +static void append_expanded_string(const char *in); +static void zconf_endhelp(void); +static void zconf_endfile(void); + +static void new_string(void) +{ + text = xmalloc(START_STRSIZE); + text_asize = START_STRSIZE; + text_size = 0; + *text = 0; +} + +static void append_string(const char *str, int size) +{ + int new_size = text_size + size + 1; + if (new_size > text_asize) { + new_size += START_STRSIZE - 1; + new_size &= -START_STRSIZE; + text = xrealloc(text, new_size); + text_asize = new_size; + } + memcpy(text + text_size, str, size); + text_size += size; + text[text_size] = 0; +} + +static void alloc_string(const char *str, int size) +{ + text = xmalloc(size + 1); + memcpy(text, str, size); + text[size] = 0; +} + +static void warn_ignored_character(char chr) +{ + fprintf(stderr, + "%s:%d:warning: ignoring unsupported character '%c'\n", + cur_filename, yylineno, chr); +} +%} + +n [A-Za-z0-9_-] + +%% + char open_quote = 0; + +#.* /* ignore comment */ +[ \t]* /* whitespaces */ +\\\n /* escaped new line */ +\n return T_EOL; +"bool" return T_BOOL; +"choice" return T_CHOICE; +"comment" return T_COMMENT; +"config" return T_CONFIG; +"def_bool" return T_DEF_BOOL; +"def_tristate" return T_DEF_TRISTATE; +"default" return T_DEFAULT; +"depends" return T_DEPENDS; +"endchoice" return T_ENDCHOICE; +"endif" return T_ENDIF; +"endmenu" return T_ENDMENU; +"help" return T_HELP; +"hex" return T_HEX; +"if" return T_IF; +"imply" return T_IMPLY; +"int" return T_INT; +"mainmenu" return T_MAINMENU; +"menu" return T_MENU; +"menuconfig" return T_MENUCONFIG; +"modules" return T_MODULES; +"on" return T_ON; +"optional" return T_OPTIONAL; +"prompt" return T_PROMPT; +"range" return T_RANGE; +"select" return T_SELECT; +"source" return T_SOURCE; +"string" return T_STRING; +"tristate" return T_TRISTATE; +"visible" return T_VISIBLE; +"||" return T_OR; +"&&" return T_AND; +"=" return T_EQUAL; +"!=" return T_UNEQUAL; +"<" return T_LESS; +"<=" return T_LESS_EQUAL; +">" return T_GREATER; +">=" return T_GREATER_EQUAL; +"!" return T_NOT; +"(" return T_OPEN_PAREN; +")" return T_CLOSE_PAREN; +":=" return T_COLON_EQUAL; +"+=" return T_PLUS_EQUAL; +\"|\' { + open_quote = yytext[0]; + new_string(); + BEGIN(STRING); + } +{n}+ { + alloc_string(yytext, yyleng); + yylval.string = text; + return T_WORD; + } +({n}|$)+ { + /* this token includes at least one '$' */ + yylval.string = expand_token(yytext, yyleng); + if (strlen(yylval.string)) + return T_WORD; + free(yylval.string); + } +. warn_ignored_character(*yytext); + +{ + [^[:blank:]\n]+.* { + alloc_string(yytext, yyleng); + yylval.string = text; + return T_ASSIGN_VAL; + } + \n { BEGIN(INITIAL); return T_EOL; } + . +} + +{ + "$".* append_expanded_string(yytext); + [^$'"\\\n]+ { + append_string(yytext, yyleng); + } + \\.? { + append_string(yytext + 1, yyleng - 1); + } + \'|\" { + if (open_quote == yytext[0]) { + BEGIN(INITIAL); + yylval.string = text; + return T_WORD_QUOTE; + } else + append_string(yytext, 1); + } + \n { + fprintf(stderr, + "%s:%d:warning: multi-line strings not supported\n", + cur_filename, cur_lineno); + unput('\n'); + BEGIN(INITIAL); + yylval.string = text; + return T_WORD_QUOTE; + } + <> { + BEGIN(INITIAL); + yylval.string = text; + return T_WORD_QUOTE; + } +} + +{ + [ \t]+ { + int ts, i; + + ts = 0; + for (i = 0; i < yyleng; i++) { + if (yytext[i] == '\t') + ts = (ts & ~7) + 8; + else + ts++; + } + last_ts = ts; + if (first_ts) { + if (ts < first_ts) { + zconf_endhelp(); + return T_HELPTEXT; + } + ts -= first_ts; + while (ts > 8) { + append_string(" ", 8); + ts -= 8; + } + append_string(" ", ts); + } + } + [ \t]*\n/[^ \t\n] { + zconf_endhelp(); + return T_HELPTEXT; + } + [ \t]*\n { + append_string("\n", 1); + } + [^ \t\n].* { + while (yyleng) { + if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t')) + break; + yyleng--; + } + append_string(yytext, yyleng); + if (!first_ts) + first_ts = last_ts; + } + <> { + zconf_endhelp(); + return T_HELPTEXT; + } +} + +<> { + BEGIN(INITIAL); + + if (prev_token != T_EOL && prev_token != T_HELPTEXT) + fprintf(stderr, "%s:%d:warning: no new line at end of file\n", + cur_filename, yylineno); + + if (current_buf) { + zconf_endfile(); + return T_EOL; + } + fclose(yyin); + yyterminate(); +} + +%% + +/* second stage lexer */ +int yylex(void) +{ + int token; + +repeat: + token = yylex1(); + + if (prev_token == T_EOL || prev_token == T_HELPTEXT) { + if (token == T_EOL) + /* Do not pass unneeded T_EOL to the parser. */ + goto repeat; + else + /* + * For the parser, update lineno at the first token + * of each statement. Generally, \n is a statement + * terminator in Kconfig, but it is not always true + * because \n could be escaped by a backslash. + */ + cur_lineno = yylineno; + } + + if (prev_prev_token == T_EOL && prev_token == T_WORD && + (token == T_EQUAL || token == T_COLON_EQUAL || token == T_PLUS_EQUAL)) + BEGIN(ASSIGN_VAL); + + prev_prev_token = prev_token; + prev_token = token; + + return token; +} + +static char *expand_token(const char *in, size_t n) +{ + char *out; + int c; + char c2; + const char *rest, *end; + + new_string(); + append_string(in, n); + + /* + * get the whole line because we do not know the end of token. + * input() returns 0 (not EOF!) when it reachs the end of file. + */ + while ((c = input()) != 0) { + if (c == '\n') { + unput(c); + break; + } + c2 = c; + append_string(&c2, 1); + } + + rest = text; + out = expand_one_token(&rest); + + /* push back unused characters to the input stream */ + end = rest + strlen(rest); + while (end > rest) + unput(*--end); + + free(text); + + return out; +} + +static void append_expanded_string(const char *str) +{ + const char *end; + char *res; + + str++; + + res = expand_dollar(&str); + + /* push back unused characters to the input stream */ + end = str + strlen(str); + while (end > str) + unput(*--end); + + append_string(res, strlen(res)); + + free(res); +} + +void zconf_starthelp(void) +{ + new_string(); + last_ts = first_ts = 0; + BEGIN(HELP); +} + +static void zconf_endhelp(void) +{ + yylval.string = text; + BEGIN(INITIAL); +} + + +/* + * Try to open specified file with following names: + * ./name + * $(srctree)/name + * The latter is used when srctree is separate from objtree + * when compiling the kernel. + * Return NULL if file is not found. + */ +FILE *zconf_fopen(const char *name) +{ + char *env, fullname[PATH_MAX+1]; + FILE *f; + + f = fopen(name, "r"); + if (!f && name != NULL && name[0] != '/') { + env = getenv(SRCTREE); + if (env) { + snprintf(fullname, sizeof(fullname), + "%s/%s", env, name); + f = fopen(fullname, "r"); + } + } + return f; +} + +void zconf_initscan(const char *name) +{ + yyin = zconf_fopen(name); + if (!yyin) { + fprintf(stderr, "can't find file %s\n", name); + exit(1); + } + + cur_filename = file_lookup(name); + yylineno = 1; +} + +void zconf_nextfile(const char *name) +{ + struct buffer *buf = xmalloc(sizeof(*buf)); + bool recur_include = false; + + buf->state = YY_CURRENT_BUFFER; + buf->yylineno = yylineno; + buf->filename = cur_filename; + buf->source_lineno = cur_lineno; + buf->parent = current_buf; + current_buf = buf; + yyin = zconf_fopen(name); + if (!yyin) { + fprintf(stderr, "%s:%d: can't open file \"%s\"\n", + cur_filename, cur_lineno, name); + exit(1); + } + yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); + + for (buf = current_buf; buf; buf = buf->parent) { + if (!strcmp(buf->filename, name)) + recur_include = true; + } + + if (recur_include) { + fprintf(stderr, + "Recursive inclusion detected.\n" + "Inclusion path:\n" + " current file : %s\n", name); + + for (buf = current_buf; buf; buf = buf->parent) + fprintf(stderr, " included from: %s:%d\n", + buf->filename, buf->source_lineno); + exit(1); + } + + yylineno = 1; + cur_filename = file_lookup(name); +} + +static void zconf_endfile(void) +{ + struct buffer *tmp; + + fclose(yyin); + yy_delete_buffer(YY_CURRENT_BUFFER); + yy_switch_to_buffer(current_buf->state); + yylineno = current_buf->yylineno; + cur_filename = current_buf->filename; + tmp = current_buf; + current_buf = current_buf->parent; + free(tmp); +} diff --git a/support/kconfig/lexer.lex.c_shipped b/support/kconfig/lexer.lex.c_shipped new file mode 100644 index 0000000000..8d29983b47 --- /dev/null +++ b/support/kconfig/lexer.lex.c_shipped @@ -0,0 +1,4103 @@ + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 6 +#define YY_FLEX_SUBMINOR_VERSION 4 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#ifndef SIZE_MAX +#define SIZE_MAX (~(size_t)0) +#endif + +#endif /* ! C99 */ + +#endif /* ! FLEXINT_H */ + +/* begin standard C++ headers. */ + +/* TODO: this is always defined, so inline it */ +#define yyconst const + +#if defined(__GNUC__) && __GNUC__ >= 3 +#define yynoreturn __attribute__((__noreturn__)) +#else +#define yynoreturn +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an + * integer in range [0..255] for use as an array index. + */ +#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN (yy_start) = 1 + 2 * +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START (((yy_start) - 1) / 2) +#define YYSTATE YY_START +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE yyrestart( yyin ) +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k. + * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. + * Ditto for the __ia64__ case accordingly. + */ +#define YY_BUF_SIZE 32768 +#else +#define YY_BUF_SIZE 16384 +#endif /* __ia64__ */ +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +extern int yyleng; + +extern FILE *yyin, *yyout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires + * access to the local variable yy_act. Since yyless() is a macro, it would break + * existing scanners that call yyless() from OUTSIDE yylex. + * One obvious solution it to make yy_act a global. I tried that, and saw + * a 5% performance hit in a non-yylineno scanner, because yy_act is + * normally declared as a register variable-- so it is not worth it. + */ + #define YY_LESS_LINENO(n) \ + do { \ + int yyl;\ + for ( yyl = n; yyl < yyleng; ++yyl )\ + if ( yytext[yyl] == '\n' )\ + --yylineno;\ + }while(0) + #define YY_LINENO_REWIND_TO(dst) \ + do {\ + const char *p;\ + for ( p = yy_cp-1; p >= (dst); --p)\ + if ( *p == '\n' )\ + --yylineno;\ + }while(0) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = (yy_hold_char); \ + YY_RESTORE_YY_MORE_OFFSET \ + (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) +#define unput(c) yyunput( c, (yytext_ptr) ) + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + int yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* Stack of input buffers. */ +static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ + ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ + : NULL) +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] + +/* yy_hold_char holds the character lost when yytext is formed. */ +static char yy_hold_char; +static int yy_n_chars; /* number of characters read into yy_ch_buf */ +int yyleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = NULL; +static int yy_init = 0; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow yywrap()'s to do buffer switches + * instead of setting up a fresh yyin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void yyrestart ( FILE *input_file ); +void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); +void yy_delete_buffer ( YY_BUFFER_STATE b ); +void yy_flush_buffer ( YY_BUFFER_STATE b ); +void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); +void yypop_buffer_state ( void ); + +static void yyensure_buffer_stack ( void ); +static void yy_load_buffer_state ( void ); +static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); +#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) + +YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); +YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); +YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); + +void *yyalloc ( yy_size_t ); +void *yyrealloc ( void *, yy_size_t ); +void yyfree ( void * ); + +#define yy_new_buffer yy_create_buffer +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer( yyin, YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer( yyin, YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +#define yywrap() (/*CONSTCOND*/1) +#define YY_SKIP_YYWRAP +typedef flex_uint8_t YY_CHAR; + +FILE *yyin = NULL, *yyout = NULL; + +typedef int yy_state_type; + +extern int yylineno; +int yylineno = 1; + +extern char *yytext; +#ifdef yytext_ptr +#undef yytext_ptr +#endif +#define yytext_ptr yytext + +static const flex_int16_t yy_nxt[][42] = + { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 + }, + + { + 9, 10, 11, 12, 13, 14, 15, 16, 17, 14, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 21, + 21, 27, 28, 29, 30, 21, 21, 31, 32, 21, + 33, 21, 34, 35, 36, 37, 38, 21, 39, 21, + 21, 40 + + }, + + { + 9, 10, 11, 12, 13, 14, 15, 16, 17, 14, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 21, + 21, 27, 28, 29, 30, 21, 21, 31, 32, 21, + 33, 21, 34, 35, 36, 37, 38, 21, 39, 21, + 21, 40 + }, + + { + 9, 41, 42, 43, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41 + + }, + + { + 9, 41, 42, 43, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41 + }, + + { + 9, 44, 45, 46, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44 + + }, + + { + 9, 44, 45, 46, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44 + }, + + { + 9, 47, 47, 48, 47, 49, 47, 50, 47, 49, + 47, 47, 47, 47, 47, 47, 47, 47, 51, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47 + + }, + + { + 9, 47, 47, 48, 47, 49, 47, 50, 47, 49, + 47, 47, 47, 47, 47, 47, 47, 47, 51, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47 + }, + + { + -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + -9, -9 + + }, + + { + 9, -10, -10, -10, -10, -10, -10, -10, -10, -10, + -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, + -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, + -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, + -10, -10 + }, + + { + 9, -11, 52, -11, -11, -11, -11, -11, -11, -11, + -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, + -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, + -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, + -11, -11 + + }, + + { + 9, -12, -12, -12, -12, -12, -12, -12, -12, -12, + -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, + -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, + -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, + -12, -12 + }, + + { + 9, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, 53, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13 + + }, + + { + 9, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14 + }, + + { + 9, 54, 54, -15, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54 + + }, + + { + 9, -16, -16, -16, -16, -16, -16, 55, -16, -16, + -16, -16, -16, 55, -16, -16, -16, -16, -16, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, -16 + }, + + { + 9, -17, -17, -17, -17, -17, -17, -17, 56, -17, + -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, + -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, + -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, + -17, -17 + + }, + + { + 9, -18, -18, -18, -18, -18, -18, -18, -18, -18, + -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, + -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, + -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, + -18, -18 + }, + + { + 9, -19, -19, -19, -19, -19, -19, -19, -19, -19, + -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, + -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, + -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, + -19, -19 + + }, + + { + 9, -20, -20, -20, -20, -20, -20, -20, -20, -20, + -20, -20, -20, -20, -20, -20, 57, -20, -20, -20, + -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, + -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, + -20, -20 + }, + + { + 9, -21, -21, -21, -21, -21, -21, 55, -21, -21, + -21, -21, -21, 58, -21, -21, -21, -21, -21, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -21 + + }, + + { + 9, -22, -22, -22, -22, -22, -22, -22, -22, -22, + -22, -22, -22, -22, -22, -22, 59, -22, -22, -22, + -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, + -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, + -22, -22 + }, + + { + 9, -23, -23, -23, -23, -23, -23, -23, -23, -23, + -23, -23, -23, -23, -23, -23, 60, -23, -23, -23, + -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, + -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, + -23, -23 + + }, + + { + 9, -24, -24, -24, -24, -24, -24, -24, -24, -24, + -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, + -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, + -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, + -24, -24 + }, + + { + 9, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, 61, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25 + + }, + + { + 9, -26, -26, 62, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26 + }, + + { + 9, -27, -27, -27, -27, -27, -27, 55, -27, -27, + -27, -27, -27, 58, -27, -27, -27, -27, -27, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 63, 58, 58, 58, 58, 58, 58, 58, + 58, -27 + + }, + + { + 9, -28, -28, -28, -28, -28, -28, 55, -28, -28, + -28, -28, -28, 58, -28, -28, -28, -28, -28, 58, + 58, 58, 58, 58, 58, 58, 58, 64, 58, 58, + 58, 58, 65, 58, 58, 58, 58, 58, 58, 58, + 58, -28 + }, + + { + 9, -29, -29, -29, -29, -29, -29, 55, -29, -29, + -29, -29, -29, 58, -29, -29, -29, -29, -29, 58, + 58, 58, 58, 58, 66, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -29 + + }, + + { + 9, -30, -30, -30, -30, -30, -30, 55, -30, -30, + -30, -30, -30, 58, -30, -30, -30, -30, -30, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 67, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -30 + }, + + { + 9, -31, -31, -31, -31, -31, -31, 55, -31, -31, + -31, -31, -31, 58, -31, -31, -31, -31, -31, 58, + 58, 58, 58, 58, 68, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -31 + + }, + + { + 9, -32, -32, -32, -32, -32, -32, 55, -32, -32, + -32, -32, -32, 58, -32, -32, -32, -32, -32, 58, + 58, 58, 58, 58, 58, 69, 58, 58, 58, 58, + 70, 71, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -32 + }, + + { + 9, -33, -33, -33, -33, -33, -33, 55, -33, -33, + -33, -33, -33, 58, -33, -33, -33, -33, -33, 58, + 72, 58, 58, 58, 73, 58, 58, 58, 58, 58, + 58, 58, 74, 58, 58, 58, 58, 58, 58, 58, + 58, -33 + + }, + + { + 9, -34, -34, -34, -34, -34, -34, 55, -34, -34, + -34, -34, -34, 58, -34, -34, -34, -34, -34, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 75, 58, 76, 58, 58, 58, 58, 58, 58, + 58, -34 + }, + + { + 9, -35, -35, -35, -35, -35, -35, 55, -35, -35, + -35, -35, -35, 58, -35, -35, -35, -35, -35, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 77, 58, 58, 58, 58, 58, + 58, -35 + + }, + + { + 9, -36, -36, -36, -36, -36, -36, 55, -36, -36, + -36, -36, -36, 58, -36, -36, -36, -36, -36, 58, + 78, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -36 + }, + + { + 9, -37, -37, -37, -37, -37, -37, 55, -37, -37, + -37, -37, -37, 58, -37, -37, -37, -37, -37, 58, + 58, 58, 58, 58, 79, 58, 58, 58, 58, 58, + 58, 58, 80, 58, 58, 58, 81, 58, 58, 58, + 58, -37 + + }, + + { + 9, -38, -38, -38, -38, -38, -38, 55, -38, -38, + -38, -38, -38, 58, -38, -38, -38, -38, -38, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 82, 58, 58, 58, 58, 58, + 58, -38 + }, + + { + 9, -39, -39, -39, -39, -39, -39, 55, -39, -39, + -39, -39, -39, 58, -39, -39, -39, -39, -39, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 83, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -39 + + }, + + { + 9, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, 84 + }, + + { + 9, 85, 86, -41, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85 + + }, + + { + 9, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42 + }, + + { + 9, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43 + + }, + + { + 9, 87, 87, -44, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87 + }, + + { + 9, -45, 88, 89, -45, -45, -45, -45, -45, -45, + -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, + -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, + -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, + -45, -45 + + }, + + { + 9, 90, -46, -46, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90 + }, + + { + 9, 91, 91, -47, 91, -47, 91, -47, 91, -47, + 91, 91, 91, 91, 91, 91, 91, 91, -47, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91 + + }, + + { + 9, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48 + }, + + { + 9, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49 + + }, + + { + 9, 92, 92, -50, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92 + }, + + { + 9, 93, 93, -51, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93 + + }, + + { + 9, -52, 52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52 + }, + + { + 9, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53 + + }, + + { + 9, 54, 54, -54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54 + }, + + { + 9, -55, -55, -55, -55, -55, -55, 55, -55, -55, + -55, -55, -55, 55, -55, -55, -55, -55, -55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, -55 + + }, + + { + 9, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56 + }, + + { + 9, -57, -57, -57, -57, -57, -57, -57, -57, -57, + -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, + -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, + -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, + -57, -57 + + }, + + { + 9, -58, -58, -58, -58, -58, -58, 55, -58, -58, + -58, -58, -58, 58, -58, -58, -58, -58, -58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -58 + }, + + { + 9, -59, -59, -59, -59, -59, -59, -59, -59, -59, + -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, + -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, + -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, + -59, -59 + + }, + + { + 9, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60 + }, + + { + 9, -61, -61, -61, -61, -61, -61, -61, -61, -61, + -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, + -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, + -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, + -61, -61 + + }, + + { + 9, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62 + }, + + { + 9, -63, -63, -63, -63, -63, -63, 55, -63, -63, + -63, -63, -63, 58, -63, -63, -63, -63, -63, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 94, 58, 58, 58, 58, 58, 58, 58, + 58, -63 + + }, + + { + 9, -64, -64, -64, -64, -64, -64, 55, -64, -64, + -64, -64, -64, 58, -64, -64, -64, -64, -64, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 95, 58, 58, 58, 58, 58, 58, 58, + 58, -64 + }, + + { + 9, -65, -65, -65, -65, -65, -65, 55, -65, -65, + -65, -65, -65, 58, -65, -65, -65, -65, -65, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 96, 97, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -65 + + }, + + { + 9, -66, -66, -66, -66, -66, -66, 55, -66, -66, + -66, -66, -66, 58, -66, -66, -66, -66, -66, 58, + 58, 58, 58, 58, 58, 98, 58, 58, 58, 58, + 58, 58, 58, 99, 58, 58, 58, 58, 58, 58, + 58, -66 + }, + + { + 9, -67, -67, -67, -67, -67, -67, 55, -67, -67, + -67, -67, -67, 58, -67, -67, -67, -67, -67, 58, + 58, 58, 58, 100, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -67 + + }, + + { + 9, -68, -68, -68, -68, -68, -68, 55, -68, -68, + -68, -68, -68, 58, -68, -68, -68, -68, -68, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 101, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 102, + 58, -68 + }, + + { + 9, -69, -69, -69, -69, -69, -69, 55, -69, -69, + -69, -69, -69, 58, -69, -69, -69, -69, -69, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -69 + + }, + + { + 9, -70, -70, -70, -70, -70, -70, 55, -70, -70, + -70, -70, -70, 58, -70, -70, -70, -70, -70, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 103, 58, 58, 58, 58, 58, 58, + 58, -70 + }, + + { + 9, -71, -71, -71, -71, -71, -71, 55, -71, -71, + -71, -71, -71, 58, -71, -71, -71, -71, -71, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 104, 58, 58, 58, + 58, -71 + + }, + + { + 9, -72, -72, -72, -72, -72, -72, 55, -72, -72, + -72, -72, -72, 58, -72, -72, -72, -72, -72, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 105, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -72 + }, + + { + 9, -73, -73, -73, -73, -73, -73, 55, -73, -73, + -73, -73, -73, 58, -73, -73, -73, -73, -73, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 106, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -73 + + }, + + { + 9, -74, -74, -74, -74, -74, -74, 55, -74, -74, + -74, -74, -74, 58, -74, -74, -74, -74, -74, 58, + 58, 58, 58, 107, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -74 + }, + + { + 9, -75, -75, -75, -75, -75, -75, 55, -75, -75, + -75, -75, -75, 58, -75, -75, -75, -75, -75, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -75 + + }, + + { + 9, -76, -76, -76, -76, -76, -76, 55, -76, -76, + -76, -76, -76, 58, -76, -76, -76, -76, -76, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 108, 58, 58, 58, + 58, -76 + }, + + { + 9, -77, -77, -77, -77, -77, -77, 55, -77, -77, + -77, -77, -77, 58, -77, -77, -77, -77, -77, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 109, 58, 58, 58, 58, 58, 58, 58, + 58, -77 + + }, + + { + 9, -78, -78, -78, -78, -78, -78, 55, -78, -78, + -78, -78, -78, 58, -78, -78, -78, -78, -78, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 110, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -78 + }, + + { + 9, -79, -79, -79, -79, -79, -79, 55, -79, -79, + -79, -79, -79, 58, -79, -79, -79, -79, -79, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 111, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -79 + + }, + + { + 9, -80, -80, -80, -80, -80, -80, 55, -80, -80, + -80, -80, -80, 58, -80, -80, -80, -80, -80, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 112, 58, 58, + 58, -80 + }, + + { + 9, -81, -81, -81, -81, -81, -81, 55, -81, -81, + -81, -81, -81, 58, -81, -81, -81, -81, -81, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 113, 58, 58, 58, 58, 58, + 58, -81 + + }, + + { + 9, -82, -82, -82, -82, -82, -82, 55, -82, -82, + -82, -82, -82, 58, -82, -82, -82, -82, -82, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 114, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -82 + }, + + { + 9, -83, -83, -83, -83, -83, -83, 55, -83, -83, + -83, -83, -83, 58, -83, -83, -83, -83, -83, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 115, 58, 58, 58, 58, + 58, -83 + + }, + + { + 9, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84 + }, + + { + 9, 85, 86, -85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85 + + }, + + { + 9, 86, 86, -86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86 + }, + + { + 9, 87, 87, -87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87 + + }, + + { + 9, -88, 88, 89, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88 + }, + + { + 9, 90, -89, -89, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90 + + }, + + { + 9, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90 + }, + + { + 9, 91, 91, -91, 91, -91, 91, -91, 91, -91, + 91, 91, 91, 91, 91, 91, 91, 91, -91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91 + + }, + + { + 9, 92, 92, -92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92 + }, + + { + 9, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93 + + }, + + { + 9, -94, -94, -94, -94, -94, -94, 55, -94, -94, + -94, -94, -94, 58, -94, -94, -94, -94, -94, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 116, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -94 + }, + + { + 9, -95, -95, -95, -95, -95, -95, 55, -95, -95, + -95, -95, -95, 58, -95, -95, -95, -95, -95, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 117, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -95 + + }, + + { + 9, -96, -96, -96, -96, -96, -96, 55, -96, -96, + -96, -96, -96, 58, -96, -96, -96, -96, -96, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 118, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -96 + }, + + { + 9, -97, -97, -97, -97, -97, -97, 55, -97, -97, + -97, -97, -97, 58, -97, -97, -97, -97, -97, 58, + 58, 58, 58, 58, 58, 119, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -97 + + }, + + { + 9, -98, -98, -98, -98, -98, -98, 55, -98, -98, + -98, -98, -98, 58, -98, -98, -98, -98, -98, 120, + 121, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -98 + }, + + { + 9, -99, -99, -99, -99, -99, -99, 55, -99, -99, + -99, -99, -99, 58, -99, -99, -99, -99, -99, 58, + 58, 58, 58, 58, 122, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -99 + + }, + + { + 9, -100, -100, -100, -100, -100, -100, 55, -100, -100, + -100, -100, -100, 58, -100, -100, -100, -100, -100, 58, + 58, 58, 123, 58, 58, 58, 58, 58, 124, 58, + 125, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -100 + }, + + { + 9, -101, -101, -101, -101, -101, -101, 55, -101, -101, + -101, -101, -101, 58, -101, -101, -101, -101, -101, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 126, 58, 58, 58, 58, 58, 58, + 58, -101 + + }, + + { + 9, -102, -102, -102, -102, -102, -102, 55, -102, -102, + -102, -102, -102, 58, -102, -102, -102, -102, -102, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -102 + }, + + { + 9, -103, -103, -103, -103, -103, -103, 55, -103, -103, + -103, -103, -103, 58, -103, -103, -103, -103, -103, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 127, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -103 + + }, + + { + 9, -104, -104, -104, -104, -104, -104, 55, -104, -104, + -104, -104, -104, 58, -104, -104, -104, -104, -104, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -104 + }, + + { + 9, -105, -105, -105, -105, -105, -105, 55, -105, -105, + -105, -105, -105, 58, -105, -105, -105, -105, -105, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 128, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -105 + + }, + + { + 9, -106, -106, -106, -106, -106, -106, 55, -106, -106, + -106, -106, -106, 58, -106, -106, -106, -106, -106, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 129, 58, 58, + 58, -106 + }, + + { + 9, -107, -107, -107, -107, -107, -107, 55, -107, -107, + -107, -107, -107, 58, -107, -107, -107, -107, -107, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 130, 58, 58, + 58, -107 + + }, + + { + 9, -108, -108, -108, -108, -108, -108, 55, -108, -108, + -108, -108, -108, 58, -108, -108, -108, -108, -108, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 131, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -108 + }, + + { + 9, -109, -109, -109, -109, -109, -109, 55, -109, -109, + -109, -109, -109, 58, -109, -109, -109, -109, -109, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 132, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -109 + + }, + + { + 9, -110, -110, -110, -110, -110, -110, 55, -110, -110, + -110, -110, -110, 58, -110, -110, -110, -110, -110, 58, + 58, 58, 58, 58, 58, 58, 133, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -110 + }, + + { + 9, -111, -111, -111, -111, -111, -111, 55, -111, -111, + -111, -111, -111, 58, -111, -111, -111, -111, -111, 58, + 58, 58, 58, 58, 134, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -111 + + }, + + { + 9, -112, -112, -112, -112, -112, -112, 55, -112, -112, + -112, -112, -112, 58, -112, -112, -112, -112, -112, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 135, 58, 58, 58, 58, 58, + 58, -112 + }, + + { + 9, -113, -113, -113, -113, -113, -113, 55, -113, -113, + -113, -113, -113, 58, -113, -113, -113, -113, -113, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 136, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -113 + + }, + + { + 9, -114, -114, -114, -114, -114, -114, 55, -114, -114, + -114, -114, -114, 58, -114, -114, -114, -114, -114, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 137, 58, 58, 58, 58, + 58, -114 + }, + + { + 9, -115, -115, -115, -115, -115, -115, 55, -115, -115, + -115, -115, -115, 58, -115, -115, -115, -115, -115, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 138, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -115 + + }, + + { + 9, -116, -116, -116, -116, -116, -116, 55, -116, -116, + -116, -116, -116, 58, -116, -116, -116, -116, -116, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -116 + }, + + { + 9, -117, -117, -117, -117, -117, -117, 55, -117, -117, + -117, -117, -117, 58, -117, -117, -117, -117, -117, 58, + 58, 58, 139, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -117 + + }, + + { + 9, -118, -118, -118, -118, -118, -118, 55, -118, -118, + -118, -118, -118, 58, -118, -118, -118, -118, -118, 58, + 58, 58, 58, 58, 140, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -118 + }, + + { + 9, -119, -119, -119, -119, -119, -119, 55, -119, -119, + -119, -119, -119, 58, -119, -119, -119, -119, -119, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 141, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -119 + + }, + + { + 9, -120, -120, -120, -120, -120, -120, 55, -120, -120, + -120, -120, -120, 58, -120, -120, -120, -120, -120, 58, + 58, 142, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 143, 58, 58, 58, + 58, -120 + }, + + { + 9, -121, -121, -121, -121, -121, -121, 55, -121, -121, + -121, -121, -121, 58, -121, -121, -121, -121, -121, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 144, 58, 58, + 58, -121 + + }, + + { + 9, -122, -122, -122, -122, -122, -122, 55, -122, -122, + -122, -122, -122, 58, -122, -122, -122, -122, -122, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 145, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -122 + }, + + { + 9, -123, -123, -123, -123, -123, -123, 55, -123, -123, + -123, -123, -123, 58, -123, -123, -123, -123, -123, 58, + 58, 58, 58, 58, 58, 58, 58, 146, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -123 + + }, + + { + 9, -124, -124, -124, -124, -124, -124, 55, -124, -124, + -124, -124, -124, 58, -124, -124, -124, -124, -124, 58, + 58, 58, 58, 58, 58, 147, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -124 + }, + + { + 9, -125, -125, -125, -125, -125, -125, 55, -125, -125, + -125, -125, -125, 58, -125, -125, -125, -125, -125, 58, + 58, 58, 58, 58, 148, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -125 + + }, + + { + 9, -126, -126, -126, -126, -126, -126, 55, -126, -126, + -126, -126, -126, 58, -126, -126, -126, -126, -126, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -126 + }, + + { + 9, -127, -127, -127, -127, -127, -127, 55, -127, -127, + -127, -127, -127, 58, -127, -127, -127, -127, -127, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 149, -127 + + }, + + { + 9, -128, -128, -128, -128, -128, -128, 55, -128, -128, + -128, -128, -128, 58, -128, -128, -128, -128, -128, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 150, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -128 + }, + + { + 9, -129, -129, -129, -129, -129, -129, 55, -129, -129, + -129, -129, -129, 58, -129, -129, -129, -129, -129, 58, + 58, 58, 151, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -129 + + }, + + { + 9, -130, -130, -130, -130, -130, -130, 55, -130, -130, + -130, -130, -130, 58, -130, -130, -130, -130, -130, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 152, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -130 + }, + + { + 9, -131, -131, -131, -131, -131, -131, 55, -131, -131, + -131, -131, -131, 58, -131, -131, -131, -131, -131, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 153, 58, 58, 58, 58, 58, 58, 58, + 58, -131 + + }, + + { + 9, -132, -132, -132, -132, -132, -132, 55, -132, -132, + -132, -132, -132, 58, -132, -132, -132, -132, -132, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 154, 58, 58, 58, 58, 58, 58, + 58, -132 + }, + + { + 9, -133, -133, -133, -133, -133, -133, 55, -133, -133, + -133, -133, -133, 58, -133, -133, -133, -133, -133, 58, + 58, 58, 58, 58, 155, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -133 + + }, + + { + 9, -134, -134, -134, -134, -134, -134, 55, -134, -134, + -134, -134, -134, 58, -134, -134, -134, -134, -134, 58, + 58, 58, 156, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -134 + }, + + { + 9, -135, -135, -135, -135, -135, -135, 55, -135, -135, + -135, -135, -135, 58, -135, -135, -135, -135, -135, 58, + 58, 58, 157, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -135 + + }, + + { + 9, -136, -136, -136, -136, -136, -136, 55, -136, -136, + -136, -136, -136, 58, -136, -136, -136, -136, -136, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 158, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -136 + }, + + { + 9, -137, -137, -137, -137, -137, -137, 55, -137, -137, + -137, -137, -137, 58, -137, -137, -137, -137, -137, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 159, 58, 58, 58, + 58, -137 + + }, + + { + 9, -138, -138, -138, -138, -138, -138, 55, -138, -138, + -138, -138, -138, 58, -138, -138, -138, -138, -138, 58, + 58, 160, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -138 + }, + + { + 9, -139, -139, -139, -139, -139, -139, 55, -139, -139, + -139, -139, -139, 58, -139, -139, -139, -139, -139, 58, + 58, 58, 58, 58, 161, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -139 + + }, + + { + 9, -140, -140, -140, -140, -140, -140, 55, -140, -140, + -140, -140, -140, 58, -140, -140, -140, -140, -140, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 162, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -140 + }, + + { + 9, -141, -141, -141, -141, -141, -141, 55, -141, -141, + -141, -141, -141, 58, -141, -141, -141, -141, -141, 58, + 58, 58, 58, 58, 58, 58, 163, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -141 + + }, + + { + 9, -142, -142, -142, -142, -142, -142, 55, -142, -142, + -142, -142, -142, 58, -142, -142, -142, -142, -142, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 164, 58, 58, 58, 58, 58, 58, 58, + 58, -142 + }, + + { + 9, -143, -143, -143, -143, -143, -143, 55, -143, -143, + -143, -143, -143, 58, -143, -143, -143, -143, -143, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 165, 58, 58, 58, 58, 58, + 58, -143 + + }, + + { + 9, -144, -144, -144, -144, -144, -144, 55, -144, -144, + -144, -144, -144, 58, -144, -144, -144, -144, -144, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 166, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -144 + }, + + { + 9, -145, -145, -145, -145, -145, -145, 55, -145, -145, + -145, -145, -145, 58, -145, -145, -145, -145, -145, 58, + 58, 58, 58, 167, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -145 + + }, + + { + 9, -146, -146, -146, -146, -146, -146, 55, -146, -146, + -146, -146, -146, 58, -146, -146, -146, -146, -146, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 168, 58, 58, 58, 58, 58, 58, 58, + 58, -146 + }, + + { + 9, -147, -147, -147, -147, -147, -147, 55, -147, -147, + -147, -147, -147, 58, -147, -147, -147, -147, -147, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -147 + + }, + + { + 9, -148, -148, -148, -148, -148, -148, 55, -148, -148, + -148, -148, -148, 58, -148, -148, -148, -148, -148, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 169, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -148 + }, + + { + 9, -149, -149, -149, -149, -149, -149, 55, -149, -149, + -149, -149, -149, 58, -149, -149, -149, -149, -149, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -149 + + }, + + { + 9, -150, -150, -150, -150, -150, -150, 55, -150, -150, + -150, -150, -150, 58, -150, -150, -150, -150, -150, 58, + 58, 58, 58, 58, 170, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -150 + }, + + { + 9, -151, -151, -151, -151, -151, -151, 55, -151, -151, + -151, -151, -151, 58, -151, -151, -151, -151, -151, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 171, 58, 58, 58, 58, 58, 58, 58, + 58, -151 + + }, + + { + 9, -152, -152, -152, -152, -152, -152, 55, -152, -152, + -152, -152, -152, 58, -152, -152, -152, -152, -152, 58, + 58, 58, 58, 58, 172, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -152 + }, + + { + 9, -153, -153, -153, -153, -153, -153, 55, -153, -153, + -153, -153, -153, 58, -153, -153, -153, -153, -153, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 173, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -153 + + }, + + { + 9, -154, -154, -154, -154, -154, -154, 55, -154, -154, + -154, -154, -154, 58, -154, -154, -154, -154, -154, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 174, 58, 58, 58, + 58, -154 + }, + + { + 9, -155, -155, -155, -155, -155, -155, 55, -155, -155, + -155, -155, -155, 58, -155, -155, -155, -155, -155, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -155 + + }, + + { + 9, -156, -156, -156, -156, -156, -156, 55, -156, -156, + -156, -156, -156, 58, -156, -156, -156, -156, -156, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 175, 58, 58, 58, + 58, -156 + }, + + { + 9, -157, -157, -157, -157, -157, -157, 55, -157, -157, + -157, -157, -157, 58, -157, -157, -157, -157, -157, 58, + 58, 58, 58, 58, 176, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -157 + + }, + + { + 9, -158, -158, -158, -158, -158, -158, 55, -158, -158, + -158, -158, -158, 58, -158, -158, -158, -158, -158, 58, + 58, 58, 58, 58, 58, 58, 177, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -158 + }, + + { + 9, -159, -159, -159, -159, -159, -159, 55, -159, -159, + -159, -159, -159, 58, -159, -159, -159, -159, -159, 58, + 178, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -159 + + }, + + { + 9, -160, -160, -160, -160, -160, -160, 55, -160, -160, + -160, -160, -160, 58, -160, -160, -160, -160, -160, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 179, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -160 + }, + + { + 9, -161, -161, -161, -161, -161, -161, 55, -161, -161, + -161, -161, -161, 58, -161, -161, -161, -161, -161, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -161 + + }, + + { + 9, -162, -162, -162, -162, -162, -162, 55, -162, -162, + -162, -162, -162, 58, -162, -162, -162, -162, -162, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 180, 58, 58, 58, + 58, -162 + }, + + { + 9, -163, -163, -163, -163, -163, -163, 55, -163, -163, + -163, -163, -163, 58, -163, -163, -163, -163, -163, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -163 + + }, + + { + 9, -164, -164, -164, -164, -164, -164, 55, -164, -164, + -164, -164, -164, 58, -164, -164, -164, -164, -164, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 181, 58, 58, 58, 58, 58, 58, 58, + 58, -164 + }, + + { + 9, -165, -165, -165, -165, -165, -165, 55, -165, -165, + -165, -165, -165, 58, -165, -165, -165, -165, -165, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 182, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -165 + + }, + + { + 9, -166, -166, -166, -166, -166, -166, 55, -166, -166, + -166, -166, -166, 58, -166, -166, -166, -166, -166, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 183, 58, 58, 58, + 58, -166 + }, + + { + 9, -167, -167, -167, -167, -167, -167, 55, -167, -167, + -167, -167, -167, 58, -167, -167, -167, -167, -167, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 184, 58, 58, 58, 58, + 58, -167 + + }, + + { + 9, -168, -168, -168, -168, -168, -168, 55, -168, -168, + -168, -168, -168, 58, -168, -168, -168, -168, -168, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 185, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -168 + }, + + { + 9, -169, -169, -169, -169, -169, -169, 55, -169, -169, + -169, -169, -169, 58, -169, -169, -169, -169, -169, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 186, 58, 58, + 58, -169 + + }, + + { + 9, -170, -170, -170, -170, -170, -170, 55, -170, -170, + -170, -170, -170, 58, -170, -170, -170, -170, -170, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 187, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -170 + }, + + { + 9, -171, -171, -171, -171, -171, -171, 55, -171, -171, + -171, -171, -171, 58, -171, -171, -171, -171, -171, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 188, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -171 + + }, + + { + 9, -172, -172, -172, -172, -172, -172, 55, -172, -172, + -172, -172, -172, 58, -172, -172, -172, -172, -172, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 189, 58, 58, 58, 58, + 58, -172 + }, + + { + 9, -173, -173, -173, -173, -173, -173, 55, -173, -173, + -173, -173, -173, 58, -173, -173, -173, -173, -173, 58, + 190, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -173 + + }, + + { + 9, -174, -174, -174, -174, -174, -174, 55, -174, -174, + -174, -174, -174, 58, -174, -174, -174, -174, -174, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -174 + }, + + { + 9, -175, -175, -175, -175, -175, -175, 55, -175, -175, + -175, -175, -175, 58, -175, -175, -175, -175, -175, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -175 + + }, + + { + 9, -176, -176, -176, -176, -176, -176, 55, -176, -176, + -176, -176, -176, 58, -176, -176, -176, -176, -176, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -176 + }, + + { + 9, -177, -177, -177, -177, -177, -177, 55, -177, -177, + -177, -177, -177, 58, -177, -177, -177, -177, -177, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -177 + + }, + + { + 9, -178, -178, -178, -178, -178, -178, 55, -178, -178, + -178, -178, -178, 58, -178, -178, -178, -178, -178, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 191, 58, 58, 58, + 58, -178 + }, + + { + 9, -179, -179, -179, -179, -179, -179, 55, -179, -179, + -179, -179, -179, 58, -179, -179, -179, -179, -179, 58, + 58, 58, 58, 58, 192, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -179 + + }, + + { + 9, -180, -180, -180, -180, -180, -180, 55, -180, -180, + -180, -180, -180, 58, -180, -180, -180, -180, -180, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -180 + }, + + { + 9, -181, -181, -181, -181, -181, -181, 55, -181, -181, + -181, -181, -181, 58, -181, -181, -181, -181, -181, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 193, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -181 + + }, + + { + 9, -182, -182, -182, -182, -182, -182, 55, -182, -182, + -182, -182, -182, 58, -182, -182, -182, -182, -182, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 194, 58, 58, 58, 58, + 58, -182 + }, + + { + 9, -183, -183, -183, -183, -183, -183, 55, -183, -183, + -183, -183, -183, 58, -183, -183, -183, -183, -183, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -183 + + }, + + { + 9, -184, -184, -184, -184, -184, -184, 55, -184, -184, + -184, -184, -184, 58, -184, -184, -184, -184, -184, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -184 + }, + + { + 9, -185, -185, -185, -185, -185, -185, 55, -185, -185, + -185, -185, -185, 58, -185, -185, -185, -185, -185, 58, + 58, 58, 195, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -185 + + }, + + { + 9, -186, -186, -186, -186, -186, -186, 55, -186, -186, + -186, -186, -186, 58, -186, -186, -186, -186, -186, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -186 + }, + + { + 9, -187, -187, -187, -187, -187, -187, 55, -187, -187, + -187, -187, -187, 58, -187, -187, -187, -187, -187, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 196, 58, 58, + 58, -187 + + }, + + { + 9, -188, -188, -188, -188, -188, -188, 55, -188, -188, + -188, -188, -188, 58, -188, -188, -188, -188, -188, 58, + 58, 58, 58, 58, 58, 197, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -188 + }, + + { + 9, -189, -189, -189, -189, -189, -189, 55, -189, -189, + -189, -189, -189, 58, -189, -189, -189, -189, -189, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -189 + + }, + + { + 9, -190, -190, -190, -190, -190, -190, 55, -190, -190, + -190, -190, -190, 58, -190, -190, -190, -190, -190, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 198, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -190 + }, + + { + 9, -191, -191, -191, -191, -191, -191, 55, -191, -191, + -191, -191, -191, 58, -191, -191, -191, -191, -191, 58, + 58, 58, 58, 58, 199, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -191 + + }, + + { + 9, -192, -192, -192, -192, -192, -192, 55, -192, -192, + -192, -192, -192, 58, -192, -192, -192, -192, -192, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -192 + }, + + { + 9, -193, -193, -193, -193, -193, -193, 55, -193, -193, + -193, -193, -193, 58, -193, -193, -193, -193, -193, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -193 + + }, + + { + 9, -194, -194, -194, -194, -194, -194, 55, -194, -194, + -194, -194, -194, 58, -194, -194, -194, -194, -194, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 200, 58, 58, 58, + 58, -194 + }, + + { + 9, -195, -195, -195, -195, -195, -195, 55, -195, -195, + -195, -195, -195, 58, -195, -195, -195, -195, -195, 58, + 58, 58, 58, 58, 201, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -195 + + }, + + { + 9, -196, -196, -196, -196, -196, -196, 55, -196, -196, + -196, -196, -196, 58, -196, -196, -196, -196, -196, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -196 + }, + + { + 9, -197, -197, -197, -197, -197, -197, 55, -197, -197, + -197, -197, -197, 58, -197, -197, -197, -197, -197, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 202, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -197 + + }, + + { + 9, -198, -198, -198, -198, -198, -198, 55, -198, -198, + -198, -198, -198, 58, -198, -198, -198, -198, -198, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -198 + }, + + { + 9, -199, -199, -199, -199, -199, -199, 55, -199, -199, + -199, -199, -199, 58, -199, -199, -199, -199, -199, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -199 + + }, + + { + 9, -200, -200, -200, -200, -200, -200, 55, -200, -200, + -200, -200, -200, 58, -200, -200, -200, -200, -200, 58, + 203, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -200 + }, + + { + 9, -201, -201, -201, -201, -201, -201, 55, -201, -201, + -201, -201, -201, 58, -201, -201, -201, -201, -201, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -201 + + }, + + { + 9, -202, -202, -202, -202, -202, -202, 55, -202, -202, + -202, -202, -202, 58, -202, -202, -202, -202, -202, 58, + 58, 58, 58, 58, 58, 58, 204, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -202 + }, + + { + 9, -203, -203, -203, -203, -203, -203, 55, -203, -203, + -203, -203, -203, 58, -203, -203, -203, -203, -203, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 205, 58, 58, 58, + 58, -203 + + }, + + { + 9, -204, -204, -204, -204, -204, -204, 55, -204, -204, + -204, -204, -204, 58, -204, -204, -204, -204, -204, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -204 + }, + + { + 9, -205, -205, -205, -205, -205, -205, 55, -205, -205, + -205, -205, -205, 58, -205, -205, -205, -205, -205, 58, + 58, 58, 58, 58, 206, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -205 + + }, + + { + 9, -206, -206, -206, -206, -206, -206, 55, -206, -206, + -206, -206, -206, 58, -206, -206, -206, -206, -206, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -206 + }, + + } ; + +static yy_state_type yy_get_previous_state ( void ); +static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); +static int yy_get_next_buffer ( void ); +static void yynoreturn yy_fatal_error ( const char* msg ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + (yytext_ptr) = yy_bp; \ + yyleng = (int) (yy_cp - yy_bp); \ + (yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; +#define YY_NUM_RULES 63 +#define YY_END_OF_BUFFER 64 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static const flex_int16_t yy_accept[207] = + { 0, + 2, 2, 0, 0, 0, 0, 0, 0, 64, 50, + 2, 4, 42, 47, 1, 49, 50, 43, 44, 50, + 48, 50, 38, 36, 40, 50, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, + 51, 53, 52, 62, 59, 61, 55, 58, 57, 54, + 56, 2, 37, 1, 49, 35, 46, 48, 45, 39, + 41, 3, 48, 48, 48, 48, 48, 48, 18, 48, + 48, 48, 48, 48, 25, 48, 48, 48, 48, 48, + 48, 48, 48, 34, 51, 51, 62, 59, 61, 60, + 55, 54, 56, 48, 48, 48, 48, 48, 48, 48, + + 48, 17, 48, 20, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 5, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 16, 48, 48, 22, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 14, 48, 19, 48, + 48, 48, 48, 48, 28, 48, 48, 48, 48, 48, + 6, 48, 8, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 27, 29, 30, 31, 48, 48, 7, + 48, 48, 11, 12, 48, 15, 48, 48, 24, 48, + 48, 33, 9, 48, 48, 21, 48, 26, 32, 48, + + 13, 48, 48, 23, 48, 10 + } ; + +static const YY_CHAR yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 4, 5, 6, 7, 1, 8, 9, 10, + 11, 1, 12, 1, 13, 1, 1, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 14, 1, 15, + 16, 17, 1, 1, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 1, 18, 1, 1, 19, 1, 20, 21, 22, 23, + + 24, 25, 26, 27, 28, 13, 13, 29, 30, 31, + 32, 33, 13, 34, 35, 36, 37, 38, 13, 39, + 40, 13, 1, 41, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +/* Table of booleans, true if rule could match eol. */ +static const flex_int32_t yy_rule_can_match_eol[64] = + { 0, +0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, + 1, 1, 0, 0, }; + +extern int yy_flex_debug; +int yy_flex_debug = 0; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +char *yytext; +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2002 Roman Zippel + */ + +#include +#include +#include +#include +#include + +#include "lkc.h" +#include "preprocess.h" + +#include "parser.tab.h" + +#define YY_DECL static int yylex1(void) + +#define START_STRSIZE 16 + +/* The Kconfig file currently being parsed. */ +const char *cur_filename; + +/* + * The line number of the current statement. This does not match yylineno. + * yylineno is used by the lexer, while cur_lineno is used by the parser. + */ +int cur_lineno; + +static int prev_prev_token = T_EOL; +static int prev_token = T_EOL; +static char *text; +static int text_size, text_asize; + +struct buffer { + struct buffer *parent; + YY_BUFFER_STATE state; + int yylineno; + const char *filename; + int source_lineno; +}; + +static struct buffer *current_buf; + +static int last_ts, first_ts; + +static char *expand_token(const char *in, size_t n); +static void append_expanded_string(const char *in); +static void zconf_endhelp(void); +static void zconf_endfile(void); + +static void new_string(void) +{ + text = xmalloc(START_STRSIZE); + text_asize = START_STRSIZE; + text_size = 0; + *text = 0; +} + +static void append_string(const char *str, int size) +{ + int new_size = text_size + size + 1; + if (new_size > text_asize) { + new_size += START_STRSIZE - 1; + new_size &= -START_STRSIZE; + text = xrealloc(text, new_size); + text_asize = new_size; + } + memcpy(text + text_size, str, size); + text_size += size; + text[text_size] = 0; +} + +static void alloc_string(const char *str, int size) +{ + text = xmalloc(size + 1); + memcpy(text, str, size); + text[size] = 0; +} + +static void warn_ignored_character(char chr) +{ + fprintf(stderr, + "%s:%d:warning: ignoring unsupported character '%c'\n", + cur_filename, yylineno, chr); +} + +#define INITIAL 0 +#define ASSIGN_VAL 1 +#define HELP 2 +#define STRING 3 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +static int yy_init_globals ( void ); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int yylex_destroy ( void ); + +int yyget_debug ( void ); + +void yyset_debug ( int debug_flag ); + +YY_EXTRA_TYPE yyget_extra ( void ); + +void yyset_extra ( YY_EXTRA_TYPE user_defined ); + +FILE *yyget_in ( void ); + +void yyset_in ( FILE * _in_str ); + +FILE *yyget_out ( void ); + +void yyset_out ( FILE * _out_str ); + + int yyget_leng ( void ); + +char *yyget_text ( void ); + +int yyget_lineno ( void ); + +void yyset_lineno ( int _line_number ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap ( void ); +#else +extern int yywrap ( void ); +#endif +#endif + +#ifndef YY_NO_UNPUT + + static void yyunput ( int c, char *buf_ptr ); + +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy ( char *, const char *, int ); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen ( const char * ); +#endif + +#ifndef YY_NO_INPUT +#ifdef __cplusplus +static int yyinput ( void ); +#else +static int input ( void ); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k */ +#define YY_READ_BUF_SIZE 16384 +#else +#define YY_READ_BUF_SIZE 8192 +#endif /* __ia64__ */ +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + errno=0; \ + while ( (result = (int) read( fileno(yyin), buf, (yy_size_t) max_size )) < 0 ) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int yylex (void); + +#define YY_DECL int yylex (void) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK /*LINTED*/break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + yy_state_type yy_current_state; + char *yy_cp, *yy_bp; + int yy_act; + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! yyin ) + yyin = stdin; + + if ( ! yyout ) + yyout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer( yyin, YY_BUF_SIZE ); + } + + yy_load_buffer_state( ); + } + + { + + char open_quote = 0; + + while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ + { + yy_cp = (yy_c_buf_p); + + /* Support of yytext. */ + *yy_cp = (yy_hold_char); + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = (yy_start); +yy_match: + while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 ) + ++yy_cp; + + yy_current_state = -yy_current_state; + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + + YY_DO_BEFORE_ACTION; + + if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) + { + int yyl; + for ( yyl = 0; yyl < yyleng; ++yyl ) + if ( yytext[yyl] == '\n' ) + + yylineno++; +; + } + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ +case 1: +YY_RULE_SETUP +/* ignore comment */ + YY_BREAK +case 2: +YY_RULE_SETUP +/* whitespaces */ + YY_BREAK +case 3: +/* rule 3 can match eol */ +YY_RULE_SETUP +/* escaped new line */ + YY_BREAK +case 4: +/* rule 4 can match eol */ +YY_RULE_SETUP +return T_EOL; + YY_BREAK +case 5: +YY_RULE_SETUP +return T_BOOL; + YY_BREAK +case 6: +YY_RULE_SETUP +return T_CHOICE; + YY_BREAK +case 7: +YY_RULE_SETUP +return T_COMMENT; + YY_BREAK +case 8: +YY_RULE_SETUP +return T_CONFIG; + YY_BREAK +case 9: +YY_RULE_SETUP +return T_DEF_BOOL; + YY_BREAK +case 10: +YY_RULE_SETUP +return T_DEF_TRISTATE; + YY_BREAK +case 11: +YY_RULE_SETUP +return T_DEFAULT; + YY_BREAK +case 12: +YY_RULE_SETUP +return T_DEPENDS; + YY_BREAK +case 13: +YY_RULE_SETUP +return T_ENDCHOICE; + YY_BREAK +case 14: +YY_RULE_SETUP +return T_ENDIF; + YY_BREAK +case 15: +YY_RULE_SETUP +return T_ENDMENU; + YY_BREAK +case 16: +YY_RULE_SETUP +return T_HELP; + YY_BREAK +case 17: +YY_RULE_SETUP +return T_HEX; + YY_BREAK +case 18: +YY_RULE_SETUP +return T_IF; + YY_BREAK +case 19: +YY_RULE_SETUP +return T_IMPLY; + YY_BREAK +case 20: +YY_RULE_SETUP +return T_INT; + YY_BREAK +case 21: +YY_RULE_SETUP +return T_MAINMENU; + YY_BREAK +case 22: +YY_RULE_SETUP +return T_MENU; + YY_BREAK +case 23: +YY_RULE_SETUP +return T_MENUCONFIG; + YY_BREAK +case 24: +YY_RULE_SETUP +return T_MODULES; + YY_BREAK +case 25: +YY_RULE_SETUP +return T_ON; + YY_BREAK +case 26: +YY_RULE_SETUP +return T_OPTIONAL; + YY_BREAK +case 27: +YY_RULE_SETUP +return T_PROMPT; + YY_BREAK +case 28: +YY_RULE_SETUP +return T_RANGE; + YY_BREAK +case 29: +YY_RULE_SETUP +return T_SELECT; + YY_BREAK +case 30: +YY_RULE_SETUP +return T_SOURCE; + YY_BREAK +case 31: +YY_RULE_SETUP +return T_STRING; + YY_BREAK +case 32: +YY_RULE_SETUP +return T_TRISTATE; + YY_BREAK +case 33: +YY_RULE_SETUP +return T_VISIBLE; + YY_BREAK +case 34: +YY_RULE_SETUP +return T_OR; + YY_BREAK +case 35: +YY_RULE_SETUP +return T_AND; + YY_BREAK +case 36: +YY_RULE_SETUP +return T_EQUAL; + YY_BREAK +case 37: +YY_RULE_SETUP +return T_UNEQUAL; + YY_BREAK +case 38: +YY_RULE_SETUP +return T_LESS; + YY_BREAK +case 39: +YY_RULE_SETUP +return T_LESS_EQUAL; + YY_BREAK +case 40: +YY_RULE_SETUP +return T_GREATER; + YY_BREAK +case 41: +YY_RULE_SETUP +return T_GREATER_EQUAL; + YY_BREAK +case 42: +YY_RULE_SETUP +return T_NOT; + YY_BREAK +case 43: +YY_RULE_SETUP +return T_OPEN_PAREN; + YY_BREAK +case 44: +YY_RULE_SETUP +return T_CLOSE_PAREN; + YY_BREAK +case 45: +YY_RULE_SETUP +return T_COLON_EQUAL; + YY_BREAK +case 46: +YY_RULE_SETUP +return T_PLUS_EQUAL; + YY_BREAK +case 47: +YY_RULE_SETUP +{ + open_quote = yytext[0]; + new_string(); + BEGIN(STRING); + } + YY_BREAK +case 48: +YY_RULE_SETUP +{ + alloc_string(yytext, yyleng); + yylval.string = text; + return T_WORD; + } + YY_BREAK +case 49: +YY_RULE_SETUP +{ + /* this token includes at least one '$' */ + yylval.string = expand_token(yytext, yyleng); + if (strlen(yylval.string)) + return T_WORD; + free(yylval.string); + } + YY_BREAK +case 50: +YY_RULE_SETUP +warn_ignored_character(*yytext); + YY_BREAK + +case 51: +YY_RULE_SETUP +{ + alloc_string(yytext, yyleng); + yylval.string = text; + return T_ASSIGN_VAL; + } + YY_BREAK +case 52: +/* rule 52 can match eol */ +YY_RULE_SETUP +{ BEGIN(INITIAL); return T_EOL; } + YY_BREAK +case 53: +YY_RULE_SETUP + + YY_BREAK + +case 54: +YY_RULE_SETUP +append_expanded_string(yytext); + YY_BREAK +case 55: +YY_RULE_SETUP +{ + append_string(yytext, yyleng); + } + YY_BREAK +case 56: +YY_RULE_SETUP +{ + append_string(yytext + 1, yyleng - 1); + } + YY_BREAK +case 57: +YY_RULE_SETUP +{ + if (open_quote == yytext[0]) { + BEGIN(INITIAL); + yylval.string = text; + return T_WORD_QUOTE; + } else + append_string(yytext, 1); + } + YY_BREAK +case 58: +/* rule 58 can match eol */ +YY_RULE_SETUP +{ + fprintf(stderr, + "%s:%d:warning: multi-line strings not supported\n", + cur_filename, cur_lineno); + unput('\n'); + BEGIN(INITIAL); + yylval.string = text; + return T_WORD_QUOTE; + } + YY_BREAK +case YY_STATE_EOF(STRING): +{ + BEGIN(INITIAL); + yylval.string = text; + return T_WORD_QUOTE; + } + YY_BREAK + +case 59: +YY_RULE_SETUP +{ + int ts, i; + + ts = 0; + for (i = 0; i < yyleng; i++) { + if (yytext[i] == '\t') + ts = (ts & ~7) + 8; + else + ts++; + } + last_ts = ts; + if (first_ts) { + if (ts < first_ts) { + zconf_endhelp(); + return T_HELPTEXT; + } + ts -= first_ts; + while (ts > 8) { + append_string(" ", 8); + ts -= 8; + } + append_string(" ", ts); + } + } + YY_BREAK +case 60: +/* rule 60 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ +YY_LINENO_REWIND_TO(yy_cp - 1); +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up yytext again */ +YY_RULE_SETUP +{ + zconf_endhelp(); + return T_HELPTEXT; + } + YY_BREAK +case 61: +/* rule 61 can match eol */ +YY_RULE_SETUP +{ + append_string("\n", 1); + } + YY_BREAK +case 62: +YY_RULE_SETUP +{ + while (yyleng) { + if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t')) + break; + yyleng--; + } + append_string(yytext, yyleng); + if (!first_ts) + first_ts = last_ts; + } + YY_BREAK +case YY_STATE_EOF(HELP): +{ + zconf_endhelp(); + return T_HELPTEXT; + } + YY_BREAK + +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(ASSIGN_VAL): +{ + BEGIN(INITIAL); + + if (prev_token != T_EOL && prev_token != T_HELPTEXT) + fprintf(stderr, "%s:%d:warning: no new line at end of file\n", + cur_filename, yylineno); + + if (current_buf) { + zconf_endfile(); + return T_EOL; + } + fclose(yyin); + yyterminate(); +} + YY_BREAK +case 63: +YY_RULE_SETUP +YY_FATAL_ERROR( "flex scanner jammed" ); + YY_BREAK + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = (yy_hold_char); + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++(yy_c_buf_p); + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = (yy_c_buf_p); + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_END_OF_FILE: + { + (yy_did_buffer_switch_on_eof) = 0; + + if ( yywrap( ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = + (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + (yy_c_buf_p) = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ + } /* end of user's declarations */ +} /* end of yylex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (void) +{ + char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + char *source = (yytext_ptr); + int number_to_move, i; + int ret_val; + + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; + + else + { + int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; + + int yy_c_buf_p_offset = + (int) ((yy_c_buf_p) - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + yyrealloc( (void *) b->yy_ch_buf, + (yy_size_t) (b->yy_buf_size + 2) ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = NULL; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + (yy_n_chars), num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + if ( (yy_n_chars) == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart( yyin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( + (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + /* "- 2" to take care of EOB's */ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); + } + + (yy_n_chars) += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; + + (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (void) +{ + yy_state_type yy_current_state; + char *yy_cp; + + yy_current_state = (yy_start); + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { + yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +{ + int yy_is_jam; + + yy_current_state = yy_nxt[yy_current_state][1]; + yy_is_jam = (yy_current_state <= 0); + + return yy_is_jam ? 0 : yy_current_state; +} + +#ifndef YY_NO_UNPUT + + static void yyunput (int c, char * yy_bp ) +{ + char *yy_cp; + + yy_cp = (yy_c_buf_p); + + /* undo effects of setting up yytext */ + *yy_cp = (yy_hold_char); + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + int number_to_move = (yy_n_chars) + 2; + char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; + char *source = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; + + while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = + (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (char) c; + + if ( c == '\n' ){ + --yylineno; + } + + (yytext_ptr) = yy_bp; + (yy_hold_char) = *yy_cp; + (yy_c_buf_p) = yy_cp; +} + +#endif + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (void) +#else + static int input (void) +#endif + +{ + int c; + + *(yy_c_buf_p) = (yy_hold_char); + + if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + /* This was really a NUL. */ + *(yy_c_buf_p) = '\0'; + + else + { /* need more input */ + int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); + ++(yy_c_buf_p); + + switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart( yyin ); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( yywrap( ) ) + return 0; + + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = (yytext_ptr) + offset; + break; + } + } + } + + c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ + *(yy_c_buf_p) = '\0'; /* preserve yytext */ + (yy_hold_char) = *++(yy_c_buf_p); + + if ( c == '\n' ) + + yylineno++; +; + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * + * @note This function does not reset the start condition to @c INITIAL . + */ + void yyrestart (FILE * input_file ) +{ + + if ( ! YY_CURRENT_BUFFER ){ + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer( yyin, YY_BUF_SIZE ); + } + + yy_init_buffer( YY_CURRENT_BUFFER, input_file ); + yy_load_buffer_state( ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * + */ + void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +{ + + /* TODO. We should be able to replace this entire function body + * with + * yypop_buffer_state(); + * yypush_buffer_state(new_buffer); + */ + yyensure_buffer_stack (); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + yy_load_buffer_state( ); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe + * to go ahead and always set it. + */ + (yy_did_buffer_switch_on_eof) = 1; +} + +static void yy_load_buffer_state (void) +{ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + (yy_hold_char) = *(yy_c_buf_p); +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * + * @return the allocated buffer state. + */ + YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + yy_init_buffer( b, file ); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with yy_create_buffer() + * + */ + void yy_delete_buffer (YY_BUFFER_STATE b ) +{ + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + yyfree( (void *) b->yy_ch_buf ); + + yyfree( (void *) b ); +} + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a yyrestart() or at EOF. + */ + static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) + +{ + int oerrno = errno; + + yy_flush_buffer( b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then yy_init_buffer was _probably_ + * called from yyrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * + */ + void yy_flush_buffer (YY_BUFFER_STATE b ) +{ + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + yy_load_buffer_state( ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * + */ +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) +{ + if (new_buffer == NULL) + return; + + yyensure_buffer_stack(); + + /* This block is copied from yy_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + (yy_buffer_stack_top)++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from yy_switch_to_buffer. */ + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * + */ +void yypop_buffer_state (void) +{ + if (!YY_CURRENT_BUFFER) + return; + + yy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + if ((yy_buffer_stack_top) > 0) + --(yy_buffer_stack_top); + + if (YY_CURRENT_BUFFER) { + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void yyensure_buffer_stack (void) +{ + yy_size_t num_to_alloc; + + if (!(yy_buffer_stack)) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ + (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + (yy_buffer_stack_max) = num_to_alloc; + (yy_buffer_stack_top) = 0; + return; + } + + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + yy_size_t grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = (yy_buffer_stack_max) + grow_size; + (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc + ((yy_buffer_stack), + num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + /* zero only the new slots.*/ + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); + (yy_buffer_stack_max) = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return NULL; + + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + + b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = NULL; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer( b ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to yylex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * yy_scan_bytes() instead. + */ +YY_BUFFER_STATE yy_scan_string (const char * yystr ) +{ + + return yy_scan_bytes( yystr, (int) strlen(yystr) ); +} + +/** Setup the input buffer state to scan the given bytes. The next call to yylex() will + * scan from a @e copy of @a bytes. + * @param yybytes the byte buffer to scan + * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = (yy_size_t) (_yybytes_len + 2); + buf = (char *) yyalloc( n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer( buf, n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yynoreturn yy_fatal_error (const char* msg ) +{ + fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = (yy_hold_char); \ + (yy_c_buf_p) = yytext + yyless_macro_arg; \ + (yy_hold_char) = *(yy_c_buf_p); \ + *(yy_c_buf_p) = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the current line number. + * + */ +int yyget_lineno (void) +{ + + return yylineno; +} + +/** Get the input stream. + * + */ +FILE *yyget_in (void) +{ + return yyin; +} + +/** Get the output stream. + * + */ +FILE *yyget_out (void) +{ + return yyout; +} + +/** Get the length of the current token. + * + */ +int yyget_leng (void) +{ + return yyleng; +} + +/** Get the current token. + * + */ + +char *yyget_text (void) +{ + return yytext; +} + +/** Set the current line number. + * @param _line_number line number + * + */ +void yyset_lineno (int _line_number ) +{ + + yylineno = _line_number; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param _in_str A readable stream. + * + * @see yy_switch_to_buffer + */ +void yyset_in (FILE * _in_str ) +{ + yyin = _in_str ; +} + +void yyset_out (FILE * _out_str ) +{ + yyout = _out_str ; +} + +int yyget_debug (void) +{ + return yy_flex_debug; +} + +void yyset_debug (int _bdebug ) +{ + yy_flex_debug = _bdebug ; +} + +static int yy_init_globals (void) +{ + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from yylex_destroy(), so don't allocate here. + */ + + /* We do not touch yylineno unless the option is enabled. */ + yylineno = 1; + + (yy_buffer_stack) = NULL; + (yy_buffer_stack_top) = 0; + (yy_buffer_stack_max) = 0; + (yy_c_buf_p) = NULL; + (yy_init) = 0; + (yy_start) = 0; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = NULL; + yyout = NULL; +#endif + + /* For future reference: Set errno on error, since we are called by + * yylex_init() + */ + return 0; +} + +/* yylex_destroy is for both reentrant and non-reentrant scanners. */ +int yylex_destroy (void) +{ + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + yy_delete_buffer( YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + yypop_buffer_state(); + } + + /* Destroy the stack itself. */ + yyfree((yy_buffer_stack) ); + (yy_buffer_stack) = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * yylex() is called, initialization will occur. */ + yy_init_globals( ); + + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, const char * s2, int n ) +{ + + int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (const char * s ) +{ + int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *yyalloc (yy_size_t size ) +{ + return malloc(size); +} + +void *yyrealloc (void * ptr, yy_size_t size ) +{ + + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return realloc(ptr, size); +} + +void yyfree (void * ptr ) +{ + free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +/* second stage lexer */ +int yylex(void) +{ + int token; + +repeat: + token = yylex1(); + + if (prev_token == T_EOL || prev_token == T_HELPTEXT) { + if (token == T_EOL) + /* Do not pass unneeded T_EOL to the parser. */ + goto repeat; + else + /* + * For the parser, update lineno at the first token + * of each statement. Generally, \n is a statement + * terminator in Kconfig, but it is not always true + * because \n could be escaped by a backslash. + */ + cur_lineno = yylineno; + } + + if (prev_prev_token == T_EOL && prev_token == T_WORD && + (token == T_EQUAL || token == T_COLON_EQUAL || token == T_PLUS_EQUAL)) + BEGIN(ASSIGN_VAL); + + prev_prev_token = prev_token; + prev_token = token; + + return token; +} + +static char *expand_token(const char *in, size_t n) +{ + char *out; + int c; + char c2; + const char *rest, *end; + + new_string(); + append_string(in, n); + + /* + * get the whole line because we do not know the end of token. + * input() returns 0 (not EOF!) when it reachs the end of file. + */ + while ((c = input()) != 0) { + if (c == '\n') { + unput(c); + break; + } + c2 = c; + append_string(&c2, 1); + } + + rest = text; + out = expand_one_token(&rest); + + /* push back unused characters to the input stream */ + end = rest + strlen(rest); + while (end > rest) + unput(*--end); + + free(text); + + return out; +} + +static void append_expanded_string(const char *str) +{ + const char *end; + char *res; + + str++; + + res = expand_dollar(&str); + + /* push back unused characters to the input stream */ + end = str + strlen(str); + while (end > str) + unput(*--end); + + append_string(res, strlen(res)); + + free(res); +} + +void zconf_starthelp(void) +{ + new_string(); + last_ts = first_ts = 0; + BEGIN(HELP); +} + +static void zconf_endhelp(void) +{ + yylval.string = text; + BEGIN(INITIAL); +} + +/* + * Try to open specified file with following names: + * ./name + * $(srctree)/name + * The latter is used when srctree is separate from objtree + * when compiling the kernel. + * Return NULL if file is not found. + */ +FILE *zconf_fopen(const char *name) +{ + char *env, fullname[PATH_MAX+1]; + FILE *f; + + f = fopen(name, "r"); + if (!f && name != NULL && name[0] != '/') { + env = getenv(SRCTREE); + if (env) { + snprintf(fullname, sizeof(fullname), + "%s/%s", env, name); + f = fopen(fullname, "r"); + } + } + return f; +} + +void zconf_initscan(const char *name) +{ + yyin = zconf_fopen(name); + if (!yyin) { + fprintf(stderr, "can't find file %s\n", name); + exit(1); + } + + cur_filename = file_lookup(name); + yylineno = 1; +} + +void zconf_nextfile(const char *name) +{ + struct buffer *buf = xmalloc(sizeof(*buf)); + bool recur_include = false; + + buf->state = YY_CURRENT_BUFFER; + buf->yylineno = yylineno; + buf->filename = cur_filename; + buf->source_lineno = cur_lineno; + buf->parent = current_buf; + current_buf = buf; + yyin = zconf_fopen(name); + if (!yyin) { + fprintf(stderr, "%s:%d: can't open file \"%s\"\n", + cur_filename, cur_lineno, name); + exit(1); + } + yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); + + for (buf = current_buf; buf; buf = buf->parent) { + if (!strcmp(buf->filename, name)) + recur_include = true; + } + + if (recur_include) { + fprintf(stderr, + "Recursive inclusion detected.\n" + "Inclusion path:\n" + " current file : %s\n", name); + + for (buf = current_buf; buf; buf = buf->parent) + fprintf(stderr, " included from: %s:%d\n", + buf->filename, buf->source_lineno); + exit(1); + } + + yylineno = 1; + cur_filename = file_lookup(name); +} + +static void zconf_endfile(void) +{ + struct buffer *tmp; + + fclose(yyin); + yy_delete_buffer(YY_CURRENT_BUFFER); + yy_switch_to_buffer(current_buf->state); + yylineno = current_buf->yylineno; + cur_filename = current_buf->filename; + tmp = current_buf; + current_buf = current_buf->parent; + free(tmp); +} + diff --git a/support/kconfig/list.h b/support/kconfig/list.h index 45cb237ab7..882859ddf9 100644 --- a/support/kconfig/list.h +++ b/support/kconfig/list.h @@ -2,29 +2,39 @@ #ifndef LIST_H #define LIST_H -/* - * Copied from include/linux/... - */ +#include -#undef offsetof -#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) +#include "list_types.h" + +/* Are two types/vars the same type (ignoring qualifiers)? */ +#define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b)) /** * container_of - cast a member of a structure out to the containing structure - * @ptr: the pointer to the member. - * @type: the type of the container struct this is embedded in. - * @member: the name of the member within the struct. + * @ptr: the pointer to the member. + * @type: the type of the container struct this is embedded in. + * @member: the name of the member within the struct. * */ -#define container_of(ptr, type, member) ({ \ - const typeof( ((type *)0)->member ) *__mptr = (ptr); \ - (type *)( (char *)__mptr - offsetof(type,member) );}) - +#define container_of(ptr, type, member) ({ \ + void *__mptr = (void *)(ptr); \ + _Static_assert(__same_type(*(ptr), ((type *)0)->member) || \ + __same_type(*(ptr), void), \ + "pointer type mismatch in container_of()"); \ + ((type *)(__mptr - offsetof(type, member))); }) -struct list_head { - struct list_head *next, *prev; -}; +#define LIST_POISON1 ((void *) 0x100) +#define LIST_POISON2 ((void *) 0x122) +/* + * Circular doubly linked list implementation. + * + * Some of the internal functions ("__xxx") are useful when + * manipulating whole lists rather than single entries, as + * sometimes we already know the next/prev entries and we can + * generate better code by using them directly rather than + * using the generic single-entry routines. + */ #define LIST_HEAD_INIT(name) { &(name), &(name) } @@ -32,45 +42,16 @@ struct list_head { struct list_head name = LIST_HEAD_INIT(name) /** - * list_entry - get the struct for this entry - * @ptr: the &struct list_head pointer. - * @type: the type of the struct this is embedded in. - * @member: the name of the list_head within the struct. - */ -#define list_entry(ptr, type, member) \ - container_of(ptr, type, member) - -/** - * list_for_each_entry - iterate over list of given type - * @pos: the type * to use as a loop cursor. - * @head: the head for your list. - * @member: the name of the list_head within the struct. - */ -#define list_for_each_entry(pos, head, member) \ - for (pos = list_entry((head)->next, typeof(*pos), member); \ - &pos->member != (head); \ - pos = list_entry(pos->member.next, typeof(*pos), member)) - -/** - * list_for_each_entry_safe - iterate over list of given type safe against removal of list entry - * @pos: the type * to use as a loop cursor. - * @n: another type * to use as temporary storage - * @head: the head for your list. - * @member: the name of the list_head within the struct. - */ -#define list_for_each_entry_safe(pos, n, head, member) \ - for (pos = list_entry((head)->next, typeof(*pos), member), \ - n = list_entry(pos->member.next, typeof(*pos), member); \ - &pos->member != (head); \ - pos = n, n = list_entry(n->member.next, typeof(*n), member)) - -/** - * list_empty - tests whether a list is empty - * @head: the list to test. + * INIT_LIST_HEAD - Initialize a list_head structure + * @list: list_head structure to be initialized. + * + * Initializes the list_head to point to itself. If it is a list header, + * the result is an empty list. */ -static inline int list_empty(const struct list_head *head) +static inline void INIT_LIST_HEAD(struct list_head *list) { - return head->next == head; + list->next = list; + list->prev = list; } /* @@ -79,14 +60,27 @@ static inline int list_empty(const struct list_head *head) * This is only for internal list manipulation where we know * the prev/next entries already! */ -static inline void __list_add(struct list_head *_new, +static inline void __list_add(struct list_head *new, struct list_head *prev, struct list_head *next) { - next->prev = _new; - _new->next = next; - _new->prev = prev; - prev->next = _new; + next->prev = new; + new->next = next; + new->prev = prev; + prev->next = new; +} + +/** + * list_add - add a new entry + * @new: new entry to be added + * @head: list head to add it after + * + * Insert a new entry after the specified head. + * This is good for implementing stacks. + */ +static inline void list_add(struct list_head *new, struct list_head *head) +{ + __list_add(new, head, head->next); } /** @@ -97,9 +91,9 @@ static inline void __list_add(struct list_head *_new, * Insert a new entry before the specified head. * This is useful for implementing queues. */ -static inline void list_add_tail(struct list_head *_new, struct list_head *head) +static inline void list_add_tail(struct list_head *new, struct list_head *head) { - __list_add(_new, head->prev, head); + __list_add(new, head->prev, head); } /* @@ -115,8 +109,11 @@ static inline void __list_del(struct list_head *prev, struct list_head *next) prev->next = next; } -#define LIST_POISON1 ((void *) 0x00100100) -#define LIST_POISON2 ((void *) 0x00200200) +static inline void __list_del_entry(struct list_head *entry) +{ + __list_del(entry->prev, entry->next); +} + /** * list_del - deletes entry from list. * @entry: the element to delete from the list. @@ -125,8 +122,135 @@ static inline void __list_del(struct list_head *prev, struct list_head *next) */ static inline void list_del(struct list_head *entry) { - __list_del(entry->prev, entry->next); - entry->next = (struct list_head*)LIST_POISON1; - entry->prev = (struct list_head*)LIST_POISON2; + __list_del_entry(entry); + entry->next = LIST_POISON1; + entry->prev = LIST_POISON2; +} + +/** + * list_is_head - tests whether @list is the list @head + * @list: the entry to test + * @head: the head of the list + */ +static inline int list_is_head(const struct list_head *list, const struct list_head *head) +{ + return list == head; +} + +/** + * list_empty - tests whether a list is empty + * @head: the list to test. + */ +static inline int list_empty(const struct list_head *head) +{ + return head->next == head; +} + +/** + * list_entry - get the struct for this entry + * @ptr: the &struct list_head pointer. + * @type: the type of the struct this is embedded in. + * @member: the name of the list_head within the struct. + */ +#define list_entry(ptr, type, member) \ + container_of(ptr, type, member) + +/** + * list_first_entry - get the first element from a list + * @ptr: the list head to take the element from. + * @type: the type of the struct this is embedded in. + * @member: the name of the list_head within the struct. + * + * Note, that list is expected to be not empty. + */ +#define list_first_entry(ptr, type, member) \ + list_entry((ptr)->next, type, member) + +/** + * list_next_entry - get the next element in list + * @pos: the type * to cursor + * @member: the name of the list_head within the struct. + */ +#define list_next_entry(pos, member) \ + list_entry((pos)->member.next, typeof(*(pos)), member) + +/** + * list_entry_is_head - test if the entry points to the head of the list + * @pos: the type * to cursor + * @head: the head for your list. + * @member: the name of the list_head within the struct. + */ +#define list_entry_is_head(pos, head, member) \ + (&pos->member == (head)) + +/** + * list_for_each_entry - iterate over list of given type + * @pos: the type * to use as a loop cursor. + * @head: the head for your list. + * @member: the name of the list_head within the struct. + */ +#define list_for_each_entry(pos, head, member) \ + for (pos = list_first_entry(head, typeof(*pos), member); \ + !list_entry_is_head(pos, head, member); \ + pos = list_next_entry(pos, member)) + +/** + * list_for_each_entry_safe - iterate over list of given type. Safe against removal of list entry + * @pos: the type * to use as a loop cursor. + * @n: another type * to use as temporary storage + * @head: the head for your list. + * @member: the name of the list_head within the struct. + */ +#define list_for_each_entry_safe(pos, n, head, member) \ + for (pos = list_first_entry(head, typeof(*pos), member), \ + n = list_next_entry(pos, member); \ + !list_entry_is_head(pos, head, member); \ + pos = n, n = list_next_entry(n, member)) + +/* + * Double linked lists with a single pointer list head. + * Mostly useful for hash tables where the two pointer list head is + * too wasteful. + * You lose the ability to access the tail in O(1). + */ + +#define HLIST_HEAD_INIT { .first = NULL } + +/** + * hlist_add_head - add a new entry at the beginning of the hlist + * @n: new entry to be added + * @h: hlist head to add it after + * + * Insert a new entry after the specified head. + * This is good for implementing stacks. + */ +static inline void hlist_add_head(struct hlist_node *n, struct hlist_head *h) +{ + struct hlist_node *first = h->first; + + n->next = first; + if (first) + first->pprev = &n->next; + h->first = n; + n->pprev = &h->first; } -#endif + +#define hlist_entry(ptr, type, member) container_of(ptr, type, member) + +#define hlist_entry_safe(ptr, type, member) \ + ({ typeof(ptr) ____ptr = (ptr); \ + ____ptr ? hlist_entry(____ptr, type, member) : NULL; \ + }) + +/** + * hlist_for_each_entry - iterate over list of given type + * @pos: the type * to use as a loop cursor. + * @head: the head for your list. + * @member: the name of the hlist_node within the struct. + */ +#define hlist_for_each_entry(pos, head, member) \ + for (pos = hlist_entry_safe((head)->first, typeof(*(pos)), member);\ + pos; \ + pos = hlist_entry_safe((pos)->member.next, typeof(*(pos)), member)) + +#endif /* LIST_H */ diff --git a/support/kconfig/list_types.h b/support/kconfig/list_types.h new file mode 100644 index 0000000000..d935b7c5aa --- /dev/null +++ b/support/kconfig/list_types.h @@ -0,0 +1,17 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef LIST_TYPES_H +#define LIST_TYPES_H + +struct list_head { + struct list_head *next, *prev; +}; + +struct hlist_head { + struct hlist_node *first; +}; + +struct hlist_node { + struct hlist_node *next, **pprev; +}; + +#endif /* LIST_TYPES_H */ diff --git a/support/kconfig/lkc.h b/support/kconfig/lkc.h index f4394af6e4..e7cc9e985c 100644 --- a/support/kconfig/lkc.h +++ b/support/kconfig/lkc.h @@ -1,21 +1,16 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ #ifndef LKC_H #define LKC_H -#include "expr.h" +#include +#include +#include -#ifndef KBUILD_NO_NLS -# include -#else -static inline const char *gettext(const char *txt) { return txt; } -static inline void textdomain(const char *domainname) {} -static inline void bindtextdomain(const char *name, const char *dir) {} -static inline char *bind_textdomain_codeset(const char *dn, char *c) { return c; } -#endif +#include "expr.h" #ifdef __cplusplus extern "C" { @@ -25,15 +20,6 @@ extern "C" { #define SRCTREE "srctree" -#ifndef PACKAGE -#define PACKAGE "linux" -#endif - -#define LOCALEDIR "/usr/share/locale" - -#define _(text) gettext(text) -#define N_(text) (text) - #ifndef CONFIG_ #define CONFIG_ "CONFIG_" #endif @@ -44,46 +30,16 @@ static inline const char *CONFIG_prefix(void) #undef CONFIG_ #define CONFIG_ CONFIG_prefix() -#define TF_COMMAND 0x0001 -#define TF_PARAM 0x0002 -#define TF_OPTION 0x0004 - -enum conf_def_mode { - def_default, - def_yes, - def_mod, - def_no, - def_random -}; - -#define T_OPT_MODULES 1 -#define T_OPT_DEFCONFIG_LIST 2 -#define T_OPT_ENV 3 -#define T_OPT_ALLNOCONFIG_Y 4 - -struct kconf_id { - const char *name; - int token; - unsigned int flags; - enum symbol_type stype; -}; - extern int yylineno; void zconfdump(FILE *out); void zconf_starthelp(void); FILE *zconf_fopen(const char *name); void zconf_initscan(const char *name); void zconf_nextfile(const char *name); -int zconf_lineno(void); -const char *zconf_curname(void); /* confdata.c */ +extern struct gstr autoconf_cmd; const char *conf_get_configname(void); -const char *conf_get_autoconfig_name(void); -char *conf_get_default_confname(void); -void sym_set_change_count(int count); -void sym_add_change_count(int count); -bool conf_set_all_new_symbols(enum conf_def_mode mode); void set_all_choice_values(struct symbol *csym); /* confdata.c and expr.c */ @@ -95,28 +51,17 @@ static inline void xfwrite(const void *str, size_t len, size_t count, FILE *out) fprintf(stderr, "Error in writing or end of file.\n"); } -/* menu.c */ -void _menu_init(void); -void menu_warn(struct menu *menu, const char *fmt, ...); -struct menu *menu_add_menu(void); -void menu_end_menu(void); -void menu_add_entry(struct symbol *sym); -void menu_add_dep(struct expr *dep); -void menu_add_visibility(struct expr *dep); -struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep); -void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep); -void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep); -void menu_add_option(int token, char *arg); -void menu_finalize(struct menu *parent); -void menu_set_type(int type); - /* util.c */ -struct file *file_lookup(const char *name); -int file_write_dep(const char *name); +unsigned int strhash(const char *s); +const char *file_lookup(const char *name); void *xmalloc(size_t size); void *xcalloc(size_t nmemb, size_t size); void *xrealloc(void *p, size_t size); char *xstrdup(const char *s); +char *xstrndup(const char *s, size_t n); + +/* lexer.l */ +int yylex(void); struct gstr { size_t len; @@ -131,19 +76,40 @@ struct gstr str_new(void); void str_free(struct gstr *gs); void str_append(struct gstr *gs, const char *s); void str_printf(struct gstr *gs, const char *fmt, ...); -const char *str_get(struct gstr *gs); +char *str_get(struct gstr *gs); -/* symbol.c */ -extern struct expr *sym_env_list; +/* menu.c */ +void _menu_init(void); +void menu_warn(struct menu *menu, const char *fmt, ...); +struct menu *menu_add_menu(void); +void menu_end_menu(void); +void menu_add_entry(struct symbol *sym); +void menu_add_dep(struct expr *dep); +void menu_add_visibility(struct expr *dep); +struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep); +void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep); +void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep); +void menu_finalize(void); +void menu_set_type(int type); + +extern struct menu rootmenu; -void sym_init(void); +bool menu_is_empty(struct menu *menu); +bool menu_is_visible(struct menu *menu); +bool menu_has_prompt(struct menu *menu); +const char *menu_get_prompt(struct menu *menu); +struct menu *menu_get_parent_menu(struct menu *menu); +int get_jump_key_char(void); +struct gstr get_relations_str(struct symbol **sym_arr, struct list_head *head); +void menu_get_ext_help(struct menu *menu, struct gstr *help); + +/* symbol.c */ void sym_clear_all_valid(void); struct symbol *sym_choice_default(struct symbol *sym); +struct property *sym_get_range_prop(struct symbol *sym); const char *sym_get_string_default(struct symbol *sym); struct symbol *sym_check_deps(struct symbol *sym); -struct property *prop_alloc(enum prop_type type, struct symbol *sym); struct symbol *prop_get_symbol(struct property *prop); -struct property *sym_get_env_prop(struct symbol *sym); static inline tristate sym_get_tristate_value(struct symbol *sym) { @@ -156,11 +122,6 @@ static inline struct symbol *sym_get_choice_value(struct symbol *sym) return (struct symbol *)sym->curr.val; } -static inline bool sym_set_choice_value(struct symbol *ch, struct symbol *chval) -{ - return sym_set_tristate_value(chval, yes); -} - static inline bool sym_is_choice(struct symbol *sym) { return sym->flags & SYMBOL_CHOICE ? true : false; diff --git a/support/kconfig/lkc_proto.h b/support/kconfig/lkc_proto.h index 9dc8abfb1d..2807fa584c 100644 --- a/support/kconfig/lkc_proto.h +++ b/support/kconfig/lkc_proto.h @@ -1,4 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0 */ +#ifndef LKC_PROTO_H +#define LKC_PROTO_H + #include /* confdata.c */ @@ -7,35 +10,21 @@ int conf_read(const char *name); int conf_read_simple(const char *name, int); int conf_write_defconfig(const char *name); int conf_write(const char *name); -int conf_write_autoconf(void); +int conf_write_autoconf(int overwrite); +void conf_set_changed(bool val); bool conf_get_changed(void); void conf_set_changed_callback(void (*fn)(void)); -void conf_set_message_callback(void (*fn)(const char *fmt, va_list ap)); - -/* menu.c */ -extern struct menu rootmenu; - -bool menu_is_empty(struct menu *menu); -bool menu_is_visible(struct menu *menu); -bool menu_has_prompt(struct menu *menu); -const char * menu_get_prompt(struct menu *menu); -struct menu * menu_get_root_menu(struct menu *menu); -struct menu * menu_get_parent_menu(struct menu *menu); -bool menu_has_help(struct menu *menu); -const char * menu_get_help(struct menu *menu); -struct gstr get_relations_str(struct symbol **sym_arr, struct list_head *head); -void menu_get_ext_help(struct menu *menu, struct gstr *help); +void conf_set_message_callback(void (*fn)(const char *s)); +bool conf_errors(void); /* symbol.c */ -extern struct symbol * symbol_hash[SYMBOL_HASHSIZE]; - struct symbol * sym_lookup(const char *name, int flags); struct symbol * sym_find(const char *name); -char *sym_expand_string_value(const char *in); -const char * sym_escape_string_value(const char *in); +void print_symbol_for_listconfig(struct symbol *sym); struct symbol ** sym_re_search(const char *pattern); const char * sym_type_name(enum symbol_type type); void sym_calc_value(struct symbol *sym); +bool sym_dep_errors(void); enum symbol_type sym_get_type(struct symbol *sym); bool sym_tristate_within_range(struct symbol *sym,tristate tri); bool sym_set_tristate_value(struct symbol *sym,tristate tri); @@ -43,7 +32,7 @@ tristate sym_toggle_tristate_value(struct symbol *sym); bool sym_string_valid(struct symbol *sym, const char *newval); bool sym_string_within_range(struct symbol *sym, const char *str); bool sym_set_string_value(struct symbol *sym, const char *newval); -bool sym_is_changable(struct symbol *sym); +bool sym_is_changeable(struct symbol *sym); struct property * sym_get_choice_prop(struct symbol *sym); const char * sym_get_string_value(struct symbol *sym); @@ -51,3 +40,5 @@ const char * prop_get_type_name(enum prop_type type); /* expr.c */ void expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char *), void *data, int prevtoken); + +#endif /* LKC_PROTO_H */ diff --git a/support/kconfig/lxdialog/.gitignore b/support/kconfig/lxdialog/.gitignore deleted file mode 100644 index 90b08ff025..0000000000 --- a/support/kconfig/lxdialog/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# -# Generated files -# -lxdialog diff --git a/support/kconfig/lxdialog/BIG.FAT.WARNING b/support/kconfig/lxdialog/BIG.FAT.WARNING index a8999d82bd..7cb5a7ec93 100644 --- a/support/kconfig/lxdialog/BIG.FAT.WARNING +++ b/support/kconfig/lxdialog/BIG.FAT.WARNING @@ -1,4 +1,4 @@ This is NOT the official version of dialog. This version has been significantly modified from the original. It is for use by the Linux -kernel configuration script. Please do not bother Savio Lam with +kernel configuration script. Please do not bother Savio Lam with questions about this program. diff --git a/support/kconfig/lxdialog/check-lxdialog.sh b/support/kconfig/lxdialog/check-lxdialog.sh deleted file mode 100755 index 27d6c30a57..0000000000 --- a/support/kconfig/lxdialog/check-lxdialog.sh +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Check ncurses compatibility - -# What library to link -ldflags() -{ - pkg-config --libs ncursesw 2>/dev/null && exit - pkg-config --libs ncurses 2>/dev/null && exit - for ext in so a dll.a dylib ; do - for lib in ncursesw ncurses curses ; do - $cc -print-file-name=lib${lib}.${ext} | grep -q / - if [ $? -eq 0 ]; then - echo "-l${lib}" - exit - fi - done - done - exit 1 -} - -# Where is ncurses.h? -ccflags() -{ - if pkg-config --cflags ncursesw 2>/dev/null; then - echo '-DCURSES_LOC="" -DNCURSES_WIDECHAR=1' - elif pkg-config --cflags ncurses 2>/dev/null; then - echo '-DCURSES_LOC=""' - elif [ -f /usr/include/ncursesw/curses.h ]; then - echo '-I/usr/include/ncursesw -DCURSES_LOC=""' - echo ' -DNCURSES_WIDECHAR=1' - elif [ -f /usr/include/ncurses/ncurses.h ]; then - echo '-I/usr/include/ncurses -DCURSES_LOC=""' - elif [ -f /usr/include/ncurses/curses.h ]; then - echo '-I/usr/include/ncurses -DCURSES_LOC=""' - elif [ -f /usr/include/ncurses.h ]; then - echo '-DCURSES_LOC=""' - else - echo '-DCURSES_LOC=""' - fi -} - -# Temp file, try to clean up after us -tmp=$(mktemp) -trap "rm -f $tmp" 0 1 2 3 15 - -# Check if we can link to ncurses -check() { - $cc -x c - -o $tmp 2>/dev/null <<'EOF' -#include CURSES_LOC -int main() {} -EOF - if [ $? != 0 ]; then - echo " *** Unable to find the ncurses libraries or the" 1>&2 - echo " *** required header files." 1>&2 - echo " *** 'make menuconfig' requires the ncurses libraries." 1>&2 - echo " *** " 1>&2 - echo " *** Install ncurses (ncurses-devel or libncurses-dev " 1>&2 - echo " *** depending on your distribution) and try again." 1>&2 - echo " *** " 1>&2 - exit 1 - fi -} - -usage() { - printf "Usage: $0 [-check compiler options|-ccflags|-ldflags compiler options]\n" -} - -if [ $# -eq 0 ]; then - usage - exit 1 -fi - -cc="" -case "$1" in - "-check") - shift - cc="$@" - check - ;; - "-ccflags") - ccflags - ;; - "-ldflags") - shift - cc="$@" - ldflags - ;; - "*") - usage - exit 1 - ;; -esac diff --git a/support/kconfig/lxdialog/checklist.c b/support/kconfig/lxdialog/checklist.c index 8d016faa28..75493302fb 100644 --- a/support/kconfig/lxdialog/checklist.c +++ b/support/kconfig/lxdialog/checklist.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * checklist.c -- implements the checklist box * @@ -5,20 +6,6 @@ * Stuart Herbert - S.Herbert at sheffield.ac.uk: radiolist extension * Alessandro Rubini - rubini at ipvvis.unipv.it: merged the two * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap at cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "dialog.h" @@ -103,8 +90,8 @@ static void print_buttons(WINDOW * dialog, int height, int width, int selected) int x = width / 2 - 11; int y = height - 2; - print_button(dialog, gettext("Select"), y, x, selected == 0); - print_button(dialog, gettext(" Help "), y, x + 14, selected == 1); + print_button(dialog, "Select", y, x, selected == 0); + print_button(dialog, " Help ", y, x + 14, selected == 1); wmove(dialog, y, x + 1 + 14 * selected); wrefresh(dialog); @@ -132,7 +119,7 @@ int dialog_checklist(const char *title, const char *prompt, int height, } do_resize: - if (getmaxy(stdscr) < (height + CHECKLIST_HEIGTH_MIN)) + if (getmaxy(stdscr) < (height + CHECKLIST_HEIGHT_MIN)) return -ERRDISPLAYTOOSMALL; if (getmaxx(stdscr) < (width + CHECKLIST_WIDTH_MIN)) return -ERRDISPLAYTOOSMALL; @@ -201,9 +188,8 @@ do_resize: print_buttons(dialog, height, width, 0); - wnoutrefresh(dialog); - wnoutrefresh(list); - doupdate(); + wmove(list, choice, check_x + 1); + wrefresh(list); while (key != KEY_ESC) { key = wgetch(dialog); diff --git a/support/kconfig/lxdialog/dialog.h b/support/kconfig/lxdialog/dialog.h index fcffd5b41f..f6c2ebe6d1 100644 --- a/support/kconfig/lxdialog/dialog.h +++ b/support/kconfig/lxdialog/dialog.h @@ -1,21 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ /* * dialog.h -- common declarations for all dialog modules * * AUTHOR: Savio Lam (lam836 at cs.cuhk.hk) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include @@ -26,32 +13,10 @@ #include #include -#ifndef KBUILD_NO_NLS -# include -#else -# define gettext(Msgid) ((const char *) (Msgid)) -#endif - #ifdef __sun__ #define CURS_MACROS #endif -#include CURSES_LOC - -/* - * Colors in ncurses 1.9.9e do not work properly since foreground and - * background colors are OR'd rather than separately masked. This version - * of dialog was hacked to work with ncurses 1.9.9e, making it incompatible - * with standard curses. The simplest fix (to make this work with standard - * curses) uses the wbkgdset() function, not used in the original hack. - * Turn it off if we're building with 1.9.9e, since it just confuses things. - */ -#if defined(NCURSES_VERSION) && defined(_NEED_WRAP) && !defined(GCC_PRINTFLIKE) -#define OLD_NCURSES 1 -#undef wbkgdset -#define wbkgdset(w,p) /*nothing */ -#else -#define OLD_NCURSES 0 -#endif +#include #define TR(params) _tracef params @@ -126,10 +91,6 @@ struct dialog_info { struct dialog_color button_label_active; struct dialog_color button_label_inactive; struct dialog_color inputbox; - struct dialog_color inputbox_border; - struct dialog_color searchbox; - struct dialog_color searchbox_title; - struct dialog_color searchbox_border; struct dialog_color position_indicator; struct dialog_color menubox; struct dialog_color menubox_border; @@ -201,17 +162,17 @@ int on_key_esc(WINDOW *win); int on_key_resize(void); /* minimum (re)size values */ -#define CHECKLIST_HEIGTH_MIN 6 /* For dialog_checklist() */ +#define CHECKLIST_HEIGHT_MIN 6 /* For dialog_checklist() */ #define CHECKLIST_WIDTH_MIN 6 -#define INPUTBOX_HEIGTH_MIN 2 /* For dialog_inputbox() */ +#define INPUTBOX_HEIGHT_MIN 2 /* For dialog_inputbox() */ #define INPUTBOX_WIDTH_MIN 2 -#define MENUBOX_HEIGTH_MIN 15 /* For dialog_menu() */ +#define MENUBOX_HEIGHT_MIN 15 /* For dialog_menu() */ #define MENUBOX_WIDTH_MIN 65 -#define TEXTBOX_HEIGTH_MIN 8 /* For dialog_textbox() */ +#define TEXTBOX_HEIGHT_MIN 8 /* For dialog_textbox() */ #define TEXTBOX_WIDTH_MIN 8 -#define YESNO_HEIGTH_MIN 4 /* For dialog_yesno() */ +#define YESNO_HEIGHT_MIN 4 /* For dialog_yesno() */ #define YESNO_WIDTH_MIN 4 -#define WINDOW_HEIGTH_MIN 19 /* For init_dialog() */ +#define WINDOW_HEIGHT_MIN 19 /* For init_dialog() */ #define WINDOW_WIDTH_MIN 80 int init_dialog(const char *backtitle); @@ -231,27 +192,12 @@ int first_alpha(const char *string, const char *exempt); int dialog_yesno(const char *title, const char *prompt, int height, int width); int dialog_msgbox(const char *title, const char *prompt, int height, int width, int pause); - - -typedef void (*update_text_fn)(char *buf, size_t start, size_t end, void - *_data); -int dialog_textbox(const char *title, char *tbuf, int initial_height, - int initial_width, int *keys, int *_vscroll, int *_hscroll, - update_text_fn update_text, void *data); +int dialog_textbox(const char *title, const char *tbuf, int initial_height, + int initial_width, int *_vscroll, int *_hscroll, + int (*extra_key_cb)(int, size_t, size_t, void *), void *data); int dialog_menu(const char *title, const char *prompt, const void *selected, int *s_scroll); int dialog_checklist(const char *title, const char *prompt, int height, int width, int list_height); int dialog_inputbox(const char *title, const char *prompt, int height, int width, const char *init); - -/* - * This is the base for fictitious keys, which activate - * the buttons. - * - * Mouse-generated keys are the following: - * -- the first 32 are used as numbers, in addition to '0'-'9' - * -- the lowercase are used to signal mouse-enter events (M_EVENT + 'o') - * -- uppercase chars are used to invoke the button (M_EVENT + 'O') - */ -#define M_EVENT (KEY_MAX+1) diff --git a/support/kconfig/lxdialog/inputbox.c b/support/kconfig/lxdialog/inputbox.c index d58de1dc53..3c6e24b20f 100644 --- a/support/kconfig/lxdialog/inputbox.c +++ b/support/kconfig/lxdialog/inputbox.c @@ -1,22 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * inputbox.c -- implements the input box * * ORIGINAL AUTHOR: Savio Lam (lam836 at cs.cuhk.hk) * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap at cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "dialog.h" @@ -31,8 +18,8 @@ static void print_buttons(WINDOW * dialog, int height, int width, int selected) int x = width / 2 - 11; int y = height - 2; - print_button(dialog, gettext(" Ok "), y, x, selected == 0); - print_button(dialog, gettext(" Help "), y, x + 14, selected == 1); + print_button(dialog, " Ok ", y, x, selected == 0); + print_button(dialog, " Help ", y, x + 14, selected == 1); wmove(dialog, y, x + 1 + 14 * selected); wrefresh(dialog); @@ -56,7 +43,7 @@ int dialog_inputbox(const char *title, const char *prompt, int height, int width strcpy(instr, init); do_resize: - if (getmaxy(stdscr) <= (height - INPUTBOX_HEIGTH_MIN)) + if (getmaxy(stdscr) <= (height - INPUTBOX_HEIGHT_MIN)) return -ERRDISPLAYTOOSMALL; if (getmaxx(stdscr) <= (width - INPUTBOX_WIDTH_MIN)) return -ERRDISPLAYTOOSMALL; @@ -126,7 +113,8 @@ do_resize: case KEY_DOWN: break; case KEY_BACKSPACE: - case 127: + case 8: /* ^H */ + case 127: /* ^? */ if (pos) { wattrset(dialog, dlg.inputbox.atr); if (input_x == 0) { diff --git a/support/kconfig/lxdialog/menubox.c b/support/kconfig/lxdialog/menubox.c index 185524901d..d4c19b7bee 100644 --- a/support/kconfig/lxdialog/menubox.c +++ b/support/kconfig/lxdialog/menubox.c @@ -1,22 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * menubox.c -- implements the menu box * * ORIGINAL AUTHOR: Savio Lam (lam836 at cs.cuhk.hk) * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcapw at cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* @@ -76,15 +63,7 @@ static void do_print_item(WINDOW * win, const char *item, int line_y, /* Clear 'residue' of last item */ wattrset(win, dlg.menubox.atr); wmove(win, line_y, 0); -#if OLD_NCURSES - { - int i; - for (i = 0; i < menu_width; i++) - waddch(win, ' '); - } -#else wclrtoeol(win); -#endif wattrset(win, selected ? dlg.item_selected.atr : dlg.item.atr); mvwaddstr(win, line_y, item_x, menu_item); if (hotkey) { @@ -157,11 +136,11 @@ static void print_buttons(WINDOW * win, int height, int width, int selected) int x = width / 2 - 28; int y = height - 2; - print_button(win, gettext("Select"), y, x, selected == 0); - print_button(win, gettext(" Exit "), y, x + 12, selected == 1); - print_button(win, gettext(" Help "), y, x + 24, selected == 2); - print_button(win, gettext(" Save "), y, x + 36, selected == 3); - print_button(win, gettext(" Load "), y, x + 48, selected == 4); + print_button(win, "Select", y, x, selected == 0); + print_button(win, " Exit ", y, x + 12, selected == 1); + print_button(win, " Help ", y, x + 24, selected == 2); + print_button(win, " Save ", y, x + 36, selected == 3); + print_button(win, " Load ", y, x + 48, selected == 4); wmove(win, y, x + 1 + 12 * selected); wrefresh(win); @@ -193,7 +172,7 @@ int dialog_menu(const char *title, const char *prompt, do_resize: height = getmaxy(stdscr); width = getmaxx(stdscr); - if (height < MENUBOX_HEIGTH_MIN || width < MENUBOX_WIDTH_MIN) + if (height < MENUBOX_HEIGHT_MIN || width < MENUBOX_WIDTH_MIN) return -ERRDISPLAYTOOSMALL; height -= 4; diff --git a/support/kconfig/lxdialog/textbox.c b/support/kconfig/lxdialog/textbox.c index 1773319b95..0abaf63597 100644 --- a/support/kconfig/lxdialog/textbox.c +++ b/support/kconfig/lxdialog/textbox.c @@ -1,61 +1,156 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * textbox.c -- implements the text box * * ORIGINAL AUTHOR: Savio Lam (lam836 at cs.cuhk.hk) * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap at cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "dialog.h" -static void back_lines(int n); -static void print_page(WINDOW *win, int height, int width, update_text_fn - update_text, void *data); -static void print_line(WINDOW *win, int row, int width); -static char *get_line(void); -static void print_position(WINDOW * win); - static int hscroll; static int begin_reached, end_reached, page_length; -static char *buf; -static char *page; +static const char *buf, *page; +static size_t start, end; + +/* + * Go back 'n' lines in text. Called by dialog_textbox(). + * 'page' will be updated to point to the desired line in 'buf'. + */ +static void back_lines(int n) +{ + int i; + + begin_reached = 0; + /* Go back 'n' lines */ + for (i = 0; i < n; i++) { + if (*page == '\0') { + if (end_reached) { + end_reached = 0; + continue; + } + } + if (page == buf) { + begin_reached = 1; + return; + } + page--; + do { + if (page == buf) { + begin_reached = 1; + return; + } + page--; + } while (*page != '\n'); + page++; + } +} + +/* + * Return current line of text. Called by dialog_textbox() and print_line(). + * 'page' should point to start of current line before calling, and will be + * updated to point to start of next line. + */ +static char *get_line(void) +{ + int i = 0; + static char line[MAX_LEN + 1]; + + end_reached = 0; + while (*page != '\n') { + if (*page == '\0') { + end_reached = 1; + break; + } else if (i < MAX_LEN) + line[i++] = *(page++); + else { + /* Truncate lines longer than MAX_LEN characters */ + if (i == MAX_LEN) + line[i++] = '\0'; + page++; + } + } + if (i <= MAX_LEN) + line[i] = '\0'; + if (!end_reached) + page++; /* move past '\n' */ + + return line; +} + +/* + * Print a new line of text. + */ +static void print_line(WINDOW *win, int row, int width) +{ + char *line; + + line = get_line(); + line += MIN(strlen(line), hscroll); /* Scroll horizontally */ + wmove(win, row, 0); /* move cursor to correct line */ + waddch(win, ' '); + waddnstr(win, line, MIN(strlen(line), width - 2)); + + /* Clear 'residue' of previous line */ + wclrtoeol(win); +} + +/* + * Print a new page of text. + */ +static void print_page(WINDOW *win, int height, int width) +{ + int i, passed_end = 0; + + page_length = 0; + for (i = 0; i < height; i++) { + print_line(win, i, width); + if (!passed_end) + page_length++; + if (end_reached && !passed_end) + passed_end = 1; + } + wnoutrefresh(win); +} + +/* + * Print current position + */ +static void print_position(WINDOW *win) +{ + int percent; + + wattrset(win, dlg.position_indicator.atr); + wbkgdset(win, dlg.position_indicator.atr & A_COLOR); + percent = (page - buf) * 100 / strlen(buf); + wmove(win, getmaxy(win) - 3, getmaxx(win) - 9); + wprintw(win, "(%3d%%)", percent); +} /* * refresh window content */ static void refresh_text_box(WINDOW *dialog, WINDOW *box, int boxh, int boxw, - int cur_y, int cur_x, update_text_fn update_text, - void *data) + int cur_y, int cur_x) { - print_page(box, boxh, boxw, update_text, data); + start = page - buf; + + print_page(box, boxh, boxw); print_position(dialog); wmove(dialog, cur_y, cur_x); /* Restore cursor position */ wrefresh(dialog); -} + end = page - buf; +} /* * Display text from a file in a dialog box. * * keys is a null-terminated array - * update_text() may not add or remove any '\n' or '\0' in tbuf */ -int dialog_textbox(const char *title, char *tbuf, int initial_height, - int initial_width, int *keys, int *_vscroll, int *_hscroll, - update_text_fn update_text, void *data) +int dialog_textbox(const char *title, const char *tbuf, int initial_height, + int initial_width, int *_vscroll, int *_hscroll, + int (*extra_key_cb)(int, size_t, size_t, void *), void *data) { int i, x, y, cur_x, cur_y, key = 0; int height, width, boxh, boxw; @@ -80,7 +175,7 @@ int dialog_textbox(const char *title, char *tbuf, int initial_height, do_resize: getmaxyx(stdscr, height, width); - if (height < TEXTBOX_HEIGTH_MIN || width < TEXTBOX_WIDTH_MIN) + if (height < TEXTBOX_HEIGHT_MIN || width < TEXTBOX_WIDTH_MIN) return -ERRDISPLAYTOOSMALL; if (initial_height != 0) height = initial_height; @@ -129,14 +224,13 @@ do_resize: print_title(dialog, title, width); - print_button(dialog, gettext(" Exit "), height - 2, width / 2 - 4, TRUE); + print_button(dialog, " Exit ", height - 2, width / 2 - 4, TRUE); wnoutrefresh(dialog); getyx(dialog, cur_y, cur_x); /* Save cursor position */ /* Print first page of text */ attr_clear(box, boxh, boxw, dlg.dialog.atr); - refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x, update_text, - data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); while (!done) { key = wgetch(dialog); @@ -155,8 +249,7 @@ do_resize: begin_reached = 1; page = buf; refresh_text_box(dialog, box, boxh, boxw, - cur_y, cur_x, update_text, - data); + cur_y, cur_x); } break; case 'G': /* Last page */ @@ -166,8 +259,7 @@ do_resize: /* point to last char in buf */ page = buf + strlen(buf); back_lines(boxh); - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case 'K': /* Previous line */ case 'k': @@ -176,8 +268,7 @@ do_resize: break; back_lines(page_length + 1); - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case 'B': /* Previous page */ case 'b': @@ -186,8 +277,7 @@ do_resize: if (begin_reached) break; back_lines(page_length + boxh); - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case 'J': /* Next line */ case 'j': @@ -196,8 +286,7 @@ do_resize: break; back_lines(page_length - 1); - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case KEY_NPAGE: /* Next page */ case ' ': @@ -206,8 +295,7 @@ do_resize: break; begin_reached = 0; - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case '0': /* Beginning of line */ case 'H': /* Scroll left */ @@ -222,8 +310,7 @@ do_resize: hscroll--; /* Reprint current page to scroll horizontally */ back_lines(page_length); - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case 'L': /* Scroll right */ case 'l': @@ -233,8 +320,7 @@ do_resize: hscroll++; /* Reprint current page to scroll horizontally */ back_lines(page_length); - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case KEY_ESC: if (on_key_esc(dialog) == KEY_ESC) @@ -247,11 +333,9 @@ do_resize: on_key_resize(); goto do_resize; default: - for (i = 0; keys[i]; i++) { - if (key == keys[i]) { - done = true; - break; - } + if (extra_key_cb && extra_key_cb(key, start, end, data)) { + done = true; + break; } } } @@ -272,137 +356,3 @@ do_resize: *_hscroll = hscroll; return key; } - -/* - * Go back 'n' lines in text. Called by dialog_textbox(). - * 'page' will be updated to point to the desired line in 'buf'. - */ -static void back_lines(int n) -{ - int i; - - begin_reached = 0; - /* Go back 'n' lines */ - for (i = 0; i < n; i++) { - if (*page == '\0') { - if (end_reached) { - end_reached = 0; - continue; - } - } - if (page == buf) { - begin_reached = 1; - return; - } - page--; - do { - if (page == buf) { - begin_reached = 1; - return; - } - page--; - } while (*page != '\n'); - page++; - } -} - -/* - * Print a new page of text. - */ -static void print_page(WINDOW *win, int height, int width, update_text_fn - update_text, void *data) -{ - int i, passed_end = 0; - - if (update_text) { - char *end; - - for (i = 0; i < height; i++) - get_line(); - end = page; - back_lines(height); - update_text(buf, page - buf, end - buf, data); - } - - page_length = 0; - for (i = 0; i < height; i++) { - print_line(win, i, width); - if (!passed_end) - page_length++; - if (end_reached && !passed_end) - passed_end = 1; - } - wnoutrefresh(win); -} - -/* - * Print a new line of text. - */ -static void print_line(WINDOW * win, int row, int width) -{ - char *line; - - line = get_line(); - line += MIN(strlen(line), hscroll); /* Scroll horizontally */ - wmove(win, row, 0); /* move cursor to correct line */ - waddch(win, ' '); - waddnstr(win, line, MIN(strlen(line), width - 2)); - - /* Clear 'residue' of previous line */ -#if OLD_NCURSES - { - int x = getcurx(win); - int i; - for (i = 0; i < width - x; i++) - waddch(win, ' '); - } -#else - wclrtoeol(win); -#endif -} - -/* - * Return current line of text. Called by dialog_textbox() and print_line(). - * 'page' should point to start of current line before calling, and will be - * updated to point to start of next line. - */ -static char *get_line(void) -{ - int i = 0; - static char line[MAX_LEN + 1]; - - end_reached = 0; - while (*page != '\n') { - if (*page == '\0') { - end_reached = 1; - break; - } else if (i < MAX_LEN) - line[i++] = *(page++); - else { - /* Truncate lines longer than MAX_LEN characters */ - if (i == MAX_LEN) - line[i++] = '\0'; - page++; - } - } - if (i <= MAX_LEN) - line[i] = '\0'; - if (!end_reached) - page++; /* move past '\n' */ - - return line; -} - -/* - * Print current position - */ -static void print_position(WINDOW * win) -{ - int percent; - - wattrset(win, dlg.position_indicator.atr); - wbkgdset(win, dlg.position_indicator.atr & A_COLOR); - percent = (page - buf) * 100 / strlen(buf); - wmove(win, getmaxy(win) - 3, getmaxx(win) - 9); - wprintw(win, "(%3d%%)", percent); -} diff --git a/support/kconfig/lxdialog/util.c b/support/kconfig/lxdialog/util.c index f7abdeb92a..f18e2a89f6 100644 --- a/support/kconfig/lxdialog/util.c +++ b/support/kconfig/lxdialog/util.c @@ -1,22 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * util.c * * ORIGINAL AUTHOR: Savio Lam (lam836 at cs.cuhk.hk) * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap at cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include @@ -42,10 +29,6 @@ static void set_mono_theme(void) dlg.button_label_active.atr = A_REVERSE; dlg.button_label_inactive.atr = A_NORMAL; dlg.inputbox.atr = A_NORMAL; - dlg.inputbox_border.atr = A_NORMAL; - dlg.searchbox.atr = A_NORMAL; - dlg.searchbox_title.atr = A_BOLD; - dlg.searchbox_border.atr = A_NORMAL; dlg.position_indicator.atr = A_BOLD; dlg.menubox.atr = A_NORMAL; dlg.menubox_border.atr = A_NORMAL; @@ -82,10 +65,6 @@ static void set_classic_theme(void) DLG_COLOR(button_label_active, COLOR_YELLOW, COLOR_BLUE, true); DLG_COLOR(button_label_inactive, COLOR_BLACK, COLOR_WHITE, true); DLG_COLOR(inputbox, COLOR_BLACK, COLOR_WHITE, false); - DLG_COLOR(inputbox_border, COLOR_BLACK, COLOR_WHITE, false); - DLG_COLOR(searchbox, COLOR_BLACK, COLOR_WHITE, false); - DLG_COLOR(searchbox_title, COLOR_YELLOW, COLOR_WHITE, true); - DLG_COLOR(searchbox_border, COLOR_WHITE, COLOR_WHITE, true); DLG_COLOR(position_indicator, COLOR_YELLOW, COLOR_WHITE, true); DLG_COLOR(menubox, COLOR_BLACK, COLOR_WHITE, false); DLG_COLOR(menubox_border, COLOR_WHITE, COLOR_WHITE, true); @@ -114,14 +93,9 @@ static void set_blackbg_theme(void) DLG_COLOR(button_key_active, COLOR_YELLOW, COLOR_RED, true); DLG_COLOR(button_key_inactive, COLOR_RED, COLOR_BLACK, false); DLG_COLOR(button_label_active, COLOR_WHITE, COLOR_RED, false); - DLG_COLOR(button_label_inactive, COLOR_BLACK, COLOR_BLACK, true); + DLG_COLOR(button_label_inactive, COLOR_WHITE, COLOR_BLACK, false); DLG_COLOR(inputbox, COLOR_YELLOW, COLOR_BLACK, false); - DLG_COLOR(inputbox_border, COLOR_YELLOW, COLOR_BLACK, false); - - DLG_COLOR(searchbox, COLOR_YELLOW, COLOR_BLACK, false); - DLG_COLOR(searchbox_title, COLOR_YELLOW, COLOR_BLACK, true); - DLG_COLOR(searchbox_border, COLOR_BLACK, COLOR_BLACK, true); DLG_COLOR(position_indicator, COLOR_RED, COLOR_BLACK, false); @@ -149,7 +123,6 @@ static void set_bluetitle_theme(void) DLG_COLOR(title, COLOR_BLUE, COLOR_WHITE, true); DLG_COLOR(button_key_active, COLOR_YELLOW, COLOR_BLUE, true); DLG_COLOR(button_label_active, COLOR_WHITE, COLOR_BLUE, true); - DLG_COLOR(searchbox_title, COLOR_BLUE, COLOR_WHITE, true); DLG_COLOR(position_indicator, COLOR_BLUE, COLOR_WHITE, true); DLG_COLOR(tag, COLOR_BLUE, COLOR_WHITE, true); DLG_COLOR(tag_key, COLOR_BLUE, COLOR_WHITE, true); @@ -202,10 +175,6 @@ static void init_dialog_colors(void) init_one_color(&dlg.button_label_active); init_one_color(&dlg.button_label_inactive); init_one_color(&dlg.inputbox); - init_one_color(&dlg.inputbox_border); - init_one_color(&dlg.searchbox); - init_one_color(&dlg.searchbox_title); - init_one_color(&dlg.searchbox_border); init_one_color(&dlg.position_indicator); init_one_color(&dlg.menubox); init_one_color(&dlg.menubox_border); @@ -322,7 +291,7 @@ int init_dialog(const char *backtitle) getyx(stdscr, saved_y, saved_x); getmaxyx(stdscr, height, width); - if (height < WINDOW_HEIGTH_MIN || width < WINDOW_WIDTH_MIN) { + if (height < WINDOW_HEIGHT_MIN || width < WINDOW_WIDTH_MIN) { endwin(); return -ERRDISPLAYTOOSMALL; } @@ -376,7 +345,7 @@ void print_title(WINDOW *dialog, const char *title, int width) /* * Print a string of text in a window, automatically wrap around to the * next line if the string is too long to fit on one line. Newline - * characters '\n' are propperly processed. We start on a new line + * characters '\n' are properly processed. We start on a new line * if there is no room for at least 4 nonblanks following a double-space. */ void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x) @@ -554,7 +523,7 @@ int first_alpha(const char *string, const char *exempt) * lxdialog suggest which is correctly translated to two * times esc. But then we need to ignore the second esc to avoid stepping * out one menu too much. Filter away all escaped key sequences since - * keypad(FALSE) turn off ncurses support for escape sequences - and thats + * keypad(FALSE) turn off ncurses support for escape sequences - and that's * needed to make notimeout() do as expected. */ int on_key_esc(WINDOW *win) diff --git a/support/kconfig/lxdialog/yesno.c b/support/kconfig/lxdialog/yesno.c index 676fb2f824..b57d25e154 100644 --- a/support/kconfig/lxdialog/yesno.c +++ b/support/kconfig/lxdialog/yesno.c @@ -1,22 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * yesno.c -- implements the yes/no box * * ORIGINAL AUTHOR: Savio Lam (lam836 at cs.cuhk.hk) * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap at cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "dialog.h" @@ -29,8 +16,8 @@ static void print_buttons(WINDOW * dialog, int height, int width, int selected) int x = width / 2 - 10; int y = height - 2; - print_button(dialog, gettext(" Yes "), y, x, selected == 0); - print_button(dialog, gettext(" No "), y, x + 13, selected == 1); + print_button(dialog, " Yes ", y, x, selected == 0); + print_button(dialog, " No ", y, x + 13, selected == 1); wmove(dialog, y, x + 1 + 13 * selected); wrefresh(dialog); @@ -45,7 +32,7 @@ int dialog_yesno(const char *title, const char *prompt, int height, int width) WINDOW *dialog; do_resize: - if (getmaxy(stdscr) < (height + YESNO_HEIGTH_MIN)) + if (getmaxy(stdscr) < (height + YESNO_HEIGHT_MIN)) return -ERRDISPLAYTOOSMALL; if (getmaxx(stdscr) < (width + YESNO_WIDTH_MIN)) return -ERRDISPLAYTOOSMALL; diff --git a/support/kconfig/mconf-cfg.sh b/support/kconfig/mconf-cfg.sh new file mode 100755 index 0000000000..1e61f50a59 --- /dev/null +++ b/support/kconfig/mconf-cfg.sh @@ -0,0 +1,55 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +cflags=$1 +libs=$2 + +PKG="ncursesw" +PKG2="ncurses" + +if [ -n "$(command -v ${HOSTPKG_CONFIG})" ]; then + if ${HOSTPKG_CONFIG} --exists $PKG; then + ${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG} > ${libs} + exit 0 + fi + + if ${HOSTPKG_CONFIG} --exists ${PKG2}; then + ${HOSTPKG_CONFIG} --cflags ${PKG2} > ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG2} > ${libs} + exit 0 + fi +fi + +# Check the default paths in case pkg-config is not installed. +# (Even if it is installed, some distributions such as openSUSE cannot +# find ncurses by pkg-config.) +if [ -f /usr/include/ncursesw/ncurses.h ]; then + echo -D_GNU_SOURCE -I/usr/include/ncursesw > ${cflags} + echo -lncursesw > ${libs} + exit 0 +fi + +if [ -f /usr/include/ncurses/ncurses.h ]; then + echo -D_GNU_SOURCE -I/usr/include/ncurses > ${cflags} + echo -lncurses > ${libs} + exit 0 +fi + +# As a final fallback before giving up, check if $HOSTCC knows of a default +# ncurses installation (e.g. from a vendor-specific sysroot). +if echo '#include ' | ${HOSTCC} -E - >/dev/null 2>&1; then + echo -D_GNU_SOURCE > ${cflags} + echo -lncurses > ${libs} + exit 0 +fi + +echo >&2 "*" +echo >&2 "* Unable to find the ncurses package." +echo >&2 "* Install ncurses (ncurses-devel or libncurses-dev" +echo >&2 "* depending on your distribution)." +echo >&2 "*" +echo >&2 "* You may also need to install ${HOSTPKG_CONFIG} to find the" +echo >&2 "* ncurses installed in a non-default location." +echo >&2 "*" +exit 1 diff --git a/support/kconfig/mconf.c b/support/kconfig/mconf.c index 279f4552a1..420e173e4f 100644 --- a/support/kconfig/mconf.c +++ b/support/kconfig/mconf.c @@ -1,6 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. * * Introduced single menu mode (show all sub-menus in one large tree). * 2002-11-06 Petr Baudis @@ -15,14 +15,16 @@ #include #include #include +#include #include #include -#include +#include "list.h" #include "lkc.h" #include "lxdialog/dialog.h" +#include "mnconf-common.h" -static const char mconf_readme[] = N_( +static const char mconf_readme[] = "Overview\n" "--------\n" "This interface lets you select features and parameters for the build.\n" @@ -159,6 +161,12 @@ static const char mconf_readme[] = N_( "(especially with a larger number of unrolled categories) than the\n" "default mode.\n" "\n" + +"Search\n" +"-------\n" +"Pressing the forward-slash (/) anywhere brings up a search dialog box.\n" +"\n" + "Different color themes available\n" "--------------------------------\n" "It is possible to select different color themes using the variable\n" @@ -171,37 +179,37 @@ static const char mconf_readme[] = N_( " blackbg => selects a color scheme with black background\n" " classic => theme with blue background. The classic look\n" " bluetitle => an LCD friendly version of classic. (default)\n" -"\n"), -menu_instructions[] = N_( +"\n", +menu_instructions[] = "Arrow keys navigate the menu. " " selects submenus ---> (or empty submenus ----). " "Highlighted letters are hotkeys. " - "Pressing selects a feature, while excludes a feature. " + "Pressing selects a feature, while excludes a features. " "Press to exit, for Help, for Search. " - "Legend: [*] feature is selected [ ] feature is excluded"), -radiolist_instructions[] = N_( + "Legend: [*] feature is selected [ ] feature is excluded", +radiolist_instructions[] = "Use the arrow keys to navigate this window or " "press the hotkey of the item you wish to select " "followed by the . " - "Press for additional information about this option."), -inputbox_instructions_int[] = N_( + "Press for additional information about this option.", +inputbox_instructions_int[] = "Please enter a decimal value. " "Fractions will not be accepted. " - "Use the key to move from the input field to the buttons below it."), -inputbox_instructions_hex[] = N_( + "Use the key to move from the input field to the buttons below it.", +inputbox_instructions_hex[] = "Please enter a hexadecimal value. " - "Use the key to move from the input field to the buttons below it."), -inputbox_instructions_string[] = N_( + "Use the key to move from the input field to the buttons below it.", +inputbox_instructions_string[] = "Please enter a string value. " - "Use the key to move from the input field to the buttons below it."), -setmod_text[] = N_( + "Use the key to move from the input field to the buttons below it.", +setmod_text[] = "This feature depends on another which has been configured as a module.\n" - "As a result, this feature will be built as a module."), -load_config_text[] = N_( + "As a result, this feature will be built as a module.", +load_config_text[] = "Enter the name of the configuration file you wish to load. " "Accept the name shown to restore the configuration you " - "last retrieved. Leave blank to abort."), -load_config_help[] = N_( + "last retrieved. Leave blank to abort.", +load_config_help[] = "\n" "For various reasons, one may wish to keep several different\n" "configurations available on a single machine.\n" @@ -211,11 +219,11 @@ load_config_help[] = N_( "configuration.\n" "\n" "If you are uncertain, then you have probably never used alternate\n" - "configuration files. You should therefore leave this blank to abort.\n"), -save_config_text[] = N_( + "configuration files. You should therefore leave this blank to abort.\n", +save_config_text[] = "Enter a filename to which this configuration should be saved " - "as an alternate. Leave blank to abort."), -save_config_help[] = N_( + "as an alternate. Leave blank to abort.", +save_config_help[] = "\n" "For various reasons, one may wish to keep different configurations\n" "available on a single machine.\n" @@ -225,8 +233,8 @@ save_config_help[] = N_( "configuration options you have selected at that time.\n" "\n" "If you are uncertain what all this means then you should probably\n" - "leave this blank.\n"), -search_help[] = N_( + "leave this blank.\n", +search_help[] = "\n" "Search for symbols and display their relations.\n" "Regular expressions are allowed.\n" @@ -241,7 +249,7 @@ search_help[] = N_( " -> PCI support (PCI [=y])\n" "(1) -> PCI access mode ( [=y])\n" " Defined at drivers/pci/Kconfig:47\n" - " Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\n" + " Depends on: X86_LOCAL_APIC && X86_IO_APIC\n" " Selects: LIBCRC32\n" " Selected by: BAR [=n]\n" "-----------------------------------------------------------------\n" @@ -271,7 +279,7 @@ search_help[] = N_( "Examples: USB => find all symbols containing USB\n" " ^USB => find all symbols starting with USB\n" " USB$ => find all symbols ending with USB\n" - "\n"); + "\n"; static int indent; static struct menu *current_menu; @@ -282,32 +290,17 @@ static int save_and_exit; static int silent; static void conf(struct menu *menu, struct menu *active_menu); -static void conf_choice(struct menu *menu); -static void conf_string(struct menu *menu); -static void conf_load(void); -static void conf_save(void); -static int show_textbox_ext(const char *title, char *text, int r, int c, - int *keys, int *vscroll, int *hscroll, - update_text_fn update_text, void *data); -static void show_textbox(const char *title, const char *text, int r, int c); -static void show_helptext(const char *title, const char *text); -static void show_help(struct menu *menu); static char filename[PATH_MAX+1]; static void set_config_filename(const char *config_filename) { static char menu_backtitle[PATH_MAX+128]; - int size; - size = snprintf(menu_backtitle, sizeof(menu_backtitle), - "%s - %s", config_filename, rootmenu.prompt->text); - if (size >= sizeof(menu_backtitle)) - menu_backtitle[sizeof(menu_backtitle)-1] = '\0'; + snprintf(menu_backtitle, sizeof(menu_backtitle), "%s - %s", + config_filename, rootmenu.prompt->text); set_dialog_backtitle(menu_backtitle); - size = snprintf(filename, sizeof(filename), "%s", config_filename); - if (size >= sizeof(filename)) - filename[sizeof(filename)-1] = '\0'; + snprintf(filename, sizeof(filename), "%s", config_filename); } struct subtitle_part { @@ -355,37 +348,35 @@ static void reset_subtitle(void) set_dialog_subtitles(subtitles); } -struct search_data { - struct list_head *head; - struct menu **targets; - int *keys; -}; +static int show_textbox_ext(const char *title, const char *text, int r, int c, + int *vscroll, int *hscroll, + int (*extra_key_cb)(int, size_t, size_t, void *), + void *data) +{ + dialog_clear(); + return dialog_textbox(title, text, r, c, vscroll, hscroll, + extra_key_cb, data); +} -static void update_text(char *buf, size_t start, size_t end, void *_data) +static void show_textbox(const char *title, const char *text, int r, int c) { - struct search_data *data = _data; - struct jump_key *pos; - int k = 0; + show_textbox_ext(title, text, r, c, NULL, NULL, NULL, NULL); +} - list_for_each_entry(pos, data->head, entries) { - if (pos->offset >= start && pos->offset < end) { - char header[4]; +static void show_helptext(const char *title, const char *text) +{ + show_textbox(title, text, 0, 0); +} - if (k < JUMP_NB) { - int key = '0' + (pos->index % JUMP_NB) + 1; +static void show_help(struct menu *menu) +{ + struct gstr help = str_new(); - sprintf(header, "(%c)", key); - data->keys[k] = key; - data->targets[k] = pos->target; - k++; - } else { - sprintf(header, " "); - } + help.max_width = getmaxx(stdscr) - 10; + menu_get_ext_help(menu, &help); - memcpy(buf + pos->offset, header, sizeof(header) - 1); - } - } - data->keys[k] = 0; + show_helptext(menu_get_prompt(menu), str_get(&help)); + str_free(&help); } static void search_conf(void) @@ -400,19 +391,19 @@ static void search_conf(void) struct subtitle_part stpart; title = str_new(); - str_printf( &title, _("Enter (sub)string or regexp to search for " - "(with or without \"%s\")"), CONFIG_); + str_printf( &title, "Enter (sub)string or regexp to search for " + "(with or without \"%s\")", CONFIG_); again: dialog_clear(); - dres = dialog_inputbox(_("Search Configuration Parameter"), + dres = dialog_inputbox("Search Configuration Parameter", str_get(&title), 10, 75, ""); switch (dres) { case 0: break; case 1: - show_helptext(_("Search Configuration"), search_help); + show_helptext("Search Configuration", search_help); goto again; default: str_free(&title); @@ -432,27 +423,23 @@ again: sym_arr = sym_re_search(dialog_input); do { LIST_HEAD(head); - struct menu *targets[JUMP_NB]; - int keys[JUMP_NB + 1], i; struct search_data data = { .head = &head, - .targets = targets, - .keys = keys, }; struct jump_key *pos, *tmp; + jump_key_char = 0; res = get_relations_str(sym_arr, &head); set_subtitle(); - dres = show_textbox_ext(_("Search Results"), (char *) - str_get(&res), 0, 0, keys, &vscroll, - &hscroll, &update_text, (void *) - &data); + dres = show_textbox_ext("Search Results", str_get(&res), 0, 0, + &vscroll, &hscroll, + handle_search_keys, &data); again = false; - for (i = 0; i < JUMP_NB && keys[i]; i++) - if (dres == keys[i]) { - conf(targets[i]->parent, targets[i]); - again = true; - } + if (dres >= '1' && dres <= '9') { + assert(data.target != NULL); + conf(data.target->parent, data.target); + again = true; + } str_free(&res); list_for_each_entry_safe(pos, tmp, &head, entries) free(pos); @@ -491,7 +478,6 @@ static void build_conf(struct menu *menu) switch (prop->type) { case P_MENU: child_count++; - prompt = _(prompt); if (single_menu_mode) { item_make("%s%*c%s", menu->data ? "-->" : "++>", @@ -508,7 +494,7 @@ static void build_conf(struct menu *menu) case P_COMMENT: if (prompt) { child_count++; - item_make(" %*c*** %s ***", indent + 1, ' ', _(prompt)); + item_make(" %*c*** %s ***", indent + 1, ' ', prompt); item_set_tag(':'); item_set_data(menu); } @@ -516,7 +502,7 @@ static void build_conf(struct menu *menu) default: if (prompt) { child_count++; - item_make("---%*c%s", indent + 1, ' ', _(prompt)); + item_make("---%*c%s", indent + 1, ' ', prompt); item_set_tag(':'); item_set_data(menu); } @@ -538,7 +524,7 @@ static void build_conf(struct menu *menu) } val = sym_get_tristate_value(sym); - if (sym_is_changable(sym)) { + if (sym_is_changeable(sym)) { switch (type) { case S_BOOLEAN: item_make("[%c]", val == no ? ' ' : '*'); @@ -560,10 +546,10 @@ static void build_conf(struct menu *menu) item_set_data(menu); } - item_add_str("%*c%s", indent + 1, ' ', _(menu_get_prompt(menu))); + item_add_str("%*c%s", indent + 1, ' ', menu_get_prompt(menu)); if (val == yes) { if (def_menu) { - item_add_str(" (%s)", _(menu_get_prompt(def_menu))); + item_add_str(" (%s)", menu_get_prompt(def_menu)); item_add_str(" --->"); if (def_menu->list) { indent += 2; @@ -575,7 +561,7 @@ static void build_conf(struct menu *menu) } } else { if (menu == current_menu) { - item_make("---%*c%s", indent + 1, ' ', _(menu_get_prompt(menu))); + item_make("---%*c%s", indent + 1, ' ', menu_get_prompt(menu)); item_set_tag(':'); item_set_data(menu); goto conf_childs; @@ -589,7 +575,7 @@ static void build_conf(struct menu *menu) } else { switch (type) { case S_BOOLEAN: - if (sym_is_changable(sym)) + if (sym_is_changeable(sym)) item_make("[%c]", val == no ? ' ' : '*'); else item_make("-%c-", val == no ? ' ' : '*'); @@ -602,7 +588,7 @@ static void build_conf(struct menu *menu) case mod: ch = 'M'; break; default: ch = ' '; break; } - if (sym_is_changable(sym)) { + if (sym_is_changeable(sym)) { if (sym->rev_dep.tri == mod) item_make("{%c}", ch); else @@ -618,17 +604,17 @@ static void build_conf(struct menu *menu) tmp = indent - tmp + 4; if (tmp < 0) tmp = 0; - item_add_str("%*c%s%s", tmp, ' ', _(menu_get_prompt(menu)), - (sym_has_value(sym) || !sym_is_changable(sym)) ? - "" : _(" (NEW)")); + item_add_str("%*c%s%s", tmp, ' ', menu_get_prompt(menu), + (sym_has_value(sym) || !sym_is_changeable(sym)) ? + "" : " (NEW)"); item_set_tag('s'); item_set_data(menu); goto conf_childs; } } - item_add_str("%*c%s%s", indent + 1, ' ', _(menu_get_prompt(menu)), - (sym_has_value(sym) || !sym_is_changable(sym)) ? - "" : _(" (NEW)")); + item_add_str("%*c%s%s", indent + 1, ' ', menu_get_prompt(menu), + (sym_has_value(sym) || !sym_is_changeable(sym)) ? + "" : " (NEW)"); if (menu->prompt->type == P_MENU) { item_add_str(" %s", menu_is_empty(menu) ? "----" : "--->"); return; @@ -642,164 +628,9 @@ conf_childs: indent -= doint; } -static void conf(struct menu *menu, struct menu *active_menu) -{ - struct menu *submenu; - const char *prompt = menu_get_prompt(menu); - struct subtitle_part stpart; - struct symbol *sym; - int res; - int s_scroll = 0; - - if (menu != &rootmenu) - stpart.text = menu_get_prompt(menu); - else - stpart.text = NULL; - list_add_tail(&stpart.entries, &trail); - - while (1) { - item_reset(); - current_menu = menu; - build_conf(menu); - if (!child_count) - break; - set_subtitle(); - dialog_clear(); - res = dialog_menu(prompt ? _(prompt) : _("Main Menu"), - _(menu_instructions), - active_menu, &s_scroll); - if (res == 1 || res == KEY_ESC || res == -ERRDISPLAYTOOSMALL) - break; - if (item_count() != 0) { - if (!item_activate_selected()) - continue; - if (!item_tag()) - continue; - } - submenu = item_data(); - active_menu = item_data(); - if (submenu) - sym = submenu->sym; - else - sym = NULL; - - switch (res) { - case 0: - switch (item_tag()) { - case 'm': - if (single_menu_mode) - submenu->data = (void *) (long) !submenu->data; - else - conf(submenu, NULL); - break; - case 't': - if (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes) - conf_choice(submenu); - else if (submenu->prompt->type == P_MENU) - conf(submenu, NULL); - break; - case 's': - conf_string(submenu); - break; - } - break; - case 2: - if (sym) - show_help(submenu); - else { - reset_subtitle(); - show_helptext(_("README"), _(mconf_readme)); - } - break; - case 3: - reset_subtitle(); - conf_save(); - break; - case 4: - reset_subtitle(); - conf_load(); - break; - case 5: - if (item_is_tag('t')) { - if (sym_set_tristate_value(sym, yes)) - break; - if (sym_set_tristate_value(sym, mod)) - show_textbox(NULL, setmod_text, 6, 74); - } - break; - case 6: - if (item_is_tag('t')) - sym_set_tristate_value(sym, no); - break; - case 7: - if (item_is_tag('t')) - sym_set_tristate_value(sym, mod); - break; - case 8: - if (item_is_tag('t')) - sym_toggle_tristate_value(sym); - else if (item_is_tag('m')) - conf(submenu, NULL); - break; - case 9: - search_conf(); - break; - case 10: - show_all_options = !show_all_options; - break; - } - } - - list_del(trail.prev); -} - -static int show_textbox_ext(const char *title, char *text, int r, int c, int - *keys, int *vscroll, int *hscroll, update_text_fn - update_text, void *data) -{ - dialog_clear(); - return dialog_textbox(title, text, r, c, keys, vscroll, hscroll, - update_text, data); -} - -static void show_textbox(const char *title, const char *text, int r, int c) -{ - show_textbox_ext(title, (char *) text, r, c, (int []) {0}, NULL, NULL, - NULL, NULL); -} - -static void show_helptext(const char *title, const char *text) -{ - show_textbox(title, text, 0, 0); -} - -static void conf_message_callback(const char *fmt, va_list ap) -{ - char buf[PATH_MAX+1]; - - vsnprintf(buf, sizeof(buf), fmt, ap); - if (save_and_exit) { - if (!silent) - printf("%s", buf); - } else { - show_textbox(NULL, buf, 6, 60); - } -} - -static void show_help(struct menu *menu) -{ - struct gstr help = str_new(); - - help.max_width = getmaxx(stdscr) - 10; - menu_get_ext_help(menu, &help); - - show_helptext(_(menu_get_prompt(menu)), str_get(&help)); - str_free(&help); -} - static void conf_choice(struct menu *menu) { - const char *prompt = _(menu_get_prompt(menu)); + const char *prompt = menu_get_prompt(menu); struct menu *child; struct symbol *active; @@ -814,9 +645,9 @@ static void conf_choice(struct menu *menu) if (!menu_is_visible(child)) continue; if (child->sym) - item_make("%s", _(menu_get_prompt(child))); + item_make("%s", menu_get_prompt(child)); else { - item_make("*** %s ***", _(menu_get_prompt(child))); + item_make("*** %s ***", menu_get_prompt(child)); item_set_tag(':'); } item_set_data(child); @@ -826,11 +657,11 @@ static void conf_choice(struct menu *menu) item_set_tag('X'); } dialog_clear(); - res = dialog_checklist(prompt ? _(prompt) : _("Main Menu"), - _(radiolist_instructions), - MENUBOX_HEIGTH_MIN, + res = dialog_checklist(prompt ? prompt : "Main Menu", + radiolist_instructions, + MENUBOX_HEIGHT_MIN, MENUBOX_WIDTH_MIN, - CHECKLIST_HEIGTH_MIN); + CHECKLIST_HEIGHT_MIN); selected = item_activate_selected(); switch (res) { case 0: @@ -868,26 +699,26 @@ static void conf_string(struct menu *menu) switch (sym_get_type(menu->sym)) { case S_INT: - heading = _(inputbox_instructions_int); + heading = inputbox_instructions_int; break; case S_HEX: - heading = _(inputbox_instructions_hex); + heading = inputbox_instructions_hex; break; case S_STRING: - heading = _(inputbox_instructions_string); + heading = inputbox_instructions_string; break; default: - heading = _("Internal mconf error!"); + heading = "Internal mconf error!"; } dialog_clear(); - res = dialog_inputbox(prompt ? _(prompt) : _("Main Menu"), + res = dialog_inputbox(prompt ? prompt : "Main Menu", heading, 10, 75, sym_get_string_value(menu->sym)); switch (res) { case 0: if (sym_set_string_value(menu->sym, dialog_input_result)) return; - show_textbox(NULL, _("You have made an invalid entry."), 5, 43); + show_textbox(NULL, "You have made an invalid entry.", 5, 43); break; case 1: show_help(menu); @@ -912,13 +743,13 @@ static void conf_load(void) return; if (!conf_read(dialog_input_result)) { set_config_filename(dialog_input_result); - sym_set_change_count(1); + conf_set_changed(true); return; } - show_textbox(NULL, _("File does not exist!"), 5, 38); + show_textbox(NULL, "File does not exist!", 5, 38); break; case 1: - show_helptext(_("Load Alternate Configuration"), load_config_help); + show_helptext("Load Alternate Configuration", load_config_help); break; case KEY_ESC: return; @@ -941,10 +772,10 @@ static void conf_save(void) set_config_filename(dialog_input_result); return; } - show_textbox(NULL, _("Can't create file! Probably a nonexistent directory."), 5, 60); + show_textbox(NULL, "Can't create file!", 5, 60); break; case 1: - show_helptext(_("Save Alternate Configuration"), save_config_help); + show_helptext("Save Alternate Configuration", save_config_help); break; case KEY_ESC: return; @@ -952,6 +783,127 @@ static void conf_save(void) } } +static void conf(struct menu *menu, struct menu *active_menu) +{ + struct menu *submenu; + const char *prompt = menu_get_prompt(menu); + struct subtitle_part stpart; + struct symbol *sym; + int res; + int s_scroll = 0; + + if (menu != &rootmenu) + stpart.text = menu_get_prompt(menu); + else + stpart.text = NULL; + list_add_tail(&stpart.entries, &trail); + + while (1) { + item_reset(); + current_menu = menu; + build_conf(menu); + if (!child_count) + break; + set_subtitle(); + dialog_clear(); + res = dialog_menu(prompt ? prompt : "Main Menu", + menu_instructions, + active_menu, &s_scroll); + if (res == 1 || res == KEY_ESC || res == -ERRDISPLAYTOOSMALL) + break; + if (item_count() != 0) { + if (!item_activate_selected()) + continue; + if (!item_tag()) + continue; + } + submenu = item_data(); + active_menu = item_data(); + if (submenu) + sym = submenu->sym; + else + sym = NULL; + + switch (res) { + case 0: + switch (item_tag()) { + case 'm': + if (single_menu_mode) + submenu->data = (void *) (long) !submenu->data; + else + conf(submenu, NULL); + break; + case 't': + if (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes) + conf_choice(submenu); + else if (submenu->prompt->type == P_MENU) + conf(submenu, NULL); + break; + case 's': + conf_string(submenu); + break; + } + break; + case 2: + if (sym) + show_help(submenu); + else { + reset_subtitle(); + show_helptext("README", mconf_readme); + } + break; + case 3: + reset_subtitle(); + conf_save(); + break; + case 4: + reset_subtitle(); + conf_load(); + break; + case 5: + if (item_is_tag('t')) { + if (sym_set_tristate_value(sym, yes)) + break; + if (sym_set_tristate_value(sym, mod)) + show_textbox(NULL, setmod_text, 6, 74); + } + break; + case 6: + if (item_is_tag('t')) + sym_set_tristate_value(sym, no); + break; + case 7: + if (item_is_tag('t')) + sym_set_tristate_value(sym, mod); + break; + case 8: + if (item_is_tag('t')) + sym_toggle_tristate_value(sym); + else if (item_is_tag('m')) + conf(submenu, NULL); + break; + case 9: + search_conf(); + break; + case 10: + show_all_options = !show_all_options; + break; + } + } + + list_del(trail.prev); +} + +static void conf_message_callback(const char *s) +{ + if (save_and_exit) { + if (!silent) + printf("%s", s); + } else { + show_textbox(NULL, s, 6, 60); + } +} + static int handle_exit(void) { int res; @@ -961,8 +913,8 @@ static int handle_exit(void) dialog_clear(); if (conf_get_changed()) res = dialog_yesno(NULL, - _("Do you wish to save your new configuration?\n" - "(Press to continue Buildroot configuration.)"), + "Do you wish to save your new configuration?\n" + "(Press to continue Buildroot configuration.)", 6, 60); else res = -1; @@ -972,26 +924,27 @@ static int handle_exit(void) switch (res) { case 0: if (conf_write(filename)) { - fprintf(stderr, _("\n\n" + fprintf(stderr, "\n\n" "Error while writing of the configuration.\n" "Your configuration changes were NOT saved." - "\n\n")); + "\n\n"); return 1; } + conf_write_autoconf(0); /* fall through */ case -1: if (!silent) - printf(_("\n\n" + printf("\n\n" "*** End of the configuration.\n" "*** Execute 'make' to start the build or try 'make help'." - "\n\n")); + "\n\n"); res = 0; break; default: if (!silent) - fprintf(stderr, _("\n\n" + fprintf(stderr, "\n\n" "Your configuration changes were NOT saved." - "\n\n")); + "\n\n"); if (res != KEY_ESC) res = 0; } @@ -1009,10 +962,6 @@ int main(int ac, char **av) char *mode; int res; - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); - signal(SIGINT, sig_handler); if (ac > 1 && strcmp(av[1], "-s") == 0) { @@ -1031,8 +980,8 @@ int main(int ac, char **av) } if (init_dialog(NULL)) { - fprintf(stderr, N_("Your display is too small to run Menuconfig!\n")); - fprintf(stderr, N_("It must be at least 19 lines by 80 columns.\n")); + fprintf(stderr, "Your display is too small to run Menuconfig!\n"); + fprintf(stderr, "It must be at least 19 lines by 80 columns.\n"); return 1; } diff --git a/support/kconfig/menu.c b/support/kconfig/menu.c index 5c5c1374b1..3b822cd110 100644 --- a/support/kconfig/menu.c +++ b/support/kconfig/menu.c @@ -1,6 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ #include @@ -9,20 +9,19 @@ #include #include "lkc.h" +#include "internal.h" +#include "list.h" static const char nohelp_text[] = "There is no help available for this option."; struct menu rootmenu; static struct menu **last_entry_ptr; -struct file *file_list; -struct file *current_file; - void menu_warn(struct menu *menu, const char *fmt, ...) { va_list ap; va_start(ap, fmt); - fprintf(stderr, "%s:%d:warning: ", menu->file->name, menu->lineno); + fprintf(stderr, "%s:%d:warning: ", menu->filename, menu->lineno); vfprintf(stderr, fmt, ap); fprintf(stderr, "\n"); va_end(ap); @@ -32,7 +31,7 @@ static void prop_warn(struct property *prop, const char *fmt, ...) { va_list ap; va_start(ap, fmt); - fprintf(stderr, "%s:%d:warning: ", prop->file->name, prop->lineno); + fprintf(stderr, "%s:%d:warning: ", prop->filename, prop->lineno); vfprintf(stderr, fmt, ap); fprintf(stderr, "\n"); va_end(ap); @@ -52,20 +51,23 @@ void menu_add_entry(struct symbol *sym) memset(menu, 0, sizeof(*menu)); menu->sym = sym; menu->parent = current_menu; - menu->file = current_file; - menu->lineno = zconf_lineno(); + menu->filename = cur_filename; + menu->lineno = cur_lineno; *last_entry_ptr = menu; last_entry_ptr = &menu->next; current_entry = menu; - if (sym) + if (sym) { menu_add_symbol(P_SYMBOL, sym, NULL); + list_add_tail(&menu->link, &sym->menus); + } } struct menu *menu_add_menu(void) { last_entry_ptr = ¤t_entry->list; - return current_menu = current_entry; + current_menu = current_entry; + return current_menu; } void menu_end_menu(void) @@ -124,61 +126,76 @@ void menu_set_type(int type) sym_type_name(sym->type), sym_type_name(type)); } -static struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep) +static struct property *menu_add_prop(enum prop_type type, struct expr *expr, + struct expr *dep) { - struct property *prop = prop_alloc(type, current_entry->sym); + struct property *prop; + prop = xmalloc(sizeof(*prop)); + memset(prop, 0, sizeof(*prop)); + prop->type = type; + prop->filename = cur_filename; + prop->lineno = cur_lineno; prop->menu = current_entry; prop->expr = expr; prop->visible.expr = dep; - if (prompt) { - if (isspace(*prompt)) { - prop_warn(prop, "leading whitespace ignored"); - while (isspace(*prompt)) - prompt++; - } - if (current_entry->prompt && current_entry != &rootmenu) - prop_warn(prop, "prompt redefined"); + /* append property to the prop list of symbol */ + if (current_entry->sym) { + struct property **propp; - /* Apply all upper menus' visibilities to actual prompts. */ - if(type == P_PROMPT) { - struct menu *menu = current_entry; + for (propp = ¤t_entry->sym->prop; + *propp; + propp = &(*propp)->next) + ; + *propp = prop; + } - while ((menu = menu->parent) != NULL) { - struct expr *dup_expr; + return prop; +} - if (!menu->visibility) - continue; - /* - * Do not add a reference to the - * menu's visibility expression but - * use a copy of it. Otherwise the - * expression reduction functions - * will modify expressions that have - * multiple references which can - * cause unwanted side effects. - */ - dup_expr = expr_copy(menu->visibility); +struct property *menu_add_prompt(enum prop_type type, char *prompt, + struct expr *dep) +{ + struct property *prop = menu_add_prop(type, NULL, dep); - prop->visible.expr - = expr_alloc_and(prop->visible.expr, - dup_expr); - } - } + if (isspace(*prompt)) { + prop_warn(prop, "leading whitespace ignored"); + while (isspace(*prompt)) + prompt++; + } + if (current_entry->prompt) + prop_warn(prop, "prompt redefined"); + + /* Apply all upper menus' visibilities to actual prompts. */ + if (type == P_PROMPT) { + struct menu *menu = current_entry; + + while ((menu = menu->parent) != NULL) { + struct expr *dup_expr; - current_entry->prompt = prop; + if (!menu->visibility) + continue; + /* + * Do not add a reference to the menu's visibility + * expression but use a copy of it. Otherwise the + * expression reduction functions will modify + * expressions that have multiple references which + * can cause unwanted side effects. + */ + dup_expr = expr_copy(menu->visibility); + + prop->visible.expr = expr_alloc_and(prop->visible.expr, + dup_expr); + } } + + current_entry->prompt = prop; prop->text = prompt; return prop; } -struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep) -{ - return menu_add_prop(type, prompt, NULL, dep); -} - void menu_add_visibility(struct expr *expr) { current_entry->visibility = expr_alloc_and(current_entry->visibility, @@ -187,40 +204,12 @@ void menu_add_visibility(struct expr *expr) void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep) { - menu_add_prop(type, NULL, expr, dep); + menu_add_prop(type, expr, dep); } void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep) { - menu_add_prop(type, NULL, expr_alloc_symbol(sym), dep); -} - -void menu_add_option(int token, char *arg) -{ - switch (token) { - case T_OPT_MODULES: - if (modules_sym) - zconf_error("symbol '%s' redefines option 'modules'" - " already defined by symbol '%s'", - current_entry->sym->name, - modules_sym->name - ); - modules_sym = current_entry->sym; - break; - case T_OPT_DEFCONFIG_LIST: - if (!sym_defconfig_list) - sym_defconfig_list = current_entry->sym; - else if (sym_defconfig_list != current_entry->sym) - zconf_error("trying to redefine defconfig symbol"); - sym_defconfig_list->flags |= SYMBOL_AUTO; - break; - case T_OPT_ENV: - prop_add_env(arg); - break; - case T_OPT_ALLNOCONFIG_Y: - current_entry->sym->flags |= SYMBOL_ALLNOCONFIG_Y; - break; - } + menu_add_prop(type, expr_alloc_symbol(sym), dep); } static int menu_validate_number(struct symbol *sym, struct symbol *sym2) @@ -293,7 +282,7 @@ static void sym_check_prop(struct symbol *sym) } } -void menu_finalize(struct menu *parent) +static void _menu_finalize(struct menu *parent, bool inside_choice) { struct menu *menu, *last_menu; struct symbol *sym; @@ -307,7 +296,12 @@ void menu_finalize(struct menu *parent) * and propagate parent dependencies before moving on. */ - if (sym && sym_is_choice(sym)) { + bool is_choice = false; + + if (sym && sym_is_choice(sym)) + is_choice = true; + + if (is_choice) { if (sym->type == S_UNKNOWN) { /* find the first choice value to find out choice type */ current_entry = parent; @@ -318,12 +312,6 @@ void menu_finalize(struct menu *parent) } } } - /* set the type of the remaining choice values */ - for (menu = parent->list; menu; menu = menu->next) { - current_entry = menu; - if (menu->sym && menu->sym->type == S_UNKNOWN) - menu_set_type(sym->type); - } /* * Use the choice itself as the parent dependency of @@ -332,12 +320,10 @@ void menu_finalize(struct menu *parent) * choice value symbols. */ parentdep = expr_alloc_symbol(sym); - } else if (parent->prompt) - /* Menu node for 'menu' */ - parentdep = parent->prompt->visible.expr; - else - /* Menu node for 'if' */ + } else { + /* Menu node for 'menu', 'if' */ parentdep = parent->dep; + } /* For each child menu node... */ for (menu = parent->list; menu; menu = menu->next) { @@ -413,7 +399,7 @@ void menu_finalize(struct menu *parent) } } - if (sym && sym_is_choice(sym)) + if (is_choice) expr_free(parentdep); /* @@ -421,8 +407,8 @@ void menu_finalize(struct menu *parent) * moving on */ for (menu = parent->list; menu; menu = menu->next) - menu_finalize(menu); - } else if (sym) { + _menu_finalize(menu, is_choice); + } else if (!inside_choice && sym) { /* * Automatic submenu creation. If sym is a symbol and A, B, C, * ... are consecutive items (symbols, menus, ifs, etc.) that @@ -482,7 +468,7 @@ void menu_finalize(struct menu *parent) /* Superset, put in submenu */ expr_free(dep2); next: - menu_finalize(menu); + _menu_finalize(menu, false); menu->parent = parent; last_menu = menu; } @@ -580,9 +566,6 @@ void menu_finalize(struct menu *parent) if (sym->type == S_UNKNOWN) menu_warn(parent, "config symbol defined without type"); - if (sym_is_choice(sym) && !parent->prompt) - menu_warn(parent, "choice must have a prompt"); - /* Check properties connected to this symbol */ sym_check_prop(sym); sym->flags |= SYMBOL_WARNED; @@ -604,6 +587,11 @@ void menu_finalize(struct menu *parent) } } +void menu_finalize(void) +{ + _menu_finalize(&rootmenu, false); +} + bool menu_has_prompt(struct menu *menu) { if (!menu->prompt) @@ -674,11 +662,6 @@ const char *menu_get_prompt(struct menu *menu) return NULL; } -struct menu *menu_get_root_menu(struct menu *menu) -{ - return &rootmenu; -} - struct menu *menu_get_parent_menu(struct menu *menu) { enum prop_type type; @@ -691,17 +674,24 @@ struct menu *menu_get_parent_menu(struct menu *menu) return menu; } -bool menu_has_help(struct menu *menu) +static void get_def_str(struct gstr *r, struct menu *menu) { - return menu->help != NULL; + str_printf(r, "Defined at %s:%d\n", + menu->filename, menu->lineno); } -const char *menu_get_help(struct menu *menu) +static void get_dep_str(struct gstr *r, struct expr *expr, const char *prefix) { - if (menu->help) - return menu->help; - else - return ""; + if (!expr_is_yes(expr)) { + str_append(r, prefix); + expr_gstr_print(expr, r); + str_append(r, "\n"); + } +} + +int __attribute__((weak)) get_jump_key_char(void) +{ + return -1; } static void get_prompt_str(struct gstr *r, struct property *prop, @@ -711,66 +701,56 @@ static void get_prompt_str(struct gstr *r, struct property *prop, struct menu *submenu[8], *menu, *location = NULL; struct jump_key *jump = NULL; - str_printf(r, _("Prompt: %s\n"), _(prop->text)); - menu = prop->menu->parent; - for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent) { - bool accessible = menu_is_visible(menu); + str_printf(r, " Prompt: %s\n", prop->text); + + get_dep_str(r, prop->menu->dep, " Depends on: "); + /* + * Most prompts in Linux have visibility that exactly matches their + * dependencies. For these, we print only the dependencies to improve + * readability. However, prompts with inline "if" expressions and + * prompts with a parent that has a "visible if" expression have + * differing dependencies and visibility. In these rare cases, we + * print both. + */ + if (!expr_eq(prop->menu->dep, prop->visible.expr)) + get_dep_str(r, prop->visible.expr, " Visible if: "); + menu = prop->menu; + for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent) { submenu[i++] = menu; - if (location == NULL && accessible) + if (location == NULL && menu_is_visible(menu)) location = menu; } if (head && location) { jump = xmalloc(sizeof(struct jump_key)); - - if (menu_is_visible(prop->menu)) { - /* - * There is not enough room to put the hint at the - * beginning of the "Prompt" line. Put the hint on the - * last "Location" line even when it would belong on - * the former. - */ - jump->target = prop->menu; - } else - jump->target = location; - - if (list_empty(head)) - jump->index = 0; - else - jump->index = list_entry(head->prev, struct jump_key, - entries)->index + 1; - + jump->target = location; list_add_tail(&jump->entries, head); } - if (i > 0) { - str_printf(r, _(" Location:\n")); - for (j = 4; --i >= 0; j += 2) { - menu = submenu[i]; - if (jump && menu == location) - jump->offset = strlen(r->s); - str_printf(r, "%*c-> %s", j, ' ', - _(menu_get_prompt(menu))); - if (menu->sym) { - str_printf(r, " (%s [=%s])", menu->sym->name ? - menu->sym->name : _(""), - sym_get_string_value(menu->sym)); - } - str_append(r, "\n"); + str_printf(r, " Location:\n"); + for (j = 0; --i >= 0; j++) { + int jk = -1; + int indent = 2 * j + 4; + + menu = submenu[i]; + if (jump && menu == location) { + jump->offset = strlen(r->s); + jk = get_jump_key_char(); } - } -} -/* - * get property of type P_SYMBOL - */ -static struct property *get_symbol_prop(struct symbol *sym) -{ - struct property *prop = NULL; + if (jk >= 0) { + str_printf(r, "(%c)", jk); + indent -= 3; + } - for_all_properties(sym, prop, P_SYMBOL) - break; - return prop; + str_printf(r, "%*c-> %s", indent, ' ', menu_get_prompt(menu)); + if (menu->sym) { + str_printf(r, " (%s [=%s])", menu->sym->name ? + menu->sym->name : "", + sym_get_string_value(menu->sym)); + } + str_append(r, "\n"); + } } static void get_symbol_props_str(struct gstr *r, struct symbol *sym, @@ -798,6 +778,7 @@ static void get_symbol_str(struct gstr *r, struct symbol *sym, struct list_head *head) { struct property *prop; + struct menu *menu; if (sym && sym->name) { str_printf(r, "Symbol: %s [=%s]\n", sym->name, @@ -812,32 +793,34 @@ static void get_symbol_str(struct gstr *r, struct symbol *sym, } } } - for_all_prompts(sym, prop) - get_prompt_str(r, prop, head); - - prop = get_symbol_prop(sym); - if (prop) { - str_printf(r, _(" Defined at %s:%d\n"), prop->menu->file->name, - prop->menu->lineno); - if (!expr_is_yes(prop->visible.expr)) { - str_append(r, _(" Depends on: ")); - expr_gstr_print(prop->visible.expr, r); - str_append(r, "\n"); + + /* Print the definitions with prompts before the ones without */ + list_for_each_entry(menu, &sym->menus, link) { + if (menu->prompt) { + get_def_str(r, menu); + get_prompt_str(r, menu->prompt, head); + } + } + + list_for_each_entry(menu, &sym->menus, link) { + if (!menu->prompt) { + get_def_str(r, menu); + get_dep_str(r, menu->dep, " Depends on: "); } } - get_symbol_props_str(r, sym, P_SELECT, _(" Selects: ")); + get_symbol_props_str(r, sym, P_SELECT, "Selects: "); if (sym->rev_dep.expr) { - expr_gstr_print_revdep(sym->rev_dep.expr, r, yes, " Selected by [y]:\n"); - expr_gstr_print_revdep(sym->rev_dep.expr, r, mod, " Selected by [m]:\n"); - expr_gstr_print_revdep(sym->rev_dep.expr, r, no, " Selected by [n]:\n"); + expr_gstr_print_revdep(sym->rev_dep.expr, r, yes, "Selected by [y]:\n"); + expr_gstr_print_revdep(sym->rev_dep.expr, r, mod, "Selected by [m]:\n"); + expr_gstr_print_revdep(sym->rev_dep.expr, r, no, "Selected by [n]:\n"); } - get_symbol_props_str(r, sym, P_IMPLY, _(" Implies: ")); + get_symbol_props_str(r, sym, P_IMPLY, "Implies: "); if (sym->implied.expr) { - expr_gstr_print_revdep(sym->implied.expr, r, yes, " Implied by [y]:\n"); - expr_gstr_print_revdep(sym->implied.expr, r, mod, " Implied by [m]:\n"); - expr_gstr_print_revdep(sym->implied.expr, r, no, " Implied by [n]:\n"); + expr_gstr_print_revdep(sym->implied.expr, r, yes, "Implied by [y]:\n"); + expr_gstr_print_revdep(sym->implied.expr, r, mod, "Implied by [m]:\n"); + expr_gstr_print_revdep(sym->implied.expr, r, no, "Implied by [n]:\n"); } str_append(r, "\n\n"); @@ -852,7 +835,7 @@ struct gstr get_relations_str(struct symbol **sym_arr, struct list_head *head) for (i = 0; sym_arr && (sym = sym_arr[i]); i++) get_symbol_str(&res, sym, head); if (!i) - str_append(&res, _("No matches found.\n")); + str_append(&res, "No matches found.\n"); return res; } @@ -862,12 +845,12 @@ void menu_get_ext_help(struct menu *menu, struct gstr *help) struct symbol *sym = menu->sym; const char *help_text = nohelp_text; - if (menu_has_help(menu)) { + if (menu->help) { if (sym->name) str_printf(help, "%s%s:\n\n", CONFIG_, sym->name); - help_text = menu_get_help(menu); + help_text = menu->help; } - str_printf(help, "%s\n", _(help_text)); + str_printf(help, "%s\n", help_text); if (sym) get_symbol_str(help, sym, NULL); } diff --git a/support/kconfig/merge_config.sh b/support/kconfig/merge_config.sh index 14917806a3..a5c03487c3 100755 --- a/support/kconfig/merge_config.sh +++ b/support/kconfig/merge_config.sh @@ -1,4 +1,6 @@ #!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# # merge_config.sh - Takes a list of config fragment values, and merges # them one by one. Provides warnings on overridden values, and specified # values that did not make it to the resulting .config file (due to missed @@ -10,21 +12,13 @@ # # Copyright (c) 2009-2010 Wind River Systems, Inc. # Copyright 2011 Linaro -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2 as -# published by the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. + +set -e clean_up() { rm -f $TMP_FILE - exit + rm -f $MERGE_FILE } -trap clean_up HUP INT TERM usage() { echo "Usage: $0 [OPTIONS] [CONFIG [...]]" @@ -32,18 +26,23 @@ usage() { echo " -m only merge the fragments, do not execute the make command" echo " -n use allnoconfig instead of alldefconfig" echo " -r list redundant entries when merging fragments" + echo " -y make builtin have precedence over modules" echo " -O dir to put generated output files. Consider setting \$KCONFIG_CONFIG instead." + echo " -s strict mode. Fail if the fragment redefines any value." + echo " -Q disable warning messages for overridden options." echo " -e colon-separated list of br2-external trees to use (optional)" echo - echo "Used prefix: '$CONFIG_PREFIX'. You can redefine it with \$CONFIG_ - environment variable." + echo "Used prefix: '$CONFIG_PREFIX'. You can redefine it with \$CONFIG_ environment variable." } RUNMAKE=true ALLTARGET=alldefconfig WARNREDUN=false +BUILTIN=false OUTPUT=. +STRICT=false CONFIG_PREFIX=${CONFIG_-CONFIG_} +WARNOVERRIDE=echo while true; do case $1 in @@ -66,6 +65,11 @@ while true; do shift continue ;; + "-y") + BUILTIN=true + shift + continue + ;; "-O") if [ -d $2 ];then OUTPUT=$(echo $2 | sed 's/\/*$//') @@ -76,6 +80,16 @@ while true; do shift 2 continue ;; + "-s") + STRICT=true + shift + continue + ;; + "-Q") + WARNOVERRIDE=true + shift + continue + ;; "-e") EXTERNAL_ARG="BR2_EXTERNAL=$2" shift 2 @@ -113,42 +127,65 @@ SED_CONFIG_EXP1="s/^\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\)=.*/\1/p" SED_CONFIG_EXP2="s/^# \(${CONFIG_PREFIX}[a-zA-Z0-9_]*\) is not set$/\1/p" TMP_FILE=$(mktemp -t .tmp.config.XXXXXXXXXX) +MERGE_FILE=$(mktemp -t .merge_tmp.config.XXXXXXXXXX) echo "Using $INITFILE as base" + +trap clean_up EXIT + cat $INITFILE > $TMP_FILE # Merge files, printing warnings on overridden values -for MERGE_FILE in $MERGE_LIST ; do - echo "Merging $MERGE_FILE" - if [ ! -r "$MERGE_FILE" ]; then - echo "The merge file '$MERGE_FILE' does not exist. Exit." >&2 +for ORIG_MERGE_FILE in $MERGE_LIST ; do + echo "Merging $ORIG_MERGE_FILE" + if [ ! -r "$ORIG_MERGE_FILE" ]; then + echo "The merge file '$ORIG_MERGE_FILE' does not exist. Exit." >&2 exit 1 fi + cat $ORIG_MERGE_FILE > $MERGE_FILE CFG_LIST=$(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $MERGE_FILE) for CFG in $CFG_LIST ; do grep -q -w $CFG $TMP_FILE || continue PREV_VAL=$(grep -w $CFG $TMP_FILE) NEW_VAL=$(grep -w $CFG $MERGE_FILE) - if [ "x$PREV_VAL" != "x$NEW_VAL" ] ; then - echo Value of $CFG is redefined by fragment $MERGE_FILE: - echo Previous value: $PREV_VAL - echo New value: $NEW_VAL - echo + BUILTIN_FLAG=false + if [ "$BUILTIN" = "true" ] && [ "${NEW_VAL#CONFIG_*=}" = "m" ] && [ "${PREV_VAL#CONFIG_*=}" = "y" ]; then + ${WARNOVERRIDE} Previous value: $PREV_VAL + ${WARNOVERRIDE} New value: $NEW_VAL + ${WARNOVERRIDE} -y passed, will not demote y to m + ${WARNOVERRIDE} + BUILTIN_FLAG=true + elif [ "x$PREV_VAL" != "x$NEW_VAL" ] ; then + ${WARNOVERRIDE} Value of $CFG is redefined by fragment $ORIG_MERGE_FILE: + ${WARNOVERRIDE} Previous value: $PREV_VAL + ${WARNOVERRIDE} New value: $NEW_VAL + ${WARNOVERRIDE} + if [ "$STRICT" = "true" ]; then + STRICT_MODE_VIOLATED=true + fi elif [ "$WARNREDUN" = "true" ]; then - echo Value of $CFG is redundant by fragment $MERGE_FILE: + ${WARNOVERRIDE} Value of $CFG is redundant by fragment $ORIG_MERGE_FILE: + fi + if [ "$BUILTIN_FLAG" = "false" ]; then + sed -i "/$CFG[ =]/d" $TMP_FILE + else + sed -i "/$CFG[ =]/d" $MERGE_FILE fi - sed -i "/$CFG[ =]/d" $TMP_FILE done cat $MERGE_FILE >> $TMP_FILE done +if [ "$STRICT_MODE_VIOLATED" = "true" ]; then + echo "The fragment redefined a value and strict mode had been passed." + exit 1 +fi + if [ "$RUNMAKE" = "false" ]; then cp -T -- "$TMP_FILE" "$KCONFIG_CONFIG" echo "#" echo "# merged configuration written to $KCONFIG_CONFIG (needs make)" echo "#" - clean_up exit fi @@ -170,7 +207,7 @@ make KCONFIG_ALLCONFIG=$TMP_FILE $EXTERNAL_ARG $OUTPUT_ARG $ALLTARGET for CFG in $(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $TMP_FILE); do REQUESTED_VAL=$(grep -w -e "$CFG" $TMP_FILE) - ACTUAL_VAL=$(grep -w -e "$CFG" "$KCONFIG_CONFIG") + ACTUAL_VAL=$(grep -w -e "$CFG" "$KCONFIG_CONFIG" || true) if [ "x$REQUESTED_VAL" != "x$ACTUAL_VAL" ] ; then echo "Value requested for $CFG not in final .config" echo "Requested value: $REQUESTED_VAL" @@ -178,5 +215,3 @@ for CFG in $(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $TMP_FILE); do echo "" fi done - -clean_up diff --git a/support/kconfig/mnconf-common.c b/support/kconfig/mnconf-common.c new file mode 100644 index 0000000000..18cb9a6c5a --- /dev/null +++ b/support/kconfig/mnconf-common.c @@ -0,0 +1,53 @@ +// SPDX-License-Identifier: GPL-2.0-only +#include "expr.h" +#include "list.h" +#include "mnconf-common.h" + +int jump_key_char; + +int next_jump_key(int key) +{ + if (key < '1' || key > '9') + return '1'; + + key++; + + if (key > '9') + key = '1'; + + return key; +} + +int handle_search_keys(int key, size_t start, size_t end, void *_data) +{ + struct search_data *data = _data; + struct jump_key *pos; + int index = 0; + + if (key < '1' || key > '9') + return 0; + + list_for_each_entry(pos, data->head, entries) { + index = next_jump_key(index); + + if (pos->offset < start) + continue; + + if (pos->offset >= end) + break; + + if (key == index) { + data->target = pos->target; + return 1; + } + } + + return 0; +} + +int get_jump_key_char(void) +{ + jump_key_char = next_jump_key(jump_key_char); + + return jump_key_char; +} diff --git a/support/kconfig/mnconf-common.h b/support/kconfig/mnconf-common.h new file mode 100644 index 0000000000..ab6292cc4b --- /dev/null +++ b/support/kconfig/mnconf-common.h @@ -0,0 +1,18 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +#ifndef MNCONF_COMMON_H +#define MNCONF_COMMON_H + +#include + +struct search_data { + struct list_head *head; + struct menu *target; +}; + +extern int jump_key_char; + +int next_jump_key(int key); +int handle_search_keys(int key, size_t start, size_t end, void *_data); +int get_jump_key_char(void); + +#endif /* MNCONF_COMMON_H */ diff --git a/support/kconfig/nconf-cfg.sh b/support/kconfig/nconf-cfg.sh new file mode 100755 index 0000000000..f871a2160e --- /dev/null +++ b/support/kconfig/nconf-cfg.sh @@ -0,0 +1,53 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +cflags=$1 +libs=$2 + +PKG="ncursesw menuw panelw" +PKG2="ncurses menu panel" + +if [ -n "$(command -v ${HOSTPKG_CONFIG})" ]; then + if ${HOSTPKG_CONFIG} --exists $PKG; then + ${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG} > ${libs} + exit 0 + fi + + if ${HOSTPKG_CONFIG} --exists $PKG2; then + ${HOSTPKG_CONFIG} --cflags ${PKG2} > ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG2} > ${libs} + exit 0 + fi +fi + +# Check the default paths in case pkg-config is not installed. +# (Even if it is installed, some distributions such as openSUSE cannot +# find ncurses by pkg-config.) +if [ -f /usr/include/ncursesw/ncurses.h ]; then + echo -D_GNU_SOURCE -I/usr/include/ncursesw > ${cflags} + echo -lncursesw -lmenuw -lpanelw > ${libs} + exit 0 +fi + +if [ -f /usr/include/ncurses/ncurses.h ]; then + echo -D_GNU_SOURCE -I/usr/include/ncurses > ${cflags} + echo -lncurses -lmenu -lpanel > ${libs} + exit 0 +fi + +if [ -f /usr/include/ncurses.h ]; then + echo -D_GNU_SOURCE > ${cflags} + echo -lncurses -lmenu -lpanel > ${libs} + exit 0 +fi + +echo >&2 "*" +echo >&2 "* Unable to find the ncurses package." +echo >&2 "* Install ncurses (ncurses-devel or libncurses-dev" +echo >&2 "* depending on your distribution)." +echo >&2 "*" +echo >&2 "* You may also need to install ${HOSTPKG_CONFIG} to find the" +echo >&2 "* ncurses installed in a non-default location." +echo >&2 "*" +exit 1 diff --git a/support/kconfig/nconf.c b/support/kconfig/nconf.c index 0031147798..9d22b0f319 100644 --- a/support/kconfig/nconf.c +++ b/support/kconfig/nconf.c @@ -1,21 +1,23 @@ +// SPDX-License-Identifier: GPL-2.0 /* - * Copyright (C) 2008 Nir Tzachar * * Derived from menuconfig. - * */ #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif #include +#include #include +#include "list.h" #include "lkc.h" +#include "mnconf-common.h" #include "nconf.h" #include -static const char nconf_global_help[] = N_( +static const char nconf_global_help[] = "Help windows\n" "------------\n" "o Global help: Unless in a data entry window, pressing will give \n" @@ -52,8 +54,8 @@ static const char nconf_global_help[] = N_( "\n" "Menu navigation keys\n" "----------------------------------------------------------------------\n" -"Linewise up \n" -"Linewise down \n" +"Linewise up \n" +"Linewise down \n" "Pagewise up \n" "Pagewise down \n" "First entry \n" @@ -130,8 +132,8 @@ static const char nconf_global_help[] = N_( "\n" "Note that this mode can eventually be a little more CPU expensive than\n" "the default mode, especially with a larger number of unfolded submenus.\n" -"\n"), -menu_no_f_instructions[] = N_( +"\n", +menu_no_f_instructions[] = "Legend: [*] built-in [ ] excluded module < > module capable.\n" "Submenus are designated by a trailing \"--->\", empty ones by \"----\".\n" "\n" @@ -147,8 +149,8 @@ menu_no_f_instructions[] = N_( "You do not have function keys support.\n" "Press <1> instead of , <2> instead of , etc.\n" "For verbose global help use key <1>.\n" -"For help related to the current menu entry press or .\n"), -menu_instructions[] = N_( +"For help related to the current menu entry press or .\n", +menu_instructions[] = "Legend: [*] built-in [ ] excluded module < > module capable.\n" "Submenus are designated by a trailing \"--->\", empty ones by \"----\".\n" "\n" @@ -163,30 +165,30 @@ menu_instructions[] = N_( "\n" "Pressing <1> may be used instead of , <2> instead of , etc.\n" "For verbose global help press .\n" -"For help related to the current menu entry press or .\n"), -radiolist_instructions[] = N_( +"For help related to the current menu entry press or .\n", +radiolist_instructions[] = "Press , , or to navigate a radiolist, select\n" "with .\n" "For help related to the current entry press or .\n" -"For global help press .\n"), -inputbox_instructions_int[] = N_( +"For global help press .\n", +inputbox_instructions_int[] = "Please enter a decimal value.\n" "Fractions will not be accepted.\n" -"Press to apply, to cancel."), -inputbox_instructions_hex[] = N_( +"Press to apply, to cancel.", +inputbox_instructions_hex[] = "Please enter a hexadecimal value.\n" -"Press to apply, to cancel."), -inputbox_instructions_string[] = N_( +"Press to apply, to cancel.", +inputbox_instructions_string[] = "Please enter a string value.\n" -"Press to apply, to cancel."), -setmod_text[] = N_( +"Press to apply, to cancel.", +setmod_text[] = "This feature depends on another feature which has been configured as a\n" -"module. As a result, the current feature will be built as a module too."), -load_config_text[] = N_( +"module. As a result, the current feature will be built as a module too.", +load_config_text[] = "Enter the name of the configuration file you wish to load.\n" "Accept the name shown to restore the configuration you last\n" -"retrieved. Leave empty to abort."), -load_config_help[] = N_( +"retrieved. Leave empty to abort.", +load_config_help[] = "For various reasons, one may wish to keep several different\n" "configurations available on a single machine.\n" "\n" @@ -194,11 +196,11 @@ load_config_help[] = N_( "default one, entering its name here will allow you to load and modify\n" "that configuration.\n" "\n" -"Leave empty to abort.\n"), -save_config_text[] = N_( +"Leave empty to abort.\n", +save_config_text[] = "Enter a filename to which this configuration should be saved\n" -"as an alternate. Leave empty to abort."), -save_config_help[] = N_( +"as an alternate. Leave empty to abort.", +save_config_help[] = "For various reasons, one may wish to keep several different\n" "configurations available on a single machine.\n" "\n" @@ -206,8 +208,8 @@ save_config_help[] = N_( "and use the current configuration as an alternate to whatever\n" "configuration options you have selected at that time.\n" "\n" -"Leave empty to abort.\n"), -search_help[] = N_( +"Leave empty to abort.\n", +search_help[] = "Search for symbols (configuration variable names CONFIG_*) and display\n" "their relations. Regular expressions are supported.\n" "Example: Search for \"^FOO\".\n" @@ -216,11 +218,11 @@ search_help[] = N_( "Symbol: FOO [ = m]\n" "Prompt: Foo bus is used to drive the bar HW\n" "Defined at drivers/pci/Kconfig:47\n" -"Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\n" +"Depends on: X86_LOCAL_APIC && X86_IO_APIC\n" "Location:\n" " -> Bus options (PCI, PCMCIA, EISA, ISA)\n" " -> PCI support (PCI [ = y])\n" -" -> PCI access mode ( [ = y])\n" +"(1) -> PCI access mode ( [ = y])\n" "Selects: LIBCRC32\n" "Selected by: BAR\n" "-----------------------------------------------------------------\n" @@ -231,9 +233,13 @@ search_help[] = N_( "o The 'Depends on:' line lists symbols that need to be defined for\n" " this symbol to be visible and selectable in the menu.\n" "o The 'Location:' lines tell, where in the menu structure this symbol\n" -" is located. A location followed by a [ = y] indicates that this is\n" -" a selectable menu item, and the current value is displayed inside\n" -" brackets.\n" +" is located.\n" +" A location followed by a [ = y] indicates that this is\n" +" a selectable menu item, and the current value is displayed inside\n" +" brackets.\n" +" Press the key in the (#) prefix to jump directly to that\n" +" location. You will be returned to the current search results\n" +" after exiting this new menu.\n" "o The 'Selects:' line tells, what symbol will be automatically selected\n" " if this symbol is selected (y or m).\n" "o The 'Selected by' line tells what symbol has selected this symbol.\n" @@ -244,7 +250,7 @@ search_help[] = N_( "USB => find all symbols containing USB\n" "^USB => find all symbols starting with USB\n" "USB$ => find all symbols ending with USB\n" -"\n"); +"\n"; struct mitem { char str[256]; @@ -268,7 +274,7 @@ static int mwin_max_cols; static MENU *curses_menu; static ITEM *curses_menu_items[MAX_MENU_ITEMS]; static struct mitem k_menu_items[MAX_MENU_ITEMS]; -static int items_num; +static unsigned int items_num; static int global_exit; /* the currently selected button */ static const char *current_instructions = menu_instructions; @@ -276,6 +282,7 @@ static const char *current_instructions = menu_instructions; static char *dialog_input_result; static int dialog_input_result_len; +static void selected_conf(struct menu *menu, struct menu *active_menu); static void conf(struct menu *menu); static void conf_choice(struct menu *menu); static void conf_string(struct menu *menu); @@ -370,25 +377,25 @@ static void print_function_line(void) int lines = getmaxy(stdscr); for (i = 0; i < function_keys_num; i++) { - (void) wattrset(main_window, attributes[FUNCTION_HIGHLIGHT]); + wattrset(main_window, attr_function_highlight); mvwprintw(main_window, lines-3, offset, "%s", function_keys[i].key_str); - (void) wattrset(main_window, attributes[FUNCTION_TEXT]); + wattrset(main_window, attr_function_text); offset += strlen(function_keys[i].key_str); mvwprintw(main_window, lines-3, offset, "%s", function_keys[i].func); offset += strlen(function_keys[i].func) + skip; } - (void) wattrset(main_window, attributes[NORMAL]); + wattrset(main_window, attr_normal); } /* help */ static void handle_f1(int *key, struct menu *current_item) { show_scroll_win(main_window, - _("Global help"), _(nconf_global_help)); + "Global help", nconf_global_help); return; } @@ -403,8 +410,8 @@ static void handle_f2(int *key, struct menu *current_item) static void handle_f3(int *key, struct menu *current_item) { show_scroll_win(main_window, - _("Short help"), - _(current_instructions)); + "Short help", + current_instructions); return; } @@ -412,7 +419,7 @@ static void handle_f3(int *key, struct menu *current_item) static void handle_f4(int *key, struct menu *current_item) { int res = btn_dialog(main_window, - _("Show all symbols?"), + "Show all symbols?", 2, " ", ""); @@ -496,16 +503,20 @@ typedef enum {MATCH_TINKER_PATTERN_UP, MATCH_TINKER_PATTERN_DOWN, /* return the index of the matched item, or -1 if no such item exists */ static int get_mext_match(const char *match_str, match_f flag) { - int match_start = item_index(current_item(curses_menu)); - int index; + int match_start, index; + + /* Do not search if the menu is empty (i.e. items_num == 0) */ + match_start = item_index(current_item(curses_menu)); + if (match_start == ERR) + return -1; if (flag == FIND_NEXT_MATCH_DOWN) ++match_start; else if (flag == FIND_NEXT_MATCH_UP) --match_start; + match_start = (match_start + items_num) % items_num; index = match_start; - index = (index + items_num) % items_num; while (true) { char *str = k_menu_items[index].str; if (strcasestr(str, match_str) != NULL) @@ -627,19 +638,12 @@ static int item_is_tag(char tag) static char filename[PATH_MAX+1]; static char menu_backtitle[PATH_MAX+128]; -static const char *set_config_filename(const char *config_filename) +static void set_config_filename(const char *config_filename) { - int size; + snprintf(menu_backtitle, sizeof(menu_backtitle), "%s - %s", + config_filename, rootmenu.prompt->text); - size = snprintf(menu_backtitle, sizeof(menu_backtitle), - "%s - %s", config_filename, rootmenu.prompt->text); - if (size >= sizeof(menu_backtitle)) - menu_backtitle[sizeof(menu_backtitle)-1] = '\0'; - - size = snprintf(filename, sizeof(filename), "%s", config_filename); - if (size >= sizeof(filename)) - filename[sizeof(filename)-1] = '\0'; - return menu_backtitle; + snprintf(filename, sizeof(filename), "%s", config_filename); } /* return = 0 means we are successful. @@ -653,8 +657,8 @@ static int do_exit(void) return 0; } res = btn_dialog(main_window, - _("Do you wish to save your new configuration?\n" - " to cancel and resume nconfig."), + "Do you wish to save your new configuration?\n" + " to cancel and resume nconfig.", 2, " ", ""); @@ -670,15 +674,16 @@ static int do_exit(void) if (res) btn_dialog( main_window, - _("Error during writing of configuration.\n" - "Your configuration changes were NOT saved."), + "Error during writing of configuration.\n" + "Your configuration changes were NOT saved.", 1, ""); + conf_write_autoconf(0); break; default: btn_dialog( main_window, - _("Your configuration changes were NOT saved."), + "Your configuration changes were NOT saved.", 1, ""); break; @@ -694,15 +699,16 @@ static void search_conf(void) struct gstr res; struct gstr title; char *dialog_input; - int dres; + int dres, vscroll = 0, hscroll = 0; + bool again; title = str_new(); - str_printf( &title, _("Enter (sub)string or regexp to search for " - "(with or without \"%s\")"), CONFIG_); + str_printf( &title, "Enter (sub)string or regexp to search for " + "(with or without \"%s\")", CONFIG_); again: dres = dialog_inputbox(main_window, - _("Search Configuration Parameter"), + "Search Configuration Parameter", str_get(&title), "", &dialog_input_result, &dialog_input_result_len); switch (dres) { @@ -710,7 +716,7 @@ again: break; case 1: show_scroll_win(main_window, - _("Search Configuration"), search_help); + "Search Configuration", search_help); goto again; default: str_free(&title); @@ -723,11 +729,28 @@ again: dialog_input += strlen(CONFIG_); sym_arr = sym_re_search(dialog_input); - res = get_relations_str(sym_arr, NULL); + + do { + LIST_HEAD(head); + struct search_data data = { + .head = &head, + .target = NULL, + }; + jump_key_char = 0; + res = get_relations_str(sym_arr, &head); + dres = show_scroll_win_ext(main_window, + "Search Results", str_get(&res), + &vscroll, &hscroll, + handle_search_keys, &data); + again = false; + if (dres >= '1' && dres <= '9') { + assert(data.target != NULL); + selected_conf(data.target->parent, data.target); + again = true; + } + str_free(&res); + } while (again); free(sym_arr); - show_scroll_win(main_window, - _("Search Results"), str_get(&res)); - str_free(&res); str_free(&title); } @@ -754,7 +777,6 @@ static void build_conf(struct menu *menu) switch (ptype) { case P_MENU: child_count++; - prompt = _(prompt); if (single_menu_mode) { item_make(menu, 'm', "%s%*c%s", @@ -775,7 +797,7 @@ static void build_conf(struct menu *menu) item_make(menu, ':', " %*c*** %s ***", indent + 1, ' ', - _(prompt)); + prompt); } break; default: @@ -783,7 +805,7 @@ static void build_conf(struct menu *menu) child_count++; item_make(menu, ':', "---%*c%s", indent + 1, ' ', - _(prompt)); + prompt); } } } else @@ -803,7 +825,7 @@ static void build_conf(struct menu *menu) } val = sym_get_tristate_value(sym); - if (sym_is_changable(sym)) { + if (sym_is_changeable(sym)) { switch (type) { case S_BOOLEAN: item_make(menu, 't', "[%c]", @@ -829,11 +851,11 @@ static void build_conf(struct menu *menu) } item_add_str("%*c%s", indent + 1, - ' ', _(menu_get_prompt(menu))); + ' ', menu_get_prompt(menu)); if (val == yes) { if (def_menu) { item_add_str(" (%s)", - _(menu_get_prompt(def_menu))); + menu_get_prompt(def_menu)); item_add_str(" --->"); if (def_menu->list) { indent += 2; @@ -847,7 +869,7 @@ static void build_conf(struct menu *menu) if (menu == current_menu) { item_make(menu, ':', "---%*c%s", indent + 1, - ' ', _(menu_get_prompt(menu))); + ' ', menu_get_prompt(menu)); goto conf_childs; } child_count++; @@ -857,7 +879,7 @@ static void build_conf(struct menu *menu) } else { switch (type) { case S_BOOLEAN: - if (sym_is_changable(sym)) + if (sym_is_changeable(sym)) item_make(menu, 't', "[%c]", val == no ? ' ' : '*'); else @@ -876,7 +898,7 @@ static void build_conf(struct menu *menu) ch = ' '; break; } - if (sym_is_changable(sym)) { + if (sym_is_changeable(sym)) { if (sym->rev_dep.tri == mod) item_make(menu, 't', "{%c}", ch); @@ -894,17 +916,17 @@ static void build_conf(struct menu *menu) if (tmp < 0) tmp = 0; item_add_str("%*c%s%s", tmp, ' ', - _(menu_get_prompt(menu)), + menu_get_prompt(menu), (sym_has_value(sym) || - !sym_is_changable(sym)) ? "" : - _(" (NEW)")); + !sym_is_changeable(sym)) ? "" : + " (NEW)"); goto conf_childs; } } item_add_str("%*c%s%s", indent + 1, ' ', - _(menu_get_prompt(menu)), - (sym_has_value(sym) || !sym_is_changable(sym)) ? - "" : _(" (NEW)")); + menu_get_prompt(menu), + (sym_has_value(sym) || !sym_is_changeable(sym)) ? + "" : " (NEW)"); if (menu->prompt && menu->prompt->type == P_MENU) { item_add_str(" %s", menu_is_empty(menu) ? "----" : "--->"); return; @@ -956,16 +978,15 @@ static void show_menu(const char *prompt, const char *instructions, current_instructions = instructions; clear(); - (void) wattrset(main_window, attributes[NORMAL]); - print_in_middle(stdscr, 1, 0, getmaxx(stdscr), + print_in_middle(stdscr, 1, getmaxx(stdscr), menu_backtitle, - attributes[MAIN_HEADING]); + attr_main_heading); - (void) wattrset(main_window, attributes[MAIN_MENU_BOX]); + wattrset(main_window, attr_main_menu_box); box(main_window, 0, 0); - (void) wattrset(main_window, attributes[MAIN_MENU_HEADING]); + wattrset(main_window, attr_main_menu_heading); mvwprintw(main_window, 0, 3, " %s ", prompt); - (void) wattrset(main_window, attributes[NORMAL]); + wattrset(main_window, attr_normal); set_menu_items(curses_menu, curses_menu_items); @@ -1048,7 +1069,7 @@ static int do_match(int key, struct match_state *state, int *ans) state->match_direction = FIND_NEXT_MATCH_UP; *ans = get_mext_match(state->pattern, state->match_direction); - } else if (key == KEY_BACKSPACE || key == 127) { + } else if (key == KEY_BACKSPACE || key == 8 || key == 127) { state->pattern[strlen(state->pattern)-1] = '\0'; adj_match_dir(&state->match_direction); } else @@ -1066,11 +1087,15 @@ static int do_match(int key, struct match_state *state, int *ans) } static void conf(struct menu *menu) +{ + selected_conf(menu, NULL); +} + +static void selected_conf(struct menu *menu, struct menu *active_menu) { struct menu *submenu = NULL; - const char *prompt = menu_get_prompt(menu); struct symbol *sym; - int res; + int i, res; int current_index = 0; int last_top_row = 0; struct match_state match_state = { @@ -1086,9 +1111,21 @@ static void conf(struct menu *menu) if (!child_count) break; - show_menu(prompt ? _(prompt) : _("Main Menu"), - _(menu_instructions), - current_index, &last_top_row); + if (active_menu != NULL) { + for (i = 0; i < items_num; i++) { + struct mitem *mcur; + + mcur = (struct mitem *) item_userptr(curses_menu_items[i]); + if ((struct menu *) mcur->usrptr == active_menu) { + current_index = i; + break; + } + } + active_menu = NULL; + } + + show_menu(menu_get_prompt(menu), menu_instructions, + current_index, &last_top_row); keypad((menu_win(curses_menu)), TRUE); while (!global_exit) { if (match_state.in_search) { @@ -1111,9 +1148,11 @@ static void conf(struct menu *menu) break; switch (res) { case KEY_DOWN: + case 'j': menu_driver(curses_menu, REQ_DOWN_ITEM); break; case KEY_UP: + case 'k': menu_driver(curses_menu, REQ_UP_ITEM); break; case KEY_NPAGE: @@ -1210,12 +1249,9 @@ static void conf(struct menu *menu) } } -static void conf_message_callback(const char *fmt, va_list ap) +static void conf_message_callback(const char *s) { - char buf[1024]; - - vsnprintf(buf, sizeof(buf), fmt, ap); - btn_dialog(main_window, buf, 1, ""); + btn_dialog(main_window, s, 1, ""); } static void show_help(struct menu *menu) @@ -1227,13 +1263,13 @@ static void show_help(struct menu *menu) help = str_new(); menu_get_ext_help(menu, &help); - show_scroll_win(main_window, _(menu_get_prompt(menu)), str_get(&help)); + show_scroll_win(main_window, menu_get_prompt(menu), str_get(&help)); str_free(&help); } static void conf_choice(struct menu *menu) { - const char *prompt = _(menu_get_prompt(menu)); + const char *prompt = menu_get_prompt(menu); struct menu *child = NULL; struct symbol *active; int selected_index = 0; @@ -1256,13 +1292,13 @@ static void conf_choice(struct menu *menu) if (child->sym == sym_get_choice_value(menu->sym)) item_make(child, ':', " %s", - _(menu_get_prompt(child))); + menu_get_prompt(child)); else if (child->sym) item_make(child, ':', " %s", - _(menu_get_prompt(child))); + menu_get_prompt(child)); else item_make(child, ':', "*** %s ***", - _(menu_get_prompt(child))); + menu_get_prompt(child)); if (child->sym == active){ last_top_row = top_row(curses_menu); @@ -1270,8 +1306,8 @@ static void conf_choice(struct menu *menu) } i++; } - show_menu(prompt ? _(prompt) : _("Choice Menu"), - _(radiolist_instructions), + show_menu(prompt ? prompt : "Choice Menu", + radiolist_instructions, selected_index, &last_top_row); while (!global_exit) { @@ -1296,9 +1332,11 @@ static void conf_choice(struct menu *menu) break; switch (res) { case KEY_DOWN: + case 'j': menu_driver(curses_menu, REQ_DOWN_ITEM); break; case KEY_UP: + case 'k': menu_driver(curses_menu, REQ_UP_ITEM); break; case KEY_NPAGE: @@ -1358,19 +1396,19 @@ static void conf_string(struct menu *menu) switch (sym_get_type(menu->sym)) { case S_INT: - heading = _(inputbox_instructions_int); + heading = inputbox_instructions_int; break; case S_HEX: - heading = _(inputbox_instructions_hex); + heading = inputbox_instructions_hex; break; case S_STRING: - heading = _(inputbox_instructions_string); + heading = inputbox_instructions_string; break; default: - heading = _("Internal nconf error!"); + heading = "Internal nconf error!"; } res = dialog_inputbox(main_window, - prompt ? _(prompt) : _("Main Menu"), + prompt ? prompt : "Main Menu", heading, sym_get_string_value(menu->sym), &dialog_input_result, @@ -1381,7 +1419,7 @@ static void conf_string(struct menu *menu) dialog_input_result)) return; btn_dialog(main_window, - _("You have made an invalid entry."), 0); + "You have made an invalid entry.", 0); break; case 1: show_help(menu); @@ -1407,14 +1445,14 @@ static void conf_load(void) return; if (!conf_read(dialog_input_result)) { set_config_filename(dialog_input_result); - sym_set_change_count(1); + conf_set_changed(true); return; } - btn_dialog(main_window, _("File does not exist!"), 0); + btn_dialog(main_window, "File does not exist!", 0); break; case 1: show_scroll_win(main_window, - _("Load Alternate Configuration"), + "Load Alternate Configuration", load_config_help); break; case KEY_EXIT: @@ -1441,13 +1479,12 @@ static void conf_save(void) set_config_filename(dialog_input_result); return; } - btn_dialog(main_window, _("Can't create file! " - "Probably a nonexistent directory."), + btn_dialog(main_window, "Can't create file!", 1, ""); break; case 1: show_scroll_win(main_window, - _("Save Alternate Configuration"), + "Save Alternate Configuration", save_config_help); break; case KEY_EXIT: @@ -1480,10 +1517,6 @@ int main(int ac, char **av) int lines, columns; char *mode; - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); - if (ac > 1 && strcmp(av[1], "-s") == 0) { /* Silence conf_read() until the real callback is set up */ conf_set_message_callback(NULL); @@ -1531,9 +1564,9 @@ int main(int ac, char **av) menu_opts_on(curses_menu, O_NONCYCLIC); menu_opts_on(curses_menu, O_IGNORECASE); set_menu_mark(curses_menu, " "); - set_menu_fore(curses_menu, attributes[MAIN_MENU_FORE]); - set_menu_back(curses_menu, attributes[MAIN_MENU_BACK]); - set_menu_grey(curses_menu, attributes[MAIN_MENU_GREY]); + set_menu_fore(curses_menu, attr_main_menu_fore); + set_menu_back(curses_menu, attr_main_menu_back); + set_menu_grey(curses_menu, attr_main_menu_grey); set_config_filename(conf_get_configname()); setup_windows(); @@ -1541,8 +1574,8 @@ int main(int ac, char **av) /* check for KEY_FUNC(1) */ if (has_key(KEY_F(1)) == FALSE) { show_scroll_win(main_window, - _("Instructions"), - _(menu_no_f_instructions)); + "Instructions", + menu_no_f_instructions); } conf_set_message_callback(conf_message_callback); diff --git a/support/kconfig/nconf.gui.c b/support/kconfig/nconf.gui.c index 88874acfda..25a7263ef3 100644 --- a/support/kconfig/nconf.gui.c +++ b/support/kconfig/nconf.gui.c @@ -1,176 +1,126 @@ +// SPDX-License-Identifier: GPL-2.0 /* - * Copyright (C) 2008 Nir Tzachar * * Derived from menuconfig. - * */ #include "nconf.h" #include "lkc.h" -/* a list of all the different widgets we use */ -attributes_t attributes[ATTR_MAX+1] = {0}; - -/* available colors: - COLOR_BLACK 0 - COLOR_RED 1 - COLOR_GREEN 2 - COLOR_YELLOW 3 - COLOR_BLUE 4 - COLOR_MAGENTA 5 - COLOR_CYAN 6 - COLOR_WHITE 7 - */ -static void set_normal_colors(void) -{ - init_pair(NORMAL, -1, -1); - init_pair(MAIN_HEADING, COLOR_MAGENTA, -1); - - /* FORE is for the selected item */ - init_pair(MAIN_MENU_FORE, -1, -1); - /* BACK for all the rest */ - init_pair(MAIN_MENU_BACK, -1, -1); - init_pair(MAIN_MENU_GREY, -1, -1); - init_pair(MAIN_MENU_HEADING, COLOR_GREEN, -1); - init_pair(MAIN_MENU_BOX, COLOR_YELLOW, -1); - - init_pair(SCROLLWIN_TEXT, -1, -1); - init_pair(SCROLLWIN_HEADING, COLOR_GREEN, -1); - init_pair(SCROLLWIN_BOX, COLOR_YELLOW, -1); - - init_pair(DIALOG_TEXT, -1, -1); - init_pair(DIALOG_BOX, COLOR_YELLOW, -1); - init_pair(DIALOG_MENU_BACK, COLOR_YELLOW, -1); - init_pair(DIALOG_MENU_FORE, COLOR_RED, -1); - - init_pair(INPUT_BOX, COLOR_YELLOW, -1); - init_pair(INPUT_HEADING, COLOR_GREEN, -1); - init_pair(INPUT_TEXT, -1, -1); - init_pair(INPUT_FIELD, -1, -1); - - init_pair(FUNCTION_HIGHLIGHT, -1, -1); - init_pair(FUNCTION_TEXT, COLOR_YELLOW, -1); -} - -/* available attributes: - A_NORMAL Normal display (no highlight) - A_STANDOUT Best highlighting mode of the terminal. - A_UNDERLINE Underlining - A_REVERSE Reverse video - A_BLINK Blinking - A_DIM Half bright - A_BOLD Extra bright or bold - A_PROTECT Protected mode - A_INVIS Invisible or blank mode - A_ALTCHARSET Alternate character set - A_CHARTEXT Bit-mask to extract a character - COLOR_PAIR(n) Color-pair number n - */ -static void normal_color_theme(void) -{ - /* automatically add color... */ -#define mkattr(name, attr) do { \ -attributes[name] = attr | COLOR_PAIR(name); } while (0) - mkattr(NORMAL, NORMAL); - mkattr(MAIN_HEADING, A_BOLD | A_UNDERLINE); - - mkattr(MAIN_MENU_FORE, A_REVERSE); - mkattr(MAIN_MENU_BACK, A_NORMAL); - mkattr(MAIN_MENU_GREY, A_NORMAL); - mkattr(MAIN_MENU_HEADING, A_BOLD); - mkattr(MAIN_MENU_BOX, A_NORMAL); - - mkattr(SCROLLWIN_TEXT, A_NORMAL); - mkattr(SCROLLWIN_HEADING, A_BOLD); - mkattr(SCROLLWIN_BOX, A_BOLD); - - mkattr(DIALOG_TEXT, A_BOLD); - mkattr(DIALOG_BOX, A_BOLD); - mkattr(DIALOG_MENU_FORE, A_STANDOUT); - mkattr(DIALOG_MENU_BACK, A_NORMAL); - - mkattr(INPUT_BOX, A_NORMAL); - mkattr(INPUT_HEADING, A_BOLD); - mkattr(INPUT_TEXT, A_NORMAL); - mkattr(INPUT_FIELD, A_UNDERLINE); - - mkattr(FUNCTION_HIGHLIGHT, A_BOLD); - mkattr(FUNCTION_TEXT, A_REVERSE); -} - -static void no_colors_theme(void) -{ - /* automatically add highlight, no color */ -#define mkattrn(name, attr) { attributes[name] = attr; } - - mkattrn(NORMAL, NORMAL); - mkattrn(MAIN_HEADING, A_BOLD | A_UNDERLINE); - - mkattrn(MAIN_MENU_FORE, A_STANDOUT); - mkattrn(MAIN_MENU_BACK, A_NORMAL); - mkattrn(MAIN_MENU_GREY, A_NORMAL); - mkattrn(MAIN_MENU_HEADING, A_BOLD); - mkattrn(MAIN_MENU_BOX, A_NORMAL); - - mkattrn(SCROLLWIN_TEXT, A_NORMAL); - mkattrn(SCROLLWIN_HEADING, A_BOLD); - mkattrn(SCROLLWIN_BOX, A_BOLD); - - mkattrn(DIALOG_TEXT, A_NORMAL); - mkattrn(DIALOG_BOX, A_BOLD); - mkattrn(DIALOG_MENU_FORE, A_STANDOUT); - mkattrn(DIALOG_MENU_BACK, A_NORMAL); - - mkattrn(INPUT_BOX, A_BOLD); - mkattrn(INPUT_HEADING, A_BOLD); - mkattrn(INPUT_TEXT, A_NORMAL); - mkattrn(INPUT_FIELD, A_UNDERLINE); - - mkattrn(FUNCTION_HIGHLIGHT, A_BOLD); - mkattrn(FUNCTION_TEXT, A_REVERSE); -} +int attr_normal; +int attr_main_heading; +int attr_main_menu_box; +int attr_main_menu_fore; +int attr_main_menu_back; +int attr_main_menu_grey; +int attr_main_menu_heading; +int attr_scrollwin_text; +int attr_scrollwin_heading; +int attr_scrollwin_box; +int attr_dialog_text; +int attr_dialog_menu_fore; +int attr_dialog_menu_back; +int attr_dialog_box; +int attr_input_box; +int attr_input_heading; +int attr_input_text; +int attr_input_field; +int attr_function_text; +int attr_function_highlight; + +#define COLOR_ATTR(_at, _fg, _bg, _hl) \ + { .attr = &(_at), .has_color = true, .color_fg = _fg, .color_bg = _bg, .highlight = _hl } +#define NO_COLOR_ATTR(_at, _hl) \ + { .attr = &(_at), .has_color = false, .highlight = _hl } +#define COLOR_DEFAULT -1 + +struct nconf_attr_param { + int *attr; + bool has_color; + int color_fg; + int color_bg; + int highlight; +}; + +static const struct nconf_attr_param color_theme_params[] = { + COLOR_ATTR(attr_normal, COLOR_DEFAULT, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_main_heading, COLOR_MAGENTA, COLOR_DEFAULT, A_BOLD | A_UNDERLINE), + COLOR_ATTR(attr_main_menu_box, COLOR_YELLOW, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_main_menu_fore, COLOR_DEFAULT, COLOR_DEFAULT, A_REVERSE), + COLOR_ATTR(attr_main_menu_back, COLOR_DEFAULT, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_main_menu_grey, COLOR_DEFAULT, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_main_menu_heading, COLOR_GREEN, COLOR_DEFAULT, A_BOLD), + COLOR_ATTR(attr_scrollwin_text, COLOR_DEFAULT, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_scrollwin_heading, COLOR_GREEN, COLOR_DEFAULT, A_BOLD), + COLOR_ATTR(attr_scrollwin_box, COLOR_YELLOW, COLOR_DEFAULT, A_BOLD), + COLOR_ATTR(attr_dialog_text, COLOR_DEFAULT, COLOR_DEFAULT, A_BOLD), + COLOR_ATTR(attr_dialog_menu_fore, COLOR_RED, COLOR_DEFAULT, A_STANDOUT), + COLOR_ATTR(attr_dialog_menu_back, COLOR_YELLOW, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_dialog_box, COLOR_YELLOW, COLOR_DEFAULT, A_BOLD), + COLOR_ATTR(attr_input_box, COLOR_YELLOW, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_input_heading, COLOR_GREEN, COLOR_DEFAULT, A_BOLD), + COLOR_ATTR(attr_input_text, COLOR_DEFAULT, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_input_field, COLOR_DEFAULT, COLOR_DEFAULT, A_UNDERLINE), + COLOR_ATTR(attr_function_text, COLOR_YELLOW, COLOR_DEFAULT, A_REVERSE), + COLOR_ATTR(attr_function_highlight, COLOR_DEFAULT, COLOR_DEFAULT, A_BOLD), + { /* sentinel */ } +}; + +static const struct nconf_attr_param no_color_theme_params[] = { + NO_COLOR_ATTR(attr_normal, A_NORMAL), + NO_COLOR_ATTR(attr_main_heading, A_BOLD | A_UNDERLINE), + NO_COLOR_ATTR(attr_main_menu_box, A_NORMAL), + NO_COLOR_ATTR(attr_main_menu_fore, A_STANDOUT), + NO_COLOR_ATTR(attr_main_menu_back, A_NORMAL), + NO_COLOR_ATTR(attr_main_menu_grey, A_NORMAL), + NO_COLOR_ATTR(attr_main_menu_heading, A_BOLD), + NO_COLOR_ATTR(attr_scrollwin_text, A_NORMAL), + NO_COLOR_ATTR(attr_scrollwin_heading, A_BOLD), + NO_COLOR_ATTR(attr_scrollwin_box, A_BOLD), + NO_COLOR_ATTR(attr_dialog_text, A_NORMAL), + NO_COLOR_ATTR(attr_dialog_menu_fore, A_STANDOUT), + NO_COLOR_ATTR(attr_dialog_menu_back, A_NORMAL), + NO_COLOR_ATTR(attr_dialog_box, A_BOLD), + NO_COLOR_ATTR(attr_input_box, A_BOLD), + NO_COLOR_ATTR(attr_input_heading, A_BOLD), + NO_COLOR_ATTR(attr_input_text, A_NORMAL), + NO_COLOR_ATTR(attr_input_field, A_UNDERLINE), + NO_COLOR_ATTR(attr_function_text, A_REVERSE), + NO_COLOR_ATTR(attr_function_highlight, A_BOLD), + { /* sentinel */ } +}; void set_colors(void) { - start_color(); - use_default_colors(); - set_normal_colors(); + const struct nconf_attr_param *p; + int pair = 0; + if (has_colors()) { - normal_color_theme(); + start_color(); + use_default_colors(); + p = color_theme_params; } else { - /* give defaults */ - no_colors_theme(); + p = no_color_theme_params; } -} + for (; p->attr; p++) { + int attr = p->highlight; + + if (p->has_color) { + pair++; + init_pair(pair, p->color_fg, p->color_bg); + attr |= COLOR_PAIR(pair); + } + + *p->attr = attr; + } +} /* this changes the windows attributes !!! */ -void print_in_middle(WINDOW *win, - int starty, - int startx, - int width, - const char *string, - chtype color) -{ int length, x, y; - float temp; - - - if (win == NULL) - win = stdscr; - getyx(win, y, x); - if (startx != 0) - x = startx; - if (starty != 0) - y = starty; - if (width == 0) - width = 80; - - length = strlen(string); - temp = (width - length) / 2; - x = startx + (int)temp; - (void) wattrset(win, color); - mvwprintw(win, y, x, "%s", string); - refresh(); +void print_in_middle(WINDOW *win, int y, int width, const char *str, int attrs) +{ + wattrset(win, attrs); + mvwprintw(win, y, (width - strlen(str)) / 2, "%s", str); } int get_line_no(const char *text) @@ -295,14 +245,14 @@ int btn_dialog(WINDOW *main_window, const char *msg, int btn_num, ...) msg_win = derwin(win, win_rows-2, msg_width, 1, 1+(total_width+2-msg_width)/2); - set_menu_fore(menu, attributes[DIALOG_MENU_FORE]); - set_menu_back(menu, attributes[DIALOG_MENU_BACK]); + set_menu_fore(menu, attr_dialog_menu_fore); + set_menu_back(menu, attr_dialog_menu_back); - (void) wattrset(win, attributes[DIALOG_BOX]); + wattrset(win, attr_dialog_box); box(win, 0, 0); /* print message */ - (void) wattrset(msg_win, attributes[DIALOG_TEXT]); + wattrset(msg_win, attr_dialog_text); fill_window(msg_win, msg); set_menu_win(menu, win); @@ -406,16 +356,16 @@ int dialog_inputbox(WINDOW *main_window, form_win = derwin(win, 1, prompt_width, prompt_lines+3, 2); keypad(form_win, TRUE); - (void) wattrset(form_win, attributes[INPUT_FIELD]); + wattrset(form_win, attr_input_field); - (void) wattrset(win, attributes[INPUT_BOX]); + wattrset(win, attr_input_box); box(win, 0, 0); - (void) wattrset(win, attributes[INPUT_HEADING]); + wattrset(win, attr_input_heading); if (title) mvwprintw(win, 0, 3, "%s", title); /* print message */ - (void) wattrset(prompt_win, attributes[INPUT_TEXT]); + wattrset(prompt_win, attr_input_text); fill_window(prompt_win, prompt); mvwprintw(form_win, 0, 0, "%*s", prompt_width, " "); @@ -440,7 +390,8 @@ int dialog_inputbox(WINDOW *main_window, case KEY_F(F_EXIT): case KEY_F(F_BACK): break; - case 127: + case 8: /* ^H */ + case 127: /* ^? */ case KEY_BACKSPACE: if (cursor_position > 0) { memmove(&result[cursor_position-1], @@ -546,10 +497,17 @@ void refresh_all_windows(WINDOW *main_window) refresh(); } -/* layman's scrollable window... */ void show_scroll_win(WINDOW *main_window, const char *title, const char *text) +{ + (void)show_scroll_win_ext(main_window, title, (char *)text, NULL, NULL, NULL, NULL); +} + +/* layman's scrollable window... */ +int show_scroll_win_ext(WINDOW *main_window, const char *title, char *text, + int *vscroll, int *hscroll, + extra_key_cb_fn extra_key_cb, void *data) { int res; int total_lines = get_line_no(text); @@ -563,6 +521,12 @@ void show_scroll_win(WINDOW *main_window, WINDOW *win; WINDOW *pad; PANEL *panel; + bool done = false; + + if (hscroll) + start_x = *hscroll; + if (vscroll) + start_y = *vscroll; getmaxyx(stdscr, lines, columns); @@ -576,7 +540,7 @@ void show_scroll_win(WINDOW *main_window, /* create the pad */ pad = newpad(total_lines+10, total_cols+10); - (void) wattrset(pad, attributes[SCROLLWIN_TEXT]); + wattrset(pad, attr_scrollwin_text); fill_window(pad, text); win_lines = min(total_lines+4, lines-2); @@ -591,23 +555,21 @@ void show_scroll_win(WINDOW *main_window, win = newwin(win_lines, win_cols, y, x); keypad(win, TRUE); /* show the help in the help window, and show the help panel */ - (void) wattrset(win, attributes[SCROLLWIN_BOX]); + wattrset(win, attr_scrollwin_box); box(win, 0, 0); - (void) wattrset(win, attributes[SCROLLWIN_HEADING]); + wattrset(win, attr_scrollwin_heading); mvwprintw(win, 0, 3, " %s ", title); panel = new_panel(win); /* handle scrolling */ - do { - + while (!done) { copywin(pad, win, start_y, start_x, 2, 2, text_lines, text_cols, 0); print_in_middle(win, text_lines+2, - 0, text_cols, "", - attributes[DIALOG_MENU_FORE]); + attr_dialog_menu_fore); wrefresh(win); res = wgetch(win); @@ -643,8 +605,18 @@ void show_scroll_win(WINDOW *main_window, case 'l': start_x++; break; + default: + if (extra_key_cb) { + size_t start = (get_line(text, start_y) - text); + size_t end = (get_line(text, start_y + text_lines) - text); + + if (extra_key_cb(res, start, end, data)) { + done = true; + break; + } + } } - if (res == 10 || res == 27 || res == 'q' || + if (res == 0 || res == 10 || res == 27 || res == 'q' || res == KEY_F(F_HELP) || res == KEY_F(F_BACK) || res == KEY_F(F_EXIT)) break; @@ -656,9 +628,14 @@ void show_scroll_win(WINDOW *main_window, start_x = 0; if (start_x >= total_cols-text_cols) start_x = total_cols-text_cols; - } while (res); + } + if (hscroll) + *hscroll = start_x; + if (vscroll) + *vscroll = start_y; del_panel(panel); delwin(win); refresh_all_windows(main_window); + return res; } diff --git a/support/kconfig/nconf.h b/support/kconfig/nconf.h index 9f6f21d3b0..ab836d5826 100644 --- a/support/kconfig/nconf.h +++ b/support/kconfig/nconf.h @@ -1,9 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* - * Copyright (C) 2008 Nir Tzachar * * Derived from menuconfig. - * */ #include @@ -14,7 +13,6 @@ #include #include #include -#include #include #include #include @@ -34,30 +32,26 @@ typeof(b) _b = b;\ _a < _b ? _a : _b; }) -typedef enum { - NORMAL = 1, - MAIN_HEADING, - MAIN_MENU_BOX, - MAIN_MENU_FORE, - MAIN_MENU_BACK, - MAIN_MENU_GREY, - MAIN_MENU_HEADING, - SCROLLWIN_TEXT, - SCROLLWIN_HEADING, - SCROLLWIN_BOX, - DIALOG_TEXT, - DIALOG_MENU_FORE, - DIALOG_MENU_BACK, - DIALOG_BOX, - INPUT_BOX, - INPUT_HEADING, - INPUT_TEXT, - INPUT_FIELD, - FUNCTION_TEXT, - FUNCTION_HIGHLIGHT, - ATTR_MAX -} attributes_t; -extern attributes_t attributes[]; +extern int attr_normal; +extern int attr_main_heading; +extern int attr_main_menu_box; +extern int attr_main_menu_fore; +extern int attr_main_menu_back; +extern int attr_main_menu_grey; +extern int attr_main_menu_heading; +extern int attr_scrollwin_text; +extern int attr_scrollwin_heading; +extern int attr_scrollwin_box; +extern int attr_dialog_text; +extern int attr_dialog_menu_fore; +extern int attr_dialog_menu_back; +extern int attr_dialog_box; +extern int attr_input_box; +extern int attr_input_heading; +extern int attr_input_text; +extern int attr_input_field; +extern int attr_function_text; +extern int attr_function_highlight; typedef enum { F_HELP = 1, @@ -73,13 +67,10 @@ typedef enum { void set_colors(void); +typedef int (*extra_key_cb_fn)(int, size_t, size_t, void *); + /* this changes the windows attributes !!! */ -void print_in_middle(WINDOW *win, - int starty, - int startx, - int width, - const char *string, - chtype color); +void print_in_middle(WINDOW *win, int y, int width, const char *str, int attrs); int get_line_length(const char *line); int get_line_no(const char *text); const char *get_line(const char *text, int line_no); @@ -89,6 +80,9 @@ int dialog_inputbox(WINDOW *main_window, const char *title, const char *prompt, const char *init, char **resultp, int *result_len); void refresh_all_windows(WINDOW *main_window); +int show_scroll_win_ext(WINDOW *main_window, const char *title, char *text, + int *vscroll, int *hscroll, + extra_key_cb_fn extra_key_cb, void *data); void show_scroll_win(WINDOW *main_window, const char *title, const char *text); diff --git a/support/kconfig/parser.tab.c_shipped b/support/kconfig/parser.tab.c_shipped new file mode 100644 index 0000000000..092da33306 --- /dev/null +++ b/support/kconfig/parser.tab.c_shipped @@ -0,0 +1,2189 @@ +/* A Bison parser, made by GNU Bison 3.8.2. */ + +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, + Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output, and Bison version. */ +#define YYBISON 30802 + +/* Bison version string. */ +#define YYBISON_VERSION "3.8.2" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + + + + +/* First part of user prologue. */ + + +#include +#include +#include +#include +#include +#include + +#include "lkc.h" +#include "internal.h" +#include "preprocess.h" + +#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) + +#define PRINTD 0x0001 +#define DEBUG_PARSE 0x0002 + +int cdebug = PRINTD; + +static void yyerror(const char *err); +static void zconfprint(const char *err, ...); +static void zconf_error(const char *err, ...); +static bool zconf_endtoken(const char *tokenname, + const char *expected_tokenname); + +struct menu *current_menu, *current_entry; + + + +# ifndef YY_CAST +# ifdef __cplusplus +# define YY_CAST(Type, Val) static_cast (Val) +# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) +# else +# define YY_CAST(Type, Val) ((Type) (Val)) +# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) +# endif +# endif +# ifndef YY_NULLPTR +# if defined __cplusplus +# if 201103L <= __cplusplus +# define YY_NULLPTR nullptr +# else +# define YY_NULLPTR 0 +# endif +# else +# define YY_NULLPTR ((void*)0) +# endif +# endif + +#include "parser.tab.h" +/* Symbol kind. */ +enum yysymbol_kind_t +{ + YYSYMBOL_YYEMPTY = -2, + YYSYMBOL_YYEOF = 0, /* "end of file" */ + YYSYMBOL_YYerror = 1, /* error */ + YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ + YYSYMBOL_T_HELPTEXT = 3, /* T_HELPTEXT */ + YYSYMBOL_T_WORD = 4, /* T_WORD */ + YYSYMBOL_T_WORD_QUOTE = 5, /* T_WORD_QUOTE */ + YYSYMBOL_T_BOOL = 6, /* T_BOOL */ + YYSYMBOL_T_CHOICE = 7, /* T_CHOICE */ + YYSYMBOL_T_CLOSE_PAREN = 8, /* T_CLOSE_PAREN */ + YYSYMBOL_T_COLON_EQUAL = 9, /* T_COLON_EQUAL */ + YYSYMBOL_T_COMMENT = 10, /* T_COMMENT */ + YYSYMBOL_T_CONFIG = 11, /* T_CONFIG */ + YYSYMBOL_T_DEFAULT = 12, /* T_DEFAULT */ + YYSYMBOL_T_DEF_BOOL = 13, /* T_DEF_BOOL */ + YYSYMBOL_T_DEF_TRISTATE = 14, /* T_DEF_TRISTATE */ + YYSYMBOL_T_DEPENDS = 15, /* T_DEPENDS */ + YYSYMBOL_T_ENDCHOICE = 16, /* T_ENDCHOICE */ + YYSYMBOL_T_ENDIF = 17, /* T_ENDIF */ + YYSYMBOL_T_ENDMENU = 18, /* T_ENDMENU */ + YYSYMBOL_T_HELP = 19, /* T_HELP */ + YYSYMBOL_T_HEX = 20, /* T_HEX */ + YYSYMBOL_T_IF = 21, /* T_IF */ + YYSYMBOL_T_IMPLY = 22, /* T_IMPLY */ + YYSYMBOL_T_INT = 23, /* T_INT */ + YYSYMBOL_T_MAINMENU = 24, /* T_MAINMENU */ + YYSYMBOL_T_MENU = 25, /* T_MENU */ + YYSYMBOL_T_MENUCONFIG = 26, /* T_MENUCONFIG */ + YYSYMBOL_T_MODULES = 27, /* T_MODULES */ + YYSYMBOL_T_ON = 28, /* T_ON */ + YYSYMBOL_T_OPEN_PAREN = 29, /* T_OPEN_PAREN */ + YYSYMBOL_T_OPTIONAL = 30, /* T_OPTIONAL */ + YYSYMBOL_T_PLUS_EQUAL = 31, /* T_PLUS_EQUAL */ + YYSYMBOL_T_PROMPT = 32, /* T_PROMPT */ + YYSYMBOL_T_RANGE = 33, /* T_RANGE */ + YYSYMBOL_T_SELECT = 34, /* T_SELECT */ + YYSYMBOL_T_SOURCE = 35, /* T_SOURCE */ + YYSYMBOL_T_STRING = 36, /* T_STRING */ + YYSYMBOL_T_TRISTATE = 37, /* T_TRISTATE */ + YYSYMBOL_T_VISIBLE = 38, /* T_VISIBLE */ + YYSYMBOL_T_EOL = 39, /* T_EOL */ + YYSYMBOL_T_ASSIGN_VAL = 40, /* T_ASSIGN_VAL */ + YYSYMBOL_T_OR = 41, /* T_OR */ + YYSYMBOL_T_AND = 42, /* T_AND */ + YYSYMBOL_T_EQUAL = 43, /* T_EQUAL */ + YYSYMBOL_T_UNEQUAL = 44, /* T_UNEQUAL */ + YYSYMBOL_T_LESS = 45, /* T_LESS */ + YYSYMBOL_T_LESS_EQUAL = 46, /* T_LESS_EQUAL */ + YYSYMBOL_T_GREATER = 47, /* T_GREATER */ + YYSYMBOL_T_GREATER_EQUAL = 48, /* T_GREATER_EQUAL */ + YYSYMBOL_T_NOT = 49, /* T_NOT */ + YYSYMBOL_YYACCEPT = 50, /* $accept */ + YYSYMBOL_input = 51, /* input */ + YYSYMBOL_mainmenu_stmt = 52, /* mainmenu_stmt */ + YYSYMBOL_stmt_list = 53, /* stmt_list */ + YYSYMBOL_common_stmt = 54, /* common_stmt */ + YYSYMBOL_config_entry_start = 55, /* config_entry_start */ + YYSYMBOL_config_stmt = 56, /* config_stmt */ + YYSYMBOL_menuconfig_entry_start = 57, /* menuconfig_entry_start */ + YYSYMBOL_menuconfig_stmt = 58, /* menuconfig_stmt */ + YYSYMBOL_config_option_list = 59, /* config_option_list */ + YYSYMBOL_config_option = 60, /* config_option */ + YYSYMBOL_choice = 61, /* choice */ + YYSYMBOL_choice_entry = 62, /* choice_entry */ + YYSYMBOL_choice_end = 63, /* choice_end */ + YYSYMBOL_choice_stmt = 64, /* choice_stmt */ + YYSYMBOL_choice_option_list = 65, /* choice_option_list */ + YYSYMBOL_choice_option = 66, /* choice_option */ + YYSYMBOL_type = 67, /* type */ + YYSYMBOL_logic_type = 68, /* logic_type */ + YYSYMBOL_default = 69, /* default */ + YYSYMBOL_choice_block = 70, /* choice_block */ + YYSYMBOL_if_entry = 71, /* if_entry */ + YYSYMBOL_if_end = 72, /* if_end */ + YYSYMBOL_if_stmt = 73, /* if_stmt */ + YYSYMBOL_menu = 74, /* menu */ + YYSYMBOL_menu_entry = 75, /* menu_entry */ + YYSYMBOL_menu_end = 76, /* menu_end */ + YYSYMBOL_menu_stmt = 77, /* menu_stmt */ + YYSYMBOL_menu_option_list = 78, /* menu_option_list */ + YYSYMBOL_source_stmt = 79, /* source_stmt */ + YYSYMBOL_comment = 80, /* comment */ + YYSYMBOL_comment_stmt = 81, /* comment_stmt */ + YYSYMBOL_comment_option_list = 82, /* comment_option_list */ + YYSYMBOL_help_start = 83, /* help_start */ + YYSYMBOL_help = 84, /* help */ + YYSYMBOL_depends = 85, /* depends */ + YYSYMBOL_visible = 86, /* visible */ + YYSYMBOL_prompt_stmt_opt = 87, /* prompt_stmt_opt */ + YYSYMBOL_end = 88, /* end */ + YYSYMBOL_if_expr = 89, /* if_expr */ + YYSYMBOL_expr = 90, /* expr */ + YYSYMBOL_nonconst_symbol = 91, /* nonconst_symbol */ + YYSYMBOL_symbol = 92, /* symbol */ + YYSYMBOL_assignment_stmt = 93, /* assignment_stmt */ + YYSYMBOL_assign_op = 94, /* assign_op */ + YYSYMBOL_assign_val = 95 /* assign_val */ +}; +typedef enum yysymbol_kind_t yysymbol_kind_t; + + + + +#ifdef short +# undef short +#endif + +/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure + and (if available) are included + so that the code can choose integer types of a good width. */ + +#ifndef __PTRDIFF_MAX__ +# include /* INFRINGES ON USER NAME SPACE */ +# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_STDINT_H +# endif +#endif + +/* Narrow types that promote to a signed type and that can represent a + signed or unsigned integer of at least N bits. In tables they can + save space and decrease cache pressure. Promoting to a signed type + helps avoid bugs in integer arithmetic. */ + +#ifdef __INT_LEAST8_MAX__ +typedef __INT_LEAST8_TYPE__ yytype_int8; +#elif defined YY_STDINT_H +typedef int_least8_t yytype_int8; +#else +typedef signed char yytype_int8; +#endif + +#ifdef __INT_LEAST16_MAX__ +typedef __INT_LEAST16_TYPE__ yytype_int16; +#elif defined YY_STDINT_H +typedef int_least16_t yytype_int16; +#else +typedef short yytype_int16; +#endif + +/* Work around bug in HP-UX 11.23, which defines these macros + incorrectly for preprocessor constants. This workaround can likely + be removed in 2023, as HPE has promised support for HP-UX 11.23 + (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of + . */ +#ifdef __hpux +# undef UINT_LEAST8_MAX +# undef UINT_LEAST16_MAX +# define UINT_LEAST8_MAX 255 +# define UINT_LEAST16_MAX 65535 +#endif + +#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST8_TYPE__ yytype_uint8; +#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST8_MAX <= INT_MAX) +typedef uint_least8_t yytype_uint8; +#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX +typedef unsigned char yytype_uint8; +#else +typedef short yytype_uint8; +#endif + +#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST16_TYPE__ yytype_uint16; +#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST16_MAX <= INT_MAX) +typedef uint_least16_t yytype_uint16; +#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX +typedef unsigned short yytype_uint16; +#else +typedef int yytype_uint16; +#endif + +#ifndef YYPTRDIFF_T +# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ +# define YYPTRDIFF_T __PTRDIFF_TYPE__ +# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ +# elif defined PTRDIFF_MAX +# ifndef ptrdiff_t +# include /* INFRINGES ON USER NAME SPACE */ +# endif +# define YYPTRDIFF_T ptrdiff_t +# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX +# else +# define YYPTRDIFF_T long +# define YYPTRDIFF_MAXIMUM LONG_MAX +# endif +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned +# endif +#endif + +#define YYSIZE_MAXIMUM \ + YY_CAST (YYPTRDIFF_T, \ + (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ + ? YYPTRDIFF_MAXIMUM \ + : YY_CAST (YYSIZE_T, -1))) + +#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) + + +/* Stored state numbers (used for stacks). */ +typedef yytype_uint8 yy_state_t; + +/* State numbers in computations. */ +typedef int yy_state_fast_t; + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(Msgid) dgettext ("bison-runtime", Msgid) +# endif +# endif +# ifndef YY_ +# define YY_(Msgid) Msgid +# endif +#endif + + +#ifndef YY_ATTRIBUTE_PURE +# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define YY_ATTRIBUTE_PURE +# endif +#endif + +#ifndef YY_ATTRIBUTE_UNUSED +# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# else +# define YY_ATTRIBUTE_UNUSED +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YY_USE(E) ((void) (E)) +#else +# define YY_USE(E) /* empty */ +#endif + +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__ +# if __GNUC__ * 100 + __GNUC_MINOR__ < 407 +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") +# else +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# endif +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") +#else +# define YY_INITIAL_VALUE(Value) Value +#endif +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#endif + +#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ +# define YY_IGNORE_USELESS_CAST_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") +# define YY_IGNORE_USELESS_CAST_END \ + _Pragma ("GCC diagnostic pop") +#endif +#ifndef YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_END +#endif + + +#define YY_ASSERT(E) ((void) (0 && (E))) + +#if !defined yyoverflow + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS +# include /* INFRINGES ON USER NAME SPACE */ + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined EXIT_SUCCESS \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined EXIT_SUCCESS +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined EXIT_SUCCESS +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* !defined yyoverflow */ + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yy_state_t yyss_alloc; + YYSTYPE yyvs_alloc; +}; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +# define YYCOPY_NEEDED 1 + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYPTRDIFF_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / YYSIZEOF (*yyptr); \ + } \ + while (0) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYPTRDIFF_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (0) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 6 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 189 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 50 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 46 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 100 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 177 + +/* YYMAXUTOK -- Last valid token kind. */ +#define YYMAXUTOK 304 + + +/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, with out-of-bounds checking. */ +#define YYTRANSLATE(YYX) \ + (0 <= (YYX) && (YYX) <= YYMAXUTOK \ + ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ + : YYSYMBOL_YYUNDEF) + +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex. */ +static const yytype_int8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49 +}; + +#if YYDEBUG +/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +static const yytype_int16 yyrline[] = +{ + 0, 108, 108, 108, 112, 117, 119, 120, 121, 122, + 123, 127, 128, 129, 130, 131, 132, 137, 144, 149, + 156, 165, 167, 168, 169, 172, 178, 184, 193, 199, + 205, 211, 221, 230, 241, 249, 252, 254, 255, 256, + 259, 265, 271, 277, 284, 285, 286, 287, 290, 291, + 294, 295, 296, 298, 300, 305, 313, 321, 326, 333, + 338, 346, 349, 351, 352, 355, 364, 371, 374, 376, + 381, 387, 405, 412, 419, 421, 426, 427, 428, 431, + 432, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 449, 451, 452, 457, 460, 461, 462, 466, + 467 +}; +#endif + +/** Accessing symbol of state STATE. */ +#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) + +#if YYDEBUG || 0 +/* The user-facing name of the symbol whose (internal) number is + YYSYMBOL. No bounds checking. */ +static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; + +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "\"end of file\"", "error", "\"invalid token\"", "T_HELPTEXT", "T_WORD", + "T_WORD_QUOTE", "T_BOOL", "T_CHOICE", "T_CLOSE_PAREN", "T_COLON_EQUAL", + "T_COMMENT", "T_CONFIG", "T_DEFAULT", "T_DEF_BOOL", "T_DEF_TRISTATE", + "T_DEPENDS", "T_ENDCHOICE", "T_ENDIF", "T_ENDMENU", "T_HELP", "T_HEX", + "T_IF", "T_IMPLY", "T_INT", "T_MAINMENU", "T_MENU", "T_MENUCONFIG", + "T_MODULES", "T_ON", "T_OPEN_PAREN", "T_OPTIONAL", "T_PLUS_EQUAL", + "T_PROMPT", "T_RANGE", "T_SELECT", "T_SOURCE", "T_STRING", "T_TRISTATE", + "T_VISIBLE", "T_EOL", "T_ASSIGN_VAL", "T_OR", "T_AND", "T_EQUAL", + "T_UNEQUAL", "T_LESS", "T_LESS_EQUAL", "T_GREATER", "T_GREATER_EQUAL", + "T_NOT", "$accept", "input", "mainmenu_stmt", "stmt_list", "common_stmt", + "config_entry_start", "config_stmt", "menuconfig_entry_start", + "menuconfig_stmt", "config_option_list", "config_option", "choice", + "choice_entry", "choice_end", "choice_stmt", "choice_option_list", + "choice_option", "type", "logic_type", "default", "choice_block", + "if_entry", "if_end", "if_stmt", "menu", "menu_entry", "menu_end", + "menu_stmt", "menu_option_list", "source_stmt", "comment", + "comment_stmt", "comment_option_list", "help_start", "help", "depends", + "visible", "prompt_stmt_opt", "end", "if_expr", "expr", + "nonconst_symbol", "symbol", "assignment_stmt", "assign_op", + "assign_val", YY_NULLPTR +}; + +static const char * +yysymbol_name (yysymbol_kind_t yysymbol) +{ + return yytname[yysymbol]; +} +#endif + +#define YYPACT_NINF (-67) + +#define yypact_value_is_default(Yyn) \ + ((Yyn) == YYPACT_NINF) + +#define YYTABLE_NINF (-4) + +#define yytable_value_is_error(Yyn) \ + 0 + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +static const yytype_int16 yypact[] = +{ + 15, 13, 29, -67, 30, 19, -67, 59, 22, 11, + 23, 52, 60, -1, 62, 60, 63, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, 32, -67, -67, -67, + 37, -67, 33, -67, 47, -67, -1, -1, 34, -67, + 141, 48, 49, 53, 111, 111, 84, 142, 94, 6, + 94, 76, -67, -67, 58, -67, -67, 5, -67, -67, + -1, -1, 18, 18, 18, 18, 18, 18, -67, -67, + -67, -67, -67, -67, -67, 72, 67, -67, 60, -67, + 69, 97, 18, 60, -67, -67, -67, 104, -67, -1, + 110, -67, -67, 60, 79, 117, -67, 104, -67, -67, + 7, 88, 89, 93, -67, -67, -67, -67, -67, 114, + -67, -67, -67, -67, -67, -67, -67, 95, -67, -67, + -67, -67, -67, -67, -67, -1, -67, 114, -67, 114, + 18, 114, 114, 100, -6, -67, 114, -67, 114, 101, + -67, -67, -67, -1, 102, 40, 103, 112, 114, 115, + -67, -67, 116, 118, 122, -67, -9, -67, -67, -67, + -67, 126, -67, -67, -67, -67, -67 +}; + +/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ +static const yytype_int8 yydefact[] = +{ + 5, 0, 0, 5, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 6, 21, 13, + 21, 14, 36, 53, 7, 5, 11, 62, 5, 8, + 15, 68, 12, 16, 4, 10, 0, 97, 98, 96, + 99, 32, 0, 92, 0, 94, 0, 0, 0, 93, + 81, 0, 0, 0, 18, 20, 33, 0, 0, 59, + 0, 67, 9, 100, 0, 66, 17, 0, 89, 55, + 0, 0, 0, 0, 0, 0, 0, 0, 58, 19, + 65, 48, 50, 51, 52, 0, 0, 46, 0, 45, + 0, 0, 0, 0, 47, 49, 22, 74, 44, 0, + 0, 24, 23, 0, 0, 0, 37, 74, 39, 38, + 0, 0, 0, 0, 54, 35, 34, 57, 56, 79, + 64, 63, 61, 60, 69, 95, 88, 90, 91, 86, + 87, 82, 83, 84, 85, 0, 70, 79, 31, 79, + 0, 79, 79, 0, 79, 71, 79, 42, 79, 0, + 77, 78, 76, 0, 0, 0, 0, 0, 79, 0, + 75, 25, 0, 0, 0, 41, 80, 73, 72, 29, + 26, 0, 28, 27, 43, 40, 30 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -67, -67, -67, 24, 92, -67, -67, -67, -67, 130, + -67, -67, -67, -67, -67, -67, -67, -67, 80, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, 119, -42, -67, 65, -15, 25, + -46, -10, -66, -67, -67, -67 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_uint8 yydefgoto[] = +{ + 0, 2, 3, 4, 17, 18, 19, 20, 21, 54, + 96, 22, 23, 115, 24, 56, 106, 97, 98, 99, + 57, 25, 117, 26, 27, 28, 122, 29, 59, 30, + 31, 32, 61, 100, 101, 102, 121, 143, 116, 154, + 48, 49, 50, 33, 40, 64 +}; + +/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ +static const yytype_int16 yytable[] = +{ + 67, 68, 44, 43, 45, 52, 129, 130, 131, 132, + 133, 134, 36, 126, 109, 153, 37, 120, 5, 124, + 37, 85, 43, 45, 127, 128, 140, 7, 46, 6, + -3, 8, 70, 71, 9, 70, 71, 10, 38, 1, + 11, 12, 38, 118, 119, 123, 70, 71, 47, 58, + 39, 13, 60, 144, 39, 14, 15, 42, 34, -2, + 8, 35, 41, 9, 43, 16, 10, 51, 53, 11, + 12, 62, 65, 69, 158, 70, 71, 63, 137, 168, + 13, 70, 71, 141, 14, 15, 66, 78, 79, 155, + 81, 85, 80, 146, 16, 8, 103, 125, 9, 85, + 135, 10, 139, 86, 11, 12, 136, 166, 138, 142, + 111, 112, 113, 145, 104, 13, 105, 81, 147, 14, + 15, 95, 148, 82, 83, 84, 85, 150, 151, 16, + 86, 87, 152, 88, 89, 153, 107, 71, 90, 161, + 165, 167, 169, 91, 92, 93, 110, 94, 95, 114, + 55, 170, 11, 12, 172, 173, 0, 174, 111, 112, + 113, 175, 156, 13, 157, 176, 159, 160, 15, 162, + 0, 163, 149, 164, 0, 108, 0, 16, 0, 0, + 0, 0, 0, 171, 72, 73, 74, 75, 76, 77 +}; + +static const yytype_int16 yycheck[] = +{ + 46, 47, 12, 4, 5, 15, 72, 73, 74, 75, + 76, 77, 1, 8, 56, 21, 9, 59, 5, 61, + 9, 15, 4, 5, 70, 71, 92, 3, 29, 0, + 0, 1, 41, 42, 4, 41, 42, 7, 31, 24, + 10, 11, 31, 58, 38, 60, 41, 42, 49, 25, + 43, 21, 28, 99, 43, 25, 26, 5, 39, 0, + 1, 39, 39, 4, 4, 35, 7, 5, 5, 10, + 11, 39, 39, 39, 140, 41, 42, 40, 88, 39, + 21, 41, 42, 93, 25, 26, 39, 39, 39, 135, + 6, 15, 39, 103, 35, 1, 12, 39, 4, 15, + 28, 7, 5, 19, 10, 11, 39, 153, 39, 5, + 16, 17, 18, 3, 30, 21, 32, 6, 39, 25, + 26, 37, 5, 12, 13, 14, 15, 39, 39, 35, + 19, 20, 39, 22, 23, 21, 56, 42, 27, 39, + 39, 39, 39, 32, 33, 34, 4, 36, 37, 57, + 20, 39, 10, 11, 39, 39, -1, 39, 16, 17, + 18, 39, 137, 21, 139, 39, 141, 142, 26, 144, + -1, 146, 107, 148, -1, 56, -1, 35, -1, -1, + -1, -1, -1, 158, 43, 44, 45, 46, 47, 48 +}; + +/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of + state STATE-NUM. */ +static const yytype_int8 yystos[] = +{ + 0, 24, 51, 52, 53, 5, 0, 53, 1, 4, + 7, 10, 11, 21, 25, 26, 35, 54, 55, 56, + 57, 58, 61, 62, 64, 71, 73, 74, 75, 77, + 79, 80, 81, 93, 39, 39, 1, 9, 31, 43, + 94, 39, 5, 4, 91, 5, 29, 49, 90, 91, + 92, 5, 91, 5, 59, 59, 65, 70, 53, 78, + 53, 82, 39, 40, 95, 39, 39, 90, 90, 39, + 41, 42, 43, 44, 45, 46, 47, 48, 39, 39, + 39, 6, 12, 13, 14, 15, 19, 20, 22, 23, + 27, 32, 33, 34, 36, 37, 60, 67, 68, 69, + 83, 84, 85, 12, 30, 32, 66, 68, 84, 85, + 4, 16, 17, 18, 54, 63, 88, 72, 88, 38, + 85, 86, 76, 88, 85, 39, 8, 90, 90, 92, + 92, 92, 92, 92, 92, 28, 39, 91, 39, 5, + 92, 91, 5, 87, 90, 3, 91, 39, 5, 87, + 39, 39, 39, 21, 89, 90, 89, 89, 92, 89, + 89, 39, 89, 89, 89, 39, 90, 39, 39, 39, + 39, 89, 39, 39, 39, 39, 39 +}; + +/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ +static const yytype_int8 yyr1[] = +{ + 0, 50, 51, 51, 52, 53, 53, 53, 53, 53, + 53, 54, 54, 54, 54, 54, 54, 55, 56, 57, + 58, 59, 59, 59, 59, 60, 60, 60, 60, 60, + 60, 60, 61, 62, 63, 64, 65, 65, 65, 65, + 66, 66, 66, 66, 67, 67, 67, 67, 68, 68, + 69, 69, 69, 70, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 78, 78, 79, 80, 81, 82, 82, + 83, 84, 85, 86, 87, 87, 88, 88, 88, 89, + 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 91, 92, 92, 93, 94, 94, 94, 95, + 95 +}; + +/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ +static const yytype_int8 yyr2[] = +{ + 0, 2, 2, 1, 3, 0, 2, 2, 2, 4, + 3, 1, 1, 1, 1, 1, 1, 3, 2, 3, + 2, 0, 2, 2, 2, 3, 4, 4, 4, 4, + 5, 2, 2, 2, 1, 3, 0, 2, 2, 2, + 4, 3, 2, 4, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 2, 3, 1, 3, 3, 2, + 1, 3, 0, 2, 2, 3, 3, 2, 0, 2, + 2, 2, 4, 3, 0, 2, 2, 2, 2, 0, + 2, 1, 3, 3, 3, 3, 3, 3, 3, 2, + 3, 3, 1, 1, 1, 4, 1, 1, 1, 0, + 1 +}; + + +enum { YYENOMEM = -2 }; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab +#define YYNOMEM goto yyexhaustedlab + + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ + do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ + while (0) + +/* Backward compatibility with an undocumented macro. + Use YYerror or YYUNDEF. */ +#define YYERRCODE YYUNDEF + + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) + + + + +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Kind, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) + + +/*-----------------------------------. +| Print this symbol's value on YYO. | +`-----------------------------------*/ + +static void +yy_symbol_value_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) +{ + FILE *yyoutput = yyo; + YY_USE (yyoutput); + if (!yyvaluep) + return; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YY_USE (yykind); + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + +/*---------------------------. +| Print this symbol on YYO. | +`---------------------------*/ + +static void +yy_symbol_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) +{ + YYFPRINTF (yyo, "%s %s (", + yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); + + yy_symbol_value_print (yyo, yykind, yyvaluep); + YYFPRINTF (yyo, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +static void +yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +static void +yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, + int yyrule) +{ + int yylno = yyrline[yyrule]; + int yynrhs = yyr2[yyrule]; + int yyi; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, + YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), + &yyvsp[(yyi + 1) - (yynrhs)]); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule); \ +} while (0) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) ((void) 0) +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + + + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +static void +yydestruct (const char *yymsg, + yysymbol_kind_t yykind, YYSTYPE *yyvaluep) +{ + YY_USE (yyvaluep); + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + switch (yykind) + { + case YYSYMBOL_choice_entry: /* choice_entry */ + { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + ((*yyvaluep).menu)->filename, ((*yyvaluep).menu)->lineno); + if (current_menu == ((*yyvaluep).menu)) + menu_end_menu(); +} + break; + + case YYSYMBOL_if_entry: /* if_entry */ + { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + ((*yyvaluep).menu)->filename, ((*yyvaluep).menu)->lineno); + if (current_menu == ((*yyvaluep).menu)) + menu_end_menu(); +} + break; + + case YYSYMBOL_menu_entry: /* menu_entry */ + { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + ((*yyvaluep).menu)->filename, ((*yyvaluep).menu)->lineno); + if (current_menu == ((*yyvaluep).menu)) + menu_end_menu(); +} + break; + + default: + break; + } + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + +/* Lookahead token kind. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; +/* Number of syntax errors so far. */ +int yynerrs; + + + + +/*----------. +| yyparse. | +`----------*/ + +int +yyparse (void) +{ + yy_state_fast_t yystate = 0; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus = 0; + + /* Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* Their size. */ + YYPTRDIFF_T yystacksize = YYINITDEPTH; + + /* The state stack: array, bottom, top. */ + yy_state_t yyssa[YYINITDEPTH]; + yy_state_t *yyss = yyssa; + yy_state_t *yyssp = yyss; + + /* The semantic value stack: array, bottom, top. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp = yyvs; + + int yyn; + /* The return value of yyparse. */ + int yyresult; + /* Lookahead symbol kind. */ + yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yychar = YYEMPTY; /* Cause a token to be read. */ + + goto yysetstate; + + +/*------------------------------------------------------------. +| yynewstate -- push a new state, which is found in yystate. | +`------------------------------------------------------------*/ +yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + +/*--------------------------------------------------------------------. +| yysetstate -- set current state (the top of the stack) to yystate. | +`--------------------------------------------------------------------*/ +yysetstate: + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + YY_ASSERT (0 <= yystate && yystate < YYNSTATES); + YY_IGNORE_USELESS_CAST_BEGIN + *yyssp = YY_CAST (yy_state_t, yystate); + YY_IGNORE_USELESS_CAST_END + YY_STACK_PRINT (yyss, yyssp); + + if (yyss + yystacksize - 1 <= yyssp) +#if !defined yyoverflow && !defined YYSTACK_RELOCATE + YYNOMEM; +#else + { + /* Get the current used size of the three stacks, in elements. */ + YYPTRDIFF_T yysize = yyssp - yyss + 1; + +# if defined yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + yy_state_t *yyss1 = yyss; + YYSTYPE *yyvs1 = yyvs; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * YYSIZEOF (*yyssp), + &yyvs1, yysize * YYSIZEOF (*yyvsp), + &yystacksize); + yyss = yyss1; + yyvs = yyvs1; + } +# else /* defined YYSTACK_RELOCATE */ + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + YYNOMEM; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yy_state_t *yyss1 = yyss; + union yyalloc *yyptr = + YY_CAST (union yyalloc *, + YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); + if (! yyptr) + YYNOMEM; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + YY_IGNORE_USELESS_CAST_BEGIN + YYDPRINTF ((stderr, "Stack size increased to %ld\n", + YY_CAST (long, yystacksize))); + YY_IGNORE_USELESS_CAST_END + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } +#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ + + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token\n")); + yychar = yylex (); + } + + if (yychar <= YYEOF) + { + yychar = YYEOF; + yytoken = YYSYMBOL_YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else if (yychar == YYerror) + { + /* The scanner already issued an error message, process directly + to error recovery. But do not keep the error token as + lookahead, it is too special and may lead us to an endless + loop in error recovery. */ + yychar = YYUNDEF; + yytoken = YYSYMBOL_YYerror; + goto yyerrlab1; + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + /* Discard the shifted token. */ + yychar = YYEMPTY; + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + '$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 4: /* mainmenu_stmt: T_MAINMENU T_WORD_QUOTE T_EOL */ +{ + menu_add_prompt(P_MENU, (yyvsp[-1].string), NULL); +} + break; + + case 9: /* stmt_list: stmt_list T_WORD error T_EOL */ + { zconf_error("unknown statement \"%s\"", (yyvsp[-2].string)); } + break; + + case 10: /* stmt_list: stmt_list error T_EOL */ + { zconf_error("invalid statement"); } + break; + + case 17: /* config_entry_start: T_CONFIG nonconst_symbol T_EOL */ +{ + (yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL; + menu_add_entry((yyvsp[-1].symbol)); + printd(DEBUG_PARSE, "%s:%d:config %s\n", cur_filename, cur_lineno, (yyvsp[-1].symbol)->name); +} + break; + + case 18: /* config_stmt: config_entry_start config_option_list */ +{ + printd(DEBUG_PARSE, "%s:%d:endconfig\n", cur_filename, cur_lineno); +} + break; + + case 19: /* menuconfig_entry_start: T_MENUCONFIG nonconst_symbol T_EOL */ +{ + (yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL; + menu_add_entry((yyvsp[-1].symbol)); + printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", cur_filename, cur_lineno, (yyvsp[-1].symbol)->name); +} + break; + + case 20: /* menuconfig_stmt: menuconfig_entry_start config_option_list */ +{ + if (current_entry->prompt) + current_entry->prompt->type = P_MENU; + else + zconfprint("warning: menuconfig statement without prompt"); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", cur_filename, cur_lineno); +} + break; + + case 25: /* config_option: type prompt_stmt_opt T_EOL */ +{ + menu_set_type((yyvsp[-2].type)); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", cur_filename, cur_lineno, (yyvsp[-2].type)); +} + break; + + case 26: /* config_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL */ +{ + menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:prompt\n", cur_filename, cur_lineno); +} + break; + + case 27: /* config_option: default expr if_expr T_EOL */ +{ + menu_add_expr(P_DEFAULT, (yyvsp[-2].expr), (yyvsp[-1].expr)); + if ((yyvsp[-3].type) != S_UNKNOWN) + menu_set_type((yyvsp[-3].type)); + printd(DEBUG_PARSE, "%s:%d:default(%u)\n", cur_filename, cur_lineno, + (yyvsp[-3].type)); +} + break; + + case 28: /* config_option: T_SELECT nonconst_symbol if_expr T_EOL */ +{ + menu_add_symbol(P_SELECT, (yyvsp[-2].symbol), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:select\n", cur_filename, cur_lineno); +} + break; + + case 29: /* config_option: T_IMPLY nonconst_symbol if_expr T_EOL */ +{ + menu_add_symbol(P_IMPLY, (yyvsp[-2].symbol), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:imply\n", cur_filename, cur_lineno); +} + break; + + case 30: /* config_option: T_RANGE symbol symbol if_expr T_EOL */ +{ + menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[-3].symbol), (yyvsp[-2].symbol)), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:range\n", cur_filename, cur_lineno); +} + break; + + case 31: /* config_option: T_MODULES T_EOL */ +{ + if (modules_sym) + zconf_error("symbol '%s' redefines option 'modules' already defined by symbol '%s'", + current_entry->sym->name, modules_sym->name); + modules_sym = current_entry->sym; +} + break; + + case 32: /* choice: T_CHOICE T_EOL */ +{ + struct symbol *sym = sym_lookup(NULL, SYMBOL_CHOICE); + sym->flags |= SYMBOL_NO_WRITE; + menu_add_entry(sym); + menu_add_expr(P_CHOICE, NULL, NULL); + printd(DEBUG_PARSE, "%s:%d:choice\n", cur_filename, cur_lineno); +} + break; + + case 33: /* choice_entry: choice choice_option_list */ +{ + if (!current_entry->prompt) { + fprintf(stderr, "%s:%d: error: choice must have a prompt\n", + current_entry->filename, current_entry->lineno); + yynerrs++; + } + + (yyval.menu) = menu_add_menu(); +} + break; + + case 34: /* choice_end: end */ +{ + if (zconf_endtoken((yyvsp[0].string), "choice")) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endchoice\n", cur_filename, cur_lineno); + } +} + break; + + case 40: /* choice_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL */ +{ + menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:prompt\n", cur_filename, cur_lineno); +} + break; + + case 41: /* choice_option: logic_type prompt_stmt_opt T_EOL */ +{ + menu_set_type((yyvsp[-2].type)); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", cur_filename, cur_lineno, (yyvsp[-2].type)); +} + break; + + case 42: /* choice_option: T_OPTIONAL T_EOL */ +{ + current_entry->sym->flags |= SYMBOL_OPTIONAL; + printd(DEBUG_PARSE, "%s:%d:optional\n", cur_filename, cur_lineno); +} + break; + + case 43: /* choice_option: T_DEFAULT nonconst_symbol if_expr T_EOL */ +{ + menu_add_symbol(P_DEFAULT, (yyvsp[-2].symbol), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:default\n", cur_filename, cur_lineno); +} + break; + + case 45: /* type: T_INT */ + { (yyval.type) = S_INT; } + break; + + case 46: /* type: T_HEX */ + { (yyval.type) = S_HEX; } + break; + + case 47: /* type: T_STRING */ + { (yyval.type) = S_STRING; } + break; + + case 48: /* logic_type: T_BOOL */ + { (yyval.type) = S_BOOLEAN; } + break; + + case 49: /* logic_type: T_TRISTATE */ + { (yyval.type) = S_TRISTATE; } + break; + + case 50: /* default: T_DEFAULT */ + { (yyval.type) = S_UNKNOWN; } + break; + + case 51: /* default: T_DEF_BOOL */ + { (yyval.type) = S_BOOLEAN; } + break; + + case 52: /* default: T_DEF_TRISTATE */ + { (yyval.type) = S_TRISTATE; } + break; + + case 55: /* if_entry: T_IF expr T_EOL */ +{ + printd(DEBUG_PARSE, "%s:%d:if\n", cur_filename, cur_lineno); + menu_add_entry(NULL); + menu_add_dep((yyvsp[-1].expr)); + (yyval.menu) = menu_add_menu(); +} + break; + + case 56: /* if_end: end */ +{ + if (zconf_endtoken((yyvsp[0].string), "if")) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endif\n", cur_filename, cur_lineno); + } +} + break; + + case 58: /* menu: T_MENU T_WORD_QUOTE T_EOL */ +{ + menu_add_entry(NULL); + menu_add_prompt(P_MENU, (yyvsp[-1].string), NULL); + printd(DEBUG_PARSE, "%s:%d:menu\n", cur_filename, cur_lineno); +} + break; + + case 59: /* menu_entry: menu menu_option_list */ +{ + (yyval.menu) = menu_add_menu(); +} + break; + + case 60: /* menu_end: end */ +{ + if (zconf_endtoken((yyvsp[0].string), "menu")) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endmenu\n", cur_filename, cur_lineno); + } +} + break; + + case 65: /* source_stmt: T_SOURCE T_WORD_QUOTE T_EOL */ +{ + printd(DEBUG_PARSE, "%s:%d:source %s\n", cur_filename, cur_lineno, (yyvsp[-1].string)); + zconf_nextfile((yyvsp[-1].string)); + free((yyvsp[-1].string)); +} + break; + + case 66: /* comment: T_COMMENT T_WORD_QUOTE T_EOL */ +{ + menu_add_entry(NULL); + menu_add_prompt(P_COMMENT, (yyvsp[-1].string), NULL); + printd(DEBUG_PARSE, "%s:%d:comment\n", cur_filename, cur_lineno); +} + break; + + case 70: /* help_start: T_HELP T_EOL */ +{ + printd(DEBUG_PARSE, "%s:%d:help\n", cur_filename, cur_lineno); + zconf_starthelp(); +} + break; + + case 71: /* help: help_start T_HELPTEXT */ +{ + if (current_entry->help) { + free(current_entry->help); + zconfprint("warning: '%s' defined with more than one help text -- only the last one will be used", + current_entry->sym->name ?: ""); + } + + /* Is the help text empty or all whitespace? */ + if ((yyvsp[0].string)[strspn((yyvsp[0].string), " \f\n\r\t\v")] == '\0') + zconfprint("warning: '%s' defined with blank help text", + current_entry->sym->name ?: ""); + + current_entry->help = (yyvsp[0].string); +} + break; + + case 72: /* depends: T_DEPENDS T_ON expr T_EOL */ +{ + menu_add_dep((yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:depends on\n", cur_filename, cur_lineno); +} + break; + + case 73: /* visible: T_VISIBLE if_expr T_EOL */ +{ + menu_add_visibility((yyvsp[-1].expr)); +} + break; + + case 75: /* prompt_stmt_opt: T_WORD_QUOTE if_expr */ +{ + menu_add_prompt(P_PROMPT, (yyvsp[-1].string), (yyvsp[0].expr)); +} + break; + + case 76: /* end: T_ENDMENU T_EOL */ + { (yyval.string) = "menu"; } + break; + + case 77: /* end: T_ENDCHOICE T_EOL */ + { (yyval.string) = "choice"; } + break; + + case 78: /* end: T_ENDIF T_EOL */ + { (yyval.string) = "if"; } + break; + + case 79: /* if_expr: %empty */ + { (yyval.expr) = NULL; } + break; + + case 80: /* if_expr: T_IF expr */ + { (yyval.expr) = (yyvsp[0].expr); } + break; + + case 81: /* expr: symbol */ + { (yyval.expr) = expr_alloc_symbol((yyvsp[0].symbol)); } + break; + + case 82: /* expr: symbol T_LESS symbol */ + { (yyval.expr) = expr_alloc_comp(E_LTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + + case 83: /* expr: symbol T_LESS_EQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_LEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + + case 84: /* expr: symbol T_GREATER symbol */ + { (yyval.expr) = expr_alloc_comp(E_GTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + + case 85: /* expr: symbol T_GREATER_EQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_GEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + + case 86: /* expr: symbol T_EQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + + case 87: /* expr: symbol T_UNEQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + + case 88: /* expr: T_OPEN_PAREN expr T_CLOSE_PAREN */ + { (yyval.expr) = (yyvsp[-1].expr); } + break; + + case 89: /* expr: T_NOT expr */ + { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[0].expr)); } + break; + + case 90: /* expr: expr T_OR expr */ + { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[-2].expr), (yyvsp[0].expr)); } + break; + + case 91: /* expr: expr T_AND expr */ + { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); } + break; + + case 92: /* nonconst_symbol: T_WORD */ + { (yyval.symbol) = sym_lookup((yyvsp[0].string), 0); free((yyvsp[0].string)); } + break; + + case 94: /* symbol: T_WORD_QUOTE */ + { (yyval.symbol) = sym_lookup((yyvsp[0].string), SYMBOL_CONST); free((yyvsp[0].string)); } + break; + + case 95: /* assignment_stmt: T_WORD assign_op assign_val T_EOL */ + { variable_add((yyvsp[-3].string), (yyvsp[-1].string), (yyvsp[-2].flavor)); free((yyvsp[-3].string)); free((yyvsp[-1].string)); } + break; + + case 96: /* assign_op: T_EQUAL */ + { (yyval.flavor) = VAR_RECURSIVE; } + break; + + case 97: /* assign_op: T_COLON_EQUAL */ + { (yyval.flavor) = VAR_SIMPLE; } + break; + + case 98: /* assign_op: T_PLUS_EQUAL */ + { (yyval.flavor) = VAR_APPEND; } + break; + + case 99: /* assign_val: %empty */ + { (yyval.string) = xstrdup(""); } + break; + + + + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + + *++yyvsp = yyval; + + /* Now 'shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + { + const int yylhs = yyr1[yyn] - YYNTOKENS; + const int yyi = yypgoto[yylhs] + *yyssp; + yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp + ? yytable[yyi] + : yydefgoto[yylhs]); + } + + goto yynewstate; + + +/*--------------------------------------. +| yyerrlab -- here on detecting error. | +`--------------------------------------*/ +yyerrlab: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; + yyerror (YY_("syntax error")); + } + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse lookahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + /* Pacify compilers when the user code never invokes YYERROR and the + label yyerrorlab therefore never appears in user code. */ + if (0) + YYERROR; + ++yynerrs; + + /* Do not reclaim the symbols of the rule whose action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + /* Pop stack until we find a state that shifts the error token. */ + for (;;) + { + yyn = yypact[yystate]; + if (!yypact_value_is_default (yyn)) + { + yyn += YYSYMBOL_YYerror; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + YY_ACCESSING_SYMBOL (yystate), yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturnlab; + + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturnlab; + + +/*-----------------------------------------------------------. +| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. | +`-----------------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + goto yyreturnlab; + + +/*----------------------------------------------------------. +| yyreturnlab -- parsing is finished, clean up and return. | +`----------------------------------------------------------*/ +yyreturnlab: + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } + /* Do not reclaim the symbols of the rule whose action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + YY_ACCESSING_SYMBOL (+*yyssp), yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif + + return yyresult; +} + + + +void conf_parse(const char *name) +{ + struct menu *menu; + + autoconf_cmd = str_new(); + + str_printf(&autoconf_cmd, "\ndeps_config := \\\n"); + + zconf_initscan(name); + + _menu_init(); + + if (getenv("ZCONF_DEBUG")) + yydebug = 1; + yyparse(); + + /* + * FIXME: + * cur_filename and cur_lineno are used even after yyparse(); + * menu_finalize() calls menu_add_symbol(). This should be fixed. + */ + cur_filename = ""; + cur_lineno = 0; + + str_printf(&autoconf_cmd, + "\n" + "$(autoconfig): $(deps_config)\n" + "$(deps_config): ;\n"); + + env_write_dep(&autoconf_cmd); + + /* Variables are expanded in the parse phase. We can free them here. */ + variable_all_del(); + + if (yynerrs) + exit(1); + if (!modules_sym) + modules_sym = &symbol_no; + + if (!menu_has_prompt(&rootmenu)) { + current_entry = &rootmenu; + menu_add_prompt(P_MENU, "Main menu", NULL); + } + + menu_finalize(); + + menu = &rootmenu; + while (menu) { + if (menu->sym && sym_check_deps(menu->sym)) + yynerrs++; + + if (menu->list) { + menu = menu->list; + continue; + } + + while (!menu->next && menu->parent) + menu = menu->parent; + + menu = menu->next; + } + + if (yynerrs) + exit(1); + conf_set_changed(true); +} + +static bool zconf_endtoken(const char *tokenname, + const char *expected_tokenname) +{ + if (strcmp(tokenname, expected_tokenname)) { + zconf_error("unexpected '%s' within %s block", + tokenname, expected_tokenname); + yynerrs++; + return false; + } + if (strcmp(current_menu->filename, cur_filename)) { + zconf_error("'%s' in different file than '%s'", + tokenname, expected_tokenname); + fprintf(stderr, "%s:%d: location of the '%s'\n", + current_menu->filename, current_menu->lineno, + expected_tokenname); + yynerrs++; + return false; + } + return true; +} + +static void zconfprint(const char *err, ...) +{ + va_list ap; + + fprintf(stderr, "%s:%d: ", cur_filename, cur_lineno); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void zconf_error(const char *err, ...) +{ + va_list ap; + + yynerrs++; + fprintf(stderr, "%s:%d: ", cur_filename, cur_lineno); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void yyerror(const char *err) +{ + fprintf(stderr, "%s:%d: %s\n", cur_filename, cur_lineno, err); +} + +static void print_quoted_string(FILE *out, const char *str) +{ + const char *p; + int len; + + putc('"', out); + while ((p = strchr(str, '"'))) { + len = p - str; + if (len) + fprintf(out, "%.*s", len, str); + fputs("\\\"", out); + str = p + 1; + } + fputs(str, out); + putc('"', out); +} + +static void print_symbol(FILE *out, struct menu *menu) +{ + struct symbol *sym = menu->sym; + struct property *prop; + + if (sym_is_choice(sym)) + fprintf(out, "\nchoice\n"); + else + fprintf(out, "\nconfig %s\n", sym->name); + switch (sym->type) { + case S_BOOLEAN: + fputs(" bool\n", out); + break; + case S_TRISTATE: + fputs(" tristate\n", out); + break; + case S_STRING: + fputs(" string\n", out); + break; + case S_INT: + fputs(" integer\n", out); + break; + case S_HEX: + fputs(" hex\n", out); + break; + default: + fputs(" ???\n", out); + break; + } + for (prop = sym->prop; prop; prop = prop->next) { + if (prop->menu != menu) + continue; + switch (prop->type) { + case P_PROMPT: + fputs(" prompt ", out); + print_quoted_string(out, prop->text); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_DEFAULT: + fputs( " default ", out); + expr_fprint(prop->expr, out); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_CHOICE: + fputs(" #choice value\n", out); + break; + case P_SELECT: + fputs( " select ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_IMPLY: + fputs( " imply ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_RANGE: + fputs( " range ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_MENU: + fputs( " menu ", out); + print_quoted_string(out, prop->text); + fputc('\n', out); + break; + case P_SYMBOL: + fputs( " symbol ", out); + fprintf(out, "%s\n", prop->menu->sym->name); + break; + default: + fprintf(out, " unknown prop %d!\n", prop->type); + break; + } + } + if (menu->help) { + int len = strlen(menu->help); + while (menu->help[--len] == '\n') + menu->help[len] = 0; + fprintf(out, " help\n%s\n", menu->help); + } +} + +void zconfdump(FILE *out) +{ + struct property *prop; + struct symbol *sym; + struct menu *menu; + + menu = rootmenu.list; + while (menu) { + if ((sym = menu->sym)) + print_symbol(out, menu); + else if ((prop = menu->prompt)) { + switch (prop->type) { + case P_COMMENT: + fputs("\ncomment ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + case P_MENU: + fputs("\nmenu ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + default: + ; + } + if (!expr_is_yes(prop->visible.expr)) { + fputs(" depends ", out); + expr_fprint(prop->visible.expr, out); + fputc('\n', out); + } + } + + if (menu->list) + menu = menu->list; + else if (menu->next) + menu = menu->next; + else while ((menu = menu->parent)) { + if (menu->prompt && menu->prompt->type == P_MENU) + fputs("\nendmenu\n", out); + if (menu->next) { + menu = menu->next; + break; + } + } + } +} diff --git a/support/kconfig/parser.tab.h_shipped b/support/kconfig/parser.tab.h_shipped new file mode 100644 index 0000000000..6459d79928 --- /dev/null +++ b/support/kconfig/parser.tab.h_shipped @@ -0,0 +1,134 @@ +/* A Bison parser, made by GNU Bison 3.8.2. */ + +/* Bison interface for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, + Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ + +#ifndef YY_YY_SCRIPTS_KCONFIG_PARSER_TAB_H_INCLUDED +# define YY_YY_SCRIPTS_KCONFIG_PARSER_TAB_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 1 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token kinds. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + enum yytokentype + { + YYEMPTY = -2, + YYEOF = 0, /* "end of file" */ + YYerror = 256, /* error */ + YYUNDEF = 257, /* "invalid token" */ + T_HELPTEXT = 258, /* T_HELPTEXT */ + T_WORD = 259, /* T_WORD */ + T_WORD_QUOTE = 260, /* T_WORD_QUOTE */ + T_BOOL = 261, /* T_BOOL */ + T_CHOICE = 262, /* T_CHOICE */ + T_CLOSE_PAREN = 263, /* T_CLOSE_PAREN */ + T_COLON_EQUAL = 264, /* T_COLON_EQUAL */ + T_COMMENT = 265, /* T_COMMENT */ + T_CONFIG = 266, /* T_CONFIG */ + T_DEFAULT = 267, /* T_DEFAULT */ + T_DEF_BOOL = 268, /* T_DEF_BOOL */ + T_DEF_TRISTATE = 269, /* T_DEF_TRISTATE */ + T_DEPENDS = 270, /* T_DEPENDS */ + T_ENDCHOICE = 271, /* T_ENDCHOICE */ + T_ENDIF = 272, /* T_ENDIF */ + T_ENDMENU = 273, /* T_ENDMENU */ + T_HELP = 274, /* T_HELP */ + T_HEX = 275, /* T_HEX */ + T_IF = 276, /* T_IF */ + T_IMPLY = 277, /* T_IMPLY */ + T_INT = 278, /* T_INT */ + T_MAINMENU = 279, /* T_MAINMENU */ + T_MENU = 280, /* T_MENU */ + T_MENUCONFIG = 281, /* T_MENUCONFIG */ + T_MODULES = 282, /* T_MODULES */ + T_ON = 283, /* T_ON */ + T_OPEN_PAREN = 284, /* T_OPEN_PAREN */ + T_OPTIONAL = 285, /* T_OPTIONAL */ + T_PLUS_EQUAL = 286, /* T_PLUS_EQUAL */ + T_PROMPT = 287, /* T_PROMPT */ + T_RANGE = 288, /* T_RANGE */ + T_SELECT = 289, /* T_SELECT */ + T_SOURCE = 290, /* T_SOURCE */ + T_STRING = 291, /* T_STRING */ + T_TRISTATE = 292, /* T_TRISTATE */ + T_VISIBLE = 293, /* T_VISIBLE */ + T_EOL = 294, /* T_EOL */ + T_ASSIGN_VAL = 295, /* T_ASSIGN_VAL */ + T_OR = 296, /* T_OR */ + T_AND = 297, /* T_AND */ + T_EQUAL = 298, /* T_EQUAL */ + T_UNEQUAL = 299, /* T_UNEQUAL */ + T_LESS = 300, /* T_LESS */ + T_LESS_EQUAL = 301, /* T_LESS_EQUAL */ + T_GREATER = 302, /* T_GREATER */ + T_GREATER_EQUAL = 303, /* T_GREATER_EQUAL */ + T_NOT = 304 /* T_NOT */ + }; + typedef enum yytokentype yytoken_kind_t; +#endif + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +union YYSTYPE +{ + + char *string; + struct symbol *symbol; + struct expr *expr; + struct menu *menu; + enum symbol_type type; + enum variable_flavor flavor; + + +}; +typedef union YYSTYPE YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + + +int yyparse (void); + + +#endif /* !YY_YY_SCRIPTS_KCONFIG_PARSER_TAB_H_INCLUDED */ diff --git a/support/kconfig/zconf.y b/support/kconfig/parser.y similarity index 56% rename from support/kconfig/zconf.y rename to support/kconfig/parser.y index 7b34de28a6..9873e84b1b 100644 --- a/support/kconfig/zconf.y +++ b/support/kconfig/parser.y @@ -1,8 +1,8 @@ -%{ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ +%{ #include #include @@ -12,6 +12,8 @@ #include #include "lkc.h" +#include "internal.h" +#include "preprocess.h" #define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) @@ -20,63 +22,64 @@ int cdebug = PRINTD; -int yylex(void); static void yyerror(const char *err); static void zconfprint(const char *err, ...); static void zconf_error(const char *err, ...); -static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken); - -struct symbol *symbol_hash[SYMBOL_HASHSIZE]; +static bool zconf_endtoken(const char *tokenname, + const char *expected_tokenname); -static struct menu *current_menu, *current_entry; +struct menu *current_menu, *current_entry; %} -%expect 32 %union { char *string; - struct file *file; struct symbol *symbol; struct expr *expr; struct menu *menu; - const struct kconf_id *id; + enum symbol_type type; + enum variable_flavor flavor; } -%token T_MAINMENU -%token T_MENU -%token T_ENDMENU -%token T_SOURCE -%token T_CHOICE -%token T_ENDCHOICE -%token T_COMMENT -%token T_CONFIG -%token T_MENUCONFIG -%token T_HELP %token T_HELPTEXT -%token T_IF -%token T_ENDIF -%token T_DEPENDS -%token T_OPTIONAL -%token T_PROMPT -%token T_TYPE -%token T_DEFAULT -%token T_SELECT -%token T_IMPLY -%token T_RANGE -%token T_VISIBLE -%token T_OPTION -%token T_ON %token T_WORD %token T_WORD_QUOTE -%token T_UNEQUAL -%token T_LESS -%token T_LESS_EQUAL -%token T_GREATER -%token T_GREATER_EQUAL +%token T_BOOL +%token T_CHOICE %token T_CLOSE_PAREN +%token T_COLON_EQUAL +%token T_COMMENT +%token T_CONFIG +%token T_DEFAULT +%token T_DEF_BOOL +%token T_DEF_TRISTATE +%token T_DEPENDS +%token T_ENDCHOICE +%token T_ENDIF +%token T_ENDMENU +%token T_HELP +%token T_HEX +%token T_IF +%token T_IMPLY +%token T_INT +%token T_MAINMENU +%token T_MENU +%token T_MENUCONFIG +%token T_MODULES +%token T_ON %token T_OPEN_PAREN +%token T_OPTIONAL +%token T_PLUS_EQUAL +%token T_PROMPT +%token T_RANGE +%token T_SELECT +%token T_SOURCE +%token T_STRING +%token T_TRISTATE +%token T_VISIBLE %token T_EOL +%token T_ASSIGN_VAL %left T_OR %left T_AND @@ -84,105 +87,70 @@ static struct menu *current_menu, *current_entry; %left T_LESS T_LESS_EQUAL T_GREATER T_GREATER_EQUAL %nonassoc T_NOT -%type prompt %type nonconst_symbol %type symbol +%type type logic_type default %type expr %type if_expr -%type end -%type option_name +%type end %type if_entry menu_entry choice_entry -%type symbol_option_arg word_opt +%type assign_val +%type assign_op %destructor { fprintf(stderr, "%s:%d: missing end statement for this entry\n", - $$->file->name, $$->lineno); + $$->filename, $$->lineno); if (current_menu == $$) menu_end_menu(); } if_entry menu_entry choice_entry -%{ -/* Include kconf_id.c here so it can see the token constants. */ -#include "kconf_id.c" -%} - %% -input: nl start | start; - -start: mainmenu_stmt stmt_list | no_mainmenu_stmt stmt_list; +input: mainmenu_stmt stmt_list | stmt_list; /* mainmenu entry */ -mainmenu_stmt: T_MAINMENU prompt nl +mainmenu_stmt: T_MAINMENU T_WORD_QUOTE T_EOL { menu_add_prompt(P_MENU, $2, NULL); }; -/* Default main menu, if there's no mainmenu entry */ - -no_mainmenu_stmt: /* empty */ -{ - /* - * Hack: Keep the main menu title on the heap so we can safely free it - * later regardless of whether it comes from the 'prompt' in - * mainmenu_stmt or here - */ - menu_add_prompt(P_MENU, xstrdup("Buildroot Configuration"), NULL); -}; - - stmt_list: /* empty */ | stmt_list common_stmt | stmt_list choice_stmt | stmt_list menu_stmt - | stmt_list end { zconf_error("unexpected end statement"); } | stmt_list T_WORD error T_EOL { zconf_error("unknown statement \"%s\"", $2); } - | stmt_list option_name error T_EOL -{ - zconf_error("unexpected option \"%s\"", $2->name); -} | stmt_list error T_EOL { zconf_error("invalid statement"); } ; -option_name: - T_DEPENDS | T_PROMPT | T_TYPE | T_SELECT | T_IMPLY | T_OPTIONAL | T_RANGE | T_DEFAULT | T_VISIBLE -; - common_stmt: - T_EOL - | if_stmt + if_stmt | comment_stmt | config_stmt | menuconfig_stmt | source_stmt + | assignment_stmt ; -option_error: - T_WORD error T_EOL { zconf_error("unknown option \"%s\"", $1); } - | error T_EOL { zconf_error("invalid option"); } -; - - /* config/menuconfig entry */ config_entry_start: T_CONFIG nonconst_symbol T_EOL { $2->flags |= SYMBOL_OPTIONAL; menu_add_entry($2); - printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), $2->name); + printd(DEBUG_PARSE, "%s:%d:config %s\n", cur_filename, cur_lineno, $2->name); }; config_stmt: config_entry_start config_option_list { - printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", cur_filename, cur_lineno); }; menuconfig_entry_start: T_MENUCONFIG nonconst_symbol T_EOL { $2->flags |= SYMBOL_OPTIONAL; menu_add_entry($2); - printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), $2->name); + printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", cur_filename, cur_lineno, $2->name); }; menuconfig_stmt: menuconfig_entry_start config_option_list @@ -191,105 +159,90 @@ menuconfig_stmt: menuconfig_entry_start config_option_list current_entry->prompt->type = P_MENU; else zconfprint("warning: menuconfig statement without prompt"); - printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", cur_filename, cur_lineno); }; config_option_list: /* empty */ | config_option_list config_option - | config_option_list symbol_option | config_option_list depends | config_option_list help - | config_option_list option_error - | config_option_list T_EOL ; -config_option: T_TYPE prompt_stmt_opt T_EOL +config_option: type prompt_stmt_opt T_EOL { - menu_set_type($1->stype); - printd(DEBUG_PARSE, "%s:%d:type(%u)\n", - zconf_curname(), zconf_lineno(), - $1->stype); + menu_set_type($1); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", cur_filename, cur_lineno, $1); }; -config_option: T_PROMPT prompt if_expr T_EOL +config_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL { menu_add_prompt(P_PROMPT, $2, $3); - printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:prompt\n", cur_filename, cur_lineno); }; -config_option: T_DEFAULT expr if_expr T_EOL +config_option: default expr if_expr T_EOL { menu_add_expr(P_DEFAULT, $2, $3); - if ($1->stype != S_UNKNOWN) - menu_set_type($1->stype); - printd(DEBUG_PARSE, "%s:%d:default(%u)\n", - zconf_curname(), zconf_lineno(), - $1->stype); + if ($1 != S_UNKNOWN) + menu_set_type($1); + printd(DEBUG_PARSE, "%s:%d:default(%u)\n", cur_filename, cur_lineno, + $1); }; config_option: T_SELECT nonconst_symbol if_expr T_EOL { menu_add_symbol(P_SELECT, $2, $3); - printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:select\n", cur_filename, cur_lineno); }; config_option: T_IMPLY nonconst_symbol if_expr T_EOL { menu_add_symbol(P_IMPLY, $2, $3); - printd(DEBUG_PARSE, "%s:%d:imply\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:imply\n", cur_filename, cur_lineno); }; config_option: T_RANGE symbol symbol if_expr T_EOL { menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,$2, $3), $4); - printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:range\n", cur_filename, cur_lineno); }; -symbol_option: T_OPTION symbol_option_list T_EOL -; - -symbol_option_list: - /* empty */ - | symbol_option_list T_WORD symbol_option_arg +config_option: T_MODULES T_EOL { - const struct kconf_id *id = kconf_id_lookup($2, strlen($2)); - if (id && id->flags & TF_OPTION) { - menu_add_option(id->token, $3); - free($3); - } - else - zconfprint("warning: ignoring unknown option %s", $2); - free($2); + if (modules_sym) + zconf_error("symbol '%s' redefines option 'modules' already defined by symbol '%s'", + current_entry->sym->name, modules_sym->name); + modules_sym = current_entry->sym; }; -symbol_option_arg: - /* empty */ { $$ = NULL; } - | T_EQUAL prompt { $$ = $2; } -; - /* choice entry */ -choice: T_CHOICE word_opt T_EOL +choice: T_CHOICE T_EOL { - struct symbol *sym = sym_lookup($2, SYMBOL_CHOICE); - sym->flags |= SYMBOL_AUTO; + struct symbol *sym = sym_lookup(NULL, SYMBOL_CHOICE); + sym->flags |= SYMBOL_NO_WRITE; menu_add_entry(sym); menu_add_expr(P_CHOICE, NULL, NULL); - free($2); - printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:choice\n", cur_filename, cur_lineno); }; choice_entry: choice choice_option_list { + if (!current_entry->prompt) { + fprintf(stderr, "%s:%d: error: choice must have a prompt\n", + current_entry->filename, current_entry->lineno); + yynerrs++; + } + $$ = menu_add_menu(); }; choice_end: end { - if (zconf_endtoken($1, T_CHOICE, T_ENDCHOICE)) { + if (zconf_endtoken($1, "choice")) { menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:endchoice\n", cur_filename, cur_lineno); } }; @@ -301,43 +254,47 @@ choice_option_list: | choice_option_list choice_option | choice_option_list depends | choice_option_list help - | choice_option_list T_EOL - | choice_option_list option_error ; -choice_option: T_PROMPT prompt if_expr T_EOL +choice_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL { menu_add_prompt(P_PROMPT, $2, $3); - printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:prompt\n", cur_filename, cur_lineno); }; -choice_option: T_TYPE prompt_stmt_opt T_EOL +choice_option: logic_type prompt_stmt_opt T_EOL { - if ($1->stype == S_BOOLEAN || $1->stype == S_TRISTATE) { - menu_set_type($1->stype); - printd(DEBUG_PARSE, "%s:%d:type(%u)\n", - zconf_curname(), zconf_lineno(), - $1->stype); - } else - YYERROR; + menu_set_type($1); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", cur_filename, cur_lineno, $1); }; choice_option: T_OPTIONAL T_EOL { current_entry->sym->flags |= SYMBOL_OPTIONAL; - printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:optional\n", cur_filename, cur_lineno); }; choice_option: T_DEFAULT nonconst_symbol if_expr T_EOL { - if ($1->stype == S_UNKNOWN) { - menu_add_symbol(P_DEFAULT, $2, $3); - printd(DEBUG_PARSE, "%s:%d:default\n", - zconf_curname(), zconf_lineno()); - } else - YYERROR; + menu_add_symbol(P_DEFAULT, $2, $3); + printd(DEBUG_PARSE, "%s:%d:default\n", cur_filename, cur_lineno); }; +type: + logic_type + | T_INT { $$ = S_INT; } + | T_HEX { $$ = S_HEX; } + | T_STRING { $$ = S_STRING; } + +logic_type: + T_BOOL { $$ = S_BOOLEAN; } + | T_TRISTATE { $$ = S_TRISTATE; } + +default: + T_DEFAULT { $$ = S_UNKNOWN; } + | T_DEF_BOOL { $$ = S_BOOLEAN; } + | T_DEF_TRISTATE { $$ = S_TRISTATE; } + choice_block: /* empty */ | choice_block common_stmt @@ -345,9 +302,9 @@ choice_block: /* if entry */ -if_entry: T_IF expr nl +if_entry: T_IF expr T_EOL { - printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:if\n", cur_filename, cur_lineno); menu_add_entry(NULL); menu_add_dep($2); $$ = menu_add_menu(); @@ -355,78 +312,75 @@ if_entry: T_IF expr nl if_end: end { - if (zconf_endtoken($1, T_IF, T_ENDIF)) { + if (zconf_endtoken($1, "if")) { menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:endif\n", cur_filename, cur_lineno); } }; -if_stmt: if_entry if_block if_end -; - -if_block: - /* empty */ - | if_block common_stmt - | if_block menu_stmt - | if_block choice_stmt +if_stmt: if_entry stmt_list if_end ; /* menu entry */ -menu: T_MENU prompt T_EOL +menu: T_MENU T_WORD_QUOTE T_EOL { menu_add_entry(NULL); menu_add_prompt(P_MENU, $2, NULL); - printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:menu\n", cur_filename, cur_lineno); }; -menu_entry: menu visibility_list depends_list +menu_entry: menu menu_option_list { $$ = menu_add_menu(); }; menu_end: end { - if (zconf_endtoken($1, T_MENU, T_ENDMENU)) { + if (zconf_endtoken($1, "menu")) { menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:endmenu\n", cur_filename, cur_lineno); } }; -menu_stmt: menu_entry menu_block menu_end +menu_stmt: menu_entry stmt_list menu_end ; -menu_block: +menu_option_list: /* empty */ - | menu_block common_stmt - | menu_block menu_stmt - | menu_block choice_stmt + | menu_option_list visible + | menu_option_list depends ; -source_stmt: T_SOURCE prompt T_EOL +source_stmt: T_SOURCE T_WORD_QUOTE T_EOL { - printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), $2); + printd(DEBUG_PARSE, "%s:%d:source %s\n", cur_filename, cur_lineno, $2); zconf_nextfile($2); free($2); }; /* comment entry */ -comment: T_COMMENT prompt T_EOL +comment: T_COMMENT T_WORD_QUOTE T_EOL { menu_add_entry(NULL); menu_add_prompt(P_COMMENT, $2, NULL); - printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:comment\n", cur_filename, cur_lineno); }; -comment_stmt: comment depends_list +comment_stmt: comment comment_option_list +; + +comment_option_list: + /* empty */ + | comment_option_list depends ; /* help option */ help_start: T_HELP T_EOL { - printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:help\n", cur_filename, cur_lineno); zconf_starthelp(); }; @@ -448,28 +402,14 @@ help: help_start T_HELPTEXT /* depends option */ -depends_list: - /* empty */ - | depends_list depends - | depends_list T_EOL - | depends_list option_error -; - depends: T_DEPENDS T_ON expr T_EOL { menu_add_dep($3); - printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:depends on\n", cur_filename, cur_lineno); }; /* visibility option */ - -visibility_list: - /* empty */ - | visibility_list visible - | visibility_list T_EOL -; - -visible: T_VISIBLE if_expr +visible: T_VISIBLE if_expr T_EOL { menu_add_visibility($2); }; @@ -478,23 +418,14 @@ visible: T_VISIBLE if_expr prompt_stmt_opt: /* empty */ - | prompt if_expr + | T_WORD_QUOTE if_expr { menu_add_prompt(P_PROMPT, $1, $2); }; -prompt: T_WORD - | T_WORD_QUOTE -; - -end: T_ENDMENU T_EOL { $$ = $1; } - | T_ENDCHOICE T_EOL { $$ = $1; } - | T_ENDIF T_EOL { $$ = $1; } -; - -nl: - T_EOL - | nl T_EOL +end: T_ENDMENU T_EOL { $$ = "menu"; } + | T_ENDCHOICE T_EOL { $$ = "choice"; } + | T_ENDIF T_EOL { $$ = "if"; } ; if_expr: /* empty */ { $$ = NULL; } @@ -521,74 +452,105 @@ symbol: nonconst_symbol | T_WORD_QUOTE { $$ = sym_lookup($1, SYMBOL_CONST); free($1); } ; -word_opt: /* empty */ { $$ = NULL; } - | T_WORD +/* assignment statement */ + +assignment_stmt: T_WORD assign_op assign_val T_EOL { variable_add($1, $3, $2); free($1); free($3); } + +assign_op: + T_EQUAL { $$ = VAR_RECURSIVE; } + | T_COLON_EQUAL { $$ = VAR_SIMPLE; } + | T_PLUS_EQUAL { $$ = VAR_APPEND; } +; + +assign_val: + /* empty */ { $$ = xstrdup(""); }; + | T_ASSIGN_VAL +; %% void conf_parse(const char *name) { - const char *tmp; - struct symbol *sym; - int i; + struct menu *menu; + + autoconf_cmd = str_new(); + + str_printf(&autoconf_cmd, "\ndeps_config := \\\n"); zconf_initscan(name); - sym_init(); _menu_init(); if (getenv("ZCONF_DEBUG")) yydebug = 1; yyparse(); + + /* + * FIXME: + * cur_filename and cur_lineno are used even after yyparse(); + * menu_finalize() calls menu_add_symbol(). This should be fixed. + */ + cur_filename = ""; + cur_lineno = 0; + + str_printf(&autoconf_cmd, + "\n" + "$(autoconfig): $(deps_config)\n" + "$(deps_config): ;\n"); + + env_write_dep(&autoconf_cmd); + + /* Variables are expanded in the parse phase. We can free them here. */ + variable_all_del(); + if (yynerrs) exit(1); if (!modules_sym) - modules_sym = sym_find( "n" ); + modules_sym = &symbol_no; - tmp = rootmenu.prompt->text; - rootmenu.prompt->text = _(rootmenu.prompt->text); - rootmenu.prompt->text = sym_expand_string_value(rootmenu.prompt->text); - free((char*)tmp); + if (!menu_has_prompt(&rootmenu)) { + current_entry = &rootmenu; + menu_add_prompt(P_MENU, "Main menu", NULL); + } + + menu_finalize(); - menu_finalize(&rootmenu); - for_all_symbols(i, sym) { - if (sym_check_deps(sym)) + menu = &rootmenu; + while (menu) { + if (menu->sym && sym_check_deps(menu->sym)) yynerrs++; + + if (menu->list) { + menu = menu->list; + continue; + } + + while (!menu->next && menu->parent) + menu = menu->parent; + + menu = menu->next; } + if (yynerrs) exit(1); - sym_set_change_count(1); + conf_set_changed(true); } -static const char *zconf_tokenname(int token) -{ - switch (token) { - case T_MENU: return "menu"; - case T_ENDMENU: return "endmenu"; - case T_CHOICE: return "choice"; - case T_ENDCHOICE: return "endchoice"; - case T_IF: return "if"; - case T_ENDIF: return "endif"; - case T_DEPENDS: return "depends"; - case T_VISIBLE: return "visible"; - } - return ""; -} - -static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken) +static bool zconf_endtoken(const char *tokenname, + const char *expected_tokenname) { - if (id->token != endtoken) { + if (strcmp(tokenname, expected_tokenname)) { zconf_error("unexpected '%s' within %s block", - id->name, zconf_tokenname(starttoken)); + tokenname, expected_tokenname); yynerrs++; return false; } - if (current_menu->file != current_file) { + if (strcmp(current_menu->filename, cur_filename)) { zconf_error("'%s' in different file than '%s'", - id->name, zconf_tokenname(starttoken)); + tokenname, expected_tokenname); fprintf(stderr, "%s:%d: location of the '%s'\n", - current_menu->file->name, current_menu->lineno, - zconf_tokenname(starttoken)); + current_menu->filename, current_menu->lineno, + expected_tokenname); yynerrs++; return false; } @@ -599,7 +561,7 @@ static void zconfprint(const char *err, ...) { va_list ap; - fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + fprintf(stderr, "%s:%d: ", cur_filename, cur_lineno); va_start(ap, err); vfprintf(stderr, err, ap); va_end(ap); @@ -611,7 +573,7 @@ static void zconf_error(const char *err, ...) va_list ap; yynerrs++; - fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + fprintf(stderr, "%s:%d: ", cur_filename, cur_lineno); va_start(ap, err); vfprintf(stderr, err, ap); va_end(ap); @@ -620,7 +582,7 @@ static void zconf_error(const char *err, ...) static void yyerror(const char *err) { - fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err); + fprintf(stderr, "%s:%d: %s\n", cur_filename, cur_lineno, err); } static void print_quoted_string(FILE *out, const char *str) @@ -714,6 +676,10 @@ static void print_symbol(FILE *out, struct menu *menu) print_quoted_string(out, prop->text); fputc('\n', out); break; + case P_SYMBOL: + fputs( " symbol ", out); + fprintf(out, "%s\n", prop->menu->sym->name); + break; default: fprintf(out, " unknown prop %d!\n", prop->type); break; @@ -773,10 +739,3 @@ void zconfdump(FILE *out) } } } - -#include "zconf.lex.c" -#include "util.c" -#include "confdata.c" -#include "expr.c" -#include "symbol.c" -#include "menu.c" diff --git a/support/kconfig/patches/01-kconfig-kernel-to-buildroot.patch b/support/kconfig/patches/01-kconfig-kernel-to-buildroot.patch index 43ae61a9c7..57d2488f9a 100644 --- a/support/kconfig/patches/01-kconfig-kernel-to-buildroot.patch +++ b/support/kconfig/patches/01-kconfig-kernel-to-buildroot.patch @@ -1,15 +1,20 @@ ---- - confdata.c | 4 ++-- - gconf.glade | 2 +- - mconf.c | 4 ++-- - zconf.tab.c_shipped | 2 +- - zconf.y | 2 +- - 5 files changed, 7 insertions(+), 7 deletions(-) - -Index: kconfig/gconf.glade -=================================================================== ---- kconfig.orig/gconf.glade -+++ kconfig/gconf.glade +diff --git a/confdata.c b/confdata.c +index 0e35c48..00a629b 100644 +--- a/confdata.c ++++ b/confdata.c +@@ -207,7 +207,7 @@ static void conf_message(const char *fmt, ...) + + const char *conf_get_configname(void) + { +- char *name = getenv("KCONFIG_CONFIG"); ++ char *name = getenv("BR2_CONFIG"); + + return name ? name : ".config"; + } +diff --git a/gconf.glade b/gconf.glade +index aa483cb..6cbc1bb 100644 +--- a/gconf.glade ++++ b/gconf.glade @@ -4,7 +4,7 @@ @@ -19,85 +24,37 @@ Index: kconfig/gconf.glade GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False -Index: kconfig/mconf.c -=================================================================== ---- kconfig.orig/mconf.c -+++ kconfig/mconf.c -@@ -176,9 +176,9 @@ menu_instructions[] = N_( +diff --git a/mconf.c b/mconf.c +index c096909..420e173 100644 +--- a/mconf.c ++++ b/mconf.c +@@ -184,9 +184,9 @@ menu_instructions[] = "Arrow keys navigate the menu. " " selects submenus ---> (or empty submenus ----). " "Highlighted letters are hotkeys. " - "Pressing includes, excludes, modularizes features. " -+ "Pressing selects a feature, while excludes a feature. " ++ "Pressing selects a feature, while excludes a features. " "Press to exit, for Help, for Search. " -- "Legend: [*] built-in [ ] excluded module < > module capable"), -+ "Legend: [*] feature is selected [ ] feature is excluded"), - radiolist_instructions[] = N_( +- "Legend: [*] built-in [ ] excluded module < > module capable", ++ "Legend: [*] feature is selected [ ] feature is excluded", + radiolist_instructions[] = "Use the arrow keys to navigate this window or " "press the hotkey of the item you wish to select " -@@ -962,7 +962,7 @@ static int handle_exit(void) +@@ -914,7 +914,7 @@ static int handle_exit(void) if (conf_get_changed()) res = dialog_yesno(NULL, - _("Do you wish to save your new configuration?\n" -- "(Press to continue kernel configuration.)"), -+ "(Press to continue Buildroot configuration.)"), + "Do you wish to save your new configuration?\n" +- "(Press to continue kernel configuration.)", ++ "(Press to continue Buildroot configuration.)", 6, 60); else res = -1; -Index: kconfig/zconf.tab.c_shipped -=================================================================== ---- kconfig.orig/zconf.tab.c_shipped -+++ kconfig/zconf.tab.c_shipped -@@ -1515,7 +1515,7 @@ yyreduce: - * later regardless of whether it comes from the 'prompt' in - * mainmenu_stmt or here - */ -- menu_add_prompt(P_MENU, xstrdup("Linux Kernel Configuration"), NULL); -+ menu_add_prompt(P_MENU, xstrdup("Buildroot Configuration"), NULL); - } - - break; -Index: kconfig/zconf.y -=================================================================== ---- kconfig.orig/zconf.y -+++ kconfig/zconf.y -@@ -127,7 +127,7 @@ no_mainmenu_stmt: /* empty */ - * later regardless of whether it comes from the 'prompt' in - * mainmenu_stmt or here - */ -- menu_add_prompt(P_MENU, xstrdup("Linux Kernel Configuration"), NULL); -+ menu_add_prompt(P_MENU, xstrdup("Buildroot Configuration"), NULL); - }; - - -Index: kconfig/confdata.c -=================================================================== ---- kconfig.orig/confdata.c -+++ kconfig/confdata.c -@@ -30,7 +30,7 @@ static void conf_message(const char *fmt - static const char *conf_filename; - static int conf_lineno, conf_warnings; - --const char conf_defname[] = "arch/$ARCH/defconfig"; -+const char conf_defname[] = ".defconfig"; - - static void conf_warning(const char *fmt, ...) - { -@@ -69,7 +69,7 @@ static void conf_message(const char *fmt - - const char *conf_get_configname(void) - { -- char *name = getenv("KCONFIG_CONFIG"); -+ char *name = getenv("BR2_CONFIG"); - - return name ? name : ".config"; - } -Index: kconfig/qconf.cc -=================================================================== ---- kconfig.orig/qconf.cc -+++ kconfig/qconf.cc -@@ -55,7 +55,7 @@ static inline QString qgettext(const QSt - } +diff --git a/qconf.cc b/qconf.cc +index c6c42c0..50c3ccd 100644 +--- a/qconf.cc ++++ b/qconf.cc +@@ -34,7 +34,7 @@ static ConfigSettings *configSettings; + QAction *ConfigMainWindow::saveAction; ConfigSettings::ConfigSettings() - : QSettings("kernel.org", "qconf") diff --git a/support/kconfig/patches/06-br-build-system-integration.patch b/support/kconfig/patches/06-br-build-system-integration.patch index 35420cbb15..b021ebf5c9 100644 --- a/support/kconfig/patches/06-br-build-system-integration.patch +++ b/support/kconfig/patches/06-br-build-system-integration.patch @@ -1,74 +1,53 @@ -Index: kconfig/Makefile -=================================================================== ---- kconfig.orig/Makefile -+++ kconfig/Makefile -@@ -205,7 +205,35 @@ qconf-cxxobjs := qconf.o - qconf-objs := zconf.tab.o - gconf-objs := gconf.o zconf.tab.o - --hostprogs-y := conf nconf mconf kxgettext qconf gconf -+hostprogs-y := conf -+ +diff --git a/Makefile b/Makefile +index ea1bf3b..5697d38 100644 +--- a/Makefile ++++ b/Makefile +@@ -173,6 +173,7 @@ hostprogs += conf + conf-objs := conf.o $(common-objs) + + # nconf: Used for the nconfig target based on ncurses +ifeq ($(MAKECMDGOALS),nconf) -+ hostprogs-y += nconf + hostprogs += nconf + nconf-objs := nconf.o nconf.gui.o mnconf-common.o $(common-objs) + +@@ -182,8 +183,10 @@ HOSTCFLAGS_nconf.gui.o = $(call read-file, $(obj)/nconf-cflags) + + $(obj)/nconf: | $(obj)/nconf-libs + $(obj)/nconf.o $(obj)/nconf.gui.o: | $(obj)/nconf-cflags +endif -+ + + # mconf: Used for the menuconfig target based on lxdialog +ifeq ($(MAKECMDGOALS),mconf) -+ hostprogs-y += mconf -+endif -+ -+ifeq ($(MAKECMDGOALS),update-po-config) -+ hostprogs-y += kxgettext -+endif -+ -+ifeq ($(MAKECMDGOALS),qconf) -+ qconf-target := 1 -+endif -+ -+ifeq ($(MAKECMDGOALS),gconf) -+ gconf-target := 1 -+endif -+ -+ifeq ($(qconf-target),1) -+ hostprogs-y += qconf -+endif -+ -+ifeq ($(gconf-target),1) -+ hostprogs-y += gconf -+endif + hostprogs += mconf + lxdialog := $(addprefix lxdialog/, \ + checklist.o inputbox.o menubox.o textbox.o util.o yesno.o) +@@ -195,8 +198,10 @@ $(foreach f, mconf.o $(lxdialog), \ - targets += zconf.lex.c - clean-files := qconf.moc .tmp_qtcheck .tmp_gtkcheck -@@ -243,7 +271,7 @@ HOSTLOADLIBES_nconf = $(shell \ - || echo "-lmenu -lpanel -lncurses" ) - $(obj)/qconf.o: $(obj)/.tmp_qtcheck + $(obj)/mconf: | $(obj)/mconf-libs + $(addprefix $(obj)/, mconf.o $(lxdialog)): | $(obj)/mconf-cflags ++endif --ifeq ($(MAKECMDGOALS),xconfig) + # qconf: Used for the xconfig target based on Qt +ifeq ($(MAKECMDGOALS),qconf) - $(obj)/.tmp_qtcheck: $(src)/Makefile - -include $(obj)/.tmp_qtcheck + hostprogs += qconf + qconf-cxxobjs := qconf.o qconf-moc.o + qconf-objs := images.o $(common-objs) +@@ -214,8 +219,10 @@ $(obj)/qconf-moc.cc: $(src)/qconf.h FORCE | $(obj)/qconf-bin + $(call if_changed,moc) -@@ -270,9 +298,8 @@ $(obj)/.tmp_qtcheck: - echo "KC_QT_MOC=$$moc" >> $@ - endif + targets += qconf-moc.cc ++endif + # gconf: Used for the gconfig target based on GTK+ +ifeq ($(MAKECMDGOALS),gconf) - $(obj)/gconf.o: $(obj)/.tmp_gtkcheck -- --ifeq ($(MAKECMDGOALS),gconfig) - -include $(obj)/.tmp_gtkcheck + hostprogs += gconf + gconf-objs := gconf.o images.o $(common-objs) - # GTK+ needs some extra effort, too... -@@ -300,11 +327,8 @@ $(obj)/zconf.tab.o: $(obj)/zconf.lex.c +@@ -224,6 +231,7 @@ HOSTCFLAGS_gconf.o = $(call read-file, $(obj)/gconf-cflags) - $(obj)/qconf.o: $(obj)/qconf.moc - --quiet_cmd_moc = MOC $@ -- cmd_moc = $(KC_QT_MOC) -i $< -o $@ -- - $(obj)/%.moc: $(src)/%.h $(obj)/.tmp_qtcheck -- $(call cmd,moc) -+ $(KC_QT_MOC) -i $< -o $@ + $(obj)/gconf: | $(obj)/gconf-libs + $(obj)/gconf.o: | $(obj)/gconf-cflags ++endif - # Extract gconf menu items for i18n support - $(obj)/gconf.glade.h: $(obj)/gconf.glade + # check if necessary packages are available, and configure build flags + cmd_conf_cfg = $< $(addprefix $(obj)/$*conf-, cflags libs bin); touch $(obj)/$*conf-bin diff --git a/support/kconfig/patches/10-br-build-system.patch b/support/kconfig/patches/10-br-build-system.patch index abf2463691..b40e5e9160 100644 --- a/support/kconfig/patches/10-br-build-system.patch +++ b/support/kconfig/patches/10-br-build-system.patch @@ -1,13 +1,34 @@ ---- - Makefile.br | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - foo.h | 12 ++++++++++++ - 2 files changed, 65 insertions(+) - -Index: kconfig/Makefile.br -=================================================================== +diff --git a/Makefile b/Makefile +index 5697d38..f5f934d 100644 +--- a/Makefile ++++ b/Makefile +@@ -3,6 +3,11 @@ + # Kernel configuration targets + # These targets are used from top-level makefile + ++HOSTPKG_CONFIG = pkg-config ++export HOSTPKG_CONFIG ++ ++include $(src)/Kbuild.include ++ + ifdef KBUILD_KCONFIG + Kconfig := $(KBUILD_KCONFIG) + else +@@ -234,7 +239,7 @@ $(obj)/gconf.o: | $(obj)/gconf-cflags + endif + + # check if necessary packages are available, and configure build flags +-cmd_conf_cfg = $< $(addprefix $(obj)/$*conf-, cflags libs bin); touch $(obj)/$*conf-bin ++cmd_conf_cfg = $(src)/$< $(addprefix $(obj)/$*conf-, cflags libs bin); touch $(obj)/$*conf-bin + + $(obj)/%conf-cflags $(obj)/%conf-libs $(obj)/%conf-bin: $(src)/%conf-cfg.sh + $(call cmd,conf_cfg) +diff --git a/Makefile.br b/Makefile.br +new file mode 100644 +index 0000000..d163256 --- /dev/null -+++ kconfig/Makefile.br -@@ -0,0 +1,53 @@ ++++ b/Makefile.br +@@ -0,0 +1,55 @@ +src := . +top_srcdir=../../ +top_builddir=../../ @@ -15,12 +36,11 @@ Index: kconfig/Makefile.br +obj ?= . + +include Makefile -+#HOSTCFLAGS+=-Dinline="" -include foo.h +-include $(obj)/.depend +$(obj)/.depend: $(wildcard *.h *.c) + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) -MM *.c > $@ 2>/dev/null || : + -+__hostprogs := $(sort $(hostprogs-y) $(hostprogs-m)) ++__hostprogs := $(sort $(hostprogs)) +host-csingle := $(foreach m,$(__hostprogs),$(if $($(m)-objs),,$(m))) +host-cmulti := $(foreach m,$(__hostprogs),\ + $(if $($(m)-cxxobjs),,$(if $($(m)-objs),$(m)))) @@ -35,10 +55,10 @@ Index: kconfig/Makefile.br + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< -o $(obj)/$@ + +$(host-cmulti): %: $(host-cobjs) $(host-cshlib) -+ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ ++ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLDLIBS_$(@F)) -o $(obj)/$@ + +$(host-cxxmulti): %: $(host-cxxobjs) $(host-cobjs) $(host-cshlib) -+ $(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ ++ $(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLDLIBS_$(@F)) -o $(obj)/$@ + +$(obj)/%.o: %.c + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) -c $< -o $@ @@ -49,6 +69,9 @@ Index: kconfig/Makefile.br +$(obj)/%.o: %.cc + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$(@F)) -c $< -o $@ + ++$(obj)/%.o: $(obj)/%.cc ++ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$(@F)) -c $< -o $@ ++ +$(obj)/%:: $(src)/%_shipped + $(Q)cat $< > $@ + @@ -61,20 +84,3 @@ Index: kconfig/Makefile.br + +FORCE: +.PHONY: FORCE clean distclean -Index: kconfig/foo.h -=================================================================== ---- /dev/null -+++ kconfig/foo.h -@@ -0,0 +1,12 @@ -+#ifndef __KCONFIG_FOO_H -+#define __KCONFIG_FOO_H -+ -+#ifndef __APPLE__ -+#include -+#endif -+#include -+ -+#ifndef PATH_MAX -+#define PATH_MAX 1024 -+#endif -+#endif /* __KCONFIG_FOO_H */ diff --git a/support/kconfig/patches/11-use-mktemp-for-lxdialog.patch b/support/kconfig/patches/11-use-mktemp-for-lxdialog.patch deleted file mode 100644 index 387c633ae2..0000000000 --- a/support/kconfig/patches/11-use-mktemp-for-lxdialog.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- - lxdialog/check-lxdialog.sh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -Index: kconfig/lxdialog/check-lxdialog.sh -=================================================================== ---- kconfig.orig/lxdialog/check-lxdialog.sh -+++ kconfig/lxdialog/check-lxdialog.sh -@@ -41,7 +41,7 @@ ccflags() - } - - # Temp file, try to clean up after us --tmp=.lxdialog.tmp -+tmp=$(mktemp) - trap "rm -f $tmp" 0 1 2 3 15 - - # Check if we can link to ncurses diff --git a/support/kconfig/patches/12-fix-glade-file-path.patch b/support/kconfig/patches/12-fix-glade-file-path.patch index 7d5941fc9e..0bcb04e62d 100644 --- a/support/kconfig/patches/12-fix-glade-file-path.patch +++ b/support/kconfig/patches/12-fix-glade-file-path.patch @@ -1,12 +1,8 @@ ---- - gconf.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -Index: kconfig/gconf.c -=================================================================== ---- kconfig.orig/gconf.c -+++ kconfig/gconf.c -@@ -1462,7 +1462,7 @@ int main(int ac, char *av[]) +diff --git a/gconf.c b/gconf.c +index 9709aca..d24cebd 100644 +--- a/gconf.c ++++ b/gconf.c +@@ -1452,7 +1452,7 @@ int main(int ac, char *av[]) /* Determine GUI path */ env = getenv(SRCTREE); if (env) diff --git a/support/kconfig/patches/14-support-out-of-tree-config.patch b/support/kconfig/patches/14-support-out-of-tree-config.patch index a3b33ba688..02d438429e 100644 --- a/support/kconfig/patches/14-support-out-of-tree-config.patch +++ b/support/kconfig/patches/14-support-out-of-tree-config.patch @@ -1,36 +1,18 @@ ---- - conf.c | 1 - confdata.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++--------------- - util.c | 16 +++++++++++++-- - 3 files changed, 61 insertions(+), 18 deletions(-) - -Index: kconfig/conf.c -=================================================================== ---- kconfig.orig/conf.c -+++ kconfig/conf.c -@@ -565,7 +565,6 @@ int main(int ac, char **av) - } - name = av[optind]; - conf_parse(name); -- //zconfdump(stdout); - if (sync_kconfig) { - name = conf_get_configname(); - if (stat(name, &tmpstat)) { -Index: kconfig/confdata.c -=================================================================== ---- kconfig.orig/confdata.c -+++ kconfig/confdata.c -@@ -13,6 +13,7 @@ +diff --git a/confdata.c b/confdata.c +index 00a629b..eb952e8 100644 +--- a/confdata.c ++++ b/confdata.c +@@ -17,6 +17,7 @@ #include #include #include +#include + #include "internal.h" #include "lkc.h" +@@ -214,9 +215,7 @@ const char *conf_get_configname(void) -@@ -76,9 +77,7 @@ const char *conf_get_configname(void) - - const char *conf_get_autoconfig_name(void) + static const char *conf_get_autoconfig_name(void) { - char *name = getenv("KCONFIG_AUTOCONFIG"); - @@ -38,170 +20,4 @@ Index: kconfig/confdata.c + return getenv("KCONFIG_AUTOCONFIG"); } - static char *conf_expand_value(const char *in) -@@ -748,6 +747,9 @@ int conf_write(const char *name) - char dirname[PATH_MAX+1], tmpname[PATH_MAX+1], newname[PATH_MAX+1]; - char *env; - -+ if (!name) -+ name = conf_get_configname(); -+ - dirname[0] = 0; - if (name && name[0]) { - struct stat st; -@@ -842,6 +844,7 @@ static int conf_split_config(void) - { - const char *name; - char path[PATH_MAX+1]; -+ char *opwd, *dir, *_name; - char *s, *d, c; - struct symbol *sym; - struct stat sb; -@@ -851,8 +854,20 @@ static int conf_split_config(void) - conf_read_simple(name, S_DEF_AUTO); - sym_calc_value(modules_sym); - -- if (chdir("include/config")) -- return 1; -+ opwd = malloc(256); -+ _name = strdup(name); -+ if (opwd == NULL || _name == NULL) -+ return 1; -+ opwd = getcwd(opwd, 256); -+ dir = dirname(_name); -+ if (dir == NULL) { -+ res = 1; -+ goto err; -+ } -+ if (chdir(dir)) { -+ res = 1; -+ goto err; -+ } - - res = 0; - for_all_symbols(i, sym) { -@@ -945,9 +960,11 @@ static int conf_split_config(void) - close(fd); - } - out: -- if (chdir("../..")) -- return 1; -- -+ if (chdir(opwd)) -+ res = 1; -+err: -+ free(opwd); -+ free(_name); - return res; - } - -@@ -957,25 +974,38 @@ int conf_write_autoconf(void) - const char *name; - FILE *out, *tristate, *out_h; - int i; -+ char dir[PATH_MAX+1], buf[PATH_MAX+1]; -+ char *s; -+ -+ strcpy(dir, conf_get_configname()); -+ s = strrchr(dir, '/'); -+ if (s) -+ s[1] = 0; -+ else -+ dir[0] = 0; - - sym_clear_all_valid(); - -- file_write_dep("include/config/auto.conf.cmd"); -+ sprintf(buf, "%s.config.cmd", dir); -+ file_write_dep(buf); - - if (conf_split_config()) - return 1; - -- out = fopen(".tmpconfig", "w"); -+ sprintf(buf, "%s.tmpconfig", dir); -+ out = fopen(buf, "w"); - if (!out) - return 1; - -- tristate = fopen(".tmpconfig_tristate", "w"); -+ sprintf(buf, "%s.tmpconfig_tristate", dir); -+ tristate = fopen(buf, "w"); - if (!tristate) { - fclose(out); - return 1; - } - -- out_h = fopen(".tmpconfig.h", "w"); -+ sprintf(buf, "%s.tmpconfig.h", dir); -+ out_h = fopen(buf, "w"); - if (!out_h) { - fclose(out); - fclose(tristate); -@@ -1007,19 +1037,22 @@ int conf_write_autoconf(void) - name = getenv("KCONFIG_AUTOHEADER"); - if (!name) - name = "include/generated/autoconf.h"; -- if (rename(".tmpconfig.h", name)) -+ sprintf(buf, "%s.tmpconfig.h", dir); -+ if (rename(buf, name)) - return 1; - name = getenv("KCONFIG_TRISTATE"); - if (!name) - name = "include/config/tristate.conf"; -- if (rename(".tmpconfig_tristate", name)) -+ sprintf(buf, "%s.tmpconfig_tristate", dir); -+ if (rename(buf, name)) - return 1; - name = conf_get_autoconfig_name(); - /* - * This must be the last step, kbuild has a dependency on auto.conf - * and this marks the successful completion of the previous steps. - */ -- if (rename(".tmpconfig", name)) -+ sprintf(buf, "%s.tmpconfig", dir); -+ if (rename(buf, name)) - return 1; - - return 0; -Index: kconfig/util.c -=================================================================== ---- kconfig.orig/util.c -+++ kconfig/util.c -@@ -34,6 +34,8 @@ struct file *file_lookup(const char *nam - /* write a dependency file as used by kbuild to track dependencies */ - int file_write_dep(const char *name) - { -+ char *str; -+ char buf[PATH_MAX+1], buf2[PATH_MAX+1], dir[PATH_MAX+1]; - struct symbol *sym, *env_sym; - struct expr *e; - struct file *file; -@@ -41,7 +43,16 @@ int file_write_dep(const char *name) - - if (!name) - name = ".kconfig.d"; -- out = fopen("..config.tmp", "w"); -+ -+ strcpy(dir, conf_get_configname()); -+ str = strrchr(dir, '/'); -+ if (str) -+ str[1] = 0; -+ else -+ dir[0] = 0; -+ -+ sprintf(buf, "%s..config.tmp", dir); -+ out = fopen(buf, "w"); - if (!out) - return 1; - fprintf(out, "deps_config := \\\n"); -@@ -72,7 +83,8 @@ int file_write_dep(const char *name) - - fprintf(out, "\n$(deps_config): ;\n"); - fclose(out); -- rename("..config.tmp", name); -+ sprintf(buf2, "%s%s", dir, name); -+ rename(buf, buf2); - return 0; - } - + static const char *conf_get_autoheader_name(void) diff --git a/support/kconfig/patches/16-fix-space-to-de-select-options.patch b/support/kconfig/patches/16-fix-space-to-de-select-options.patch index 08f7ec5d95..2b7a4f5655 100644 --- a/support/kconfig/patches/16-fix-space-to-de-select-options.patch +++ b/support/kconfig/patches/16-fix-space-to-de-select-options.patch @@ -3,21 +3,21 @@ Author: Yann E. MORIN Date: Wed Nov 13 22:45:02 2013 +0100 support/kconfig: fix 'space' to (de)select options - + In case a menu has comment without letters/numbers (eg. characters matching the regexp '^[^[:alpha:][:digit:]]+$', for example - or *), hitting space will cycle through those comments, rather than selecting/deselecting the currently-highlighted option. - + This is the behaviour of hitting any letter/digit: jump to the next option which prompt starts with that letter. The only letters that do not behave as such are 'y' 'm' and 'n'. Prompts that start with one of those three letters are instead matched on the first letter that is not 'y', 'm' or 'n'. - + Fix that by treating 'space' as we treat y/m/n, ie. as an action key, not as shortcut to jump to prompt. - + Signed-off-by: "Yann E. MORIN" Cc: Thomas Petazzoni Cc: Peter Korsgaard @@ -25,12 +25,11 @@ Date: Wed Nov 13 22:45:02 2013 +0100 Cc: Thomas De Schampheleire --- Note: I'll be running this upstream soonish. - -Index: kconfig/lxdialog/menubox.c -=================================================================== ---- kconfig.orig/lxdialog/menubox.c -+++ kconfig/lxdialog/menubox.c -@@ -285,7 +285,7 @@ do_resize: +diff --git a/lxdialog/menubox.c b/lxdialog/menubox.c +index 6e6244d..d4c19b7 100644 +--- a/lxdialog/menubox.c ++++ b/lxdialog/menubox.c +@@ -264,7 +264,7 @@ do_resize: if (key < 256 && isalpha(key)) key = tolower(key); diff --git a/support/kconfig/patches/17-backport-kecho.patch b/support/kconfig/patches/17-backport-kecho.patch deleted file mode 100644 index 9d13876616..0000000000 --- a/support/kconfig/patches/17-backport-kecho.patch +++ /dev/null @@ -1,26 +0,0 @@ -This commit added kecho to scripts/Kbuild.include (and doc). -Backported just Kbuild.include part to Makefile - -commit 5410ecc0def8955ab99810c5626cc7e156991896 -Author: Mike Frysinger -Date: Thu Nov 6 03:31:34 2008 -0500 - - kbuild: introduce $(kecho) convenience echo - -Index: kconfig/Makefile -=================================================================== ---- kconfig.orig/Makefile -+++ kconfig/Makefile -@@ -6,6 +6,12 @@ - PHONY += xconfig gconfig menuconfig config syncconfig update-po-config \ - localmodconfig localyesconfig - -+# Easy method for doing a status message -+ kecho := : -+ quiet_kecho := echo -+silent_kecho := : -+kecho := $($(quiet)kecho) -+ - ifdef KBUILD_KCONFIG - Kconfig := $(KBUILD_KCONFIG) - else diff --git a/support/kconfig/patches/18-merge-config.sh-create-temporary-files-in-tmp.patch b/support/kconfig/patches/18-merge-config.sh-create-temporary-files-in-tmp.patch index f2a261f308..342d6359f6 100644 --- a/support/kconfig/patches/18-merge-config.sh-create-temporary-files-in-tmp.patch +++ b/support/kconfig/patches/18-merge-config.sh-create-temporary-files-in-tmp.patch @@ -11,17 +11,18 @@ Date: Mon, 7 Dec 2015 12:08:45 -0200 Signed-off-by: Henrique Marks Signed-off-by: Carlos Santos Signed-off-by: Peter Korsgaard - -Index: kconfig/merge_config.sh -=================================================================== ---- kconfig.orig/merge_config.sh -+++ kconfig/merge_config.sh -@@ -100,7 +100,7 @@ fi +diff --git a/merge_config.sh b/merge_config.sh +index 902eb42..05737ba 100755 +--- a/merge_config.sh ++++ b/merge_config.sh +@@ -120,8 +120,8 @@ MERGE_LIST=$* + SED_CONFIG_EXP1="s/^\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\)=.*/\1/p" + SED_CONFIG_EXP2="s/^# \(${CONFIG_PREFIX}[a-zA-Z0-9_]*\) is not set$/\1/p" - MERGE_LIST=$* - SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(CONFIG_[a-zA-Z0-9_]*\)[= ].*/\2/p" -TMP_FILE=$(mktemp ./.tmp.config.XXXXXXXXXX) +-MERGE_FILE=$(mktemp ./.merge_tmp.config.XXXXXXXXXX) +TMP_FILE=$(mktemp -t .tmp.config.XXXXXXXXXX) ++MERGE_FILE=$(mktemp -t .merge_tmp.config.XXXXXXXXXX) echo "Using $INITFILE as base" - cat $INITFILE > $TMP_FILE + diff --git a/support/kconfig/patches/19-merge_config.sh-add-br2-external-support.patch b/support/kconfig/patches/19-merge_config.sh-add-br2-external-support.patch index 1d0ef323bd..0b4814da1e 100644 --- a/support/kconfig/patches/19-merge_config.sh-add-br2-external-support.patch +++ b/support/kconfig/patches/19-merge_config.sh-add-br2-external-support.patch @@ -12,20 +12,20 @@ Date: Tue, 9 Jan 2018 14:37:43 +0300 Acked-by: "Yann E. MORIN" Signed-off-by: Peter Korsgaard -Index: kconfig/merge_config.sh -=================================================================== ---- kconfig.orig/merge_config.sh -+++ kconfig/merge_config.sh -@@ -33,6 +33,7 @@ usage() { - echo " -n use allnoconfig instead of alldefconfig" - echo " -r list redundant entries when merging fragments" +diff --git a/merge_config.sh b/merge_config.sh +index 05737ba..a5c0348 100755 +--- a/merge_config.sh ++++ b/merge_config.sh +@@ -30,6 +30,7 @@ usage() { echo " -O dir to put generated output files. Consider setting \$KCONFIG_CONFIG instead." + echo " -s strict mode. Fail if the fragment redefines any value." + echo " -Q disable warning messages for overridden options." + echo " -e colon-separated list of br2-external trees to use (optional)" + echo + echo "Used prefix: '$CONFIG_PREFIX'. You can redefine it with \$CONFIG_ environment variable." } - - RUNMAKE=true -@@ -71,6 +72,11 @@ while true; do - shift 2 +@@ -89,6 +90,11 @@ while true; do + shift continue ;; + "-e") @@ -36,7 +36,7 @@ Index: kconfig/merge_config.sh *) break ;; -@@ -151,7 +157,7 @@ fi +@@ -194,7 +200,7 @@ fi # Use the merged file as the starting point for: # alldefconfig: Fills in any missing symbols with Kconfig default # allnoconfig: Fills in any missing symbols with # CONFIG_* is not set diff --git a/support/kconfig/patches/20-merge_config.sh-Allow-to-define-config-prefix.patch b/support/kconfig/patches/20-merge_config.sh-Allow-to-define-config-prefix.patch deleted file mode 100644 index 645043b163..0000000000 --- a/support/kconfig/patches/20-merge_config.sh-Allow-to-define-config-prefix.patch +++ /dev/null @@ -1,31 +0,0 @@ -Index: kconfig/merge_config.sh -=================================================================== ---- kconfig.orig/merge_config.sh -+++ kconfig/merge_config.sh -@@ -34,12 +34,16 @@ usage() { - echo " -r list redundant entries when merging fragments" - echo " -O dir to put generated output files. Consider setting \$KCONFIG_CONFIG instead." - echo " -e colon-separated list of br2-external trees to use (optional)" -+ echo -+ echo "Used prefix: '$CONFIG_PREFIX'. You can redefine it with \$CONFIG_ -+ environment variable." - } - - RUNMAKE=true - ALLTARGET=alldefconfig - WARNREDUN=false - OUTPUT=. -+CONFIG_PREFIX=${CONFIG_-CONFIG_} - - while true; do - case $1 in -@@ -105,7 +109,8 @@ if [ ! -r "$INITFILE" ]; then - fi - - MERGE_LIST=$* --SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(CONFIG_[a-zA-Z0-9_]*\)[= ].*/\2/p" -+SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\)[= ].*/\2/p" -+ - TMP_FILE=$(mktemp -t .tmp.config.XXXXXXXXXX) - - echo "Using $INITFILE as base" diff --git a/support/kconfig/patches/21-Avoid-false-positive-matches-from-comment-lines.patch b/support/kconfig/patches/21-Avoid-false-positive-matches-from-comment-lines.patch deleted file mode 100644 index c11144e47e..0000000000 --- a/support/kconfig/patches/21-Avoid-false-positive-matches-from-comment-lines.patch +++ /dev/null @@ -1,32 +0,0 @@ -Index: kconfig/merge_config.sh -=================================================================== ---- kconfig.orig/merge_config.sh -+++ kconfig/merge_config.sh -@@ -109,7 +109,8 @@ if [ ! -r "$INITFILE" ]; then - fi - - MERGE_LIST=$* --SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\)[= ].*/\2/p" -+SED_CONFIG_EXP1="s/^\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\)=.*/\1/p" -+SED_CONFIG_EXP2="s/^# \(${CONFIG_PREFIX}[a-zA-Z0-9_]*\) is not set$/\1/p" - - TMP_FILE=$(mktemp -t .tmp.config.XXXXXXXXXX) - -@@ -123,7 +124,7 @@ for MERGE_FILE in $MERGE_LIST ; do - echo "The merge file '$MERGE_FILE' does not exist. Exit." >&2 - exit 1 - fi -- CFG_LIST=$(sed -n "$SED_CONFIG_EXP" $MERGE_FILE) -+ CFG_LIST=$(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $MERGE_FILE) - - for CFG in $CFG_LIST ; do - grep -q -w $CFG $TMP_FILE || continue -@@ -166,7 +167,7 @@ make KCONFIG_ALLCONFIG=$TMP_FILE $EXTERN - - - # Check all specified config values took (might have missed-dependency issues) --for CFG in $(sed -n "$SED_CONFIG_EXP" $TMP_FILE); do -+for CFG in $(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $TMP_FILE); do - - REQUESTED_VAL=$(grep -w -e "$CFG" $TMP_FILE) - ACTUAL_VAL=$(grep -w -e "$CFG" "$KCONFIG_CONFIG") diff --git a/support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch b/support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch deleted file mode 100644 index 41081bb45d..0000000000 --- a/support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 3ae91337b53fa3ccf0bad7f181fcaf483fab22ee Mon Sep 17 00:00:00 2001 -From: Robert Marko -Date: Wed, 3 Apr 2024 14:18:07 +0200 -Subject: [PATCH] kconfig/lxdialog: fix check() with GCC14 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -GCC14 now treats implicit int types as error so when check() from -check-lxdialog.sh is called to check whether we can link against ncurses -it will fail silently and the help text indicating to install ncurses is -printed. - -However, this is not due to missing ncurses but once the stderr redirect -to /dev/null is removed we can see the root cause: -:2:1: error: return type defaults to ?int? [-Wimplicit-int] - -So, in order for menuconfig to work with GCC14 lets just specify the -return type of main() as int. - -Signed-off-by: Robert Marko -Reviewed-by: Petr Vorel -Tested-by: Petr Vorel ---- - kconfig/lxdialog/check-lxdialog.sh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/kconfig/lxdialog/check-lxdialog.sh b/kconfig/lxdialog/check-lxdialog.sh -index 16cd9a3186..27d6c30a57 100755 ---- a/kconfig/lxdialog/check-lxdialog.sh -+++ b/kconfig/lxdialog/check-lxdialog.sh -@@ -48,7 +48,7 @@ trap "rm -f $tmp" 0 1 2 3 15 - check() { - $cc -x c - -o $tmp 2>/dev/null <<'EOF' - #include CURSES_LOC --main() {} -+int main() {} - EOF - if [ $? != 0 ]; then - echo " *** Unable to find the ncurses libraries or the" 1>&2 --- -2.44.0 - diff --git a/support/kconfig/patches/23-Revert-kconfig-allow-only-config-comment-and-if-insi.patch b/support/kconfig/patches/23-Revert-kconfig-allow-only-config-comment-and-if-insi.patch new file mode 100644 index 0000000000..d5a011bb6e --- /dev/null +++ b/support/kconfig/patches/23-Revert-kconfig-allow-only-config-comment-and-if-insi.patch @@ -0,0 +1,956 @@ +Revert "kconfig: allow only 'config', 'comment', and 'if' inside 'choice'" + +This reverts linux mainline commit 09d5873e4d1f70202314b5fe40160f9b14b9d2d0 +as applied to buildroot support/kconfig (additional update imported +parser.tab.c_shipped). + +Original patch header: + +The code block surrounded by 'if' ... 'endif' is reduced into if_stmt, +which is accepted in the 'choice' context. Therefore, you can write any +statements within a choice block by wrapping 'if y' ... 'end'. + +For example, you can create a menu inside a choice, like follows: + +---------------->8---------------- + choice + prompt "choice" + + config A + bool "A" + + config B + bool "B" + + if y + + menu "strange menu" + + config C + bool "C" + + endmenu + + endif + + endchoice +---------------->8---------------- + +I want to change such a weird structure into a syntax error. + +In fact, the USB gadget Kconfig had used nested 'choice' for no good +reason until commit df8df5e4bc37 ("usb: get rid of 'choice' for +legacy gadget drivers") killed it. + +I think the 'source' inside 'choice' is on the fence. It is at least +gramatically sensible as long as the included file contains only +bool/tristate configs. However, it makes the code unreadable, and people +tend to forget the fact that the file is included from the choice +block. Commit 10e5e6c24963 ("usb: gadget: move choice ... endchoice to +legacy/Kconfig") got rid of the only usecase. + +Going forward, you can only use 'config', 'comment', and 'if' inside +'choice'. This also recursively applies to 'if' blocks inside 'choice'. + +Signed-off-by: Masahiro Yamada +[Revert and applied to buildroot support/kconfig] +Signed-off-by: Peter Seiderer +diff --git a/parser.tab.c_shipped b/parser.tab.c_shipped +index 85234d0..092da33 100644 +--- a/parser.tab.c_shipped ++++ b/parser.tab.c_shipped +@@ -177,7 +177,7 @@ enum yysymbol_kind_t + YYSYMBOL_input = 51, /* input */ + YYSYMBOL_mainmenu_stmt = 52, /* mainmenu_stmt */ + YYSYMBOL_stmt_list = 53, /* stmt_list */ +- YYSYMBOL_stmt_list_in_choice = 54, /* stmt_list_in_choice */ ++ YYSYMBOL_common_stmt = 54, /* common_stmt */ + YYSYMBOL_config_entry_start = 55, /* config_entry_start */ + YYSYMBOL_config_stmt = 56, /* config_stmt */ + YYSYMBOL_menuconfig_entry_start = 57, /* menuconfig_entry_start */ +@@ -193,10 +193,10 @@ enum yysymbol_kind_t + YYSYMBOL_type = 67, /* type */ + YYSYMBOL_logic_type = 68, /* logic_type */ + YYSYMBOL_default = 69, /* default */ +- YYSYMBOL_if_entry = 70, /* if_entry */ +- YYSYMBOL_if_end = 71, /* if_end */ +- YYSYMBOL_if_stmt = 72, /* if_stmt */ +- YYSYMBOL_if_stmt_in_choice = 73, /* if_stmt_in_choice */ ++ YYSYMBOL_choice_block = 70, /* choice_block */ ++ YYSYMBOL_if_entry = 71, /* if_entry */ ++ YYSYMBOL_if_end = 72, /* if_end */ ++ YYSYMBOL_if_stmt = 73, /* if_stmt */ + YYSYMBOL_menu = 74, /* menu */ + YYSYMBOL_menu_entry = 75, /* menu_entry */ + YYSYMBOL_menu_end = 76, /* menu_end */ +@@ -546,16 +546,16 @@ union yyalloc + /* YYFINAL -- State number of the termination state. */ + #define YYFINAL 6 + /* YYLAST -- Last index in YYTABLE. */ +-#define YYLAST 186 ++#define YYLAST 189 + + /* YYNTOKENS -- Number of terminals. */ + #define YYNTOKENS 50 + /* YYNNTS -- Number of nonterminals. */ + #define YYNNTS 46 + /* YYNRULES -- Number of rules. */ +-#define YYNRULES 103 ++#define YYNRULES 100 + /* YYNSTATES -- Number of states. */ +-#define YYNSTATES 182 ++#define YYNSTATES 177 + + /* YYMAXUTOK -- Last valid token kind. */ + #define YYMAXUTOK 304 +@@ -610,16 +610,16 @@ static const yytype_int8 yytranslate[] = + static const yytype_int16 yyrline[] = + { + 0, 108, 108, 108, 112, 117, 119, 120, 121, 122, +- 123, 124, 125, 126, 127, 128, 131, 133, 134, 135, +- 136, 141, 148, 153, 160, 169, 171, 172, 173, 176, +- 182, 188, 197, 203, 209, 215, 225, 234, 245, 253, +- 256, 258, 259, 260, 263, 269, 275, 281, 288, 289, +- 290, 291, 294, 295, 298, 299, 300, 304, 312, 320, +- 323, 328, 335, 340, 348, 351, 353, 354, 357, 366, +- 373, 376, 378, 383, 389, 407, 414, 421, 423, 428, +- 429, 430, 433, 434, 437, 438, 439, 440, 441, 442, +- 443, 444, 445, 446, 447, 451, 453, 454, 459, 462, +- 463, 464, 468, 469 ++ 123, 127, 128, 129, 130, 131, 132, 137, 144, 149, ++ 156, 165, 167, 168, 169, 172, 178, 184, 193, 199, ++ 205, 211, 221, 230, 241, 249, 252, 254, 255, 256, ++ 259, 265, 271, 277, 284, 285, 286, 287, 290, 291, ++ 294, 295, 296, 298, 300, 305, 313, 321, 326, 333, ++ 338, 346, 349, 351, 352, 355, 364, 371, 374, 376, ++ 381, 387, 405, 412, 419, 421, 426, 427, 428, 431, ++ 432, 435, 436, 437, 438, 439, 440, 441, 442, 443, ++ 444, 445, 449, 451, 452, 457, 460, 461, 462, 466, ++ 467 + }; + #endif + +@@ -644,15 +644,15 @@ static const char *const yytname[] = + "T_PROMPT", "T_RANGE", "T_SELECT", "T_SOURCE", "T_STRING", "T_TRISTATE", + "T_VISIBLE", "T_EOL", "T_ASSIGN_VAL", "T_OR", "T_AND", "T_EQUAL", + "T_UNEQUAL", "T_LESS", "T_LESS_EQUAL", "T_GREATER", "T_GREATER_EQUAL", +- "T_NOT", "$accept", "input", "mainmenu_stmt", "stmt_list", +- "stmt_list_in_choice", "config_entry_start", "config_stmt", +- "menuconfig_entry_start", "menuconfig_stmt", "config_option_list", +- "config_option", "choice", "choice_entry", "choice_end", "choice_stmt", +- "choice_option_list", "choice_option", "type", "logic_type", "default", +- "if_entry", "if_end", "if_stmt", "if_stmt_in_choice", "menu", +- "menu_entry", "menu_end", "menu_stmt", "menu_option_list", "source_stmt", +- "comment", "comment_stmt", "comment_option_list", "help_start", "help", +- "depends", "visible", "prompt_stmt_opt", "end", "if_expr", "expr", ++ "T_NOT", "$accept", "input", "mainmenu_stmt", "stmt_list", "common_stmt", ++ "config_entry_start", "config_stmt", "menuconfig_entry_start", ++ "menuconfig_stmt", "config_option_list", "config_option", "choice", ++ "choice_entry", "choice_end", "choice_stmt", "choice_option_list", ++ "choice_option", "type", "logic_type", "default", "choice_block", ++ "if_entry", "if_end", "if_stmt", "menu", "menu_entry", "menu_end", ++ "menu_stmt", "menu_option_list", "source_stmt", "comment", ++ "comment_stmt", "comment_option_list", "help_start", "help", "depends", ++ "visible", "prompt_stmt_opt", "end", "if_expr", "expr", + "nonconst_symbol", "symbol", "assignment_stmt", "assign_op", + "assign_val", YY_NULLPTR + }; +@@ -664,7 +664,7 @@ yysymbol_name (yysymbol_kind_t yysymbol) + } + #endif + +-#define YYPACT_NINF (-62) ++#define YYPACT_NINF (-67) + + #define yypact_value_is_default(Yyn) \ + ((Yyn) == YYPACT_NINF) +@@ -678,25 +678,24 @@ yysymbol_name (yysymbol_kind_t yysymbol) + STATE-NUM. */ + static const yytype_int16 yypact[] = + { +- 5, 30, 39, -62, 33, 13, -62, 62, 16, 17, +- 22, 41, 60, 2, 77, 60, 79, -62, -62, -62, +- -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, +- -62, -62, -62, -62, -62, 26, -62, -62, -62, 27, +- -62, 47, -62, 50, -62, 2, 2, -20, -62, 31, +- 52, 55, 59, 107, 107, 130, 155, 89, -6, 89, +- 86, -62, -62, 69, -62, -62, 8, -62, -62, 2, +- 2, 23, 23, 23, 23, 23, 23, -62, -62, -62, +- -62, -62, -62, -62, 81, 72, -62, 60, -62, 78, +- 111, 23, 60, -62, -62, -62, 113, -62, 2, 120, +- -62, -62, 60, 92, 123, -62, 113, -62, -62, 93, +- 94, 108, 115, -62, -62, -62, -62, -62, -62, -62, +- -62, 104, -62, -62, -62, -62, -62, -62, -62, 110, +- -62, -62, -62, -62, -62, -62, -62, 2, -62, 104, +- -62, 104, 23, 104, 104, 119, 15, -62, 104, -62, +- 104, 122, -62, -62, -62, -62, 155, 2, 124, 96, +- 125, 129, 104, 131, -62, -62, 135, 136, 138, -62, +- -62, 29, -62, -62, -62, -62, 139, -62, -62, -62, +- -62, -62 ++ 15, 13, 29, -67, 30, 19, -67, 59, 22, 11, ++ 23, 52, 60, -1, 62, 60, 63, -67, -67, -67, ++ -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, ++ -67, -67, -67, -67, -67, -67, 32, -67, -67, -67, ++ 37, -67, 33, -67, 47, -67, -1, -1, 34, -67, ++ 141, 48, 49, 53, 111, 111, 84, 142, 94, 6, ++ 94, 76, -67, -67, 58, -67, -67, 5, -67, -67, ++ -1, -1, 18, 18, 18, 18, 18, 18, -67, -67, ++ -67, -67, -67, -67, -67, 72, 67, -67, 60, -67, ++ 69, 97, 18, 60, -67, -67, -67, 104, -67, -1, ++ 110, -67, -67, 60, 79, 117, -67, 104, -67, -67, ++ 7, 88, 89, 93, -67, -67, -67, -67, -67, 114, ++ -67, -67, -67, -67, -67, -67, -67, 95, -67, -67, ++ -67, -67, -67, -67, -67, -1, -67, 114, -67, 114, ++ 18, 114, 114, 100, -6, -67, 114, -67, 114, 101, ++ -67, -67, -67, -1, 102, 40, 103, 112, 114, 115, ++ -67, -67, 116, 118, 122, -67, -9, -67, -67, -67, ++ -67, 126, -67, -67, -67, -67, -67 + }; + + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. +@@ -705,44 +704,43 @@ static const yytype_int16 yypact[] = + static const yytype_int8 yydefact[] = + { + 5, 0, 0, 5, 0, 0, 1, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 25, 9, 25, +- 12, 40, 16, 7, 5, 10, 65, 5, 11, 13, +- 71, 8, 6, 4, 15, 0, 100, 101, 99, 102, +- 36, 0, 95, 0, 97, 0, 0, 0, 96, 84, +- 0, 0, 0, 22, 24, 37, 0, 0, 62, 0, +- 70, 14, 103, 0, 69, 21, 0, 92, 57, 0, +- 0, 0, 0, 0, 0, 0, 0, 61, 23, 68, +- 52, 54, 55, 56, 0, 0, 50, 0, 49, 0, +- 0, 0, 0, 51, 53, 26, 77, 48, 0, 0, +- 28, 27, 0, 0, 0, 41, 77, 43, 42, 0, +- 0, 0, 0, 18, 39, 16, 19, 17, 38, 59, +- 58, 82, 67, 66, 64, 63, 72, 98, 91, 93, +- 94, 89, 90, 85, 86, 87, 88, 0, 73, 82, +- 35, 82, 0, 82, 82, 0, 82, 74, 82, 46, +- 82, 0, 20, 80, 81, 79, 0, 0, 0, 0, +- 0, 0, 82, 0, 78, 29, 0, 0, 0, 45, +- 60, 83, 76, 75, 33, 30, 0, 32, 31, 47, +- 44, 34 ++ 0, 0, 0, 0, 0, 0, 0, 6, 21, 13, ++ 21, 14, 36, 53, 7, 5, 11, 62, 5, 8, ++ 15, 68, 12, 16, 4, 10, 0, 97, 98, 96, ++ 99, 32, 0, 92, 0, 94, 0, 0, 0, 93, ++ 81, 0, 0, 0, 18, 20, 33, 0, 0, 59, ++ 0, 67, 9, 100, 0, 66, 17, 0, 89, 55, ++ 0, 0, 0, 0, 0, 0, 0, 0, 58, 19, ++ 65, 48, 50, 51, 52, 0, 0, 46, 0, 45, ++ 0, 0, 0, 0, 47, 49, 22, 74, 44, 0, ++ 0, 24, 23, 0, 0, 0, 37, 74, 39, 38, ++ 0, 0, 0, 0, 54, 35, 34, 57, 56, 79, ++ 64, 63, 61, 60, 69, 95, 88, 90, 91, 86, ++ 87, 82, 83, 84, 85, 0, 70, 79, 31, 79, ++ 0, 79, 79, 0, 79, 71, 79, 42, 79, 0, ++ 77, 78, 76, 0, 0, 0, 0, 0, 79, 0, ++ 75, 25, 0, 0, 0, 41, 80, 73, 72, 29, ++ 26, 0, 28, 27, 43, 40, 30 + }; + + /* YYPGOTO[NTERM-NUM]. */ + static const yytype_int16 yypgoto[] = + { +- -62, -62, -62, 14, 44, -62, -54, -62, -62, 160, +- -62, -62, -62, -62, -62, -62, -62, -62, 126, -62, +- -53, 24, -62, -62, -62, -62, -62, -62, -62, -62, +- -62, -52, -62, -62, 127, -13, -62, 80, -36, 7, +- -45, -7, -61, -62, -62, -62 ++ -67, -67, -67, 24, 92, -67, -67, -67, -67, 130, ++ -67, -67, -67, -67, -67, -67, -67, -67, 80, -67, ++ -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, ++ -67, -67, -67, -67, 119, -42, -67, 65, -15, 25, ++ -46, -10, -66, -67, -67, -67 + }; + + /* YYDEFGOTO[NTERM-NUM]. */ + static const yytype_uint8 yydefgoto[] = + { +- 0, 2, 3, 4, 56, 17, 18, 19, 20, 53, +- 95, 21, 22, 114, 23, 55, 105, 96, 97, 98, +- 24, 119, 25, 116, 26, 27, 124, 28, 58, 29, +- 30, 31, 60, 99, 100, 101, 123, 145, 120, 158, +- 47, 48, 49, 32, 39, 63 ++ 0, 2, 3, 4, 17, 18, 19, 20, 21, 54, ++ 96, 22, 23, 115, 24, 56, 106, 97, 98, 99, ++ 57, 25, 117, 26, 27, 28, 122, 29, 59, 30, ++ 31, 32, 61, 100, 101, 102, 121, 143, 116, 154, ++ 48, 49, 50, 33, 40, 64 + }; + + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If +@@ -750,48 +748,48 @@ static const yytype_uint8 yydefgoto[] = + number is the opposite. If YYTABLE_NINF, syntax error. */ + static const yytype_int16 yytable[] = + { +- 66, 67, 113, 115, 117, 43, 42, 44, 51, 84, +- 131, 132, 133, 134, 135, 136, 128, 7, 35, 68, +- 118, 69, 70, 125, 129, 130, 36, 42, 44, 1, +- 142, 45, 121, -3, 8, 5, 157, 9, 57, 6, +- 10, 59, 108, 11, 12, 122, 41, 126, 37, 69, +- 70, 46, 33, 146, 13, 34, 69, 70, 14, 15, +- 38, 40, -2, 8, 42, 61, 9, 62, 16, 10, +- 69, 70, 11, 12, 71, 72, 73, 74, 75, 76, +- 139, 162, 50, 13, 52, 143, 64, 14, 15, 65, +- 8, 77, 159, 9, 78, 148, 10, 16, 79, 11, +- 12, 84, 113, 115, 117, 110, 111, 112, 127, 137, +- 13, 138, 171, 80, 14, 15, 141, 140, 144, 81, +- 82, 83, 84, 147, 16, 157, 85, 86, 150, 87, +- 88, 149, 152, 153, 89, 173, 80, 69, 70, 90, +- 91, 92, 102, 93, 94, 84, 160, 154, 161, 85, +- 163, 164, 70, 166, 155, 167, 109, 168, 165, 156, +- 103, 169, 104, 172, 174, 11, 12, 94, 175, 176, +- 177, 110, 111, 112, 178, 179, 13, 180, 181, 54, +- 170, 106, 107, 0, 0, 0, 151 ++ 67, 68, 44, 43, 45, 52, 129, 130, 131, 132, ++ 133, 134, 36, 126, 109, 153, 37, 120, 5, 124, ++ 37, 85, 43, 45, 127, 128, 140, 7, 46, 6, ++ -3, 8, 70, 71, 9, 70, 71, 10, 38, 1, ++ 11, 12, 38, 118, 119, 123, 70, 71, 47, 58, ++ 39, 13, 60, 144, 39, 14, 15, 42, 34, -2, ++ 8, 35, 41, 9, 43, 16, 10, 51, 53, 11, ++ 12, 62, 65, 69, 158, 70, 71, 63, 137, 168, ++ 13, 70, 71, 141, 14, 15, 66, 78, 79, 155, ++ 81, 85, 80, 146, 16, 8, 103, 125, 9, 85, ++ 135, 10, 139, 86, 11, 12, 136, 166, 138, 142, ++ 111, 112, 113, 145, 104, 13, 105, 81, 147, 14, ++ 15, 95, 148, 82, 83, 84, 85, 150, 151, 16, ++ 86, 87, 152, 88, 89, 153, 107, 71, 90, 161, ++ 165, 167, 169, 91, 92, 93, 110, 94, 95, 114, ++ 55, 170, 11, 12, 172, 173, 0, 174, 111, 112, ++ 113, 175, 156, 13, 157, 176, 159, 160, 15, 162, ++ 0, 163, 149, 164, 0, 108, 0, 16, 0, 0, ++ 0, 0, 0, 171, 72, 73, 74, 75, 76, 77 + }; + + static const yytype_int16 yycheck[] = + { +- 45, 46, 56, 56, 56, 12, 4, 5, 15, 15, +- 71, 72, 73, 74, 75, 76, 8, 3, 1, 39, +- 56, 41, 42, 59, 69, 70, 9, 4, 5, 24, +- 91, 29, 38, 0, 1, 5, 21, 4, 24, 0, +- 7, 27, 55, 10, 11, 58, 5, 60, 31, 41, +- 42, 49, 39, 98, 21, 39, 41, 42, 25, 26, +- 43, 39, 0, 1, 4, 39, 4, 40, 35, 7, +- 41, 42, 10, 11, 43, 44, 45, 46, 47, 48, +- 87, 142, 5, 21, 5, 92, 39, 25, 26, 39, +- 1, 39, 137, 4, 39, 102, 7, 35, 39, 10, +- 11, 15, 156, 156, 156, 16, 17, 18, 39, 28, +- 21, 39, 157, 6, 25, 26, 5, 39, 5, 12, +- 13, 14, 15, 3, 35, 21, 19, 20, 5, 22, +- 23, 39, 39, 39, 27, 39, 6, 41, 42, 32, +- 33, 34, 12, 36, 37, 15, 139, 39, 141, 19, +- 143, 144, 42, 146, 39, 148, 1, 150, 39, 115, +- 30, 39, 32, 39, 39, 10, 11, 37, 39, 162, +- 39, 16, 17, 18, 39, 39, 21, 39, 39, 19, +- 156, 55, 55, -1, -1, -1, 106 ++ 46, 47, 12, 4, 5, 15, 72, 73, 74, 75, ++ 76, 77, 1, 8, 56, 21, 9, 59, 5, 61, ++ 9, 15, 4, 5, 70, 71, 92, 3, 29, 0, ++ 0, 1, 41, 42, 4, 41, 42, 7, 31, 24, ++ 10, 11, 31, 58, 38, 60, 41, 42, 49, 25, ++ 43, 21, 28, 99, 43, 25, 26, 5, 39, 0, ++ 1, 39, 39, 4, 4, 35, 7, 5, 5, 10, ++ 11, 39, 39, 39, 140, 41, 42, 40, 88, 39, ++ 21, 41, 42, 93, 25, 26, 39, 39, 39, 135, ++ 6, 15, 39, 103, 35, 1, 12, 39, 4, 15, ++ 28, 7, 5, 19, 10, 11, 39, 153, 39, 5, ++ 16, 17, 18, 3, 30, 21, 32, 6, 39, 25, ++ 26, 37, 5, 12, 13, 14, 15, 39, 39, 35, ++ 19, 20, 39, 22, 23, 21, 56, 42, 27, 39, ++ 39, 39, 39, 32, 33, 34, 4, 36, 37, 57, ++ 20, 39, 10, 11, 39, 39, -1, 39, 16, 17, ++ 18, 39, 137, 21, 139, 39, 141, 142, 26, 144, ++ -1, 146, 107, 148, -1, 56, -1, 35, -1, -1, ++ -1, -1, -1, 158, 43, 44, 45, 46, 47, 48 + }; + + /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of +@@ -799,56 +797,55 @@ static const yytype_int16 yycheck[] = + static const yytype_int8 yystos[] = + { + 0, 24, 51, 52, 53, 5, 0, 53, 1, 4, +- 7, 10, 11, 21, 25, 26, 35, 55, 56, 57, +- 58, 61, 62, 64, 70, 72, 74, 75, 77, 79, +- 80, 81, 93, 39, 39, 1, 9, 31, 43, 94, +- 39, 5, 4, 91, 5, 29, 49, 90, 91, 92, +- 5, 91, 5, 59, 59, 65, 54, 53, 78, 53, +- 82, 39, 40, 95, 39, 39, 90, 90, 39, 41, +- 42, 43, 44, 45, 46, 47, 48, 39, 39, 39, +- 6, 12, 13, 14, 15, 19, 20, 22, 23, 27, +- 32, 33, 34, 36, 37, 60, 67, 68, 69, 83, +- 84, 85, 12, 30, 32, 66, 68, 84, 85, 1, +- 16, 17, 18, 56, 63, 70, 73, 81, 88, 71, +- 88, 38, 85, 86, 76, 88, 85, 39, 8, 90, +- 90, 92, 92, 92, 92, 92, 92, 28, 39, 91, +- 39, 5, 92, 91, 5, 87, 90, 3, 91, 39, +- 5, 87, 39, 39, 39, 39, 54, 21, 89, 90, +- 89, 89, 92, 89, 89, 39, 89, 89, 89, 39, +- 71, 90, 39, 39, 39, 39, 89, 39, 39, 39, +- 39, 39 ++ 7, 10, 11, 21, 25, 26, 35, 54, 55, 56, ++ 57, 58, 61, 62, 64, 71, 73, 74, 75, 77, ++ 79, 80, 81, 93, 39, 39, 1, 9, 31, 43, ++ 94, 39, 5, 4, 91, 5, 29, 49, 90, 91, ++ 92, 5, 91, 5, 59, 59, 65, 70, 53, 78, ++ 53, 82, 39, 40, 95, 39, 39, 90, 90, 39, ++ 41, 42, 43, 44, 45, 46, 47, 48, 39, 39, ++ 39, 6, 12, 13, 14, 15, 19, 20, 22, 23, ++ 27, 32, 33, 34, 36, 37, 60, 67, 68, 69, ++ 83, 84, 85, 12, 30, 32, 66, 68, 84, 85, ++ 4, 16, 17, 18, 54, 63, 88, 72, 88, 38, ++ 85, 86, 76, 88, 85, 39, 8, 90, 90, 92, ++ 92, 92, 92, 92, 92, 28, 39, 91, 39, 5, ++ 92, 91, 5, 87, 90, 3, 91, 39, 5, 87, ++ 39, 39, 39, 21, 89, 90, 89, 89, 92, 89, ++ 89, 39, 89, 89, 89, 39, 90, 39, 39, 39, ++ 39, 89, 39, 39, 39, 39, 39 + }; + + /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ + static const yytype_int8 yyr1[] = + { + 0, 50, 51, 51, 52, 53, 53, 53, 53, 53, +- 53, 53, 53, 53, 53, 53, 54, 54, 54, 54, +- 54, 55, 56, 57, 58, 59, 59, 59, 59, 60, +- 60, 60, 60, 60, 60, 60, 61, 62, 63, 64, +- 65, 65, 65, 65, 66, 66, 66, 66, 67, 67, +- 67, 67, 68, 68, 69, 69, 69, 70, 71, 72, +- 73, 74, 75, 76, 77, 78, 78, 78, 79, 80, +- 81, 82, 82, 83, 84, 85, 86, 87, 87, 88, +- 88, 88, 89, 89, 90, 90, 90, 90, 90, 90, +- 90, 90, 90, 90, 90, 91, 92, 92, 93, 94, +- 94, 94, 95, 95 ++ 53, 54, 54, 54, 54, 54, 54, 55, 56, 57, ++ 58, 59, 59, 59, 59, 60, 60, 60, 60, 60, ++ 60, 60, 61, 62, 63, 64, 65, 65, 65, 65, ++ 66, 66, 66, 66, 67, 67, 67, 67, 68, 68, ++ 69, 69, 69, 70, 70, 71, 72, 73, 74, 75, ++ 76, 77, 78, 78, 78, 79, 80, 81, 82, 82, ++ 83, 84, 85, 86, 87, 87, 88, 88, 88, 89, ++ 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, ++ 90, 90, 91, 92, 92, 93, 94, 94, 94, 95, ++ 95 + }; + + /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ + static const yytype_int8 yyr2[] = + { +- 0, 2, 2, 1, 3, 0, 2, 2, 2, 2, +- 2, 2, 2, 2, 4, 3, 0, 2, 2, 2, +- 3, 3, 2, 3, 2, 0, 2, 2, 2, 3, +- 4, 4, 4, 4, 5, 2, 2, 2, 1, 3, +- 0, 2, 2, 2, 4, 3, 2, 4, 1, 1, +- 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, +- 3, 3, 2, 1, 3, 0, 2, 2, 3, 3, +- 2, 0, 2, 2, 2, 4, 3, 0, 2, 2, +- 2, 2, 0, 2, 1, 3, 3, 3, 3, 3, +- 3, 3, 2, 3, 3, 1, 1, 1, 4, 1, +- 1, 1, 0, 1 ++ 0, 2, 2, 1, 3, 0, 2, 2, 2, 4, ++ 3, 1, 1, 1, 1, 1, 1, 3, 2, 3, ++ 2, 0, 2, 2, 2, 3, 4, 4, 4, 4, ++ 5, 2, 2, 2, 1, 3, 0, 2, 2, 2, ++ 4, 3, 2, 4, 1, 1, 1, 1, 1, 1, ++ 1, 1, 1, 0, 2, 3, 1, 3, 3, 2, ++ 1, 3, 0, 2, 2, 3, 3, 2, 0, 2, ++ 2, 2, 4, 3, 0, 2, 2, 2, 2, 0, ++ 2, 1, 3, 3, 3, 3, 3, 3, 3, 2, ++ 3, 3, 1, 1, 1, 4, 1, 1, 1, 0, ++ 1 + }; + + +@@ -1348,19 +1345,15 @@ yyreduce: + } + break; + +- case 14: /* stmt_list: stmt_list T_WORD error T_EOL */ ++ case 9: /* stmt_list: stmt_list T_WORD error T_EOL */ + { zconf_error("unknown statement \"%s\"", (yyvsp[-2].string)); } + break; + +- case 15: /* stmt_list: stmt_list error T_EOL */ ++ case 10: /* stmt_list: stmt_list error T_EOL */ + { zconf_error("invalid statement"); } + break; + +- case 20: /* stmt_list_in_choice: stmt_list_in_choice error T_EOL */ +- { zconf_error("invalid statement"); } +- break; +- +- case 21: /* config_entry_start: T_CONFIG nonconst_symbol T_EOL */ ++ case 17: /* config_entry_start: T_CONFIG nonconst_symbol T_EOL */ + { + (yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL; + menu_add_entry((yyvsp[-1].symbol)); +@@ -1368,13 +1361,13 @@ yyreduce: + } + break; + +- case 22: /* config_stmt: config_entry_start config_option_list */ ++ case 18: /* config_stmt: config_entry_start config_option_list */ + { + printd(DEBUG_PARSE, "%s:%d:endconfig\n", cur_filename, cur_lineno); + } + break; + +- case 23: /* menuconfig_entry_start: T_MENUCONFIG nonconst_symbol T_EOL */ ++ case 19: /* menuconfig_entry_start: T_MENUCONFIG nonconst_symbol T_EOL */ + { + (yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL; + menu_add_entry((yyvsp[-1].symbol)); +@@ -1382,7 +1375,7 @@ yyreduce: + } + break; + +- case 24: /* menuconfig_stmt: menuconfig_entry_start config_option_list */ ++ case 20: /* menuconfig_stmt: menuconfig_entry_start config_option_list */ + { + if (current_entry->prompt) + current_entry->prompt->type = P_MENU; +@@ -1392,21 +1385,21 @@ yyreduce: + } + break; + +- case 29: /* config_option: type prompt_stmt_opt T_EOL */ ++ case 25: /* config_option: type prompt_stmt_opt T_EOL */ + { + menu_set_type((yyvsp[-2].type)); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", cur_filename, cur_lineno, (yyvsp[-2].type)); + } + break; + +- case 30: /* config_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL */ ++ case 26: /* config_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL */ + { + menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:prompt\n", cur_filename, cur_lineno); + } + break; + +- case 31: /* config_option: default expr if_expr T_EOL */ ++ case 27: /* config_option: default expr if_expr T_EOL */ + { + menu_add_expr(P_DEFAULT, (yyvsp[-2].expr), (yyvsp[-1].expr)); + if ((yyvsp[-3].type) != S_UNKNOWN) +@@ -1416,28 +1409,28 @@ yyreduce: + } + break; + +- case 32: /* config_option: T_SELECT nonconst_symbol if_expr T_EOL */ ++ case 28: /* config_option: T_SELECT nonconst_symbol if_expr T_EOL */ + { + menu_add_symbol(P_SELECT, (yyvsp[-2].symbol), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:select\n", cur_filename, cur_lineno); + } + break; + +- case 33: /* config_option: T_IMPLY nonconst_symbol if_expr T_EOL */ ++ case 29: /* config_option: T_IMPLY nonconst_symbol if_expr T_EOL */ + { + menu_add_symbol(P_IMPLY, (yyvsp[-2].symbol), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:imply\n", cur_filename, cur_lineno); + } + break; + +- case 34: /* config_option: T_RANGE symbol symbol if_expr T_EOL */ ++ case 30: /* config_option: T_RANGE symbol symbol if_expr T_EOL */ + { + menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[-3].symbol), (yyvsp[-2].symbol)), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:range\n", cur_filename, cur_lineno); + } + break; + +- case 35: /* config_option: T_MODULES T_EOL */ ++ case 31: /* config_option: T_MODULES T_EOL */ + { + if (modules_sym) + zconf_error("symbol '%s' redefines option 'modules' already defined by symbol '%s'", +@@ -1446,7 +1439,7 @@ yyreduce: + } + break; + +- case 36: /* choice: T_CHOICE T_EOL */ ++ case 32: /* choice: T_CHOICE T_EOL */ + { + struct symbol *sym = sym_lookup(NULL, SYMBOL_CHOICE); + sym->flags |= SYMBOL_NO_WRITE; +@@ -1456,7 +1449,7 @@ yyreduce: + } + break; + +- case 37: /* choice_entry: choice choice_option_list */ ++ case 33: /* choice_entry: choice choice_option_list */ + { + if (!current_entry->prompt) { + fprintf(stderr, "%s:%d: error: choice must have a prompt\n", +@@ -1468,7 +1461,7 @@ yyreduce: + } + break; + +- case 38: /* choice_end: end */ ++ case 34: /* choice_end: end */ + { + if (zconf_endtoken((yyvsp[0].string), "choice")) { + menu_end_menu(); +@@ -1477,67 +1470,67 @@ yyreduce: + } + break; + +- case 44: /* choice_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL */ ++ case 40: /* choice_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL */ + { + menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:prompt\n", cur_filename, cur_lineno); + } + break; + +- case 45: /* choice_option: logic_type prompt_stmt_opt T_EOL */ ++ case 41: /* choice_option: logic_type prompt_stmt_opt T_EOL */ + { + menu_set_type((yyvsp[-2].type)); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", cur_filename, cur_lineno, (yyvsp[-2].type)); + } + break; + +- case 46: /* choice_option: T_OPTIONAL T_EOL */ ++ case 42: /* choice_option: T_OPTIONAL T_EOL */ + { + current_entry->sym->flags |= SYMBOL_OPTIONAL; + printd(DEBUG_PARSE, "%s:%d:optional\n", cur_filename, cur_lineno); + } + break; + +- case 47: /* choice_option: T_DEFAULT nonconst_symbol if_expr T_EOL */ ++ case 43: /* choice_option: T_DEFAULT nonconst_symbol if_expr T_EOL */ + { + menu_add_symbol(P_DEFAULT, (yyvsp[-2].symbol), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:default\n", cur_filename, cur_lineno); + } + break; + +- case 49: /* type: T_INT */ ++ case 45: /* type: T_INT */ + { (yyval.type) = S_INT; } + break; + +- case 50: /* type: T_HEX */ ++ case 46: /* type: T_HEX */ + { (yyval.type) = S_HEX; } + break; + +- case 51: /* type: T_STRING */ ++ case 47: /* type: T_STRING */ + { (yyval.type) = S_STRING; } + break; + +- case 52: /* logic_type: T_BOOL */ ++ case 48: /* logic_type: T_BOOL */ + { (yyval.type) = S_BOOLEAN; } + break; + +- case 53: /* logic_type: T_TRISTATE */ ++ case 49: /* logic_type: T_TRISTATE */ + { (yyval.type) = S_TRISTATE; } + break; + +- case 54: /* default: T_DEFAULT */ ++ case 50: /* default: T_DEFAULT */ + { (yyval.type) = S_UNKNOWN; } + break; + +- case 55: /* default: T_DEF_BOOL */ ++ case 51: /* default: T_DEF_BOOL */ + { (yyval.type) = S_BOOLEAN; } + break; + +- case 56: /* default: T_DEF_TRISTATE */ ++ case 52: /* default: T_DEF_TRISTATE */ + { (yyval.type) = S_TRISTATE; } + break; + +- case 57: /* if_entry: T_IF expr T_EOL */ ++ case 55: /* if_entry: T_IF expr T_EOL */ + { + printd(DEBUG_PARSE, "%s:%d:if\n", cur_filename, cur_lineno); + menu_add_entry(NULL); +@@ -1546,7 +1539,7 @@ yyreduce: + } + break; + +- case 58: /* if_end: end */ ++ case 56: /* if_end: end */ + { + if (zconf_endtoken((yyvsp[0].string), "if")) { + menu_end_menu(); +@@ -1555,7 +1548,7 @@ yyreduce: + } + break; + +- case 61: /* menu: T_MENU T_WORD_QUOTE T_EOL */ ++ case 58: /* menu: T_MENU T_WORD_QUOTE T_EOL */ + { + menu_add_entry(NULL); + menu_add_prompt(P_MENU, (yyvsp[-1].string), NULL); +@@ -1563,13 +1556,13 @@ yyreduce: + } + break; + +- case 62: /* menu_entry: menu menu_option_list */ ++ case 59: /* menu_entry: menu menu_option_list */ + { + (yyval.menu) = menu_add_menu(); + } + break; + +- case 63: /* menu_end: end */ ++ case 60: /* menu_end: end */ + { + if (zconf_endtoken((yyvsp[0].string), "menu")) { + menu_end_menu(); +@@ -1578,7 +1571,7 @@ yyreduce: + } + break; + +- case 68: /* source_stmt: T_SOURCE T_WORD_QUOTE T_EOL */ ++ case 65: /* source_stmt: T_SOURCE T_WORD_QUOTE T_EOL */ + { + printd(DEBUG_PARSE, "%s:%d:source %s\n", cur_filename, cur_lineno, (yyvsp[-1].string)); + zconf_nextfile((yyvsp[-1].string)); +@@ -1586,7 +1579,7 @@ yyreduce: + } + break; + +- case 69: /* comment: T_COMMENT T_WORD_QUOTE T_EOL */ ++ case 66: /* comment: T_COMMENT T_WORD_QUOTE T_EOL */ + { + menu_add_entry(NULL); + menu_add_prompt(P_COMMENT, (yyvsp[-1].string), NULL); +@@ -1594,14 +1587,14 @@ yyreduce: + } + break; + +- case 73: /* help_start: T_HELP T_EOL */ ++ case 70: /* help_start: T_HELP T_EOL */ + { + printd(DEBUG_PARSE, "%s:%d:help\n", cur_filename, cur_lineno); + zconf_starthelp(); + } + break; + +- case 74: /* help: help_start T_HELPTEXT */ ++ case 71: /* help: help_start T_HELPTEXT */ + { + if (current_entry->help) { + free(current_entry->help); +@@ -1618,114 +1611,114 @@ yyreduce: + } + break; + +- case 75: /* depends: T_DEPENDS T_ON expr T_EOL */ ++ case 72: /* depends: T_DEPENDS T_ON expr T_EOL */ + { + menu_add_dep((yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:depends on\n", cur_filename, cur_lineno); + } + break; + +- case 76: /* visible: T_VISIBLE if_expr T_EOL */ ++ case 73: /* visible: T_VISIBLE if_expr T_EOL */ + { + menu_add_visibility((yyvsp[-1].expr)); + } + break; + +- case 78: /* prompt_stmt_opt: T_WORD_QUOTE if_expr */ ++ case 75: /* prompt_stmt_opt: T_WORD_QUOTE if_expr */ + { + menu_add_prompt(P_PROMPT, (yyvsp[-1].string), (yyvsp[0].expr)); + } + break; + +- case 79: /* end: T_ENDMENU T_EOL */ ++ case 76: /* end: T_ENDMENU T_EOL */ + { (yyval.string) = "menu"; } + break; + +- case 80: /* end: T_ENDCHOICE T_EOL */ ++ case 77: /* end: T_ENDCHOICE T_EOL */ + { (yyval.string) = "choice"; } + break; + +- case 81: /* end: T_ENDIF T_EOL */ ++ case 78: /* end: T_ENDIF T_EOL */ + { (yyval.string) = "if"; } + break; + +- case 82: /* if_expr: %empty */ ++ case 79: /* if_expr: %empty */ + { (yyval.expr) = NULL; } + break; + +- case 83: /* if_expr: T_IF expr */ ++ case 80: /* if_expr: T_IF expr */ + { (yyval.expr) = (yyvsp[0].expr); } + break; + +- case 84: /* expr: symbol */ ++ case 81: /* expr: symbol */ + { (yyval.expr) = expr_alloc_symbol((yyvsp[0].symbol)); } + break; + +- case 85: /* expr: symbol T_LESS symbol */ ++ case 82: /* expr: symbol T_LESS symbol */ + { (yyval.expr) = expr_alloc_comp(E_LTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + +- case 86: /* expr: symbol T_LESS_EQUAL symbol */ ++ case 83: /* expr: symbol T_LESS_EQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_LEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + +- case 87: /* expr: symbol T_GREATER symbol */ ++ case 84: /* expr: symbol T_GREATER symbol */ + { (yyval.expr) = expr_alloc_comp(E_GTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + +- case 88: /* expr: symbol T_GREATER_EQUAL symbol */ ++ case 85: /* expr: symbol T_GREATER_EQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_GEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + +- case 89: /* expr: symbol T_EQUAL symbol */ ++ case 86: /* expr: symbol T_EQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + +- case 90: /* expr: symbol T_UNEQUAL symbol */ ++ case 87: /* expr: symbol T_UNEQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + +- case 91: /* expr: T_OPEN_PAREN expr T_CLOSE_PAREN */ ++ case 88: /* expr: T_OPEN_PAREN expr T_CLOSE_PAREN */ + { (yyval.expr) = (yyvsp[-1].expr); } + break; + +- case 92: /* expr: T_NOT expr */ ++ case 89: /* expr: T_NOT expr */ + { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[0].expr)); } + break; + +- case 93: /* expr: expr T_OR expr */ ++ case 90: /* expr: expr T_OR expr */ + { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[-2].expr), (yyvsp[0].expr)); } + break; + +- case 94: /* expr: expr T_AND expr */ ++ case 91: /* expr: expr T_AND expr */ + { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); } + break; + +- case 95: /* nonconst_symbol: T_WORD */ ++ case 92: /* nonconst_symbol: T_WORD */ + { (yyval.symbol) = sym_lookup((yyvsp[0].string), 0); free((yyvsp[0].string)); } + break; + +- case 97: /* symbol: T_WORD_QUOTE */ ++ case 94: /* symbol: T_WORD_QUOTE */ + { (yyval.symbol) = sym_lookup((yyvsp[0].string), SYMBOL_CONST); free((yyvsp[0].string)); } + break; + +- case 98: /* assignment_stmt: T_WORD assign_op assign_val T_EOL */ ++ case 95: /* assignment_stmt: T_WORD assign_op assign_val T_EOL */ + { variable_add((yyvsp[-3].string), (yyvsp[-1].string), (yyvsp[-2].flavor)); free((yyvsp[-3].string)); free((yyvsp[-1].string)); } + break; + +- case 99: /* assign_op: T_EQUAL */ ++ case 96: /* assign_op: T_EQUAL */ + { (yyval.flavor) = VAR_RECURSIVE; } + break; + +- case 100: /* assign_op: T_COLON_EQUAL */ ++ case 97: /* assign_op: T_COLON_EQUAL */ + { (yyval.flavor) = VAR_SIMPLE; } + break; + +- case 101: /* assign_op: T_PLUS_EQUAL */ ++ case 98: /* assign_op: T_PLUS_EQUAL */ + { (yyval.flavor) = VAR_APPEND; } + break; + +- case 102: /* assign_val: %empty */ ++ case 99: /* assign_val: %empty */ + { (yyval.string) = xstrdup(""); } + break; + +diff --git a/parser.y b/parser.y +index 7fb9966..9873e84 100644 +--- a/parser.y ++++ b/parser.y +@@ -116,24 +116,20 @@ mainmenu_stmt: T_MAINMENU T_WORD_QUOTE T_EOL + + stmt_list: + /* empty */ +- | stmt_list assignment_stmt ++ | stmt_list common_stmt + | stmt_list choice_stmt +- | stmt_list comment_stmt +- | stmt_list config_stmt +- | stmt_list if_stmt + | stmt_list menu_stmt +- | stmt_list menuconfig_stmt +- | stmt_list source_stmt + | stmt_list T_WORD error T_EOL { zconf_error("unknown statement \"%s\"", $2); } + | stmt_list error T_EOL { zconf_error("invalid statement"); } + ; + +-stmt_list_in_choice: +- /* empty */ +- | stmt_list_in_choice comment_stmt +- | stmt_list_in_choice config_stmt +- | stmt_list_in_choice if_stmt_in_choice +- | stmt_list_in_choice error T_EOL { zconf_error("invalid statement"); } ++common_stmt: ++ if_stmt ++ | comment_stmt ++ | config_stmt ++ | menuconfig_stmt ++ | source_stmt ++ | assignment_stmt + ; + + /* config/menuconfig entry */ +@@ -250,7 +246,7 @@ choice_end: end + } + }; + +-choice_stmt: choice_entry stmt_list_in_choice choice_end ++choice_stmt: choice_entry choice_block choice_end + ; + + choice_option_list: +@@ -299,6 +295,11 @@ default: + | T_DEF_BOOL { $$ = S_BOOLEAN; } + | T_DEF_TRISTATE { $$ = S_TRISTATE; } + ++choice_block: ++ /* empty */ ++ | choice_block common_stmt ++; ++ + /* if entry */ + + if_entry: T_IF expr T_EOL +@@ -320,9 +321,6 @@ if_end: end + if_stmt: if_entry stmt_list if_end + ; + +-if_stmt_in_choice: if_entry stmt_list_in_choice if_end +-; +- + /* menu entry */ + + menu: T_MENU T_WORD_QUOTE T_EOL diff --git a/support/kconfig/patches/series b/support/kconfig/patches/series index f120e323b7..e68a83a550 100644 --- a/support/kconfig/patches/series +++ b/support/kconfig/patches/series @@ -1,13 +1,9 @@ 01-kconfig-kernel-to-buildroot.patch 06-br-build-system-integration.patch 10-br-build-system.patch -11-use-mktemp-for-lxdialog.patch 12-fix-glade-file-path.patch 14-support-out-of-tree-config.patch 16-fix-space-to-de-select-options.patch -17-backport-kecho.patch 18-merge-config.sh-create-temporary-files-in-tmp.patch 19-merge_config.sh-add-br2-external-support.patch -20-merge_config.sh-Allow-to-define-config-prefix.patch -21-Avoid-false-positive-matches-from-comment-lines.patch -22-kconfig-lxdialog-fix-check-with-GCC14.patch +23-Revert-kconfig-allow-only-config-comment-and-if-insi.patch diff --git a/support/kconfig/preprocess.c b/support/kconfig/preprocess.c new file mode 100644 index 0000000000..f0a4a218c4 --- /dev/null +++ b/support/kconfig/preprocess.c @@ -0,0 +1,580 @@ +// SPDX-License-Identifier: GPL-2.0 +// +// Copyright (C) 2018 Masahiro Yamada + +#include +#include +#include +#include +#include +#include + +#include "array_size.h" +#include "internal.h" +#include "list.h" +#include "lkc.h" +#include "preprocess.h" + +static char *expand_string_with_args(const char *in, int argc, char *argv[]); +static char *expand_string(const char *in); + +static void __attribute__((noreturn)) pperror(const char *format, ...) +{ + va_list ap; + + fprintf(stderr, "%s:%d: ", cur_filename, yylineno); + va_start(ap, format); + vfprintf(stderr, format, ap); + va_end(ap); + fprintf(stderr, "\n"); + + exit(1); +} + +/* + * Environment variables + */ +static LIST_HEAD(env_list); + +struct env { + char *name; + char *value; + struct list_head node; +}; + +static void env_add(const char *name, const char *value) +{ + struct env *e; + + e = xmalloc(sizeof(*e)); + e->name = xstrdup(name); + e->value = xstrdup(value); + + list_add_tail(&e->node, &env_list); +} + +static void env_del(struct env *e) +{ + list_del(&e->node); + free(e->name); + free(e->value); + free(e); +} + +/* The returned pointer must be freed when done */ +static char *env_expand(const char *name) +{ + struct env *e; + const char *value; + + if (!*name) + return NULL; + + list_for_each_entry(e, &env_list, node) { + if (!strcmp(name, e->name)) + return xstrdup(e->value); + } + + value = getenv(name); + if (!value) + return NULL; + + /* + * We need to remember all referenced environment variables. + * They will be written out to include/config/auto.conf.cmd + */ + env_add(name, value); + + return xstrdup(value); +} + +void env_write_dep(struct gstr *s) +{ + struct env *e, *tmp; + + list_for_each_entry_safe(e, tmp, &env_list, node) { + str_printf(s, + "\n" + "ifneq \"$(%s)\" \"%s\"\n" + "$(autoconfig): FORCE\n" + "endif\n", + e->name, e->value); + env_del(e); + } +} + +/* + * Built-in functions + */ +struct function { + const char *name; + unsigned int min_args; + unsigned int max_args; + char *(*func)(int argc, char *argv[]); +}; + +static char *do_error_if(int argc, char *argv[]) +{ + if (!strcmp(argv[0], "y")) + pperror("%s", argv[1]); + + return xstrdup(""); +} + +static char *do_filename(int argc, char *argv[]) +{ + return xstrdup(cur_filename); +} + +static char *do_info(int argc, char *argv[]) +{ + printf("%s\n", argv[0]); + + return xstrdup(""); +} + +static char *do_lineno(int argc, char *argv[]) +{ + char buf[16]; + + sprintf(buf, "%d", yylineno); + + return xstrdup(buf); +} + +static char *do_shell(int argc, char *argv[]) +{ + FILE *p; + char buf[4096]; + char *cmd; + size_t nread; + int i; + + cmd = argv[0]; + + p = popen(cmd, "r"); + if (!p) { + perror(cmd); + exit(1); + } + + nread = fread(buf, 1, sizeof(buf), p); + if (nread == sizeof(buf)) + nread--; + + /* remove trailing new lines */ + while (nread > 0 && buf[nread - 1] == '\n') + nread--; + + buf[nread] = 0; + + /* replace a new line with a space */ + for (i = 0; i < nread; i++) { + if (buf[i] == '\n') + buf[i] = ' '; + } + + if (pclose(p) == -1) { + perror(cmd); + exit(1); + } + + return xstrdup(buf); +} + +static char *do_warning_if(int argc, char *argv[]) +{ + if (!strcmp(argv[0], "y")) + fprintf(stderr, "%s:%d: %s\n", cur_filename, yylineno, argv[1]); + + return xstrdup(""); +} + +static const struct function function_table[] = { + /* Name MIN MAX Function */ + { "error-if", 2, 2, do_error_if }, + { "filename", 0, 0, do_filename }, + { "info", 1, 1, do_info }, + { "lineno", 0, 0, do_lineno }, + { "shell", 1, 1, do_shell }, + { "warning-if", 2, 2, do_warning_if }, +}; + +#define FUNCTION_MAX_ARGS 16 + +static char *function_expand(const char *name, int argc, char *argv[]) +{ + const struct function *f; + int i; + + for (i = 0; i < ARRAY_SIZE(function_table); i++) { + f = &function_table[i]; + if (strcmp(f->name, name)) + continue; + + if (argc < f->min_args) + pperror("too few function arguments passed to '%s'", + name); + + if (argc > f->max_args) + pperror("too many function arguments passed to '%s'", + name); + + return f->func(argc, argv); + } + + return NULL; +} + +/* + * Variables (and user-defined functions) + */ +static LIST_HEAD(variable_list); + +struct variable { + char *name; + char *value; + enum variable_flavor flavor; + int exp_count; + struct list_head node; +}; + +static struct variable *variable_lookup(const char *name) +{ + struct variable *v; + + list_for_each_entry(v, &variable_list, node) { + if (!strcmp(name, v->name)) + return v; + } + + return NULL; +} + +static char *variable_expand(const char *name, int argc, char *argv[]) +{ + struct variable *v; + char *res; + + v = variable_lookup(name); + if (!v) + return NULL; + + if (argc == 0 && v->exp_count) + pperror("Recursive variable '%s' references itself (eventually)", + name); + + if (v->exp_count > 1000) + pperror("Too deep recursive expansion"); + + v->exp_count++; + + if (v->flavor == VAR_RECURSIVE) + res = expand_string_with_args(v->value, argc, argv); + else + res = xstrdup(v->value); + + v->exp_count--; + + return res; +} + +void variable_add(const char *name, const char *value, + enum variable_flavor flavor) +{ + struct variable *v; + char *new_value; + bool append = false; + + v = variable_lookup(name); + if (v) { + /* For defined variables, += inherits the existing flavor */ + if (flavor == VAR_APPEND) { + flavor = v->flavor; + append = true; + } else { + free(v->value); + } + } else { + /* For undefined variables, += assumes the recursive flavor */ + if (flavor == VAR_APPEND) + flavor = VAR_RECURSIVE; + + v = xmalloc(sizeof(*v)); + v->name = xstrdup(name); + v->exp_count = 0; + list_add_tail(&v->node, &variable_list); + } + + v->flavor = flavor; + + if (flavor == VAR_SIMPLE) + new_value = expand_string(value); + else + new_value = xstrdup(value); + + if (append) { + v->value = xrealloc(v->value, + strlen(v->value) + strlen(new_value) + 2); + strcat(v->value, " "); + strcat(v->value, new_value); + free(new_value); + } else { + v->value = new_value; + } +} + +static void variable_del(struct variable *v) +{ + list_del(&v->node); + free(v->name); + free(v->value); + free(v); +} + +void variable_all_del(void) +{ + struct variable *v, *tmp; + + list_for_each_entry_safe(v, tmp, &variable_list, node) + variable_del(v); +} + +/* + * Evaluate a clause with arguments. argc/argv are arguments from the upper + * function call. + * + * Returned string must be freed when done + */ +static char *eval_clause(const char *str, size_t len, int argc, char *argv[]) +{ + char *tmp, *name, *res, *endptr, *prev, *p; + int new_argc = 0; + char *new_argv[FUNCTION_MAX_ARGS]; + int nest = 0; + int i; + unsigned long n; + + tmp = xstrndup(str, len); + + /* + * If variable name is '1', '2', etc. It is generally an argument + * from a user-function call (i.e. local-scope variable). If not + * available, then look-up global-scope variables. + */ + n = strtoul(tmp, &endptr, 10); + if (!*endptr && n > 0 && n <= argc) { + res = xstrdup(argv[n - 1]); + goto free_tmp; + } + + prev = p = tmp; + + /* + * Split into tokens + * The function name and arguments are separated by a comma. + * For example, if the function call is like this: + * $(foo,$(x),$(y)) + * + * The input string for this helper should be: + * foo,$(x),$(y) + * + * and split into: + * new_argv[0] = 'foo' + * new_argv[1] = '$(x)' + * new_argv[2] = '$(y)' + */ + while (*p) { + if (nest == 0 && *p == ',') { + *p = 0; + if (new_argc >= FUNCTION_MAX_ARGS) + pperror("too many function arguments"); + new_argv[new_argc++] = prev; + prev = p + 1; + } else if (*p == '(') { + nest++; + } else if (*p == ')') { + nest--; + } + + p++; + } + + if (new_argc >= FUNCTION_MAX_ARGS) + pperror("too many function arguments"); + new_argv[new_argc++] = prev; + + /* + * Shift arguments + * new_argv[0] represents a function name or a variable name. Put it + * into 'name', then shift the rest of the arguments. This simplifies + * 'const' handling. + */ + name = expand_string_with_args(new_argv[0], argc, argv); + new_argc--; + for (i = 0; i < new_argc; i++) + new_argv[i] = expand_string_with_args(new_argv[i + 1], + argc, argv); + + /* Search for variables */ + res = variable_expand(name, new_argc, new_argv); + if (res) + goto free; + + /* Look for built-in functions */ + res = function_expand(name, new_argc, new_argv); + if (res) + goto free; + + /* Last, try environment variable */ + if (new_argc == 0) { + res = env_expand(name); + if (res) + goto free; + } + + res = xstrdup(""); +free: + for (i = 0; i < new_argc; i++) + free(new_argv[i]); + free(name); +free_tmp: + free(tmp); + + return res; +} + +/* + * Expand a string that follows '$' + * + * For example, if the input string is + * ($(FOO)$($(BAR)))$(BAZ) + * this helper evaluates + * $($(FOO)$($(BAR))) + * and returns a new string containing the expansion (note that the string is + * recursively expanded), also advancing 'str' to point to the next character + * after the corresponding closing parenthesis, in this case, *str will be + * $(BAR) + */ +static char *expand_dollar_with_args(const char **str, int argc, char *argv[]) +{ + const char *p = *str; + const char *q; + int nest = 0; + + /* + * In Kconfig, variable/function references always start with "$(". + * Neither single-letter variables as in $A nor curly braces as in ${CC} + * are supported. '$' not followed by '(' loses its special meaning. + */ + if (*p != '(') { + *str = p; + return xstrdup("$"); + } + + p++; + q = p; + while (*q) { + if (*q == '(') { + nest++; + } else if (*q == ')') { + if (nest-- == 0) + break; + } + q++; + } + + if (!*q) + pperror("unterminated reference to '%s': missing ')'", p); + + /* Advance 'str' to after the expanded initial portion of the string */ + *str = q + 1; + + return eval_clause(p, q - p, argc, argv); +} + +char *expand_dollar(const char **str) +{ + return expand_dollar_with_args(str, 0, NULL); +} + +static char *__expand_string(const char **str, bool (*is_end)(char c), + int argc, char *argv[]) +{ + const char *in, *p; + char *expansion, *out; + size_t in_len, out_len; + + out = xmalloc(1); + *out = 0; + out_len = 1; + + p = in = *str; + + while (1) { + if (*p == '$') { + in_len = p - in; + p++; + expansion = expand_dollar_with_args(&p, argc, argv); + out_len += in_len + strlen(expansion); + out = xrealloc(out, out_len); + strncat(out, in, in_len); + strcat(out, expansion); + free(expansion); + in = p; + continue; + } + + if (is_end(*p)) + break; + + p++; + } + + in_len = p - in; + out_len += in_len; + out = xrealloc(out, out_len); + strncat(out, in, in_len); + + /* Advance 'str' to the end character */ + *str = p; + + return out; +} + +static bool is_end_of_str(char c) +{ + return !c; +} + +/* + * Expand variables and functions in the given string. Undefined variables + * expand to an empty string. + * The returned string must be freed when done. + */ +static char *expand_string_with_args(const char *in, int argc, char *argv[]) +{ + return __expand_string(&in, is_end_of_str, argc, argv); +} + +static char *expand_string(const char *in) +{ + return expand_string_with_args(in, 0, NULL); +} + +static bool is_end_of_token(char c) +{ + return !(isalnum(c) || c == '_' || c == '-'); +} + +/* + * Expand variables in a token. The parsing stops when a token separater + * (in most cases, it is a whitespace) is encountered. 'str' is updated to + * point to the next character. + * + * The returned string must be freed when done. + */ +char *expand_one_token(const char **str) +{ + return __expand_string(str, is_end_of_token, 0, NULL); +} diff --git a/support/kconfig/preprocess.h b/support/kconfig/preprocess.h new file mode 100644 index 0000000000..a7e4a55063 --- /dev/null +++ b/support/kconfig/preprocess.h @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +#ifndef PREPROCESS_H +#define PREPROCESS_H + +enum variable_flavor { + VAR_SIMPLE, + VAR_RECURSIVE, + VAR_APPEND, +}; + +struct gstr; +void env_write_dep(struct gstr *gs); +void variable_add(const char *name, const char *value, + enum variable_flavor flavor); +void variable_all_del(void); +char *expand_dollar(const char **str); +char *expand_one_token(const char **str); + +#endif /* PREPROCESS_H */ diff --git a/support/kconfig/qconf-cfg.sh b/support/kconfig/qconf-cfg.sh new file mode 100755 index 0000000000..0e113b0f24 --- /dev/null +++ b/support/kconfig/qconf-cfg.sh @@ -0,0 +1,40 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +cflags=$1 +libs=$2 +bin=$3 + +PKG5="Qt5Core Qt5Gui Qt5Widgets" +PKG6="Qt6Core Qt6Gui Qt6Widgets" + +if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then + echo >&2 "*" + echo >&2 "* 'make xconfig' requires '${HOSTPKG_CONFIG}'. Please install it." + echo >&2 "*" + exit 1 +fi + +if ${HOSTPKG_CONFIG} --exists $PKG6; then + ${HOSTPKG_CONFIG} --cflags ${PKG6} > ${cflags} + # Qt6 requires C++17. + echo -std=c++17 >> ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG6} > ${libs} + ${HOSTPKG_CONFIG} --variable=libexecdir Qt6Core > ${bin} + exit 0 +fi + +if ${HOSTPKG_CONFIG} --exists $PKG5; then + ${HOSTPKG_CONFIG} --cflags ${PKG5} > ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG5} > ${libs} + ${HOSTPKG_CONFIG} --variable=host_bins Qt5Core > ${bin} + exit 0 +fi + +echo >&2 "*" +echo >&2 "* Could not find Qt6 or Qt5 via ${HOSTPKG_CONFIG}." +echo >&2 "* Please install Qt6 or Qt5 and make sure it's in PKG_CONFIG_PATH" +echo >&2 "* You need $PKG6 for Qt6" +echo >&2 "* You need $PKG5 for Qt5" +echo >&2 "*" +exit 1 diff --git a/support/kconfig/qconf.cc b/support/kconfig/qconf.cc index 7896b584c8..50c3ccd027 100644 --- a/support/kconfig/qconf.cc +++ b/support/kconfig/qconf.cc @@ -1,59 +1,38 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel * Copyright (C) 2015 Boris Barbulovski - * Released under the terms of the GNU GPL v2.0. */ -#include - -#include -#include -#include #include +#include +#include +#include +#include #include +#include +#include +#include #include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include "lkc.h" #include "qconf.h" -#include "qconf.moc" -#include "images.c" +#include "images.h" -#ifdef _ -# undef _ -# define _ qgettext -#endif static QApplication *configApp; static ConfigSettings *configSettings; QAction *ConfigMainWindow::saveAction; -static inline QString qgettext(const char* str) -{ - return QString::fromLocal8Bit(gettext(str)); -} - -static inline QString qgettext(const QString& str) -{ - return QString::fromLocal8Bit(gettext(str.toLatin1())); -} - ConfigSettings::ConfigSettings() : QSettings("buildroot.org", "qconf") { @@ -97,14 +76,13 @@ bool ConfigSettings::writeSizes(const QString& key, const QList& value) return true; } - -/* - * set the new data - * TODO check the value - */ -void ConfigItem::okRename(int col) -{ -} +QIcon ConfigItem::symbolYesIcon; +QIcon ConfigItem::symbolModIcon; +QIcon ConfigItem::symbolNoIcon; +QIcon ConfigItem::choiceYesIcon; +QIcon ConfigItem::choiceNoIcon; +QIcon ConfigItem::menuIcon; +QIcon ConfigItem::menubackIcon; /* * update the displayed of a menu entry @@ -120,14 +98,14 @@ void ConfigItem::updateMenu(void) list = listView(); if (goParent) { - setPixmap(promptColIdx, list->menuBackPix); + setIcon(promptColIdx, menubackIcon); prompt = ".."; goto set_prompt; } sym = menu->sym; prop = menu->prompt; - prompt = _(menu_get_prompt(menu)); + prompt = menu_get_prompt(menu); if (prop) switch (prop->type) { case P_MENU: @@ -137,15 +115,16 @@ void ConfigItem::updateMenu(void) */ if (sym && list->rootEntry == menu) break; - setPixmap(promptColIdx, list->menuPix); + setIcon(promptColIdx, menuIcon); } else { if (sym) break; - setPixmap(promptColIdx, QIcon()); + setIcon(promptColIdx, QIcon()); } goto set_prompt; case P_COMMENT: - setPixmap(promptColIdx, QIcon()); + setIcon(promptColIdx, QIcon()); + prompt = "*** " + prompt + " ***"; goto set_prompt; default: ; @@ -153,7 +132,7 @@ void ConfigItem::updateMenu(void) if (!sym) goto set_prompt; - setText(nameColIdx, QString::fromLocal8Bit(sym->name)); + setText(nameColIdx, sym->name); type = sym_get_type(sym); switch (type) { @@ -161,62 +140,42 @@ void ConfigItem::updateMenu(void) case S_TRISTATE: char ch; - if (!sym_is_changable(sym) && list->optMode == normalOpt) { - setPixmap(promptColIdx, QIcon()); - setText(noColIdx, QString::null); - setText(modColIdx, QString::null); - setText(yesColIdx, QString::null); + if (!sym_is_changeable(sym) && list->optMode == normalOpt) { + setIcon(promptColIdx, QIcon()); break; } expr = sym_get_tristate_value(sym); switch (expr) { case yes: if (sym_is_choice_value(sym) && type == S_BOOLEAN) - setPixmap(promptColIdx, list->choiceYesPix); + setIcon(promptColIdx, choiceYesIcon); else - setPixmap(promptColIdx, list->symbolYesPix); - setText(yesColIdx, "Y"); + setIcon(promptColIdx, symbolYesIcon); ch = 'Y'; break; case mod: - setPixmap(promptColIdx, list->symbolModPix); - setText(modColIdx, "M"); + setIcon(promptColIdx, symbolModIcon); ch = 'M'; break; default: if (sym_is_choice_value(sym) && type == S_BOOLEAN) - setPixmap(promptColIdx, list->choiceNoPix); + setIcon(promptColIdx, choiceNoIcon); else - setPixmap(promptColIdx, list->symbolNoPix); - setText(noColIdx, "N"); + setIcon(promptColIdx, symbolNoIcon); ch = 'N'; break; } - if (expr != no) - setText(noColIdx, sym_tristate_within_range(sym, no) ? "_" : 0); - if (expr != mod) - setText(modColIdx, sym_tristate_within_range(sym, mod) ? "_" : 0); - if (expr != yes) - setText(yesColIdx, sym_tristate_within_range(sym, yes) ? "_" : 0); setText(dataColIdx, QChar(ch)); break; case S_INT: case S_HEX: case S_STRING: - const char* data; - - data = sym_get_string_value(sym); - - setText(dataColIdx, data); - if (type == S_STRING) - prompt = QString("%1: %2").arg(prompt).arg(data); - else - prompt = QString("(%2) %1").arg(prompt).arg(data); + setText(dataColIdx, sym_get_string_value(sym)); break; } if (!sym_has_value(sym) && visible) - prompt += _(" (NEW)"); + prompt += " (NEW)"; set_prompt: setText(promptColIdx, prompt); } @@ -253,6 +212,17 @@ void ConfigItem::init(void) if (list->mode != fullMode) setExpanded(true); sym_calc_value(menu->sym); + + if (menu->sym) { + enum symbol_type type = menu->sym->type; + + // Allow to edit "int", "hex", and "string" in-place in + // the data column. Unfortunately, you cannot specify + // the flags per column. Set ItemIsEditable for all + // columns here, and check the column in createEditor(). + if (type == S_INT || type == S_HEX || type == S_STRING) + setFlags(flags() | Qt::ItemIsEditable); + } } updateMenu(); } @@ -273,53 +243,67 @@ ConfigItem::~ConfigItem(void) } } -ConfigLineEdit::ConfigLineEdit(ConfigView* parent) - : Parent(parent) +QWidget *ConfigItemDelegate::createEditor(QWidget *parent, + const QStyleOptionViewItem &option, + const QModelIndex &index) const { - connect(this, SIGNAL(editingFinished()), SLOT(hide())); -} + ConfigItem *item; -void ConfigLineEdit::show(ConfigItem* i) -{ - item = i; - if (sym_get_string_value(item->menu->sym)) - setText(QString::fromLocal8Bit(sym_get_string_value(item->menu->sym))); - else - setText(QString::null); - Parent::show(); - setFocus(); + // Only the data column is editable + if (index.column() != dataColIdx) + return nullptr; + + // You cannot edit invisible menus + item = static_cast(index.internalPointer()); + if (!item || !item->menu || !menu_is_visible(item->menu)) + return nullptr; + + return QStyledItemDelegate::createEditor(parent, option, index); } -void ConfigLineEdit::keyPressEvent(QKeyEvent* e) +void ConfigItemDelegate::setModelData(QWidget *editor, + QAbstractItemModel *model, + const QModelIndex &index) const { - switch (e->key()) { - case Qt::Key_Escape: - break; - case Qt::Key_Return: - case Qt::Key_Enter: - sym_set_string_value(item->menu->sym, text().toLatin1()); - parent()->updateList(item); - break; - default: - Parent::keyPressEvent(e); - return; + QLineEdit *lineEdit; + ConfigItem *item; + struct symbol *sym; + bool success; + + lineEdit = qobject_cast(editor); + // If this is not a QLineEdit, use the parent's default. + // (does this happen?) + if (!lineEdit) + goto parent; + + item = static_cast(index.internalPointer()); + if (!item || !item->menu) + goto parent; + + sym = item->menu->sym; + if (!sym) + goto parent; + + success = sym_set_string_value(sym, lineEdit->text().toUtf8().data()); + if (success) { + ConfigList::updateListForAll(); + } else { + QMessageBox::information(editor, "qconf", + "Cannot set the data (maybe due to out of range).\n" + "Setting the old value."); + lineEdit->setText(sym_get_string_value(sym)); } - e->accept(); - parent()->list->setFocus(); - hide(); + +parent: + QStyledItemDelegate::setModelData(editor, model, index); } -ConfigList::ConfigList(ConfigView* p, const char *name) - : Parent(p), +ConfigList::ConfigList(QWidget *parent, const char *name) + : QTreeWidget(parent), updateAll(false), - symbolYesPix(xpm_symbol_yes), symbolModPix(xpm_symbol_mod), symbolNoPix(xpm_symbol_no), - choiceYesPix(xpm_choice_yes), choiceNoPix(xpm_choice_no), - menuPix(xpm_menu), menuInvPix(xpm_menu_inv), menuBackPix(xpm_menuback), voidPix(xpm_void), - showName(false), showRange(false), showData(false), mode(singleMode), optMode(normalOpt), + showName(false), mode(singleMode), optMode(normalOpt), rootEntry(0), headerPopup(0) { - int i; - setObjectName(name); setSortingEnabled(false); setRootIsDecorated(true); @@ -327,26 +311,34 @@ ConfigList::ConfigList(ConfigView* p, const char *name) setVerticalScrollMode(ScrollPerPixel); setHorizontalScrollMode(ScrollPerPixel); - setHeaderLabels(QStringList() << _("Option") << _("Name") << "N" << "M" << "Y" << _("Value")); + setHeaderLabels(QStringList() << "Option" << "Name" << "Value"); - connect(this, SIGNAL(itemSelectionChanged(void)), - SLOT(updateSelection(void))); + connect(this, &ConfigList::itemSelectionChanged, + this, &ConfigList::updateSelection); if (name) { configSettings->beginGroup(name); showName = configSettings->value("/showName", false).toBool(); - showRange = configSettings->value("/showRange", false).toBool(); - showData = configSettings->value("/showData", false).toBool(); optMode = (enum optionMode)configSettings->value("/optionMode", 0).toInt(); configSettings->endGroup(); - connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); + connect(configApp, &QApplication::aboutToQuit, + this, &ConfigList::saveSettings); } - addColumn(promptColIdx); + showColumn(promptColIdx); + + setItemDelegate(new ConfigItemDelegate(this)); + + allLists.append(this); reinit(); } +ConfigList::~ConfigList() +{ + allLists.removeOne(this); +} + bool ConfigList::menuSkip(struct menu *menu) { if (optMode == normalOpt && menu_is_visible(menu)) @@ -360,21 +352,22 @@ bool ConfigList::menuSkip(struct menu *menu) void ConfigList::reinit(void) { - removeColumn(dataColIdx); - removeColumn(yesColIdx); - removeColumn(modColIdx); - removeColumn(noColIdx); - removeColumn(nameColIdx); + hideColumn(nameColIdx); if (showName) - addColumn(nameColIdx); - if (showRange) { - addColumn(noColIdx); - addColumn(modColIdx); - addColumn(yesColIdx); - } - if (showData) - addColumn(dataColIdx); + showColumn(nameColIdx); + + updateListAll(); +} + +void ConfigList::setOptionMode(QAction *action) +{ + if (action == showNormalAction) + optMode = normalOpt; + else if (action == showAllAction) + optMode = allOpt; + else + optMode = promptOpt; updateListAll(); } @@ -384,8 +377,6 @@ void ConfigList::saveSettings(void) if (!objectName().isEmpty()) { configSettings->beginGroup(objectName()); configSettings->setValue("/showName", showName); - configSettings->setValue("/showRange", showRange); - configSettings->setValue("/showData", showData); configSettings->setValue("/optionMode", (int)optMode); configSettings->endGroup(); } @@ -424,15 +415,15 @@ void ConfigList::updateSelection(void) emit menuSelected(menu); } -void ConfigList::updateList(ConfigItem* item) +void ConfigList::updateList() { ConfigItem* last = 0; + ConfigItem *item; if (!rootEntry) { if (mode != listMode) goto update; QTreeWidgetItemIterator it(this); - ConfigItem* item; while (*it) { item = (ConfigItem*)(*it); @@ -454,7 +445,7 @@ void ConfigList::updateList(ConfigItem* item) } if ((mode == singleMode || (mode == symbolMode && !(rootEntry->flags & MENU_ROOT))) && rootEntry->sym && rootEntry->prompt) { - item = last ? last->nextSibling() : firstChild(); + item = last ? last->nextSibling() : nullptr; if (!item) item = new ConfigItem(this, last, rootEntry, true); else @@ -466,11 +457,33 @@ void ConfigList::updateList(ConfigItem* item) return; } update: - updateMenuList(this, rootEntry); + updateMenuList(rootEntry); update(); resizeColumnToContents(0); } +void ConfigList::updateListForAll() +{ + QListIterator it(allLists); + + while (it.hasNext()) { + ConfigList *list = it.next(); + + list->updateList(); + } +} + +void ConfigList::updateListAllForAll() +{ + QListIterator it(allLists); + + while (it.hasNext()) { + ConfigList *list = it.next(); + + list->updateList(); + } +} + void ConfigList::setValue(ConfigItem* item, tristate val) { struct symbol* sym; @@ -491,7 +504,7 @@ void ConfigList::setValue(ConfigItem* item, tristate val) return; if (oldval == no && item->menu->list) item->setExpanded(true); - parent()->updateList(item); + ConfigList::updateListForAll(); break; } } @@ -525,12 +538,9 @@ void ConfigList::changeValue(ConfigItem* item) item->setExpanded(true); } if (oldexpr != newexpr) - parent()->updateList(item); + ConfigList::updateListForAll(); break; - case S_INT: - case S_HEX: - case S_STRING: - parent()->lineEdit->show(item); + default: break; } } @@ -544,11 +554,11 @@ void ConfigList::setRootMenu(struct menu *menu) type = menu && menu->prompt ? menu->prompt->type : P_UNKNOWN; if (type != P_MENU) return; - updateMenuList(this, 0); + updateMenuList(0); rootEntry = menu; updateListAll(); if (currentItem()) { - currentItem()->setSelected(hasFocus()); + setSelected(currentItem(), hasFocus()); scrollToItem(currentItem()); } } @@ -636,7 +646,7 @@ void ConfigList::updateMenuList(ConfigItem *parent, struct menu* menu) last = item; continue; } - hide: +hide: if (item && item->menu == child) { last = parent->firstChild(); if (last == item) @@ -648,7 +658,7 @@ void ConfigList::updateMenuList(ConfigItem *parent, struct menu* menu) } } -void ConfigList::updateMenuList(ConfigList *parent, struct menu* menu) +void ConfigList::updateMenuList(struct menu *menu) { struct menu* child; ConfigItem* item; @@ -657,19 +667,19 @@ void ConfigList::updateMenuList(ConfigList *parent, struct menu* menu) enum prop_type type; if (!menu) { - while (parent->topLevelItemCount() > 0) + while (topLevelItemCount() > 0) { - delete parent->takeTopLevelItem(0); + delete takeTopLevelItem(0); } return; } - last = (ConfigItem*)parent->topLevelItem(0); + last = (ConfigItem *)topLevelItem(0); if (last && !last->goParent) last = 0; for (child = menu->list; child; child = child->next) { - item = last ? last->nextSibling() : (ConfigItem*)parent->topLevelItem(0); + item = last ? last->nextSibling() : (ConfigItem *)topLevelItem(0); type = child->prompt ? child->prompt->type : P_UNKNOWN; switch (mode) { @@ -690,7 +700,7 @@ void ConfigList::updateMenuList(ConfigList *parent, struct menu* menu) if (!child->sym && !child->list && !child->prompt) continue; if (!item || item->menu != child) - item = new ConfigItem(parent, last, child, visible); + item = new ConfigItem(this, last, child, visible); else item->testUpdateMenu(visible); @@ -701,9 +711,9 @@ void ConfigList::updateMenuList(ConfigList *parent, struct menu* menu) last = item; continue; } - hide: +hide: if (item && item->menu == child) { - last = (ConfigItem*)parent->topLevelItem(0); + last = (ConfigItem *)topLevelItem(0); if (last == item) last = 0; else while (last->nextSibling() != item) @@ -745,7 +755,10 @@ void ConfigList::keyPressEvent(QKeyEvent* ev) type = menu->prompt ? menu->prompt->type : P_UNKNOWN; if (type == P_MENU && rootEntry != menu && mode != fullMode && mode != menuMode) { - emit menuSelected(menu); + if (mode == menuMode) + emit menuSelected(menu); + else + emit itemSelected(menu); break; } case Qt::Key_Space: @@ -791,7 +804,7 @@ void ConfigList::mouseReleaseEvent(QMouseEvent* e) idx = header()->logicalIndexAt(x); switch (idx) { case promptColIdx: - icon = item->pixmap(promptColIdx); + icon = item->icon(promptColIdx); if (!icon.isNull()) { int off = header()->sectionPosition(0) + visualRect(indexAt(p)).x() + 4; // 4 is Hardcoded image offset. There might be a way to do it properly. if (x >= off && x < off + icon.availableSizes().first().width()) { @@ -802,22 +815,14 @@ void ConfigList::mouseReleaseEvent(QMouseEvent* e) break; ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; if (ptype == P_MENU && rootEntry != menu && - mode != fullMode && mode != menuMode) + mode != fullMode && mode != menuMode && + mode != listMode) emit menuSelected(menu); else changeValue(item); } } break; - case noColIdx: - setValue(item, no); - break; - case modColIdx: - setValue(item, mod); - break; - case yesColIdx: - setValue(item, yes); - break; case dataColIdx: changeValue(item); break; @@ -837,7 +842,7 @@ void ConfigList::mouseMoveEvent(QMouseEvent* e) void ConfigList::mouseDoubleClickEvent(QMouseEvent* e) { - QPoint p = e->pos(); // TODO: Check if this works(was contentsToViewport). + QPoint p = e->pos(); ConfigItem* item = (ConfigItem*)itemAt(p); struct menu *menu; enum prop_type ptype; @@ -852,9 +857,12 @@ void ConfigList::mouseDoubleClickEvent(QMouseEvent* e) if (!menu) goto skip; ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; - if (ptype == P_MENU && (mode == singleMode || mode == symbolMode)) - emit menuSelected(menu); - else if (menu->sym) + if (ptype == P_MENU && mode != listMode) { + if (mode == singleMode) + emit itemSelected(menu); + else if (mode == symbolMode) + emit menuSelected(menu); + } else if (menu->sym) changeValue(item); skip: @@ -870,7 +878,7 @@ void ConfigList::focusInEvent(QFocusEvent *e) ConfigItem* item = (ConfigItem *)currentItem(); if (item) { - item->setSelected(true); + setSelected(item, true); menu = item->menu; } emit gotFocus(menu); @@ -878,114 +886,38 @@ void ConfigList::focusInEvent(QFocusEvent *e) void ConfigList::contextMenuEvent(QContextMenuEvent *e) { - if (e->y() <= header()->geometry().bottom()) { - if (!headerPopup) { - QAction *action; - - headerPopup = new QMenu(this); - action = new QAction(_("Show Name"), this); - action->setCheckable(true); - connect(action, SIGNAL(toggled(bool)), - parent(), SLOT(setShowName(bool))); - connect(parent(), SIGNAL(showNameChanged(bool)), - action, SLOT(setOn(bool))); - action->setChecked(showName); - headerPopup->addAction(action); - action = new QAction(_("Show Range"), this); - action->setCheckable(true); - connect(action, SIGNAL(toggled(bool)), - parent(), SLOT(setShowRange(bool))); - connect(parent(), SIGNAL(showRangeChanged(bool)), - action, SLOT(setOn(bool))); - action->setChecked(showRange); - headerPopup->addAction(action); - action = new QAction(_("Show Data"), this); - action->setCheckable(true); - connect(action, SIGNAL(toggled(bool)), - parent(), SLOT(setShowData(bool))); - connect(parent(), SIGNAL(showDataChanged(bool)), - action, SLOT(setOn(bool))); - action->setChecked(showData); - headerPopup->addAction(action); - } - headerPopup->exec(e->globalPos()); - e->accept(); - } else - e->ignore(); -} - -ConfigView*ConfigView::viewList; -QAction *ConfigView::showNormalAction; -QAction *ConfigView::showAllAction; -QAction *ConfigView::showPromptAction; - -ConfigView::ConfigView(QWidget* parent, const char *name) - : Parent(parent) -{ - setObjectName(name); - QVBoxLayout *verticalLayout = new QVBoxLayout(this); - verticalLayout->setContentsMargins(0, 0, 0, 0); - - list = new ConfigList(this); - verticalLayout->addWidget(list); - lineEdit = new ConfigLineEdit(this); - lineEdit->hide(); - verticalLayout->addWidget(lineEdit); - - this->nextView = viewList; - viewList = this; -} - -ConfigView::~ConfigView(void) -{ - ConfigView** vp; - - for (vp = &viewList; *vp; vp = &(*vp)->nextView) { - if (*vp == this) { - *vp = nextView; - break; - } + if (!headerPopup) { + QAction *action; + + headerPopup = new QMenu(this); + action = new QAction("Show Name", this); + action->setCheckable(true); + connect(action, &QAction::toggled, + this, &ConfigList::setShowName); + connect(this, &ConfigList::showNameChanged, + action, &QAction::setChecked); + action->setChecked(showName); + headerPopup->addAction(action); } -} -void ConfigView::setOptionMode(QAction *act) -{ - if (act == showNormalAction) - list->optMode = normalOpt; - else if (act == showAllAction) - list->optMode = allOpt; - else - list->optMode = promptOpt; - - list->updateListAll(); + headerPopup->exec(e->globalPos()); + e->accept(); } -void ConfigView::setShowName(bool b) +void ConfigList::setShowName(bool on) { - if (list->showName != b) { - list->showName = b; - list->reinit(); - emit showNameChanged(b); - } -} + if (showName == on) + return; -void ConfigView::setShowRange(bool b) -{ - if (list->showRange != b) { - list->showRange = b; - list->reinit(); - emit showRangeChanged(b); - } + showName = on; + reinit(); + emit showNameChanged(on); } -void ConfigView::setShowData(bool b) -{ - if (list->showData != b) { - list->showData = b; - list->reinit(); - emit showDataChanged(b); - } -} +QList ConfigList::allLists; +QAction *ConfigList::showNormalAction; +QAction *ConfigList::showAllAction; +QAction *ConfigList::showPromptAction; void ConfigList::setAllOpen(bool open) { @@ -998,34 +930,31 @@ void ConfigList::setAllOpen(bool open) } } -void ConfigView::updateList(ConfigItem* item) -{ - ConfigView* v; - - for (v = viewList; v; v = v->nextView) - v->list->updateList(item); -} - -void ConfigView::updateListAll(void) -{ - ConfigView* v; - - for (v = viewList; v; v = v->nextView) - v->list->updateListAll(); -} - ConfigInfoView::ConfigInfoView(QWidget* parent, const char *name) : Parent(parent), sym(0), _menu(0) { setObjectName(name); - + setOpenLinks(false); if (!objectName().isEmpty()) { configSettings->beginGroup(objectName()); setShowDebug(configSettings->value("/showDebug", false).toBool()); configSettings->endGroup(); - connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); + connect(configApp, &QApplication::aboutToQuit, + this, &ConfigInfoView::saveSettings); } + + contextMenu = createStandardContextMenu(); + QAction *action = new QAction("Show Debug Info", contextMenu); + + action->setCheckable(true); + connect(action, &QAction::toggled, + this, &ConfigInfoView::setShowDebug); + connect(this, &ConfigInfoView::showDebugChanged, + action, &QAction::setChecked); + action->setChecked(showDebug()); + contextMenu->addSeparator(); + contextMenu->addAction(action); } void ConfigInfoView::saveSettings(void) @@ -1080,116 +1009,126 @@ void ConfigInfoView::symbolInfo(void) void ConfigInfoView::menuInfo(void) { struct symbol* sym; - QString head, debug, help; + QString info; + QTextStream stream(&info); sym = _menu->sym; if (sym) { if (_menu->prompt) { - head += ""; - head += print_filter(_(_menu->prompt->text)); - head += ""; + stream << ""; + stream << print_filter(_menu->prompt->text); + stream << ""; if (sym->name) { - head += " ("; + stream << " ("; if (showDebug()) - head += QString().sprintf("", sym); - head += print_filter(sym->name); + stream << "name << "\">"; + stream << print_filter(sym->name); if (showDebug()) - head += ""; - head += ")"; + stream << ""; + stream << ")"; } } else if (sym->name) { - head += ""; + stream << ""; if (showDebug()) - head += QString().sprintf("", sym); - head += print_filter(sym->name); + stream << "name << "\">"; + stream << print_filter(sym->name); if (showDebug()) - head += ""; - head += ""; + stream << ""; + stream << ""; } - head += "

"; + stream << "

"; if (showDebug()) - debug = debug_info(sym); + stream << debug_info(sym); struct gstr help_gstr = str_new(); + menu_get_ext_help(_menu, &help_gstr); - help = print_filter(str_get(&help_gstr)); + stream << print_filter(str_get(&help_gstr)); str_free(&help_gstr); } else if (_menu->prompt) { - head += ""; - head += print_filter(_(_menu->prompt->text)); - head += "

"; + stream << ""; + stream << print_filter(_menu->prompt->text); + stream << "

"; if (showDebug()) { if (_menu->prompt->visible.expr) { - debug += "  dep: "; - expr_print(_menu->prompt->visible.expr, expr_print_help, &debug, E_NONE); - debug += "

"; + stream << "  dep: "; + expr_print(_menu->prompt->visible.expr, + expr_print_help, &stream, E_NONE); + stream << "

"; } + + stream << "defined at " << _menu->filename << ":" + << _menu->lineno << "

"; } } - if (showDebug()) - debug += QString().sprintf("defined at %s:%d

", _menu->file->name, _menu->lineno); - setText(head + debug + help); + setText(info); } QString ConfigInfoView::debug_info(struct symbol *sym) { QString debug; + QTextStream stream(&debug); - debug += "type: "; - debug += print_filter(sym_type_name(sym->type)); + stream << "type: "; + stream << print_filter(sym_type_name(sym->type)); if (sym_is_choice(sym)) - debug += " (choice)"; + stream << " (choice)"; debug += "
"; if (sym->rev_dep.expr) { - debug += "reverse dep: "; - expr_print(sym->rev_dep.expr, expr_print_help, &debug, E_NONE); - debug += "
"; + stream << "reverse dep: "; + expr_print(sym->rev_dep.expr, expr_print_help, &stream, E_NONE); + stream << "
"; } for (struct property *prop = sym->prop; prop; prop = prop->next) { switch (prop->type) { case P_PROMPT: case P_MENU: - debug += QString().sprintf("prompt: ", prop->menu); - debug += print_filter(_(prop->text)); - debug += "
"; + stream << "prompt: name << "\">"; + stream << print_filter(prop->text); + stream << "
"; break; case P_DEFAULT: case P_SELECT: case P_RANGE: - case P_ENV: - debug += prop_get_type_name(prop->type); - debug += ": "; - expr_print(prop->expr, expr_print_help, &debug, E_NONE); - debug += "
"; + case P_COMMENT: + case P_IMPLY: + case P_SYMBOL: + stream << prop_get_type_name(prop->type); + stream << ": "; + expr_print(prop->expr, expr_print_help, + &stream, E_NONE); + stream << "
"; break; case P_CHOICE: if (sym_is_choice(sym)) { - debug += "choice: "; - expr_print(prop->expr, expr_print_help, &debug, E_NONE); - debug += "
"; + stream << "choice: "; + expr_print(prop->expr, expr_print_help, + &stream, E_NONE); + stream << "
"; } break; default: - debug += "unknown property: "; - debug += prop_get_type_name(prop->type); - debug += "
"; + stream << "unknown property: "; + stream << prop_get_type_name(prop->type); + stream << "
"; } if (prop->visible.expr) { - debug += "    dep: "; - expr_print(prop->visible.expr, expr_print_help, &debug, E_NONE); - debug += "
"; + stream << "    dep: "; + expr_print(prop->visible.expr, expr_print_help, + &stream, E_NONE); + stream << "
"; } } - debug += "
"; + stream << "
"; return debug; } QString ConfigInfoView::print_filter(const QString &str) { - QRegExp re("[<>&\"\\n]"); + QRegularExpression re("[<>&\"\\n]"); QString res = str; for (int i = 0; (i = res.indexOf(re, i)) >= 0;) { switch (res[i].toLatin1()) { @@ -1220,88 +1159,125 @@ QString ConfigInfoView::print_filter(const QString &str) void ConfigInfoView::expr_print_help(void *data, struct symbol *sym, const char *str) { - QString* text = reinterpret_cast(data); - QString str2 = print_filter(str); + QTextStream *stream = reinterpret_cast(data); if (sym && sym->name && !(sym->flags & SYMBOL_CONST)) { - *text += QString().sprintf("", sym); - *text += str2; - *text += ""; - } else - *text += str2; + *stream << "name << "\">"; + *stream << print_filter(str); + *stream << ""; + } else { + *stream << print_filter(str); + } } -QMenu* ConfigInfoView::createStandardContextMenu(const QPoint & pos) +void ConfigInfoView::clicked(const QUrl &url) { - QMenu* popup = Parent::createStandardContextMenu(pos); - QAction* action = new QAction(_("Show Debug Info"), popup); - action->setCheckable(true); - connect(action, SIGNAL(toggled(bool)), SLOT(setShowDebug(bool))); - connect(this, SIGNAL(showDebugChanged(bool)), action, SLOT(setOn(bool))); - action->setChecked(showDebug()); - popup->addSeparator(); - popup->addAction(action); - return popup; + QByteArray str = url.toEncoded(); + const std::size_t count = str.size(); + char *data = new char[count + 1]; + struct symbol **result; + struct menu *m = NULL; + + if (count < 1) { + delete[] data; + return; + } + + memcpy(data, str.constData(), count); + data[count] = '\0'; + + /* Seek for exact match */ + data[0] = '^'; + strcat(data, "$"); + result = sym_re_search(data); + if (!result) { + delete[] data; + return; + } + + sym = *result; + + /* Seek for the menu which holds the symbol */ + for (struct property *prop = sym->prop; prop; prop = prop->next) { + if (prop->type != P_PROMPT && prop->type != P_MENU) + continue; + m = prop->menu; + break; + } + + if (!m) { + /* Symbol is not visible as a menu */ + symbolInfo(); + emit showDebugChanged(true); + } else { + emit menuSelected(m); + } + + free(result); + delete[] data; } -void ConfigInfoView::contextMenuEvent(QContextMenuEvent *e) +void ConfigInfoView::contextMenuEvent(QContextMenuEvent *event) { - Parent::contextMenuEvent(e); + contextMenu->popup(event->globalPos()); + event->accept(); } -ConfigSearchWindow::ConfigSearchWindow(ConfigMainWindow* parent, const char *name) +ConfigSearchWindow::ConfigSearchWindow(ConfigMainWindow *parent) : Parent(parent), result(NULL) { - setObjectName(name); + setObjectName("search"); setWindowTitle("Search Config"); QVBoxLayout* layout1 = new QVBoxLayout(this); layout1->setContentsMargins(11, 11, 11, 11); layout1->setSpacing(6); - QHBoxLayout* layout2 = new QHBoxLayout(0); + + QHBoxLayout* layout2 = new QHBoxLayout(); layout2->setContentsMargins(0, 0, 0, 0); layout2->setSpacing(6); - layout2->addWidget(new QLabel(_("Find:"), this)); + layout2->addWidget(new QLabel("Find:", this)); editField = new QLineEdit(this); - connect(editField, SIGNAL(returnPressed()), SLOT(search())); + connect(editField, &QLineEdit::returnPressed, + this, &ConfigSearchWindow::search); layout2->addWidget(editField); - searchButton = new QPushButton(_("Search"), this); + searchButton = new QPushButton("Search", this); searchButton->setAutoDefault(false); - connect(searchButton, SIGNAL(clicked()), SLOT(search())); + connect(searchButton, &QPushButton::clicked, + this, &ConfigSearchWindow::search); layout2->addWidget(searchButton); layout1->addLayout(layout2); split = new QSplitter(this); split->setOrientation(Qt::Vertical); - list = new ConfigView(split, name); - list->list->mode = listMode; - info = new ConfigInfoView(split, name); - connect(list->list, SIGNAL(menuChanged(struct menu *)), - info, SLOT(setInfo(struct menu *))); - connect(list->list, SIGNAL(menuChanged(struct menu *)), - parent, SLOT(setMenuLink(struct menu *))); + list = new ConfigList(split, "search"); + list->mode = listMode; + info = new ConfigInfoView(split, "search"); + connect(list, &ConfigList::menuChanged, + info, &ConfigInfoView::setInfo); + connect(list, &ConfigList::menuChanged, + parent, &ConfigMainWindow::setMenuLink); layout1->addWidget(split); - if (name) { - QVariant x, y; - int width, height; - bool ok; + QVariant x, y; + int width, height; + bool ok; - configSettings->beginGroup(name); - width = configSettings->value("/window width", parent->width() / 2).toInt(); - height = configSettings->value("/window height", parent->height() / 2).toInt(); - resize(width, height); - x = configSettings->value("/window x"); - y = configSettings->value("/window y"); - if ((x.isValid())&&(y.isValid())) - move(x.toInt(), y.toInt()); - QList sizes = configSettings->readSizes("/split", &ok); - if (ok) - split->setSizes(sizes); - configSettings->endGroup(); - connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); - } + configSettings->beginGroup("search"); + width = configSettings->value("/window width", parent->width() / 2).toInt(); + height = configSettings->value("/window height", parent->height() / 2).toInt(); + resize(width, height); + x = configSettings->value("/window x"); + y = configSettings->value("/window y"); + if (x.isValid() && y.isValid()) + move(x.toInt(), y.toInt()); + QList sizes = configSettings->readSizes("/split", &ok); + if (ok) + split->setSizes(sizes); + configSettings->endGroup(); + connect(configApp, &QApplication::aboutToQuit, + this, &ConfigSearchWindow::saveSettings); } void ConfigSearchWindow::saveSettings(void) @@ -1324,7 +1300,7 @@ void ConfigSearchWindow::search(void) ConfigItem *lastItem = NULL; free(result); - list->list->clear(); + list->clear(); info->clear(); result = sym_re_search(editField->text().toLatin1()); @@ -1332,7 +1308,7 @@ void ConfigSearchWindow::search(void) return; for (p = result; *p; p++) { for_all_prompts((*p), prop) - lastItem = new ConfigItem(list->list, lastItem, prop->menu, + lastItem = new ConfigItem(list, lastItem, prop->menu, menu_is_visible(prop->menu)); } } @@ -1343,116 +1319,143 @@ void ConfigSearchWindow::search(void) ConfigMainWindow::ConfigMainWindow(void) : searchWindow(0) { - QMenuBar* menu; bool ok = true; QVariant x, y; int width, height; char title[256]; - QDesktopWidget *d = configApp->desktop(); snprintf(title, sizeof(title), "%s%s", rootmenu.prompt->text, "" ); setWindowTitle(title); - width = configSettings->value("/window width", d->width() - 64).toInt(); - height = configSettings->value("/window height", d->height() - 64).toInt(); + QRect g = configApp->primaryScreen()->geometry(); + width = configSettings->value("/window width", g.width() - 64).toInt(); + height = configSettings->value("/window height", g.height() - 64).toInt(); resize(width, height); x = configSettings->value("/window x"); y = configSettings->value("/window y"); if ((x.isValid())&&(y.isValid())) move(x.toInt(), y.toInt()); - split1 = new QSplitter(this); + // set up icons + ConfigItem::symbolYesIcon = QIcon(QPixmap(xpm_symbol_yes)); + ConfigItem::symbolModIcon = QIcon(QPixmap(xpm_symbol_mod)); + ConfigItem::symbolNoIcon = QIcon(QPixmap(xpm_symbol_no)); + ConfigItem::choiceYesIcon = QIcon(QPixmap(xpm_choice_yes)); + ConfigItem::choiceNoIcon = QIcon(QPixmap(xpm_choice_no)); + ConfigItem::menuIcon = QIcon(QPixmap(xpm_menu)); + ConfigItem::menubackIcon = QIcon(QPixmap(xpm_menuback)); + + QWidget *widget = new QWidget(this); + QVBoxLayout *layout = new QVBoxLayout(widget); + setCentralWidget(widget); + + split1 = new QSplitter(widget); split1->setOrientation(Qt::Horizontal); - setCentralWidget(split1); + split1->setChildrenCollapsible(false); - menuView = new ConfigView(split1, "menu"); - menuList = menuView->list; + menuList = new ConfigList(widget, "menu"); - split2 = new QSplitter(split1); + split2 = new QSplitter(widget); + split2->setChildrenCollapsible(false); split2->setOrientation(Qt::Vertical); // create config tree - configView = new ConfigView(split2, "config"); - configList = configView->list; + configList = new ConfigList(widget, "config"); + + helpText = new ConfigInfoView(widget, "help"); - helpText = new ConfigInfoView(split2, "help"); + layout->addWidget(split2); + split2->addWidget(split1); + split1->addWidget(configList); + split1->addWidget(menuList); + split2->addWidget(helpText); setTabOrder(configList, helpText); configList->setFocus(); - menu = menuBar(); - toolBar = new QToolBar("Tools", this); - addToolBar(toolBar); - - backAction = new QAction(QPixmap(xpm_back), _("Back"), this); - connect(backAction, SIGNAL(triggered(bool)), SLOT(goBack())); - backAction->setEnabled(false); - QAction *quitAction = new QAction(_("&Quit"), this); - quitAction->setShortcut(Qt::CTRL + Qt::Key_Q); - connect(quitAction, SIGNAL(triggered(bool)), SLOT(close())); - QAction *loadAction = new QAction(QPixmap(xpm_load), _("&Load"), this); - loadAction->setShortcut(Qt::CTRL + Qt::Key_L); - connect(loadAction, SIGNAL(triggered(bool)), SLOT(loadConfig())); - saveAction = new QAction(QPixmap(xpm_save), _("&Save"), this); - saveAction->setShortcut(Qt::CTRL + Qt::Key_S); - connect(saveAction, SIGNAL(triggered(bool)), SLOT(saveConfig())); + backAction = new QAction(QPixmap(xpm_back), "Back", this); + connect(backAction, &QAction::triggered, + this, &ConfigMainWindow::goBack); + + QAction *quitAction = new QAction("&Quit", this); + quitAction->setShortcut(Qt::CTRL | Qt::Key_Q); + connect(quitAction, &QAction::triggered, + this, &ConfigMainWindow::close); + + QAction *loadAction = new QAction(QPixmap(xpm_load), "&Load", this); + loadAction->setShortcut(Qt::CTRL | Qt::Key_L); + connect(loadAction, &QAction::triggered, + this, &ConfigMainWindow::loadConfig); + + saveAction = new QAction(QPixmap(xpm_save), "&Save", this); + saveAction->setShortcut(Qt::CTRL | Qt::Key_S); + connect(saveAction, &QAction::triggered, + this, &ConfigMainWindow::saveConfig); + conf_set_changed_callback(conf_changed); + // Set saveAction's initial state conf_changed(); - QAction *saveAsAction = new QAction(_("Save &As..."), this); - connect(saveAsAction, SIGNAL(triggered(bool)), SLOT(saveConfigAs())); - QAction *searchAction = new QAction(_("&Find"), this); - searchAction->setShortcut(Qt::CTRL + Qt::Key_F); - connect(searchAction, SIGNAL(triggered(bool)), SLOT(searchConfig())); - singleViewAction = new QAction(QPixmap(xpm_single_view), _("Single View"), this); + configname = xstrdup(conf_get_configname()); + + QAction *saveAsAction = new QAction("Save &As...", this); + connect(saveAsAction, &QAction::triggered, + this, &ConfigMainWindow::saveConfigAs); + QAction *searchAction = new QAction("&Find", this); + searchAction->setShortcut(Qt::CTRL | Qt::Key_F); + connect(searchAction, &QAction::triggered, + this, &ConfigMainWindow::searchConfig); + singleViewAction = new QAction(QPixmap(xpm_single_view), "Single View", this); singleViewAction->setCheckable(true); - connect(singleViewAction, SIGNAL(triggered(bool)), SLOT(showSingleView())); - splitViewAction = new QAction(QPixmap(xpm_split_view), _("Split View"), this); + connect(singleViewAction, &QAction::triggered, + this, &ConfigMainWindow::showSingleView); + splitViewAction = new QAction(QPixmap(xpm_split_view), "Split View", this); splitViewAction->setCheckable(true); - connect(splitViewAction, SIGNAL(triggered(bool)), SLOT(showSplitView())); - fullViewAction = new QAction(QPixmap(xpm_tree_view), _("Full View"), this); + connect(splitViewAction, &QAction::triggered, + this, &ConfigMainWindow::showSplitView); + fullViewAction = new QAction(QPixmap(xpm_tree_view), "Full View", this); fullViewAction->setCheckable(true); - connect(fullViewAction, SIGNAL(triggered(bool)), SLOT(showFullView())); + connect(fullViewAction, &QAction::triggered, + this, &ConfigMainWindow::showFullView); - QAction *showNameAction = new QAction(_("Show Name"), this); + QAction *showNameAction = new QAction("Show Name", this); showNameAction->setCheckable(true); - connect(showNameAction, SIGNAL(toggled(bool)), configView, SLOT(setShowName(bool))); - showNameAction->setChecked(configView->showName()); - QAction *showRangeAction = new QAction(_("Show Range"), this); - showRangeAction->setCheckable(true); - connect(showRangeAction, SIGNAL(toggled(bool)), configView, SLOT(setShowRange(bool))); - QAction *showDataAction = new QAction(_("Show Data"), this); - showDataAction->setCheckable(true); - connect(showDataAction, SIGNAL(toggled(bool)), configView, SLOT(setShowData(bool))); + connect(showNameAction, &QAction::toggled, + configList, &ConfigList::setShowName); + showNameAction->setChecked(configList->showName); QActionGroup *optGroup = new QActionGroup(this); optGroup->setExclusive(true); - connect(optGroup, SIGNAL(triggered(QAction*)), configView, - SLOT(setOptionMode(QAction *))); - connect(optGroup, SIGNAL(triggered(QAction *)), menuView, - SLOT(setOptionMode(QAction *))); - - configView->showNormalAction = new QAction(_("Show Normal Options"), optGroup); - configView->showAllAction = new QAction(_("Show All Options"), optGroup); - configView->showPromptAction = new QAction(_("Show Prompt Options"), optGroup); - configView->showNormalAction->setCheckable(true); - configView->showAllAction->setCheckable(true); - configView->showPromptAction->setCheckable(true); - - QAction *showDebugAction = new QAction( _("Show Debug Info"), this); + connect(optGroup, &QActionGroup::triggered, + configList, &ConfigList::setOptionMode); + connect(optGroup, &QActionGroup::triggered, + menuList, &ConfigList::setOptionMode); + + ConfigList::showNormalAction = new QAction("Show Normal Options", optGroup); + ConfigList::showNormalAction->setCheckable(true); + ConfigList::showAllAction = new QAction("Show All Options", optGroup); + ConfigList::showAllAction->setCheckable(true); + ConfigList::showPromptAction = new QAction("Show Prompt Options", optGroup); + ConfigList::showPromptAction->setCheckable(true); + + QAction *showDebugAction = new QAction("Show Debug Info", this); showDebugAction->setCheckable(true); - connect(showDebugAction, SIGNAL(toggled(bool)), helpText, SLOT(setShowDebug(bool))); + connect(showDebugAction, &QAction::toggled, + helpText, &ConfigInfoView::setShowDebug); showDebugAction->setChecked(helpText->showDebug()); - QAction *showIntroAction = new QAction( _("Introduction"), this); - connect(showIntroAction, SIGNAL(triggered(bool)), SLOT(showIntro())); - QAction *showAboutAction = new QAction( _("About"), this); - connect(showAboutAction, SIGNAL(triggered(bool)), SLOT(showAbout())); + QAction *showIntroAction = new QAction("Introduction", this); + connect(showIntroAction, &QAction::triggered, + this, &ConfigMainWindow::showIntro); + QAction *showAboutAction = new QAction("About", this); + connect(showAboutAction, &QAction::triggered, + this, &ConfigMainWindow::showAbout); // init tool bar + QToolBar *toolBar = addToolBar("Tools"); toolBar->addAction(backAction); toolBar->addSeparator(); toolBar->addAction(loadAction); @@ -1462,53 +1465,55 @@ ConfigMainWindow::ConfigMainWindow(void) toolBar->addAction(splitViewAction); toolBar->addAction(fullViewAction); - // create config menu - QMenu* config = menu->addMenu(_("&File")); - config->addAction(loadAction); - config->addAction(saveAction); - config->addAction(saveAsAction); - config->addSeparator(); - config->addAction(quitAction); + // create file menu + QMenu *menu = menuBar()->addMenu("&File"); + menu->addAction(loadAction); + menu->addAction(saveAction); + menu->addAction(saveAsAction); + menu->addSeparator(); + menu->addAction(quitAction); // create edit menu - QMenu* editMenu = menu->addMenu(_("&Edit")); - editMenu->addAction(searchAction); + menu = menuBar()->addMenu("&Edit"); + menu->addAction(searchAction); // create options menu - QMenu* optionMenu = menu->addMenu(_("&Option")); - optionMenu->addAction(showNameAction); - optionMenu->addAction(showRangeAction); - optionMenu->addAction(showDataAction); - optionMenu->addSeparator(); - optionMenu->addActions(optGroup->actions()); - optionMenu->addSeparator(); - optionMenu->addAction(showDebugAction); + menu = menuBar()->addMenu("&Option"); + menu->addAction(showNameAction); + menu->addSeparator(); + menu->addActions(optGroup->actions()); + menu->addSeparator(); + menu->addAction(showDebugAction); // create help menu - menu->addSeparator(); - QMenu* helpMenu = menu->addMenu(_("&Help")); - helpMenu->addAction(showIntroAction); - helpMenu->addAction(showAboutAction); - - connect(configList, SIGNAL(menuChanged(struct menu *)), - helpText, SLOT(setInfo(struct menu *))); - connect(configList, SIGNAL(menuSelected(struct menu *)), - SLOT(changeMenu(struct menu *))); - connect(configList, SIGNAL(parentSelected()), - SLOT(goBack())); - connect(menuList, SIGNAL(menuChanged(struct menu *)), - helpText, SLOT(setInfo(struct menu *))); - connect(menuList, SIGNAL(menuSelected(struct menu *)), - SLOT(changeMenu(struct menu *))); - - connect(configList, SIGNAL(gotFocus(struct menu *)), - helpText, SLOT(setInfo(struct menu *))); - connect(menuList, SIGNAL(gotFocus(struct menu *)), - helpText, SLOT(setInfo(struct menu *))); - connect(menuList, SIGNAL(gotFocus(struct menu *)), - SLOT(listFocusChanged(void))); - connect(helpText, SIGNAL(menuSelected(struct menu *)), - SLOT(setMenuLink(struct menu *))); + menu = menuBar()->addMenu("&Help"); + menu->addAction(showIntroAction); + menu->addAction(showAboutAction); + + connect(helpText, &ConfigInfoView::anchorClicked, + helpText, &ConfigInfoView::clicked); + + connect(configList, &ConfigList::menuChanged, + helpText, &ConfigInfoView::setInfo); + connect(configList, &ConfigList::menuSelected, + this, &ConfigMainWindow::changeMenu); + connect(configList, &ConfigList::itemSelected, + this, &ConfigMainWindow::changeItens); + connect(configList, &ConfigList::parentSelected, + this, &ConfigMainWindow::goBack); + connect(menuList, &ConfigList::menuChanged, + helpText, &ConfigInfoView::setInfo); + connect(menuList, &ConfigList::menuSelected, + this, &ConfigMainWindow::changeMenu); + + connect(configList, &ConfigList::gotFocus, + helpText, &ConfigInfoView::setInfo); + connect(menuList, &ConfigList::gotFocus, + helpText, &ConfigInfoView::setInfo); + connect(menuList, &ConfigList::gotFocus, + this, &ConfigMainWindow::listFocusChanged); + connect(helpText, &ConfigInfoView::menuSelected, + this, &ConfigMainWindow::setMenuLink); QString listMode = configSettings->value("/listMode", "symbol").toString(); if (listMode == "single") @@ -1530,45 +1535,74 @@ ConfigMainWindow::ConfigMainWindow(void) void ConfigMainWindow::loadConfig(void) { - QString s = QFileDialog::getOpenFileName(this, "", conf_get_configname()); - if (s.isNull()) + QString str; + QByteArray ba; + const char *name; + + str = QFileDialog::getOpenFileName(this, "", configname); + if (str.isNull()) return; - if (conf_read(QFile::encodeName(s))) - QMessageBox::information(this, "qconf", _("Unable to load configuration!")); - ConfigView::updateListAll(); + + ba = str.toLocal8Bit(); + name = ba.data(); + + if (conf_read(name)) + QMessageBox::information(this, "qconf", "Unable to load configuration!"); + + free(configname); + configname = xstrdup(name); + + ConfigList::updateListAllForAll(); } bool ConfigMainWindow::saveConfig(void) { - if (conf_write(NULL)) { - QMessageBox::information(this, "qconf", _("Unable to save configuration!")); + if (conf_write(configname)) { + QMessageBox::information(this, "qconf", "Unable to save configuration!"); return false; } + conf_write_autoconf(0); + return true; } void ConfigMainWindow::saveConfigAs(void) { - QString s = QFileDialog::getSaveFileName(this, "", conf_get_configname()); - if (s.isNull()) + QString str; + QByteArray ba; + const char *name; + + str = QFileDialog::getSaveFileName(this, "", configname); + if (str.isNull()) return; - saveConfig(); + + ba = str.toLocal8Bit(); + name = ba.data(); + + if (conf_write(name)) { + QMessageBox::information(this, "qconf", "Unable to save configuration!"); + } + conf_write_autoconf(0); + + free(configname); + configname = xstrdup(name); } void ConfigMainWindow::searchConfig(void) { if (!searchWindow) - searchWindow = new ConfigSearchWindow(this, "search"); + searchWindow = new ConfigSearchWindow(this); searchWindow->show(); } -void ConfigMainWindow::changeMenu(struct menu *menu) +void ConfigMainWindow::changeItens(struct menu *menu) { configList->setRootMenu(menu); - if (configList->rootEntry->parent == &rootmenu) - backAction->setEnabled(false); - else - backAction->setEnabled(true); +} + +void ConfigMainWindow::changeMenu(struct menu *menu) +{ + menuList->setRootMenu(menu); } void ConfigMainWindow::setMenuLink(struct menu *menu) @@ -1588,22 +1622,26 @@ void ConfigMainWindow::setMenuLink(struct menu *menu) return; list->setRootMenu(parent); break; - case symbolMode: + case menuMode: if (menu->flags & MENU_ROOT) { - configList->setRootMenu(menu); + menuList->setRootMenu(menu); configList->clearSelection(); - list = menuList; - } else { list = configList; + } else { parent = menu_get_parent_menu(menu->parent); if (!parent) return; - item = menuList->findConfigItem(parent); + + /* Select the config view */ + item = configList->findConfigItem(parent); if (item) { - item->setSelected(true); - menuList->scrollToItem(item); + configList->setSelected(item, true); + configList->scrollToItem(item); } - list->setRootMenu(parent); + + menuList->setRootMenu(parent); + menuList->clearSelection(); + list = menuList; } break; case fullMode: @@ -1616,9 +1654,10 @@ void ConfigMainWindow::setMenuLink(struct menu *menu) if (list) { item = list->findConfigItem(menu); if (item) { - item->setSelected(true); + list->setSelected(item, true); list->scrollToItem(item); list->setFocus(); + helpText->setInfo(menu); } } } @@ -1631,25 +1670,10 @@ void ConfigMainWindow::listFocusChanged(void) void ConfigMainWindow::goBack(void) { - ConfigItem* item, *oldSelection; - - configList->setParentMenu(); if (configList->rootEntry == &rootmenu) - backAction->setEnabled(false); - - if (menuList->selectedItems().count() == 0) return; - item = (ConfigItem*)menuList->selectedItems().first(); - oldSelection = item; - while (item) { - if (item->menu == configList->rootEntry) { - oldSelection->setSelected(false); - item->setSelected(true); - break; - } - item = (ConfigItem*)item->parent(); - } + configList->setParentMenu(); } void ConfigMainWindow::showSingleView(void) @@ -1661,7 +1685,9 @@ void ConfigMainWindow::showSingleView(void) fullViewAction->setEnabled(true); fullViewAction->setChecked(false); - menuView->hide(); + backAction->setEnabled(true); + + menuList->hide(); menuList->setRootMenu(0); configList->mode = singleMode; if (configList->rootEntry == &rootmenu) @@ -1680,17 +1706,19 @@ void ConfigMainWindow::showSplitView(void) fullViewAction->setEnabled(true); fullViewAction->setChecked(false); - configList->mode = symbolMode; + backAction->setEnabled(false); + + configList->mode = menuMode; if (configList->rootEntry == &rootmenu) configList->updateListAll(); else configList->setRootMenu(&rootmenu); configList->setAllOpen(true); configApp->processEvents(); - menuList->mode = menuMode; + menuList->mode = symbolMode; menuList->setRootMenu(&rootmenu); menuList->setAllOpen(true); - menuView->show(); + menuList->show(); menuList->setFocus(); } @@ -1703,7 +1731,9 @@ void ConfigMainWindow::showFullView(void) fullViewAction->setEnabled(false); fullViewAction->setChecked(true); - menuView->hide(); + backAction->setEnabled(false); + + menuList->hide(); menuList->setRootMenu(0); configList->mode = fullMode; if (configList->rootEntry == &rootmenu) @@ -1715,7 +1745,6 @@ void ConfigMainWindow::showFullView(void) /* * ask for saving configuration before quitting - * TODO ask only when something changed */ void ConfigMainWindow::closeEvent(QCloseEvent* e) { @@ -1723,11 +1752,21 @@ void ConfigMainWindow::closeEvent(QCloseEvent* e) e->accept(); return; } - QMessageBox mb("qconf", _("Save configuration?"), QMessageBox::Warning, - QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::Cancel | QMessageBox::Escape); - mb.setButtonText(QMessageBox::Yes, _("&Save Changes")); - mb.setButtonText(QMessageBox::No, _("&Discard Changes")); - mb.setButtonText(QMessageBox::Cancel, _("Cancel Exit")); + + QMessageBox mb(QMessageBox::Icon::Warning, "qconf", + "Save configuration?"); + + QPushButton *yb = mb.addButton(QMessageBox::Yes); + QPushButton *db = mb.addButton(QMessageBox::No); + QPushButton *cb = mb.addButton(QMessageBox::Cancel); + + yb->setText("&Save Changes"); + db->setText("&Discard Changes"); + cb->setText("Cancel Exit"); + + mb.setDefaultButton(yb); + mb.setEscapeButton(cb); + switch (mb.exec()) { case QMessageBox::Yes: if (saveConfig()) @@ -1746,28 +1785,40 @@ void ConfigMainWindow::closeEvent(QCloseEvent* e) void ConfigMainWindow::showIntro(void) { - static const QString str = _("Welcome to the qconf graphical configuration tool.\n\n" - "For each option, a blank box indicates the feature is disabled, a check\n" - "indicates it is enabled, and a dot indicates that it is to be compiled\n" - "as a module. Clicking on the box will cycle through the three states.\n\n" - "If you do not see an option (e.g., a device driver) that you believe\n" - "should be present, try turning on Show All Options under the Options menu.\n" - "Although there is no cross reference yet to help you figure out what other\n" - "options must be enabled to support the option you are interested in, you can\n" - "still view the help of a grayed-out option.\n\n" - "Toggling Show Debug Info under the Options menu will show the dependencies,\n" - "which you can then match by examining other options.\n\n"); + static const QString str = + "Welcome to the qconf graphical configuration tool.\n" + "\n" + "For bool and tristate options, a blank box indicates the " + "feature is disabled, a check indicates it is enabled, and a " + "dot indicates that it is to be compiled as a module. Clicking " + "on the box will cycle through the three states. For int, hex, " + "and string options, double-clicking or pressing F2 on the " + "Value cell will allow you to edit the value.\n" + "\n" + "If you do not see an option (e.g., a device driver) that you " + "believe should be present, try turning on Show All Options " + "under the Options menu. Enabling Show Debug Info will help you" + "figure out what other options must be enabled to support the " + "option you are interested in, and hyperlinks will navigate to " + "them.\n" + "\n" + "Toggling Show Debug Info under the Options menu will show the " + "dependencies, which you can then match by examining other " + "options.\n"; QMessageBox::information(this, "qconf", str); } void ConfigMainWindow::showAbout(void) { - static const QString str = _("qconf is Copyright (C) 2002 Roman Zippel .\n" - "Copyright (C) 2015 Boris Barbulovski .\n\n" - "Bug reports and feature request can also be entered at http://bugzilla.kernel.org/\n"); + static const QString str = "qconf is Copyright (C) 2002 Roman Zippel .\n" + "Copyright (C) 2015 Boris Barbulovski .\n" + "\n" + "Bug reports and feature request can also be entered at http://bugzilla.kernel.org/\n" + "\n" + "Qt Version: "; - QMessageBox::information(this, "qconf", str); + QMessageBox::information(this, "qconf", str + qVersion()); } void ConfigMainWindow::saveSettings(void) @@ -1826,7 +1877,7 @@ static const char *progname; static void usage(void) { - printf(_("%s [-s] \n").toLatin1().constData(), progname); + printf("%s [-s] \n", progname); exit(0); } @@ -1835,11 +1886,7 @@ int main(int ac, char** av) ConfigMainWindow* v; const char *name; - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); - progname = av[0]; - configApp = new QApplication(ac, av); if (ac > 1 && av[1][0] == '-') { switch (av[1][1]) { case 's': @@ -1860,6 +1907,8 @@ int main(int ac, char** av) conf_read(NULL); //zconfdump(stdout); + configApp = new QApplication(ac, av); + configSettings = new ConfigSettings(); configSettings->beginGroup("/kconfig/qconf"); v = new ConfigMainWindow(); diff --git a/support/kconfig/qconf.h b/support/kconfig/qconf.h index a40036d1b0..78b0a1dfcd 100644 --- a/support/kconfig/qconf.h +++ b/support/kconfig/qconf.h @@ -1,25 +1,24 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ -#include -#include -#include +#include +#include #include -#include +#include +#include #include #include -#include #include -#include -#include +#include +#include +#include + #include "expr.h" -class ConfigView; class ConfigList; class ConfigItem; -class ConfigLineEdit; class ConfigMainWindow; class ConfigSettings : public QSettings { @@ -30,7 +29,7 @@ public: }; enum colIdx { - promptColIdx, nameColIdx, noColIdx, modColIdx, yesColIdx, dataColIdx, colNr + promptColIdx, nameColIdx, dataColIdx }; enum listMode { singleMode, menuMode, symbolMode, fullMode, listMode @@ -43,13 +42,16 @@ class ConfigList : public QTreeWidget { Q_OBJECT typedef class QTreeWidget Parent; public: - ConfigList(ConfigView* p, const char *name = 0); + ConfigList(QWidget *parent, const char *name = 0); + ~ConfigList(); void reinit(void); - ConfigView* parent(void) const - { - return (ConfigView*)Parent::parent(); - } ConfigItem* findConfigItem(struct menu *); + void setSelected(QTreeWidgetItem *item, bool enable) { + for (int i = 0; i < selectedItems().size(); i++) + selectedItems().at(i)->setSelected(false); + + item->setSelected(enable); + } protected: void keyPressEvent(QKeyEvent *e); @@ -63,61 +65,52 @@ protected: public slots: void setRootMenu(struct menu *menu); - void updateList(ConfigItem *item); + void updateList(); void setValue(ConfigItem* item, tristate val); void changeValue(ConfigItem* item); void updateSelection(void); void saveSettings(void); + void setOptionMode(QAction *action); + void setShowName(bool on); + signals: void menuChanged(struct menu *menu); void menuSelected(struct menu *menu); + void itemSelected(struct menu *menu); void parentSelected(void); void gotFocus(struct menu *); + void showNameChanged(bool on); public: void updateListAll(void) { updateAll = true; - updateList(NULL); + updateList(); updateAll = false; } - ConfigList* listView() - { - return this; - } - ConfigItem* firstChild() const - { - return (ConfigItem *)children().first(); - } - void addColumn(colIdx idx) - { - showColumn(idx); - } - void removeColumn(colIdx idx) - { - hideColumn(idx); - } void setAllOpen(bool open); void setParentMenu(void); bool menuSkip(struct menu *); void updateMenuList(ConfigItem *parent, struct menu*); - void updateMenuList(ConfigList *parent, struct menu*); + void updateMenuList(struct menu *menu); bool updateAll; - QPixmap symbolYesPix, symbolModPix, symbolNoPix; - QPixmap choiceYesPix, choiceNoPix; - QPixmap menuPix, menuInvPix, menuBackPix, voidPix; - - bool showName, showRange, showData; + bool showName; enum listMode mode; enum optionMode optMode; struct menu *rootEntry; QPalette disabledColorGroup; QPalette inactivedColorGroup; QMenu* headerPopup; + + static QList allLists; + static void updateListForAll(); + static void updateListAllForAll(); + + static QAction *showNormalAction, *showAllAction, *showPromptAction; }; class ConfigItem : public QTreeWidgetItem { @@ -140,7 +133,6 @@ public: } ~ConfigItem(void); void init(void); - void okRename(int col); void updateMenu(void); void testUpdateMenu(bool v); ConfigList* listView() const @@ -165,82 +157,36 @@ public: return ret; } - void setText(colIdx idx, const QString& text) - { - Parent::setText(idx, text); - } - QString text(colIdx idx) const - { - return Parent::text(idx); - } - void setPixmap(colIdx idx, const QIcon &icon) - { - Parent::setIcon(idx, icon); - } - const QIcon pixmap(colIdx idx) const - { - return icon(idx); - } // TODO: Implement paintCell ConfigItem* nextItem; struct menu *menu; bool visible; bool goParent; -}; -class ConfigLineEdit : public QLineEdit { - Q_OBJECT - typedef class QLineEdit Parent; -public: - ConfigLineEdit(ConfigView* parent); - ConfigView* parent(void) const - { - return (ConfigView*)Parent::parent(); - } - void show(ConfigItem *i); - void keyPressEvent(QKeyEvent *e); - -public: - ConfigItem *item; + static QIcon symbolYesIcon, symbolModIcon, symbolNoIcon; + static QIcon choiceYesIcon, choiceNoIcon; + static QIcon menuIcon, menubackIcon; }; -class ConfigView : public QWidget { - Q_OBJECT - typedef class QWidget Parent; -public: - ConfigView(QWidget* parent, const char *name = 0); - ~ConfigView(void); - static void updateList(ConfigItem* item); - static void updateListAll(void); - - bool showName(void) const { return list->showName; } - bool showRange(void) const { return list->showRange; } - bool showData(void) const { return list->showData; } -public slots: - void setShowName(bool); - void setShowRange(bool); - void setShowData(bool); - void setOptionMode(QAction *); -signals: - void showNameChanged(bool); - void showRangeChanged(bool); - void showDataChanged(bool); +class ConfigItemDelegate : public QStyledItemDelegate +{ +private: + struct menu *menu; public: - ConfigList* list; - ConfigLineEdit* lineEdit; - - static ConfigView* viewList; - ConfigView* nextView; - - static QAction *showNormalAction; - static QAction *showAllAction; - static QAction *showPromptAction; + ConfigItemDelegate(QObject *parent = nullptr) + : QStyledItemDelegate(parent) {} + QWidget *createEditor(QWidget *parent, + const QStyleOptionViewItem &option, + const QModelIndex &index) const override; + void setModelData(QWidget *editor, QAbstractItemModel *model, + const QModelIndex &index) const override; }; class ConfigInfoView : public QTextBrowser { Q_OBJECT typedef class QTextBrowser Parent; + QMenu *contextMenu; public: ConfigInfoView(QWidget* parent, const char *name = 0); bool showDebug(void) const { return _showDebug; } @@ -249,6 +195,7 @@ public slots: void setInfo(struct menu *menu); void saveSettings(void); void setShowDebug(bool); + void clicked (const QUrl &url); signals: void showDebugChanged(bool); @@ -260,8 +207,7 @@ protected: QString debug_info(struct symbol *sym); static QString print_filter(const QString &str); static void expr_print_help(void *data, struct symbol *sym, const char *str); - QMenu *createStandardContextMenu(const QPoint & pos); - void contextMenuEvent(QContextMenuEvent *e); + void contextMenuEvent(QContextMenuEvent *event); struct symbol *sym; struct menu *_menu; @@ -272,7 +218,7 @@ class ConfigSearchWindow : public QDialog { Q_OBJECT typedef class QDialog Parent; public: - ConfigSearchWindow(ConfigMainWindow* parent, const char *name = 0); + ConfigSearchWindow(ConfigMainWindow *parent); public slots: void saveSettings(void); @@ -282,7 +228,7 @@ protected: QLineEdit* editField; QPushButton* searchButton; QSplitter* split; - ConfigView* list; + ConfigList *list; ConfigInfoView* info; struct symbol **result; @@ -291,12 +237,14 @@ protected: class ConfigMainWindow : public QMainWindow { Q_OBJECT + char *configname; static QAction *saveAction; static void conf_changed(void); public: ConfigMainWindow(void); public slots: void changeMenu(struct menu *); + void changeItens(struct menu *); void setMenuLink(struct menu *); void listFocusChanged(void); void goBack(void); @@ -315,12 +263,9 @@ protected: void closeEvent(QCloseEvent *e); ConfigSearchWindow *searchWindow; - ConfigView *menuView; ConfigList *menuList; - ConfigView *configView; ConfigList *configList; ConfigInfoView *helpText; - QToolBar *toolBar; QAction *backAction; QAction *singleViewAction; QAction *splitViewAction; diff --git a/support/kconfig/streamline_config.pl b/support/kconfig/streamline_config.pl index a2e83ab17d..d51cd7ac15 100755 --- a/support/kconfig/streamline_config.pl +++ b/support/kconfig/streamline_config.pl @@ -1,7 +1,7 @@ #!/usr/bin/env perl +# SPDX-License-Identifier: GPL-2.0 # # Copyright 2005-2009 - Steven Rostedt -# Licensed under the terms of the GNU GPL License version 2 # # It's simple enough to figure out how this works. # If not, then you can ask me at stripconfig at goodmis.org @@ -21,7 +21,7 @@ # 1. Boot up the kernel that you want to stream line the config on. # 2. Change directory to the directory holding the source of the # kernel that you just booted. -# 3. Copy the configuraton file to this directory as .config +# 3. Copy the configuration file to this directory as .config # 4. Have all your devices that you need modules for connected and # operational (make sure that their corresponding modules are loaded) # 5. Run this script redirecting the output to some other file @@ -56,8 +56,6 @@ sub dprint { print STDERR @_; } -my $config = ".config"; - my $uname = `uname -r`; chomp $uname; @@ -145,6 +143,7 @@ my %depends; my %selects; my %prompts; my %objects; +my %config2kfile; my $var; my $iflevel = 0; my @ifdeps; @@ -165,13 +164,13 @@ sub read_kconfig { my $last_source = ""; # Check for any environment variables used - while ($source =~ /\$(\w+)/ && $last_source ne $source) { + while ($source =~ /\$\((\w+)\)/ && $last_source ne $source) { my $env = $1; $last_source = $source; - $source =~ s/\$$env/$ENV{$env}/; + $source =~ s/\$\($env\)/$ENV{$env}/; } - open(my $kinfile, '<', $source) || die "Can't open $kconfig"; + open(my $kinfile, '<', $source) || die "Can't open $source"; while (<$kinfile>) { chomp; @@ -203,6 +202,7 @@ sub read_kconfig { if (/^\s*(menu)?config\s+(\S+)\s*$/) { $state = "NEW"; $config = $2; + $config2kfile{"CONFIG_$config"} = $kconfig; # Add depends for 'if' nesting for (my $i = 0; $i < $iflevel; $i++) { @@ -317,7 +317,7 @@ foreach my $makefile (@makefiles) { $_ = convert_vars($_, %make_vars); # collect objects after obj-$(CONFIG_FOO_BAR) - if (/obj-\$\((CONFIG_[^\)]*)\)\s*[+:]?=\s*(.*)/) { + if (/obj-\$[({](CONFIG_[^})]*)[)}]\s*[+:]?=\s*(.*)/) { $var = $1; $objs = $2; @@ -374,7 +374,7 @@ if (defined($lsmod_file)) { $lsmod = "$dir/lsmod"; last; } -} + } if (!defined($lsmod)) { # try just the path $lsmod = "lsmod"; @@ -481,7 +481,7 @@ sub parse_config_depends # The idea is we look at all the configs that select it. If one # is already in our list of configs to enable, then there's nothing # else to do. If there isn't, we pick the first config that was -# enabled in the orignal config and use that. +# enabled in the original config and use that. sub parse_config_selects { my ($config, $p) = @_; @@ -593,6 +593,23 @@ while ($repeat) { } my %setconfigs; +my @preserved_kconfigs; +if (defined($ENV{'LMC_KEEP'})) { + @preserved_kconfigs = split(/:/,$ENV{LMC_KEEP}); +} + +sub in_preserved_kconfigs { + my $kconfig = $config2kfile{$_[0]}; + if (!defined($kconfig)) { + return 0; + } + foreach my $excl (@preserved_kconfigs) { + if($kconfig =~ /^$excl/) { + return 1; + } + } + return 0; +} # Finally, read the .config file and turn off any module enabled that # we could not find a reason to keep enabled. @@ -612,47 +629,52 @@ foreach my $line (@config_file) { } if (/CONFIG_MODULE_SIG_KEY="(.+)"/) { - my $orig_cert = $1; - my $default_cert = "certs/signing_key.pem"; - - # Check that the logic in this script still matches the one in Kconfig - if (!defined($depends{"MODULE_SIG_KEY"}) || - $depends{"MODULE_SIG_KEY"} !~ /"\Q$default_cert\E"/) { - print STDERR "WARNING: MODULE_SIG_KEY assertion failure, ", - "update needed to ", __FILE__, " line ", __LINE__, "\n"; - print; - } elsif ($orig_cert ne $default_cert && ! -f $orig_cert) { - print STDERR "Module signature verification enabled but ", - "module signing key \"$orig_cert\" not found. Resetting ", - "signing key to default value.\n"; - print "CONFIG_MODULE_SIG_KEY=\"$default_cert\"\n"; - } else { - print; - } - next; + my $orig_cert = $1; + my $default_cert = "certs/signing_key.pem"; + + # Check that the logic in this script still matches the one in Kconfig + if (!defined($depends{"MODULE_SIG_KEY"}) || + $depends{"MODULE_SIG_KEY"} !~ /"\Q$default_cert\E"/) { + print STDERR "WARNING: MODULE_SIG_KEY assertion failure, ", + "update needed to ", __FILE__, " line ", __LINE__, "\n"; + print; + } elsif ($orig_cert ne $default_cert && ! -f $orig_cert) { + print STDERR "Module signature verification enabled but ", + "module signing key \"$orig_cert\" not found. Resetting ", + "signing key to default value.\n"; + print "CONFIG_MODULE_SIG_KEY=\"$default_cert\"\n"; + } else { + print; + } + next; } if (/CONFIG_SYSTEM_TRUSTED_KEYS="(.+)"/) { - my $orig_keys = $1; - - if (! -f $orig_keys) { - print STDERR "System keyring enabled but keys \"$orig_keys\" ", - "not found. Resetting keys to default value.\n"; - print "CONFIG_SYSTEM_TRUSTED_KEYS=\"\"\n"; - } else { - print; - } - next; + my $orig_keys = $1; + + if (! -f $orig_keys) { + print STDERR "System keyring enabled but keys \"$orig_keys\" ", + "not found. Resetting keys to default value.\n"; + print "CONFIG_SYSTEM_TRUSTED_KEYS=\"\"\n"; + } else { + print; + } + next; } if (/^(CONFIG.*)=(m|y)/) { + if (in_preserved_kconfigs($1)) { + dprint "Preserve config $1"; + print; + next; + } if (defined($configs{$1})) { if ($localyesconfig) { - $setconfigs{$1} = 'y'; + $setconfigs{$1} = 'y'; print "$1=y\n"; next; } else { - $setconfigs{$1} = $2; + $setconfigs{$1} = $2; } } elsif ($2 eq "m") { print "# $1 is not set\n"; @@ -680,3 +702,5 @@ foreach my $module (keys(%modules)) { print STDERR "\n"; } } + +# vim: softtabstop=4 diff --git a/support/kconfig/symbol.c b/support/kconfig/symbol.c index f0b2e3b310..81fe1884ef 100644 --- a/support/kconfig/symbol.c +++ b/support/kconfig/symbol.c @@ -1,64 +1,41 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ +#include #include #include #include #include -#include +#include "internal.h" #include "lkc.h" struct symbol symbol_yes = { .name = "y", .curr = { "y", yes }, + .menus = LIST_HEAD_INIT(symbol_yes.menus), .flags = SYMBOL_CONST|SYMBOL_VALID, -}, symbol_mod = { +}; + +struct symbol symbol_mod = { .name = "m", .curr = { "m", mod }, + .menus = LIST_HEAD_INIT(symbol_mod.menus), .flags = SYMBOL_CONST|SYMBOL_VALID, -}, symbol_no = { +}; + +struct symbol symbol_no = { .name = "n", .curr = { "n", no }, + .menus = LIST_HEAD_INIT(symbol_no.menus), .flags = SYMBOL_CONST|SYMBOL_VALID, -}, symbol_empty = { - .name = "", - .curr = { "", no }, - .flags = SYMBOL_VALID, }; -struct symbol *sym_defconfig_list; struct symbol *modules_sym; -tristate modules_val; - -struct expr *sym_env_list; - -static void sym_add_default(struct symbol *sym, const char *def) -{ - struct property *prop = prop_alloc(P_DEFAULT, sym); - - prop->expr = expr_alloc_symbol(sym_lookup(def, SYMBOL_CONST)); -} - -void sym_init(void) -{ - struct symbol *sym; - struct utsname uts; - static bool inited = false; - - if (inited) - return; - inited = true; - - uname(&uts); - - sym = sym_lookup("UNAME_RELEASE", 0); - sym->type = S_STRING; - sym->flags |= SYMBOL_AUTO; - sym_add_default(sym, uts.release); -} +static tristate modules_val; +static int sym_warnings; enum symbol_type sym_get_type(struct symbol *sym) { @@ -88,8 +65,6 @@ const char *sym_type_name(enum symbol_type type) return "string"; case S_UNKNOWN: return "unknown"; - case S_OTHER: - break; } return "???"; } @@ -103,15 +78,6 @@ struct property *sym_get_choice_prop(struct symbol *sym) return NULL; } -struct property *sym_get_env_prop(struct symbol *sym) -{ - struct property *prop; - - for_all_properties(sym, prop, P_ENV) - return prop; - return NULL; -} - static struct property *sym_get_default_prop(struct symbol *sym) { struct property *prop; @@ -124,7 +90,7 @@ static struct property *sym_get_default_prop(struct symbol *sym) return NULL; } -static struct property *sym_get_range_prop(struct symbol *sym) +struct property *sym_get_range_prop(struct symbol *sym) { struct property *prop; @@ -155,9 +121,9 @@ static long long sym_get_range_val(struct symbol *sym, int base) static void sym_validate_range(struct symbol *sym) { struct property *prop; + struct symbol *range_sym; int base; long long val, val2; - char str[64]; switch (sym->type) { case S_INT: @@ -173,17 +139,15 @@ static void sym_validate_range(struct symbol *sym) if (!prop) return; val = strtoll(sym->curr.val, NULL, base); - val2 = sym_get_range_val(prop->expr->left.sym, base); + range_sym = prop->expr->left.sym; + val2 = sym_get_range_val(range_sym, base); if (val >= val2) { - val2 = sym_get_range_val(prop->expr->right.sym, base); + range_sym = prop->expr->right.sym; + val2 = sym_get_range_val(range_sym, base); if (val <= val2) return; } - if (sym->type == S_INT) - sprintf(str, "%lld", val2); - else - sprintf(str, "0x%llx", val2); - sym->curr.val = xstrdup(str); + sym->curr.val = range_sym->curr.val; } static void sym_set_changed(struct symbol *sym) @@ -200,9 +164,8 @@ static void sym_set_changed(struct symbol *sym) static void sym_set_all_changed(void) { struct symbol *sym; - int i; - for_all_symbols(i, sym) + for_all_symbols(sym) sym_set_changed(sym); } @@ -259,7 +222,7 @@ static void sym_calc_visibility(struct symbol *sym) sym_set_changed(sym); } tri = no; - if (sym->implied.expr && sym->dir_dep.tri != no) + if (sym->implied.expr) tri = expr_calc_value(sym->implied.expr); if (tri == mod && sym_get_type(sym) == S_BOOLEAN) tri = yes; @@ -352,6 +315,14 @@ static void sym_warn_unmet_dep(struct symbol *sym) " Selected by [m]:\n"); fputs(str_get(&gs), stderr); + sym_warnings++; +} + +bool sym_dep_errors(void) +{ + if (sym_warnings) + return getenv("KCONFIG_WERROR"); + return false; } void sym_calc_value(struct symbol *sym) @@ -377,15 +348,21 @@ void sym_calc_value(struct symbol *sym) oldval = sym->curr; + newval.tri = no; + switch (sym->type) { case S_INT: + newval.val = "0"; + break; case S_HEX: + newval.val = "0x0"; + break; case S_STRING: - newval = symbol_empty.curr; + newval.val = ""; break; case S_BOOLEAN: case S_TRISTATE: - newval = symbol_no.curr; + newval.val = "n"; break; default: sym->curr.val = sym->name; @@ -432,6 +409,8 @@ void sym_calc_value(struct symbol *sym) if (sym->implied.tri != no) { sym->flags |= SYMBOL_WRITE; newval.tri = EXPR_OR(newval.tri, sym->implied.tri); + newval.tri = EXPR_AND(newval.tri, + sym->dir_dep.tri); } } calc_newval: @@ -439,8 +418,7 @@ void sym_calc_value(struct symbol *sym) sym_warn_unmet_dep(sym); newval.tri = EXPR_OR(newval.tri, sym->rev_dep.tri); } - if (newval.tri == mod && - (sym_get_type(sym) == S_BOOLEAN || sym->implied.tri == yes)) + if (newval.tri == mod && sym_get_type(sym) == S_BOOLEAN) newval.tri = yes; break; case S_STRING: @@ -490,7 +468,7 @@ void sym_calc_value(struct symbol *sym) } } - if (sym->flags & SYMBOL_AUTO) + if (sym->flags & SYMBOL_NO_WRITE) sym->flags &= ~SYMBOL_WRITE; if (sym->flags & SYMBOL_NEED_SET_CHOICE_VALUES) @@ -500,11 +478,10 @@ void sym_calc_value(struct symbol *sym) void sym_clear_all_valid(void) { struct symbol *sym; - int i; - for_all_symbols(i, sym) + for_all_symbols(sym) sym->flags &= ~SYMBOL_VALID; - sym_add_change_count(1); + conf_set_changed(true); sym_calc_value(modules_sym); } @@ -522,8 +499,6 @@ bool sym_tristate_within_range(struct symbol *sym, tristate val) return false; if (sym->visible <= sym->rev_dep.tri) return false; - if (sym->implied.tri == yes && val == mod) - return false; if (sym_is_choice_value(sym) && sym->visible == yes) return val == yes; return val >= sym->rev_dep.tri && val <= sym->visible; @@ -733,13 +708,12 @@ const char *sym_get_string_default(struct symbol *sym) { struct property *prop; struct symbol *ds; - const char *str; + const char *str = ""; tristate val; sym_calc_visibility(sym); sym_calc_value(modules_sym); val = symbol_no.curr.tri; - str = symbol_empty.curr.val; /* If symbol has a default value look it up */ prop = sym_get_default_prop(sym); @@ -789,15 +763,17 @@ const char *sym_get_string_default(struct symbol *sym) case yes: return "y"; } case S_INT: + if (!str[0]) + str = "0"; + break; case S_HEX: - return str; - case S_STRING: - return str; - case S_OTHER: - case S_UNKNOWN: + if (!str[0]) + str = "0x0"; + break; + default: break; } - return ""; + return str; } const char *sym_get_string_value(struct symbol *sym) @@ -824,19 +800,12 @@ const char *sym_get_string_value(struct symbol *sym) return (const char *)sym->curr.val; } -bool sym_is_changable(struct symbol *sym) +bool sym_is_changeable(struct symbol *sym) { return sym->visible > sym->rev_dep.tri; } -static unsigned strhash(const char *s) -{ - /* fnv32 hash */ - unsigned hash = 2166136261U; - for (; *s; s++) - hash = (hash ^ *s) * 0x01000193; - return hash; -} +HASHTABLE_DEFINE(sym_hashtable, SYMBOL_HASHSIZE); struct symbol *sym_lookup(const char *name, int flags) { @@ -852,9 +821,9 @@ struct symbol *sym_lookup(const char *name, int flags) case 'n': return &symbol_no; } } - hash = strhash(name) % SYMBOL_HASHSIZE; + hash = strhash(name); - for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) { + hash_for_each_possible(sym_hashtable, symbol, node, hash) { if (symbol->name && !strcmp(symbol->name, name) && (flags ? symbol->flags & flags @@ -871,10 +840,10 @@ struct symbol *sym_lookup(const char *name, int flags) memset(symbol, 0, sizeof(*symbol)); symbol->name = new_name; symbol->type = S_UNKNOWN; - symbol->flags |= flags; + symbol->flags = flags; + INIT_LIST_HEAD(&symbol->menus); - symbol->next = symbol_hash[hash]; - symbol_hash[hash] = symbol; + hash_add(sym_hashtable, &symbol->node, hash); return symbol; } @@ -894,9 +863,9 @@ struct symbol *sym_find(const char *name) case 'n': return &symbol_no; } } - hash = strhash(name) % SYMBOL_HASHSIZE; + hash = strhash(name); - for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) { + hash_for_each_possible(sym_hashtable, symbol, node, hash) { if (symbol->name && !strcmp(symbol->name, name) && !(symbol->flags & SYMBOL_CONST)) @@ -906,102 +875,6 @@ struct symbol *sym_find(const char *name) return symbol; } -/* - * Expand symbol's names embedded in the string given in argument. Symbols' - * name to be expanded shall be prefixed by a '$'. Unknown symbol expands to - * the empty string. - */ -char *sym_expand_string_value(const char *in) -{ - const char *src; - char *res; - size_t reslen; - - /* - * Note: 'in' might come from a token that's about to be - * freed, so make sure to always allocate a new string - */ - reslen = strlen(in) + 1; - res = xmalloc(reslen); - res[0] = '\0'; - - while ((src = strchr(in, '$'))) { - char *p, name[SYMBOL_MAXLENGTH]; - const char *symval = ""; - struct symbol *sym; - size_t newlen; - - strncat(res, in, src - in); - src++; - - p = name; - while (isalnum(*src) || *src == '_') - *p++ = *src++; - *p = '\0'; - - sym = sym_find(name); - if (sym != NULL) { - sym_calc_value(sym); - symval = sym_get_string_value(sym); - } - - newlen = strlen(res) + strlen(symval) + strlen(src) + 1; - if (newlen > reslen) { - reslen = newlen; - res = xrealloc(res, reslen); - } - - strcat(res, symval); - in = src; - } - strcat(res, in); - - return res; -} - -const char *sym_escape_string_value(const char *in) -{ - const char *p; - size_t reslen; - char *res; - size_t l; - - reslen = strlen(in) + strlen("\"\"") + 1; - - p = in; - for (;;) { - l = strcspn(p, "\"\\"); - p += l; - - if (p[0] == '\0') - break; - - reslen++; - p++; - } - - res = xmalloc(reslen); - res[0] = '\0'; - - strcat(res, "\""); - - p = in; - for (;;) { - l = strcspn(p, "\"\\"); - strncat(res, p, l); - p += l; - - if (p[0] == '\0') - break; - - strcat(res, "\\"); - strncat(res, p++, 1); - } - - strcat(res, "\""); - return res; -} - struct sym_match { struct symbol *sym; off_t so, eo; @@ -1052,7 +925,7 @@ struct symbol **sym_re_search(const char *pattern) if (regcomp(&re, pattern, REG_EXTENDED|REG_ICASE)) return NULL; - for_all_symbols(i, sym) { + for_all_symbols(sym) { if (sym->flags & SYMBOL_CONST || !sym->name) continue; if (regexec(&re, sym->name, 1, match, 0)) @@ -1100,7 +973,7 @@ static struct dep_stack { struct dep_stack *prev, *next; struct symbol *sym; struct property *prop; - struct expr *expr; + struct expr **expr; } *check_top; static void dep_stack_insert(struct dep_stack *stack, struct symbol *sym) @@ -1163,39 +1036,50 @@ static void sym_check_print_recursive(struct symbol *last_sym) } if (stack->sym == last_sym) fprintf(stderr, "%s:%d:error: recursive dependency detected!\n", - prop->file->name, prop->lineno); + prop->filename, prop->lineno); - if (stack->expr) { - fprintf(stderr, "%s:%d:\tsymbol %s %s value contains %s\n", - prop->file->name, prop->lineno, + if (sym_is_choice(sym)) { + fprintf(stderr, "%s:%d:\tchoice %s contains symbol %s\n", + menu->filename, menu->lineno, + sym->name ? sym->name : "", + next_sym->name ? next_sym->name : ""); + } else if (sym_is_choice_value(sym)) { + fprintf(stderr, "%s:%d:\tsymbol %s is part of choice %s\n", + menu->filename, menu->lineno, sym->name ? sym->name : "", - prop_get_type_name(prop->type), next_sym->name ? next_sym->name : ""); - } else if (stack->prop) { + } else if (stack->expr == &sym->dir_dep.expr) { fprintf(stderr, "%s:%d:\tsymbol %s depends on %s\n", - prop->file->name, prop->lineno, + prop->filename, prop->lineno, sym->name ? sym->name : "", next_sym->name ? next_sym->name : ""); - } else if (sym_is_choice(sym)) { - fprintf(stderr, "%s:%d:\tchoice %s contains symbol %s\n", - menu->file->name, menu->lineno, + } else if (stack->expr == &sym->rev_dep.expr) { + fprintf(stderr, "%s:%d:\tsymbol %s is selected by %s\n", + prop->filename, prop->lineno, sym->name ? sym->name : "", next_sym->name ? next_sym->name : ""); - } else if (sym_is_choice_value(sym)) { - fprintf(stderr, "%s:%d:\tsymbol %s is part of choice %s\n", - menu->file->name, menu->lineno, + } else if (stack->expr == &sym->implied.expr) { + fprintf(stderr, "%s:%d:\tsymbol %s is implied by %s\n", + prop->filename, prop->lineno, + sym->name ? sym->name : "", + next_sym->name ? next_sym->name : ""); + } else if (stack->expr) { + fprintf(stderr, "%s:%d:\tsymbol %s %s value contains %s\n", + prop->filename, prop->lineno, sym->name ? sym->name : "", + prop_get_type_name(prop->type), next_sym->name ? next_sym->name : ""); } else { - fprintf(stderr, "%s:%d:\tsymbol %s is selected by %s\n", - prop->file->name, prop->lineno, + fprintf(stderr, "%s:%d:\tsymbol %s %s is visible depending on %s\n", + prop->filename, prop->lineno, sym->name ? sym->name : "", + prop_get_type_name(prop->type), next_sym->name ? next_sym->name : ""); } } fprintf(stderr, - "For a resolution refer to Documentation/kbuild/kconfig-language.txt\n" + "For a resolution refer to Documentation/kbuild/kconfig-language.rst\n" "subsection \"Kconfig recursive dependency limitations\"\n" "\n"); @@ -1246,12 +1130,26 @@ static struct symbol *sym_check_sym_deps(struct symbol *sym) dep_stack_insert(&stack, sym); + stack.expr = &sym->dir_dep.expr; + sym2 = sym_check_expr_deps(sym->dir_dep.expr); + if (sym2) + goto out; + + stack.expr = &sym->rev_dep.expr; sym2 = sym_check_expr_deps(sym->rev_dep.expr); if (sym2) goto out; + stack.expr = &sym->implied.expr; + sym2 = sym_check_expr_deps(sym->implied.expr); + if (sym2) + goto out; + + stack.expr = NULL; + for (prop = sym->prop; prop; prop = prop->next) { - if (prop->type == P_CHOICE || prop->type == P_SELECT) + if (prop->type == P_CHOICE || prop->type == P_SELECT || + prop->type == P_IMPLY) continue; stack.prop = prop; sym2 = sym_check_expr_deps(prop->visible.expr); @@ -1259,7 +1157,7 @@ static struct symbol *sym_check_sym_deps(struct symbol *sym) break; if (prop->type != P_DEFAULT || sym_is_choice(sym)) continue; - stack.expr = prop->expr; + stack.expr = &prop->expr; sym2 = sym_check_expr_deps(prop->expr); if (sym2) break; @@ -1337,34 +1235,9 @@ struct symbol *sym_check_deps(struct symbol *sym) sym->flags &= ~SYMBOL_CHECK; } - if (sym2 && sym2 == sym) - sym2 = NULL; - return sym2; } -struct property *prop_alloc(enum prop_type type, struct symbol *sym) -{ - struct property *prop; - struct property **propp; - - prop = xmalloc(sizeof(*prop)); - memset(prop, 0, sizeof(*prop)); - prop->type = type; - prop->sym = sym; - prop->file = current_file; - prop->lineno = zconf_lineno(); - - /* append property to the prop list of symbol */ - if (sym) { - for (propp = &sym->prop; *propp; propp = &(*propp)->next) - ; - *propp = prop; - } - - return prop; -} - struct symbol *prop_get_symbol(struct property *prop) { if (prop->expr && (prop->expr->type == E_SYMBOL || @@ -1378,8 +1251,6 @@ const char *prop_get_type_name(enum prop_type type) switch (type) { case P_PROMPT: return "prompt"; - case P_ENV: - return "env"; case P_COMMENT: return "comment"; case P_MENU: @@ -1401,32 +1272,3 @@ const char *prop_get_type_name(enum prop_type type) } return "unknown"; } - -static void prop_add_env(const char *env) -{ - struct symbol *sym, *sym2; - struct property *prop; - char *p; - - sym = current_entry->sym; - sym->flags |= SYMBOL_AUTO; - for_all_properties(sym, prop, P_ENV) { - sym2 = prop_get_symbol(prop); - if (strcmp(sym2->name, env)) - menu_warn(current_entry, "redefining environment symbol from %s", - sym2->name); - return; - } - - prop = prop_alloc(P_ENV, sym); - prop->expr = expr_alloc_symbol(sym_lookup(env, SYMBOL_CONST)); - - sym_env_list = expr_alloc_one(E_LIST, sym_env_list); - sym_env_list->right.sym = sym; - - p = getenv(env); - if (p) - sym_add_default(sym, p); - else - menu_warn(current_entry, "environment variable %s undefined", env); -} diff --git a/support/kconfig/util.c b/support/kconfig/util.c index 8665f5bb89..439c131b42 100644 --- a/support/kconfig/util.c +++ b/support/kconfig/util.c @@ -1,93 +1,57 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002-2005 Roman Zippel * Copyright (C) 2002-2005 Sam Ravnborg - * - * Released under the terms of the GNU GPL v2.0. */ #include #include #include + +#include "hashtable.h" #include "lkc.h" +unsigned int strhash(const char *s) +{ + /* fnv32 hash */ + unsigned int hash = 2166136261U; + + for (; *s; s++) + hash = (hash ^ *s) * 0x01000193; + return hash; +} + +/* hash table of all parsed Kconfig files */ +static HASHTABLE_DEFINE(file_hashtable, 1U << 11); + +struct file { + struct hlist_node node; + char name[]; +}; + /* file already present in list? If not add it */ -struct file *file_lookup(const char *name) +const char *file_lookup(const char *name) { struct file *file; - char *file_name = sym_expand_string_value(name); + size_t len; + int hash = strhash(name); - for (file = file_list; file; file = file->next) { - if (!strcmp(name, file->name)) { - free(file_name); - return file; - } - } + hash_for_each_possible(file_hashtable, file, node, hash) + if (!strcmp(name, file->name)) + return file->name; - file = xmalloc(sizeof(*file)); + len = strlen(name); + file = xmalloc(sizeof(*file) + len + 1); memset(file, 0, sizeof(*file)); - file->name = file_name; - file->next = file_list; - file_list = file; - return file; -} + memcpy(file->name, name, len); + file->name[len] = '\0'; -/* write a dependency file as used by kbuild to track dependencies */ -int file_write_dep(const char *name) -{ - char *str; - char buf[PATH_MAX+20], buf2[PATH_MAX+1], dir[PATH_MAX+1]; - struct symbol *sym, *env_sym; - struct expr *e; - struct file *file; - FILE *out; - - if (!name) - name = ".kconfig.d"; - - strcpy(dir, conf_get_configname()); - str = strrchr(dir, '/'); - if (str) - str[1] = 0; - else - dir[0] = 0; - - sprintf(buf, "%s..config.tmp", dir); - out = fopen(buf, "w"); - if (!out) - return 1; - fprintf(out, "deps_config := \\\n"); - for (file = file_list; file; file = file->next) { - if (file->next) - fprintf(out, "\t%s \\\n", file->name); - else - fprintf(out, "\t%s\n", file->name); - } - fprintf(out, "\n%s: \\\n" - "\t$(deps_config)\n\n", conf_get_autoconfig_name()); - - expr_list_for_each_sym(sym_env_list, e, sym) { - struct property *prop; - const char *value; - - prop = sym_get_env_prop(sym); - env_sym = prop_get_symbol(prop); - if (!env_sym) - continue; - value = getenv(env_sym->name); - if (!value) - value = ""; - fprintf(out, "ifneq \"$(%s)\" \"%s\"\n", env_sym->name, value); - fprintf(out, "%s: FORCE\n", conf_get_autoconfig_name()); - fprintf(out, "endif\n"); - } + hash_add(file_hashtable, &file->node, hash); - fprintf(out, "\n$(deps_config): ;\n"); - fclose(out); - sprintf(buf2, "%s%s", dir, name); - rename(buf, buf2); - return 0; -} + str_printf(&autoconf_cmd, "\t%s \\\n", name); + return file->name; +} /* Allocate initial growable string */ struct gstr str_new(void) @@ -103,8 +67,7 @@ struct gstr str_new(void) /* Free storage for growable string */ void str_free(struct gstr *gs) { - if (gs->s) - free(gs->s); + free(gs->s); gs->s = NULL; gs->len = 0; } @@ -135,7 +98,7 @@ void str_printf(struct gstr *gs, const char *fmt, ...) } /* Retrieve value of growable string */ -const char *str_get(struct gstr *gs) +char *str_get(struct gstr *gs) { return gs->s; } @@ -177,3 +140,14 @@ char *xstrdup(const char *s) fprintf(stderr, "Out of memory.\n"); exit(1); } + +char *xstrndup(const char *s, size_t n) +{ + char *p; + + p = strndup(s, n); + if (p) + return p; + fprintf(stderr, "Out of memory.\n"); + exit(1); +} diff --git a/support/kconfig/zconf.l b/support/kconfig/zconf.l deleted file mode 100644 index 045093d827..0000000000 --- a/support/kconfig/zconf.l +++ /dev/null @@ -1,372 +0,0 @@ -%option nostdinit noyywrap never-interactive full ecs -%option 8bit nodefault yylineno -%option noinput -%x COMMAND HELP STRING PARAM -%{ -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include -#include -#include - -#include "lkc.h" - -#define START_STRSIZE 16 - -static struct { - struct file *file; - int lineno; -} current_pos; - -static char *text; -static int text_size, text_asize; - -struct buffer { - struct buffer *parent; - YY_BUFFER_STATE state; -}; - -struct buffer *current_buf; - -static int last_ts, first_ts; - -static void zconf_endhelp(void); -static void zconf_endfile(void); - -static void new_string(void) -{ - text = xmalloc(START_STRSIZE); - text_asize = START_STRSIZE; - text_size = 0; - *text = 0; -} - -static void append_string(const char *str, int size) -{ - int new_size = text_size + size + 1; - if (new_size > text_asize) { - new_size += START_STRSIZE - 1; - new_size &= -START_STRSIZE; - text = xrealloc(text, new_size); - text_asize = new_size; - } - memcpy(text + text_size, str, size); - text_size += size; - text[text_size] = 0; -} - -static void alloc_string(const char *str, int size) -{ - text = xmalloc(size + 1); - memcpy(text, str, size); - text[size] = 0; -} - -static void warn_ignored_character(char chr) -{ - fprintf(stderr, - "%s:%d:warning: ignoring unsupported character '%c'\n", - zconf_curname(), zconf_lineno(), chr); -} -%} - -n [A-Za-z0-9_-] - -%% - int str = 0; - int ts, i; - -[ \t]*#.*\n | -[ \t]*\n { - return T_EOL; -} -[ \t]*#.* - - -[ \t]+ { - BEGIN(COMMAND); -} - -. { - unput(yytext[0]); - BEGIN(COMMAND); -} - - -{ - {n}+ { - const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); - BEGIN(PARAM); - current_pos.file = current_file; - current_pos.lineno = yylineno; - if (id && id->flags & TF_COMMAND) { - yylval.id = id; - return id->token; - } - alloc_string(yytext, yyleng); - yylval.string = text; - return T_WORD; - } - . warn_ignored_character(*yytext); - \n { - BEGIN(INITIAL); - return T_EOL; - } -} - -{ - "&&" return T_AND; - "||" return T_OR; - "(" return T_OPEN_PAREN; - ")" return T_CLOSE_PAREN; - "!" return T_NOT; - "=" return T_EQUAL; - "!=" return T_UNEQUAL; - "<=" return T_LESS_EQUAL; - ">=" return T_GREATER_EQUAL; - "<" return T_LESS; - ">" return T_GREATER; - \"|\' { - str = yytext[0]; - new_string(); - BEGIN(STRING); - } - \n BEGIN(INITIAL); return T_EOL; - ({n}|[/.])+ { - const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); - if (id && id->flags & TF_PARAM) { - yylval.id = id; - return id->token; - } - alloc_string(yytext, yyleng); - yylval.string = text; - return T_WORD; - } - #.* /* comment */ - \\\n ; - [[:blank:]]+ - . warn_ignored_character(*yytext); - <> { - BEGIN(INITIAL); - } -} - -{ - [^'"\\\n]+/\n { - append_string(yytext, yyleng); - yylval.string = text; - return T_WORD_QUOTE; - } - [^'"\\\n]+ { - append_string(yytext, yyleng); - } - \\.?/\n { - append_string(yytext + 1, yyleng - 1); - yylval.string = text; - return T_WORD_QUOTE; - } - \\.? { - append_string(yytext + 1, yyleng - 1); - } - \'|\" { - if (str == yytext[0]) { - BEGIN(PARAM); - yylval.string = text; - return T_WORD_QUOTE; - } else - append_string(yytext, 1); - } - \n { - fprintf(stderr, - "%s:%d:warning: multi-line strings not supported\n", - zconf_curname(), zconf_lineno()); - BEGIN(INITIAL); - return T_EOL; - } - <> { - BEGIN(INITIAL); - } -} - -{ - [ \t]+ { - ts = 0; - for (i = 0; i < yyleng; i++) { - if (yytext[i] == '\t') - ts = (ts & ~7) + 8; - else - ts++; - } - last_ts = ts; - if (first_ts) { - if (ts < first_ts) { - zconf_endhelp(); - return T_HELPTEXT; - } - ts -= first_ts; - while (ts > 8) { - append_string(" ", 8); - ts -= 8; - } - append_string(" ", ts); - } - } - [ \t]*\n/[^ \t\n] { - zconf_endhelp(); - return T_HELPTEXT; - } - [ \t]*\n { - append_string("\n", 1); - } - [^ \t\n].* { - while (yyleng) { - if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t')) - break; - yyleng--; - } - append_string(yytext, yyleng); - if (!first_ts) - first_ts = last_ts; - } - <> { - zconf_endhelp(); - return T_HELPTEXT; - } -} - -<> { - if (current_file) { - zconf_endfile(); - return T_EOL; - } - fclose(yyin); - yyterminate(); -} - -%% -void zconf_starthelp(void) -{ - new_string(); - last_ts = first_ts = 0; - BEGIN(HELP); -} - -static void zconf_endhelp(void) -{ - yylval.string = text; - BEGIN(INITIAL); -} - - -/* - * Try to open specified file with following names: - * ./name - * $(srctree)/name - * The latter is used when srctree is separate from objtree - * when compiling the kernel. - * Return NULL if file is not found. - */ -FILE *zconf_fopen(const char *name) -{ - char *env, fullname[PATH_MAX+1]; - FILE *f; - - f = fopen(name, "r"); - if (!f && name != NULL && name[0] != '/') { - env = getenv(SRCTREE); - if (env) { - sprintf(fullname, "%s/%s", env, name); - f = fopen(fullname, "r"); - } - } - return f; -} - -void zconf_initscan(const char *name) -{ - yyin = zconf_fopen(name); - if (!yyin) { - fprintf(stderr, "can't find file %s\n", name); - exit(1); - } - - current_buf = xmalloc(sizeof(*current_buf)); - memset(current_buf, 0, sizeof(*current_buf)); - - current_file = file_lookup(name); - yylineno = 1; -} - -void zconf_nextfile(const char *name) -{ - struct file *iter; - struct file *file = file_lookup(name); - struct buffer *buf = xmalloc(sizeof(*buf)); - memset(buf, 0, sizeof(*buf)); - - current_buf->state = YY_CURRENT_BUFFER; - yyin = zconf_fopen(file->name); - if (!yyin) { - fprintf(stderr, "%s:%d: can't open file \"%s\"\n", - zconf_curname(), zconf_lineno(), file->name); - exit(1); - } - yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); - buf->parent = current_buf; - current_buf = buf; - - current_file->lineno = yylineno; - file->parent = current_file; - - for (iter = current_file; iter; iter = iter->parent) { - if (!strcmp(iter->name, file->name)) { - fprintf(stderr, - "Recursive inclusion detected.\n" - "Inclusion path:\n" - " current file : %s\n", file->name); - iter = file; - do { - iter = iter->parent; - fprintf(stderr, " included from: %s:%d\n", - iter->name, iter->lineno - 1); - } while (strcmp(iter->name, file->name)); - exit(1); - } - } - - yylineno = 1; - current_file = file; -} - -static void zconf_endfile(void) -{ - struct buffer *parent; - - current_file = current_file->parent; - if (current_file) - yylineno = current_file->lineno; - - parent = current_buf->parent; - if (parent) { - fclose(yyin); - yy_delete_buffer(YY_CURRENT_BUFFER); - yy_switch_to_buffer(parent->state); - } - free(current_buf); - current_buf = parent; -} - -int zconf_lineno(void) -{ - return current_pos.lineno; -} - -const char *zconf_curname(void) -{ - return current_pos.file ? current_pos.file->name : ""; -} diff --git a/support/kconfig/zconf.lex.c_shipped b/support/kconfig/zconf.lex.c_shipped deleted file mode 100644 index 33913d43c7..0000000000 --- a/support/kconfig/zconf.lex.c_shipped +++ /dev/null @@ -1,2500 +0,0 @@ - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 4 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif - -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#ifndef SIZE_MAX -#define SIZE_MAX (~(size_t)0) -#endif - -#endif /* ! C99 */ - -#endif /* ! FLEXINT_H */ - -/* begin standard C++ headers. */ - -/* TODO: this is always defined, so inline it */ -#define yyconst const - -#if defined(__GNUC__) && __GNUC__ >= 3 -#define yynoreturn __attribute__((__noreturn__)) -#else -#define yynoreturn -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an - * integer in range [0..255] for use as an array index. - */ -#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN (yy_start) = 1 + 2 * -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START (((yy_start) - 1) / 2) -#define YYSTATE YY_START -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart( yyin ) -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else -#define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ -#endif - -/* The state buf must be large enough to hold one state per character in the main buffer. - */ -#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -extern int yyleng; - -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - - /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires - * access to the local variable yy_act. Since yyless() is a macro, it would break - * existing scanners that call yyless() from OUTSIDE yylex. - * One obvious solution it to make yy_act a global. I tried that, and saw - * a 5% performance hit in a non-yylineno scanner, because yy_act is - * normally declared as a register variable-- so it is not worth it. - */ - #define YY_LESS_LINENO(n) \ - do { \ - int yyl;\ - for ( yyl = n; yyl < yyleng; ++yyl )\ - if ( yytext[yyl] == '\n' )\ - --yylineno;\ - }while(0) - #define YY_LINENO_REWIND_TO(dst) \ - do {\ - const char *p;\ - for ( p = yy_cp-1; p >= (dst); --p)\ - if ( *p == '\n' )\ - --yylineno;\ - }while(0) - -/* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = (yy_hold_char); \ - YY_RESTORE_YY_MORE_OFFSET \ - (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) -#define unput(c) yyunput( c, (yytext_ptr) ) - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - int yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -/* Stack of input buffers. */ -static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ -static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - * - * Returns the top of the stack, or NULL. - */ -#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ - ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ - : NULL) -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = NULL; -static int yy_init = 0; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart ( FILE *input_file ); -void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); -void yy_delete_buffer ( YY_BUFFER_STATE b ); -void yy_flush_buffer ( YY_BUFFER_STATE b ); -void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); -void yypop_buffer_state ( void ); - -static void yyensure_buffer_stack ( void ); -static void yy_load_buffer_state ( void ); -static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); -#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) - -YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); -YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); - -void *yyalloc ( yy_size_t ); -void *yyrealloc ( void *, yy_size_t ); -void yyfree ( void * ); - -#define yy_new_buffer yy_create_buffer -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! YY_CURRENT_BUFFER ){ \ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } -#define yy_set_bol(at_bol) \ - { \ - if ( ! YY_CURRENT_BUFFER ){\ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) - -/* Begin user sect3 */ - -#define yywrap() (/*CONSTCOND*/1) -#define YY_SKIP_YYWRAP -typedef flex_uint8_t YY_CHAR; - -FILE *yyin = NULL, *yyout = NULL; - -typedef int yy_state_type; - -extern int yylineno; -int yylineno = 1; - -extern char *yytext; -#ifdef yytext_ptr -#undef yytext_ptr -#endif -#define yytext_ptr yytext - -static const flex_int16_t yy_nxt[][18] = - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0 - }, - - { - 11, 12, 13, 14, 12, 12, 15, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12 - }, - - { - 11, 12, 13, 14, 12, 12, 15, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12 - }, - - { - 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, - 16, 18, 16, 16, 16, 16, 16, 16 - }, - - { - 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, - 16, 18, 16, 16, 16, 16, 16, 16 - - }, - - { - 11, 19, 20, 21, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19 - }, - - { - 11, 19, 20, 21, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19 - }, - - { - 11, 22, 22, 23, 22, 24, 22, 22, 24, 22, - 22, 22, 22, 22, 22, 22, 25, 22 - }, - - { - 11, 22, 22, 23, 22, 24, 22, 22, 24, 22, - 22, 22, 22, 22, 22, 22, 25, 22 - }, - - { - 11, 26, 27, 28, 29, 30, 31, 32, 30, 33, - 34, 35, 35, 36, 37, 38, 39, 40 - - }, - - { - 11, 26, 27, 28, 29, 30, 31, 32, 30, 33, - 34, 35, 35, 36, 37, 38, 39, 40 - }, - - { - -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, - -11, -11, -11, -11, -11, -11, -11, -11 - }, - - { - 11, -12, -12, -12, -12, -12, -12, -12, -12, -12, - -12, -12, -12, -12, -12, -12, -12, -12 - }, - - { - 11, -13, 41, 42, -13, -13, 43, -13, -13, -13, - -13, -13, -13, -13, -13, -13, -13, -13 - }, - - { - 11, -14, -14, -14, -14, -14, -14, -14, -14, -14, - -14, -14, -14, -14, -14, -14, -14, -14 - - }, - - { - 11, 44, 44, 45, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44 - }, - - { - 11, -16, -16, -16, -16, -16, -16, -16, -16, -16, - -16, -16, -16, -16, -16, -16, -16, -16 - }, - - { - 11, -17, -17, -17, -17, -17, -17, -17, -17, -17, - -17, -17, -17, -17, -17, -17, -17, -17 - }, - - { - 11, -18, -18, -18, -18, -18, -18, -18, -18, -18, - -18, 46, -18, -18, -18, -18, -18, -18 - }, - - { - 11, 47, 47, -19, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47 - - }, - - { - 11, -20, 48, 49, -20, -20, -20, -20, -20, -20, - -20, -20, -20, -20, -20, -20, -20, -20 - }, - - { - 11, 50, -21, -21, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50 - }, - - { - 11, 51, 51, 52, 51, -22, 51, 51, -22, 51, - 51, 51, 51, 51, 51, 51, -22, 51 - }, - - { - 11, -23, -23, -23, -23, -23, -23, -23, -23, -23, - -23, -23, -23, -23, -23, -23, -23, -23 - }, - - { - 11, -24, -24, -24, -24, -24, -24, -24, -24, -24, - -24, -24, -24, -24, -24, -24, -24, -24 - - }, - - { - 11, 53, 53, 54, 53, 53, 53, 53, 53, 53, - 53, 53, 53, 53, 53, 53, 53, 53 - }, - - { - 11, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26 - }, - - { - 11, -27, 55, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27 - }, - - { - 11, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28 - }, - - { - 11, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, 56, -29, -29, -29 - - }, - - { - 11, -30, -30, -30, -30, -30, -30, -30, -30, -30, - -30, -30, -30, -30, -30, -30, -30, -30 - }, - - { - 11, 57, 57, -31, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57 - }, - - { - 11, -32, -32, -32, -32, -32, -32, 58, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32 - }, - - { - 11, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33 - }, - - { - 11, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34 - - }, - - { - 11, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, 59, 59, -35, -35, -35, -35, -35 - }, - - { - 11, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, 60, -36, -36, -36 - }, - - { - 11, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37 - }, - - { - 11, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, 61, -38, -38, -38 - }, - - { - 11, -39, -39, 62, -39, -39, -39, -39, -39, -39, - -39, -39, -39, -39, -39, -39, -39, -39 - - }, - - { - 11, -40, -40, -40, -40, -40, -40, -40, -40, -40, - -40, -40, -40, -40, -40, -40, -40, 63 - }, - - { - 11, -41, 41, 42, -41, -41, 43, -41, -41, -41, - -41, -41, -41, -41, -41, -41, -41, -41 - }, - - { - 11, -42, -42, -42, -42, -42, -42, -42, -42, -42, - -42, -42, -42, -42, -42, -42, -42, -42 - }, - - { - 11, 44, 44, 45, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44 - }, - - { - 11, 44, 44, 45, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44 - - }, - - { - 11, -45, -45, -45, -45, -45, -45, -45, -45, -45, - -45, -45, -45, -45, -45, -45, -45, -45 - }, - - { - 11, -46, -46, -46, -46, -46, -46, -46, -46, -46, - -46, 46, -46, -46, -46, -46, -46, -46 - }, - - { - 11, 47, 47, -47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47 - }, - - { - 11, -48, 48, 49, -48, -48, -48, -48, -48, -48, - -48, -48, -48, -48, -48, -48, -48, -48 - }, - - { - 11, 50, -49, -49, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50 - - }, - - { - 11, -50, -50, -50, -50, -50, -50, -50, -50, -50, - -50, -50, -50, -50, -50, -50, -50, -50 - }, - - { - 11, 51, 51, 52, 51, -51, 51, 51, -51, 51, - 51, 51, 51, 51, 51, 51, -51, 51 - }, - - { - 11, -52, -52, -52, -52, -52, -52, -52, -52, -52, - -52, -52, -52, -52, -52, -52, -52, -52 - }, - - { - 11, -53, -53, 54, -53, -53, -53, -53, -53, -53, - -53, -53, -53, -53, -53, -53, -53, -53 - }, - - { - 11, -54, -54, -54, -54, -54, -54, -54, -54, -54, - -54, -54, -54, -54, -54, -54, -54, -54 - - }, - - { - 11, -55, 55, -55, -55, -55, -55, -55, -55, -55, - -55, -55, -55, -55, -55, -55, -55, -55 - }, - - { - 11, -56, -56, -56, -56, -56, -56, -56, -56, -56, - -56, -56, -56, -56, -56, -56, -56, -56 - }, - - { - 11, 57, 57, -57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57 - }, - - { - 11, -58, -58, -58, -58, -58, -58, -58, -58, -58, - -58, -58, -58, -58, -58, -58, -58, -58 - }, - - { - 11, -59, -59, -59, -59, -59, -59, -59, -59, -59, - -59, 59, 59, -59, -59, -59, -59, -59 - - }, - - { - 11, -60, -60, -60, -60, -60, -60, -60, -60, -60, - -60, -60, -60, -60, -60, -60, -60, -60 - }, - - { - 11, -61, -61, -61, -61, -61, -61, -61, -61, -61, - -61, -61, -61, -61, -61, -61, -61, -61 - }, - - { - 11, -62, -62, -62, -62, -62, -62, -62, -62, -62, - -62, -62, -62, -62, -62, -62, -62, -62 - }, - - { - 11, -63, -63, -63, -63, -63, -63, -63, -63, -63, - -63, -63, -63, -63, -63, -63, -63, -63 - }, - - } ; - -static yy_state_type yy_get_previous_state ( void ); -static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); -static int yy_get_next_buffer ( void ); -static void yynoreturn yy_fatal_error ( const char* msg ); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - (yytext_ptr) = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - (yy_hold_char) = *yy_cp; \ - *yy_cp = '\0'; \ - (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 37 -#define YY_END_OF_BUFFER 38 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static const flex_int16_t yy_accept[64] = - { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 38, 5, 4, 2, 3, 7, 8, 6, 36, 33, - 35, 28, 32, 31, 30, 26, 25, 21, 13, 20, - 23, 26, 11, 12, 22, 18, 14, 19, 26, 26, - 4, 2, 3, 3, 1, 6, 36, 33, 35, 34, - 28, 27, 30, 29, 25, 15, 23, 9, 22, 16, - 17, 24, 10 - } ; - -static const YY_CHAR yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 4, 5, 6, 1, 1, 7, 8, 9, - 10, 1, 1, 1, 11, 12, 12, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 1, 1, 13, - 14, 15, 1, 1, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 1, 16, 1, 1, 11, 1, 11, 11, 11, 11, - - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 1, 17, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -/* Table of booleans, true if rule could match eol. */ -static const flex_int32_t yy_rule_can_match_eol[38] = - { 0, -1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, }; - -extern int yy_flex_debug; -int yy_flex_debug = 0; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *yytext; -#define YY_NO_INPUT 1 - -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include -#include -#include - -#include "lkc.h" - -#define START_STRSIZE 16 - -static struct { - struct file *file; - int lineno; -} current_pos; - -static char *text; -static int text_size, text_asize; - -struct buffer { - struct buffer *parent; - YY_BUFFER_STATE state; -}; - -struct buffer *current_buf; - -static int last_ts, first_ts; - -static void zconf_endhelp(void); -static void zconf_endfile(void); - -static void new_string(void) -{ - text = xmalloc(START_STRSIZE); - text_asize = START_STRSIZE; - text_size = 0; - *text = 0; -} - -static void append_string(const char *str, int size) -{ - int new_size = text_size + size + 1; - if (new_size > text_asize) { - new_size += START_STRSIZE - 1; - new_size &= -START_STRSIZE; - text = xrealloc(text, new_size); - text_asize = new_size; - } - memcpy(text + text_size, str, size); - text_size += size; - text[text_size] = 0; -} - -static void alloc_string(const char *str, int size) -{ - text = xmalloc(size + 1); - memcpy(text, str, size); - text[size] = 0; -} - -static void warn_ignored_character(char chr) -{ - fprintf(stderr, - "%s:%d:warning: ignoring unsupported character '%c'\n", - zconf_curname(), zconf_lineno(), chr); -} - -#define INITIAL 0 -#define COMMAND 1 -#define HELP 2 -#define STRING 3 -#define PARAM 4 - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include -#endif - -#ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * -#endif - -static int yy_init_globals ( void ); - -/* Accessor methods to globals. - These are made visible to non-reentrant scanners for convenience. */ - -int yylex_destroy ( void ); - -int yyget_debug ( void ); - -void yyset_debug ( int debug_flag ); - -YY_EXTRA_TYPE yyget_extra ( void ); - -void yyset_extra ( YY_EXTRA_TYPE user_defined ); - -FILE *yyget_in ( void ); - -void yyset_in ( FILE * _in_str ); - -FILE *yyget_out ( void ); - -void yyset_out ( FILE * _out_str ); - - int yyget_leng ( void ); - -char *yyget_text ( void ); - -int yyget_lineno ( void ); - -void yyset_lineno ( int _line_number ); - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap ( void ); -#else -extern int yywrap ( void ); -#endif -#endif - -#ifndef YY_NO_UNPUT - - static void yyunput ( int c, char *buf_ptr ); - -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy ( char *, const char *, int ); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen ( const char * ); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput ( void ); -#else -static int input ( void ); -#endif - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else -#define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ -#endif - -/* Copy whatever the last rule matched to the standard output. */ -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - errno=0; \ - while ( (result = (int) read( fileno(yyin), buf, (yy_size_t) max_size )) < 0 ) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(yyin); \ - }\ -\ - -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -#endif - -/* end tables serialization structures and prototypes */ - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int yylex (void); - -#define YY_DECL int yylex (void) -#endif /* !YY_DECL */ - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK /*LINTED*/break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -/** The main scanner function which does all the work. - */ -YY_DECL -{ - yy_state_type yy_current_state; - char *yy_cp, *yy_bp; - int yy_act; - - if ( !(yy_init) ) - { - (yy_init) = 1; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! (yy_start) ) - (yy_start) = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! YY_CURRENT_BUFFER ) { - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); - } - - yy_load_buffer_state( ); - } - - { - - int str = 0; - int ts, i; - - while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ - { - yy_cp = (yy_c_buf_p); - - /* Support of yytext. */ - *yy_cp = (yy_hold_char); - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = (yy_start); -yy_match: - while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 ) - ++yy_cp; - - yy_current_state = -yy_current_state; - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - - YY_DO_BEFORE_ACTION; - - if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) - { - int yyl; - for ( yyl = 0; yyl < yyleng; ++yyl ) - if ( yytext[yyl] == '\n' ) - - yylineno++; -; - } - -do_action: /* This label is used only to access EOF actions. */ - - switch ( yy_act ) - { /* beginning of action switch */ -case 1: -/* rule 1 can match eol */ -case 2: -/* rule 2 can match eol */ -YY_RULE_SETUP -{ - return T_EOL; -} - YY_BREAK -case 3: -YY_RULE_SETUP - - YY_BREAK -case 4: -YY_RULE_SETUP -{ - BEGIN(COMMAND); -} - YY_BREAK -case 5: -YY_RULE_SETUP -{ - unput(yytext[0]); - BEGIN(COMMAND); -} - YY_BREAK - -case 6: -YY_RULE_SETUP -{ - const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); - BEGIN(PARAM); - current_pos.file = current_file; - current_pos.lineno = yylineno; - if (id && id->flags & TF_COMMAND) { - yylval.id = id; - return id->token; - } - alloc_string(yytext, yyleng); - yylval.string = text; - return T_WORD; - } - YY_BREAK -case 7: -YY_RULE_SETUP -warn_ignored_character(*yytext); - YY_BREAK -case 8: -/* rule 8 can match eol */ -YY_RULE_SETUP -{ - BEGIN(INITIAL); - return T_EOL; - } - YY_BREAK - -case 9: -YY_RULE_SETUP -return T_AND; - YY_BREAK -case 10: -YY_RULE_SETUP -return T_OR; - YY_BREAK -case 11: -YY_RULE_SETUP -return T_OPEN_PAREN; - YY_BREAK -case 12: -YY_RULE_SETUP -return T_CLOSE_PAREN; - YY_BREAK -case 13: -YY_RULE_SETUP -return T_NOT; - YY_BREAK -case 14: -YY_RULE_SETUP -return T_EQUAL; - YY_BREAK -case 15: -YY_RULE_SETUP -return T_UNEQUAL; - YY_BREAK -case 16: -YY_RULE_SETUP -return T_LESS_EQUAL; - YY_BREAK -case 17: -YY_RULE_SETUP -return T_GREATER_EQUAL; - YY_BREAK -case 18: -YY_RULE_SETUP -return T_LESS; - YY_BREAK -case 19: -YY_RULE_SETUP -return T_GREATER; - YY_BREAK -case 20: -YY_RULE_SETUP -{ - str = yytext[0]; - new_string(); - BEGIN(STRING); - } - YY_BREAK -case 21: -/* rule 21 can match eol */ -YY_RULE_SETUP -BEGIN(INITIAL); return T_EOL; - YY_BREAK -case 22: -YY_RULE_SETUP -{ - const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); - if (id && id->flags & TF_PARAM) { - yylval.id = id; - return id->token; - } - alloc_string(yytext, yyleng); - yylval.string = text; - return T_WORD; - } - YY_BREAK -case 23: -YY_RULE_SETUP -/* comment */ - YY_BREAK -case 24: -/* rule 24 can match eol */ -YY_RULE_SETUP -; - YY_BREAK -case 25: -YY_RULE_SETUP - - YY_BREAK -case 26: -YY_RULE_SETUP -warn_ignored_character(*yytext); - YY_BREAK -case YY_STATE_EOF(PARAM): -{ - BEGIN(INITIAL); - } - YY_BREAK - -case 27: -/* rule 27 can match eol */ -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ -YY_LINENO_REWIND_TO(yy_cp - 1); -(yy_c_buf_p) = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -{ - append_string(yytext, yyleng); - yylval.string = text; - return T_WORD_QUOTE; - } - YY_BREAK -case 28: -YY_RULE_SETUP -{ - append_string(yytext, yyleng); - } - YY_BREAK -case 29: -/* rule 29 can match eol */ -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ -YY_LINENO_REWIND_TO(yy_cp - 1); -(yy_c_buf_p) = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -{ - append_string(yytext + 1, yyleng - 1); - yylval.string = text; - return T_WORD_QUOTE; - } - YY_BREAK -case 30: -YY_RULE_SETUP -{ - append_string(yytext + 1, yyleng - 1); - } - YY_BREAK -case 31: -YY_RULE_SETUP -{ - if (str == yytext[0]) { - BEGIN(PARAM); - yylval.string = text; - return T_WORD_QUOTE; - } else - append_string(yytext, 1); - } - YY_BREAK -case 32: -/* rule 32 can match eol */ -YY_RULE_SETUP -{ - fprintf(stderr, - "%s:%d:warning: multi-line strings not supported\n", - zconf_curname(), zconf_lineno()); - BEGIN(INITIAL); - return T_EOL; - } - YY_BREAK -case YY_STATE_EOF(STRING): -{ - BEGIN(INITIAL); - } - YY_BREAK - -case 33: -YY_RULE_SETUP -{ - ts = 0; - for (i = 0; i < yyleng; i++) { - if (yytext[i] == '\t') - ts = (ts & ~7) + 8; - else - ts++; - } - last_ts = ts; - if (first_ts) { - if (ts < first_ts) { - zconf_endhelp(); - return T_HELPTEXT; - } - ts -= first_ts; - while (ts > 8) { - append_string(" ", 8); - ts -= 8; - } - append_string(" ", ts); - } - } - YY_BREAK -case 34: -/* rule 34 can match eol */ -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ -YY_LINENO_REWIND_TO(yy_cp - 1); -(yy_c_buf_p) = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -{ - zconf_endhelp(); - return T_HELPTEXT; - } - YY_BREAK -case 35: -/* rule 35 can match eol */ -YY_RULE_SETUP -{ - append_string("\n", 1); - } - YY_BREAK -case 36: -YY_RULE_SETUP -{ - while (yyleng) { - if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t')) - break; - yyleng--; - } - append_string(yytext, yyleng); - if (!first_ts) - first_ts = last_ts; - } - YY_BREAK -case YY_STATE_EOF(HELP): -{ - zconf_endhelp(); - return T_HELPTEXT; - } - YY_BREAK - -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(COMMAND): -{ - if (current_file) { - zconf_endfile(); - return T_EOL; - } - fclose(yyin); - yyterminate(); -} - YY_BREAK -case 37: -YY_RULE_SETUP -YY_FATAL_ERROR( "flex scanner jammed" ); - YY_BREAK - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = (yy_hold_char); - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++(yy_c_buf_p); - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = (yy_c_buf_p); - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_END_OF_FILE: - { - (yy_did_buffer_switch_on_eof) = 0; - - if ( yywrap( ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = - (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - (yy_c_buf_p) = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ - } /* end of user's declarations */ -} /* end of yylex */ - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ -static int yy_get_next_buffer (void) -{ - char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - char *source = (yytext_ptr); - int number_to_move, i; - int ret_val; - - if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; - - else - { - int num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; - - int yy_c_buf_p_offset = - (int) ((yy_c_buf_p) - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - yyrealloc( (void *) b->yy_ch_buf, - (yy_size_t) (b->yy_buf_size + 2) ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = NULL; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - - number_to_move - 1; - - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - if ( (yy_n_chars) == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { - /* Extend the array by 50%, plus the number we really need. */ - int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( - (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); - if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - /* "- 2" to take care of EOB's */ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); - } - - (yy_n_chars) += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; - - (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; -} - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - - static yy_state_type yy_get_previous_state (void) -{ - yy_state_type yy_current_state; - char *yy_cp; - - yy_current_state = (yy_start); - - for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) - { - yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; - } - - return yy_current_state; -} - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) -{ - int yy_is_jam; - - yy_current_state = yy_nxt[yy_current_state][1]; - yy_is_jam = (yy_current_state <= 0); - - return yy_is_jam ? 0 : yy_current_state; -} - -#ifndef YY_NO_UNPUT - - static void yyunput (int c, char * yy_bp ) -{ - char *yy_cp; - - yy_cp = (yy_c_buf_p); - - /* undo effects of setting up yytext */ - *yy_cp = (yy_hold_char); - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - { /* need to shift things up to make room */ - /* +2 for EOB chars. */ - int number_to_move = (yy_n_chars) + 2; - char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; - char *source = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; - - while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = - (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } - - *--yy_cp = (char) c; - - if ( c == '\n' ){ - --yylineno; - } - - (yytext_ptr) = yy_bp; - (yy_hold_char) = *yy_cp; - (yy_c_buf_p) = yy_cp; -} - -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus - static int yyinput (void) -#else - static int input (void) -#endif - -{ - int c; - - *(yy_c_buf_p) = (yy_hold_char); - - if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - /* This was really a NUL. */ - *(yy_c_buf_p) = '\0'; - - else - { /* need more input */ - int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); - ++(yy_c_buf_p); - - switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - yyrestart( yyin ); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { - if ( yywrap( ) ) - return 0; - - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(); -#else - return input(); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = (yytext_ptr) + offset; - break; - } - } - } - - c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ - *(yy_c_buf_p) = '\0'; /* preserve yytext */ - (yy_hold_char) = *++(yy_c_buf_p); - - if ( c == '\n' ) - - yylineno++; -; - - return c; -} -#endif /* ifndef YY_NO_INPUT */ - -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * - * @note This function does not reset the start condition to @c INITIAL . - */ - void yyrestart (FILE * input_file ) -{ - - if ( ! YY_CURRENT_BUFFER ){ - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); - } - - yy_init_buffer( YY_CURRENT_BUFFER, input_file ); - yy_load_buffer_state( ); -} - -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * - */ - void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) -{ - - /* TODO. We should be able to replace this entire function body - * with - * yypop_buffer_state(); - * yypush_buffer_state(new_buffer); - */ - yyensure_buffer_stack (); - if ( YY_CURRENT_BUFFER == new_buffer ) - return; - - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( ); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - (yy_did_buffer_switch_on_eof) = 1; -} - -static void yy_load_buffer_state (void) -{ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - (yy_hold_char) = *(yy_c_buf_p); -} - -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * - * @return the allocated buffer state. - */ - YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) -{ - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer( b, file ); - - return b; -} - -/** Destroy the buffer. - * @param b a buffer created with yy_create_buffer() - * - */ - void yy_delete_buffer (YY_BUFFER_STATE b ) -{ - - if ( ! b ) - return; - - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yyfree( (void *) b->yy_ch_buf ); - - yyfree( (void *) b ); -} - -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a yyrestart() or at EOF. - */ - static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) - -{ - int oerrno = errno; - - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - - /* If b is the current buffer, then yy_init_buffer was _probably_ - * called from yyrestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } - - b->yy_is_interactive = 0; - - errno = oerrno; -} - -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * - */ - void yy_flush_buffer (YY_BUFFER_STATE b ) -{ - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( ); -} - -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * - */ -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) -{ - if (new_buffer == NULL) - return; - - yyensure_buffer_stack(); - - /* This block is copied from yy_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - (yy_buffer_stack_top)++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; -} - -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * - */ -void yypop_buffer_state (void) -{ - if (!YY_CURRENT_BUFFER) - return; - - yy_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - if ((yy_buffer_stack_top) > 0) - --(yy_buffer_stack_top); - - if (YY_CURRENT_BUFFER) { - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; - } -} - -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -static void yyensure_buffer_stack (void) -{ - yy_size_t num_to_alloc; - - if (!(yy_buffer_stack)) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ - (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - - memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - (yy_buffer_stack_max) = num_to_alloc; - (yy_buffer_stack_top) = 0; - return; - } - - if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - yy_size_t grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = (yy_buffer_stack_max) + grow_size; - (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc - ((yy_buffer_stack), - num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - - /* zero only the new slots.*/ - memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); - (yy_buffer_stack_max) = num_to_alloc; - } -} - -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) -{ - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return NULL; - - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); - - b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = NULL; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - yy_switch_to_buffer( b ); - - return b; -} - -/** Setup the input buffer state to scan a string. The next call to yylex() will - * scan from a @e copy of @a str. - * @param yystr a NUL-terminated string to scan - * - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * yy_scan_bytes() instead. - */ -YY_BUFFER_STATE yy_scan_string (const char * yystr ) -{ - - return yy_scan_bytes( yystr, (int) strlen(yystr) ); -} - -/** Setup the input buffer state to scan the given bytes. The next call to yylex() will - * scan from a @e copy of @a bytes. - * @param yybytes the byte buffer to scan - * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) -{ - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = (yy_size_t) (_yybytes_len + 2); - buf = (char *) yyalloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < _yybytes_len; ++i ) - buf[i] = yybytes[i]; - - buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer( buf, n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; -} - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -static void yynoreturn yy_fatal_error (const char* msg ) -{ - fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - yytext[yyleng] = (yy_hold_char); \ - (yy_c_buf_p) = yytext + yyless_macro_arg; \ - (yy_hold_char) = *(yy_c_buf_p); \ - *(yy_c_buf_p) = '\0'; \ - yyleng = yyless_macro_arg; \ - } \ - while ( 0 ) - -/* Accessor methods (get/set functions) to struct members. */ - -/** Get the current line number. - * - */ -int yyget_lineno (void) -{ - - return yylineno; -} - -/** Get the input stream. - * - */ -FILE *yyget_in (void) -{ - return yyin; -} - -/** Get the output stream. - * - */ -FILE *yyget_out (void) -{ - return yyout; -} - -/** Get the length of the current token. - * - */ -int yyget_leng (void) -{ - return yyleng; -} - -/** Get the current token. - * - */ - -char *yyget_text (void) -{ - return yytext; -} - -/** Set the current line number. - * @param _line_number line number - * - */ -void yyset_lineno (int _line_number ) -{ - - yylineno = _line_number; -} - -/** Set the input stream. This does not discard the current - * input buffer. - * @param _in_str A readable stream. - * - * @see yy_switch_to_buffer - */ -void yyset_in (FILE * _in_str ) -{ - yyin = _in_str ; -} - -void yyset_out (FILE * _out_str ) -{ - yyout = _out_str ; -} - -int yyget_debug (void) -{ - return yy_flex_debug; -} - -void yyset_debug (int _bdebug ) -{ - yy_flex_debug = _bdebug ; -} - -static int yy_init_globals (void) -{ - /* Initialization is the same as for the non-reentrant scanner. - * This function is called from yylex_destroy(), so don't allocate here. - */ - - /* We do not touch yylineno unless the option is enabled. */ - yylineno = 1; - - (yy_buffer_stack) = NULL; - (yy_buffer_stack_top) = 0; - (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = NULL; - (yy_init) = 0; - (yy_start) = 0; - -/* Defined in main.c */ -#ifdef YY_STDINIT - yyin = stdin; - yyout = stdout; -#else - yyin = NULL; - yyout = NULL; -#endif - - /* For future reference: Set errno on error, since we are called by - * yylex_init() - */ - return 0; -} - -/* yylex_destroy is for both reentrant and non-reentrant scanners. */ -int yylex_destroy (void) -{ - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - yy_delete_buffer( YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - yypop_buffer_state(); - } - - /* Destroy the stack itself. */ - yyfree((yy_buffer_stack) ); - (yy_buffer_stack) = NULL; - - /* Reset the globals. This is important in a non-reentrant scanner so the next time - * yylex() is called, initialization will occur. */ - yy_init_globals( ); - - return 0; -} - -/* - * Internal utility routines. - */ - -#ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, const char * s2, int n ) -{ - - int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; -} -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (const char * s ) -{ - int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; -} -#endif - -void *yyalloc (yy_size_t size ) -{ - return malloc(size); -} - -void *yyrealloc (void * ptr, yy_size_t size ) -{ - - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return realloc(ptr, size); -} - -void yyfree (void * ptr ) -{ - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ -} - -#define YYTABLES_NAME "yytables" - -void zconf_starthelp(void) -{ - new_string(); - last_ts = first_ts = 0; - BEGIN(HELP); -} - -static void zconf_endhelp(void) -{ - yylval.string = text; - BEGIN(INITIAL); -} - -/* - * Try to open specified file with following names: - * ./name - * $(srctree)/name - * The latter is used when srctree is separate from objtree - * when compiling the kernel. - * Return NULL if file is not found. - */ -FILE *zconf_fopen(const char *name) -{ - char *env, fullname[PATH_MAX+1]; - FILE *f; - - f = fopen(name, "r"); - if (!f && name != NULL && name[0] != '/') { - env = getenv(SRCTREE); - if (env) { - sprintf(fullname, "%s/%s", env, name); - f = fopen(fullname, "r"); - } - } - return f; -} - -void zconf_initscan(const char *name) -{ - yyin = zconf_fopen(name); - if (!yyin) { - fprintf(stderr, "can't find file %s\n", name); - exit(1); - } - - current_buf = xmalloc(sizeof(*current_buf)); - memset(current_buf, 0, sizeof(*current_buf)); - - current_file = file_lookup(name); - yylineno = 1; -} - -void zconf_nextfile(const char *name) -{ - struct file *iter; - struct file *file = file_lookup(name); - struct buffer *buf = xmalloc(sizeof(*buf)); - memset(buf, 0, sizeof(*buf)); - - current_buf->state = YY_CURRENT_BUFFER; - yyin = zconf_fopen(file->name); - if (!yyin) { - fprintf(stderr, "%s:%d: can't open file \"%s\"\n", - zconf_curname(), zconf_lineno(), file->name); - exit(1); - } - yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); - buf->parent = current_buf; - current_buf = buf; - - current_file->lineno = yylineno; - file->parent = current_file; - - for (iter = current_file; iter; iter = iter->parent) { - if (!strcmp(iter->name, file->name)) { - fprintf(stderr, - "Recursive inclusion detected.\n" - "Inclusion path:\n" - " current file : %s\n", file->name); - iter = file; - do { - iter = iter->parent; - fprintf(stderr, " included from: %s:%d\n", - iter->name, iter->lineno - 1); - } while (strcmp(iter->name, file->name)); - exit(1); - } - } - - yylineno = 1; - current_file = file; -} - -static void zconf_endfile(void) -{ - struct buffer *parent; - - current_file = current_file->parent; - if (current_file) - yylineno = current_file->lineno; - - parent = current_buf->parent; - if (parent) { - fclose(yyin); - yy_delete_buffer(YY_CURRENT_BUFFER); - yy_switch_to_buffer(parent->state); - } - free(current_buf); - current_buf = parent; -} - -int zconf_lineno(void) -{ - return current_pos.lineno; -} - -const char *zconf_curname(void) -{ - return current_pos.file ? current_pos.file->name : ""; -} - diff --git a/support/kconfig/zconf.tab.c_shipped b/support/kconfig/zconf.tab.c_shipped deleted file mode 100644 index 4eca5b3135..0000000000 --- a/support/kconfig/zconf.tab.c_shipped +++ /dev/null @@ -1,2488 +0,0 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ - -/* Bison implementation for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -/* As a special exception, you may create a larger work that contains - part or all of the Bison parser skeleton and distribute that work - under terms of your choice, so long as that work isn't itself a - parser generator using the skeleton or a modified version thereof - as a parser skeleton. Alternatively, if you modify or redistribute - the parser skeleton itself, you may (at your option) remove this - special exception, which will cause the skeleton and the resulting - Bison output files to be licensed under the GNU General Public - License without this special exception. - - This special exception was added by the Free Software Foundation in - version 2.2 of Bison. */ - -/* C LALR(1) parser skeleton written by Richard Stallman, by - simplifying the original so-called "semantic" parser. */ - -/* All symbols defined below should begin with yy or YY, to avoid - infringing on user name space. This should be done even for local - variables, as they might otherwise be expanded by user macros. - There are some unavoidable exceptions within include files to - define necessary library symbols; they are noted "INFRINGES ON - USER NAME SPACE" below. */ - -/* Identify Bison output. */ -#define YYBISON 1 - -/* Bison version. */ -#define YYBISON_VERSION "3.0.4" - -/* Skeleton name. */ -#define YYSKELETON_NAME "yacc.c" - -/* Pure parsers. */ -#define YYPURE 0 - -/* Push parsers. */ -#define YYPUSH 0 - -/* Pull parsers. */ -#define YYPULL 1 - - - - -/* Copy the first part of user declarations. */ - - -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include -#include -#include -#include - -#include "lkc.h" - -#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) - -#define PRINTD 0x0001 -#define DEBUG_PARSE 0x0002 - -int cdebug = PRINTD; - -int yylex(void); -static void yyerror(const char *err); -static void zconfprint(const char *err, ...); -static void zconf_error(const char *err, ...); -static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken); - -struct symbol *symbol_hash[SYMBOL_HASHSIZE]; - -static struct menu *current_menu, *current_entry; - - - - -# ifndef YY_NULLPTR -# if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif -# endif - -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 0 -#endif - - -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 1 -#endif -#if YYDEBUG -extern int yydebug; -#endif - -/* Token type. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - T_MAINMENU = 258, - T_MENU = 259, - T_ENDMENU = 260, - T_SOURCE = 261, - T_CHOICE = 262, - T_ENDCHOICE = 263, - T_COMMENT = 264, - T_CONFIG = 265, - T_MENUCONFIG = 266, - T_HELP = 267, - T_HELPTEXT = 268, - T_IF = 269, - T_ENDIF = 270, - T_DEPENDS = 271, - T_OPTIONAL = 272, - T_PROMPT = 273, - T_TYPE = 274, - T_DEFAULT = 275, - T_SELECT = 276, - T_IMPLY = 277, - T_RANGE = 278, - T_VISIBLE = 279, - T_OPTION = 280, - T_ON = 281, - T_WORD = 282, - T_WORD_QUOTE = 283, - T_UNEQUAL = 284, - T_LESS = 285, - T_LESS_EQUAL = 286, - T_GREATER = 287, - T_GREATER_EQUAL = 288, - T_CLOSE_PAREN = 289, - T_OPEN_PAREN = 290, - T_EOL = 291, - T_OR = 292, - T_AND = 293, - T_EQUAL = 294, - T_NOT = 295 - }; -#endif - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - -union YYSTYPE -{ - - - char *string; - struct file *file; - struct symbol *symbol; - struct expr *expr; - struct menu *menu; - const struct kconf_id *id; - - -}; - -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 -#endif - - -extern YYSTYPE yylval; - -int yyparse (void); - - - -/* Copy the second part of user declarations. */ - - -/* Include kconf_id.c here so it can see the token constants. */ -#include "kconf_id.c" - - - -#ifdef short -# undef short -#endif - -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; -#else -typedef unsigned char yytype_uint8; -#endif - -#ifdef YYTYPE_INT8 -typedef YYTYPE_INT8 yytype_int8; -#else -typedef signed char yytype_int8; -#endif - -#ifdef YYTYPE_UINT16 -typedef YYTYPE_UINT16 yytype_uint16; -#else -typedef unsigned short int yytype_uint16; -#endif - -#ifdef YYTYPE_INT16 -typedef YYTYPE_INT16 yytype_int16; -#else -typedef short int yytype_int16; -#endif - -#ifndef YYSIZE_T -# ifdef __SIZE_TYPE__ -# define YYSIZE_T __SIZE_TYPE__ -# elif defined size_t -# define YYSIZE_T size_t -# elif ! defined YYSIZE_T -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# else -# define YYSIZE_T unsigned int -# endif -#endif - -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) - -#ifndef YY_ -# if defined YYENABLE_NLS && YYENABLE_NLS -# if ENABLE_NLS -# include /* INFRINGES ON USER NAME SPACE */ -# define YY_(Msgid) dgettext ("bison-runtime", Msgid) -# endif -# endif -# ifndef YY_ -# define YY_(Msgid) Msgid -# endif -#endif - -#ifndef YY_ATTRIBUTE -# if (defined __GNUC__ \ - && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ - || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C -# define YY_ATTRIBUTE(Spec) __attribute__(Spec) -# else -# define YY_ATTRIBUTE(Spec) /* empty */ -# endif -#endif - -#ifndef YY_ATTRIBUTE_PURE -# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) -#endif - -#ifndef YY_ATTRIBUTE_UNUSED -# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) -#endif - -#if !defined _Noreturn \ - && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) -# if defined _MSC_VER && 1200 <= _MSC_VER -# define _Noreturn __declspec (noreturn) -# else -# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) -# endif -#endif - -/* Suppress unused-variable warnings by "using" E. */ -#if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) -#else -# define YYUSE(E) /* empty */ -#endif - -#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ -/* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ - _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ - _Pragma ("GCC diagnostic pop") -#else -# define YY_INITIAL_VALUE(Value) Value -#endif -#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_END -#endif -#ifndef YY_INITIAL_VALUE -# define YY_INITIAL_VALUE(Value) /* Nothing. */ -#endif - - -#if ! defined yyoverflow || YYERROR_VERBOSE - -/* The parser invokes alloca or malloc; define the necessary symbols. */ - -# ifdef YYSTACK_USE_ALLOCA -# if YYSTACK_USE_ALLOCA -# ifdef __GNUC__ -# define YYSTACK_ALLOC __builtin_alloca -# elif defined __BUILTIN_VA_ARG_INCR -# include /* INFRINGES ON USER NAME SPACE */ -# elif defined _AIX -# define YYSTACK_ALLOC __alloca -# elif defined _MSC_VER -# include /* INFRINGES ON USER NAME SPACE */ -# define alloca _alloca -# else -# define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS -# include /* INFRINGES ON USER NAME SPACE */ - /* Use EXIT_SUCCESS as a witness for stdlib.h. */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -# endif -# endif -# endif -# endif -# endif - -# ifdef YYSTACK_ALLOC - /* Pacify GCC's 'empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) -# ifndef YYSTACK_ALLOC_MAXIMUM - /* The OS might guarantee only one guard page at the bottom of the stack, - and a page size can be as small as 4096 bytes. So we cannot safely - invoke alloca (N) if N exceeds 4096. Use a slightly smaller number - to allow for a few compiler-allocated temporary stack slots. */ -# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ -# endif -# else -# define YYSTACK_ALLOC YYMALLOC -# define YYSTACK_FREE YYFREE -# ifndef YYSTACK_ALLOC_MAXIMUM -# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM -# endif -# if (defined __cplusplus && ! defined EXIT_SUCCESS \ - && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) -# include /* INFRINGES ON USER NAME SPACE */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -# endif -# endif -# ifndef YYMALLOC -# define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS -void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# ifndef YYFREE -# define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS -void free (void *); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# endif -#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ - - -#if (! defined yyoverflow \ - && (! defined __cplusplus \ - || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) - -/* A type that is properly aligned for any stack member. */ -union yyalloc -{ - yytype_int16 yyss_alloc; - YYSTYPE yyvs_alloc; -}; - -/* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) - -/* The size of an array large to enough to hold all stacks, each with - N elements. */ -# define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ - + YYSTACK_GAP_MAXIMUM) - -# define YYCOPY_NEEDED 1 - -/* Relocate STACK from its old location to the new one. The - local variables YYSIZE and YYSTACKSIZE give the old and new number of - elements in the stack, and YYPTR gives the new location of the - stack. Advance YYPTR to a properly aligned location for the next - stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (0) - -#endif - -#if defined YYCOPY_NEEDED && YYCOPY_NEEDED -/* Copy COUNT objects from SRC to DST. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) -# else -# define YYCOPY(Dst, Src, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (Dst)[yyi] = (Src)[yyi]; \ - } \ - while (0) -# endif -# endif -#endif /* !YYCOPY_NEEDED */ - -/* YYFINAL -- State number of the termination state. */ -#define YYFINAL 11 -/* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 325 - -/* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 41 -/* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 52 -/* YYNRULES -- Number of rules. */ -#define YYNRULES 126 -/* YYNSTATES -- Number of states. */ -#define YYNSTATES 206 - -/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned - by yylex, with out-of-bounds checking. */ -#define YYUNDEFTOK 2 -#define YYMAXUTOK 295 - -#define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) - -/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, without out-of-bounds checking. */ -static const yytype_uint8 yytranslate[] = -{ - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40 -}; - -#if YYDEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_uint16 yyrline[] = -{ - 0, 110, 110, 110, 112, 112, 116, 124, 134, 136, - 137, 138, 139, 140, 141, 145, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 153, 154, 155, 156, 157, - 158, 162, 163, 169, 176, 181, 188, 197, 199, 200, - 201, 202, 203, 204, 207, 215, 221, 231, 237, 243, - 249, 252, 254, 267, 268, 273, 283, 288, 296, 299, - 301, 302, 303, 304, 305, 308, 314, 325, 331, 341, - 343, 348, 356, 364, 367, 369, 370, 371, 376, 383, - 388, 396, 399, 401, 402, 403, 406, 415, 422, 427, - 433, 451, 453, 454, 455, 458, 466, 468, 469, 472, - 479, 481, 486, 487, 490, 491, 492, 496, 497, 500, - 501, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 518, 520, 521, 524, 525 -}; -#endif - -#if YYDEBUG || YYERROR_VERBOSE || 0 -/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -static const char *const yytname[] = -{ - "$end", "error", "$undefined", "T_MAINMENU", "T_MENU", "T_ENDMENU", - "T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG", - "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS", - "T_OPTIONAL", "T_PROMPT", "T_TYPE", "T_DEFAULT", "T_SELECT", "T_IMPLY", - "T_RANGE", "T_VISIBLE", "T_OPTION", "T_ON", "T_WORD", "T_WORD_QUOTE", - "T_UNEQUAL", "T_LESS", "T_LESS_EQUAL", "T_GREATER", "T_GREATER_EQUAL", - "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_EOL", "T_OR", "T_AND", "T_EQUAL", - "T_NOT", "$accept", "input", "start", "mainmenu_stmt", - "no_mainmenu_stmt", "stmt_list", "option_name", "common_stmt", - "option_error", "config_entry_start", "config_stmt", - "menuconfig_entry_start", "menuconfig_stmt", "config_option_list", - "config_option", "symbol_option", "symbol_option_list", - "symbol_option_arg", "choice", "choice_entry", "choice_end", - "choice_stmt", "choice_option_list", "choice_option", "choice_block", - "if_entry", "if_end", "if_stmt", "if_block", "menu", "menu_entry", - "menu_end", "menu_stmt", "menu_block", "source_stmt", "comment", - "comment_stmt", "help_start", "help", "depends_list", "depends", - "visibility_list", "visible", "prompt_stmt_opt", "prompt", "end", "nl", - "if_expr", "expr", "nonconst_symbol", "symbol", "word_opt", YY_NULLPTR -}; -#endif - -# ifdef YYPRINT -/* YYTOKNUM[NUM] -- (External) token number corresponding to the - (internal) symbol number NUM (which must be that of a token). */ -static const yytype_uint16 yytoknum[] = -{ - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295 -}; -# endif - -#define YYPACT_NINF -92 - -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-92))) - -#define YYTABLE_NINF -89 - -#define yytable_value_is_error(Yytable_value) \ - 0 - - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -static const yytype_int16 yypact[] = -{ - 20, 33, -92, 16, -92, -92, -92, 21, -92, -92, - 29, -92, 152, 186, -92, -92, 40, 67, 33, 71, - 33, 42, 80, 33, 78, 78, 31, 82, -92, -92, - -92, -92, -92, -92, -92, -92, -92, 120, -92, 131, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, 109, -92, - 118, -92, 128, -92, 129, -92, 141, 142, -92, 31, - 31, 74, -92, 69, -92, 144, 145, 28, 119, 248, - 286, 77, 38, 77, 219, -92, -92, -92, -92, -92, - -92, -7, -92, 31, 31, 40, 52, 52, 52, 52, - 52, 52, -92, -92, 146, 147, 158, 33, 33, 31, - 78, 78, 52, -92, 184, -92, -92, -92, -92, 176, - -92, -92, 162, 33, 33, 78, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, 197, - -92, 272, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, 174, -92, -92, -92, -92, -92, -92, -92, - -92, -92, 31, 197, 178, 197, 59, 197, 197, 52, - 27, 179, -92, -92, 197, 180, 197, 31, -92, 111, - 181, -92, -92, 182, 185, 195, 197, 193, -92, -92, - 208, -92, 209, 113, -92, -92, -92, -92, -92, 211, - 33, -92, -92, -92, -92, -92 -}; - - /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ -static const yytype_uint8 yydefact[] = -{ - 7, 0, 107, 0, 3, 8, 8, 7, 102, 103, - 0, 1, 0, 0, 108, 2, 6, 0, 0, 0, - 0, 125, 0, 0, 0, 0, 0, 0, 16, 21, - 17, 18, 23, 19, 20, 22, 24, 0, 25, 0, - 9, 37, 28, 37, 29, 59, 69, 10, 74, 26, - 96, 82, 11, 30, 91, 27, 12, 15, 0, 104, - 0, 126, 0, 105, 0, 122, 0, 0, 124, 0, - 0, 0, 123, 111, 106, 0, 0, 0, 0, 0, - 0, 0, 91, 0, 0, 78, 86, 55, 87, 33, - 35, 0, 119, 0, 0, 71, 0, 0, 0, 0, - 0, 0, 13, 14, 0, 0, 0, 0, 100, 0, - 0, 0, 0, 51, 0, 43, 42, 38, 39, 0, - 41, 40, 0, 0, 100, 0, 63, 64, 60, 62, - 61, 70, 58, 57, 75, 77, 73, 76, 72, 109, - 98, 0, 97, 83, 85, 81, 84, 80, 93, 94, - 92, 118, 120, 121, 117, 112, 113, 114, 115, 116, - 32, 89, 0, 109, 0, 109, 109, 109, 109, 0, - 0, 0, 90, 67, 109, 0, 109, 0, 99, 0, - 0, 44, 101, 0, 0, 0, 109, 53, 50, 31, - 0, 66, 0, 110, 95, 45, 46, 47, 48, 0, - 0, 52, 65, 68, 49, 54 -}; - - /* YYPGOTO[NTERM-NUM]. */ -static const yytype_int16 yypgoto[] = -{ - -92, -92, 241, -92, -92, 244, -92, -13, -66, -92, - -92, -92, -92, 218, -92, -92, -92, -92, -92, -92, - -92, -69, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, 12, -92, -92, -92, -92, -92, 172, 170, - -64, -92, -92, 148, -1, 34, 1, 139, -68, -21, - -91, -92 -}; - - /* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int16 yydefgoto[] = -{ - -1, 3, 4, 5, 6, 12, 39, 40, 116, 41, - 42, 43, 44, 77, 117, 118, 170, 201, 45, 46, - 132, 47, 79, 128, 80, 48, 136, 49, 81, 50, - 51, 145, 52, 83, 53, 54, 55, 119, 120, 84, - 121, 82, 142, 164, 165, 56, 7, 178, 71, 72, - 73, 62 -}; - - /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_int16 yytable[] = -{ - 10, 91, 92, 66, 67, 154, 155, 156, 157, 158, - 159, 16, 135, 127, 144, 130, 11, 58, 149, 60, - 150, 169, 64, 1, 1, 152, 153, 151, -34, 104, - 93, 94, -34, -34, -34, -34, -34, -34, -34, -34, - 105, 166, -34, -34, 106, -34, 107, 108, 109, 110, - 111, 112, -34, 113, 187, 114, 2, 14, 65, 68, - 8, 9, 139, 188, 115, 2, 69, 131, 134, 61, - 143, 70, 95, 177, 140, 149, 14, 150, 186, 65, - 68, 18, 19, 20, 21, 22, 23, 24, 25, 167, - 168, 26, 27, 137, 179, 146, 93, 94, 96, 97, - 98, 99, 100, 57, 176, 65, 163, 59, 101, 193, - 2, 93, 94, 38, 133, 138, 63, 147, 74, -36, - 104, 75, 174, -36, -36, -36, -36, -36, -36, -36, - -36, 105, 76, -36, -36, 106, -36, 107, 108, 109, - 110, 111, 112, -36, 113, 85, 114, 194, 93, 94, - 93, 94, -4, 17, 86, 115, 18, 19, 20, 21, - 22, 23, 24, 25, 87, 88, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 89, 90, 37, - 102, 103, 160, 161, 162, 171, -5, 17, 38, 172, - 18, 19, 20, 21, 22, 23, 24, 25, 173, 205, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 177, 94, 37, 181, 189, 191, 195, 196, -88, - 104, 197, 38, -88, -88, -88, -88, -88, -88, -88, - -88, 198, 200, -88, -88, 106, -88, -88, -88, -88, - -88, -88, -88, -88, 202, 203, 114, 204, 15, 104, - 13, 129, 141, -56, -56, 148, -56, -56, -56, -56, - 105, 78, -56, -56, 106, 122, 123, 124, 125, 0, - 0, 0, 175, 104, 0, 114, -79, -79, -79, -79, - -79, -79, -79, -79, 126, 0, -79, -79, 106, 0, - 0, 19, 20, 0, 22, 23, 24, 25, 0, 114, - 26, 27, 180, 0, 182, 183, 184, 185, 148, 0, - 0, 0, 0, 190, 0, 192, 0, 0, 0, 0, - 0, 0, 38, 0, 0, 199 -}; - -static const yytype_int16 yycheck[] = -{ - 1, 69, 70, 24, 25, 96, 97, 98, 99, 100, - 101, 10, 81, 79, 83, 79, 0, 18, 84, 20, - 84, 112, 23, 3, 3, 93, 94, 34, 0, 1, - 37, 38, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 109, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 27, 27, 36, 36, 27, 28, - 27, 28, 24, 36, 36, 36, 35, 80, 81, 27, - 83, 40, 71, 14, 36, 141, 36, 141, 169, 27, - 28, 4, 5, 6, 7, 8, 9, 10, 11, 110, - 111, 14, 15, 81, 162, 83, 37, 38, 29, 30, - 31, 32, 33, 36, 125, 27, 107, 36, 39, 177, - 36, 37, 38, 36, 80, 81, 36, 83, 36, 0, - 1, 1, 123, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 1, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 36, 27, 36, 37, 38, - 37, 38, 0, 1, 36, 36, 4, 5, 6, 7, - 8, 9, 10, 11, 36, 36, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 36, 36, 27, - 36, 36, 36, 36, 26, 1, 0, 1, 36, 13, - 4, 5, 6, 7, 8, 9, 10, 11, 36, 200, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 14, 38, 27, 36, 36, 36, 36, 36, 0, - 1, 36, 36, 4, 5, 6, 7, 8, 9, 10, - 11, 36, 39, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 36, 36, 27, 36, 7, 1, - 6, 79, 82, 5, 6, 36, 8, 9, 10, 11, - 12, 43, 14, 15, 16, 17, 18, 19, 20, -1, - -1, -1, 124, 1, -1, 27, 4, 5, 6, 7, - 8, 9, 10, 11, 36, -1, 14, 15, 16, -1, - -1, 5, 6, -1, 8, 9, 10, 11, -1, 27, - 14, 15, 163, -1, 165, 166, 167, 168, 36, -1, - -1, -1, -1, 174, -1, 176, -1, -1, -1, -1, - -1, -1, 36, -1, -1, 186 -}; - - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const yytype_uint8 yystos[] = -{ - 0, 3, 36, 42, 43, 44, 45, 87, 27, 28, - 85, 0, 46, 46, 36, 43, 87, 1, 4, 5, - 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 27, 36, 47, - 48, 50, 51, 52, 53, 59, 60, 62, 66, 68, - 70, 71, 73, 75, 76, 77, 86, 36, 85, 36, - 85, 27, 92, 36, 85, 27, 90, 90, 28, 35, - 40, 89, 90, 91, 36, 1, 1, 54, 54, 63, - 65, 69, 82, 74, 80, 36, 36, 36, 36, 36, - 36, 89, 89, 37, 38, 87, 29, 30, 31, 32, - 33, 39, 36, 36, 1, 12, 16, 18, 19, 20, - 21, 22, 23, 25, 27, 36, 49, 55, 56, 78, - 79, 81, 17, 18, 19, 20, 36, 49, 64, 79, - 81, 48, 61, 86, 48, 62, 67, 73, 86, 24, - 36, 80, 83, 48, 62, 72, 73, 86, 36, 49, - 81, 34, 89, 89, 91, 91, 91, 91, 91, 91, - 36, 36, 26, 85, 84, 85, 89, 90, 90, 91, - 57, 1, 13, 36, 85, 84, 90, 14, 88, 89, - 88, 36, 88, 88, 88, 88, 91, 27, 36, 36, - 88, 36, 88, 89, 36, 36, 36, 36, 36, 88, - 39, 58, 36, 36, 36, 85 -}; - - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint8 yyr1[] = -{ - 0, 41, 42, 42, 43, 43, 44, 45, 46, 46, - 46, 46, 46, 46, 46, 46, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 48, 48, 48, 48, 48, - 48, 49, 49, 50, 51, 52, 53, 54, 54, 54, - 54, 54, 54, 54, 55, 55, 55, 55, 55, 55, - 56, 57, 57, 58, 58, 59, 60, 61, 62, 63, - 63, 63, 63, 63, 63, 64, 64, 64, 64, 65, - 65, 66, 67, 68, 69, 69, 69, 69, 70, 71, - 72, 73, 74, 74, 74, 74, 75, 76, 77, 78, - 79, 80, 80, 80, 80, 81, 82, 82, 82, 83, - 84, 84, 85, 85, 86, 86, 86, 87, 87, 88, - 88, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 90, 91, 91, 92, 92 -}; - - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = -{ - 0, 2, 2, 1, 2, 2, 3, 0, 0, 2, - 2, 2, 2, 4, 4, 3, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 2, 3, 2, 3, 2, 0, 2, 2, - 2, 2, 2, 2, 3, 4, 4, 4, 4, 5, - 3, 0, 3, 0, 2, 3, 2, 1, 3, 0, - 2, 2, 2, 2, 2, 4, 3, 2, 4, 0, - 2, 3, 1, 3, 0, 2, 2, 2, 3, 3, - 1, 3, 0, 2, 2, 2, 3, 3, 2, 2, - 2, 0, 2, 2, 2, 4, 0, 2, 2, 2, - 0, 2, 1, 1, 2, 2, 2, 1, 2, 0, - 2, 1, 3, 3, 3, 3, 3, 3, 3, 2, - 3, 3, 1, 1, 1, 0, 1 -}; - - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab - - -#define YYRECOVERING() (!!yyerrstatus) - -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (yylen); \ - yystate = *yyssp; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (0) - -/* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 - - - -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) - -/* This macro is provided for backward compatibility. */ -#ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -#endif - - -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) - - -/*----------------------------------------. -| Print this symbol's value on YYOUTPUT. | -`----------------------------------------*/ - -static void -yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -{ - FILE *yyo = yyoutput; - YYUSE (yyo); - if (!yyvaluep) - return; -# ifdef YYPRINT - if (yytype < YYNTOKENS) - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# endif - YYUSE (yytype); -} - - -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ - -static void -yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -{ - YYFPRINTF (yyoutput, "%s %s (", - yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); - - yy_symbol_value_print (yyoutput, yytype, yyvaluep); - YYFPRINTF (yyoutput, ")"); -} - -/*------------------------------------------------------------------. -| yy_stack_print -- Print the state stack from its BOTTOM up to its | -| TOP (included). | -`------------------------------------------------------------------*/ - -static void -yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) -{ - YYFPRINTF (stderr, "Stack now"); - for (; yybottom <= yytop; yybottom++) - { - int yybot = *yybottom; - YYFPRINTF (stderr, " %d", yybot); - } - YYFPRINTF (stderr, "\n"); -} - -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (0) - - -/*------------------------------------------------. -| Report that the YYRULE is going to be reduced. | -`------------------------------------------------*/ - -static void -yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) -{ - unsigned long int yylno = yyrline[yyrule]; - int yynrhs = yyr2[yyrule]; - int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); - /* The symbols being reduced. */ - for (yyi = 0; yyi < yynrhs; yyi++) - { - YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, - yystos[yyssp[yyi + 1 - yynrhs]], - &(yyvsp[(yyi + 1) - (yynrhs)]) - ); - YYFPRINTF (stderr, "\n"); - } -} - -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyssp, yyvsp, Rule); \ -} while (0) - -/* Nonzero means print parse trace. It is left uninitialized so that - multiple parsers can coexist. */ -int yydebug; -#else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) -# define YY_STACK_PRINT(Bottom, Top) -# define YY_REDUCE_PRINT(Rule) -#endif /* !YYDEBUG */ - - -/* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH -# define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). - - Do not make this value too large; the results are undefined if - YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) - evaluated with infinite-precision integer arithmetic. */ - -#ifndef YYMAXDEPTH -# define YYMAXDEPTH 10000 -#endif - - -#if YYERROR_VERBOSE - -# ifndef yystrlen -# if defined __GLIBC__ && defined _STRING_H -# define yystrlen strlen -# else -/* Return the length of YYSTR. */ -static YYSIZE_T -yystrlen (const char *yystr) -{ - YYSIZE_T yylen; - for (yylen = 0; yystr[yylen]; yylen++) - continue; - return yylen; -} -# endif -# endif - -# ifndef yystpcpy -# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -static char * -yystpcpy (char *yydest, const char *yysrc) -{ - char *yyd = yydest; - const char *yys = yysrc; - - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif - -# ifndef yytnamerr -/* Copy to YYRES the contents of YYSTR after stripping away unnecessary - quotes and backslashes, so that it's suitable for yyerror. The - heuristic is that double-quoting is unnecessary unless the string - contains an apostrophe, a comma, or backslash (other than - backslash-backslash). YYSTR is taken from yytname. If YYRES is - null, do not copy; instead, return the length of what the result - would have been. */ -static YYSIZE_T -yytnamerr (char *yyres, const char *yystr) -{ - if (*yystr == '"') - { - YYSIZE_T yyn = 0; - char const *yyp = yystr; - - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } - do_not_strip_quotes: ; - } - - if (! yyres) - return yystrlen (yystr); - - return yystpcpy (yyres, yystr) - yyres; -} -# endif - -/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message - about the unexpected token YYTOKEN for the state stack whose top is - YYSSP. - - Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is - not large enough to hold the message. In that case, also set - *YYMSG_ALLOC to the required number of bytes. Return 2 if the - required number of bytes is too large to store. */ -static int -yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, - yytype_int16 *yyssp, int yytoken) -{ - YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - YYSIZE_T yysize = yysize0; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - /* Internationalized format string. */ - const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat. */ - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Number of reported tokens (one for the "unexpected", one per - "expected"). */ - int yycount = 0; - - /* There are many possibilities here to consider: - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yychar) is if - this state is a consistent state with a default action. Thus, - detecting the absence of a lookahead is sufficient to determine - that there is no unexpected or expected token to report. In that - case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is a - consistent state with a default action. There might have been a - previous inconsistent state, consistent state with a non-default - action, or user semantic action that manipulated yychar. - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state merging - (from LALR or IELR) and default reductions corrupt the expected - token list. However, the list is correct for canonical LR with - one exception: it will still contain any token that will not be - accepted due to an error action in a later state. - */ - if (yytoken != YYEMPTY) - { - int yyn = yypact[*yyssp]; - yyarg[yycount++] = yytname[yytoken]; - if (!yypact_value_is_default (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yyx; - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR - && !yytable_value_is_error (yytable[yyx + yyn])) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - break; - } - yyarg[yycount++] = yytname[yyx]; - { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (! (yysize <= yysize1 - && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; - } - } - } - } - - switch (yycount) - { -# define YYCASE_(N, S) \ - case N: \ - yyformat = S; \ - break - YYCASE_(0, YY_("syntax error")); - YYCASE_(1, YY_("syntax error, unexpected %s")); - YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -# undef YYCASE_ - } - - { - YYSIZE_T yysize1 = yysize + yystrlen (yyformat); - if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; - } - - if (*yymsg_alloc < yysize) - { - *yymsg_alloc = 2 * yysize; - if (! (yysize <= *yymsg_alloc - && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) - *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; - return 1; - } - - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - { - char *yyp = *yymsg; - int yyi = 0; - while ((*yyp = *yyformat) != '\0') - if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyformat += 2; - } - else - { - yyp++; - yyformat++; - } - } - return 0; -} -#endif /* YYERROR_VERBOSE */ - -/*-----------------------------------------------. -| Release the memory associated to this symbol. | -`-----------------------------------------------*/ - -static void -yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) -{ - YYUSE (yyvaluep); - if (!yymsg) - yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - switch (yytype) - { - case 60: /* choice_entry */ - - { - fprintf(stderr, "%s:%d: missing end statement for this entry\n", - ((*yyvaluep).menu)->file->name, ((*yyvaluep).menu)->lineno); - if (current_menu == ((*yyvaluep).menu)) - menu_end_menu(); -} - - break; - - case 66: /* if_entry */ - - { - fprintf(stderr, "%s:%d: missing end statement for this entry\n", - ((*yyvaluep).menu)->file->name, ((*yyvaluep).menu)->lineno); - if (current_menu == ((*yyvaluep).menu)) - menu_end_menu(); -} - - break; - - case 71: /* menu_entry */ - - { - fprintf(stderr, "%s:%d: missing end statement for this entry\n", - ((*yyvaluep).menu)->file->name, ((*yyvaluep).menu)->lineno); - if (current_menu == ((*yyvaluep).menu)) - menu_end_menu(); -} - - break; - - - default: - break; - } - YY_IGNORE_MAYBE_UNINITIALIZED_END -} - - - - -/* The lookahead symbol. */ -int yychar; - -/* The semantic value of the lookahead symbol. */ -YYSTYPE yylval; -/* Number of syntax errors so far. */ -int yynerrs; - - -/*----------. -| yyparse. | -`----------*/ - -int -yyparse (void) -{ - int yystate; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - - Refer to the stacks through separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss; - yytype_int16 *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; - - YYSIZE_T yystacksize; - - int yyn; - int yyresult; - /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; - -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -#endif - -#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) - - /* The number of symbols on the RHS of the reduced rule. - Keep to zero when no symbol should be popped. */ - int yylen = 0; - - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - yystacksize = YYINITDEPTH; - - YYDPRINTF ((stderr, "Starting parse\n")); - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - goto yysetstate; - -/*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | -`------------------------------------------------------------*/ - yynewstate: - /* In all cases, when you get here, the value and location stacks - have just been pushed. So pushing a state here evens the stacks. */ - yyssp++; - - yysetstate: - *yyssp = yystate; - - if (yyss + yystacksize - 1 <= yyssp) - { - /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = yyssp - yyss + 1; - -#ifdef yyoverflow - { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yystacksize); - - yyss = yyss1; - yyvs = yyvs1; - } -#else /* no yyoverflow */ -# ifndef YYSTACK_RELOCATE - goto yyexhaustedlab; -# else - /* Extend the stack our own way. */ - if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; - yystacksize *= 2; - if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; - - { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); - } -# endif -#endif /* no yyoverflow */ - - yyssp = yyss + yysize - 1; - yyvsp = yyvs + yysize - 1; - - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); - - if (yyss + yystacksize - 1 <= yyssp) - YYABORT; - } - - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - - if (yystate == YYFINAL) - YYACCEPT; - - goto yybackup; - -/*-----------. -| yybackup. | -`-----------*/ -yybackup: - - /* Do appropriate processing given the current state. Read a - lookahead token if we need one and don't already have one. */ - - /* First try to decide what to do without reference to lookahead token. */ - yyn = yypact[yystate]; - if (yypact_value_is_default (yyn)) - goto yydefault; - - /* Not known => get a lookahead token if don't already have one. */ - - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ - if (yychar == YYEMPTY) - { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = yylex (); - } - - if (yychar <= YYEOF) - { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yytoken = YYTRANSLATE (yychar); - YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); - } - - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - yyn += yytoken; - if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) - goto yydefault; - yyn = yytable[yyn]; - if (yyn <= 0) - { - if (yytable_value_is_error (yyn)) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus) - yyerrstatus--; - - /* Shift the lookahead token. */ - YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the shifted token. */ - yychar = YYEMPTY; - - yystate = yyn; - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END - - goto yynewstate; - - -/*-----------------------------------------------------------. -| yydefault -- do the default action for the current state. | -`-----------------------------------------------------------*/ -yydefault: - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; - - -/*-----------------------------. -| yyreduce -- Do a reduction. | -`-----------------------------*/ -yyreduce: - /* yyn is the number of a rule to reduce with. */ - yylen = yyr2[yyn]; - - /* If YYLEN is nonzero, implement the default value of the action: - '$$ = $1'. - - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. Assigning to YYVAL - unconditionally makes the parser a bit smaller, and it avoids a - GCC warning that YYVAL may be used uninitialized. */ - yyval = yyvsp[1-yylen]; - - - YY_REDUCE_PRINT (yyn); - switch (yyn) - { - case 6: - - { - menu_add_prompt(P_MENU, (yyvsp[-1].string), NULL); -} - - break; - - case 7: - - { - /* - * Hack: Keep the main menu title on the heap so we can safely free it - * later regardless of whether it comes from the 'prompt' in - * mainmenu_stmt or here - */ - menu_add_prompt(P_MENU, xstrdup("Buildroot Configuration"), NULL); -} - - break; - - case 12: - - { zconf_error("unexpected end statement"); } - - break; - - case 13: - - { zconf_error("unknown statement \"%s\"", (yyvsp[-2].string)); } - - break; - - case 14: - - { - zconf_error("unexpected option \"%s\"", (yyvsp[-2].id)->name); -} - - break; - - case 15: - - { zconf_error("invalid statement"); } - - break; - - case 31: - - { zconf_error("unknown option \"%s\"", (yyvsp[-2].string)); } - - break; - - case 32: - - { zconf_error("invalid option"); } - - break; - - case 33: - - { - (yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL; - menu_add_entry((yyvsp[-1].symbol)); - printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), (yyvsp[-1].symbol)->name); -} - - break; - - case 34: - - { - printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 35: - - { - (yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL; - menu_add_entry((yyvsp[-1].symbol)); - printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), (yyvsp[-1].symbol)->name); -} - - break; - - case 36: - - { - if (current_entry->prompt) - current_entry->prompt->type = P_MENU; - else - zconfprint("warning: menuconfig statement without prompt"); - printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 44: - - { - menu_set_type((yyvsp[-2].id)->stype); - printd(DEBUG_PARSE, "%s:%d:type(%u)\n", - zconf_curname(), zconf_lineno(), - (yyvsp[-2].id)->stype); -} - - break; - - case 45: - - { - menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 46: - - { - menu_add_expr(P_DEFAULT, (yyvsp[-2].expr), (yyvsp[-1].expr)); - if ((yyvsp[-3].id)->stype != S_UNKNOWN) - menu_set_type((yyvsp[-3].id)->stype); - printd(DEBUG_PARSE, "%s:%d:default(%u)\n", - zconf_curname(), zconf_lineno(), - (yyvsp[-3].id)->stype); -} - - break; - - case 47: - - { - menu_add_symbol(P_SELECT, (yyvsp[-2].symbol), (yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 48: - - { - menu_add_symbol(P_IMPLY, (yyvsp[-2].symbol), (yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:imply\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 49: - - { - menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[-3].symbol), (yyvsp[-2].symbol)), (yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 52: - - { - const struct kconf_id *id = kconf_id_lookup((yyvsp[-1].string), strlen((yyvsp[-1].string))); - if (id && id->flags & TF_OPTION) { - menu_add_option(id->token, (yyvsp[0].string)); - free((yyvsp[0].string)); - } - else - zconfprint("warning: ignoring unknown option %s", (yyvsp[-1].string)); - free((yyvsp[-1].string)); -} - - break; - - case 53: - - { (yyval.string) = NULL; } - - break; - - case 54: - - { (yyval.string) = (yyvsp[0].string); } - - break; - - case 55: - - { - struct symbol *sym = sym_lookup((yyvsp[-1].string), SYMBOL_CHOICE); - sym->flags |= SYMBOL_AUTO; - menu_add_entry(sym); - menu_add_expr(P_CHOICE, NULL, NULL); - free((yyvsp[-1].string)); - printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 56: - - { - (yyval.menu) = menu_add_menu(); -} - - break; - - case 57: - - { - if (zconf_endtoken((yyvsp[0].id), T_CHOICE, T_ENDCHOICE)) { - menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno()); - } -} - - break; - - case 65: - - { - menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 66: - - { - if ((yyvsp[-2].id)->stype == S_BOOLEAN || (yyvsp[-2].id)->stype == S_TRISTATE) { - menu_set_type((yyvsp[-2].id)->stype); - printd(DEBUG_PARSE, "%s:%d:type(%u)\n", - zconf_curname(), zconf_lineno(), - (yyvsp[-2].id)->stype); - } else - YYERROR; -} - - break; - - case 67: - - { - current_entry->sym->flags |= SYMBOL_OPTIONAL; - printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 68: - - { - if ((yyvsp[-3].id)->stype == S_UNKNOWN) { - menu_add_symbol(P_DEFAULT, (yyvsp[-2].symbol), (yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:default\n", - zconf_curname(), zconf_lineno()); - } else - YYERROR; -} - - break; - - case 71: - - { - printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); - menu_add_entry(NULL); - menu_add_dep((yyvsp[-1].expr)); - (yyval.menu) = menu_add_menu(); -} - - break; - - case 72: - - { - if (zconf_endtoken((yyvsp[0].id), T_IF, T_ENDIF)) { - menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno()); - } -} - - break; - - case 78: - - { - menu_add_entry(NULL); - menu_add_prompt(P_MENU, (yyvsp[-1].string), NULL); - printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 79: - - { - (yyval.menu) = menu_add_menu(); -} - - break; - - case 80: - - { - if (zconf_endtoken((yyvsp[0].id), T_MENU, T_ENDMENU)) { - menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno()); - } -} - - break; - - case 86: - - { - printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), (yyvsp[-1].string)); - zconf_nextfile((yyvsp[-1].string)); - free((yyvsp[-1].string)); -} - - break; - - case 87: - - { - menu_add_entry(NULL); - menu_add_prompt(P_COMMENT, (yyvsp[-1].string), NULL); - printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 89: - - { - printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno()); - zconf_starthelp(); -} - - break; - - case 90: - - { - if (current_entry->help) { - free(current_entry->help); - zconfprint("warning: '%s' defined with more than one help text -- only the last one will be used", - current_entry->sym->name ?: ""); - } - - /* Is the help text empty or all whitespace? */ - if ((yyvsp[0].string)[strspn((yyvsp[0].string), " \f\n\r\t\v")] == '\0') - zconfprint("warning: '%s' defined with blank help text", - current_entry->sym->name ?: ""); - - current_entry->help = (yyvsp[0].string); -} - - break; - - case 95: - - { - menu_add_dep((yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 99: - - { - menu_add_visibility((yyvsp[0].expr)); -} - - break; - - case 101: - - { - menu_add_prompt(P_PROMPT, (yyvsp[-1].string), (yyvsp[0].expr)); -} - - break; - - case 104: - - { (yyval.id) = (yyvsp[-1].id); } - - break; - - case 105: - - { (yyval.id) = (yyvsp[-1].id); } - - break; - - case 106: - - { (yyval.id) = (yyvsp[-1].id); } - - break; - - case 109: - - { (yyval.expr) = NULL; } - - break; - - case 110: - - { (yyval.expr) = (yyvsp[0].expr); } - - break; - - case 111: - - { (yyval.expr) = expr_alloc_symbol((yyvsp[0].symbol)); } - - break; - - case 112: - - { (yyval.expr) = expr_alloc_comp(E_LTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } - - break; - - case 113: - - { (yyval.expr) = expr_alloc_comp(E_LEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } - - break; - - case 114: - - { (yyval.expr) = expr_alloc_comp(E_GTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } - - break; - - case 115: - - { (yyval.expr) = expr_alloc_comp(E_GEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } - - break; - - case 116: - - { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } - - break; - - case 117: - - { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } - - break; - - case 118: - - { (yyval.expr) = (yyvsp[-1].expr); } - - break; - - case 119: - - { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[0].expr)); } - - break; - - case 120: - - { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[-2].expr), (yyvsp[0].expr)); } - - break; - - case 121: - - { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); } - - break; - - case 122: - - { (yyval.symbol) = sym_lookup((yyvsp[0].string), 0); free((yyvsp[0].string)); } - - break; - - case 124: - - { (yyval.symbol) = sym_lookup((yyvsp[0].string), SYMBOL_CONST); free((yyvsp[0].string)); } - - break; - - case 125: - - { (yyval.string) = NULL; } - - break; - - - - default: break; - } - /* User semantic actions sometimes alter yychar, and that requires - that yytoken be updated with the new translation. We take the - approach of translating immediately before every use of yytoken. - One alternative is translating here after every semantic action, - but that translation would be missed if the semantic action invokes - YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or - if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an - incorrect destructor might then be invoked immediately. In the - case of YYERROR or YYBACKUP, subsequent parser actions might lead - to an incorrect destructor call or verbose syntax error message - before the lookahead is translated. */ - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); - - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - - *++yyvsp = yyval; - - /* Now 'shift' the result of the reduction. Determine what state - that goes to, based on the state we popped back to and the rule - number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; - if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTOKENS]; - - goto yynewstate; - - -/*--------------------------------------. -| yyerrlab -- here on detecting error. | -`--------------------------------------*/ -yyerrlab: - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); - - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus) - { - ++yynerrs; -#if ! YYERROR_VERBOSE - yyerror (YY_("syntax error")); -#else -# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ - yyssp, yytoken) - { - char const *yymsgp = YY_("syntax error"); - int yysyntax_error_status; - yysyntax_error_status = YYSYNTAX_ERROR; - if (yysyntax_error_status == 0) - yymsgp = yymsg; - else if (yysyntax_error_status == 1) - { - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); - if (!yymsg) - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - yysyntax_error_status = 2; - } - else - { - yysyntax_error_status = YYSYNTAX_ERROR; - yymsgp = yymsg; - } - } - yyerror (yymsgp); - if (yysyntax_error_status == 2) - goto yyexhaustedlab; - } -# undef YYSYNTAX_ERROR -#endif - } - - - - if (yyerrstatus == 3) - { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ - - if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } - else - { - yydestruct ("Error: discarding", - yytoken, &yylval); - yychar = YYEMPTY; - } - } - - /* Else will try to reuse lookahead token after shifting the error - token. */ - goto yyerrlab1; - - -/*---------------------------------------------------. -| yyerrorlab -- error raised explicitly by YYERROR. | -`---------------------------------------------------*/ -yyerrorlab: - - /* Pacify compilers like GCC when the user code never invokes - YYERROR and the label yyerrorlab therefore never appears in user - code. */ - if (/*CONSTCOND*/ 0) - goto yyerrorlab; - - /* Do not reclaim the symbols of the rule whose action triggered - this YYERROR. */ - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - yystate = *yyssp; - goto yyerrlab1; - - -/*-------------------------------------------------------------. -| yyerrlab1 -- common code for both syntax error and YYERROR. | -`-------------------------------------------------------------*/ -yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ - - for (;;) - { - yyn = yypact[yystate]; - if (!yypact_value_is_default (yyn)) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } - - /* Pop the current state because it cannot handle the error token. */ - if (yyssp == yyss) - YYABORT; - - - yydestruct ("Error: popping", - yystos[yystate], yyvsp); - YYPOPSTACK (1); - yystate = *yyssp; - YY_STACK_PRINT (yyss, yyssp); - } - - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END - - - /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); - - yystate = yyn; - goto yynewstate; - - -/*-------------------------------------. -| yyacceptlab -- YYACCEPT comes here. | -`-------------------------------------*/ -yyacceptlab: - yyresult = 0; - goto yyreturn; - -/*-----------------------------------. -| yyabortlab -- YYABORT comes here. | -`-----------------------------------*/ -yyabortlab: - yyresult = 1; - goto yyreturn; - -#if !defined yyoverflow || YYERROR_VERBOSE -/*-------------------------------------------------. -| yyexhaustedlab -- memory exhaustion comes here. | -`-------------------------------------------------*/ -yyexhaustedlab: - yyerror (YY_("memory exhausted")); - yyresult = 2; - /* Fall through. */ -#endif - -yyreturn: - if (yychar != YYEMPTY) - { - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = YYTRANSLATE (yychar); - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval); - } - /* Do not reclaim the symbols of the rule whose action triggered - this YYABORT or YYACCEPT. */ - YYPOPSTACK (yylen); - YY_STACK_PRINT (yyss, yyssp); - while (yyssp != yyss) - { - yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp); - YYPOPSTACK (1); - } -#ifndef yyoverflow - if (yyss != yyssa) - YYSTACK_FREE (yyss); -#endif -#if YYERROR_VERBOSE - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); -#endif - return yyresult; -} - - - -void conf_parse(const char *name) -{ - const char *tmp; - struct symbol *sym; - int i; - - zconf_initscan(name); - - sym_init(); - _menu_init(); - - if (getenv("ZCONF_DEBUG")) - yydebug = 1; - yyparse(); - if (yynerrs) - exit(1); - if (!modules_sym) - modules_sym = sym_find( "n" ); - - tmp = rootmenu.prompt->text; - rootmenu.prompt->text = _(rootmenu.prompt->text); - rootmenu.prompt->text = sym_expand_string_value(rootmenu.prompt->text); - free((char*)tmp); - - menu_finalize(&rootmenu); - for_all_symbols(i, sym) { - if (sym_check_deps(sym)) - yynerrs++; - } - if (yynerrs) - exit(1); - sym_set_change_count(1); -} - -static const char *zconf_tokenname(int token) -{ - switch (token) { - case T_MENU: return "menu"; - case T_ENDMENU: return "endmenu"; - case T_CHOICE: return "choice"; - case T_ENDCHOICE: return "endchoice"; - case T_IF: return "if"; - case T_ENDIF: return "endif"; - case T_DEPENDS: return "depends"; - case T_VISIBLE: return "visible"; - } - return ""; -} - -static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken) -{ - if (id->token != endtoken) { - zconf_error("unexpected '%s' within %s block", - id->name, zconf_tokenname(starttoken)); - yynerrs++; - return false; - } - if (current_menu->file != current_file) { - zconf_error("'%s' in different file than '%s'", - id->name, zconf_tokenname(starttoken)); - fprintf(stderr, "%s:%d: location of the '%s'\n", - current_menu->file->name, current_menu->lineno, - zconf_tokenname(starttoken)); - yynerrs++; - return false; - } - return true; -} - -static void zconfprint(const char *err, ...) -{ - va_list ap; - - fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); - va_start(ap, err); - vfprintf(stderr, err, ap); - va_end(ap); - fprintf(stderr, "\n"); -} - -static void zconf_error(const char *err, ...) -{ - va_list ap; - - yynerrs++; - fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); - va_start(ap, err); - vfprintf(stderr, err, ap); - va_end(ap); - fprintf(stderr, "\n"); -} - -static void yyerror(const char *err) -{ - fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err); -} - -static void print_quoted_string(FILE *out, const char *str) -{ - const char *p; - int len; - - putc('"', out); - while ((p = strchr(str, '"'))) { - len = p - str; - if (len) - fprintf(out, "%.*s", len, str); - fputs("\\\"", out); - str = p + 1; - } - fputs(str, out); - putc('"', out); -} - -static void print_symbol(FILE *out, struct menu *menu) -{ - struct symbol *sym = menu->sym; - struct property *prop; - - if (sym_is_choice(sym)) - fprintf(out, "\nchoice\n"); - else - fprintf(out, "\nconfig %s\n", sym->name); - switch (sym->type) { - case S_BOOLEAN: - fputs(" bool\n", out); - break; - case S_TRISTATE: - fputs(" tristate\n", out); - break; - case S_STRING: - fputs(" string\n", out); - break; - case S_INT: - fputs(" integer\n", out); - break; - case S_HEX: - fputs(" hex\n", out); - break; - default: - fputs(" ???\n", out); - break; - } - for (prop = sym->prop; prop; prop = prop->next) { - if (prop->menu != menu) - continue; - switch (prop->type) { - case P_PROMPT: - fputs(" prompt ", out); - print_quoted_string(out, prop->text); - if (!expr_is_yes(prop->visible.expr)) { - fputs(" if ", out); - expr_fprint(prop->visible.expr, out); - } - fputc('\n', out); - break; - case P_DEFAULT: - fputs( " default ", out); - expr_fprint(prop->expr, out); - if (!expr_is_yes(prop->visible.expr)) { - fputs(" if ", out); - expr_fprint(prop->visible.expr, out); - } - fputc('\n', out); - break; - case P_CHOICE: - fputs(" #choice value\n", out); - break; - case P_SELECT: - fputs( " select ", out); - expr_fprint(prop->expr, out); - fputc('\n', out); - break; - case P_IMPLY: - fputs( " imply ", out); - expr_fprint(prop->expr, out); - fputc('\n', out); - break; - case P_RANGE: - fputs( " range ", out); - expr_fprint(prop->expr, out); - fputc('\n', out); - break; - case P_MENU: - fputs( " menu ", out); - print_quoted_string(out, prop->text); - fputc('\n', out); - break; - default: - fprintf(out, " unknown prop %d!\n", prop->type); - break; - } - } - if (menu->help) { - int len = strlen(menu->help); - while (menu->help[--len] == '\n') - menu->help[len] = 0; - fprintf(out, " help\n%s\n", menu->help); - } -} - -void zconfdump(FILE *out) -{ - struct property *prop; - struct symbol *sym; - struct menu *menu; - - menu = rootmenu.list; - while (menu) { - if ((sym = menu->sym)) - print_symbol(out, menu); - else if ((prop = menu->prompt)) { - switch (prop->type) { - case P_COMMENT: - fputs("\ncomment ", out); - print_quoted_string(out, prop->text); - fputs("\n", out); - break; - case P_MENU: - fputs("\nmenu ", out); - print_quoted_string(out, prop->text); - fputs("\n", out); - break; - default: - ; - } - if (!expr_is_yes(prop->visible.expr)) { - fputs(" depends ", out); - expr_fprint(prop->visible.expr, out); - fputc('\n', out); - } - } - - if (menu->list) - menu = menu->list; - else if (menu->next) - menu = menu->next; - else while ((menu = menu->parent)) { - if (menu->prompt && menu->prompt->type == P_MENU) - fputs("\nendmenu\n", out); - if (menu->next) { - menu = menu->next; - break; - } - } - } -} - -#include "zconf.lex.c" -#include "util.c" -#include "confdata.c" -#include "expr.c" -#include "symbol.c" -#include "menu.c" -- 2.45.0 From mf at go-sys.de Mon May 13 14:26:12 2024 From: mf at go-sys.de (Michael Fischer) Date: Mon, 13 May 2024 16:26:12 +0200 Subject: [Buildroot] [PATCH] package/gnuplot: bump version to 6.0.0 Message-ID: <20240513142612.21594-1-mf@go-sys.de> 0001-configure-add-without-demo-option: adapt patch to 6.0.0 version Signed-off-by: Michael Fischer --- ...01-configure-add-without-demo-option.patch | 42 +++++++------------ package/gnuplot/gnuplot.hash | 8 ++-- package/gnuplot/gnuplot.mk | 2 +- 3 files changed, 21 insertions(+), 31 deletions(-) diff --git a/package/gnuplot/0001-configure-add-without-demo-option.patch b/package/gnuplot/0001-configure-add-without-demo-option.patch index a557e279bc..4eb9833fe7 100644 --- a/package/gnuplot/0001-configure-add-without-demo-option.patch +++ b/package/gnuplot/0001-configure-add-without-demo-option.patch @@ -8,32 +8,19 @@ Signed-off-by: Thomas Petazzoni Signed-off-by: Vicente Olivert Riera [Michael: adapt patch to 5.4.0 version] Signed-off-by: Michael Fischer +[Michael: adapt patch to 6.0.0 version] +Signed-off-by: Michael Fischer -diff -Naur a/configure.ac b/configure.ac ---- a/configure.ac 2020-07-12 02:29:47.000000000 +0200 -+++ b/configure.ac 2020-08-06 14:21:17.918756893 +0200 -@@ -713,6 +713,17 @@ - [ Define if you want to read .gnuplot from current directory (SECURITY RISK!).]) - fi +--- a/configure.ac 2023-12-19 00:28:58.000000000 +0100 ++++ b/configure.ac 2024-05-13 15:41:18.313920528 +0200 +@@ -715,6 +715,32 @@ + + dnl Process rest of with and enable options +dnl Whether we want to build the doc files +dnl Does nothing here, is passed on to the doc subdir +AC_ARG_ENABLE(doc,dnl +[ --disable-doc do not build doc files]) -+ -+dnl Whether we want to build the demo files -+dnl Does nothing here, is passed on to the demo subdir -+AC_ARG_ENABLE(demo,dnl -+[ --disable-demo do not build demo files]) -+ -+ - dnl Sort help/subtopic tables by row or column - AC_ARG_WITH(row-help,dnl - [ --with-row-help format help and subtopic tables by row (default) -@@ -1095,6 +1106,24 @@ - AC_DEFINE_UNQUOTED([DIST_CONTACT],["$DIST_CONTACT"],[Contact address for modified and binary distributed gnuplot versions]) - fi - +dnl build doc files +if test "$enable_doc" != no; then + AC_CONFIG_SUBDIRS(docs) @@ -43,6 +30,10 @@ diff -Naur a/configure.ac b/configure.ac +fi +AC_SUBST(DOCSUBDIR) + ++dnl Whether we want to build the demo files ++dnl Does nothing here, is passed on to the demo subdir ++AC_ARG_ENABLE(demo,dnl ++[ --disable-demo do not build demo files]) +dnl build demo files +if test "$enable_demo" != no; then + AC_CONFIG_SUBDIRS(demo) @@ -52,12 +43,11 @@ diff -Naur a/configure.ac b/configure.ac +fi +AC_SUBST(DEMOSUBDIR) + - dnl Substitute variables - AC_SUBST(PACKAGE) - AC_SUBST(VERSION_MAJOR) -diff -Naur a/Makefile.am b/Makefile.am ---- a/Makefile.am 2020-03-31 19:28:16.000000000 +0200 -+++ b/Makefile.am 2020-08-06 14:34:12.995097799 +0200 + dnl without-extra-coordinate may leave a hole in "struct coordinate" + AC_ARG_WITH(extra-coordinate,dnl + [ --without-extra-coordinate leave possible hole in struct coordinate],,) +--- a/Makefile.am 2023-12-19 00:28:58.000000000 +0100 ++++ b/Makefile.am 2024-05-13 15:54:21.189906680 +0200 @@ -1,7 +1,7 @@ ## Process this file with automake to produce Makefile.in -*-Makefile-*- AUTOMAKE_OPTIONS = foreign diff --git a/package/gnuplot/gnuplot.hash b/package/gnuplot/gnuplot.hash index 39dacd50a4..dd587a8220 100644 --- a/package/gnuplot/gnuplot.hash +++ b/package/gnuplot/gnuplot.hash @@ -1,6 +1,6 @@ -# From https://sourceforge.net/projects/gnuplot/files/gnuplot/5.4.10/ -md5 334851e63450362bdb95e67fa8a23665 gnuplot-5.4.10.tar.gz -sha1 9981e5b0111c07d376deef571ccc75ce4b4ebbd2 gnuplot-5.4.10.tar.gz +# From https://sourceforge.net/projects/gnuplot/files/gnuplot/6.0.0/ +md5 10246eb96bbf3a151d6eb9bbcc223e4e gnuplot-6.0.0.tar.gz +sha1 3abea0cccad89b0c8fb6619ad51b83a971ee24b9 gnuplot-6.0.0.tar.gz # Locally computed -sha256 975d8c1cc2c41c7cedc4e323aff035d977feb9a97f0296dd2a8a66d197a5b27c gnuplot-5.4.10.tar.gz +sha256 635a28f0993f6ab0d1179e072ad39b8139d07f51237f841d93c6c2ff4b1758ec gnuplot-6.0.0.tar.gz sha256 895928ec0735cca1c8cec42656c7e314a065d0242813bb8693c0c1bf61fd4e4d Copyright diff --git a/package/gnuplot/gnuplot.mk b/package/gnuplot/gnuplot.mk index 91e9bfb9bf..26b2daaf24 100644 --- a/package/gnuplot/gnuplot.mk +++ b/package/gnuplot/gnuplot.mk @@ -4,7 +4,7 @@ # ################################################################################ -GNUPLOT_VERSION = 5.4.10 +GNUPLOT_VERSION = 6.0.0 GNUPLOT_SITE = http://downloads.sourceforge.net/project/gnuplot/gnuplot/$(GNUPLOT_VERSION) GNUPLOT_LICENSE = gnuplot license (open source) GNUPLOT_LICENSE_FILES = Copyright -- 2.20.1 From nick.whitlock at eizo.com Mon May 13 15:59:05 2024 From: nick.whitlock at eizo.com (Nick Whitlock) Date: Mon, 13 May 2024 11:59:05 -0400 Subject: [Buildroot] [PATCH] package/nvidia-driver: bump version to 550.78 Message-ID: <20240513155907.104270-1-nick.whitlock@eizo.com> The NVIDIA drivers now have 64-bit and 32-bit versions bundled into one .run file. A configuration value was also added to check if the user wants to install GTK integration for the NVIDIA driver. The legacy version of libGL.so was removed in favor of the vendor neutral version. This has been confirmed to work on kernel 6.1.4. Signed-off-by: Nick Whitlock --- package/nvidia-driver/Config.in | 3 ++ package/nvidia-driver/nvidia-driver.hash | 7 ++- package/nvidia-driver/nvidia-driver.mk | 69 +++++++++++++----------- 3 files changed, 43 insertions(+), 36 deletions(-) diff --git a/package/nvidia-driver/Config.in b/package/nvidia-driver/Config.in index a8617a939b..0fcce93e28 100644 --- a/package/nvidia-driver/Config.in +++ b/package/nvidia-driver/Config.in @@ -90,4 +90,7 @@ config BR2_PACKAGE_NVIDIA_DRIVER_MODULE provides Unified Memory access to the GPU and CPU memories for CUDA programs. +config BR2_PACKAGE_NVIDIA_DRIVER_GTK + bool "nvidia GTK acceleration" + endif # BR2_PACKAGE_NVIDIA_DRIVER diff --git a/package/nvidia-driver/nvidia-driver.hash b/package/nvidia-driver/nvidia-driver.hash index 620112e6c8..06e3314d53 100644 --- a/package/nvidia-driver/nvidia-driver.hash +++ b/package/nvidia-driver/nvidia-driver.hash @@ -1,4 +1,3 @@ -# Locally computed -sha256 94e399b459659c12b1344e8c8f4f5eee1ed5915ff459fc8bb831c9e1d44677db NVIDIA-Linux-x86-390.151.run -sha256 6e4fd2258465f5d5527fe80abd46de925a30348b4a84658498a6d75caf42c47c NVIDIA-Linux-x86_64-390.151-no-compat32.run -sha256 bd28b0c5aeeb00eb11d3ec6f6f3449d4b3a40100914258332734a53527997526 LICENSE +# Locally computed: +sha256 34070434527ec9d575483e7f11ca078e467e73f6defc54366ecfbdcfe4a3bf73 NVIDIA-Linux-x86_64-550.78.run +sha256 5ac626496a6388d37cdd53e0300525267a4b8c89fb5980da060783afd561faf7 LICENSE diff --git a/package/nvidia-driver/nvidia-driver.mk b/package/nvidia-driver/nvidia-driver.mk index f1217b00aa..9ea97a2a9f 100644 --- a/package/nvidia-driver/nvidia-driver.mk +++ b/package/nvidia-driver/nvidia-driver.mk @@ -4,10 +4,9 @@ # ################################################################################ -NVIDIA_DRIVER_VERSION = 390.151 -NVIDIA_DRIVER_SUFFIX = $(if $(BR2_x86_64),_64) -NVIDIA_DRIVER_SITE = http://download.nvidia.com/XFree86/Linux-x86$(NVIDIA_DRIVER_SUFFIX)/$(NVIDIA_DRIVER_VERSION) -NVIDIA_DRIVER_SOURCE = NVIDIA-Linux-x86$(NVIDIA_DRIVER_SUFFIX)-$(NVIDIA_DRIVER_VERSION)$(if $(BR2_x86_64),-no-compat32).run +NVIDIA_DRIVER_VERSION = 550.78 +NVIDIA_DRIVER_SITE = http://download.nvidia.com/XFree86/Linux-x86_64/$(NVIDIA_DRIVER_VERSION) +NVIDIA_DRIVER_SOURCE = NVIDIA-Linux-x86_64-$(NVIDIA_DRIVER_VERSION).run NVIDIA_DRIVER_LICENSE = NVIDIA Software License NVIDIA_DRIVER_LICENSE_FILES = LICENSE NVIDIA_DRIVER_REDISTRIBUTE = NO @@ -23,30 +22,15 @@ ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_XORG),y) NVIDIA_DRIVER_DEPENDENCIES += mesa3d-headers xlib_libX11 xlib_libXext NVIDIA_DRIVER_PROVIDES += libgl libegl libgles -# libGL.so.$(NVIDIA_DRIVER_VERSION) is the legacy libGL.so library; it -# has been replaced with libGL.so.1.0.0. Installing both is technically -# possible, but great care must be taken to ensure they do not conflict, -# so that EGL still works. The legacy library exposes an NVidia-specific -# API, so it should not be needed, except for legacy, binary-only -# applications (in other words: we don't care). -# -# libGL.so.1.0.0 is the new vendor-neutral library, aimed at replacing -# the old libGL.so.$(NVIDIA_DRIVER_VERSION) library. The latter contains -# NVidia extensions (which is deemed bad now), while the former follows -# the newly-introduced vendor-neutral "dispatching" API/ABI: -# https://github.com/aritger/linux-opengl-abi-proposal/blob/master/linux-opengl-abi-proposal.txt -# However, this is not very useful to us, as we don't support multiple -# GL providers at the same time on the system, which this proposal is -# aimed at supporting. -# -# So we only install the legacy library for now. NVIDIA_DRIVER_LIBS_GL = \ libGLX.so.0 \ - libGL.so.$(NVIDIA_DRIVER_VERSION) \ + libglxserver_nvidia.so.$(NVIDIA_DRIVER_VERSION) \ + libGL.so.1.7.0 \ libGLX_nvidia.so.$(NVIDIA_DRIVER_VERSION) NVIDIA_DRIVER_LIBS_EGL = \ libEGL.so.1.1.0 \ + libEGL.so.$(NVIDIA_DRIVER_VERSION) \ libGLdispatch.so.0 \ libEGL_nvidia.so.$(NVIDIA_DRIVER_VERSION) @@ -57,13 +41,18 @@ NVIDIA_DRIVER_LIBS_GLES = \ libGLESv2_nvidia.so.$(NVIDIA_DRIVER_VERSION) NVIDIA_DRIVER_LIBS_MISC = \ + libnvidia-allocator.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-api.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-cfg.so.$(NVIDIA_DRIVER_VERSION) \ libnvidia-eglcore.so.$(NVIDIA_DRIVER_VERSION) \ - libnvidia-egl-wayland.so.1.0.2 \ + libnvidia-egl-gbm.so.1.1.1 \ + libnvidia-egl-wayland.so.1.1.13 \ + libnvidia-wayland-client.so.$(NVIDIA_DRIVER_VERSION) \ libnvidia-glcore.so.$(NVIDIA_DRIVER_VERSION) \ libnvidia-glsi.so.$(NVIDIA_DRIVER_VERSION) \ - tls/libnvidia-tls.so.$(NVIDIA_DRIVER_VERSION) \ - libvdpau_nvidia.so.$(NVIDIA_DRIVER_VERSION):vdpau/ \ - libnvidia-ml.so.$(NVIDIA_DRIVER_VERSION) + libnvidia-glvkspirv.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-ml.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-rtcore.so.$(NVIDIA_DRIVER_VERSION) NVIDIA_DRIVER_LIBS += \ $(NVIDIA_DRIVER_LIBS_GL) \ @@ -87,13 +76,26 @@ endef # wants to run a third-party program developed under such an agreement). ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_PRIVATE_LIBS),y) NVIDIA_DRIVER_LIBS += \ + libnvidia-fbc.so.$(NVIDIA_DRIVER_VERSION) \ libnvidia-ifr.so.$(NVIDIA_DRIVER_VERSION) \ - libnvidia-fbc.so.$(NVIDIA_DRIVER_VERSION) + libnvidia-ngx.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-opticalflow.so.$(NVIDIA_DRIVER_VERSION) \ + libnvoptix.so.$(NVIDIA_DRIVER_VERSION) +endif + +# Include GTK libraries (if required) +ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_GTK),y) +NVIDIA_DRIVER_LIBS += \ + libnvidia-gtk2.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-gtk3.so.$(NVIDIA_DRIVER_VERSION) endif # We refer to the destination path; the origin file has no directory component NVIDIA_DRIVER_LIBS += \ nvidia_drv.so:xorg/modules/drivers/ \ + libnvidia-pkcs11.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-pkcs11-openssl3.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-tls.so.$(NVIDIA_DRIVER_VERSION) \ libglx.so.$(NVIDIA_DRIVER_VERSION):xorg/modules/extensions/ # libglx needs a symlink according to the driver README. It has no SONAME @@ -107,11 +109,13 @@ endif # X drivers ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_CUDA),y) NVIDIA_DRIVER_LIBS += \ libcuda.so.$(NVIDIA_DRIVER_VERSION) \ - libnvidia-compiler.so.$(NVIDIA_DRIVER_VERSION) \ + libcudadebugger.so.$(NVIDIA_DRIVER_VERSION) \ libnvcuvid.so.$(NVIDIA_DRIVER_VERSION) \ - libnvidia-fatbinaryloader.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-encode.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-gpucomp.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-nvvm.so.$(NVIDIA_DRIVER_VERSION) \ libnvidia-ptxjitcompiler.so.$(NVIDIA_DRIVER_VERSION) \ - libnvidia-encode.so.$(NVIDIA_DRIVER_VERSION) + libvdpau_nvidia.so.$(NVIDIA_DRIVER_VERSION) ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_CUDA_PROGS),y) NVIDIA_DRIVER_PROGS = nvidia-cuda-mps-control nvidia-cuda-mps-server endif @@ -152,8 +156,9 @@ endif # BR2_PACKAGE_NVIDIA_DRIVER_MODULE == y # virtually everywhere, and it is fine enough to provide useful options. # Except it can't extract into an existing (even empty) directory. define NVIDIA_DRIVER_EXTRACT_CMDS - $(SHELL) $(NVIDIA_DRIVER_DL_DIR)/$(NVIDIA_DRIVER_SOURCE) --extract-only --target \ - $(@D)/tmp-extract + $(SHELL) $(NVIDIA_DRIVER_DL_DIR)/$(NVIDIA_DRIVER_SOURCE) --extract-only \ + $(if $(BR2_x86_64),--no-install-compat32-libs) \ + --target $(@D)/tmp-extract chmod u+w -R $(@D) mv $(@D)/tmp-extract/* $(@D)/tmp-extract/.manifest $(@D) rm -rf $(@D)/tmp-extract -- 2.43.0 From vfazio at xes-inc.com Mon May 13 18:03:18 2024 From: vfazio at xes-inc.com (Vincent Fazio) Date: Mon, 13 May 2024 18:03:18 +0000 Subject: [Buildroot] [External] - [PATCH] package/nvidia-driver: bump version to 550.78 In-Reply-To: <20240513155907.104270-1-nick.whitlock@eizo.com> References: <20240513155907.104270-1-nick.whitlock@eizo.com> Message-ID: Nick, All, > -----Original Message----- > From: buildroot On Behalf Of Nick > Whitlock > Sent: Monday, May 13, 2024 10:59 AM > To: buildroot at buildroot.org > Cc: Yann E. MORIN ; Nick Whitlock > > Subject: [External] - [Buildroot] [PATCH] package/nvidia-driver: bump version > to 550.78 > > The NVIDIA drivers now have 64-bit and 32-bit versions bundled > into one .run file. > I believe this was always the case. See the /32 folder in the x86_64 run files for 390.x > A configuration value was also added to check if the user wants > to install GTK integration for the NVIDIA driver. > > The legacy version of libGL.so was removed in favor of the > vendor neutral version. > > This has been confirmed to work on kernel 6.1.4. > > Signed-off-by: Nick Whitlock > --- > package/nvidia-driver/Config.in | 3 ++ > package/nvidia-driver/nvidia-driver.hash | 7 ++- > package/nvidia-driver/nvidia-driver.mk | 69 +++++++++++++----------- > 3 files changed, 43 insertions(+), 36 deletions(-) > > diff --git a/package/nvidia-driver/Config.in b/package/nvidia-driver/Config.in > index a8617a939b..0fcce93e28 100644 > --- a/package/nvidia-driver/Config.in > +++ b/package/nvidia-driver/Config.in > @@ -90,4 +90,7 @@ config BR2_PACKAGE_NVIDIA_DRIVER_MODULE > provides Unified Memory access to the GPU and CPU memories for > CUDA programs. > > +config BR2_PACKAGE_NVIDIA_DRIVER_GTK > + bool "nvidia GTK acceleration" > + > endif # BR2_PACKAGE_NVIDIA_DRIVER > diff --git a/package/nvidia-driver/nvidia-driver.hash b/package/nvidia- > driver/nvidia-driver.hash > index 620112e6c8..06e3314d53 100644 > --- a/package/nvidia-driver/nvidia-driver.hash > +++ b/package/nvidia-driver/nvidia-driver.hash > @@ -1,4 +1,3 @@ > -# Locally computed > -sha256 > 94e399b459659c12b1344e8c8f4f5eee1ed5915ff459fc8bb831c9e1d44677 > db NVIDIA-Linux-x86-390.151.run > -sha256 > 6e4fd2258465f5d5527fe80abd46de925a30348b4a84658498a6d75caf42c4 > 7c NVIDIA-Linux-x86_64-390.151-no-compat32.run > -sha256 > bd28b0c5aeeb00eb11d3ec6f6f3449d4b3a40100914258332734a53527997 > 526 LICENSE > +# Locally computed: > +sha256 > 34070434527ec9d575483e7f11ca078e467e73f6defc54366ecfbdcfe4a3bf7 > 3 NVIDIA-Linux-x86_64-550.78.run > +sha256 > 5ac626496a6388d37cdd53e0300525267a4b8c89fb5980da060783afd561faf > 7 LICENSE > diff --git a/package/nvidia-driver/nvidia-driver.mk b/package/nvidia- > driver/nvidia-driver.mk > index f1217b00aa..9ea97a2a9f 100644 > --- a/package/nvidia-driver/nvidia-driver.mk > +++ b/package/nvidia-driver/nvidia-driver.mk > @@ -4,10 +4,9 @@ > # > > ############################################################ > #################### > > -NVIDIA_DRIVER_VERSION = 390.151 > -NVIDIA_DRIVER_SUFFIX = $(if $(BR2_x86_64),_64) > -NVIDIA_DRIVER_SITE = http://download.nvidia.com/XFree86/Linux- > x86$(NVIDIA_DRIVER_SUFFIX)/$(NVIDIA_DRIVER_VERSION) > -NVIDIA_DRIVER_SOURCE = NVIDIA-Linux-x86$(NVIDIA_DRIVER_SUFFIX)- > $(NVIDIA_DRIVER_VERSION)$(if $(BR2_x86_64),-no-compat32).run I think we did this so that 32bit builds didn't need to: 1) fetch the 64bit bundle 2) handle the /32 subdirectory based on the target bitness If we used the installer's native logic, IIRC, it would install both 32bit and 64bit libraries, hence we stage the files and copy out what we need. > +NVIDIA_DRIVER_VERSION = 550.78 We had some discussions about a bump a year or two ago and there was never any real consensus about what we should do. The challenge, I think, is that the 5xx series drops support for some common NVIDIA products that may be more likely be used in embedded environments (like some of the Wolf GPU products). https://www.nvidia.com/en-us/drivers/unix/legacy-gpu/ At the time, we discussed having different selectable, but mutually exclusive, driver versions so that users could choose the version that provided support for their GPU. I had intended to do this but never found the time. I was also rewriting the installer to be manifest based but that too stalled due to lack of time. > +NVIDIA_DRIVER_SITE = http://download.nvidia.com/XFree86/Linux- > x86_64/$(NVIDIA_DRIVER_VERSION) > +NVIDIA_DRIVER_SOURCE = NVIDIA-Linux-x86_64- > $(NVIDIA_DRIVER_VERSION).run > NVIDIA_DRIVER_LICENSE = NVIDIA Software License > NVIDIA_DRIVER_LICENSE_FILES = LICENSE > NVIDIA_DRIVER_REDISTRIBUTE = NO > @@ -23,30 +22,15 @@ ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_XORG),y) > NVIDIA_DRIVER_DEPENDENCIES += mesa3d-headers xlib_libX11 xlib_libXext > NVIDIA_DRIVER_PROVIDES += libgl libegl libgles > > -# libGL.so.$(NVIDIA_DRIVER_VERSION) is the legacy libGL.so library; it > -# has been replaced with libGL.so.1.0.0. Installing both is technically > -# possible, but great care must be taken to ensure they do not conflict, > -# so that EGL still works. The legacy library exposes an NVidia-specific > -# API, so it should not be needed, except for legacy, binary-only > -# applications (in other words: we don't care). > -# > -# libGL.so.1.0.0 is the new vendor-neutral library, aimed at replacing > -# the old libGL.so.$(NVIDIA_DRIVER_VERSION) library. The latter contains > -# NVidia extensions (which is deemed bad now), while the former follows > -# the newly-introduced vendor-neutral "dispatching" API/ABI: > -# https://github.com/aritger/linux-opengl-abi-proposal/blob/master/linux- > opengl-abi-proposal.txt > -# However, this is not very useful to us, as we don't support multiple > -# GL providers at the same time on the system, which this proposal is > -# aimed at supporting. > -# > -# So we only install the legacy library for now. > NVIDIA_DRIVER_LIBS_GL = \ > libGLX.so.0 \ > - libGL.so.$(NVIDIA_DRIVER_VERSION) \ > + libglxserver_nvidia.so.$(NVIDIA_DRIVER_VERSION) \ > + libGL.so.1.7.0 \ > libGLX_nvidia.so.$(NVIDIA_DRIVER_VERSION) > > NVIDIA_DRIVER_LIBS_EGL = \ > libEGL.so.1.1.0 \ > + libEGL.so.$(NVIDIA_DRIVER_VERSION) \ > libGLdispatch.so.0 \ > libEGL_nvidia.so.$(NVIDIA_DRIVER_VERSION) > > @@ -57,13 +41,18 @@ NVIDIA_DRIVER_LIBS_GLES = \ > libGLESv2_nvidia.so.$(NVIDIA_DRIVER_VERSION) > > NVIDIA_DRIVER_LIBS_MISC = \ > + libnvidia-allocator.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-api.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-cfg.so.$(NVIDIA_DRIVER_VERSION) \ > libnvidia-eglcore.so.$(NVIDIA_DRIVER_VERSION) \ > - libnvidia-egl-wayland.so.1.0.2 \ > + libnvidia-egl-gbm.so.1.1.1 \ > + libnvidia-egl-wayland.so.1.1.13 \ > + libnvidia-wayland-client.so.$(NVIDIA_DRIVER_VERSION) \ > libnvidia-glcore.so.$(NVIDIA_DRIVER_VERSION) \ > libnvidia-glsi.so.$(NVIDIA_DRIVER_VERSION) \ > - tls/libnvidia-tls.so.$(NVIDIA_DRIVER_VERSION) \ > - libvdpau_nvidia.so.$(NVIDIA_DRIVER_VERSION):vdpau/ \ > - libnvidia-ml.so.$(NVIDIA_DRIVER_VERSION) > + libnvidia-glvkspirv.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-ml.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-rtcore.so.$(NVIDIA_DRIVER_VERSION) > > NVIDIA_DRIVER_LIBS += \ > $(NVIDIA_DRIVER_LIBS_GL) \ > @@ -87,13 +76,26 @@ endef > # wants to run a third-party program developed under such an agreement). > ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_PRIVATE_LIBS),y) > NVIDIA_DRIVER_LIBS += \ > + libnvidia-fbc.so.$(NVIDIA_DRIVER_VERSION) \ > libnvidia-ifr.so.$(NVIDIA_DRIVER_VERSION) \ > - libnvidia-fbc.so.$(NVIDIA_DRIVER_VERSION) > + libnvidia-ngx.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-opticalflow.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvoptix.so.$(NVIDIA_DRIVER_VERSION) > +endif > + > +# Include GTK libraries (if required) > +ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_GTK),y) > +NVIDIA_DRIVER_LIBS += \ > + libnvidia-gtk2.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-gtk3.so.$(NVIDIA_DRIVER_VERSION) > endif > > # We refer to the destination path; the origin file has no directory > component > NVIDIA_DRIVER_LIBS += \ > nvidia_drv.so:xorg/modules/drivers/ \ > + libnvidia-pkcs11.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-pkcs11-openssl3.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-tls.so.$(NVIDIA_DRIVER_VERSION) \ > libglx.so.$(NVIDIA_DRIVER_VERSION):xorg/modules/extensions/ > > # libglx needs a symlink according to the driver README. It has no SONAME > @@ -107,11 +109,13 @@ endif # X drivers > ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_CUDA),y) > NVIDIA_DRIVER_LIBS += \ > libcuda.so.$(NVIDIA_DRIVER_VERSION) \ > - libnvidia-compiler.so.$(NVIDIA_DRIVER_VERSION) \ > + libcudadebugger.so.$(NVIDIA_DRIVER_VERSION) \ > libnvcuvid.so.$(NVIDIA_DRIVER_VERSION) \ > - libnvidia-fatbinaryloader.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-encode.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-gpucomp.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-nvvm.so.$(NVIDIA_DRIVER_VERSION) \ > libnvidia-ptxjitcompiler.so.$(NVIDIA_DRIVER_VERSION) \ > - libnvidia-encode.so.$(NVIDIA_DRIVER_VERSION) > + libvdpau_nvidia.so.$(NVIDIA_DRIVER_VERSION) > ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_CUDA_PROGS),y) > NVIDIA_DRIVER_PROGS = nvidia-cuda-mps-control nvidia-cuda-mps-server > endif > @@ -152,8 +156,9 @@ endif # BR2_PACKAGE_NVIDIA_DRIVER_MODULE == > y > # virtually everywhere, and it is fine enough to provide useful options. > # Except it can't extract into an existing (even empty) directory. > define NVIDIA_DRIVER_EXTRACT_CMDS > - $(SHELL) $(NVIDIA_DRIVER_DL_DIR)/$(NVIDIA_DRIVER_SOURCE) -- > extract-only --target \ > - $(@D)/tmp-extract > + $(SHELL) $(NVIDIA_DRIVER_DL_DIR)/$(NVIDIA_DRIVER_SOURCE) -- > extract-only \ > + $(if $(BR2_x86_64),--no-install-compat32-libs) \ > + --target $(@D)/tmp-extract > chmod u+w -R $(@D) > mv $(@D)/tmp-extract/* $(@D)/tmp-extract/.manifest $(@D) > rm -rf $(@D)/tmp-extract > -- > 2.43.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot > CAUTION: This email originated from outside of the organization. Do not click > links or open attachments unless you recognize the sender and know the > content is safe. From thomas.petazzoni at bootlin.com Mon May 13 19:28:41 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:28:41 +0200 Subject: [Buildroot] [git commit] package/basu: new package Message-ID: <20240513192936.3DCDC870EF@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=9fcf0fd80180c6568c0516fa3b8a0d2cf5f1078e branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master basu is the sd-bus library, extracted from systemd. Some projects rely on the sd-bus library for DBus support. However not all systems have systemd or elogind installed. This library provides just sd-bus (and the busctl utility). Signed-off-by: Sergey Bobrenok Signed-off-by: Thomas Petazzoni --- DEVELOPERS | 1 + package/Config.in | 1 + ...-Disable-stack-protection-for-Buildroot-p.patch | 39 ++++++++++++++++++++++ ...c-Use-F_ADD_SEALS-definition-from-missing.patch | 34 +++++++++++++++++++ package/basu/Config.in | 23 +++++++++++++ package/basu/basu.hash | 4 +++ package/basu/basu.mk | 28 ++++++++++++++++ 7 files changed, 130 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index d653648718..ad03c26ea4 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2835,6 +2835,7 @@ F: package/systemd F: support/scripts/pkg-stats N: Sergey Bobrenok +F: package/basu/ F: package/sdbus-cpp/ N: Sergey Matyukevich diff --git a/package/Config.in b/package/Config.in index c29b4a5101..768103e0c4 100644 --- a/package/Config.in +++ b/package/Config.in @@ -2103,6 +2103,7 @@ menu "Other" source "package/armadillo/Config.in" source "package/atf/Config.in" source "package/avro-c/Config.in" + source "package/basu/Config.in" source "package/bctoolbox/Config.in" source "package/bdwgc/Config.in" source "package/belr/Config.in" diff --git a/package/basu/0001-meson.build-Disable-stack-protection-for-Buildroot-p.patch b/package/basu/0001-meson.build-Disable-stack-protection-for-Buildroot-p.patch new file mode 100644 index 0000000000..34dd3b16b9 --- /dev/null +++ b/package/basu/0001-meson.build-Disable-stack-protection-for-Buildroot-p.patch @@ -0,0 +1,39 @@ +From 6133c87299bce32c13dcf1692842ea5f2890c5ad Mon Sep 17 00:00:00 2001 +From: Sergey Bobrenok +Date: Wed, 28 Feb 2024 16:29:17 +0300 +Subject: [PATCH] meson.build: Disable stack protection for Buildroot packaging + +In Buildroot, the SSP flags are passed via the wrapper, and only flags +supported by the toolchain will be used. So the SSP flags can be +safely removed from the build files. + +Fixes: + src/basic/libbasic.a.p/log.c.o: in function `write_to_console.isra.0': + log.c:(.text.write_to_console.isra.0+0x154): undefined reference to `__stack_chk_fail_local' + +Upstream: N/A [Buildroot specific] + +Signed-off-by: Sergey Bobrenok +--- + meson.build | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/meson.build b/meson.build +index 6f79707..51fd400 100644 +--- a/meson.build ++++ b/meson.build +@@ -75,9 +75,6 @@ possible_cc_flags = [ + '-fdiagnostics-show-option', + '-fno-strict-aliasing', + '-fvisibility=hidden', +- '-fstack-protector', +- '-fstack-protector-strong', +- '--param=ssp-buffer-size=4', + ] + + # --as-needed and --no-undefined are provided by meson by default, + +base-commit: 684a41d68cfbb05e38aacb60a8548e21ddfbecdb +-- +2.43.2 + diff --git a/package/basu/0002-memfd-util.c-Use-F_ADD_SEALS-definition-from-missing.patch b/package/basu/0002-memfd-util.c-Use-F_ADD_SEALS-definition-from-missing.patch new file mode 100644 index 0000000000..69e899279f --- /dev/null +++ b/package/basu/0002-memfd-util.c-Use-F_ADD_SEALS-definition-from-missing.patch @@ -0,0 +1,34 @@ +From 8e4960e8b9d11d9be96e83b02bd3b08178ddce1b Mon Sep 17 00:00:00 2001 +From: Sergey Bobrenok +Date: Wed, 28 Feb 2024 20:42:19 +0300 +Subject: [PATCH basu] memfd-util.c: Use F_ADD_SEALS definition from missing.h + +uClibc and glibc (until version 2.27, 2018) implementations don't +support F_ADD_SEALS and other F_SEAL_xxx flags. +'missing.h' was removed from 'memfd-util.c' in 37dbb2fcb ("Remove +useless includes"). + +Upstream: https://lists.sr.ht/~emersion/public-inbox/patches/49899 + +Signed-off-by: Sergey Bobrenok +--- + src/basic/memfd-util.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/basic/memfd-util.c b/src/basic/memfd-util.c +index 89893ba..7e535c6 100644 +--- a/src/basic/memfd-util.c ++++ b/src/basic/memfd-util.c +@@ -7,6 +7,7 @@ + + #include "alloc-util.h" + #include "memfd-util.h" ++#include "missing.h" + + int memfd_set_sealed(int fd) { + #if defined(__FreeBSD__) && __FreeBSD__ < 13 + +base-commit: 684a41d68cfbb05e38aacb60a8548e21ddfbecdb +-- +2.44.0 + diff --git a/package/basu/Config.in b/package/basu/Config.in new file mode 100644 index 0000000000..5875aa7775 --- /dev/null +++ b/package/basu/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_BASU + bool "basu" + depends on BR2_USE_MMU # dbus + depends on BR2_USE_WCHAR # uchar.h + depends on BR2_ENABLE_LOCALE # locale_t + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # __sync_add_and_fetch + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # F_ADD_SEALS + select BR2_PACKAGE_DBUS if !BR2_PACKAGE_DBUS_BROKER # runtime + help + basu is the sd-bus library, extracted from systemd. + + Some projects rely on the sd-bus library for DBus support. + However not all systems have systemd or elogind installed. + This library provides just sd-bus (and the busctl utility). + + https://git.sr.ht/~emersion/basu + +comment "basu needs a toolchain w/ wchar, locale, threads, headers >= 3.17" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_ENABLE_LOCALE || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 diff --git a/package/basu/basu.hash b/package/basu/basu.hash new file mode 100644 index 0000000000..f369286337 --- /dev/null +++ b/package/basu/basu.hash @@ -0,0 +1,4 @@ +# From https://git.sr.ht/~emersion/basu/refs/v0.2.1 +sha256 d9b373a9fcb5d5eb5f6c1c56355f76edb7f2f52bc744570e80604e83455a19bd basu-0.2.1.tar.gz +# Locally computed: +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENSE.LGPL2.1 diff --git a/package/basu/basu.mk b/package/basu/basu.mk new file mode 100644 index 0000000000..7bd1923646 --- /dev/null +++ b/package/basu/basu.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# basu +# +################################################################################ + +BASU_VERSION = 0.2.1 +BASU_SITE = https://git.sr.ht/~emersion/basu/refs/download/v$(BASU_VERSION) +BASU_INSTALL_STAGING = YES +BASU_LICENSE = LGPL-2.1+ +BASU_LICENSE_FILES = LICENSE.LGPL2.1 +BASU_DEPENDENCIES = host-gperf + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +BASU_DEPENDENCIES += libcap +BASU_CONF_OPTS += -Dlibcap=enabled +else +BASU_CONF_OPTS += -Dlibcap=disabled +endif + +ifeq ($(BR2_PACKAGE_AUDIT),y) +BASU_DEPENDENCIES += audit +BASU_CONF_OPTS += -Daudit=enabled +else +BASU_CONF_OPTS += -Daudit=disabled +endif + +$(eval $(meson-package)) From thomas.petazzoni at bootlin.com Mon May 13 19:30:57 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:30:57 +0200 Subject: [Buildroot] [PATCH 1/1] package/basu: new package In-Reply-To: <20240229192138.21843-1-bobrofon@gmail.com> References: <20240229192138.21843-1-bobrofon@gmail.com> Message-ID: <20240513213057.2a0eb060@windsurf> On Thu, 29 Feb 2024 22:21:38 +0300 Sergey Bobrenok wrote: > basu is the sd-bus library, extracted from systemd. > > Some projects rely on the sd-bus library for DBus support. However not > all systems have systemd or elogind installed. This library provides > just sd-bus (and the busctl utility). > > Signed-off-by: Sergey Bobrenok > --- > DEVELOPERS | 1 + > package/Config.in | 1 + > ...ble-stack-protection-for-Buildroot-p.patch | 39 +++++++++++++++++++ > ...-F_ADD_SEALS-definition-from-missing.patch | 34 ++++++++++++++++ > package/basu/Config.in | 23 +++++++++++ > package/basu/basu.hash | 4 ++ > package/basu/basu.mk | 28 +++++++++++++ > 7 files changed, 130 insertions(+) > create mode 100644 package/basu/0001-meson.build-Disable-stack-protection-for-Buildroot-p.patch > create mode 100644 package/basu/0002-memfd-util.c-Use-F_ADD_SEALS-definition-from-missing.patch > create mode 100644 package/basu/Config.in > create mode 100644 package/basu/basu.hash > create mode 100644 package/basu/basu.mk Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 19:35:12 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:35:12 +0200 Subject: [Buildroot] [PATCH 1/1] pacakge/smcroute: bump to version v2.5.7 In-Reply-To: <20240513112205.985165-1-troglobit@gmail.com> References: <20240513112205.985165-1-troglobit@gmail.com> Message-ID: <20240513213512.55e93cb6@windsurf> On Mon, 13 May 2024 13:22:05 +0200 Joachim Wiberg wrote: > Fixes segfault on kernel without IPv6 support. For details, see > https://github.com/troglobit/smcroute/releases/tag/2.5.7 > > Signed-off-by: Joachim Wiberg > --- > package/smcroute/smcroute.hash | 5 ++--- > package/smcroute/smcroute.mk | 2 +- > 2 files changed, 3 insertions(+), 4 deletions(-) Applied to master after fixing the typo in the commit title, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 19:35:52 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:35:52 +0200 Subject: [Buildroot] [PATCH] package/sdl2: bump version to 2.30.3 In-Reply-To: <20240513113936.7471-1-mf@go-sys.de> References: <20240513113936.7471-1-mf@go-sys.de> Message-ID: <20240513213552.5e09055f@windsurf> On Mon, 13 May 2024 13:39:36 +0200 Michael Fischer wrote: > Signed-off-by: Michael Fischer > --- > package/sdl2/sdl2.hash | 4 ++-- > package/sdl2/sdl2.mk | 2 +- > 2 files changed, 3 insertions(+), 3 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 19:36:12 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:36:12 +0200 Subject: [Buildroot] [PATCH] configs/freescale_imx93evk: Update to NXP lf-6.6.3-1.0.0 In-Reply-To: <20240513123442.213242-1-festevam@gmail.com> References: <20240513123442.213242-1-festevam@gmail.com> Message-ID: <20240513213612.6a1dcf2f@windsurf> On Mon, 13 May 2024 09:34:42 -0300 Fabio Estevam wrote: > Update kernel, TF-A and U-Boot repos to the NXP lf-6.6.3-1.0.0 versions. > > Signed-off-by: Fabio Estevam > --- > configs/freescale_imx93evk_defconfig | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 19:36:01 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:36:01 +0200 Subject: [Buildroot] [git commit] configs/freescale_imx93evk: Update to NXP lf-6.6.3-1.0.0 Message-ID: <20240513193617.04CF9870EE@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=22fd54b737d81ceb8b1cb0ccb0896c0b914b02cd branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Update kernel, TF-A and U-Boot repos to the NXP lf-6.6.3-1.0.0 versions. Signed-off-by: Fabio Estevam Signed-off-by: Thomas Petazzoni --- configs/freescale_imx93evk_defconfig | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/configs/freescale_imx93evk_defconfig b/configs/freescale_imx93evk_defconfig index fa16967884..f30bafd9a2 100644 --- a/configs/freescale_imx93evk_defconfig +++ b/configs/freescale_imx93evk_defconfig @@ -1,13 +1,13 @@ BR2_aarch64=y BR2_cortex_a55=y BR2_ARM_FPU_VFPV4D16=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y BR2_GLOBAL_PATCH_DIR="board/freescale/imx93evk/patches" BR2_TARGET_GENERIC_GETTY_PORT="ttyLP0" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/imx9-bootloader-prepare.sh board/freescale/common/imx/post-image.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,linux-imx,lf-6.1.55-2.2.0)/linux-imx-lf-6.1.55-2.2.0.tar.gz" +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,linux-imx,lf-6.6.3-1.0.0)/linux-imx-lf-6.6.3-1.0.0.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="imx_v8" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx93-11x11-evk" @@ -21,13 +21,13 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_ROOTFS_EXT2_SIZE="120M" BR2_TARGET_ARM_TRUSTED_FIRMWARE=y BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y -BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,imx-atf,lf-6.1.55-2.2.0)/imx-atf-lf-6.1.55-2.2.0.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,imx-atf,lf-6.6.3-1.0.0)/imx-atf-lf-6.6.3-1.0.0.tar.gz" BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx93" BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_TARBALL=y -BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,uboot-imx,lf-6.1.55-2.2.0)/uboot-imx-lf-6.1.55-2.2.0.tar.gz" +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,uboot-imx,lf-6.6.3-1.0.0)/uboot-imx-lf-6.6.3-1.0.0.tar.gz" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx93_11x11_evk" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_NEEDS_OPENSSL=y From thomas.petazzoni at bootlin.com Mon May 13 19:31:24 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:31:24 +0200 Subject: [Buildroot] [git commit] package/smcroute: bump to version v2.5.7 Message-ID: <20240513193616.DF7118710E@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=86a5cd42db6acc1ee4f312a55b40ab38f8743d72 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fixes segfault on kernel without IPv6 support. For details, see https://github.com/troglobit/smcroute/releases/tag/2.5.7 Signed-off-by: Joachim Wiberg Signed-off-by: Thomas Petazzoni --- package/smcroute/smcroute.hash | 5 ++--- package/smcroute/smcroute.mk | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/package/smcroute/smcroute.hash b/package/smcroute/smcroute.hash index b472dfbc04..d51745c076 100644 --- a/package/smcroute/smcroute.hash +++ b/package/smcroute/smcroute.hash @@ -1,5 +1,4 @@ -# Hash from https://github.com/troglobit/smcroute/releases/download/2.5.6/smcroute-2.5.6.tar.gz.sha256 -sha256 0be38f617e322daafaa941c02423239f5c117b940cf0f45bacadb6733c4b3916 smcroute-2.5.6.tar.gz - +# Hash from https://github.com/troglobit/smcroute/releases/ generated by GitHub +sha256 7d2c83e11908fe37844fa9b49ae50924555c4e1bb440fb059a95c94e442ea8a5 smcroute-2.5.7.tar.gz # Locally generated sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/smcroute/smcroute.mk b/package/smcroute/smcroute.mk index 0c4f88ab1b..f7476f1100 100644 --- a/package/smcroute/smcroute.mk +++ b/package/smcroute/smcroute.mk @@ -4,7 +4,7 @@ # ################################################################################ -SMCROUTE_VERSION = 2.5.6 +SMCROUTE_VERSION = 2.5.7 SMCROUTE_SITE = https://github.com/troglobit/smcroute/releases/download/$(SMCROUTE_VERSION) SMCROUTE_LICENSE = GPL-2.0+ SMCROUTE_LICENSE_FILES = COPYING From thomas.petazzoni at bootlin.com Mon May 13 19:35:00 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:35:00 +0200 Subject: [Buildroot] [git commit] package/sdl2: bump version to 2.30.3 Message-ID: <20240513193616.EAA548710F@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=19d12dffc4550aaec50b3d2ffcdc67746fff60f4 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Michael Fischer Signed-off-by: Thomas Petazzoni --- package/sdl2/sdl2.hash | 4 ++-- package/sdl2/sdl2.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/sdl2/sdl2.hash b/package/sdl2/sdl2.hash index 3c4b06cf3e..3c72d1d6d1 100644 --- a/package/sdl2/sdl2.hash +++ b/package/sdl2/sdl2.hash @@ -1,4 +1,4 @@ -# Locally calculated after checking http://www.libsdl.org/release/SDL2-2.30.2.tar.gz.sig -sha256 891d66ac8cae51361d3229e3336ebec1c407a8a2a063b61df14f5fdf3ab5ac31 SDL2-2.30.2.tar.gz +# Locally calculated after checking http://www.libsdl.org/release/SDL2-2.30.3.tar.gz.sig +sha256 820440072f8f5b50188c1dae104f2ad25984de268785be40c41a099a510f0aec SDL2-2.30.3.tar.gz # Locally calculated sha256 9b9e1764f06701bcf7ce21e942c682d5921ba0900c6fca760321b1c8837a9662 LICENSE.txt diff --git a/package/sdl2/sdl2.mk b/package/sdl2/sdl2.mk index 70f765f0ea..b5b0fb49e1 100644 --- a/package/sdl2/sdl2.mk +++ b/package/sdl2/sdl2.mk @@ -4,7 +4,7 @@ # ################################################################################ -SDL2_VERSION = 2.30.2 +SDL2_VERSION = 2.30.3 SDL2_SOURCE = SDL2-$(SDL2_VERSION).tar.gz SDL2_SITE = http://www.libsdl.org/release SDL2_LICENSE = Zlib From thomas.petazzoni at bootlin.com Mon May 13 19:36:49 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:36:49 +0200 Subject: [Buildroot] [PATCH] configs/freescale_imx93evk: Update to NXP lf-6.6.3-1.0.0 In-Reply-To: <20240513123442.213242-1-festevam@gmail.com> References: <20240513123442.213242-1-festevam@gmail.com> Message-ID: <20240513213649.5624a768@windsurf> On Mon, 13 May 2024 09:34:42 -0300 Fabio Estevam wrote: > Update kernel, TF-A and U-Boot repos to the NXP lf-6.6.3-1.0.0 versions. > > Signed-off-by: Fabio Estevam > --- > configs/freescale_imx93evk_defconfig | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) BTW, it would be good to make use of BR2_DOWNLOAD_FORCE_CHECK_HASHES=y in this defconfig (and in fact in the other defconfigs you maintain as well!). Thanks! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 19:36:58 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:36:58 +0200 Subject: [Buildroot] [git commit] package/network-manager-openvpn: bump to version 1.11.0 Message-ID: <20240513193737.48B3D87114@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=bd4efc86c90b85fbd5825f6b2eab49790e09f601 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master https://download.gnome.org/sources/NetworkManager-openvpn/1.11/NetworkManager-openvpn-1.11.0.news Signed-off-by: Alex Michel Signed-off-by: Thomas Petazzoni --- package/network-manager-openvpn/network-manager-openvpn.hash | 4 ++-- package/network-manager-openvpn/network-manager-openvpn.mk | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/network-manager-openvpn/network-manager-openvpn.hash b/package/network-manager-openvpn/network-manager-openvpn.hash index 11fb28f8c8..59d03fae2a 100644 --- a/package/network-manager-openvpn/network-manager-openvpn.hash +++ b/package/network-manager-openvpn/network-manager-openvpn.hash @@ -1,4 +1,4 @@ -# From https://download.gnome.org/sources/NetworkManager-openvpn/1.10/NetworkManager-openvpn-1.10.2.sha256sum -sha256 62f0f2a8782221b923f212ac2a8ebbc1002efd6a90ee945dad4adfb56d076d21 NetworkManager-openvpn-1.10.2.tar.xz +# From https://download.gnome.org/sources/NetworkManager-openvpn/1.11/NetworkManager-openvpn-1.11.0.sha256sum +sha256 2128de06f91b33c13d63cdaa6e178bc1ca57fc770cde3bc7c24891f4d9824501 NetworkManager-openvpn-1.11.0.tar.xz # Locally computed sha256 c39e345d992dfba62db265f8c6d6ff1d90c61d92876635ae05adbfa2f45fff46 COPYING diff --git a/package/network-manager-openvpn/network-manager-openvpn.mk b/package/network-manager-openvpn/network-manager-openvpn.mk index ccc86e45f7..f39edf3209 100644 --- a/package/network-manager-openvpn/network-manager-openvpn.mk +++ b/package/network-manager-openvpn/network-manager-openvpn.mk @@ -4,8 +4,8 @@ # ################################################################################ -NETWORK_MANAGER_OPENVPN_VERSION_MAJOR = 1.10 -NETWORK_MANAGER_OPENVPN_VERSION = $(NETWORK_MANAGER_OPENVPN_VERSION_MAJOR).2 +NETWORK_MANAGER_OPENVPN_VERSION_MAJOR = 1.11 +NETWORK_MANAGER_OPENVPN_VERSION = $(NETWORK_MANAGER_OPENVPN_VERSION_MAJOR).0 NETWORK_MANAGER_OPENVPN_SOURCE = NetworkManager-openvpn-$(NETWORK_MANAGER_OPENVPN_VERSION).tar.xz NETWORK_MANAGER_OPENVPN_SITE = https://download.gnome.org/sources/NetworkManager-openvpn/$(NETWORK_MANAGER_OPENVPN_VERSION_MAJOR) NETWORK_MANAGER_OPENVPN_DEPENDENCIES = network-manager openvpn From thomas.petazzoni at bootlin.com Mon May 13 19:37:34 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:37:34 +0200 Subject: [Buildroot] [PATCH 1/1] package/network-manager-openvpn: bump to version 1.11.0 In-Reply-To: References: Message-ID: <20240513213734.38e900ba@windsurf> On Mon, 13 May 2024 12:42:52 +0000 Michel Alex wrote: > https://download.gnome.org/sources/NetworkManager-openvpn/1.11/NetworkManager-openvpn-1.11.0.news > > Signed-off-by: Alex Michel > --- > package/network-manager-openvpn/network-manager-openvpn.hash | 4 ++-- > package/network-manager-openvpn/network-manager-openvpn.mk | 4 ++-- > 2 files changed, 4 insertions(+), 4 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 19:38:09 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:38:09 +0200 Subject: [Buildroot] [git commit] package/gnuplot: bump version to 6.0.0 Message-ID: <20240513194643.EC3438711C@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=5f11ce4aeaba99917778c384b236d267e78a7b29 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master 0001-configure-add-without-demo-option: adapt patch to 6.0.0 version Signed-off-by: Michael Fischer Signed-off-by: Thomas Petazzoni --- .../0001-configure-add-without-demo-option.patch | 42 +++++++++------------- package/gnuplot/gnuplot.hash | 8 ++--- package/gnuplot/gnuplot.mk | 2 +- 3 files changed, 21 insertions(+), 31 deletions(-) diff --git a/package/gnuplot/0001-configure-add-without-demo-option.patch b/package/gnuplot/0001-configure-add-without-demo-option.patch index a557e279bc..4eb9833fe7 100644 --- a/package/gnuplot/0001-configure-add-without-demo-option.patch +++ b/package/gnuplot/0001-configure-add-without-demo-option.patch @@ -8,32 +8,19 @@ Signed-off-by: Thomas Petazzoni Signed-off-by: Vicente Olivert Riera [Michael: adapt patch to 5.4.0 version] Signed-off-by: Michael Fischer +[Michael: adapt patch to 6.0.0 version] +Signed-off-by: Michael Fischer -diff -Naur a/configure.ac b/configure.ac ---- a/configure.ac 2020-07-12 02:29:47.000000000 +0200 -+++ b/configure.ac 2020-08-06 14:21:17.918756893 +0200 -@@ -713,6 +713,17 @@ - [ Define if you want to read .gnuplot from current directory (SECURITY RISK!).]) - fi +--- a/configure.ac 2023-12-19 00:28:58.000000000 +0100 ++++ b/configure.ac 2024-05-13 15:41:18.313920528 +0200 +@@ -715,6 +715,32 @@ + + dnl Process rest of with and enable options +dnl Whether we want to build the doc files +dnl Does nothing here, is passed on to the doc subdir +AC_ARG_ENABLE(doc,dnl +[ --disable-doc do not build doc files]) -+ -+dnl Whether we want to build the demo files -+dnl Does nothing here, is passed on to the demo subdir -+AC_ARG_ENABLE(demo,dnl -+[ --disable-demo do not build demo files]) -+ -+ - dnl Sort help/subtopic tables by row or column - AC_ARG_WITH(row-help,dnl - [ --with-row-help format help and subtopic tables by row (default) -@@ -1095,6 +1106,24 @@ - AC_DEFINE_UNQUOTED([DIST_CONTACT],["$DIST_CONTACT"],[Contact address for modified and binary distributed gnuplot versions]) - fi - +dnl build doc files +if test "$enable_doc" != no; then + AC_CONFIG_SUBDIRS(docs) @@ -43,6 +30,10 @@ diff -Naur a/configure.ac b/configure.ac +fi +AC_SUBST(DOCSUBDIR) + ++dnl Whether we want to build the demo files ++dnl Does nothing here, is passed on to the demo subdir ++AC_ARG_ENABLE(demo,dnl ++[ --disable-demo do not build demo files]) +dnl build demo files +if test "$enable_demo" != no; then + AC_CONFIG_SUBDIRS(demo) @@ -52,12 +43,11 @@ diff -Naur a/configure.ac b/configure.ac +fi +AC_SUBST(DEMOSUBDIR) + - dnl Substitute variables - AC_SUBST(PACKAGE) - AC_SUBST(VERSION_MAJOR) -diff -Naur a/Makefile.am b/Makefile.am ---- a/Makefile.am 2020-03-31 19:28:16.000000000 +0200 -+++ b/Makefile.am 2020-08-06 14:34:12.995097799 +0200 + dnl without-extra-coordinate may leave a hole in "struct coordinate" + AC_ARG_WITH(extra-coordinate,dnl + [ --without-extra-coordinate leave possible hole in struct coordinate],,) +--- a/Makefile.am 2023-12-19 00:28:58.000000000 +0100 ++++ b/Makefile.am 2024-05-13 15:54:21.189906680 +0200 @@ -1,7 +1,7 @@ ## Process this file with automake to produce Makefile.in -*-Makefile-*- AUTOMAKE_OPTIONS = foreign diff --git a/package/gnuplot/gnuplot.hash b/package/gnuplot/gnuplot.hash index 39dacd50a4..dd587a8220 100644 --- a/package/gnuplot/gnuplot.hash +++ b/package/gnuplot/gnuplot.hash @@ -1,6 +1,6 @@ -# From https://sourceforge.net/projects/gnuplot/files/gnuplot/5.4.10/ -md5 334851e63450362bdb95e67fa8a23665 gnuplot-5.4.10.tar.gz -sha1 9981e5b0111c07d376deef571ccc75ce4b4ebbd2 gnuplot-5.4.10.tar.gz +# From https://sourceforge.net/projects/gnuplot/files/gnuplot/6.0.0/ +md5 10246eb96bbf3a151d6eb9bbcc223e4e gnuplot-6.0.0.tar.gz +sha1 3abea0cccad89b0c8fb6619ad51b83a971ee24b9 gnuplot-6.0.0.tar.gz # Locally computed -sha256 975d8c1cc2c41c7cedc4e323aff035d977feb9a97f0296dd2a8a66d197a5b27c gnuplot-5.4.10.tar.gz +sha256 635a28f0993f6ab0d1179e072ad39b8139d07f51237f841d93c6c2ff4b1758ec gnuplot-6.0.0.tar.gz sha256 895928ec0735cca1c8cec42656c7e314a065d0242813bb8693c0c1bf61fd4e4d Copyright diff --git a/package/gnuplot/gnuplot.mk b/package/gnuplot/gnuplot.mk index 91e9bfb9bf..26b2daaf24 100644 --- a/package/gnuplot/gnuplot.mk +++ b/package/gnuplot/gnuplot.mk @@ -4,7 +4,7 @@ # ################################################################################ -GNUPLOT_VERSION = 5.4.10 +GNUPLOT_VERSION = 6.0.0 GNUPLOT_SITE = http://downloads.sourceforge.net/project/gnuplot/gnuplot/$(GNUPLOT_VERSION) GNUPLOT_LICENSE = gnuplot license (open source) GNUPLOT_LICENSE_FILES = Copyright From thomas.petazzoni at bootlin.com Mon May 13 19:47:07 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:47:07 +0200 Subject: [Buildroot] [PATCH] package/gnuplot: bump version to 6.0.0 In-Reply-To: <20240513142612.21594-1-mf@go-sys.de> References: <20240513142612.21594-1-mf@go-sys.de> Message-ID: <20240513214707.510b8f00@windsurf> On Mon, 13 May 2024 16:26:12 +0200 Michael Fischer wrote: > 0001-configure-add-without-demo-option: adapt patch to 6.0.0 version It would be very nice to submit this patch to the upstream gnuplot maintainers :-) > Signed-off-by: Michael Fischer Nevertheless, patch applied, thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 19:48:47 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:48:47 +0200 Subject: [Buildroot] [git commit] package/duma: set HOST_CFLAGS Message-ID: <20240513194859.7ADC687121@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=b8c70f67017ebe08459992ac575ae4989243c232 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Set HOST_CFLAGS to avoid the following build failure raised since bump to version 2.5.21 in commit af2cd694e3903131d6e2f00646adfa83a89a23e2: /usr/bin/gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -mlongcalls -mauto-litpools -O2 -g0 -c createconf.c -o createconf.o gcc: error: unrecognized command-line option '-mlongcalls' gcc: error: unrecognized command-line option '-mauto-litpools' Fixes: af2cd694e3903131d6e2f00646adfa83a89a23e2 - http://autobuild.buildroot.org/results/28be2acc6d58754c7431df81d0b63b30e6af8554 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/duma/duma.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/package/duma/duma.mk b/package/duma/duma.mk index 6bbdf41f4a..80fe8a5d64 100644 --- a/package/duma/duma.mk +++ b/package/duma/duma.mk @@ -20,6 +20,7 @@ define DUMA_BUILD_CMDS $(TARGET_MAKE_ENV) $(MAKE1) $(TARGET_CONFIGURE_OPTS) \ OS=linux \ DUMA_OPTIONS="$(DUMA_OPTIONS)" \ + HOST_CFLAGS="$(HOST_CFLAGS)" \ CPPFLAGS="$(TARGET_CXXFLAGS) -std=c++11" -C $(@D) endef From thomas.petazzoni at bootlin.com Mon May 13 19:48:58 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:48:58 +0200 Subject: [Buildroot] [PATCH 1/1] package/duma: set HOST_CFLAGS In-Reply-To: <20240512203452.836377-1-fontaine.fabrice@gmail.com> References: <20240512203452.836377-1-fontaine.fabrice@gmail.com> Message-ID: <20240513214858.0d76a1ff@windsurf> On Sun, 12 May 2024 22:34:52 +0200 Fabrice Fontaine wrote: > Set HOST_CFLAGS to avoid the following build failure raised since bump > to version 2.5.21 in commit af2cd694e3903131d6e2f00646adfa83a89a23e2: > > /usr/bin/gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -mlongcalls -mauto-litpools -O2 -g0 -c createconf.c -o createconf.o > gcc: error: unrecognized command-line option '-mlongcalls' > gcc: error: unrecognized command-line option '-mauto-litpools' > > Fixes: af2cd694e3903131d6e2f00646adfa83a89a23e2 > - http://autobuild.buildroot.org/results/28be2acc6d58754c7431df81d0b63b30e6af8554 > > Signed-off-by: Fabrice Fontaine > --- > package/duma/duma.mk | 1 + > 1 file changed, 1 insertion(+) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From ju.o at free.fr Mon May 13 19:54:57 2024 From: ju.o at free.fr (Julien Olivain) Date: Mon, 13 May 2024 21:54:57 +0200 Subject: [Buildroot] [PATCH] package/gnuplot: bump version to 6.0.0 In-Reply-To: <20240513142612.21594-1-mf@go-sys.de> References: <20240513142612.21594-1-mf@go-sys.de> Message-ID: <539ed29ae939926055a69e93fe984721@free.fr> Hi Michael, Thanks for your patch! Testing this patch on branch master at commit bd4efc8 with the command: support/testing/run-tests \ -k -d dl -o output_folder \ tests.package.test_gnuplot fails with output: /buildroot/output_folder/TestGnuplot/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-gnueabi/12.3.0/../../.. /../arm-buildroot-linux-gnueabi/bin/ld: history.o: in function 'read_history': history.c:(.text+0x78): undefined reference to 'gp_read_history' Removing --disable-history-file in GNUPLOT_CONF_OPTS workaround the issue. Maybe this is an upstream bug? Could you investigate this please? On 13/05/2024 16:26, Michael Fischer wrote: > 0001-configure-add-without-demo-option: adapt patch to 6.0.0 version > > Signed-off-by: Michael Fischer > --- > ...01-configure-add-without-demo-option.patch | 42 +++++++------------ > package/gnuplot/gnuplot.hash | 8 ++-- > package/gnuplot/gnuplot.mk | 2 +- > 3 files changed, 21 insertions(+), 31 deletions(-) > > diff --git > a/package/gnuplot/0001-configure-add-without-demo-option.patch > b/package/gnuplot/0001-configure-add-without-demo-option.patch > index a557e279bc..4eb9833fe7 100644 > --- a/package/gnuplot/0001-configure-add-without-demo-option.patch > +++ b/package/gnuplot/0001-configure-add-without-demo-option.patch > @@ -8,32 +8,19 @@ Signed-off-by: Thomas Petazzoni > > Signed-off-by: Vicente Olivert Riera > [Michael: adapt patch to 5.4.0 version] > Signed-off-by: Michael Fischer > +[Michael: adapt patch to 6.0.0 version] > +Signed-off-by: Michael Fischer > > -diff -Naur a/configure.ac b/configure.ac > ---- a/configure.ac 2020-07-12 02:29:47.000000000 +0200 > -+++ b/configure.ac 2020-08-06 14:21:17.918756893 +0200 > -@@ -713,6 +713,17 @@ > - [ Define if you want to read .gnuplot from current > directory (SECURITY RISK!).]) > - fi > +--- a/configure.ac 2023-12-19 00:28:58.000000000 +0100 > ++++ b/configure.ac 2024-05-13 15:41:18.313920528 +0200 > +@@ -715,6 +715,32 @@ > + > + dnl Process rest of with and enable options > > +dnl Whether we want to build the doc files > +dnl Does nothing here, is passed on to the doc subdir > +AC_ARG_ENABLE(doc,dnl > +[ --disable-doc do not build doc files]) > -+ > -+dnl Whether we want to build the demo files > -+dnl Does nothing here, is passed on to the demo subdir > -+AC_ARG_ENABLE(demo,dnl > -+[ --disable-demo do not build demo files]) > -+ > -+ > - dnl Sort help/subtopic tables by row or column > - AC_ARG_WITH(row-help,dnl > - [ --with-row-help format help and subtopic tables by row > (default) > -@@ -1095,6 +1106,24 @@ > - AC_DEFINE_UNQUOTED([DIST_CONTACT],["$DIST_CONTACT"],[Contact > address for modified and binary distributed gnuplot versions]) > - fi > - > +dnl build doc files > +if test "$enable_doc" != no; then > + AC_CONFIG_SUBDIRS(docs) > @@ -43,6 +30,10 @@ diff -Naur a/configure.ac b/configure.ac > +fi > +AC_SUBST(DOCSUBDIR) > + > ++dnl Whether we want to build the demo files > ++dnl Does nothing here, is passed on to the demo subdir > ++AC_ARG_ENABLE(demo,dnl > ++[ --disable-demo do not build demo files]) > +dnl build demo files > +if test "$enable_demo" != no; then > + AC_CONFIG_SUBDIRS(demo) > @@ -52,12 +43,11 @@ diff -Naur a/configure.ac b/configure.ac > +fi > +AC_SUBST(DEMOSUBDIR) > + > - dnl Substitute variables > - AC_SUBST(PACKAGE) > - AC_SUBST(VERSION_MAJOR) > -diff -Naur a/Makefile.am b/Makefile.am > ---- a/Makefile.am 2020-03-31 19:28:16.000000000 +0200 > -+++ b/Makefile.am 2020-08-06 14:34:12.995097799 +0200 > + dnl without-extra-coordinate may leave a hole in "struct coordinate" > + AC_ARG_WITH(extra-coordinate,dnl > + [ --without-extra-coordinate leave possible hole in struct > coordinate],,) > +--- a/Makefile.am 2023-12-19 00:28:58.000000000 +0100 > ++++ b/Makefile.am 2024-05-13 15:54:21.189906680 +0200 > @@ -1,7 +1,7 @@ > ## Process this file with automake to produce Makefile.in > -*-Makefile-*- > AUTOMAKE_OPTIONS = foreign > diff --git a/package/gnuplot/gnuplot.hash > b/package/gnuplot/gnuplot.hash > index 39dacd50a4..dd587a8220 100644 > --- a/package/gnuplot/gnuplot.hash > +++ b/package/gnuplot/gnuplot.hash > @@ -1,6 +1,6 @@ > -# From https://sourceforge.net/projects/gnuplot/files/gnuplot/5.4.10/ > -md5 334851e63450362bdb95e67fa8a23665 gnuplot-5.4.10.tar.gz > -sha1 9981e5b0111c07d376deef571ccc75ce4b4ebbd2 gnuplot-5.4.10.tar.gz > +# From https://sourceforge.net/projects/gnuplot/files/gnuplot/6.0.0/ > +md5 10246eb96bbf3a151d6eb9bbcc223e4e gnuplot-6.0.0.tar.gz > +sha1 3abea0cccad89b0c8fb6619ad51b83a971ee24b9 gnuplot-6.0.0.tar.gz > # Locally computed > -sha256 > 975d8c1cc2c41c7cedc4e323aff035d977feb9a97f0296dd2a8a66d197a5b27c > gnuplot-5.4.10.tar.gz > +sha256 > 635a28f0993f6ab0d1179e072ad39b8139d07f51237f841d93c6c2ff4b1758ec > gnuplot-6.0.0.tar.gz > sha256 > 895928ec0735cca1c8cec42656c7e314a065d0242813bb8693c0c1bf61fd4e4d > Copyright > diff --git a/package/gnuplot/gnuplot.mk b/package/gnuplot/gnuplot.mk > index 91e9bfb9bf..26b2daaf24 100644 > --- a/package/gnuplot/gnuplot.mk > +++ b/package/gnuplot/gnuplot.mk > @@ -4,7 +4,7 @@ > # > > ################################################################################ > > -GNUPLOT_VERSION = 5.4.10 > +GNUPLOT_VERSION = 6.0.0 > GNUPLOT_SITE = > http://downloads.sourceforge.net/project/gnuplot/gnuplot/$(GNUPLOT_VERSION) > GNUPLOT_LICENSE = gnuplot license (open source) > GNUPLOT_LICENSE_FILES = Copyright > -- > 2.20.1 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot Best regards, Julien. From thomas.petazzoni at bootlin.com Mon May 13 19:50:21 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:50:21 +0200 Subject: [Buildroot] [git commit] package/gcc-bare-metal: bump to gcc 14.1.0 Message-ID: <20240513195730.E184187132@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=67855e77c18949727e740571550a22495c1e8675 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master See here for changes: https://gcc.gnu.org/gcc-14/changes.html Signed-off-by: Neal Frager Signed-off-by: Thomas Petazzoni --- package/gcc-bare-metal/13.2.0 | 1 - package/gcc-bare-metal/14.1.0 | 1 + package/gcc-bare-metal/gcc-bare-metal.mk | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/gcc-bare-metal/13.2.0 b/package/gcc-bare-metal/13.2.0 deleted file mode 120000 index b7a75dc7dd..0000000000 --- a/package/gcc-bare-metal/13.2.0 +++ /dev/null @@ -1 +0,0 @@ -../gcc/13.2.0/ \ No newline at end of file diff --git a/package/gcc-bare-metal/14.1.0 b/package/gcc-bare-metal/14.1.0 new file mode 120000 index 0000000000..e519bfb6fd --- /dev/null +++ b/package/gcc-bare-metal/14.1.0 @@ -0,0 +1 @@ +../gcc/14.1.0/ \ No newline at end of file diff --git a/package/gcc-bare-metal/gcc-bare-metal.mk b/package/gcc-bare-metal/gcc-bare-metal.mk index 0dfc8d7a5c..2f36b49125 100644 --- a/package/gcc-bare-metal/gcc-bare-metal.mk +++ b/package/gcc-bare-metal/gcc-bare-metal.mk @@ -4,7 +4,7 @@ # ################################################################################ -HOST_GCC_BARE_METAL_VERSION = 13.2.0 +HOST_GCC_BARE_METAL_VERSION = 14.1.0 HOST_GCC_BARE_METAL_SITE = \ https://ftp.gnu.org/gnu/gcc/gcc-$(HOST_GCC_BARE_METAL_VERSION) HOST_GCC_BARE_METAL_SOURCE = gcc-$(HOST_GCC_BARE_METAL_VERSION).tar.xz From thomas.petazzoni at bootlin.com Mon May 13 19:50:07 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:50:07 +0200 Subject: [Buildroot] [git commit] package/newlib-bare-metal: add patch for gcc 14.1.0 Message-ID: <20240513195730.D5D0887131@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=b55d22f822d179ba25b630b50e98e6eeaffbdcfe branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master This patch is needed for building newlib with gcc 14.1.0. Without this patch, the following build error will occur: ../../.././libgloss/microblaze/linux-outbyte.c: In function 'outbyte': ../../.././libgloss/microblaze/linux-outbyte.c:3:9: error: implicit declaration of function '_write' [-Wimplicit-function-declaration] 3 | _write(1, &c, 1); This patch has been submitted upstream: https://patchwork.sourceware.org/project/newlib/patch/20240513062419.2042278-1-neal.frager at amd.com/ Signed-off-by: Neal Frager Signed-off-by: Thomas Petazzoni --- ...-microblaze-fix-read-and-_write-declarati.patch | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/package/newlib-bare-metal/0001-libgloss-microblaze-fix-read-and-_write-declarati.patch b/package/newlib-bare-metal/0001-libgloss-microblaze-fix-read-and-_write-declarati.patch new file mode 100644 index 0000000000..5eacfd3270 --- /dev/null +++ b/package/newlib-bare-metal/0001-libgloss-microblaze-fix-read-and-_write-declarati.patch @@ -0,0 +1,40 @@ +From 1ebecb83607e9c0cc44ad1e518169ae03c0f2d26 Mon Sep 17 00:00:00 2001 +From: Neal Frager +Date: Mon, 13 May 2024 07:22:47 +0100 +Subject: [PATCH] libgloss: microblaze: fix read and _write declarations + +This patch resolves the following build error which occurs with gcc 14.1.0: +../../.././libgloss/microblaze/linux-outbyte.c: In function 'outbyte': +../../.././libgloss/microblaze/linux-outbyte.c:3:9: error: implicit declaration of function '_write' [-Wimplicit-function-declaration] + 3 | _write(1, &c, 1); + +Signed-off-by: Neal Frager +Upstream: https://patchwork.sourceware.org/project/newlib/patch/20240513062419.2042278-1-neal.frager at amd.com/ +--- + libgloss/microblaze/linux-inbyte.c | 2 ++ + libgloss/microblaze/linux-outbyte.c | 2 ++ + 2 files changed, 4 insertions(+) + +diff --git a/libgloss/microblaze/linux-inbyte.c b/libgloss/microblaze/linux-inbyte.c +index 58fdf1957..2f8d33871 100644 +--- a/libgloss/microblaze/linux-inbyte.c ++++ b/libgloss/microblaze/linux-inbyte.c +@@ -1,3 +1,5 @@ ++extern int read (int, char *, int); ++ + int inbyte(void) + { + char ch = 0; +diff --git a/libgloss/microblaze/linux-outbyte.c b/libgloss/microblaze/linux-outbyte.c +index 9d7bc4890..46de511f6 100644 +--- a/libgloss/microblaze/linux-outbyte.c ++++ b/libgloss/microblaze/linux-outbyte.c +@@ -1,3 +1,5 @@ ++extern int _write (int, char *, int); ++ + void outbyte (unsigned char c) + { + _write(1, &c, 1); +-- +2.25.1 + From thomas.petazzoni at bootlin.com Mon May 13 19:58:47 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:58:47 +0200 Subject: [Buildroot] [PATCH v1 1/2] package/newlib-bare-metal: add patch for gcc 14.1.0 In-Reply-To: <20240513064039.2091596-1-neal.frager@amd.com> References: <20240513064039.2091596-1-neal.frager@amd.com> Message-ID: <20240513215847.175987ed@windsurf> Hello, On Mon, 13 May 2024 07:40:38 +0100 Neal Frager via buildroot wrote: > This patch is needed for building newlib with gcc 14.1.0. Without this patch, > the following build error will occur: > > ../../.././libgloss/microblaze/linux-outbyte.c: In function 'outbyte': > ../../.././libgloss/microblaze/linux-outbyte.c:3:9: error: implicit declaration of function '_write' [-Wimplicit-function-declaration] > 3 | _write(1, &c, 1); > > This patch has been submitted upstream: > https://patchwork.sourceware.org/project/newlib/patch/20240513062419.2042278-1-neal.frager at amd.com/ > > Signed-off-by: Neal Frager > --- > ...oblaze-fix-read-and-_write-declarati.patch | 39 +++++++++++++++++++ > 1 file changed, 39 insertions(+) > create mode 100644 package/newlib-bare-metal/4.4.0.20231231/0001-libgloss-microblaze-fix-read-and-_write-declarati.patch > > diff --git a/package/newlib-bare-metal/4.4.0.20231231/0001-libgloss-microblaze-fix-read-and-_write-declarati.patch b/package/newlib-bare-metal/4.4.0.20231231/0001-libgloss-microblaze-fix-read-and-_write-declarati.patch > new file mode 100644 > index 0000000000..8901f60c3c > --- /dev/null > +++ b/package/newlib-bare-metal/4.4.0.20231231/0001-libgloss-microblaze-fix-read-and-_write-declarati.patch This patch should have been directly in package/newlib-bare-metal/, there is no need for a per-version directory. Such subdirectories are only needed when multiple versions of the package are supported (gcc, binutils, gdb, etc.) but not for normal packages that have a fixed version. > @@ -0,0 +1,39 @@ > +From 1ebecb83607e9c0cc44ad1e518169ae03c0f2d26 Mon Sep 17 00:00:00 2001 > +From: Neal Frager > +Date: Mon, 13 May 2024 07:22:47 +0100 > +Subject: [PATCH] libgloss: microblaze: fix read and _write declarations > + > +This patch resolves the following build error which occurs with gcc 14.1.0: > +../../.././libgloss/microblaze/linux-outbyte.c: In function 'outbyte': > +../../.././libgloss/microblaze/linux-outbyte.c:3:9: error: implicit declaration of function '_write' [-Wimplicit-function-declaration] > + 3 | _write(1, &c, 1); > + > +Signed-off-by: Neal Frager The "Upstream:" tag was missing here, and this issue was reported by "make check-package": WARNING: package/newlib-bare-metal/4.4.0.20231231/0001-libgloss-microblaze-fix-read-and-_write-declarati.patch:0: missing Upstream in the header (https://nightly.buildroot.org/#_additional_patch_documentation) I fixed both issues and applied. Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 19:58:55 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:58:55 +0200 Subject: [Buildroot] [PATCH v1 2/2] package/gcc-bare-metal: bump to gcc 14.1.0 In-Reply-To: <20240513064039.2091596-2-neal.frager@amd.com> References: <20240513064039.2091596-1-neal.frager@amd.com> <20240513064039.2091596-2-neal.frager@amd.com> Message-ID: <20240513215855.35919b41@windsurf> On Mon, 13 May 2024 07:40:39 +0100 Neal Frager via buildroot wrote: > See here for changes: > https://gcc.gnu.org/gcc-14/changes.html > > Signed-off-by: Neal Frager > --- > package/gcc-bare-metal/13.2.0 | 1 - > package/gcc-bare-metal/14.1.0 | 1 + > package/gcc-bare-metal/gcc-bare-metal.mk | 2 +- > 3 files changed, 2 insertions(+), 2 deletions(-) > delete mode 120000 package/gcc-bare-metal/13.2.0 > create mode 120000 package/gcc-bare-metal/14.1.0 Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 19:59:25 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:59:25 +0200 Subject: [Buildroot] [PATCH] package/uclibc: fix compile with gcc 14.x In-Reply-To: References: Message-ID: <20240513215925.54d80174@windsurf> On Mon, 13 May 2024 10:17:09 +0200 Waldemar Brodkorb wrote: > Add missing header file. > > Fixes: > http://autobuild.buildroot.net/results/e022040c15e1b1aebc539a0ca0e00b5a1888ccfe > > Signed-off-by: Waldemar Brodkorb > --- > .../0001-futimesat-add-missing-header.patch | 26 +++++++++++++++++++ > 1 file changed, 26 insertions(+) > create mode 100644 package/uclibc/0001-futimesat-add-missing-header.patch Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 19:59:15 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:59:15 +0200 Subject: [Buildroot] [git commit] package/uclibc: fix compile with gcc 14.x Message-ID: <20240513195929.4C50787135@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=682b61b5b1557a5006521e513fd3cf1f50a9a439 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Add missing header file. Fixes: http://autobuild.buildroot.net/results/e022040c15e1b1aebc539a0ca0e00b5a1888ccfe Signed-off-by: Waldemar Brodkorb Signed-off-by: Thomas Petazzoni --- .../uclibc/0001-futimesat-add-missing-header.patch | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/package/uclibc/0001-futimesat-add-missing-header.patch b/package/uclibc/0001-futimesat-add-missing-header.patch new file mode 100644 index 0000000000..f8af3290fa --- /dev/null +++ b/package/uclibc/0001-futimesat-add-missing-header.patch @@ -0,0 +1,26 @@ +From 4bcf25e75df857806623ff80924675bf849a60d2 Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Wed, 8 May 2024 10:08:08 +0200 +Subject: [PATCH] futimesat: add missing header + +Signed-off-by: Waldemar Brodkorb +Upstream: https://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/commit/?id=4bcf25e75df857806623ff80924675bf849a60d2 +--- + libc/sysdeps/linux/common/futimesat.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/libc/sysdeps/linux/common/futimesat.c b/libc/sysdeps/linux/common/futimesat.c +index fd19fea7c..bf36550dd 100644 +--- a/libc/sysdeps/linux/common/futimesat.c ++++ b/libc/sysdeps/linux/common/futimesat.c +@@ -7,6 +7,7 @@ + */ + + #include ++#include + #include + + #ifdef __NR_futimesat +-- +2.30.2 + From nick.whitlock at eizo.com Mon May 13 20:03:56 2024 From: nick.whitlock at eizo.com (nick.whitlock at eizo.com) Date: Mon, 13 May 2024 20:03:56 +0000 Subject: [Buildroot] [External] - [PATCH] package/nvidia-driver: bump version to 550.78 In-Reply-To: References: <20240513155907.104270-1-nick.whitlock@eizo.com> Message-ID: Hello, If a selectable (or user-enterable) version number is the consensus, then I'm all for that. There isn't currently a way to use recent NVIDIA discrete GPUs (read: Ampere and up) for GPGPU in embedded spaces until this gets resolved though. -----Original Message----- From: Vincent Fazio Sent: Monday, May 13, 2024 2:03 PM To: ERS Nick Whitlock ; buildroot at buildroot.org Cc: Yann E. MORIN Subject: RE: [External] - [Buildroot] [PATCH] package/nvidia-driver: bump version to 550.78 Nick, All, > -----Original Message----- > From: buildroot On Behalf Of Nick > Whitlock > Sent: Monday, May 13, 2024 10:59 AM > To: buildroot at buildroot.org > Cc: Yann E. MORIN ; Nick Whitlock > > Subject: [External] - [Buildroot] [PATCH] package/nvidia-driver: bump > version to 550.78 > > The NVIDIA drivers now have 64-bit and 32-bit versions bundled into > one .run file. > I believe this was always the case. See the /32 folder in the x86_64 run files for 390.x > A configuration value was also added to check if the user wants to > install GTK integration for the NVIDIA driver. > > The legacy version of libGL.so was removed in favor of the vendor > neutral version. > > This has been confirmed to work on kernel 6.1.4. > > Signed-off-by: Nick Whitlock > --- > package/nvidia-driver/Config.in | 3 ++ > package/nvidia-driver/nvidia-driver.hash | 7 ++- > package/nvidia-driver/nvidia-driver.mk | 69 +++++++++++++----------- > 3 files changed, 43 insertions(+), 36 deletions(-) > > diff --git a/package/nvidia-driver/Config.in > b/package/nvidia-driver/Config.in index a8617a939b..0fcce93e28 100644 > --- a/package/nvidia-driver/Config.in > +++ b/package/nvidia-driver/Config.in > @@ -90,4 +90,7 @@ config BR2_PACKAGE_NVIDIA_DRIVER_MODULE > provides Unified Memory access to the GPU and CPU memories for > CUDA programs. > > +config BR2_PACKAGE_NVIDIA_DRIVER_GTK > + bool "nvidia GTK acceleration" > + > endif # BR2_PACKAGE_NVIDIA_DRIVER > diff --git a/package/nvidia-driver/nvidia-driver.hash > b/package/nvidia- driver/nvidia-driver.hash index > 620112e6c8..06e3314d53 100644 > --- a/package/nvidia-driver/nvidia-driver.hash > +++ b/package/nvidia-driver/nvidia-driver.hash > @@ -1,4 +1,3 @@ > -# Locally computed > -sha256 > 94e399b459659c12b1344e8c8f4f5eee1ed5915ff459fc8bb831c9e1d44677 > db NVIDIA-Linux-x86-390.151.run > -sha256 > 6e4fd2258465f5d5527fe80abd46de925a30348b4a84658498a6d75caf42c4 > 7c NVIDIA-Linux-x86_64-390.151-no-compat32.run > -sha256 > bd28b0c5aeeb00eb11d3ec6f6f3449d4b3a40100914258332734a53527997 > 526 LICENSE > +# Locally computed: > +sha256 > 34070434527ec9d575483e7f11ca078e467e73f6defc54366ecfbdcfe4a3bf7 > 3 NVIDIA-Linux-x86_64-550.78.run > +sha256 > 5ac626496a6388d37cdd53e0300525267a4b8c89fb5980da060783afd561faf > 7 LICENSE > diff --git a/package/nvidia-driver/nvidia-driver.mk b/package/nvidia- > driver/nvidia-driver.mk index f1217b00aa..9ea97a2a9f 100644 > --- a/package/nvidia-driver/nvidia-driver.mk > +++ b/package/nvidia-driver/nvidia-driver.mk > @@ -4,10 +4,9 @@ > # > > ############################################################ > #################### > > -NVIDIA_DRIVER_VERSION = 390.151 > -NVIDIA_DRIVER_SUFFIX = $(if $(BR2_x86_64),_64) -NVIDIA_DRIVER_SITE = > http://download.nvidia.com/XFree86/Linux- > x86$(NVIDIA_DRIVER_SUFFIX)/$(NVIDIA_DRIVER_VERSION) > -NVIDIA_DRIVER_SOURCE = NVIDIA-Linux-x86$(NVIDIA_DRIVER_SUFFIX)- > $(NVIDIA_DRIVER_VERSION)$(if $(BR2_x86_64),-no-compat32).run I think we did this so that 32bit builds didn't need to: 1) fetch the 64bit bundle 2) handle the /32 subdirectory based on the target bitness If we used the installer's native logic, IIRC, it would install both 32bit and 64bit libraries, hence we stage the files and copy out what we need. > +NVIDIA_DRIVER_VERSION = 550.78 We had some discussions about a bump a year or two ago and there was never any real consensus about what we should do. The challenge, I think, is that the 5xx series drops support for some common NVIDIA products that may be more likely be used in embedded environments (like some of the Wolf GPU products). https://www.nvidia.com/en-us/drivers/unix/legacy-gpu/ At the time, we discussed having different selectable, but mutually exclusive, driver versions so that users could choose the version that provided support for their GPU. I had intended to do this but never found the time. I was also rewriting the installer to be manifest based but that too stalled due to lack of time. > +NVIDIA_DRIVER_SITE = http://download.nvidia.com/XFree86/Linux- > x86_64/$(NVIDIA_DRIVER_VERSION) > +NVIDIA_DRIVER_SOURCE = NVIDIA-Linux-x86_64- > $(NVIDIA_DRIVER_VERSION).run > NVIDIA_DRIVER_LICENSE = NVIDIA Software License > NVIDIA_DRIVER_LICENSE_FILES = LICENSE NVIDIA_DRIVER_REDISTRIBUTE = NO > @@ -23,30 +22,15 @@ ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_XORG),y) > NVIDIA_DRIVER_DEPENDENCIES += mesa3d-headers xlib_libX11 xlib_libXext > NVIDIA_DRIVER_PROVIDES += libgl libegl libgles > > -# libGL.so.$(NVIDIA_DRIVER_VERSION) is the legacy libGL.so library; > it -# has been replaced with libGL.so.1.0.0. Installing both is > technically -# possible, but great care must be taken to ensure they > do not conflict, -# so that EGL still works. The legacy library > exposes an NVidia-specific -# API, so it should not be needed, except > for legacy, binary-only -# applications (in other words: we don't care). > -# > -# libGL.so.1.0.0 is the new vendor-neutral library, aimed at > replacing -# the old libGL.so.$(NVIDIA_DRIVER_VERSION) library. The > latter contains -# NVidia extensions (which is deemed bad now), while > the former follows -# the newly-introduced vendor-neutral "dispatching" API/ABI: > -# https://github.com/aritger/linux-opengl-abi-proposal/blob/master/linux- > opengl-abi-proposal.txt > -# However, this is not very useful to us, as we don't support > multiple -# GL providers at the same time on the system, which this > proposal is -# aimed at supporting. > -# > -# So we only install the legacy library for now. > NVIDIA_DRIVER_LIBS_GL = \ > libGLX.so.0 \ > - libGL.so.$(NVIDIA_DRIVER_VERSION) \ > + libglxserver_nvidia.so.$(NVIDIA_DRIVER_VERSION) \ > + libGL.so.1.7.0 \ > libGLX_nvidia.so.$(NVIDIA_DRIVER_VERSION) > > NVIDIA_DRIVER_LIBS_EGL = \ > libEGL.so.1.1.0 \ > + libEGL.so.$(NVIDIA_DRIVER_VERSION) \ > libGLdispatch.so.0 \ > libEGL_nvidia.so.$(NVIDIA_DRIVER_VERSION) > > @@ -57,13 +41,18 @@ NVIDIA_DRIVER_LIBS_GLES = \ > libGLESv2_nvidia.so.$(NVIDIA_DRIVER_VERSION) > > NVIDIA_DRIVER_LIBS_MISC = \ > + libnvidia-allocator.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-api.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-cfg.so.$(NVIDIA_DRIVER_VERSION) \ > libnvidia-eglcore.so.$(NVIDIA_DRIVER_VERSION) \ > - libnvidia-egl-wayland.so.1.0.2 \ > + libnvidia-egl-gbm.so.1.1.1 \ > + libnvidia-egl-wayland.so.1.1.13 \ > + libnvidia-wayland-client.so.$(NVIDIA_DRIVER_VERSION) \ > libnvidia-glcore.so.$(NVIDIA_DRIVER_VERSION) \ > libnvidia-glsi.so.$(NVIDIA_DRIVER_VERSION) \ > - tls/libnvidia-tls.so.$(NVIDIA_DRIVER_VERSION) \ > - libvdpau_nvidia.so.$(NVIDIA_DRIVER_VERSION):vdpau/ \ > - libnvidia-ml.so.$(NVIDIA_DRIVER_VERSION) > + libnvidia-glvkspirv.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-ml.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-rtcore.so.$(NVIDIA_DRIVER_VERSION) > > NVIDIA_DRIVER_LIBS += \ > $(NVIDIA_DRIVER_LIBS_GL) \ > @@ -87,13 +76,26 @@ endef > # wants to run a third-party program developed under such an agreement). > ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_PRIVATE_LIBS),y) > NVIDIA_DRIVER_LIBS += \ > + libnvidia-fbc.so.$(NVIDIA_DRIVER_VERSION) \ > libnvidia-ifr.so.$(NVIDIA_DRIVER_VERSION) \ > - libnvidia-fbc.so.$(NVIDIA_DRIVER_VERSION) > + libnvidia-ngx.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-opticalflow.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvoptix.so.$(NVIDIA_DRIVER_VERSION) > +endif > + > +# Include GTK libraries (if required) ifeq > +($(BR2_PACKAGE_NVIDIA_DRIVER_GTK),y) > +NVIDIA_DRIVER_LIBS += \ > + libnvidia-gtk2.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-gtk3.so.$(NVIDIA_DRIVER_VERSION) > endif > > # We refer to the destination path; the origin file has no directory > component NVIDIA_DRIVER_LIBS += \ > nvidia_drv.so:xorg/modules/drivers/ \ > + libnvidia-pkcs11.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-pkcs11-openssl3.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-tls.so.$(NVIDIA_DRIVER_VERSION) \ > libglx.so.$(NVIDIA_DRIVER_VERSION):xorg/modules/extensions/ > > # libglx needs a symlink according to the driver README. It has no > SONAME @@ -107,11 +109,13 @@ endif # X drivers ifeq > ($(BR2_PACKAGE_NVIDIA_DRIVER_CUDA),y) > NVIDIA_DRIVER_LIBS += \ > libcuda.so.$(NVIDIA_DRIVER_VERSION) \ > - libnvidia-compiler.so.$(NVIDIA_DRIVER_VERSION) \ > + libcudadebugger.so.$(NVIDIA_DRIVER_VERSION) \ > libnvcuvid.so.$(NVIDIA_DRIVER_VERSION) \ > - libnvidia-fatbinaryloader.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-encode.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-gpucomp.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-nvvm.so.$(NVIDIA_DRIVER_VERSION) \ > libnvidia-ptxjitcompiler.so.$(NVIDIA_DRIVER_VERSION) \ > - libnvidia-encode.so.$(NVIDIA_DRIVER_VERSION) > + libvdpau_nvidia.so.$(NVIDIA_DRIVER_VERSION) > ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_CUDA_PROGS),y) > NVIDIA_DRIVER_PROGS = nvidia-cuda-mps-control nvidia-cuda-mps-server > endif @@ -152,8 +156,9 @@ endif # BR2_PACKAGE_NVIDIA_DRIVER_MODULE == > y # virtually everywhere, and it is fine enough to provide useful > options. > # Except it can't extract into an existing (even empty) directory. > define NVIDIA_DRIVER_EXTRACT_CMDS > - $(SHELL) $(NVIDIA_DRIVER_DL_DIR)/$(NVIDIA_DRIVER_SOURCE) -- > extract-only --target \ > - $(@D)/tmp-extract > + $(SHELL) $(NVIDIA_DRIVER_DL_DIR)/$(NVIDIA_DRIVER_SOURCE) -- > extract-only \ > + $(if $(BR2_x86_64),--no-install-compat32-libs) \ > + --target $(@D)/tmp-extract > chmod u+w -R $(@D) > mv $(@D)/tmp-extract/* $(@D)/tmp-extract/.manifest $(@D) > rm -rf $(@D)/tmp-extract > -- > 2.43.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot > CAUTION: This email originated from outside of the organization. Do > not click links or open attachments unless you recognize the sender > and know the content is safe. From thomas.petazzoni at bootlin.com Mon May 13 20:01:43 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:01:43 +0200 Subject: [Buildroot] [git commit] package/libsoup3: bump to 3.5.1 Message-ID: <20240513200757.58FA68713C@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=cd2a8827688b2449b0482b79308830739a7746ab branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master News: https://download.gnome.org/sources/libsoup/3.5/libsoup-3.5.1.news. Signed-off-by: Thomas Devoogdt Signed-off-by: Thomas Petazzoni --- package/libsoup3/libsoup3.hash | 4 ++-- package/libsoup3/libsoup3.mk | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/libsoup3/libsoup3.hash b/package/libsoup3/libsoup3.hash index 11e48b42aa..139771a11e 100644 --- a/package/libsoup3/libsoup3.hash +++ b/package/libsoup3/libsoup3.hash @@ -1,4 +1,4 @@ -# From https://download.gnome.org/sources/libsoup/3.4/libsoup-3.4.4.sha256sum -sha256 291c67725f36ed90ea43efff25064b69c5a2d1981488477c05c481a3b4b0c5aa libsoup-3.4.4.tar.xz +# From https://download.gnome.org/sources/libsoup/3.5/libsoup-3.5.1.sha256sum +sha256 c1d7cfb89832d35c271f37d544f2cfe21fa60ae9faad4a7ac58996ae4031f7ba libsoup-3.5.1.tar.xz # Locally calculated sha256 b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c COPYING diff --git a/package/libsoup3/libsoup3.mk b/package/libsoup3/libsoup3.mk index 10caa5bea4..bc3ae4d0cb 100644 --- a/package/libsoup3/libsoup3.mk +++ b/package/libsoup3/libsoup3.mk @@ -4,8 +4,8 @@ # ################################################################################ -LIBSOUP3_VERSION_MAJOR = 3.4 -LIBSOUP3_VERSION = $(LIBSOUP3_VERSION_MAJOR).4 +LIBSOUP3_VERSION_MAJOR = 3.5 +LIBSOUP3_VERSION = $(LIBSOUP3_VERSION_MAJOR).1 LIBSOUP3_SOURCE = libsoup-$(LIBSOUP3_VERSION).tar.xz LIBSOUP3_SITE = https://download.gnome.org/sources/libsoup/$(LIBSOUP3_VERSION_MAJOR) LIBSOUP3_LICENSE = LGPL-2.0+ From thomas.petazzoni at bootlin.com Mon May 13 20:08:32 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:08:32 +0200 Subject: [Buildroot] [PATCH v1] package/libsoup3: bump to 3.5.1 In-Reply-To: References: Message-ID: <20240513220832.069a1b9b@windsurf> On Mon, 13 May 2024 10:24:19 +0200 Thomas Devoogdt wrote: > News: https://download.gnome.org/sources/libsoup/3.5/libsoup-3.5.1.news. > > Signed-off-by: Thomas Devoogdt > --- > package/libsoup3/libsoup3.hash | 4 ++-- > package/libsoup3/libsoup3.mk | 4 ++-- > 2 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/package/libsoup3/libsoup3.hash b/package/libsoup3/libsoup3.hash > index 11e48b42aa..139771a11e 100644 > --- a/package/libsoup3/libsoup3.hash > +++ b/package/libsoup3/libsoup3.hash > @@ -1,4 +1,4 @@ > -# From https://download.gnome.org/sources/libsoup/3.4/libsoup-3.4.4.sha256sum > -sha256 291c67725f36ed90ea43efff25064b69c5a2d1981488477c05c481a3b4b0c5aa > libsoup-3.4.4.tar.xz > +# From https://download.gnome.org/sources/libsoup/3.5/libsoup-3.5.1.sha256sum > +sha256 c1d7cfb89832d35c271f37d544f2cfe21fa60ae9faad4a7ac58996ae4031f7ba > libsoup-3.5.1.tar.xz Your patch was badly line-wrapped. I'm not sure what happened, but most likely you didn't send it with git send-email? Anyway, I fixed that up locally (because the change was small) and applied to master. Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 20:08:41 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:08:41 +0200 Subject: [Buildroot] [git commit] package/libzenoh-pico: bump to version 0.11.0.1 Message-ID: <20240513201004.8655A87143@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=dfdcc8b0af1bd84788282317a4b77d4cc36b0e7c branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master https://github.com/eclipse-zenoh/zenoh-pico/releases/tag/0.11.0.1 Signed-off-by: Alex Michel Signed-off-by: Thomas Petazzoni --- package/libzenoh-pico/libzenoh-pico.hash | 2 +- package/libzenoh-pico/libzenoh-pico.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/libzenoh-pico/libzenoh-pico.hash b/package/libzenoh-pico/libzenoh-pico.hash index 98f804508f..945d0f9aaf 100644 --- a/package/libzenoh-pico/libzenoh-pico.hash +++ b/package/libzenoh-pico/libzenoh-pico.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 7b615515ac844470ec7806921e8106b2923f6c43e242b34f062954de7560b799 libzenoh-pico-0.10.1-rc.tar.gz +sha256 c259da44aa919919d1129b6a46edb05e2f5f2bf2818f73c27f515e443da9fc83 libzenoh-pico-0.11.0.1.tar.gz sha256 d386df32cf327bbb25abe894277d3d7e0f447bafc59f4ad362615b0136f30db5 LICENSE diff --git a/package/libzenoh-pico/libzenoh-pico.mk b/package/libzenoh-pico/libzenoh-pico.mk index 90dfda6c98..86204de14f 100644 --- a/package/libzenoh-pico/libzenoh-pico.mk +++ b/package/libzenoh-pico/libzenoh-pico.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBZENOH_PICO_VERSION = 0.10.1-rc +LIBZENOH_PICO_VERSION = 0.11.0.1 LIBZENOH_PICO_SITE = $(call github,eclipse-zenoh,zenoh-pico,$(LIBZENOH_PICO_VERSION)) LIBZENOH_PICO_LICENSE = Apache-2.0 or EPL-2.0 LIBZENOH_PICO_LICENSE_FILES = LICENSE From thomas.petazzoni at bootlin.com Mon May 13 20:10:06 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:06 +0200 Subject: [Buildroot] [PATCH 1/1] package/libzenoh-pico: bump to version 0.11.0.1 In-Reply-To: References: Message-ID: <20240513221006.415d4883@windsurf> On Mon, 13 May 2024 08:47:55 +0000 Michel Alex wrote: > https://github.com/eclipse-zenoh/zenoh-pico/releases/tag/0.11.0.1 > > Signed-off-by: Alex Michel > --- > package/libzenoh-pico/libzenoh-pico.hash | 2 +- > package/libzenoh-pico/libzenoh-pico.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From buildroot at heine.tech Mon May 13 20:18:29 2024 From: buildroot at heine.tech (Michael Nosthoff) Date: Mon, 13 May 2024 22:18:29 +0200 Subject: [Buildroot] [PATCH] package/spdlog: bump to 1.14.1 Message-ID: <20240513201831.643211-1-buildroot@heine.tech> - Fixed compatibility issue between c++17 and c++11 https://github.com/gabime/spdlog/releases/tag/v1.14.1 Signed-off-by: Michael Nosthoff --- package/spdlog/spdlog.hash | 2 +- package/spdlog/spdlog.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/spdlog/spdlog.hash b/package/spdlog/spdlog.hash index 7a0f442ab0..16d841769d 100644 --- a/package/spdlog/spdlog.hash +++ b/package/spdlog/spdlog.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 429a6b73ade8285cb21f83bacf89e2821dd1720ea7faa3cb518ffe04b4e00efc spdlog-1.14.0.tar.gz +sha256 1586508029a7d0670dfcb2d97575dcdc242d3868a259742b69f100801ab4e16b spdlog-1.14.1.tar.gz sha256 4ccecab18d1ff0b61174fe3d6c430541625d3ddb865b0d5887db296f883c76e7 LICENSE diff --git a/package/spdlog/spdlog.mk b/package/spdlog/spdlog.mk index c435633f41..6b24357697 100644 --- a/package/spdlog/spdlog.mk +++ b/package/spdlog/spdlog.mk @@ -4,7 +4,7 @@ # ################################################################################ -SPDLOG_VERSION = 1.14.0 +SPDLOG_VERSION = 1.14.1 SPDLOG_SITE = $(call github,gabime,spdlog,v$(SPDLOG_VERSION)) SPDLOG_LICENSE = MIT SPDLOG_LICENSE_FILES = LICENSE -- 2.34.1 From thomas.petazzoni at bootlin.com Mon May 13 20:10:43 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:43 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-filmon: bump version to 21.0.1-Omega Message-ID: <20240513203450.2905C87154@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=40557cfec1d07ef314cfbd5f3c1fb31fdc531128 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-filmon/kodi-pvr-filmon.hash | 2 +- package/kodi-pvr-filmon/kodi-pvr-filmon.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-filmon/kodi-pvr-filmon.hash b/package/kodi-pvr-filmon/kodi-pvr-filmon.hash index d606962ff3..16bb884885 100644 --- a/package/kodi-pvr-filmon/kodi-pvr-filmon.hash +++ b/package/kodi-pvr-filmon/kodi-pvr-filmon.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 ba3f0c6f2b46c6b45750e2148a932279c76bb7a1b49eb3299a19817fef3f6b2d kodi-pvr-filmon-21.0.0-Omega.tar.gz +sha256 d0e1f4b32a31aee3e60b2e7b0c64c7a061ca69232cd2feebf5af77ad5f0a6036 kodi-pvr-filmon-21.0.1-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-filmon/kodi-pvr-filmon.mk b/package/kodi-pvr-filmon/kodi-pvr-filmon.mk index 268e9fad4b..2c3eb8a859 100644 --- a/package/kodi-pvr-filmon/kodi-pvr-filmon.mk +++ b/package/kodi-pvr-filmon/kodi-pvr-filmon.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_FILMON_VERSION = 21.0.0-Omega +KODI_PVR_FILMON_VERSION = 21.0.1-Omega KODI_PVR_FILMON_SITE = $(call github,kodi-pvr,pvr.filmon,$(KODI_PVR_FILMON_VERSION)) KODI_PVR_FILMON_LICENSE = GPL-2.0+ KODI_PVR_FILMON_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:10:41 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:41 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-dvbviewer: bump version to 21.1.1-Omega Message-ID: <20240513203450.1E3A187142@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=f184ecce76f84e115c944a5619571e8fb501358c branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.hash | 2 +- package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.hash b/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.hash index 775942a5c8..0fc03619b3 100644 --- a/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.hash +++ b/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 92ac2f2c28f109320c152173b1d814af93d7da8e1c3df19f57f56dce1706818c kodi-pvr-dvbviewer-21.1.0-Omega.tar.gz +sha256 e12d3a930f0b404a0d7d996b962c4cdc9b1477bbfb8f6af4fcbe23ded05e5fff kodi-pvr-dvbviewer-21.1.1-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.mk b/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.mk index 119e3fe0a2..bb08cf3e6a 100644 --- a/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.mk +++ b/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_DVBVIEWER_VERSION = 21.1.0-Omega +KODI_PVR_DVBVIEWER_VERSION = 21.1.1-Omega KODI_PVR_DVBVIEWER_SITE = $(call github,kodi-pvr,pvr.dvbviewer,$(KODI_PVR_DVBVIEWER_VERSION)) KODI_PVR_DVBVIEWER_LICENSE = GPL-2.0+ KODI_PVR_DVBVIEWER_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:10:39 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:39 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-dvblink: bump version to 21.1.1-Omega Message-ID: <20240513203450.1411387153@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=0eba7f42636426a9524c436fb8c7b21bf311046b branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-dvblink/kodi-pvr-dvblink.hash | 2 +- package/kodi-pvr-dvblink/kodi-pvr-dvblink.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-dvblink/kodi-pvr-dvblink.hash b/package/kodi-pvr-dvblink/kodi-pvr-dvblink.hash index b5ffa066d1..36a320290b 100644 --- a/package/kodi-pvr-dvblink/kodi-pvr-dvblink.hash +++ b/package/kodi-pvr-dvblink/kodi-pvr-dvblink.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 30d2c7087931bfe040a0f859a0c8b2bd20a71a1e5496a95eab055b7b3167df64 kodi-pvr-dvblink-21.1.0-Omega.tar.gz +sha256 53799996d1a241d672d4b0c16eccbf3be2a73d5fcad3bb48feef8f35da79f9ec kodi-pvr-dvblink-21.1.1-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-dvblink/kodi-pvr-dvblink.mk b/package/kodi-pvr-dvblink/kodi-pvr-dvblink.mk index d5146dbbaa..ee334fe82f 100644 --- a/package/kodi-pvr-dvblink/kodi-pvr-dvblink.mk +++ b/package/kodi-pvr-dvblink/kodi-pvr-dvblink.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_DVBLINK_VERSION = 21.1.0-Omega +KODI_PVR_DVBLINK_VERSION = 21.1.1-Omega KODI_PVR_DVBLINK_SITE = $(call github,kodi-pvr,pvr.dvblink,$(KODI_PVR_DVBLINK_VERSION)) KODI_PVR_DVBLINK_LICENSE = GPL-2.0+ KODI_PVR_DVBLINK_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:10:48 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:48 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-hts: bump version to 21.2.3-Omega Message-ID: <20240513203450.414FF87142@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=c6cacfba9bf740ddb259187a758fbe0968d67f40 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-hts/kodi-pvr-hts.hash | 2 +- package/kodi-pvr-hts/kodi-pvr-hts.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-hts/kodi-pvr-hts.hash b/package/kodi-pvr-hts/kodi-pvr-hts.hash index 91b7b00f1a..27aa9a0729 100644 --- a/package/kodi-pvr-hts/kodi-pvr-hts.hash +++ b/package/kodi-pvr-hts/kodi-pvr-hts.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 b2694803be78ee65d1ac8c02ae6631ec9798e5a70906b29c610018f9f33bf7fa kodi-pvr-hts-21.2.1-Omega.tar.gz +sha256 3bb04e48e9eca97fbd72b6285b110f3bebbd842ee7017423aa446259763e0d0b kodi-pvr-hts-21.2.3-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-hts/kodi-pvr-hts.mk b/package/kodi-pvr-hts/kodi-pvr-hts.mk index c67118b428..e1531fa1df 100644 --- a/package/kodi-pvr-hts/kodi-pvr-hts.mk +++ b/package/kodi-pvr-hts/kodi-pvr-hts.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_HTS_VERSION = 21.2.1-Omega +KODI_PVR_HTS_VERSION = 21.2.3-Omega KODI_PVR_HTS_SITE = $(call github,kodi-pvr,pvr.hts,$(KODI_PVR_HTS_VERSION)) KODI_PVR_HTS_LICENSE = GPL-2.0+ KODI_PVR_HTS_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:10:52 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:52 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-mediaportal-tvserver: bump version to 21.0.2-Omega Message-ID: <20240513203450.55ACF87156@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=dd93f19f745943c8302845b5abf1617bf92dfbf6 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- .../kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.hash | 2 +- package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.hash b/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.hash index 5ede84083d..a02ddeb6a5 100644 --- a/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.hash +++ b/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 a0034ffcfb42ce4bc8dbd49c5ef354caa7f41e6e061d1a7f3c42618053ebb469 kodi-pvr-mediaportal-tvserver-21.0.0-Omega.tar.gz +sha256 9e8c92b49433f46ae681055762ca4c152481b258c9163a1119c1ca08d7e9fd7c kodi-pvr-mediaportal-tvserver-21.0.2-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.mk b/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.mk index 01c1e38607..62a30e8cfe 100644 --- a/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.mk +++ b/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_MEDIAPORTAL_TVSERVER_VERSION = 21.0.0-Omega +KODI_PVR_MEDIAPORTAL_TVSERVER_VERSION = 21.0.2-Omega KODI_PVR_MEDIAPORTAL_TVSERVER_SITE = $(call github,kodi-pvr,pvr.mediaportal.tvserver,$(KODI_PVR_MEDIAPORTAL_TVSERVER_VERSION)) KODI_PVR_MEDIAPORTAL_TVSERVER_LICENSE = GPL-2.0+ KODI_PVR_MEDIAPORTAL_TVSERVER_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:10:36 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:36 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-argustv: bump version to 21.0.1-Omega Message-ID: <20240513203450.0803487151@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=3b0a4a8f94a852966a63ab0a6d63971a635c3523 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-argustv/kodi-pvr-argustv.hash | 2 +- package/kodi-pvr-argustv/kodi-pvr-argustv.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-argustv/kodi-pvr-argustv.hash b/package/kodi-pvr-argustv/kodi-pvr-argustv.hash index 604b77c5e3..b04554075e 100644 --- a/package/kodi-pvr-argustv/kodi-pvr-argustv.hash +++ b/package/kodi-pvr-argustv/kodi-pvr-argustv.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 61aef981183c1e834b5a3d69fc02b7db5081b6996d7c0a1667d18eb02f655fd0 kodi-pvr-argustv-21.0.0-Omega.tar.gz +sha256 6ab2952690de934d236cf43a3f42ea19337013d88af305dc1df82b5c1235cff0 kodi-pvr-argustv-21.0.1-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-argustv/kodi-pvr-argustv.mk b/package/kodi-pvr-argustv/kodi-pvr-argustv.mk index 582300afb9..38900e5afc 100644 --- a/package/kodi-pvr-argustv/kodi-pvr-argustv.mk +++ b/package/kodi-pvr-argustv/kodi-pvr-argustv.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_ARGUSTV_VERSION = 21.0.0-Omega +KODI_PVR_ARGUSTV_VERSION = 21.0.1-Omega KODI_PVR_ARGUSTV_SITE = $(call github,kodi-pvr,pvr.argustv,$(KODI_PVR_ARGUSTV_VERSION)) KODI_PVR_ARGUSTV_LICENSE = GPL-2.0+ KODI_PVR_ARGUSTV_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:10:34 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:34 +0200 Subject: [Buildroot] [git commit] package/kodi-peripheral-joystick: bump version to 21.1.15-Omega Message-ID: <20240513203449.F07138714E@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=3c5d453df5309c09122e961e100d69c361c2e41d branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-peripheral-joystick/kodi-peripheral-joystick.hash | 2 +- package/kodi-peripheral-joystick/kodi-peripheral-joystick.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-peripheral-joystick/kodi-peripheral-joystick.hash b/package/kodi-peripheral-joystick/kodi-peripheral-joystick.hash index a192ec62b5..9cea40965f 100644 --- a/package/kodi-peripheral-joystick/kodi-peripheral-joystick.hash +++ b/package/kodi-peripheral-joystick/kodi-peripheral-joystick.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 7a06470ba417758126fcb39701b95d0ae51a51951b68a2985d6ba444ab3e9106 kodi-peripheral-joystick-21.1.11-Omega.tar.gz +sha256 b152c6f17291ede48850bf307e6d619ff803e1b26217ccec532d5c49a3ef7b84 kodi-peripheral-joystick-21.1.15-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-peripheral-joystick/kodi-peripheral-joystick.mk b/package/kodi-peripheral-joystick/kodi-peripheral-joystick.mk index 354932fd99..34ea45855e 100644 --- a/package/kodi-peripheral-joystick/kodi-peripheral-joystick.mk +++ b/package/kodi-peripheral-joystick/kodi-peripheral-joystick.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PERIPHERAL_JOYSTICK_VERSION = 21.1.11-Omega +KODI_PERIPHERAL_JOYSTICK_VERSION = 21.1.15-Omega KODI_PERIPHERAL_JOYSTICK_SITE = $(call github,xbmc,peripheral.joystick,$(KODI_PERIPHERAL_JOYSTICK_VERSION)) KODI_PERIPHERAL_JOYSTICK_LICENSE = GPL-2.0+ KODI_PERIPHERAL_JOYSTICK_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:10:32 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:32 +0200 Subject: [Buildroot] [git commit] package/kodi-inputstream-adaptive: bump version to 21.4.7-Omega Message-ID: <20240513203449.E5C4387142@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=ad26932b386390a5a7125304219ae82c700beac1 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.hash | 2 +- package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.hash b/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.hash index b7a89a8a02..85945c9a54 100644 --- a/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.hash +++ b/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.hash @@ -1,5 +1,5 @@ # Locally computed -sha256 0a1074fe04fb7e9500d578490b4cda12ecfcf433495e15e7bf65861527586167 kodi-inputstream-adaptive-21.4.4-Omega.tar.gz +sha256 0b3a78763ffebef64ac05bcf55951f26e334f7ee8bbe042f885dff288eed466e kodi-inputstream-adaptive-21.4.7-Omega.tar.gz sha256 48632d57fbb6ab8f50cbf4deced5c91e733fa7ff292687c4816b77f28e483df9 LICENSE.md sha256 02f864f3e07456785625968022ce811c5640301bfd2ae70963efea89d306790a LICENSES/README.md sha256 0b7f5dcb3d2c28ff78d999786028930e762df0baa2f52955782e378ec5b636a8 LICENSES/BSD-2-Clause-Views diff --git a/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.mk b/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.mk index e1fe3f37ed..5cc02e45c0 100644 --- a/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.mk +++ b/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_INPUTSTREAM_ADAPTIVE_VERSION = 21.4.4-Omega +KODI_INPUTSTREAM_ADAPTIVE_VERSION = 21.4.7-Omega KODI_INPUTSTREAM_ADAPTIVE_SITE = $(call github,xbmc,inputstream.adaptive,$(KODI_INPUTSTREAM_ADAPTIVE_VERSION)) KODI_INPUTSTREAM_ADAPTIVE_LICENSE = \ BSD-2-Clause-Views \ From thomas.petazzoni at bootlin.com Mon May 13 20:10:54 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:54 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-nextpvr: bump version to 21.1.0-Omega Message-ID: <20240513203450.6094B87142@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=96483861123f13f71561b5e62709e2a528d0e214 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.hash | 2 +- package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.hash b/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.hash index 0c4ca8fcd0..5c65af9597 100644 --- a/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.hash +++ b/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 394ccca4c428e71e18cda4debc14d7eba2b4cc098a290a593ffa76a76c55fc90 kodi-pvr-nextpvr-21.0.2-Omega.tar.gz +sha256 220e292c58d22b3064f1ea6a717341d9d004384791aec8b409d6653b91817085 kodi-pvr-nextpvr-21.1.0-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.mk b/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.mk index f3d615f39b..dc2a7703ce 100644 --- a/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.mk +++ b/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_NEXTPVR_VERSION = 21.0.2-Omega +KODI_PVR_NEXTPVR_VERSION = 21.1.0-Omega KODI_PVR_NEXTPVR_SITE = $(call github,kodi-pvr,pvr.nextpvr,$(KODI_PVR_NEXTPVR_VERSION)) KODI_PVR_NEXTPVR_LICENSE = GPL-2.0+ KODI_PVR_NEXTPVR_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:10:56 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:56 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-njoy: bump version to 21.0.1-Omega Message-ID: <20240513203450.6DD8087151@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=af111ed39648b07d26ec3e9b82c44e9ac6db8a23 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-njoy/kodi-pvr-njoy.hash | 2 +- package/kodi-pvr-njoy/kodi-pvr-njoy.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-njoy/kodi-pvr-njoy.hash b/package/kodi-pvr-njoy/kodi-pvr-njoy.hash index b0fc808aee..c99e92bb9d 100644 --- a/package/kodi-pvr-njoy/kodi-pvr-njoy.hash +++ b/package/kodi-pvr-njoy/kodi-pvr-njoy.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 0c570cebbb117bb0ef93692d653782608b332fc2b4b6d1728b5421ccd1457f72 kodi-pvr-njoy-21.0.0-Omega.tar.gz +sha256 e9768f87857374476766ba8d791793b4e8d1e9d3239149b2142a7b5b3f24b439 kodi-pvr-njoy-21.0.1-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-njoy/kodi-pvr-njoy.mk b/package/kodi-pvr-njoy/kodi-pvr-njoy.mk index 47aa357b11..ab0d371c21 100644 --- a/package/kodi-pvr-njoy/kodi-pvr-njoy.mk +++ b/package/kodi-pvr-njoy/kodi-pvr-njoy.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_NJOY_VERSION = 21.0.0-Omega +KODI_PVR_NJOY_VERSION = 21.0.1-Omega KODI_PVR_NJOY_SITE = $(call github,kodi-pvr,pvr.njoy,$(KODI_PVR_NJOY_VERSION)) KODI_PVR_NJOY_LICENSE = GPL-2.0+ KODI_PVR_NJOY_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:11:07 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:11:07 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-vbox: bump version to 21.1.3-Omega Message-ID: <20240513203450.A44BF8714E@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=ea7c97e3ee8b7bd9a7dc0fa9e86d40ebce7f35f9 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-vbox/kodi-pvr-vbox.hash | 2 +- package/kodi-pvr-vbox/kodi-pvr-vbox.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-vbox/kodi-pvr-vbox.hash b/package/kodi-pvr-vbox/kodi-pvr-vbox.hash index a4fc6f48d2..aec8100c77 100644 --- a/package/kodi-pvr-vbox/kodi-pvr-vbox.hash +++ b/package/kodi-pvr-vbox/kodi-pvr-vbox.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 6909016c3d89b5eddae5098b033e0cce1ea3140e05b4175e1c50611add7ab408 kodi-pvr-vbox-21.1.2-Omega.tar.gz +sha256 becc98a7d3bc8e4a78f775a34851ea1d4962e64ee4d63bbf339ac86cf12a4b95 kodi-pvr-vbox-21.1.3-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-vbox/kodi-pvr-vbox.mk b/package/kodi-pvr-vbox/kodi-pvr-vbox.mk index 5da40d13f1..35ff5fa6c9 100644 --- a/package/kodi-pvr-vbox/kodi-pvr-vbox.mk +++ b/package/kodi-pvr-vbox/kodi-pvr-vbox.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_VBOX_VERSION = 21.1.2-Omega +KODI_PVR_VBOX_VERSION = 21.1.3-Omega KODI_PVR_VBOX_SITE = $(call github,kodi-pvr,pvr.vbox,$(KODI_PVR_VBOX_VERSION)) KODI_PVR_VBOX_LICENSE = GPL-2.0+ KODI_PVR_VBOX_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:10:50 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:50 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-iptvsimple: bump version to 21.8.4-Omega Message-ID: <20240513203450.4B81387154@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=0e85738d0d6d38cfb2e5e10fbcee8445e491bcf4 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.hash | 2 +- package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.hash b/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.hash index 784775388d..872efba754 100644 --- a/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.hash +++ b/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 52108d15f8eaa58d7cd6d87947615758ffebcbf87a00090e71384cff4e59d25d kodi-pvr-iptvsimple-21.8.3-Omega.tar.gz +sha256 287d9fe5ca348f70b7fae96be7de0e0f092e9a00a3e8043c67ad24bd77a9a82d kodi-pvr-iptvsimple-21.8.4-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.mk b/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.mk index 5726ba66ed..67db5793d0 100644 --- a/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.mk +++ b/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_IPTVSIMPLE_VERSION = 21.8.3-Omega +KODI_PVR_IPTVSIMPLE_VERSION = 21.8.4-Omega KODI_PVR_IPTVSIMPLE_SITE = $(call github,kodi-pvr,pvr.iptvsimple,$(KODI_PVR_IPTVSIMPLE_VERSION)) KODI_PVR_IPTVSIMPLE_LICENSE = GPL-2.0+ KODI_PVR_IPTVSIMPLE_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:10:58 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:58 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-octonet: bump version to 21.0.1-Omega Message-ID: <20240513203450.77E0B87154@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=467cea48afe10cb4dc804eb3ea7cc544a1a49fce branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-octonet/kodi-pvr-octonet.hash | 2 +- package/kodi-pvr-octonet/kodi-pvr-octonet.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-octonet/kodi-pvr-octonet.hash b/package/kodi-pvr-octonet/kodi-pvr-octonet.hash index 8262476abd..f62f31cecd 100644 --- a/package/kodi-pvr-octonet/kodi-pvr-octonet.hash +++ b/package/kodi-pvr-octonet/kodi-pvr-octonet.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 88d1df996154b1ae08e7c45c78ede3985aef2e3df2c7c3b2958fa3f3c5e241c9 kodi-pvr-octonet-21.0.0-Omega.tar.gz +sha256 4fd97ff7f0fa021a45958dcd1f922e39dbf5e7366732a74caf782621b97aaa07 kodi-pvr-octonet-21.0.1-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-octonet/kodi-pvr-octonet.mk b/package/kodi-pvr-octonet/kodi-pvr-octonet.mk index 938f0721e6..bbcd78f4c5 100644 --- a/package/kodi-pvr-octonet/kodi-pvr-octonet.mk +++ b/package/kodi-pvr-octonet/kodi-pvr-octonet.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_OCTONET_VERSION = 21.0.0-Omega +KODI_PVR_OCTONET_VERSION = 21.0.1-Omega KODI_PVR_OCTONET_SITE = $(call github,DigitalDevices,pvr.octonet,$(KODI_PVR_OCTONET_VERSION)) KODI_PVR_OCTONET_LICENSE = GPL-2.0+ KODI_PVR_OCTONET_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:11:03 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:11:03 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-plutotv: bump version to 21.3.0-Omega Message-ID: <20240513203450.8E35387136@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=10f7309c4f42b4d81edcba261bb996bf8534be00 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-plutotv/kodi-pvr-plutotv.hash | 2 +- package/kodi-pvr-plutotv/kodi-pvr-plutotv.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-plutotv/kodi-pvr-plutotv.hash b/package/kodi-pvr-plutotv/kodi-pvr-plutotv.hash index 199777c255..bb4826ba66 100644 --- a/package/kodi-pvr-plutotv/kodi-pvr-plutotv.hash +++ b/package/kodi-pvr-plutotv/kodi-pvr-plutotv.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 4503cbed48aefa06470a970d7030d67cbdc7236cabd8de15df4a3681827b32e7 kodi-pvr-plutotv-21.1.0-Omega.tar.gz +sha256 fb026664222af3415bb805c4b2c19d1893f9e05a7d089c2d720a495131d1460d kodi-pvr-plutotv-21.3.0-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-plutotv/kodi-pvr-plutotv.mk b/package/kodi-pvr-plutotv/kodi-pvr-plutotv.mk index e2a3a01116..885ef03e0d 100644 --- a/package/kodi-pvr-plutotv/kodi-pvr-plutotv.mk +++ b/package/kodi-pvr-plutotv/kodi-pvr-plutotv.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_PLUTOTV_VERSION = 21.1.0-Omega +KODI_PVR_PLUTOTV_VERSION = 21.3.0-Omega KODI_PVR_PLUTOTV_SITE = $(call github,kodi-pvr,pvr.plutotv,$(KODI_PVR_PLUTOTV_VERSION)) KODI_PVR_PLUTOTV_LICENSE = GPL-2.0+ KODI_PVR_PLUTOTV_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:11:01 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:11:01 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-pctv: bump version to 21.0.1-Omega Message-ID: <20240513203450.81A2D87153@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=5237f33d1272aef7c9d2e78e10f4557057949302 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-pctv/kodi-pvr-pctv.hash | 2 +- package/kodi-pvr-pctv/kodi-pvr-pctv.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-pctv/kodi-pvr-pctv.hash b/package/kodi-pvr-pctv/kodi-pvr-pctv.hash index a0c6a49e73..bc79a194de 100644 --- a/package/kodi-pvr-pctv/kodi-pvr-pctv.hash +++ b/package/kodi-pvr-pctv/kodi-pvr-pctv.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 671dc89b33d4be8b895d44f74856f8ec49cf8cd174f9f7e502b5a5a6951658d6 kodi-pvr-pctv-21.0.0-Omega.tar.gz +sha256 d695032343a096c214a767f8c13d072035dc38cbda2a3305a91bc40ee7cb7770 kodi-pvr-pctv-21.0.1-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-pctv/kodi-pvr-pctv.mk b/package/kodi-pvr-pctv/kodi-pvr-pctv.mk index 82da3a70f8..d7b7b59b4c 100644 --- a/package/kodi-pvr-pctv/kodi-pvr-pctv.mk +++ b/package/kodi-pvr-pctv/kodi-pvr-pctv.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_PCTV_VERSION = 21.0.0-Omega +KODI_PVR_PCTV_VERSION = 21.0.1-Omega KODI_PVR_PCTV_SITE = $(call github,kodi-pvr,pvr.pctv,$(KODI_PVR_PCTV_VERSION)) KODI_PVR_PCTV_LICENSE = GPL-2.0+ KODI_PVR_PCTV_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:11:12 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:11:12 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-vuplus: bump version to 21.1.2-Omega Message-ID: <20240513203450.B827D87153@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=5dd7363e7f58852c231f42049bf3b0454f51d0f0 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-vuplus/kodi-pvr-vuplus.hash | 2 +- package/kodi-pvr-vuplus/kodi-pvr-vuplus.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-vuplus/kodi-pvr-vuplus.hash b/package/kodi-pvr-vuplus/kodi-pvr-vuplus.hash index 46a0e6c471..d68d5b5be5 100644 --- a/package/kodi-pvr-vuplus/kodi-pvr-vuplus.hash +++ b/package/kodi-pvr-vuplus/kodi-pvr-vuplus.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 f9bd295fda0c21f60989440dfa74ebaf386f5264bf7a045f6c7cc9fd012e7907 kodi-pvr-vuplus-21.1.1-Omega.tar.gz +sha256 5d918e8073a326e2631aac0756ee2c78fddb359980a8dff805ff13d9d9bf48ba kodi-pvr-vuplus-21.1.2-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-vuplus/kodi-pvr-vuplus.mk b/package/kodi-pvr-vuplus/kodi-pvr-vuplus.mk index b6d2c6b5d5..1b70521867 100644 --- a/package/kodi-pvr-vuplus/kodi-pvr-vuplus.mk +++ b/package/kodi-pvr-vuplus/kodi-pvr-vuplus.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_VUPLUS_VERSION = 21.1.1-Omega +KODI_PVR_VUPLUS_VERSION = 21.1.2-Omega KODI_PVR_VUPLUS_SITE = $(call github,kodi-pvr,pvr.vuplus,$(KODI_PVR_VUPLUS_VERSION)) KODI_PVR_VUPLUS_LICENSE = GPL-2.0+ KODI_PVR_VUPLUS_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:11:14 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:11:14 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-waipu: bump version to 21.6.0-Omega Message-ID: <20240513203450.C5A628714E@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=441b788b72c7f75eb3f7e6a0fcc1860372f28939 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-waipu/kodi-pvr-waipu.hash | 2 +- package/kodi-pvr-waipu/kodi-pvr-waipu.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-waipu/kodi-pvr-waipu.hash b/package/kodi-pvr-waipu/kodi-pvr-waipu.hash index 6f9d521601..2c682c884c 100644 --- a/package/kodi-pvr-waipu/kodi-pvr-waipu.hash +++ b/package/kodi-pvr-waipu/kodi-pvr-waipu.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 c595fa830f56b265a94de5a33dd50bdd8ae068ebe0797dd15220ba52adf04fda kodi-pvr-waipu-21.5.0-Omega.tar.gz +sha256 0db467d4986c36efb0c837dd728fc6322d3021fe2d8c93da9355b63f210fa0ca kodi-pvr-waipu-21.6.0-Omega.tar.gz sha256 4202d4fb329f58c83ba921b56d7071e37f7df3f15b3820a3a04ef8eee49f54d2 pvr.waipu/LICENSE.txt diff --git a/package/kodi-pvr-waipu/kodi-pvr-waipu.mk b/package/kodi-pvr-waipu/kodi-pvr-waipu.mk index d82f8f7a2f..4e9f8e00cf 100644 --- a/package/kodi-pvr-waipu/kodi-pvr-waipu.mk +++ b/package/kodi-pvr-waipu/kodi-pvr-waipu.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_WAIPU_VERSION = 21.5.0-Omega +KODI_PVR_WAIPU_VERSION = 21.6.0-Omega KODI_PVR_WAIPU_SITE = $(call github,flubshi,pvr.waipu,$(KODI_PVR_WAIPU_VERSION)) KODI_PVR_WAIPU_LICENSE = GPL-2.0+ KODI_PVR_WAIPU_LICENSE_FILES = pvr.waipu/LICENSE.txt From thomas.petazzoni at bootlin.com Mon May 13 20:10:45 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:45 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-hdhomerun: bump version to 21.0.1-Omega Message-ID: <20240513203450.3430287155@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=6670bde37b9fc79fc8953f6ca07ef4a6191ea37a branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.hash | 2 +- package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.hash b/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.hash index 8f24eb7158..c1635b5582 100644 --- a/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.hash +++ b/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 3adbb5da035d714ccdfe9fa08185487fc218dd14464dc3b8242254a852ac1f8a kodi-pvr-hdhomerun-21.0.0-Omega.tar.gz +sha256 5c59d1ca40846b733175ba0f5360b86ea676a64d1a162bdc0faf8e16a8f2dea0 kodi-pvr-hdhomerun-21.0.1-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.mk b/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.mk index e384480f80..5f69f606ef 100644 --- a/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.mk +++ b/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_HDHOMERUN_VERSION = 21.0.0-Omega +KODI_PVR_HDHOMERUN_VERSION = 21.0.1-Omega KODI_PVR_HDHOMERUN_SITE = $(call github,kodi-pvr,pvr.hdhomerun,$(KODI_PVR_HDHOMERUN_VERSION)) KODI_PVR_HDHOMERUN_LICENSE = GPL-2.0+ KODI_PVR_HDHOMERUN_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:11:18 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:11:18 +0200 Subject: [Buildroot] [git commit] package/kodi-skin-confluence: bump version Message-ID: <20240513203450.DC42B87153@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=8fbac15e4c2e730c846c139e8986cc2b56b36018 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-skin-confluence/kodi-skin-confluence.hash | 2 +- package/kodi-skin-confluence/kodi-skin-confluence.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-skin-confluence/kodi-skin-confluence.hash b/package/kodi-skin-confluence/kodi-skin-confluence.hash index ed5aaf1fed..e8098abed4 100644 --- a/package/kodi-skin-confluence/kodi-skin-confluence.hash +++ b/package/kodi-skin-confluence/kodi-skin-confluence.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 f5cd0fe3591feedce016d3aaa8074bb8bc30121feb708b3a07ac87f453974106 kodi-skin-confluence-1995b890238e2737433cbaffd49993753b35eea9.tar.gz +sha256 99b243b7ccb9e0f3e1455e8967f99fd7d98d8924be0d9fe82de12448fe2ecc4e kodi-skin-confluence-f8479bece875313049943fba834e551f6b7d2cf5.tar.gz sha256 89931c1fb1f3716694175763cf3221cfcd63d6935031cf6b4512d17ffe5d9860 LICENSE.txt diff --git a/package/kodi-skin-confluence/kodi-skin-confluence.mk b/package/kodi-skin-confluence/kodi-skin-confluence.mk index af67693496..68d25e184c 100644 --- a/package/kodi-skin-confluence/kodi-skin-confluence.mk +++ b/package/kodi-skin-confluence/kodi-skin-confluence.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_SKIN_CONFLUENCE_VERSION = 1995b890238e2737433cbaffd49993753b35eea9 +KODI_SKIN_CONFLUENCE_VERSION = f8479bece875313049943fba834e551f6b7d2cf5 KODI_SKIN_CONFLUENCE_SITE = $(call github,xbmc,skin.confluence,$(KODI_SKIN_CONFLUENCE_VERSION)) KODI_SKIN_CONFLUENCE_LICENSE = GPL-2.0 KODI_SKIN_CONFLUENCE_LICENSE_FILES = LICENSE.txt From thomas.petazzoni at bootlin.com Mon May 13 20:11:10 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:11:10 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-vdr-vnsi: bump version to 21.1.1-Omega Message-ID: <20240513203450.AE86C87136@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=fc1be9d9f20fb9484be693201ade140da148237d branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.hash | 2 +- package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.hash b/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.hash index 5742851593..1922f7b3cd 100644 --- a/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.hash +++ b/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 5c7317814d18439a36b6dc45e964aa13724ac19b46344d0d9196356f7c42921c kodi-pvr-vdr-vnsi-21.1.0-Omega.tar.gz +sha256 30cde3d04ca47091f92569c4826a959d14fad728699c258014dcde2be3d40db1 kodi-pvr-vdr-vnsi-21.1.1-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.mk b/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.mk index b90c128404..1769cf4d33 100644 --- a/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.mk +++ b/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_VDR_VNSI_VERSION = 21.1.0-Omega +KODI_PVR_VDR_VNSI_VERSION = 21.1.1-Omega KODI_PVR_VDR_VNSI_SITE = $(call github,kodi-pvr,pvr.vdr.vnsi,$(KODI_PVR_VDR_VNSI_VERSION)) KODI_PVR_VDR_VNSI_LICENSE = GPL-2.0+ KODI_PVR_VDR_VNSI_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:11:16 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:11:16 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-wmc: bump version to 21.0.1-Omega Message-ID: <20240513203450.D17EC87142@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=914b67e8c9d560ac24dcbb168bf2d9556fde2fa4 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-wmc/kodi-pvr-wmc.hash | 2 +- package/kodi-pvr-wmc/kodi-pvr-wmc.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-wmc/kodi-pvr-wmc.hash b/package/kodi-pvr-wmc/kodi-pvr-wmc.hash index a6bd5d5dcc..fc04e44b2a 100644 --- a/package/kodi-pvr-wmc/kodi-pvr-wmc.hash +++ b/package/kodi-pvr-wmc/kodi-pvr-wmc.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 40f86146d98b770d4f76b6ea9ce3c9a2942d99b81d49e06ef2ccfef5b1e4c160 kodi-pvr-wmc-21.0.0-Omega.tar.gz +sha256 5008adcd9ce35e965bc172ac98306c0ec4b639182a7026e6ee9b36581516c8a8 kodi-pvr-wmc-21.0.1-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-wmc/kodi-pvr-wmc.mk b/package/kodi-pvr-wmc/kodi-pvr-wmc.mk index 9e601ecd16..81829d5eb4 100644 --- a/package/kodi-pvr-wmc/kodi-pvr-wmc.mk +++ b/package/kodi-pvr-wmc/kodi-pvr-wmc.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_WMC_VERSION = 21.0.0-Omega +KODI_PVR_WMC_VERSION = 21.0.1-Omega KODI_PVR_WMC_SITE = $(call github,kodi-pvr,pvr.wmc,$(KODI_PVR_WMC_VERSION)) KODI_PVR_WMC_LICENSE = GPL-2.0+ KODI_PVR_WMC_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:11:05 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:11:05 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-stalker: bump version to 21.0.1-Omega Message-ID: <20240513203450.9AB0287151@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=500351a2323145cc84c23d434c86a376026346a8 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-stalker/kodi-pvr-stalker.hash | 2 +- package/kodi-pvr-stalker/kodi-pvr-stalker.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-stalker/kodi-pvr-stalker.hash b/package/kodi-pvr-stalker/kodi-pvr-stalker.hash index 5944a9d06b..568a2b3824 100644 --- a/package/kodi-pvr-stalker/kodi-pvr-stalker.hash +++ b/package/kodi-pvr-stalker/kodi-pvr-stalker.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 a2cfe5e5acf186e368cd42bf811b217940685695be0e2689a299c80da7d217f4 kodi-pvr-stalker-21.0.0-Omega.tar.gz +sha256 d90b6b5595a820197d097da8ee6698bea786359cfe0bfaeabf4985dbc2af3064 kodi-pvr-stalker-21.0.1-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-stalker/kodi-pvr-stalker.mk b/package/kodi-pvr-stalker/kodi-pvr-stalker.mk index 14d9058e2a..ed04eefe9d 100644 --- a/package/kodi-pvr-stalker/kodi-pvr-stalker.mk +++ b/package/kodi-pvr-stalker/kodi-pvr-stalker.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_STALKER_VERSION = 21.0.0-Omega +KODI_PVR_STALKER_VERSION = 21.0.1-Omega KODI_PVR_STALKER_SITE = $(call github,kodi-pvr,pvr.stalker,$(KODI_PVR_STALKER_VERSION)) KODI_PVR_STALKER_LICENSE = GPL-2.0+ KODI_PVR_STALKER_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:35:23 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:35:23 +0200 Subject: [Buildroot] [PATCH 01/22] package/kodi-inputstream-adaptive: bump version to 21.4.7-Omega In-Reply-To: <20240512181356.2106142-1-bernd@kuhls.net> References: <20240512181356.2106142-1-bernd@kuhls.net> Message-ID: <20240513223523.4fcdf88a@windsurf> On Sun, 12 May 2024 20:13:35 +0200 Bernd Kuhls wrote: > Signed-off-by: Bernd Kuhls > --- > .../kodi-inputstream-adaptive/kodi-inputstream-adaptive.hash | 2 +- > package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Entire series applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 20:35:45 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:35:45 +0200 Subject: [Buildroot] [PATCH] package/gcc: enable obsolete nios2 target In-Reply-To: References: Message-ID: <20240513223545.6b43108d@windsurf> On Sun, 12 May 2024 18:19:15 +0200 Waldemar Brodkorb wrote: > GCC 14.1.0 deprecated NIOS2 so we had to enable it explicitely. > > Signed-off-by: Waldemar Brodkorb > --- > package/gcc/gcc-final/gcc-final.mk | 5 +++++ > package/gcc/gcc-initial/gcc-initial.mk | 5 +++++ > 2 files changed, 10 insertions(+) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 20:35:30 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:35:30 +0200 Subject: [Buildroot] [git commit] package/gcc: enable obsolete nios2 target Message-ID: <20240513203622.5610F87158@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=69cb6259479c548a09aac1140261c17f1cbb86b3 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master GCC 14.1.0 deprecated NIOS2 so we need to enable it explicitely. Signed-off-by: Waldemar Brodkorb Signed-off-by: Thomas Petazzoni --- package/gcc/gcc-final/gcc-final.mk | 5 +++++ package/gcc/gcc-initial/gcc-initial.mk | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/package/gcc/gcc-final/gcc-final.mk b/package/gcc/gcc-final/gcc-final.mk index 99d7047b5f..5feb96b568 100644 --- a/package/gcc/gcc-final/gcc-final.mk +++ b/package/gcc/gcc-final/gcc-final.mk @@ -117,6 +117,11 @@ else HOST_GCC_FINAL_CONF_OPTS += --disable-libgomp endif +# allow to build gcc 14.x +ifeq ($(BR2_nios2),y) +HOST_GCC_FINAL_CONF_OPTS += --enable-obsolete +endif + # End with user-provided options, so that they can override previously # defined options. HOST_GCC_FINAL_CONF_OPTS += \ diff --git a/package/gcc/gcc-initial/gcc-initial.mk b/package/gcc/gcc-initial/gcc-initial.mk index 1f8b76a942..8b4247bdad 100644 --- a/package/gcc/gcc-initial/gcc-initial.mk +++ b/package/gcc/gcc-initial/gcc-initial.mk @@ -42,6 +42,11 @@ HOST_GCC_INITIAL_CONF_OPTS = \ --disable-largefile \ $(call qstrip,$(BR2_EXTRA_GCC_CONFIG_OPTIONS)) +# allow to build gcc 14.x +ifeq ($(BR2_nios2),y) +HOST_GCC_INITIAL_CONF_OPTS += --enable-obsolete +endif + HOST_GCC_INITIAL_CONF_ENV = \ $(HOST_GCC_COMMON_CONF_ENV) From thomas.petazzoni at bootlin.com Mon May 13 20:37:38 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:37:38 +0200 Subject: [Buildroot] [git commit] package/gcc: refactor nios2 obsolete handling into common gcc code Message-ID: <20240513203849.1A0748715D@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=1c8bdef54213640e88b199466d1e504515c1a073 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Commit 69cb6259479c548a09aac1140261c17f1cbb86b3 ("package/gcc: enable obsolete nios2 target") added some handling of nios2 with gcc 14.x, duplicated between gcc-initial and gcc-final. Let's deduplicate this logic into the common package/gcc/gcc.mk code. Signed-off-by: Thomas Petazzoni --- package/gcc/gcc-final/gcc-final.mk | 5 ----- package/gcc/gcc-initial/gcc-initial.mk | 5 ----- package/gcc/gcc.mk | 5 +++++ 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/package/gcc/gcc-final/gcc-final.mk b/package/gcc/gcc-final/gcc-final.mk index 5feb96b568..99d7047b5f 100644 --- a/package/gcc/gcc-final/gcc-final.mk +++ b/package/gcc/gcc-final/gcc-final.mk @@ -117,11 +117,6 @@ else HOST_GCC_FINAL_CONF_OPTS += --disable-libgomp endif -# allow to build gcc 14.x -ifeq ($(BR2_nios2),y) -HOST_GCC_FINAL_CONF_OPTS += --enable-obsolete -endif - # End with user-provided options, so that they can override previously # defined options. HOST_GCC_FINAL_CONF_OPTS += \ diff --git a/package/gcc/gcc-initial/gcc-initial.mk b/package/gcc/gcc-initial/gcc-initial.mk index 8b4247bdad..1f8b76a942 100644 --- a/package/gcc/gcc-initial/gcc-initial.mk +++ b/package/gcc/gcc-initial/gcc-initial.mk @@ -42,11 +42,6 @@ HOST_GCC_INITIAL_CONF_OPTS = \ --disable-largefile \ $(call qstrip,$(BR2_EXTRA_GCC_CONFIG_OPTIONS)) -# allow to build gcc 14.x -ifeq ($(BR2_nios2),y) -HOST_GCC_INITIAL_CONF_OPTS += --enable-obsolete -endif - HOST_GCC_INITIAL_CONF_ENV = \ $(HOST_GCC_COMMON_CONF_ENV) diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk index 94935d79a2..672f9472a9 100644 --- a/package/gcc/gcc.mk +++ b/package/gcc/gcc.mk @@ -293,6 +293,11 @@ HOST_GCC_COMMON_CONF_OPTS += \ --with-long-double-128 endif +# allow to build gcc 14.x +ifeq ($(BR2_nios2),y) +HOST_GCC_COMMON_CONF_OPTS += --enable-obsolete +endif + HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS += -DBR_CROSS_PATH_SUFFIX='".br_real"' # For gcc-initial, we need to tell gcc that the C library will be From thomas.petazzoni at bootlin.com Mon May 13 20:40:39 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:40:39 +0200 Subject: [Buildroot] [PATCH] package/gcc: enable obsolete nios2 target In-Reply-To: References: Message-ID: <20240513224039.6aa3b261@windsurf> On Sun, 12 May 2024 18:19:15 +0200 Waldemar Brodkorb wrote: > +# allow to build gcc 14.x > +ifeq ($(BR2_nios2),y) > +HOST_GCC_FINAL_CONF_OPTS += --enable-obsolete > +endif Dammit, I applied, but in fact, this change should have gone in one single place: package/gcc/gcc.mk, adding to HOST_GCC_COMMON_CONF_OPTS, which is used for both the gcc-initial and gcc-final stage. So I did this as a follow-up commit in https://gitlab.com/buildroot.org/buildroot/-/commit/1c8bdef54213640e88b199466d1e504515c1a073. Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 20:40:48 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:40:48 +0200 Subject: [Buildroot] [git commit] package/zlib-ng: fix riscv build with uclibc Message-ID: <20240513204453.D4F4387163@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=36e417efc85141001df13a1e50f73dae682da4f3 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fix the following riscv build failure with uclibc-ng < 1.0.43 raised since bump to version 2.1.6 in commit 47b6737e841baf8b666ea9f37edc5f169652e88d and https://github.com/zlib-ng/zlib-ng/commit/6ff8b52cefe56a824fae1d53fdd687bcde2e53c9: /home/autobuild/autobuild/instance-2/output-1/build/zlib-ng-2.1.6/arch/riscv/riscv_features.c:4:10: fatal error: sys/auxv.h: No such file or directory 4 | #include | ^~~~~~~~~~~~ Fixes: 47b6737e841baf8b666ea9f37edc5f169652e88d - http://autobuild.buildroot.org/results/06a7d8e59ec4de7c711d3f4a4624f67b97d78afe Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- ...h-riscv-riscv-features-c-fix-uclibc-build.patch | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/package/zlib-ng/0001-arch-riscv-riscv-features-c-fix-uclibc-build.patch b/package/zlib-ng/0001-arch-riscv-riscv-features-c-fix-uclibc-build.patch new file mode 100644 index 0000000000..39cc93f929 --- /dev/null +++ b/package/zlib-ng/0001-arch-riscv-riscv-features-c-fix-uclibc-build.patch @@ -0,0 +1,51 @@ +From 3f35bfccff2d1dacdfe9844712be1e042d028700 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 17 Mar 2024 21:56:53 +0100 +Subject: [PATCH] arch/riscv/riscv_features.c: fix uclibc build + +Fix the following uclibc build failure raised since version 2.1.4 and +https://github.com/zlib-ng/zlib-ng/commit/6ff8b52cefe56a824fae1d53fdd687bcde2e53c9: + +/home/autobuild/autobuild/instance-2/output-1/build/zlib-ng-2.1.6/arch/riscv/riscv_features.c:4:10: fatal error: sys/auxv.h: No such file or directory + 4 | #include + | ^~~~~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/06a7d8e59ec4de7c711d3f4a4624f67b97d78afe + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/zlib-ng/zlib-ng/commit/3f35bfccff2d1dacdfe9844712be1e042d028700 +--- + arch/riscv/riscv_features.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/arch/riscv/riscv_features.c b/arch/riscv/riscv_features.c +index 506b480c11..1e3f45e0a7 100644 +--- a/arch/riscv/riscv_features.c ++++ b/arch/riscv/riscv_features.c +@@ -1,9 +1,12 @@ + #include + #include + #include +-#include + #include + ++#if defined(__linux__) && defined(HAVE_SYS_AUXV_H) ++# include ++#endif ++ + #include "../../zbuild.h" + #include "riscv_features.h" + +@@ -33,7 +36,11 @@ void Z_INTERNAL riscv_check_features_compile_time(struct riscv_cpu_features *fea + } + + void Z_INTERNAL riscv_check_features_runtime(struct riscv_cpu_features *features) { ++#if defined(__linux__) && defined(HAVE_SYS_AUXV_H) + unsigned long hw_cap = getauxval(AT_HWCAP); ++#else ++ unsigned long hw_cap = 0; ++#endif + features->has_rvv = hw_cap & ISA_V_HWCAP; + } + From thomas.petazzoni at bootlin.com Mon May 13 20:44:52 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:44:52 +0200 Subject: [Buildroot] [PATCH v2, 1/1] package/zlib-ng: fix riscv build with uclibc In-Reply-To: <20240512101523.35332-1-fontaine.fabrice@gmail.com> References: <20240512101523.35332-1-fontaine.fabrice@gmail.com> Message-ID: <20240513224452.7b22a8a9@windsurf> On Sun, 12 May 2024 12:15:23 +0200 Fabrice Fontaine wrote: > Fix the following riscv build failure with uclibc-ng < 1.0.43 raised > since bump to version 2.1.6 in commit > 47b6737e841baf8b666ea9f37edc5f169652e88d and > https://github.com/zlib-ng/zlib-ng/commit/6ff8b52cefe56a824fae1d53fdd687bcde2e53c9: > > /home/autobuild/autobuild/instance-2/output-1/build/zlib-ng-2.1.6/arch/riscv/riscv_features.c:4:10: fatal error: sys/auxv.h: No such file or directory > 4 | #include > | ^~~~~~~~~~~~ > > Fixes: 47b6737e841baf8b666ea9f37edc5f169652e88d > - http://autobuild.buildroot.org/results/06a7d8e59ec4de7c711d3f4a4624f67b97d78afe > > Signed-off-by: Fabrice Fontaine > --- > Changes v1 -> v2: > - Fix build failure instead of disabling package Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 20:47:39 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:47:39 +0200 Subject: [Buildroot] [git commit] package/qemu: fix typo in help text of BR2_PACKAGE_QEMU_TARGET_RISCV32 Message-ID: <20240513204901.97E3087175@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=e23a44bbcba067935708d9949c23fae9c5814cd0 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master 33-bit was obviously a typo. Signed-off-by: Waldemar Brodkorb Signed-off-by: Thomas Petazzoni --- package/qemu/Config.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/qemu/Config.in b/package/qemu/Config.in index 8d53ced300..91e0de884f 100644 --- a/package/qemu/Config.in +++ b/package/qemu/Config.in @@ -289,7 +289,7 @@ config BR2_PACKAGE_QEMU_TARGET_RISCV32 bool "riscv32" select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM help - RISC-V 33-bit architecture. + RISC-V 32-bit architecture. config BR2_PACKAGE_QEMU_TARGET_RISCV64 bool "riscv64" From thomas.petazzoni at bootlin.com Mon May 13 20:47:18 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:47:18 +0200 Subject: [Buildroot] [git commit] package/qemu: update to 9.0.0 Message-ID: <20240513204901.8CE9187174@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=103a55028c75dace312470ba05a197886c6b6100 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master See here the changes: https://wiki.qemu.org/ChangeLog/9.0 Disable plugins because of compile errors. Patches 0002/0003 are Upstream. Signed-off-by: Waldemar Brodkorb Signed-off-by: Thomas Petazzoni --- .checkpackageignore | 1 - ...u-seccomp.c-add-missing-header-for-CLONE_.patch | 42 ---------------------- ...stall-trace-events-file-only-if-necessary.patch | 30 ---------------- package/qemu/qemu.hash | 2 +- package/qemu/qemu.mk | 4 ++- 5 files changed, 4 insertions(+), 75 deletions(-) diff --git a/.checkpackageignore b/.checkpackageignore index f145e0bd11..7057f91925 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -1340,7 +1340,6 @@ package/python3/0023-Add-an-option-to-disable-uuid-module.patch lib_patch.Upstre package/python3/0024-configure.ac-fixup-CC-print-multiarch-output-for-mus.patch lib_patch.Upstream package/python3/0025-Add-an-option-to-disable-the-berkeleydb-module.patch lib_patch.Upstream package/python3/0026-lib-crypt-uClibc-ng-doesn-t-set-errno-when-encryptio.patch lib_patch.Upstream -package/qemu/0002-softmmu-qemu-seccomp.c-add-missing-header-for-CLONE_.patch lib_patch.Upstream package/qextserialport/0001-Create-a-main-include-file-QExtSerialPort.patch lib_patch.Upstream package/qextserialport/0002-Tell-qmake-to-add-a-pkgconfig-file-to-ease-usage-wit.patch lib_patch.Upstream package/qt5/qt5base/0001-qtbase-Fix-build-error-when-using-EGL.patch lib_patch.Upstream diff --git a/package/qemu/0002-softmmu-qemu-seccomp.c-add-missing-header-for-CLONE_.patch b/package/qemu/0002-softmmu-qemu-seccomp.c-add-missing-header-for-CLONE_.patch deleted file mode 100644 index 91506b14d9..0000000000 --- a/package/qemu/0002-softmmu-qemu-seccomp.c-add-missing-header-for-CLONE_.patch +++ /dev/null @@ -1,42 +0,0 @@ -From df07d3754bdf15e0efac244cfee290c9bac86352 Mon Sep 17 00:00:00 2001 -From: Romain Naour -Date: Mon, 2 May 2022 23:17:46 +0200 -Subject: [PATCH] softmmu/qemu-seccomp.c: add missing header for CLONE_NEWGROUP -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -With seccomp support enabled Qemu 7.0.0 fail to build with the -following error: - -../softmmu/qemu-seccomp.c:116:19: error: ???CLONE_NEWCGROUP??? undeclared here (not in a function) - 116 | FORBID_CLONE_FLAG(CLONE_NEWCGROUP); - | ^~~~~~~~~~~~~~~ -../softmmu/qemu-seccomp.c:73:18: note: in definition of macro ???FORBID_CLONE_FLAG??? - 73 | .datum_a = flag, .datum_b = flag } } - | ^~~~ - -CLONE_NEWCGROUP has been added in Qemu 7.0.0 by commit [1]. - -[1] https://git.qemu.org/?p=qemu.git;a=commitdiff;h=5a2f693f07a1e93ada5277b2fb1530b2698be0fa - -Signed-off-by: Romain Naour ---- - softmmu/qemu-seccomp.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/softmmu/qemu-seccomp.c b/softmmu/qemu-seccomp.c -index deaf8a4ef5..96c83e121f 100644 ---- a/softmmu/qemu-seccomp.c -+++ b/softmmu/qemu-seccomp.c -@@ -21,6 +21,7 @@ - #include - #include - #include "sysemu/seccomp.h" -+#include - #include - - /* For some architectures (notably ARM) cacheflush is not supported until --- -2.35.1 - diff --git a/package/qemu/0003-tracing-install-trace-events-file-only-if-necessary.patch b/package/qemu/0003-tracing-install-trace-events-file-only-if-necessary.patch deleted file mode 100644 index 36bdaa4978..0000000000 --- a/package/qemu/0003-tracing-install-trace-events-file-only-if-necessary.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 5c43da1e4983cc3c209b325a5228b6149e0a0ccf Mon Sep 17 00:00:00 2001 -From: Carlos Santos -Date: Fri, 24 Mar 2023 21:40:22 -0300 -Subject: [PATCH] tracing: install trace events file only if necessary - -It is not useful when configuring with --enable-trace-backends=nop. - -Upstream: https://patchwork.kernel.org/project/qemu-devel/patch/20230408010410.281263-1-casantos at redhat.com/ -Signed-off-by: Carlos Santos -Signed-off-by: Carlos Santos ---- - trace/meson.build | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/trace/meson.build b/trace/meson.build -index 8e80be895c..30b1d942eb 100644 ---- a/trace/meson.build -+++ b/trace/meson.build -@@ -64,7 +64,7 @@ trace_events_all = custom_target('trace-events-all', - input: trace_events_files, - command: [ 'cat', '@INPUT@' ], - capture: true, -- install: true, -+ install: get_option('trace_backends') != [ 'nop' ], - install_dir: qemu_datadir) - - if 'ust' in get_option('trace_backends') --- -2.31.1 - diff --git a/package/qemu/qemu.hash b/package/qemu/qemu.hash index 61e51a923f..2c905d2e77 100644 --- a/package/qemu/qemu.hash +++ b/package/qemu/qemu.hash @@ -1,4 +1,4 @@ # Locally computed, tarball verified with GPG signature -sha256 37ce2ef5e500fb752f681117c68b45118303ea49a7e26bd54080ced54fab7def qemu-8.1.1.tar.xz +sha256 32708ac66c30d8c892633ea968c771c1c76d597d70ddead21a0d22ccf386da69 qemu-9.0.0.tar.xz sha256 6f04ae8364d0079a192b14635f4b1da294ce18724c034c39a6a41d1b09df6100 COPYING sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB diff --git a/package/qemu/qemu.mk b/package/qemu/qemu.mk index ef406dc8e9..8de803dd25 100644 --- a/package/qemu/qemu.mk +++ b/package/qemu/qemu.mk @@ -6,7 +6,7 @@ # When updating the version, check whether the list of supported targets # needs to be updated. -QEMU_VERSION = 8.1.1 +QEMU_VERSION = 9.0.0 QEMU_SOURCE = qemu-$(QEMU_VERSION).tar.xz QEMU_SITE = https://download.qemu.org QEMU_SELINUX_MODULES = qemu virt @@ -320,6 +320,7 @@ define QEMU_CONFIGURE_CMDS --disable-opengl \ --disable-oss \ --disable-pa \ + --disable-plugins \ --disable-rbd \ --disable-sanitizers \ --disable-selinux \ @@ -504,6 +505,7 @@ define HOST_QEMU_CONFIGURE_CMDS --disable-vde \ --disable-vhost-user-blk-server \ --disable-vnc-jpeg \ + --disable-plugins \ --disable-png \ --disable-vnc-sasl \ --enable-slirp \ From thomas.petazzoni at bootlin.com Mon May 13 20:49:49 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:49:49 +0200 Subject: [Buildroot] [PATCH] package/qemu: update to 9.0.0 In-Reply-To: References: Message-ID: <20240513224949.169828d9@windsurf> Hello, On Sun, 12 May 2024 15:20:12 +0200 Waldemar Brodkorb wrote: > diff --git a/package/qemu/0002-softmmu-qemu-seccomp.c-add-missing-header-for-CLONE_.patch b/package/qemu/0002-softmmu-qemu-seccomp.c-add-missing-header-for-CLONE_.patch > deleted file mode 100644 > index 91506b14d9..0000000000 > --- a/package/qemu/0002-softmmu-qemu-seccomp.c-add-missing-header-for-CLONE_.patch > +++ /dev/null The removal of this patch needed a .checkpackageignore change, so I did that. > diff --git a/package/qemu/Config.in b/package/qemu/Config.in > index 8d53ced300..91e0de884f 100644 > --- a/package/qemu/Config.in > +++ b/package/qemu/Config.in > @@ -289,7 +289,7 @@ config BR2_PACKAGE_QEMU_TARGET_RISCV32 > bool "riscv32" > select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM > help > - RISC-V 33-bit architecture. > + RISC-V 32-bit architecture. This typo fix was unrelated to the bump, so it should have been a separate patch. Therefore I made a separate commit. Applied with those changes, thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 20:51:09 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:51:09 +0200 Subject: [Buildroot] [PATCH 1/1] {linux, linux-headers}: bump 4.19.x / 5.{4, 10, 15}.x / 6.{1, 6, 8}.x series In-Reply-To: <20240512181331.2106108-1-bernd@kuhls.net> References: <20240512181331.2106108-1-bernd@kuhls.net> Message-ID: <20240513225109.386a0e4f@windsurf> On Sun, 12 May 2024 20:13:31 +0200 Bernd Kuhls wrote: > Signed-off-by: Bernd Kuhls > --- > linux/Config.in | 2 +- > linux/linux.hash | 14 +++++++------- > package/linux-headers/Config.in.host | 14 +++++++------- > 3 files changed, 15 insertions(+), 15 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 20:50:00 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:50:00 +0200 Subject: [Buildroot] [git commit] package/spdlog: bump to 1.14.1 Message-ID: <20240513205112.F182E8718F@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=0ae5b4ab38d3efd5ca94f05d44594e7892aad949 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master - Fixed compatibility issue between c++17 and c++11 https://github.com/gabime/spdlog/releases/tag/v1.14.1 Signed-off-by: Michael Nosthoff Signed-off-by: Thomas Petazzoni --- package/spdlog/spdlog.hash | 2 +- package/spdlog/spdlog.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/spdlog/spdlog.hash b/package/spdlog/spdlog.hash index 7a0f442ab0..16d841769d 100644 --- a/package/spdlog/spdlog.hash +++ b/package/spdlog/spdlog.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 429a6b73ade8285cb21f83bacf89e2821dd1720ea7faa3cb518ffe04b4e00efc spdlog-1.14.0.tar.gz +sha256 1586508029a7d0670dfcb2d97575dcdc242d3868a259742b69f100801ab4e16b spdlog-1.14.1.tar.gz sha256 4ccecab18d1ff0b61174fe3d6c430541625d3ddb865b0d5887db296f883c76e7 LICENSE diff --git a/package/spdlog/spdlog.mk b/package/spdlog/spdlog.mk index c435633f41..6b24357697 100644 --- a/package/spdlog/spdlog.mk +++ b/package/spdlog/spdlog.mk @@ -4,7 +4,7 @@ # ################################################################################ -SPDLOG_VERSION = 1.14.0 +SPDLOG_VERSION = 1.14.1 SPDLOG_SITE = $(call github,gabime,spdlog,v$(SPDLOG_VERSION)) SPDLOG_LICENSE = MIT SPDLOG_LICENSE_FILES = LICENSE From thomas.petazzoni at bootlin.com Mon May 13 20:50:36 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:50:36 +0200 Subject: [Buildroot] [git commit] {linux, linux-headers}: bump 4.19.x / 5.{4, 10, 15}.x / 6.{1, 6, 8}.x series Message-ID: <20240513205113.07DDB87190@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=a28bc67ce5f37661275c90904db7929c2416dc88 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- linux/Config.in | 2 +- linux/linux.hash | 14 +++++++------- package/linux-headers/Config.in.host | 14 +++++++------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/linux/Config.in b/linux/Config.in index ca6b9a08b0..d3d4c42910 100644 --- a/linux/Config.in +++ b/linux/Config.in @@ -134,7 +134,7 @@ config BR2_LINUX_KERNEL_CUSTOM_REPO_GIT_SUBMODULES config BR2_LINUX_KERNEL_VERSION string - default "6.8.6" if BR2_LINUX_KERNEL_LATEST_VERSION + default "6.8.9" if BR2_LINUX_KERNEL_LATEST_VERSION default "5.10.162-cip24" if BR2_LINUX_KERNEL_LATEST_CIP_VERSION default "5.10.162-cip24-rt10" if BR2_LINUX_KERNEL_LATEST_CIP_RT_VERSION default BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE \ diff --git a/linux/linux.hash b/linux/linux.hash index 7154fc75bf..af82148e80 100644 --- a/linux/linux.hash +++ b/linux/linux.hash @@ -1,13 +1,13 @@ # From https://www.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc -sha256 9e723232d603ab45ebf043c34714c48f277ab195c29abcb8472f2a4c3a5a1995 linux-6.8.6.tar.xz -sha256 639e50060e3c8f23ed017cb10cfeacc6ba88ff5583812bb76859b4cc6a128291 linux-6.6.27.tar.xz -sha256 d3d3c8c44f0f0a870a95bd2823f9d91979d1aa6f266da5d8cccd0c4b15e3115b linux-6.1.86.tar.xz +sha256 f905f1238ea7a8e85314bacf283302e8097006010d25fcea726d0de0ea5bc9b6 linux-6.8.9.tar.xz +sha256 b66a5b863b0f8669448b74ca83bd641a856f164b29956e539bbcb5fdeeab9cc6 linux-6.6.30.tar.xz +sha256 83a3d72e764fceda2c1fc68a4ea6b91253a28da56a688a2b61776b0d19788e1d linux-6.1.90.tar.xz # From https://www.kernel.org/pub/linux/kernel/v5.x/sha256sums.asc -sha256 c85859b86d2e6d1fc91ca1be8b44f24a9b5bb9f86869b04a8665a3a6559126e4 linux-5.15.155.tar.xz -sha256 879ca159c34ea9d3a6775f292cc59c2d3931d57dca00f0bebe2675ea0c82c6a9 linux-5.10.215.tar.xz -sha256 eac7b421a43cd46a3dbebf7c85d075faa7e164d80d215d31fcd35544b6f79ed4 linux-5.4.274.tar.xz +sha256 f9071c83a4fd8b80af026b48cfc1869bfa25883f9148b92b5dc1e1e1e26dd5c6 linux-5.15.158.tar.xz +sha256 e310588c4b23f0959614e60f007afc20e9b1a8f296d682b041fa129f96fbe151 linux-5.10.216.tar.xz +sha256 dad2b068946f0ca0026130d7ab17601d5074d90b381379c4479314d4edf4304c linux-5.4.275.tar.xz # From https://www.kernel.org/pub/linux/kernel/v4.x/sha256sums.asc -sha256 a394fa5ffe321ee43dae9cccc724572f49fbb289875d39ea695adf712e51f74a linux-4.19.312.tar.xz +sha256 a8145e2ecf8437b6d06400c3358a595c47a74443b164890cf12a07d8722539c8 linux-4.19.313.tar.xz # Locally computed sha256 fb0edc3c18e47d2b6974cb0880a0afb5c3fa08f50ee87dfdf24349405ea5f8ae linux-cip-5.10.162-cip24.tar.gz sha256 b5539243f187e3d478d76d44ae13aab83952c94b885ad889df6fa9997e16a441 linux-cip-5.10.162-cip24-rt10.tar.gz diff --git a/package/linux-headers/Config.in.host b/package/linux-headers/Config.in.host index 5fe34456de..d8f48ed0b7 100644 --- a/package/linux-headers/Config.in.host +++ b/package/linux-headers/Config.in.host @@ -415,13 +415,13 @@ endchoice config BR2_DEFAULT_KERNEL_HEADERS string - default "4.19.312" if BR2_KERNEL_HEADERS_4_19 - default "5.4.274" if BR2_KERNEL_HEADERS_5_4 - default "5.10.215" if BR2_KERNEL_HEADERS_5_10 - default "5.15.155" if BR2_KERNEL_HEADERS_5_15 - default "6.1.86" if BR2_KERNEL_HEADERS_6_1 - default "6.6.27" if BR2_KERNEL_HEADERS_6_6 - default "6.8.6" if BR2_KERNEL_HEADERS_6_8 + default "4.19.313" if BR2_KERNEL_HEADERS_4_19 + default "5.4.275" if BR2_KERNEL_HEADERS_5_4 + default "5.10.216" if BR2_KERNEL_HEADERS_5_10 + default "5.15.158" if BR2_KERNEL_HEADERS_5_15 + default "6.1.90" if BR2_KERNEL_HEADERS_6_1 + default "6.6.30" if BR2_KERNEL_HEADERS_6_6 + default "6.8.9" if BR2_KERNEL_HEADERS_6_8 default BR2_DEFAULT_KERNEL_VERSION if BR2_KERNEL_HEADERS_VERSION default "custom" if BR2_KERNEL_HEADERS_CUSTOM_TARBALL default BR2_KERNEL_HEADERS_CUSTOM_REPO_VERSION \ From flavio.tapajos at newtesc.com.br Mon May 13 20:59:02 2024 From: flavio.tapajos at newtesc.com.br (=?UTF-8?q?Fl=C3=A1vio=20Tapaj=C3=B3s?=) Date: Mon, 13 May 2024 17:59:02 -0300 Subject: [Buildroot] [PATCH 1/1] package/python-sqlalchemy: bump version to 2.0.30 Message-ID: <20240513205902.1096057-1-flavio.tapajos@newtesc.com.br> --- package/python-sqlalchemy/python-sqlalchemy.hash | 4 ++-- package/python-sqlalchemy/python-sqlalchemy.mk | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/python-sqlalchemy/python-sqlalchemy.hash b/package/python-sqlalchemy/python-sqlalchemy.hash index 0bc9256c54..d047719d54 100644 --- a/package/python-sqlalchemy/python-sqlalchemy.hash +++ b/package/python-sqlalchemy/python-sqlalchemy.hash @@ -1,5 +1,5 @@ # md5, sha256 from https://pypi.org/pypi/sqlalchemy/json -md5 ea746e69e0702cc8d2c91c5140ce35cc SQLAlchemy-2.0.28.tar.gz -sha256 bd9566b8e58cabd700bc367b60e90d9349cd16f0984973f98a9a09f9c64e86f0 SQLAlchemy-2.0.29.tar.gz +md5 c13a21626c7ae00b42a08880af574e3c SQLAlchemy-2.0.30.tar.gz +sha256 2b1708916730f4830bc69d6f49d37f7698b5bd7530aca7f04f785f8849e95255 SQLAlchemy-2.0.30.tar.gz # Locally computed sha256 checksums sha256 3c0f59ab887d041de6a4e52ffe3e9edb5d9522de909fae9a6cd7adb6e7be3293 LICENSE diff --git a/package/python-sqlalchemy/python-sqlalchemy.mk b/package/python-sqlalchemy/python-sqlalchemy.mk index b7dac92a99..e1180a4e1a 100644 --- a/package/python-sqlalchemy/python-sqlalchemy.mk +++ b/package/python-sqlalchemy/python-sqlalchemy.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_SQLALCHEMY_VERSION = 2.0.29 +PYTHON_SQLALCHEMY_VERSION = 2.0.30 PYTHON_SQLALCHEMY_SOURCE = SQLAlchemy-$(PYTHON_SQLALCHEMY_VERSION).tar.gz -PYTHON_SQLALCHEMY_SITE = https://files.pythonhosted.org/packages/99/04/59971bfc2f192e3b52376ca8d1e134c78d04bc044ef7e04cf10c42d2ce17 +PYTHON_SQLALCHEMY_SITE = https://files.pythonhosted.org/packages/36/d0/0137ebcf0dc230c2e82a621b3af755b8788a2a9dd6fd1b8cd6d5e7f6b00d PYTHON_SQLALCHEMY_SETUP_TYPE = setuptools PYTHON_SQLALCHEMY_LICENSE = MIT PYTHON_SQLALCHEMY_LICENSE_FILES = LICENSE -- 2.45.0 From thomas.petazzoni at bootlin.com Mon May 13 20:59:03 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:59:03 +0200 Subject: [Buildroot] [git commit] package/libzenoh-c: new package Message-ID: <20240513205943.A318F87279@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=1b533c2d9ee6247939fb34fbe6550dea0a656ff1 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master This package provides a C binding based on the main Zenoh implementation written in Rust. https://github.com/eclipse-zenoh/zenoh-c Signed-off-by: Alex Michel Signed-off-by: Thomas Petazzoni --- DEVELOPERS | 1 + package/Config.in | 1 + package/libzenoh-c/Config.in | 9 +++++++++ package/libzenoh-c/libzenoh-c.hash | 3 +++ package/libzenoh-c/libzenoh-c.mk | 40 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 54 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index ad03c26ea4..a9deddb343 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -83,6 +83,7 @@ N: Alessandro Partesotti F: package/oatpp/ N: Alex Michel +F: package/libzenoh-c/ F: package/libzenoh-pico/ F: package/network-manager-openvpn/ diff --git a/package/Config.in b/package/Config.in index 768103e0c4..1b6a5b0dab 100644 --- a/package/Config.in +++ b/package/Config.in @@ -2048,6 +2048,7 @@ menu "Networking" source "package/libwebsock/Config.in" source "package/libwebsockets/Config.in" source "package/libyang/Config.in" + source "package/libzenoh-c/Config.in" source "package/libzenoh-pico/Config.in" source "package/lksctp-tools/Config.in" source "package/mbuffer/Config.in" diff --git a/package/libzenoh-c/Config.in b/package/libzenoh-c/Config.in new file mode 100644 index 0000000000..d22807c047 --- /dev/null +++ b/package/libzenoh-c/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBZENOH_C + bool "libzenoh-c" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_RUSTC + help + This package provides a C binding based on the main + Zenoh implementation written in Rust. + + https://github.com/eclipse-zenoh/zenoh-c diff --git a/package/libzenoh-c/libzenoh-c.hash b/package/libzenoh-c/libzenoh-c.hash new file mode 100644 index 0000000000..8331f5cca4 --- /dev/null +++ b/package/libzenoh-c/libzenoh-c.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 c792f0be936ecbb3f759124be28950a01385f4680eaf4f1da55997640899648e libzenoh-c-0.11.0.2-cargo2.tar.gz +sha256 01a44774f7b1a453595c7c6d7f7308284ba6a1059dc49e14dad6647e1d44a338 LICENSE diff --git a/package/libzenoh-c/libzenoh-c.mk b/package/libzenoh-c/libzenoh-c.mk new file mode 100644 index 0000000000..3a50fe6bf1 --- /dev/null +++ b/package/libzenoh-c/libzenoh-c.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# libzenoh-c +# +################################################################################ + +LIBZENOH_C_VERSION = 0.11.0.2 +LIBZENOH_C_SITE = $(call github,eclipse-zenoh,zenoh-c,$(LIBZENOH_C_VERSION)) +LIBZENOH_C_LICENSE = Apache-2.0 or EPL-2.0 +LIBZENOH_C_LICENSE_FILES = LICENSE +LIBZENOH_C_INSTALL_STAGING = YES + +ifeq ($(BR2_ENABLE_DEBUG),y) +LIBZENOH_C_LIB_LOCATION = $(@D)/target/$(RUSTC_TARGET_NAME)/debug +else +LIBZENOH_C_LIB_LOCATION = $(@D)/target/$(RUSTC_TARGET_NAME)/release +endif + +define LIBZENOH_C_INSTALL_FILES + $(INSTALL) -D -m 644 \ + $(LIBZENOH_C_LIB_LOCATION)/libzenohc.so \ + $(1)/usr/lib/libzenohc.so +endef + +# This package does not provide any binaries or examples, and the +# cargo infra does not provide any possibility to disable the --bins +# option in cargo install step, we have to override the +# INSTALL_STAGING_CMDS and the INSTALL_TARGET_CMDS macros. + +define LIBZENOH_C_INSTALL_TARGET_CMDS + $(call LIBZENOH_C_INSTALL_FILES,$(TARGET_DIR)) +endef + +define LIBZENOH_C_INSTALL_STAGING_CMDS + $(call LIBZENOH_C_INSTALL_FILES,$(STAGING_DIR)) + mkdir -p $(STAGING_DIR)/usr/include/ + cp -dpfr $(@D)/include/* $(STAGING_DIR)/usr/include/ +endef + +$(eval $(cargo-package)) From thomas.petazzoni at bootlin.com Mon May 13 21:00:26 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:00:26 +0200 Subject: [Buildroot] [PATCH v5 1/1] package/libzenoh-c: new package In-Reply-To: References: Message-ID: <20240513230026.7ec663d3@windsurf> Hello Alex, On Mon, 13 May 2024 12:30:49 +0000 Michel Alex wrote: > This package provides a C binding based on the main > Zenoh implementation written in Rust. > Because this lib does not provide any binaries or examples, > and the cargo infra does not provide any possibility to > disable the --bins option in cargo install step, we > have to override the INSTALL_STAGING_CMDS and the > INSTALL_TARGET_CMDS macros to prevent failing of the > buildroot installation step. I have moved this explanation as a comment inside the .mk file, next to the install step, and I have applied your patch to our master branch. Thanks a lot, and sorry for the time it took to get your patch integrated! Best regards, Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 21:00:36 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:00:36 +0200 Subject: [Buildroot] [git commit] package/python-sqlalchemy: bump version to 2.0.30 Message-ID: <20240513210212.6ADD7872E7@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=fbd082e0cac44e53a83d62ff5c103fddd7fd6f31 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Thomas Petazzoni --- package/python-sqlalchemy/python-sqlalchemy.hash | 4 ++-- package/python-sqlalchemy/python-sqlalchemy.mk | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/python-sqlalchemy/python-sqlalchemy.hash b/package/python-sqlalchemy/python-sqlalchemy.hash index 0bc9256c54..d047719d54 100644 --- a/package/python-sqlalchemy/python-sqlalchemy.hash +++ b/package/python-sqlalchemy/python-sqlalchemy.hash @@ -1,5 +1,5 @@ # md5, sha256 from https://pypi.org/pypi/sqlalchemy/json -md5 ea746e69e0702cc8d2c91c5140ce35cc SQLAlchemy-2.0.28.tar.gz -sha256 bd9566b8e58cabd700bc367b60e90d9349cd16f0984973f98a9a09f9c64e86f0 SQLAlchemy-2.0.29.tar.gz +md5 c13a21626c7ae00b42a08880af574e3c SQLAlchemy-2.0.30.tar.gz +sha256 2b1708916730f4830bc69d6f49d37f7698b5bd7530aca7f04f785f8849e95255 SQLAlchemy-2.0.30.tar.gz # Locally computed sha256 checksums sha256 3c0f59ab887d041de6a4e52ffe3e9edb5d9522de909fae9a6cd7adb6e7be3293 LICENSE diff --git a/package/python-sqlalchemy/python-sqlalchemy.mk b/package/python-sqlalchemy/python-sqlalchemy.mk index b7dac92a99..e1180a4e1a 100644 --- a/package/python-sqlalchemy/python-sqlalchemy.mk +++ b/package/python-sqlalchemy/python-sqlalchemy.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_SQLALCHEMY_VERSION = 2.0.29 +PYTHON_SQLALCHEMY_VERSION = 2.0.30 PYTHON_SQLALCHEMY_SOURCE = SQLAlchemy-$(PYTHON_SQLALCHEMY_VERSION).tar.gz -PYTHON_SQLALCHEMY_SITE = https://files.pythonhosted.org/packages/99/04/59971bfc2f192e3b52376ca8d1e134c78d04bc044ef7e04cf10c42d2ce17 +PYTHON_SQLALCHEMY_SITE = https://files.pythonhosted.org/packages/36/d0/0137ebcf0dc230c2e82a621b3af755b8788a2a9dd6fd1b8cd6d5e7f6b00d PYTHON_SQLALCHEMY_SETUP_TYPE = setuptools PYTHON_SQLALCHEMY_LICENSE = MIT PYTHON_SQLALCHEMY_LICENSE_FILES = LICENSE From thomas.petazzoni at bootlin.com Mon May 13 21:04:05 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:04:05 +0200 Subject: [Buildroot] [PATCH 1/1] package/python-sqlalchemy: bump version to 2.0.30 In-Reply-To: <20240513205902.1096057-1-flavio.tapajos@newtesc.com.br> References: <20240513205902.1096057-1-flavio.tapajos@newtesc.com.br> Message-ID: <20240513230405.5a3efcaf@windsurf> On Mon, 13 May 2024 17:59:02 -0300 Fl?vio Tapaj?s wrote: > --- > package/python-sqlalchemy/python-sqlalchemy.hash | 4 ++-- > package/python-sqlalchemy/python-sqlalchemy.mk | 4 ++-- > 2 files changed, 4 insertions(+), 4 deletions(-) Your Signed-off-by was missing... but I realized right after pushing, so unfortunately I pushed as-is, without your Signed-off-by :-/ Best regards, Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 21:05:25 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:05:25 +0200 Subject: [Buildroot] [PATCH 1/1] boot/arm-trusted-firmware: add trusted boot option In-Reply-To: <20240410212834.479ac502@windsurf> References: <20240328181247.3009506-1-javad.rahimipetroudi@mind.be> <20240410212834.479ac502@windsurf> Message-ID: <20240513230525.287a3124@windsurf> Hello Javad, Do you have any feedback on the below questions? Thanks! Thomas On Wed, 10 Apr 2024 21:28:34 +0200 Thomas Petazzoni via buildroot wrote: > Hello Javad, > > On Thu, 28 Mar 2024 19:12:47 +0100 > Javad Rahimipetroudi via buildroot wrote: > > > This patch adds the required fields to enable Trusted Board Boot in > > TF-A. The users should provide ROT_KEY private key to build the TF-A in > > this mode. The ROT_KEY is used to sign the FIP image during the TF-A > > build. Furthermore, the source code of the mbedTLS is also used during > > the build process. > > > > Signed-off-by: Javad Rahimipetroudi > > Thanks for this contribution! It looks good, I only have one > doubt/issue with it. > > > +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_TRUSTED_BOOT),y) > > +ARM_TRUSTED_FIRMWARE_TRUSTED_BOOT_ROT_KEY = $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_ROT_KEY)) > > +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += \ > > + TRUSTED_BOARD_BOOT=1 \ > > + MBEDTLS_DIR=$(MBEDTLS_SRCDIR) \ > > This re-use of the mbedtls source code, outside of the mbedtls package > build itself sounded a bit suspicious to me. Indeed, mbedtls being a > dependency of arm-trusted-firmware, it means that > $(MBEDTLS_SRCDIR) will contain an already built mbedtls. Would this be > a problem? > > Looking at the arm-trusted-firmware build logic, it looks like it > isn't: the TF-A build system will rebuild in its own folder the mbedtls > library. However, when I see: > > LIBMBEDTLS_SRCS += $(addprefix ${MBEDTLS_DIR}/library/, \ > aes.c \ > asn1parse.c \ > asn1write.c \ > cipher.c \ > cipher_wrap.c \ > constant_time.c \ > hash_info.c \ > memory_buffer_alloc.c \ > oid.c \ > platform.c \ > platform_util.c \ > bignum.c \ > bignum_core.c \ > gcm.c \ > md.c \ > pk.c \ > pk_wrap.c \ > pkparse.c \ > pkwrite.c \ > sha256.c \ > sha512.c \ > ecdsa.c \ > ecp_curves.c \ > ecp.c \ > rsa.c \ > rsa_alt_helpers.c \ > x509.c \ > x509_crt.c \ > ) > > in the TF-A build system, I'm a bit scared, because it means that there > is a pretty tight coupling between the version of TF-A and the version > of mbedtls. If we update mbedtls to a newer version which has an > additional source file... TF-A would have to be updated accordingly. > This looks a bit "meh" to me. > > However, I don't really have a super great alternative to offer. The > only alternative that I can think of is to have > boot/arm-trusted-firmware/ download/extract its own copy of mbedtls, so > that (1) we control its version independently of the mbedtls package > and (2) we don't poke into the mbedtls source directory. > > Let's see what the other maintainers think of this somewhat special > situation. > > Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 21:13:00 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:13:00 +0200 Subject: [Buildroot] [git commit] package/kvmtool: bump package version to 4d2c017f41 Message-ID: <20240513211740.33B89872F6@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=580f6ef46dfec9db8483eeab8d639b935641289f branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master The current version dates back to 2017 and is lacking riscv support. Bump the version to a more recent one (4d2c017f41) which supports riscv and contains a large number of updates as well a CVE fixes. Since kvmtool does not seems to have releases, just bump to the current git HEAD. Signed-off-by: Cl??ment L??ger Signed-off-by: Thomas Petazzoni --- package/kvmtool/kvmtool.hash | 2 +- package/kvmtool/kvmtool.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kvmtool/kvmtool.hash b/package/kvmtool/kvmtool.hash index f7436dd3c9..63bbb7167c 100644 --- a/package/kvmtool/kvmtool.hash +++ b/package/kvmtool/kvmtool.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 dbc3537e63ebff35bc19bdf6c90d74dad24f9175d8130baba79831ba2ad1788d kvmtool-f77d646ba01d04be5aad9449ac00719c043fe36e-git4.tar.gz +sha256 a8504d8b184cae4e65ff5555cc84a436f3fbbc832a8017e3ca59d997dd5581db kvmtool-4d2c017f41533b0e51e00f689050c26190a15318-git4.tar.gz sha256 0d5bf346df9e635a29dcdddf832dc5b002ca6cdc1c5c9c6c567d2a61bb0c5c15 COPYING diff --git a/package/kvmtool/kvmtool.mk b/package/kvmtool/kvmtool.mk index 2bcd556f9b..7fec6643f8 100644 --- a/package/kvmtool/kvmtool.mk +++ b/package/kvmtool/kvmtool.mk @@ -4,7 +4,7 @@ # ################################################################################ -KVMTOOL_VERSION = f77d646ba01d04be5aad9449ac00719c043fe36e +KVMTOOL_VERSION = 4d2c017f41533b0e51e00f689050c26190a15318 KVMTOOL_SITE = https://git.kernel.org/pub/scm/linux/kernel/git/will/kvmtool.git KVMTOOL_SITE_METHOD = git KVMTOOL_DEPENDENCIES = \ From thomas.petazzoni at bootlin.com Mon May 13 21:13:16 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:13:16 +0200 Subject: [Buildroot] [git commit] package/kvmtool: enable build for riscv Message-ID: <20240513211740.3E50787300@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=cd65b5e7551fe59a663f7c73818ca1777c66c117 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master kvmtool now supports riscv, enable it and select BR2_PACKAGE_DTC which is needed to build it. Signed-off-by: Cl??ment L??ger Signed-off-by: Thomas Petazzoni --- package/kvmtool/Config.in | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/package/kvmtool/Config.in b/package/kvmtool/Config.in index bf19a25376..35225e0150 100644 --- a/package/kvmtool/Config.in +++ b/package/kvmtool/Config.in @@ -6,11 +6,12 @@ config BR2_PACKAGE_KVMTOOL # Only mips big-endian seems to be supported (build breaks) # Should work on powerpc64 but the build breaks with missing types depends on BR2_aarch64 || BR2_arm || BR2_armeb || BR2_i386 || \ - BR2_mips || BR2_x86_64 + BR2_mips || BR2_x86_64 || BR2_riscv # libfdt is only required for DT architectures... # ...but it's not able to build for static targets - depends on !(BR2_STATIC_LIBS && (BR2_aarch64 || BR2_arm || BR2_armeb)) - select BR2_PACKAGE_DTC if BR2_aarch64 || BR2_arm || BR2_armeb + depends on !(BR2_STATIC_LIBS && (BR2_aarch64 || BR2_arm || \ + BR2_armeb || BR2_riscv)) + select BR2_PACKAGE_DTC if BR2_aarch64 || BR2_arm || BR2_armeb || BR2_riscv help kvmtool is a lightweight tool for hosting KVM guests. As a pure virtualization tool it only supports guests using From thomas.petazzoni at bootlin.com Mon May 13 21:18:10 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:18:10 +0200 Subject: [Buildroot] [PATCH 0/2] Update kvmtool and add support for riscv In-Reply-To: <20240327150616.39345-1-cleger@rivosinc.com> References: <20240327150616.39345-1-cleger@rivosinc.com> Message-ID: <20240513231810.4c4b1655@windsurf> Hello Cl?ment, On Wed, 27 Mar 2024 16:06:11 +0100 Cl?ment L?ger wrote: > Bump kvmtool to a recent version (current one dates back to 2017) and > enable riscv support. > > Cl?ment L?ger (2): > package/kvmtool: bump package version to 4d2c017f41 > package/kvmtool: enable build for riscv Thanks, series applied, after tweaking the first patch due to recent changes in the download infrastructure for git-fetched packages. Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 21:19:42 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:19:42 +0200 Subject: [Buildroot] [PATCH] linux-pam: add patch for spurious password expires in 0 days warning In-Reply-To: <20240327140125.154985-1-andreas.hilse@gmail.com> References: <20240327140125.154985-1-andreas.hilse@gmail.com> Message-ID: <20240513231942.2dd93919@windsurf> Hello Andreas, On Wed, 27 Mar 2024 15:01:25 +0100 Andreas Hilse via buildroot wrote: > Buildroot 2024.02 brings updated linux-pam 1.6.0 package which has a > regression, that warns users about their password expiring in 0 days > when logging in, even with password expiration not being active. > There is no newer version released yet. > Patch is working as intended, tested by me. > > Patch taken from linux-pam PR: https://github.com/linux-pam/linux-pam/pull/744 The patch is now upstream, at https://github.com/linux-pam/linux-pam/commit/470b5bdd8fd29d6b35e3a80f9a57bdd4b2438200 Could you adjust the commit title to: package/linux-pam: add patch for spurious password expires in 0 days warning > diff --git a/package/linux-pam/0002-do-not-warn-if-password-aging.patch b/package/linux-pam/0002-do-not-warn-if-password-aging.patch > new file mode 100644 > index 0000000000..7df83bf058 > --- /dev/null > +++ b/package/linux-pam/0002-do-not-warn-if-password-aging.patch > @@ -0,0 +1,27 @@ > +From 470b5bdd8fd29d6b35e3a80f9a57bdd4b2438200 Mon Sep 17 00:00:00 2001 > +From: Tobias Stoeckmann > +Date: Fri, 19 Jan 2024 10:09:00 +0100 > +Subject: [PATCH] pam_unix: do not warn if password aging is disabled > + > +Later checks will print a warning if daysleft is 0. If password > +aging is disabled, leave daysleft at -1. > + > +Resolves: https://github.com/linux-pam/linux-pam/issues/743 > +Fixes: 9ebc14085a3b ("pam_unix: allow disabled password aging") > +Signed-off-by: Tobias Stoeckmann and here, add: Upstream: https://github.com/linux-pam/linux-pam/commit/470b5bdd8fd29d6b35e3a80f9a57bdd4b2438200 followed by your Signed-off-by line ? Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 21:24:04 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:24:04 +0200 Subject: [Buildroot] [git commit] package/flutter-packages: bump version to ab1630b9b9bd1130b4d5d1ac18a588b690fd0fa3 Message-ID: <20240513212456.ABEC387309@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=8c79f4be597d78428126bfdb02eb47c3126f3ebe branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Adam Duskett Signed-off-by: Thomas Petazzoni --- package/flutter-packages/flutter-packages.hash | 2 +- package/flutter-packages/flutter-packages.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/flutter-packages/flutter-packages.hash b/package/flutter-packages/flutter-packages.hash index ea30e7a36d..f266c497e4 100644 --- a/package/flutter-packages/flutter-packages.hash +++ b/package/flutter-packages/flutter-packages.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 8276276e050c1ea45787f74b0f8c915b8cf2162b6af8537ffa9886bd423f2828 flutter-packages-947e34ce9fedcdd6750b54eb1cc74b854b49ab48.tar.gz +sha256 2e1e19713ac74b6e00a6f5ec516e8ccda5e5ba1fc8b249d40abcfe4cb50dff87 flutter-packages-ab1630b9b9bd1130b4d5d1ac18a588b690fd0fa3.tar.gz sha256 89519eca6f7b9529b35bdddd623a58c3af06a88c458dbd6531ddb4675acf75a9 LICENSE diff --git a/package/flutter-packages/flutter-packages.mk b/package/flutter-packages/flutter-packages.mk index 0cc3bdff24..6b1a4371e8 100644 --- a/package/flutter-packages/flutter-packages.mk +++ b/package/flutter-packages/flutter-packages.mk @@ -4,7 +4,7 @@ # ################################################################################ -FLUTTER_PACKAGES_VERSION = 947e34ce9fedcdd6750b54eb1cc74b854b49ab48 +FLUTTER_PACKAGES_VERSION = ab1630b9b9bd1130b4d5d1ac18a588b690fd0fa3 FLUTTER_PACKAGES_SITE = $(call github,flutter,packages,$(FLUTTER_PACKAGES_VERSION)) FLUTTER_PACKAGES_LICENSE = BSD-3-Clause FLUTTER_PACKAGES_LICENSE_FILES = LICENSE From thomas.petazzoni at bootlin.com Mon May 13 21:24:59 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:24:59 +0200 Subject: [Buildroot] [PATCH] package/flutter-packages: bump version to ab1630b9b9bd1130b4d5d1ac18a588b690fd0fa3 In-Reply-To: <20240326174059.499034-1-adam.duskett@amarulasolutions.com> References: <20240326174059.499034-1-adam.duskett@amarulasolutions.com> Message-ID: <20240513232459.47921ffd@windsurf> On Tue, 26 Mar 2024 11:40:59 -0600 Adam Duskett wrote: > Signed-off-by: Adam Duskett > --- > package/flutter-packages/flutter-packages.hash | 2 +- > package/flutter-packages/flutter-packages.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 21:26:41 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:26:41 +0200 Subject: [Buildroot] [git commit] package/musl: enable on s390x Message-ID: <20240513212659.C5F0087316@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=ab990cf58a724a178dbdd55afdb520212f7197c0 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Add s390x musl supported archs. Upstream musl already supports s390x[1]. Tested with qemu_s390s_defconfig: $ output/host/bin/qemu-system-s390x -M s390-ccw-virtio -cpu max,zpci=on -m 4G -smp 2 -kernel output/bzImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append "rootwait root=/dev/vda net.ifnames=0 biosdevname=0" -display none -serial mon:stdio -net nic,model=virtio -net user (...) Welcome to Buildroot buildroot login: root # uname -a Linux buildroot 6.1.44 #2 SMP Sun Feb 18 01:33:42 CET 2024 s390x GNU/Linux # /lib/ld-musl-s390x.so.1 musl libc (s390x) Version 1.2.4 Dynamic Program Loader Usage: /lib/ld-musl-s390x.so.1 [options] [--] pathname [args] [1]: https://git.musl-libc.org/cgit/musl/commit/?id=15094943050eb9a564f409323070e50b40f78816 Signed-off-by: Ga??l PORTAY Signed-off-by: Thomas Petazzoni --- package/musl/Config.in | 1 + 1 file changed, 1 insertion(+) diff --git a/package/musl/Config.in b/package/musl/Config.in index 7fba85bcd9..a6e2af054c 100644 --- a/package/musl/Config.in +++ b/package/musl/Config.in @@ -16,6 +16,7 @@ config BR2_PACKAGE_MUSL_ARCH_SUPPORTS default y if BR2_powerpc64 default y if BR2_powerpc64le default y if BR2_riscv + default y if BR2_s390x default y if BR2_sh default y if BR2_x86_64 depends on !BR2_POWERPC_CPU_HAS_SPE # not supported, build breaks From thomas.petazzoni at bootlin.com Mon May 13 21:27:19 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:27:19 +0200 Subject: [Buildroot] [PATCH 1/1] package/musl: enable on s390x In-Reply-To: <20240218011118.1077002-1-gael.portay@rtone.fr> References: <20240218011118.1077002-1-gael.portay@rtone.fr> Message-ID: <20240513232719.09befc04@windsurf> On Sun, 18 Feb 2024 02:11:17 +0100 Ga?l PORTAY wrote: > Add s390x musl supported archs. Upstream musl already supports s390x[1]. > > Tested with qemu_s390s_defconfig: > > $ output/host/bin/qemu-system-s390x -M s390-ccw-virtio -cpu max,zpci=on -m 4G -smp 2 -kernel output/bzImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append "rootwait root=/dev/vda net.ifnames=0 biosdevname=0" -display none -serial mon:stdio -net nic,model=virtio -net user > (...) > Welcome to Buildroot > buildroot login: root > # uname -a > Linux buildroot 6.1.44 #2 SMP Sun Feb 18 01:33:42 CET 2024 s390x GNU/Linux > # /lib/ld-musl-s390x.so.1 > musl libc (s390x) > Version 1.2.4 > Dynamic Program Loader > Usage: /lib/ld-musl-s390x.so.1 [options] [--] pathname [args] > > [1]: https://git.musl-libc.org/cgit/musl/commit/?id=15094943050eb9a564f409323070e50b40f78816 > > Signed-off-by: Ga?l PORTAY > --- > package/musl/Config.in | 1 + > 1 file changed, 1 insertion(+) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 21:27:37 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:27:37 +0200 Subject: [Buildroot] [git commit] package/slirp4netns: bump to version 1.2.3 Message-ID: <20240513212804.0F29B87321@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=052deababf60838a19f6334bae1746c841eba877 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Raphael Pavlidis Signed-off-by: Thomas Petazzoni --- package/slirp4netns/slirp4netns.hash | 2 +- package/slirp4netns/slirp4netns.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/slirp4netns/slirp4netns.hash b/package/slirp4netns/slirp4netns.hash index e3115c1be0..e310da1af2 100644 --- a/package/slirp4netns/slirp4netns.hash +++ b/package/slirp4netns/slirp4netns.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 b584edde686d3cfbac210cbdb93c4b0ba5d8cc0a6a4d92b9dfc3c5baec99c727 slirp4netns-1.2.0.tar.gz +sha256 acce648fab8fe5f113c41a8fd6d20177708519b4ddaa60f845e1998a17b22ca5 slirp4netns-1.2.3.tar.gz sha256 58db3cfabf8ec806bc060e54ab5466a31de4a3ae80fe4a8aa02fb6b1c053c93f COPYING diff --git a/package/slirp4netns/slirp4netns.mk b/package/slirp4netns/slirp4netns.mk index 7ff594cc44..7fa992af6d 100644 --- a/package/slirp4netns/slirp4netns.mk +++ b/package/slirp4netns/slirp4netns.mk @@ -4,7 +4,7 @@ # ################################################################################ -SLIRP4NETNS_VERSION = 1.2.0 +SLIRP4NETNS_VERSION = 1.2.3 SLIRP4NETNS_SITE = $(call github,rootless-containers,slirp4netns,v$(SLIRP4NETNS_VERSION)) SLIRP4NETNS_LICENSE = GPL-2.0 SLIRP4NETNS_LICENSE_FILES = COPYING From thomas.petazzoni at bootlin.com Mon May 13 21:28:03 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:28:03 +0200 Subject: [Buildroot] [PATCH v1 1/1] package/slirp4netns: bump to version 1.2.3 In-Reply-To: <20240219184827.790288-1-raphael.pavlidis@gmail.com> References: <20240219184827.790288-1-raphael.pavlidis@gmail.com> Message-ID: <20240513232803.1cafa524@windsurf> On Mon, 19 Feb 2024 18:48:27 +0000 Raphael Pavlidis wrote: > Signed-off-by: Raphael Pavlidis > --- > package/slirp4netns/slirp4netns.hash | 2 +- > package/slirp4netns/slirp4netns.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 21:30:14 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:30:14 +0200 Subject: [Buildroot] [PATCH 1/2] board/orangepi/orangepi-lite: switch to extlinux In-Reply-To: <20240220051926.68559-1-jan.kraval@gmail.com> References: <20240220051926.68559-1-jan.kraval@gmail.com> Message-ID: <20240513233014.3b09e56e@windsurf> On Tue, 20 Feb 2024 06:19:25 +0100 Jan Kraval wrote: > Switch to extlinux instead of U-Boot boot script. Drop custom > boot script and genimage config. Instead use common orangepi > files from board/orangepi/common. > > Signed-off-by: Jan Kraval Thanks for this patch, it looks good, except for one question, below. > @@ -25,15 +29,7 @@ BR2_TARGET_UBOOT_CUSTOM_VERSION=y > BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.10" > BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_lite" > BR2_TARGET_UBOOT_NEEDS_DTC=y > -BR2_TARGET_UBOOT_NEEDS_PYTHON3=y Why is this option being dropped? I don't see how the move to extlinux has anything to do with this. For a given version/configuration of U-Boot (which are not changed in this commit), whether host-python3 is needed or not should not change. Could you clarify? Make sure to test your configuration with ./utils/docker-run, to verify that you are not dependent on system-provided packages. Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From brandon.maier at collins.com Mon May 13 21:30:35 2024 From: brandon.maier at collins.com (Brandon Maier) Date: Mon, 13 May 2024 21:30:35 +0000 Subject: [Buildroot] [PATCH] support/testing/infra/builder.py: fix missing $HOME during build Message-ID: <20240513213035.1738493-1-brandon.maier@collins.com> When running a test that uses host-python-setuptools using the Buildroot Docker image, for example running the following command, > ./utils/docker-run ./support/testing/run-tests -o output -s -k tests.package.test_python_pytest.TestPythonPy3Pytest The build fails with the following error, > File "/home/blmaier/buildroot/output/TestPythonPy3Pytest/build/host-python-setuptools-69.2.0/setuptools/_distutils/dist.py", line 354, in _gen_paths > yield pathlib.Path('~').expanduser() / filename > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > File "/home/blmaier/buildroot/output/TestPythonPy3Pytest/host/lib/python3.11/pathlib.py", line 1385, in expanduser > raise RuntimeError("Could not determine home directory.") > RuntimeError: Could not determine home directory. > > ERROR Backend subprocess exited when trying to invoke get_requires_for_build_wheel Python setuptools is looking for $HOME but failing to find it. Signed-off-by: Brandon Maier --- support/testing/infra/builder.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/support/testing/infra/builder.py b/support/testing/infra/builder.py index a2abb9ed89..295bc7b83d 100644 --- a/support/testing/infra/builder.py +++ b/support/testing/infra/builder.py @@ -52,7 +52,10 @@ class Builder(object): "> end defconfig\n") self.logfile.flush() - env = {"PATH": os.environ["PATH"]} + env = { + "PATH": os.environ["PATH"], + "HOME": os.environ["HOME"] + } env.update(make_extra_env) cmd = ["make", @@ -79,7 +82,11 @@ class Builder(object): in the environment that calls make. e.g. make_extra_env={"BR2_DL_DIR": "/path"} """ - env = {"PATH": os.environ["PATH"]} + env = { + "PATH": os.environ["PATH"], + "HOME": os.environ["HOME"] + } + if "http_proxy" in os.environ: self.logfile.write("Using system proxy: " + os.environ["http_proxy"] + "\n") -- 2.45.0 From ps.report at gmx.net Mon May 13 21:48:32 2024 From: ps.report at gmx.net (Peter Seiderer) Date: Mon, 13 May 2024 23:48:32 +0200 Subject: [Buildroot] [PATCH v1] package/wiringpi: re-add and bump version to 3.4 Message-ID: <20240513214832.18094-1-ps.report@gmx.net> - revert commit 90dd780391 ("package/wiringpi: remove") - bump version to 3.4 - change download URL to github - change home page URL to github - rebased 0001-Adjust-for-buildroot-build.patch - add optional libxcrypt dependency, fix build failure since bump of glibc to version 2.39 - needs kernel headers >= 5.5 for GPIOLINE_FLAG_BIAS_PULL_UP, GPIOLINE_FLAG_BIAS_PULL_DOWN and GPIOLINE_FLAG_BIAS_DISABLE usage Signed-off-by: Peter Seiderer --- Config.in.legacy | 9 -- DEVELOPERS | 1 + package/Config.in | 1 + package/squeezelite/squeezelite.mk | 5 + .../0001-Adjust-for-buildroot-build.patch | 126 ++++++++++++++++++ ...erial-fix-compile-for-missing-baud-d.patch | 47 +++++++ package/wiringpi/Config.in | 16 +++ package/wiringpi/wiringpi.hash | 3 + package/wiringpi/wiringpi.mk | 36 +++++ 9 files changed, 235 insertions(+), 9 deletions(-) create mode 100644 package/wiringpi/0001-Adjust-for-buildroot-build.patch create mode 100644 package/wiringpi/0002-wiringPi-wiringSerial-fix-compile-for-missing-baud-d.patch create mode 100644 package/wiringpi/Config.in create mode 100644 package/wiringpi/wiringpi.hash create mode 100644 package/wiringpi/wiringpi.mk diff --git a/Config.in.legacy b/Config.in.legacy index 46f7a304cb..8d4f488dbd 100644 --- a/Config.in.legacy +++ b/Config.in.legacy @@ -1938,15 +1938,6 @@ config BR2_PACKAGE_KODI_PERIPHERAL_STEAMCONTROLLER comment "Legacy options removed in 2020.05" -config BR2_PACKAGE_WIRINGPI - bool "wiringpi package removed" - select BR2_LEGACY - help - The author of wiringpi has deprecated the package, and - completely removed the git tree that was serving the - sources, with this message: - Please look for alternatives for wiringPi - config BR2_PACKAGE_PYTHON_PYCRYPTO bool "python-pycrypto package removed" select BR2_LEGACY diff --git a/DEVELOPERS b/DEVELOPERS index d653648718..9f7bade097 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2546,6 +2546,7 @@ F: package/fft-eval/ F: package/python-blinker/ F: package/qt5/qt5speech/ F: package/speechd/ +F: package/wiringpi/ N: Peter Thompson F: package/sdl2_gfx/ diff --git a/package/Config.in b/package/Config.in index c29b4a5101..ffb6c69562 100644 --- a/package/Config.in +++ b/package/Config.in @@ -1805,6 +1805,7 @@ menu "Hardware handling" source "package/tslib/Config.in" source "package/uhd/Config.in" source "package/urg/Config.in" + source "package/wiringpi/Config.in" endmenu menu "Javascript" diff --git a/package/squeezelite/squeezelite.mk b/package/squeezelite/squeezelite.mk index b0347c4df9..2ed3d8b769 100644 --- a/package/squeezelite/squeezelite.mk +++ b/package/squeezelite/squeezelite.mk @@ -40,6 +40,11 @@ ifeq ($(BR2_PACKAGE_SQUEEZELITE_VISEXPORT),y) SQUEEZELITE_MAKE_OPTS += -DVISEXPORT endif +ifeq ($(BR2_PACKAGE_WIRINGPI),y) +SQUEEZELITE_DEPENDENCIES += wiringpi +SQUEEZELITE_MAKE_OPTS += -DRPI +endif + define SQUEEZELITE_BUILD_CMDS $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ OPTS="$(SQUEEZELITE_MAKE_OPTS)" -C $(@D) all diff --git a/package/wiringpi/0001-Adjust-for-buildroot-build.patch b/package/wiringpi/0001-Adjust-for-buildroot-build.patch new file mode 100644 index 0000000000..2720c502c1 --- /dev/null +++ b/package/wiringpi/0001-Adjust-for-buildroot-build.patch @@ -0,0 +1,126 @@ +From ebfa5527467ba175cca84afeae244c06e265a508 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Wed, 2 Dec 2015 00:22:26 +0100 +Subject: [PATCH] Adjust for buildroot build. + + - enable CC override + - fix devLib/gpio include path for local build (without installing first) + - change CFLAGS from '=' to '+=' to honour buildroot given flags + - add linker name link for libwiringPiDev and libwiringPi for local linking + (without installing first) + - fix install linker name link (do not link with absolute path) + - add gpio-static linking target + +Signed-off-by: Peter Seiderer + + - Rebased for wiringpi-8d188fa0e00bb8c6ff6eddd07bf92857e9bd533a + +Signed-off-by: Atanas Palavrov + + - Rebased for wiringpi-3.4 +Signed-off-by: Peter Seiderer +--- + devLib/Makefile | 7 ++++--- + gpio/Makefile | 12 ++++++++---- + wiringPi/Makefile | 5 +++-- + 3 files changed, 15 insertions(+), 9 deletions(-) + +diff --git a/devLib/Makefile b/devLib/Makefile +index 611e423..d0c70d0 100644 +--- a/devLib/Makefile ++++ b/devLib/Makefile +@@ -37,9 +37,9 @@ DYNAMIC=libwiringPiDev.so.$(VERSION) + #DEBUG = -g -O0 + DEBUG = -O2 + CC ?= gcc +-INCLUDE = -I. ++INCLUDE = -I../wiringPi + DEFS = -D_GNU_SOURCE +-CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Winline $(INCLUDE) -pipe -fPIC $(EXTRA_CFLAGS) ++CFLAGS += $(DEBUG) $(DEFS) -Wformat=2 -Wall -Winline $(INCLUDE) -pipe -fPIC $(EXTRA_CFLAGS) + + LIBS = + +@@ -69,6 +69,7 @@ $(STATIC): $(OBJ) + $(DYNAMIC): $(OBJ) + $Q echo "[Link (Dynamic)]" + $Q $(CC) -shared -Wl,-soname,libwiringPiDev.so$(WIRINGPI_SONAME_SUFFIX) -o libwiringPiDev.so.$(VERSION) -lpthread $(OBJ) ++ $Q ln -sf libwiringPiDev.so.$(VERSION) libwiringPiDev.so + + .c.o: + $Q echo [Compile] $< +@@ -93,7 +94,7 @@ install: $(DYNAMIC) + $Q echo "[Install Dynamic Lib]" + $Q install -m 0755 -d $(DESTDIR)$(PREFIX)/lib + $Q install -m 0755 libwiringPiDev.so.$(VERSION) $(DESTDIR)$(PREFIX)/lib/libwiringPiDev.so.$(VERSION) +- $Q ln -sf $(DESTDIR)$(PREFIX)/lib/libwiringPiDev.so.$(VERSION) $(DESTDIR)/lib/libwiringPiDev.so ++ $Q ln -sf libwiringPiDev.so.$(VERSION) $(DESTDIR)$(PREFIX)/lib/libwiringPiDev.so + $Q $(LDCONFIG) + + .PHONY: install-static +diff --git a/gpio/Makefile b/gpio/Makefile +index 249bb24..3aa24b7 100644 +--- a/gpio/Makefile ++++ b/gpio/Makefile +@@ -33,10 +33,10 @@ endif + #DEBUG = -g -O0 + DEBUG = -O2 + CC ?= gcc +-INCLUDE = -I$(DESTDIR)$(PREFIX)/include +-CFLAGS = $(DEBUG) -Wall -Wextra $(INCLUDE) -Winline -pipe $(EXTRA_CFLAGS) ++INCLUDE = -I../wiringPi -I../devLib ++CFLAGS += $(DEBUG) -Wall -Wextra $(INCLUDE) -Winline -pipe $(EXTRA_CFLAGS) + +-LDFLAGS = -L$(DESTDIR)$(PREFIX)/lib ++LDFLAGS = -L../wiringPi -L../devLib + LIBS = -lwiringPi -lwiringPiDev -lpthread -lrt -lm -lcrypt + + # May not need to alter anything below this line +@@ -52,9 +52,13 @@ version.h: ../VERSION + $Q echo Need to run newVersion above. + + gpio: $(OBJ) +- $Q echo [Link] ++ $Q echo "[Link (Dynamic)]" + $Q $(CC) -o $@ $(OBJ) $(LDFLAGS) $(LIBS) + ++gpio-static: $(OBJ) ++ $Q echo "[Link (Static)]" ++ $Q $(CC) -static -o gpio $(OBJ) ../wiringPi/libwiringPi.a ../devLib/libwiringPiDev.a -lpthread ++ + .c.o: + $Q echo [Compile] $< + $Q $(CC) -c $(CFLAGS) $< -o $@ +diff --git a/wiringPi/Makefile b/wiringPi/Makefile +index 88fc48e..082bfaf 100644 +--- a/wiringPi/Makefile ++++ b/wiringPi/Makefile +@@ -39,7 +39,7 @@ DEBUG = -O2 + CC ?= gcc + INCLUDE = -I. + DEFS = -D_GNU_SOURCE +-CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Wextra -Winline $(INCLUDE) -pipe -fPIC $(EXTRA_CFLAGS) ++CFLAGS += $(DEBUG) $(DEFS) -Wformat=2 -Wall -Wextra -Winline $(INCLUDE) -pipe -fPIC $(EXTRA_CFLAGS) + #CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Wextra -Wconversion -Winline $(INCLUDE) -pipe -fPIC + + LIBS = -lm -lpthread -lrt -lcrypt +@@ -77,6 +77,7 @@ static: + $(DYNAMIC): $(OBJ) + $Q echo "[Link (Dynamic)]" + $Q $(CC) -shared -Wl,-soname,libwiringPi.so$(WIRINGPI_SONAME_SUFFIX) -o libwiringPi.so.$(VERSION) $(OBJ) $(LIBS) ++ $Q ln -sf libwiringPi.so.$(VERSION) libwiringPi.so + + .c.o: + $Q echo [Compile] $< +@@ -102,7 +103,7 @@ install: $(DYNAMIC) + $Q echo "[Install Dynamic Lib]" + $Q install -m 0755 -d $(DESTDIR)$(PREFIX)/lib + $Q install -m 0755 libwiringPi.so.$(VERSION) $(DESTDIR)$(PREFIX)/lib/libwiringPi.so.$(VERSION) +- $Q ln -sf $(DESTDIR)$(PREFIX)/lib/libwiringPi.so.$(VERSION) $(DESTDIR)/lib/libwiringPi.so ++ $Q ln -sf libwiringPi.so.$(VERSION) $(DESTDIR)$(PREFIX)/lib/libwiringPi.so + $Q $(LDCONFIG) + + .PHONY: check-deb-destdir +-- +2.45.0 + diff --git a/package/wiringpi/0002-wiringPi-wiringSerial-fix-compile-for-missing-baud-d.patch b/package/wiringpi/0002-wiringPi-wiringSerial-fix-compile-for-missing-baud-d.patch new file mode 100644 index 0000000000..c9c4385d48 --- /dev/null +++ b/package/wiringpi/0002-wiringPi-wiringSerial-fix-compile-for-missing-baud-d.patch @@ -0,0 +1,47 @@ +From 1e7a7a625ca20633062406ce525b19d168c356af Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Mon, 20 Mar 2017 20:51:20 +0100 +Subject: [PATCH] wiringPi/wiringSerial: fix compile for missing baud defines + +For sparc-buildroot-linux-uclibc/sysroot/usr/include/asm/termbits.h +containing: + + /* These have totally bogus values and nobody uses them + so far. Later on we'd have to use say 0x10000x and + adjust CBAUD constant and drivers accordingly. + #define B2500000 0x00001010 + #define B3000000 0x00001011 + #define B3500000 0x00001012 + #define B4000000 0x00001013 */ + +Signed-off-by: Peter Seiderer +--- + wiringPi/wiringSerial.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/wiringPi/wiringSerial.c b/wiringPi/wiringSerial.c +index e1587ad..4ac8d1e 100644 +--- a/wiringPi/wiringSerial.c ++++ b/wiringPi/wiringSerial.c +@@ -75,10 +75,18 @@ int serialOpen (const char *device, const int baud) + case 1152000: myBaud = B1152000 ; break ; + case 1500000: myBaud = B1500000 ; break ; + case 2000000: myBaud = B2000000 ; break ; ++#if defined(B2500000) + case 2500000: myBaud = B2500000 ; break ; ++#endif ++#if defined(B3000000) + case 3000000: myBaud = B3000000 ; break ; ++#endif ++#if defined(B3500000) + case 3500000: myBaud = B3500000 ; break ; ++#endif ++#if defined(B4000000) + case 4000000: myBaud = B4000000 ; break ; ++#endif + + default: + return -2 ; +-- +2.11.0 + diff --git a/package/wiringpi/Config.in b/package/wiringpi/Config.in new file mode 100644 index 0000000000..11ef9825a1 --- /dev/null +++ b/package/wiringpi/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_WIRINGPI + bool "wiringpi" + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5 + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + help + wiringPi libraries (and gpio command) + + https://github.com/WiringPi/WiringPi + +comment "wiringpi needs a toolchain w/ threads, dynamic library, kernel headers >= 5.5" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5 diff --git a/package/wiringpi/wiringpi.hash b/package/wiringpi/wiringpi.hash new file mode 100644 index 0000000000..590d03946c --- /dev/null +++ b/package/wiringpi/wiringpi.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a81219e9ea0ce08295d2fc0457c69c4df0c6d2e846cb5817ba3247f673480d55 wiringpi-3.4.tar.gz +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 COPYING.LESSER diff --git a/package/wiringpi/wiringpi.mk b/package/wiringpi/wiringpi.mk new file mode 100644 index 0000000000..3515634d6d --- /dev/null +++ b/package/wiringpi/wiringpi.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# wiringpi +# +################################################################################ + +WIRINGPI_VERSION = 3.4 +WIRINGPI_SITE = $(call github,WiringPi,WiringPi,$(WIRINGPI_VERSION)) + +WIRINGPI_LICENSE = LGPL-3.0+ +WIRINGPI_LICENSE_FILES = COPYING.LESSER +WIRINGPI_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +WIRINGPI_DEPENDENCIES += libxcrypt +endif + +define WIRINGPI_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/wiringPi all + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/devLib all + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/gpio all +endef + +define WIRINGPI_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/wiringPi install DESTDIR=$(STAGING_DIR) PREFIX=/usr LDCONFIG=true + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/devLib install DESTDIR=$(STAGING_DIR) PREFIX=/usr LDCONFIG=true +endef + +define WIRINGPI_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/wiringPi install DESTDIR=$(TARGET_DIR) PREFIX=/usr LDCONFIG=true + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/devLib install DESTDIR=$(TARGET_DIR) PREFIX=/usr LDCONFIG=true + $(INSTALL) -D -m 0755 $(@D)/gpio/gpio $(TARGET_DIR)/usr/bin/gpio + $(INSTALL) -D -m 0755 $(@D)/gpio/pintest $(TARGET_DIR)/usr/bin/pintest +endef + +$(eval $(generic-package)) -- 2.45.0 From ps.report at gmx.net Mon May 13 21:49:12 2024 From: ps.report at gmx.net (Peter Seiderer) Date: Mon, 13 May 2024 23:49:12 +0200 Subject: [Buildroot] [PATCH v1] package/dillo: bump version to 3.1.0 Message-ID: <20240513214912.18201-1-ps.report@gmx.net> - bump version to 3.1.0 (for details see [1]) - change download URL to github - change home page URL to github - remove 0001-usr-local-include.patch (no longer needed since upstream commit [2]) - remove 0002-Fix-openssl-detection.patch (no longer applicable) - remove 0003-Support-OpenSSL-1.1.0.patch (original from upstream, no longer applicable) - remove 0004-fix-build-with-gcc-10.patch (no longer applicable) - adjust autreconf comment - determine all autoconf options (with default values) [1] https://github.com/dillo-browser/dillo/releases/tag/v3.1.0 [2] https://github.com/dillo-browser/dillo/commit/3ac33673869b6f1ae1a29a329e5fa5c100bdd562 Signed-off-by: Peter Seiderer --- package/dillo/0001-usr-local-include.patch | 27 ---- .../dillo/0002-Fix-openssl-detection.patch | 29 ---- .../dillo/0003-Support-OpenSSL-1.1.0.patch | 33 ----- .../dillo/0004-fix-build-with-gcc-10.patch | 124 ------------------ package/dillo/Config.in | 2 +- package/dillo/dillo.hash | 2 +- package/dillo/dillo.mk | 23 +++- 7 files changed, 19 insertions(+), 221 deletions(-) delete mode 100644 package/dillo/0001-usr-local-include.patch delete mode 100644 package/dillo/0002-Fix-openssl-detection.patch delete mode 100644 package/dillo/0003-Support-OpenSSL-1.1.0.patch delete mode 100644 package/dillo/0004-fix-build-with-gcc-10.patch diff --git a/package/dillo/0001-usr-local-include.patch b/package/dillo/0001-usr-local-include.patch deleted file mode 100644 index 0c3fed2bfa..0000000000 --- a/package/dillo/0001-usr-local-include.patch +++ /dev/null @@ -1,27 +0,0 @@ -Do not add (possibly poisoned) /usr/local/include and /usr/local/lib -to gcc and ld search paths in configure. - -With BR2_COMPILER_PARANOID_UNSAFE_PATH enabled, poisoned paths result -in hard errors, failing affected configure tests. - -Signed-off-by: Alex Suykov - ---- a/configure.ac -+++ b/configure.ac -@@ -57,16 +57,6 @@ - AC_TYPE_INT32_T - AC_TYPE_UINT32_T - --dnl -------------------------------------- --dnl Check whether to add /usr/local or not --dnl (this is somewhat a religious problem) --dnl -------------------------------------- --dnl --if test "`$CPP -v < /dev/null 2>&1 | grep '/usr/local/include' 2>&1`" = ""; then -- CPPFLAGS="$CPPFLAGS -I/usr/local/include" -- LDFLAGS="$LDFLAGS -L/usr/local/lib" --fi -- - dnl ------------------------------------ - dnl Check for socket libs (AIX, Solaris) - dnl ------------------------------------ diff --git a/package/dillo/0002-Fix-openssl-detection.patch b/package/dillo/0002-Fix-openssl-detection.patch deleted file mode 100644 index 6e5f1d021f..0000000000 --- a/package/dillo/0002-Fix-openssl-detection.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 96dde9dedf806256cdc6cbf5cacbd5c8d74e6288 Mon Sep 17 00:00:00 2001 -From: Jonathan Kimmitt -Date: Thu, 9 Jan 2020 22:01:42 +0100 -Subject: [PATCH] Fix openssl detection - -SSL_library_init is now a define, use OPENSSL_init_ssl instead. - -Signed-off-by: Jonathan Kimmitt -Signed-off-by: Peter Seiderer ---- - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/configure.ac b/configure.ac -index 66b5e9f..206fd53 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -276,7 +276,7 @@ if test "x$enable_ssl" = "xyes"; then - - if test "x$ssl_ok" = "xyes"; then - old_libs="$LIBS" -- AC_CHECK_LIB(ssl, SSL_library_init, ssl_ok=yes, ssl_ok=no, -lcrypto) -+ AC_CHECK_LIB(ssl, OPENSSL_init_ssl, ssl_ok=yes, ssl_ok=no, -lcrypto) - LIBS="$old_libs" - fi - --- -2.24.1 - diff --git a/package/dillo/0003-Support-OpenSSL-1.1.0.patch b/package/dillo/0003-Support-OpenSSL-1.1.0.patch deleted file mode 100644 index 87b9d0dce3..0000000000 --- a/package/dillo/0003-Support-OpenSSL-1.1.0.patch +++ /dev/null @@ -1,33 +0,0 @@ -From ff44d8b2d5211a502afdb3e612dae0e8133b5124 Mon Sep 17 00:00:00 2001 -From: Johannes Hofmann -Date: Thu, 9 Jan 2020 22:07:15 +0100 -Subject: [PATCH] Support OpenSSL 1.1.0 - -taken-from: pkgsrc (Ryo ONODERA) -submitted-by: Jun Ebihara - -Upstream: https://hg.dillo.org/dillo/rev/b171b8610400 -Signed-off-by: Peter Seiderer ---- - dpi/https.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/dpi/https.c b/dpi/https.c -index 766b3af..025cfc4 100644 ---- a/dpi/https.c -+++ b/dpi/https.c -@@ -476,7 +476,11 @@ static int handle_certificate_problem(SSL * ssl_connection) - case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT: - /*Either self signed and untrusted*/ - /*Extract CN from certificate name information*/ -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - if ((cn = strstr(remote_cert->name, "/CN=")) == NULL) { -+#else -+ if ((cn = strstr(X509_get_subject_name(remote_cert), "/CN=")) == NULL) { -+#endif - strcpy(buf, "(no CN given)"); - } else { - char *cn_end; --- -2.24.1 - diff --git a/package/dillo/0004-fix-build-with-gcc-10.patch b/package/dillo/0004-fix-build-with-gcc-10.patch deleted file mode 100644 index 413bccb00b..0000000000 --- a/package/dillo/0004-fix-build-with-gcc-10.patch +++ /dev/null @@ -1,124 +0,0 @@ -fix build with gcc 10 - -gcc 10 is now defaulting to -fno-common resulting in the following build -failures: - -/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/bin/arm-buildroot-linux-gnueabihf-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -g2 -D_FORTIFY_SOURCE=1 -DENABLE_IPV6 -DD_DNS_THREADED -D_REENTRANT -D_THREAD_SAFE -Wall -W -Wno-unused-parameter -Waggregate-return -o dpid dpi.o dpi_socket_dir.o dpid.o dpid_common.o main.o misc_new.o ../dpip/libDpip.a ../dlib/libDlib.a -/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: dpi_socket_dir.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: multiple definition of `dpi_errno'; dpi.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: first defined here -/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: multiple definition of `dpi_errno'; dpi.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: first defined here -/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: dpid_common.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: multiple definition of `dpi_errno'; dpi.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: first defined here -/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:64: multiple definition of `sock_set'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:64: first defined here -/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:61: multiple definition of `services_list'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:61: first defined here -/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:58: multiple definition of `dpi_attr_list'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:58: first defined here -/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:55: multiple definition of `numsocks'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:55: first defined here -/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:52: multiple definition of `numdpis'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:52: first defined here -/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:31: multiple definition of `srs_fd'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:31: first defined here -/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:28: multiple definition of `srs_name'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:28: first defined here -/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: multiple definition of `dpi_errno'; dpi.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: first defined here -/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: misc_new.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: multiple definition of `dpi_errno'; dpi.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: first defined here - -So add missing extern for srs_fd, numdpis, numsocks, dpi_attr_list, -services_list and sock_set - -Also remove srs_name which is never used and give a name to dpi_errno -enum - -Fixes: - - http://autobuild.buildroot.org/results/9c777af97fe50143c6a68f0170fc86c87d8ead3f - -Signed-off-by: Fabrice Fontaine -[Upstream status: sent to jcid at dillo.org] - -diff -r f60d55c02567 dpid/dpid.c ---- a/dpid/dpid.c Fri Oct 05 22:05:08 2018 +0200 -+++ b/dpid/dpid.c Thu Aug 27 18:16:50 2020 +0200 -@@ -38,6 +38,12 @@ - - #define QUEUE 5 - -+int srs_fd; -+int numdpis; -+int numsocks; -+struct dp *dpi_attr_list; -+Dlist *services_list; -+fd_set sock_set; - volatile sig_atomic_t caught_sigchld = 0; - char *SharedKey = NULL; - -diff -r f60d55c02567 dpid/dpid.h ---- a/dpid/dpid.h Fri Oct 05 22:05:08 2018 +0200 -+++ b/dpid/dpid.h Thu Aug 27 18:16:50 2020 +0200 -@@ -25,10 +25,9 @@ - - /*! \TODO: Should read this from dillorc */ - #define SRS_NAME "dpid.srs" --char *srs_name; - - /*! dpid's service request socket file descriptor */ --int srs_fd; -+extern int srs_fd; - - /*! plugin state information - */ -@@ -49,19 +48,19 @@ - }; - - /*! Number of available plugins */ --int numdpis; -+extern int numdpis; - - /*! Number of sockets being watched */ --int numsocks; -+extern int numsocks; - - /*! State information for each plugin. */ --struct dp *dpi_attr_list; -+extern struct dp *dpi_attr_list; - - /*! service served for each plugin */ --Dlist *services_list; -+extern Dlist *services_list; - - /*! Set of sockets watched for connections */ --fd_set sock_set; -+extern fd_set sock_set; - - /*! Set to 1 by the SIGCHLD handler dpi_sigchld */ - extern volatile sig_atomic_t caught_sigchld; -diff -r f60d55c02567 dpid/dpid_common.h ---- a/dpid/dpid_common.h Fri Oct 05 22:05:08 2018 +0200 -+++ b/dpid/dpid_common.h Thu Aug 27 18:16:50 2020 +0200 -@@ -37,10 +37,10 @@ - - - /*! Error codes for dpid */ --enum { -+enum dpi_errno { - no_errors, - dpid_srs_addrinuse /* dpid service request socket address already in use */ --} dpi_errno; -+}; - - /*! Intended for identifying dillo plugins - * and related files -diff -r f60d55c02567 dpid/main.c ---- a/dpid/main.c Fri Oct 05 22:05:08 2018 +0200 -+++ b/dpid/main.c Thu Aug 27 18:16:50 2020 +0200 -@@ -231,7 +231,7 @@ - /* this sleep used to unmask a race condition */ - // sleep(2); - -- dpi_errno = no_errors; -+ enum dpi_errno error_code = no_errors; - - /* Get list of available dpis */ - numdpis = register_all(&dpi_attr_list); -@@ -254,7 +254,7 @@ - - /* Initialise sockets */ - if ((numsocks = init_ids_srs_socket()) == -1) { -- switch (dpi_errno) { -+ switch (error_code) { - case dpid_srs_addrinuse: - MSG_ERR("dpid refuses to start, possibly because:\n"); - MSG_ERR("\t1) An instance of dpid is already running.\n"); diff --git a/package/dillo/Config.in b/package/dillo/Config.in index d06f2d1f51..3aa831ae02 100644 --- a/package/dillo/Config.in +++ b/package/dillo/Config.in @@ -12,7 +12,7 @@ config BR2_PACKAGE_DILLO Enable openssl package to gain https support. - http://www.dillo.org + https://github.com/dillo-browser/dillo comment "dillo needs a toolchain w/ C++" depends on BR2_PACKAGE_XORG7 && BR2_USE_MMU diff --git a/package/dillo/dillo.hash b/package/dillo/dillo.hash index fa46702a63..0a524530e7 100644 --- a/package/dillo/dillo.hash +++ b/package/dillo/dillo.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 db1be16c1c5842ebe07b419aa7c6ef11a45603a75df2877f99635f4f8345148b dillo-3.0.5.tar.bz2 +sha256 3aa2a686648b383417a0c1f575c3d5431d6a2d53f35c2e11bf579cb25b2b45e7 dillo-3.1.0.tar.gz sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/dillo/dillo.mk b/package/dillo/dillo.mk index a6885f5c14..52708ed8ab 100644 --- a/package/dillo/dillo.mk +++ b/package/dillo/dillo.mk @@ -4,22 +4,33 @@ # ################################################################################ -DILLO_VERSION = 3.0.5 -DILLO_SOURCE = dillo-$(DILLO_VERSION).tar.bz2 -DILLO_SITE = http://www.dillo.org/download +DILLO_VERSION = 3.1.0 +DILLO_SITE = $(call github,dillo-browser,dillo,v$(DILLO_VERSION)) DILLO_LICENSE = GPL-3.0+ DILLO_LICENSE_FILES = COPYING -# configure.ac gets patched, so autoreconf is necessary +# no configure file, so autoreconf is necessary DILLO_AUTORECONF = YES DILLO_DEPENDENCIES = fltk zlib \ $(if $(BR2_PACKAGE_LIBICONV),libiconv) DILLO_CONF_ENV = ac_cv_path_FLTK_CONFIG=$(STAGING_DIR)/usr/bin/fltk-config +DILLO_CONF_OPTS = \ + --disable-efence \ + --disable-mbedtls \ + --disable-gprof \ + --disable-insure \ + --enable-ipv6 \ + --enable-cookies \ + --enable-gif \ + --disable-rtfl \ + --enable-xembed \ + --disable-html-tests + ifeq ($(BR2_PACKAGE_OPENSSL),y) -DILLO_CONF_OPTS += --enable-ssl +DILLO_CONF_OPTS += --enable-tls --enable-openssl DILLO_DEPENDENCIES += openssl else -DILLO_CONF_OPTS += --disable-ssl +DILLO_CONF_OPTS += --disable-tls --disable-openssl endif ifeq ($(BR2_PACKAGE_LIBPNG),y) -- 2.45.0 From ps.report at gmx.net Mon May 13 21:52:15 2024 From: ps.report at gmx.net (Peter Seiderer) Date: Mon, 13 May 2024 23:52:15 +0200 Subject: [Buildroot] Fwd: WiringPi is alive again In-Reply-To: References: Message-ID: <20240513235215.4e4fe360@gmx.net> On Sat, 11 May 2024 17:33:30 +0300, "rosver001 at gmail.com" wrote: > Dear developers, > > WiringPi was deprecated some time ago. > https://web.archive.org/web/20220405225008/http://wiringpi.com/wiringpi-deprecated/ > It was removed from Buildroot. > https://github.com/buildroot/buildroot/blob/7763ba7007172ceb5e928ae5902735d727aaa90d/Config.in.legacy > > But currently, WiringPi is alive again, > https://github.com/WiringPi/WiringPi > > Could you, please, write, if it is planned to add WiringPi back in > Buildroot? See [1] for a draft "package/wiringpi: re-add and bump version to 3.4"... Regards, Peter [1] https://lore.kernel.org/buildroot/20240513214832.18094-1-ps.report at gmx.net/T/#u > > Best Regards, > Sverdlov Roman From roykollensvendsen at gmail.com Mon May 13 22:03:06 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:06 +0200 Subject: [Buildroot] [PATCH v4 01/14] package/qt6: bump version to 6.7.0 In-Reply-To: <1934329> References: <1934329> Message-ID: <20240513220328.1085629-1-roykollensvendsen@gmail.com> From: Roy Kollen Svendsen For details see [1], [2], [3], [4], [5], [6], [7], [8] and [9]. [1] https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.5.0/release-note.md [2] https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.5.1/release-note.md [3] https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.5.2/release-note.md [4] https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.5.3/release-note.md [5] https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.6.0/release-note.md [6] https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.6.1/release-note.md [7] https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.6.2/release-note.md [8] https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.6.3/release-note.md [9] https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.7.0/release-note.md We also apply the associated CVE-2024-33861 patch from: https://download.qt.io/archive/qt/6.7/ As Jesse Van Gavere noted: "This is not applicable to 6.4.3, the affected versions are detailed in the bugzilla report below and it's only 6.5.0+ So this seems perfectly valid to go along with the version bump. OpenSUSE report: https://www.suse.com/security/cve/CVE-2024-33861.html Bugzilla report clarifying affected versions https://bugzilla.suse.com/show_bug.cgi?id=1223917" Signed-off-by: Roy Kollen Svendsen --- Changes v3 -> v4: - Explain why the associated CVE-patch should be part of this series (suggested by Thomas) - Squash the CVE-patch into this patch. - Add CVE-ID to QT6BASE_IGNORE_CVES. (suggested by Thomas) package/qt6/qt6.mk | 4 +-- .../0001-Fix-CVE-2024-33861-for-Qt6.7.patch | 36 +++++++++++++++++++ package/qt6/qt6base/qt6base.hash | 4 +-- package/qt6/qt6base/qt6base.mk | 2 +- .../qt6/qt6core5compat/qt6core5compat.hash | 4 +-- package/qt6/qt6serialbus/qt6serialbus.hash | 4 +-- package/qt6/qt6serialport/qt6serialport.hash | 4 +-- package/qt6/qt6svg/qt6svg.hash | 4 +-- 8 files changed, 49 insertions(+), 13 deletions(-) create mode 100644 package/qt6/qt6base/0001-Fix-CVE-2024-33861-for-Qt6.7.patch diff --git a/package/qt6/qt6.mk b/package/qt6/qt6.mk index 1edb252c96..b87cb6748d 100644 --- a/package/qt6/qt6.mk +++ b/package/qt6/qt6.mk @@ -4,8 +4,8 @@ # ################################################################################ -QT6_VERSION_MAJOR = 6.4 -QT6_VERSION = $(QT6_VERSION_MAJOR).3 +QT6_VERSION_MAJOR = 6.7 +QT6_VERSION = $(QT6_VERSION_MAJOR).0 QT6_SOURCE_TARBALL_PREFIX = everywhere-src QT6_SITE = https://download.qt.io/archive/qt/$(QT6_VERSION_MAJOR)/$(QT6_VERSION)/submodules diff --git a/package/qt6/qt6base/0001-Fix-CVE-2024-33861-for-Qt6.7.patch b/package/qt6/qt6base/0001-Fix-CVE-2024-33861-for-Qt6.7.patch new file mode 100644 index 0000000000..f016788017 --- /dev/null +++ b/package/qt6/qt6base/0001-Fix-CVE-2024-33861-for-Qt6.7.patch @@ -0,0 +1,36 @@ +From 7f88945625f560796c86a267086f163e74c1407b Mon Sep 17 00:00:00 2001 +From: Roy Kollen Svendsen +Date: Sun, 12 May 2024 07:15:32 +0200 +Subject: [PATCH] Fix CVE-2024-33861 for Qt6.7 + +Signed-off-by: Roy Kollen Svendsen +Upstream: https://download.qt.io/archive/qt/6.7/CVE-2024-33861-qtbase-6.7.diff +--- + src/corelib/text/qstringconverter.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/corelib/text/qstringconverter.cpp b/src/corelib/text/qstringconverter.cpp +index b5749843..fd45ccf2 100644 +--- a/src/corelib/text/qstringconverter.cpp ++++ b/src/corelib/text/qstringconverter.cpp +@@ -1954,7 +1954,7 @@ struct QStringConverterICU : QStringConverter + const void *context; + ucnv_getToUCallBack(icu_conv, &action, &context); + if (context != state) +- ucnv_setToUCallBack(icu_conv, action, &state, nullptr, nullptr, &err); ++ ucnv_setToUCallBack(icu_conv, action, state, nullptr, nullptr, &err); + + ucnv_toUnicode(icu_conv, &target, targetLimit, &source, sourceLimit, nullptr, flush, &err); + // We did reserve enough space: +@@ -1987,7 +1987,7 @@ struct QStringConverterICU : QStringConverter + const void *context; + ucnv_getFromUCallBack(icu_conv, &action, &context); + if (context != state) +- ucnv_setFromUCallBack(icu_conv, action, &state, nullptr, nullptr, &err); ++ ucnv_setFromUCallBack(icu_conv, action, state, nullptr, nullptr, &err); + + ucnv_fromUnicode(icu_conv, &target, targetLimit, &source, sourceLimit, nullptr, flush, &err); + // We did reserve enough space: +-- +2.45.0 + diff --git a/package/qt6/qt6base/qt6base.hash b/package/qt6/qt6base/qt6base.hash index cb111bd405..0f45826a45 100644 --- a/package/qt6/qt6base/qt6base.hash +++ b/package/qt6/qt6base/qt6base.hash @@ -1,5 +1,5 @@ -# Hash from: https://download.qt.io/official_releases/qt/6.4/6.4.3/submodules/qtbase-everywhere-src-6.4.3.tar.xz.sha256 -sha256 5087c9e5b0165e7bc3c1a4ab176b35d0cd8f52636aea903fa377bdba00891a60 qtbase-everywhere-src-6.4.3.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtbase-everywhere-src-6.7.0.tar.xz.sha256 +sha256 11b2e29e2e52fb0e3b453ea13bbe51a10fdff36e1c192d8868c5a40233b8b254 qtbase-everywhere-src-6.7.0.tar.xz # Hashes for license files sha256 e3ba223bb1423f0aad8c3dfce0fe3148db48926d41e6fbc3afbbf5ff9e1c89cb LICENSES/Apache-2.0.txt diff --git a/package/qt6/qt6base/qt6base.mk b/package/qt6/qt6base/qt6base.mk index 6857725ef5..b8040e395b 100644 --- a/package/qt6/qt6base/qt6base.mk +++ b/package/qt6/qt6base/qt6base.mk @@ -9,7 +9,7 @@ QT6BASE_SITE = $(QT6_SITE) QT6BASE_SOURCE = qtbase-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6BASE_VERSION).tar.xz QT6BASE_CPE_ID_VENDOR = qt QT6BASE_CPE_ID_PRODUCT = qt - +QT6BASE_IGNORE_CVES = CVE-2024-33861 QT6BASE_CMAKE_BACKEND = ninja QT6BASE_LICENSE = \ diff --git a/package/qt6/qt6core5compat/qt6core5compat.hash b/package/qt6/qt6core5compat/qt6core5compat.hash index 0735df3af2..1eb0b5b460 100644 --- a/package/qt6/qt6core5compat/qt6core5compat.hash +++ b/package/qt6/qt6core5compat/qt6core5compat.hash @@ -1,5 +1,5 @@ -# Hash from: https://download.qt.io/official_releases/qt/6.4/6.4.3/submodules/qtserialport-everywhere-src-6.4.3.tar.xz.sha256 -sha256 d4b249abb823d575eee9045c24d924ba8d1276e6be7735b287689991d998aa7a qt5compat-everywhere-src-6.4.3.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qt5compat-everywhere-src-6.7.0.tar.xz.sha256 +sha256 9d49d4fd8345d8a40b63e0b65cd49c1d8286e33a7f1409bf1316763f654e19f5 qt5compat-everywhere-src-6.7.0.tar.xz # Hashes for license files: sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt diff --git a/package/qt6/qt6serialbus/qt6serialbus.hash b/package/qt6/qt6serialbus/qt6serialbus.hash index 98c8931962..17d5090076 100644 --- a/package/qt6/qt6serialbus/qt6serialbus.hash +++ b/package/qt6/qt6serialbus/qt6serialbus.hash @@ -1,5 +1,5 @@ -# Hash from: https://download.qt.io/official_releases/qt/6.4/6.4.3/submodules/qtserialbus-everywhere-src-6.4.3.tar.xz.sha256 -sha256 b6446a7516d1f04e561c00f9c50ce4d39dad72150f067722ba759f00b4b34366 qtserialbus-everywhere-src-6.4.3.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtserialbus-everywhere-src-6.7.0.tar.xz.sha256 +sha256 498193a9860664f8a55f676656c45af179ac13d48184af43fc58ddf795bb76dd qtserialbus-everywhere-src-6.7.0.tar.xz # Hashes for license files: sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt diff --git a/package/qt6/qt6serialport/qt6serialport.hash b/package/qt6/qt6serialport/qt6serialport.hash index 9341978d86..cd51fbe435 100644 --- a/package/qt6/qt6serialport/qt6serialport.hash +++ b/package/qt6/qt6serialport/qt6serialport.hash @@ -1,5 +1,5 @@ -# Hash from: https://download.qt.io/official_releases/qt/6.4/6.4.3/submodules/qtserialport-everywhere-src-6.4.3.tar.xz.sha256 -sha256 5f97ad9067efa39a8a2a39fbbc1e03d2191f305733d9c2f3060f8017ecfc95de qtserialport-everywhere-src-6.4.3.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtserialport-everywhere-src-6.7.0.tar.xz.sha256 +sha256 b1f02a3d8c9cc8ba2ffa7cca3749f1f147d327e8dfc633fd4ec3cb770d7981c9 qtserialport-everywhere-src-6.7.0.tar.xz # Hashes for license files: sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt diff --git a/package/qt6/qt6svg/qt6svg.hash b/package/qt6/qt6svg/qt6svg.hash index bb239cb012..32c1a79a5c 100644 --- a/package/qt6/qt6svg/qt6svg.hash +++ b/package/qt6/qt6svg/qt6svg.hash @@ -1,5 +1,5 @@ -# Hash from: https://download.qt.io/official_releases/qt/6.4/6.4.3/submodules/qtsvg-everywhere-src-6.4.3.tar.xz.sha256 -sha256 88315f886cf81898705e487cedba6e6160724359d23c518c92c333c098879a4a qtsvg-everywhere-src-6.4.3.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtsvg-everywhere-src-6.7.0.tar.xz.sha256 +sha256 1518f40e08ff5e6153a6e26e5b95b033413ac143b70795dc1317e7f73ebf922d qtsvg-everywhere-src-6.7.0.tar.xz # Hashes for license files: sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 22:03:07 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:07 +0200 Subject: [Buildroot] [PATCH v4 02/14] package/qt6/qt6base: add blind option to enable GUI support on host In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <1934329> <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: <20240513220328.1085629-2-roykollensvendsen@gmail.com> From: Roy Kollen Svendsen The Qt6::Gui module is needed when building the 'Qt Shader Baker' (qsb) host tool. Qsb is needed for converting the Qt6 Vulkan GLSL source code to platform specific shader languages which is then later copied to target. For more details take a look at: https://doc.qt.io/qt-6/qtshadertools-overview.html and https://doc.qt.io/qt-6/qshaderbaker.html Signed-off-by: Roy Kollen Svendsen --- package/Config.in.host | 1 + package/qt6/Config.in.host | 5 +++++ package/qt6/qt6base/Config.in.host | 4 ++++ package/qt6/qt6base/qt6base.mk | 7 ++++++- 4 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 package/qt6/Config.in.host create mode 100644 package/qt6/qt6base/Config.in.host diff --git a/package/Config.in.host b/package/Config.in.host index 986b2854d0..cbf54f5752 100644 --- a/package/Config.in.host +++ b/package/Config.in.host @@ -95,6 +95,7 @@ menu "Host utilities" source "package/python3/Config.in.host" source "package/qemu/Config.in.host" source "package/qoriq-rcw/Config.in.host" + source "package/qt6/Config.in.host" source "package/raspberrypi-usbboot/Config.in.host" source "package/rauc/Config.in.host" source "package/riscv-isa-sim/Config.in.host" diff --git a/package/qt6/Config.in.host b/package/qt6/Config.in.host new file mode 100644 index 0000000000..dfe7865c57 --- /dev/null +++ b/package/qt6/Config.in.host @@ -0,0 +1,5 @@ +if BR2_PACKAGE_QT6 + +source "package/qt6/qt6base/Config.in.host" + +endif diff --git a/package/qt6/qt6base/Config.in.host b/package/qt6/qt6base/Config.in.host new file mode 100644 index 0000000000..326c06278e --- /dev/null +++ b/package/qt6/qt6base/Config.in.host @@ -0,0 +1,4 @@ +# Select this if you need host qt6 tools that require the Qt::Gui module (e.g. +# Qt Shader Baker(qsb)). +config BR2_PACKAGE_HOST_QT6BASE_GUI + bool diff --git a/package/qt6/qt6base/qt6base.mk b/package/qt6/qt6base/qt6base.mk index b8040e395b..36ec05b394 100644 --- a/package/qt6/qt6base/qt6base.mk +++ b/package/qt6/qt6base/qt6base.mk @@ -84,7 +84,6 @@ HOST_QT6BASE_DEPENDENCIES = \ host-pcre2 \ host-zlib HOST_QT6BASE_CONF_OPTS = \ - -DFEATURE_gui=OFF \ -DFEATURE_concurrent=OFF \ -DFEATURE_xml=ON \ -DFEATURE_sql=OFF \ @@ -98,6 +97,12 @@ HOST_QT6BASE_CONF_OPTS = \ -DFEATURE_system_pcre2=ON \ -DFEATURE_system_zlib=ON +ifeq ($(BR2_PACKAGE_HOST_QT6BASE_GUI),y) +HOST_QT6BASE_CONF_OPTS += -DFEATURE_gui=ON +else +HOST_QT6BASE_CONF_OPTS += -DFEATURE_gui=OFF +endif + # Conditional blocks below are ordered by alphabetic ordering of the # BR2_PACKAGE_* option. -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 22:03:08 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:08 +0200 Subject: [Buildroot] [PATCH v4 03/14] package/qt6/qt6base: add blind option to enable Network support on host In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <1934329> <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: <20240513220328.1085629-3-roykollensvendsen@gmail.com> From: Roy Kollen Svendsen Qt Network is a required dependency of Qt Tools. Therefor we need a way to enable the Qt Network module when building for host. Signed-off-by: Roy Kollen Svendsen --- package/qt6/qt6base/Config.in.host | 5 +++++ package/qt6/qt6base/qt6base.mk | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/package/qt6/qt6base/Config.in.host b/package/qt6/qt6base/Config.in.host index 326c06278e..286da0ff03 100644 --- a/package/qt6/qt6base/Config.in.host +++ b/package/qt6/qt6base/Config.in.host @@ -2,3 +2,8 @@ # Qt Shader Baker(qsb)). config BR2_PACKAGE_HOST_QT6BASE_GUI bool + +# Select this if you need host qt6 tools that require the Qt::Network module +# (e.g. Qt Tools). +config BR2_PACKAGE_HOST_QT6BASE_NETWORK + bool diff --git a/package/qt6/qt6base/qt6base.mk b/package/qt6/qt6base/qt6base.mk index 36ec05b394..684bb86bc9 100644 --- a/package/qt6/qt6base/qt6base.mk +++ b/package/qt6/qt6base/qt6base.mk @@ -88,7 +88,6 @@ HOST_QT6BASE_CONF_OPTS = \ -DFEATURE_xml=ON \ -DFEATURE_sql=OFF \ -DFEATURE_testlib=OFF \ - -DFEATURE_network=OFF \ -DFEATURE_dbus=OFF \ -DFEATURE_icu=OFF \ -DFEATURE_glib=OFF \ @@ -103,6 +102,12 @@ else HOST_QT6BASE_CONF_OPTS += -DFEATURE_gui=OFF endif +ifeq ($(BR2_PACKAGE_HOST_QT6BASE_NETWORK),y) +HOST_QT6BASE_CONF_OPTS += -DFEATURE_network=ON +else +HOST_QT6BASE_CONF_OPTS += -DFEATURE_network=OFF +endif + # Conditional blocks below are ordered by alphabetic ordering of the # BR2_PACKAGE_* option. -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 22:03:09 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:09 +0200 Subject: [Buildroot] [PATCH v4 04/14] package/qt6/qt6base: add blind option to enable Test support on host In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <1934329> <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: <20240513220328.1085629-4-roykollensvendsen@gmail.com> Signed-off-by: Roy Kollen Svendsen --- Changes v3 -> v4: - This patch was added in v4. Required by patch 9/14. package/qt6/qt6base/Config.in.host | 5 +++++ package/qt6/qt6base/qt6base.mk | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/package/qt6/qt6base/Config.in.host b/package/qt6/qt6base/Config.in.host index 286da0ff03..80bc13c7dc 100644 --- a/package/qt6/qt6base/Config.in.host +++ b/package/qt6/qt6base/Config.in.host @@ -7,3 +7,8 @@ config BR2_PACKAGE_HOST_QT6BASE_GUI # (e.g. Qt Tools). config BR2_PACKAGE_HOST_QT6BASE_NETWORK bool + +# Select this if you need host qt6 tools that require the Qt::Test module +# (e.g. qmltestrunner). +config BR2_PACKAGE_HOST_QT6BASE_TEST + bool diff --git a/package/qt6/qt6base/qt6base.mk b/package/qt6/qt6base/qt6base.mk index 684bb86bc9..b19cce26f8 100644 --- a/package/qt6/qt6base/qt6base.mk +++ b/package/qt6/qt6base/qt6base.mk @@ -87,7 +87,6 @@ HOST_QT6BASE_CONF_OPTS = \ -DFEATURE_concurrent=OFF \ -DFEATURE_xml=ON \ -DFEATURE_sql=OFF \ - -DFEATURE_testlib=OFF \ -DFEATURE_dbus=OFF \ -DFEATURE_icu=OFF \ -DFEATURE_glib=OFF \ @@ -108,6 +107,12 @@ else HOST_QT6BASE_CONF_OPTS += -DFEATURE_network=OFF endif +ifeq ($(BR2_PACKAGE_HOST_QT6BASE_TEST),y) +HOST_QT6BASE_CONF_OPTS += -DFEATURE_testlib=ON +else +HOST_QT6BASE_CONF_OPTS += -DFEATURE_testlib=OFF +endif + # Conditional blocks below are ordered by alphabetic ordering of the # BR2_PACKAGE_* option. -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 22:03:10 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:10 +0200 Subject: [Buildroot] [PATCH v4 05/14] package/qt6/qt6base: add blind option to enable Sql support on host In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <1934329> <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: <20240513220328.1085629-5-roykollensvendsen@gmail.com> Signed-off-by: Roy Kollen Svendsen --- Changes v3 -> v4: - This patch was added in v4. Required by patch 12/14. package/qt6/qt6base/Config.in.host | 5 +++++ package/qt6/qt6base/qt6base.mk | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/package/qt6/qt6base/Config.in.host b/package/qt6/qt6base/Config.in.host index 80bc13c7dc..46fb668817 100644 --- a/package/qt6/qt6base/Config.in.host +++ b/package/qt6/qt6base/Config.in.host @@ -12,3 +12,8 @@ config BR2_PACKAGE_HOST_QT6BASE_NETWORK # (e.g. qmltestrunner). config BR2_PACKAGE_HOST_QT6BASE_TEST bool + +# Select this if you need host qt6 tools that require the Qt::Sql module +# (e.g. qhelpgenerator). +config BR2_PACKAGE_HOST_QT6BASE_SQL + bool diff --git a/package/qt6/qt6base/qt6base.mk b/package/qt6/qt6base/qt6base.mk index b19cce26f8..c927b06482 100644 --- a/package/qt6/qt6base/qt6base.mk +++ b/package/qt6/qt6base/qt6base.mk @@ -86,7 +86,6 @@ HOST_QT6BASE_DEPENDENCIES = \ HOST_QT6BASE_CONF_OPTS = \ -DFEATURE_concurrent=OFF \ -DFEATURE_xml=ON \ - -DFEATURE_sql=OFF \ -DFEATURE_dbus=OFF \ -DFEATURE_icu=OFF \ -DFEATURE_glib=OFF \ @@ -107,6 +106,12 @@ else HOST_QT6BASE_CONF_OPTS += -DFEATURE_network=OFF endif +ifeq ($(BR2_PACKAGE_HOST_QT6BASE_SQL),y) +HOST_QT6BASE_CONF_OPTS += -DFEATURE_sql=ON +else +HOST_QT6BASE_CONF_OPTS += -DFEATURE_sql=OFF +endif + ifeq ($(BR2_PACKAGE_HOST_QT6BASE_TEST),y) HOST_QT6BASE_CONF_OPTS += -DFEATURE_testlib=ON else -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 22:03:11 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:11 +0200 Subject: [Buildroot] [PATCH v4 06/14] package/qt6/qt6shadertools: new package In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <1934329> <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: <20240513220328.1085629-6-roykollensvendsen@gmail.com> From: Roy Kollen Svendsen Signed-off-by: Roy Kollen Svendsen --- package/qt6/Config.in | 1 + package/qt6/qt6shadertools/Config.in | 13 +++++++ .../qt6/qt6shadertools/qt6shadertools.hash | 10 +++++ package/qt6/qt6shadertools/qt6shadertools.mk | 39 +++++++++++++++++++ 4 files changed, 63 insertions(+) create mode 100644 package/qt6/qt6shadertools/Config.in create mode 100644 package/qt6/qt6shadertools/qt6shadertools.hash create mode 100644 package/qt6/qt6shadertools/qt6shadertools.mk diff --git a/package/qt6/Config.in b/package/qt6/Config.in index 276a0217ab..b7e95a6885 100644 --- a/package/qt6/Config.in +++ b/package/qt6/Config.in @@ -47,6 +47,7 @@ source "package/qt6/qt6base/Config.in" source "package/qt6/qt6core5compat/Config.in" source "package/qt6/qt6serialbus/Config.in" source "package/qt6/qt6serialport/Config.in" +source "package/qt6/qt6shadertools/Config.in" source "package/qt6/qt6svg/Config.in" endif diff --git a/package/qt6/qt6shadertools/Config.in b/package/qt6/qt6shadertools/Config.in new file mode 100644 index 0000000000..1b47dc6132 --- /dev/null +++ b/package/qt6/qt6shadertools/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_QT6SHADERTOOLS + bool "qt6shadertools" + select BR2_PACKAGE_HOST_QT6BASE_GUI + select BR2_PACKAGE_QT6BASE_GUI + help + Qt is a cross-platform application and UI framework for + developers using C++. + + The Qt Shader Tools module builds on the SPIR-V Open + Source Ecosystem as described at the Khronos SPIR-V web + site. + + https://doc.qt.io/qt-6/qtshadertools-index.html diff --git a/package/qt6/qt6shadertools/qt6shadertools.hash b/package/qt6/qt6shadertools/qt6shadertools.hash new file mode 100644 index 0000000000..90313163fa --- /dev/null +++ b/package/qt6/qt6shadertools/qt6shadertools.hash @@ -0,0 +1,10 @@ +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtshadertools-everywhere-src-6.7.0.tar.xz.sha256 +sha256 3e13f967c62f0815c901e754cbc472a2e19170da0c7a505230d559615f7998af qtshadertools-everywhere-src-6.7.0.tar.xz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSES/LGPL-3.0-only.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt diff --git a/package/qt6/qt6shadertools/qt6shadertools.mk b/package/qt6/qt6shadertools/qt6shadertools.mk new file mode 100644 index 0000000000..108f409380 --- /dev/null +++ b/package/qt6/qt6shadertools/qt6shadertools.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# qt6shadertools +# +################################################################################ + +QT6SHADERTOOLS_VERSION = $(QT6_VERSION) +QT6SHADERTOOLS_SITE = $(QT6_SITE) +QT6SHADERTOOLS_SOURCE = qtshadertools-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6SHADERTOOLS_VERSION).tar.xz +QT6SHADERTOOLS_INSTALL_STAGING = YES +QT6SHADERTOOLS_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6SHADERTOOLS_CMAKE_BACKEND = ninja + +QT6SHADERTOOLS_LICENSE = \ + GPL-2.0+ or LGPL-3.0, \ + GPL-3.0, GFDL-1.3 no invariants (docs) + +QT6SHADERTOOLS_LICENSE_FILES = \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt + +QT6SHADERTOOLS_CONF_OPTS = \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +QT6SHADERTOOLS_DEPENDENCIES = \ + host-pkgconf \ + qt6base \ + host-qt6shadertools + +HOST_QT6SHADERTOOLS_DEPENDENCIES = \ + host-qt6base + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 22:03:12 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:12 +0200 Subject: [Buildroot] [PATCH v4 07/14] package/qt6/qt6svg: allow building for host In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <1934329> <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: <20240513220328.1085629-7-roykollensvendsen@gmail.com> From: Roy Kollen Svendsen Signed-off-by: Roy Kollen Svendsen --- package/qt6/qt6svg/qt6svg.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/package/qt6/qt6svg/qt6svg.mk b/package/qt6/qt6svg/qt6svg.mk index 25e87dd208..a9d7eaef51 100644 --- a/package/qt6/qt6svg/qt6svg.mk +++ b/package/qt6/qt6svg/qt6svg.mk @@ -37,3 +37,4 @@ QT6SVG_DEPENDENCIES = \ qt6base $(eval $(cmake-package)) +$(eval $(host-cmake-package)) -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 22:03:13 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:13 +0200 Subject: [Buildroot] [PATCH v4 08/14] package/qt6/qt6languageserver: new package In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <1934329> <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: <20240513220328.1085629-8-roykollensvendsen@gmail.com> From: Roy Kollen Svendsen Signed-off-by: Roy Kollen Svendsen --- package/qt6/Config.in | 1 + package/qt6/qt6languageserver/Config.in | 9 +++++ .../qt6languageserver/qt6languageserver.hash | 11 ++++++ .../qt6languageserver/qt6languageserver.mk | 34 +++++++++++++++++++ 4 files changed, 55 insertions(+) create mode 100644 package/qt6/qt6languageserver/Config.in create mode 100644 package/qt6/qt6languageserver/qt6languageserver.hash create mode 100644 package/qt6/qt6languageserver/qt6languageserver.mk diff --git a/package/qt6/Config.in b/package/qt6/Config.in index b7e95a6885..81682af476 100644 --- a/package/qt6/Config.in +++ b/package/qt6/Config.in @@ -45,6 +45,7 @@ if BR2_PACKAGE_QT6 source "package/qt6/qt6base/Config.in" source "package/qt6/qt6core5compat/Config.in" +source "package/qt6/qt6languageserver/Config.in" source "package/qt6/qt6serialbus/Config.in" source "package/qt6/qt6serialport/Config.in" source "package/qt6/qt6shadertools/Config.in" diff --git a/package/qt6/qt6languageserver/Config.in b/package/qt6/qt6languageserver/Config.in new file mode 100644 index 0000000000..8a54ae1911 --- /dev/null +++ b/package/qt6/qt6languageserver/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_QT6LANGUAGESERVER + bool "qt6languageserver" + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt6languageserver module. + + https://doc.qt.io/qt-6/qtlanguageserver-index.html diff --git a/package/qt6/qt6languageserver/qt6languageserver.hash b/package/qt6/qt6languageserver/qt6languageserver.hash new file mode 100644 index 0000000000..2d40426c6f --- /dev/null +++ b/package/qt6/qt6languageserver/qt6languageserver.hash @@ -0,0 +1,11 @@ +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtlanguageserver-everywhere-src-6.7.0.tar.xz.sha256 +sha256 a99ecb342abdf7b7ac24804c89830a7991de95f9402f45a1e337ae851f76c9fc qtlanguageserver-everywhere-src-6.7.0.tar.xz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSES/LGPL-3.0-only.txt +sha256 9b1f50aae6267f9d5e0ceb6775ee86450262c25ec7c0573e151fe5d3f18a4700 LICENSES/LicenseRef-Qt-Commercial.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt diff --git a/package/qt6/qt6languageserver/qt6languageserver.mk b/package/qt6/qt6languageserver/qt6languageserver.mk new file mode 100644 index 0000000000..6f96feb275 --- /dev/null +++ b/package/qt6/qt6languageserver/qt6languageserver.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# qt6languageserver +# +################################################################################ + +QT6LANGUAGESERVER_VERSION = $(QT6_VERSION) +QT6LANGUAGESERVER_SITE = $(QT6_SITE) +QT6LANGUAGESERVER_SOURCE = qtlanguageserver-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6LANGUAGESERVER_VERSION).tar.xz +QT6LANGUAGESERVER_INSTALL_STAGING = YES +QT6LANGUAGESERVER_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6LANGUAGESERVER_CMAKE_BACKEND = ninja + +QT6LANGUAGESERVER_LICENSE = \ + GPL-2.0+ or LGPL-3.0, \ + GPL-3.0, GFDL-1.3 no invariants (docs) + +QT6LANGUAGESERVER_LICENSE_FILES = \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt + +QT6LANGUAGESERVER_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +QT6LANGUAGESERVER_DEPENDENCIES = \ + qt6base + +$(eval $(cmake-package)) -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 22:03:14 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:14 +0200 Subject: [Buildroot] [PATCH v4 09/14] package/qt6/qt6declarative: new package In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <1934329> <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: <20240513220328.1085629-9-roykollensvendsen@gmail.com> From: Roy Kollen Svendsen We add the patch to avoid checking for FEATURE_ssl when FEATURE_network is not available. FEATURE_ssl is defined by the Qt Network module. So we will get the following build failure if the patch is not applied and FEATURE_network=ON: CMake Error at qt6base-6.7.0/cmake/QtFeature.cmake:376 (message): Attempting to evaluate feature ssl but its definition is missing. Either the feature does not exist or a dependency to the module that defines it is missing Call Stack (most recent call first): qt6base-6.7.0/cmake/QtFeature.cmake:141 (qt_evaluate_feature) qt6base-6.7.0/cmake/QtFeature.cmake:180 (qt_internal_evaluate_config_expression) qt6base-6.7.0/cmake/QtFeature.cmake:396 (qt_evaluate_config_expression) qt6base-6.7.0/cmake/QtFeature.cmake:711 (qt_evaluate_feature) qt6base-6.7.0/cmake/QtFeature.cmake:680 (qt_feature_module_end) src/qml/CMakeLists.txt:13 (qt_feature_evaluate_features) To avoid the following build error, we also make sure the host qt6base is built with Testlib enabled: CMake Error at buildroot/output/build/qt6base-6.7.0/cmake/QtToolHelpers.cmake:684 (message): Failed to find the host tool "Qt6::qmltestrunner". It is part of the Qt6QmlTools package, but the package did not contain the tool. Make sure that the host module Qml was built with all features enabled (no explicitly disabled tools). Call Stack (most recent call first): buildroot/output/build/qt6base-6.7.0/cmake/QtToolHelpers.cmake:72 (qt_internal_find_tool) tools/qmltestrunner/CMakeLists.txt:11 (qt_internal_add_tool) Signed-off-by: Roy Kollen Svendsen --- Changes v3 -> v4: - Fix build failure when Testlib enabled for target. (suggested by Jesse) - Squash the 'Fix build with -no-feature-network'-patch into this commit, since no earlier version of the qt6declarative package exist. package/qt6/Config.in | 1 + ...1-Fix-build-with--no-feature-network.patch | 28 ++++++++++ package/qt6/qt6declarative/Config.in | 24 ++++++++ .../qt6/qt6declarative/qt6declarative.hash | 11 ++++ package/qt6/qt6declarative/qt6declarative.mk | 56 +++++++++++++++++++ 5 files changed, 120 insertions(+) create mode 100644 package/qt6/qt6declarative/0001-Fix-build-with--no-feature-network.patch create mode 100644 package/qt6/qt6declarative/Config.in create mode 100644 package/qt6/qt6declarative/qt6declarative.hash create mode 100644 package/qt6/qt6declarative/qt6declarative.mk diff --git a/package/qt6/Config.in b/package/qt6/Config.in index 81682af476..625134d281 100644 --- a/package/qt6/Config.in +++ b/package/qt6/Config.in @@ -45,6 +45,7 @@ if BR2_PACKAGE_QT6 source "package/qt6/qt6base/Config.in" source "package/qt6/qt6core5compat/Config.in" +source "package/qt6/qt6declarative/Config.in" source "package/qt6/qt6languageserver/Config.in" source "package/qt6/qt6serialbus/Config.in" source "package/qt6/qt6serialport/Config.in" diff --git a/package/qt6/qt6declarative/0001-Fix-build-with--no-feature-network.patch b/package/qt6/qt6declarative/0001-Fix-build-with--no-feature-network.patch new file mode 100644 index 0000000000..bef5794229 --- /dev/null +++ b/package/qt6/qt6declarative/0001-Fix-build-with--no-feature-network.patch @@ -0,0 +1,28 @@ +From 8377691a0998fd84e6fc8349a5db450bf2d79164 Mon Sep 17 00:00:00 2001 +From: Tasuku Suzuki +Date: Tue, 21 Nov 2023 23:58:43 +0900 +Subject: Fix build with -no-feature-network + +Change-Id: Ib21012301da6afb5458f707b39a9a8079d93eb93 +Reviewed-by: Ulf Hermann +Upstream: https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=8377691a0998fd84e6fc8349a5db450bf2d79164 +Signed-off-by: Roy Kollen Svendsen +--- + src/qml/configure.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/qml/configure.cmake b/src/qml/configure.cmake +index 2d0434643a..d1ff90bd54 100644 +--- a/src/qml/configure.cmake ++++ b/src/qml/configure.cmake +@@ -82,7 +82,7 @@ qt_feature("qml-ssl" PUBLIC + SECTION "QML" + LABEL "QML SSL support" + PURPOSE "Provides ssl support in QML." +- CONDITION QT_FEATURE_ssl ++ CONDITION QT_FEATURE_qml_network AND QT_FEATURE_ssl + ) + + # On arm and arm64 we need a specialization of cacheFlush() for each OS to be +-- +cgit v1.2.3 diff --git a/package/qt6/qt6declarative/Config.in b/package/qt6/qt6declarative/Config.in new file mode 100644 index 0000000000..1daa645413 --- /dev/null +++ b/package/qt6/qt6declarative/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_QT6DECLARATIVE + bool "qt6declarative" + # Enable host test module to ensure that qmltestrunner is built + select BR2_PACKAGE_HOST_QT6BASE_TEST if BR2_PACKAGE_QT6BASE_TEST + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt6declarative module. + + https://doc.qt.io/qt-6/qtdeclarative-index.html + +if BR2_PACKAGE_QT6DECLARATIVE + +config BR2_PACKAGE_QT6DECLARATIVE_QUICK + bool "quick module" + select BR2_PACKAGE_QT6BASE_GUI + select BR2_PACKAGE_QT6LANGUAGESERVER + select BR2_PACKAGE_QT6SHADERTOOLS + select BR2_PACKAGE_QT6BASE_OPENGL if BR2_PACKAGE_QT6_GL_SUPPORTS + select BR2_PACKAGE_HOST_QT6SVG + select BR2_PACKAGE_HOST_QT6DECLARATIVE + +endif diff --git a/package/qt6/qt6declarative/qt6declarative.hash b/package/qt6/qt6declarative/qt6declarative.hash new file mode 100644 index 0000000000..ae9925509b --- /dev/null +++ b/package/qt6/qt6declarative/qt6declarative.hash @@ -0,0 +1,11 @@ +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtdeclarative-everywhere-src-6.7.0.tar.xz.sha256 +sha256 5a0c39579a74d7cca581162c866ed0887287d4f8d5abff7ab9492d4a58fa9e2c qtdeclarative-everywhere-src-6.7.0.tar.xz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSES/LGPL-3.0-only.txt +sha256 9b1f50aae6267f9d5e0ceb6775ee86450262c25ec7c0573e151fe5d3f18a4700 LICENSES/LicenseRef-Qt-Commercial.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt diff --git a/package/qt6/qt6declarative/qt6declarative.mk b/package/qt6/qt6declarative/qt6declarative.mk new file mode 100644 index 0000000000..2348ff2dae --- /dev/null +++ b/package/qt6/qt6declarative/qt6declarative.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# qt6declaratve +# +################################################################################ + +QT6DECLARATIVE_VERSION = $(QT6_VERSION) +QT6DECLARATIVE_SITE = $(QT6_SITE) +QT6DECLARATIVE_SOURCE = qtdeclarative-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6DECLARATIVE_VERSION).tar.xz +QT6DECLARATIVE_INSTALL_STAGING = YES + +QT6DECLARATIVE_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6DECLARATIVE_CMAKE_BACKEND = ninja + +QT6DECLARATIVE_LICENSE = \ + GPL-2.0+ or LGPL-3.0, \ + GPL-3.0, GFDL-1.3 no invariants (docs) + +QT6DECLARATIVE_LICENSE_FILES = \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt + +QT6DECLARATIVE_CONF_OPTS = \ + -DQT_FEATURE_qml_profiler=OFF \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +HOST_QT6DECLARATIVE_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF \ + -DQT_FEATURE_ssl=OFF + +QT6DECLARATIVE_DEPENDENCIES = \ + host-qt6base \ + host-qt6svg \ + host-qt6shadertools \ + host-qt6declarative \ + qt6base \ + qt6shadertools \ + qt6languageserver \ + qt6svg + +HOST_QT6DECLARATIVE_DEPENDENCIES = \ + host-qt6base \ + host-qt6svg \ + host-qt6shadertools + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 22:03:15 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:15 +0200 Subject: [Buildroot] [PATCH v4 10/14] package/qt6/qt6websockets: new package In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <1934329> <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: <20240513220328.1085629-10-roykollensvendsen@gmail.com> From: Roy Kollen Svendsen Signed-off-by: Roy Kollen Svendsen --- package/qt6/Config.in | 1 + package/qt6/qt6websockets/Config.in | 9 ++++ package/qt6/qt6websockets/qt6websockets.hash | 11 +++++ package/qt6/qt6websockets/qt6websockets.mk | 46 ++++++++++++++++++++ 4 files changed, 67 insertions(+) create mode 100644 package/qt6/qt6websockets/Config.in create mode 100644 package/qt6/qt6websockets/qt6websockets.hash create mode 100644 package/qt6/qt6websockets/qt6websockets.mk diff --git a/package/qt6/Config.in b/package/qt6/Config.in index 625134d281..16f792cff3 100644 --- a/package/qt6/Config.in +++ b/package/qt6/Config.in @@ -51,5 +51,6 @@ source "package/qt6/qt6serialbus/Config.in" source "package/qt6/qt6serialport/Config.in" source "package/qt6/qt6shadertools/Config.in" source "package/qt6/qt6svg/Config.in" +source "package/qt6/qt6websockets/Config.in" endif diff --git a/package/qt6/qt6websockets/Config.in b/package/qt6/qt6websockets/Config.in new file mode 100644 index 0000000000..a201483922 --- /dev/null +++ b/package/qt6/qt6websockets/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_QT6WEBSOCKETS + bool "qt6websockets" + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt6websockets module. + + https://doc.qt.io/qt-6/qtwebsockets-index.html diff --git a/package/qt6/qt6websockets/qt6websockets.hash b/package/qt6/qt6websockets/qt6websockets.hash new file mode 100644 index 0000000000..4e36eb4257 --- /dev/null +++ b/package/qt6/qt6websockets/qt6websockets.hash @@ -0,0 +1,11 @@ +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtwebsockets-everywhere-src-6.7.0.tar.xz.sha256 +sha256 5ffc77da6b36cdf18e04c975a0fbf243968806a93a6291bcd2e9cd0b26139736 qtwebsockets-everywhere-src-6.7.0.tar.xz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSES/LGPL-3.0-only.txt +sha256 9b1f50aae6267f9d5e0ceb6775ee86450262c25ec7c0573e151fe5d3f18a4700 LICENSES/LicenseRef-Qt-Commercial.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt diff --git a/package/qt6/qt6websockets/qt6websockets.mk b/package/qt6/qt6websockets/qt6websockets.mk new file mode 100644 index 0000000000..cc17085d10 --- /dev/null +++ b/package/qt6/qt6websockets/qt6websockets.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# qt6websockets +# +################################################################################ + +QT6WEBSOCKETS_VERSION = $(QT6_VERSION) +QT6WEBSOCKETS_SITE = $(QT6_SITE) +QT6WEBSOCKETS_SOURCE = qtwebsockets-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6WEBSOCKETS_VERSION).tar.xz +QT6WEBSOCKETS_INSTALL_STAGING = YES + +QT6WEBSOCKETS_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6WEBSOCKETS_CMAKE_BACKEND = ninja + +QT6WEBSOCKETS_LICENSE = \ + GPL-2.0+ or LGPL-3.0, \ + GPL-3.0, GFDL-1.3 no invariants (docs) + +QT6WEBSOCKETS_LICENSE_FILES = \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt + +QT6WEBSOCKETS_CONF_OPTS = \ + -DQT_FEATURE_thread=ON \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +HOST_QT6WEBSOCKETS_CONF_OPTS = \ + -DQT_FEATURE_thread=ON \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +QT6WEBSOCKETS_DEPENDENCIES = \ + qt6base \ + qt6declarative \ + host-qt6declarative + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 22:03:16 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:16 +0200 Subject: [Buildroot] [PATCH v4 11/14] package/qt6/qt6wayland: new package In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <1934329> <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: <20240513220328.1085629-11-roykollensvendsen@gmail.com> From: Roy Kollen Svendsen Signed-off-by: Roy Kollen Svendsen --- Changes v3 -> v4: - Fix compositor build by letting this package select libxkbcommon. package/qt6/Config.in | 1 + package/qt6/qt6wayland/Config.in | 25 ++++++++++++ package/qt6/qt6wayland/qt6wayland.hash | 11 ++++++ package/qt6/qt6wayland/qt6wayland.mk | 53 ++++++++++++++++++++++++++ 4 files changed, 90 insertions(+) create mode 100644 package/qt6/qt6wayland/Config.in create mode 100644 package/qt6/qt6wayland/qt6wayland.hash create mode 100644 package/qt6/qt6wayland/qt6wayland.mk diff --git a/package/qt6/Config.in b/package/qt6/Config.in index 16f792cff3..69ce0b3f6a 100644 --- a/package/qt6/Config.in +++ b/package/qt6/Config.in @@ -51,6 +51,7 @@ source "package/qt6/qt6serialbus/Config.in" source "package/qt6/qt6serialport/Config.in" source "package/qt6/qt6shadertools/Config.in" source "package/qt6/qt6svg/Config.in" +source "package/qt6/qt6wayland/Config.in" source "package/qt6/qt6websockets/Config.in" endif diff --git a/package/qt6/qt6wayland/Config.in b/package/qt6/qt6wayland/Config.in new file mode 100644 index 0000000000..a47c9e888c --- /dev/null +++ b/package/qt6/qt6wayland/Config.in @@ -0,0 +1,25 @@ +comment "qt6wayland needs an OpenGL-capable backend" + depends on !BR2_PACKAGE_QT6_GL_SUPPORTS + +config BR2_PACKAGE_QT6WAYLAND + bool "qt6wayland" + depends on BR2_PACKAGE_QT6_GL_SUPPORTS + select BR2_PACKAGE_WAYLAND + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt6wayland module. + + https://doc.qt.io/qt-6/qtwayland-index.html + +if BR2_PACKAGE_QT6WAYLAND + +config BR2_PACKAGE_QT6WAYLAND_COMPOSITOR + bool "Enable compositor (experimental)" + select BR2_PACKAGE_LIBXKBCOMMON + help + The compositor API is still experimental, and not built by + default. + +endif diff --git a/package/qt6/qt6wayland/qt6wayland.hash b/package/qt6/qt6wayland/qt6wayland.hash new file mode 100644 index 0000000000..13a6ba15eb --- /dev/null +++ b/package/qt6/qt6wayland/qt6wayland.hash @@ -0,0 +1,11 @@ +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtwayland-everywhere-src-6.7.0.tar.xz.sha256 +sha256 d73470e4217da388d8cd2a517ee8bb373853f33c569306e80f04397845157aea qtwayland-everywhere-src-6.7.0.tar.xz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSES/LGPL-3.0-only.txt +sha256 9b1f50aae6267f9d5e0ceb6775ee86450262c25ec7c0573e151fe5d3f18a4700 LICENSES/LicenseRef-Qt-Commercial.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt diff --git a/package/qt6/qt6wayland/qt6wayland.mk b/package/qt6/qt6wayland/qt6wayland.mk new file mode 100644 index 0000000000..cf8727287e --- /dev/null +++ b/package/qt6/qt6wayland/qt6wayland.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# qt6wayland +# +################################################################################ + +QT6WAYLAND_VERSION = $(QT6_VERSION) +QT6WAYLAND_SITE = $(QT6_SITE) +QT6WAYLAND_SOURCE = qtwayland-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6WAYLAND_VERSION).tar.xz +QT6WAYLAND_INSTALL_STAGING = YES + +QT6WAYLAND_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6WAYLAND_CMAKE_BACKEND = ninja + +QT6WAYLAND_LICENSE = \ + GPL-2.0+ or LGPL-3.0, \ + GPL-3.0, GFDL-1.3 no invariants (docs) + +QT6WAYLAND_LICENSE_FILES = \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt + +QT6WAYLAND_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF \ + -DFEATURE_wayland_client=ON + +ifeq ($(BR2_PACKAGE_QT6WAYLAND_COMPOSITOR),y) +QT6WAYLAND_CONF_OPTS += -DFEATURE_wayland_server=ON +else +QT6WAYLAND_CONF_OPTS += -DFEATURE_wayland_server=OFF +endif + +HOST_QT6WAYLAND_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +QT6WAYLAND_DEPENDENCIES = \ + qt6base \ + qt6declarative \ + host-qt6wayland \ + wayland \ + host-wayland + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 22:03:18 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:18 +0200 Subject: [Buildroot] [PATCH v4 13/14] package/qt6/qt6virtualkeyboard: new package In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <1934329> <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: <20240513220328.1085629-13-roykollensvendsen@gmail.com> From: Roy Kollen Svendsen Signed-off-by: Roy Kollen Svendsen --- package/qt6/Config.in | 1 + package/qt6/qt6virtualkeyboard/Config.in | 9 ++++ .../qt6virtualkeyboard.hash | 12 +++++ .../qt6virtualkeyboard/qt6virtualkeyboard.mk | 49 +++++++++++++++++++ 4 files changed, 71 insertions(+) create mode 100644 package/qt6/qt6virtualkeyboard/Config.in create mode 100644 package/qt6/qt6virtualkeyboard/qt6virtualkeyboard.hash create mode 100644 package/qt6/qt6virtualkeyboard/qt6virtualkeyboard.mk diff --git a/package/qt6/Config.in b/package/qt6/Config.in index 48366f5fd1..9dbc4b804a 100644 --- a/package/qt6/Config.in +++ b/package/qt6/Config.in @@ -52,6 +52,7 @@ source "package/qt6/qt6serialport/Config.in" source "package/qt6/qt6shadertools/Config.in" source "package/qt6/qt6svg/Config.in" source "package/qt6/qt6tools/Config.in" +source "package/qt6/qt6virtualkeyboard/Config.in" source "package/qt6/qt6wayland/Config.in" source "package/qt6/qt6websockets/Config.in" diff --git a/package/qt6/qt6virtualkeyboard/Config.in b/package/qt6/qt6virtualkeyboard/Config.in new file mode 100644 index 0000000000..59e9dc3595 --- /dev/null +++ b/package/qt6/qt6virtualkeyboard/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_QT6VIRTUALKEYBOARD + bool "qt6virtualkeyboard" + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt6virtualkeyboard module. + + https://doc.qt.io/qt-6/qtvirtualkeyboard-index.html diff --git a/package/qt6/qt6virtualkeyboard/qt6virtualkeyboard.hash b/package/qt6/qt6virtualkeyboard/qt6virtualkeyboard.hash new file mode 100644 index 0000000000..dc9a0f23ab --- /dev/null +++ b/package/qt6/qt6virtualkeyboard/qt6virtualkeyboard.hash @@ -0,0 +1,12 @@ +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtvirtualkeyboard-everywhere-src-6.7.0.tar.xz.sha256 +sha256 d61bb2a18b1b06f64c956b2bde740c90a4bb46c47a99b31462e6e8d278a0cb6a qtvirtualkeyboard-everywhere-src-6.7.0.tar.xz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 9b1f50aae6267f9d5e0ceb6775ee86450262c25ec7c0573e151fe5d3f18a4700 LICENSES/LicenseRef-Qt-Commercial.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt +sha256 05cc719deafd0ab083b03296bb2911de10d116953b626a7629b9ca59938038b1 src/plugins/openwnn/3rdparty/openwnn/NOTICE +sha256 b5830d96fb5a7e7e7ebcc295f352846b4b998e78fdc8f9aa68e134d2e4b39986 src/plugins/pinyin/3rdparty/pinyin/NOTICE +sha256 9400a6128693d2f25653698e695f554660c71efccc8c21af28bf143e35199db6 src/plugins/tcime/3rdparty/tcime/COPYING diff --git a/package/qt6/qt6virtualkeyboard/qt6virtualkeyboard.mk b/package/qt6/qt6virtualkeyboard/qt6virtualkeyboard.mk new file mode 100644 index 0000000000..e49643149e --- /dev/null +++ b/package/qt6/qt6virtualkeyboard/qt6virtualkeyboard.mk @@ -0,0 +1,49 @@ +################################################################################ +# +# qt6virtualkeyboard +# +################################################################################ + +QT6VIRTUALKEYBOARD_VERSION = $(QT6_VERSION) +QT6VIRTUALKEYBOARD_SITE = $(QT6_SITE) +QT6VIRTUALKEYBOARD_SOURCE = qtvirtualkeyboard-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6VIRTUALKEYBOARD_VERSION).tar.xz +QT6VIRTUALKEYBOARD_INSTALL_STAGING = YES + +QT6VIRTUALKEYBOARD_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6VIRTUALKEYBOARD_CMAKE_BACKEND = ninja + +QT6VIRTUALKEYBOARD_LICENSE = \ + GPL-3.0-only, GFDL-1.3 no invariants (docs), \ + BSD-3-Clause + +QT6VIRTUALKEYBOARD_LICENSE_FILES = \ + LICENSES/BSD-3-Clause.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LicenseRef-Qt-Commercial.txt \ + LICENSES/Qt-GPL-exception-1.0.txt \ + src/plugins/openwnn/3rdparty/openwnn/NOTICE \ + src/plugins/pinyin/3rdparty/pinyin/NOTICE \ + src/plugins/tcime/3rdparty/tcime/COPYING + +QT6VIRTUALKEYBOARD_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +HOST_QT6VIRTUALKEYBOARD_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +QT6VIRTUALKEYBOARD_DEPENDENCIES = \ + qt6base \ + qt6declarative \ + qt6svg \ + host-qt6declarative + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 22:03:17 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:17 +0200 Subject: [Buildroot] [PATCH v4 12/14] package/qt6/qt6tools: new package In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <1934329> <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: <20240513220328.1085629-12-roykollensvendsen@gmail.com> From: Roy Kollen Svendsen Signed-off-by: Roy Kollen Svendsen --- Changes v3 -> v4: - Fix build by selecting the Sql module on host so that the required host tool qhelpgenerator is built. package/qt6/Config.in | 1 + package/qt6/qt6tools/Config.in | 13 +++++++++++ package/qt6/qt6tools/qt6tools.hash | 11 +++++++++ package/qt6/qt6tools/qt6tools.mk | 37 ++++++++++++++++++++++++++++++ 4 files changed, 62 insertions(+) create mode 100644 package/qt6/qt6tools/Config.in create mode 100644 package/qt6/qt6tools/qt6tools.hash create mode 100644 package/qt6/qt6tools/qt6tools.mk diff --git a/package/qt6/Config.in b/package/qt6/Config.in index 69ce0b3f6a..48366f5fd1 100644 --- a/package/qt6/Config.in +++ b/package/qt6/Config.in @@ -51,6 +51,7 @@ source "package/qt6/qt6serialbus/Config.in" source "package/qt6/qt6serialport/Config.in" source "package/qt6/qt6shadertools/Config.in" source "package/qt6/qt6svg/Config.in" +source "package/qt6/qt6tools/Config.in" source "package/qt6/qt6wayland/Config.in" source "package/qt6/qt6websockets/Config.in" diff --git a/package/qt6/qt6tools/Config.in b/package/qt6/qt6tools/Config.in new file mode 100644 index 0000000000..6e5298de35 --- /dev/null +++ b/package/qt6/qt6tools/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_QT6TOOLS + bool "qt6tools" + select BR2_PACKAGE_QT6BASE_NETWORK + select BR2_PACKAGE_HOST_QT6BASE_NETWORK + select BR2_PACKAGE_HOST_QT6BASE_SQL + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Qt Tools provides tools facilitate the development + and design of applications. + + https://doc.qt.io/qt-6/qtmodules.html#qt-tools diff --git a/package/qt6/qt6tools/qt6tools.hash b/package/qt6/qt6tools/qt6tools.hash new file mode 100644 index 0000000000..6f2c962740 --- /dev/null +++ b/package/qt6/qt6tools/qt6tools.hash @@ -0,0 +1,11 @@ +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qttools-everywhere-src-6.7.0.tar.xz.sha256 +sha256 c8da6b239e82fe1e23465cbf0936c0da5a334438d3fb433e19c503cbb1abee7b qttools-everywhere-src-6.7.0.tar.xz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSES/LGPL-3.0-only.txt +sha256 9b1f50aae6267f9d5e0ceb6775ee86450262c25ec7c0573e151fe5d3f18a4700 LICENSES/LicenseRef-Qt-Commercial.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt diff --git a/package/qt6/qt6tools/qt6tools.mk b/package/qt6/qt6tools/qt6tools.mk new file mode 100644 index 0000000000..8779e8c00f --- /dev/null +++ b/package/qt6/qt6tools/qt6tools.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# qt6tools +# +################################################################################ + +QT6TOOLS_VERSION = $(QT6_VERSION) +QT6TOOLS_SITE = $(QT6_SITE) +QT6TOOLS_SOURCE = qttools-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6TOOLS_VERSION).tar.xz +QT6TOOLS_INSTALL_STAGING = YES +QT6TOOLS_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6TOOLS_CMAKE_BACKEND = ninja + +QT6TOOLS_LICENSE = \ + GPL-2.0+ or LGPL-3.0, \ + GPL-3.0, GFDL-1.3 no invariants (docs) + +QT6TOOLS_LICENSE_FILES = \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt + +QT6TOOLS_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +QT6TOOLS_DEPENDENCIES = \ + qt6base \ + qt6declarative \ + host-qt6tools + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 22:03:19 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:19 +0200 Subject: [Buildroot] [PATCH v4 14/14] package/qt6/qt6mqtt: new package In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <1934329> <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: <20240513220328.1085629-14-roykollensvendsen@gmail.com> From: Roy Kollen Svendsen Signed-off-by: Roy Kollen Svendsen --- package/qt6/Config.in | 1 + package/qt6/qt6.mk | 2 ++ package/qt6/qt6mqtt/Config.in | 10 +++++++++ package/qt6/qt6mqtt/qt6mqtt.hash | 8 ++++++++ package/qt6/qt6mqtt/qt6mqtt.mk | 35 ++++++++++++++++++++++++++++++++ 5 files changed, 56 insertions(+) create mode 100644 package/qt6/qt6mqtt/Config.in create mode 100644 package/qt6/qt6mqtt/qt6mqtt.hash create mode 100644 package/qt6/qt6mqtt/qt6mqtt.mk diff --git a/package/qt6/Config.in b/package/qt6/Config.in index 9dbc4b804a..e84806d5e4 100644 --- a/package/qt6/Config.in +++ b/package/qt6/Config.in @@ -47,6 +47,7 @@ source "package/qt6/qt6base/Config.in" source "package/qt6/qt6core5compat/Config.in" source "package/qt6/qt6declarative/Config.in" source "package/qt6/qt6languageserver/Config.in" +source "package/qt6/qt6mqtt/Config.in" source "package/qt6/qt6serialbus/Config.in" source "package/qt6/qt6serialport/Config.in" source "package/qt6/qt6shadertools/Config.in" diff --git a/package/qt6/qt6.mk b/package/qt6/qt6.mk index b87cb6748d..42984f89ee 100644 --- a/package/qt6/qt6.mk +++ b/package/qt6/qt6.mk @@ -9,4 +9,6 @@ QT6_VERSION = $(QT6_VERSION_MAJOR).0 QT6_SOURCE_TARBALL_PREFIX = everywhere-src QT6_SITE = https://download.qt.io/archive/qt/$(QT6_VERSION_MAJOR)/$(QT6_VERSION)/submodules +QT6_GIT = git://code.qt.io + include $(sort $(wildcard package/qt6/*/*.mk)) diff --git a/package/qt6/qt6mqtt/Config.in b/package/qt6/qt6mqtt/Config.in new file mode 100644 index 0000000000..2cda7e53c0 --- /dev/null +++ b/package/qt6/qt6mqtt/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_QT6MQTT + bool "qt6mqtt" + select BR2_PACKAGE_QT6BASE_NETWORK + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt6mqtt module. + + https://doc.qt.io/qt-6/qtmqtt-index.html diff --git a/package/qt6/qt6mqtt/qt6mqtt.hash b/package/qt6/qt6mqtt/qt6mqtt.hash new file mode 100644 index 0000000000..0fad4fe06f --- /dev/null +++ b/package/qt6/qt6mqtt/qt6mqtt.hash @@ -0,0 +1,8 @@ +sha256 94024e3dd6c77feddfbd35520cc1f474d669aad7402f087827221890e07a64d5 qt6mqtt-6.7.0-git4.tar.gz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 9b1f50aae6267f9d5e0ceb6775ee86450262c25ec7c0573e151fe5d3f18a4700 LICENSES/LicenseRef-Qt-Commercial.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt diff --git a/package/qt6/qt6mqtt/qt6mqtt.mk b/package/qt6/qt6mqtt/qt6mqtt.mk new file mode 100644 index 0000000000..0405311065 --- /dev/null +++ b/package/qt6/qt6mqtt/qt6mqtt.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# qt6mqtt +# +################################################################################ + +QT6MQTT_VERSION = $(QT6_VERSION) +QT6MQTT_SITE = $(QT6_GIT)/qt/qtmqtt.git + +QT6MQTT_INSTALL_STAGING = YES + +QT6MQTT_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6MQTT_CMAKE_BACKEND = ninja + +QT6MQTT_LICENSE = \ + BSD-3-Clause, GPL-3.0-only, \ + GFDL-1.3-invariants-only (docs) + +QT6MQTT_LICENSE_FILES = \ + LICENSES/BSD-3-Clause.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/Qt-GPL-exception-1.0.txt + +QT6MQTT_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +QT6MQTT_DEPENDENCIES = \ + qt6base + +$(eval $(cmake-package)) -- 2.45.0 From ps.report at gmx.net Mon May 13 22:11:06 2024 From: ps.report at gmx.net (Peter Seiderer) Date: Tue, 14 May 2024 00:11:06 +0200 Subject: [Buildroot] [PATCH v2 1/4] Config.in: do not expand TOPDIR, BASE_DIR and CONFIG_DIR In-Reply-To: <20240513091950.30116-1-ps.report@gmx.net> References: <20240513091950.30116-1-ps.report@gmx.net> Message-ID: <20240514001106.6e9d8206@gmx.net> On Mon, 13 May 2024 11:19:45 +0200, Peter Seiderer via buildroot wrote: > - escape TOPDIR, BASE_DIR and CONFIG_DIR usage to force to not exapnd at > configure time (but at make time), needed for upcoming kconfig update > (see upstream commit [1]) Same is needed for 'ARCH' usage in toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options and toolchain/toolchain-external/toolchain-external-custom/Config.in.options (and support/scripts/gen-bootlin-toolchains)..., additional patch will follow with next patch set iteration... Regards, Peter > > [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=104daea149c45cc84842ce77a9bd6436d19f3dd8 > > Signed-off-by: Peter Seiderer > --- > Changes v1 -> v2: > - new patch (moved escape fixes from 'support/kconfig: reference environment > variables directly (remove 'option env=')' to this extra/preliminary patch) > --- > Config.in | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/Config.in b/Config.in > index b5a94325c4..035900c971 100644 > --- a/Config.in > +++ b/Config.in > @@ -197,7 +197,7 @@ config BR2_DEFCONFIG > > config BR2_DL_DIR > string "Download dir" > - default "$(TOPDIR)/dl" > + default "\$(TOPDIR)/dl" > help > Directory to store all the source files that we need to fetch. > If the Linux shell environment has defined the BR2_DL_DIR > @@ -211,7 +211,7 @@ config BR2_DL_DIR > > config BR2_HOST_DIR > string "Host dir" > - default "$(BASE_DIR)/host" > + default "\$(BASE_DIR)/host" > help > Directory to store all the binary files that are built for the > host. This includes the cross compilation toolchain when > @@ -669,7 +669,7 @@ endchoice > > config BR2_PACKAGE_OVERRIDE_FILE > string "location of a package override file" > - default "$(CONFIG_DIR)/local.mk" > + default "\$(CONFIG_DIR)/local.mk" > help > A package override file is a short makefile that contains > variable definitions of the form _OVERRIDE_SRCDIR, which From jesseevg at gmail.com Mon May 13 22:13:25 2024 From: jesseevg at gmail.com (Jesse Van Gavere) Date: Tue, 14 May 2024 00:13:25 +0200 Subject: [Buildroot] [PATCH v4 01/14] package/qt6: bump version to 6.7.0 In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: Op di 14 mei 2024 om 00:03 schreef Roy Kollen Svendsen < roykollensvendsen at gmail.com>: > From: Roy Kollen Svendsen > > For details see [1], [2], [3], [4], [5], [6], [7], [8] and [9]. > > [1] > https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.5.0/release-note.md > [2] > https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.5.1/release-note.md > [3] > https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.5.2/release-note.md > [4] > https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.5.3/release-note.md > > [5] > https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.6.0/release-note.md > [6] > https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.6.1/release-note.md > [7] > https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.6.2/release-note.md > [8] > https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.6.3/release-note.md > > [9] > https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.7.0/release-note.md > > We also apply the associated CVE-2024-33861 patch from: > > https://download.qt.io/archive/qt/6.7/ > > As Jesse Van Gavere noted: > > "This is not applicable to 6.4.3, the affected versions are detailed in > the bugzilla report below and it's only 6.5.0+ > So this seems perfectly valid to go along with the version bump. > > OpenSUSE report: > https://www.suse.com/security/cve/CVE-2024-33861.html > Bugzilla report clarifying affected versions > https://bugzilla.suse.com/show_bug.cgi?id=1223917" > > Signed-off-by: Roy Kollen Svendsen > --- > Changes v3 -> v4: > - Explain why the associated CVE-patch should be part of this series > (suggested by Thomas) > - Squash the CVE-patch into this patch. > - Add CVE-ID to QT6BASE_IGNORE_CVES. (suggested by Thomas) > > package/qt6/qt6.mk | 4 +-- > .../0001-Fix-CVE-2024-33861-for-Qt6.7.patch | 36 +++++++++++++++++++ > package/qt6/qt6base/qt6base.hash | 4 +-- > package/qt6/qt6base/qt6base.mk | 2 +- > .../qt6/qt6core5compat/qt6core5compat.hash | 4 +-- > package/qt6/qt6serialbus/qt6serialbus.hash | 4 +-- > package/qt6/qt6serialport/qt6serialport.hash | 4 +-- > package/qt6/qt6svg/qt6svg.hash | 4 +-- > 8 files changed, 49 insertions(+), 13 deletions(-) > create mode 100644 > package/qt6/qt6base/0001-Fix-CVE-2024-33861-for-Qt6.7.patch > > diff --git a/package/qt6/qt6.mk b/package/qt6/qt6.mk > index 1edb252c96..b87cb6748d 100644 > --- a/package/qt6/qt6.mk > +++ b/package/qt6/qt6.mk > @@ -4,8 +4,8 @@ > # > > ################################################################################ > > -QT6_VERSION_MAJOR = 6.4 > -QT6_VERSION = $(QT6_VERSION_MAJOR).3 > +QT6_VERSION_MAJOR = 6.7 > +QT6_VERSION = $(QT6_VERSION_MAJOR).0 > QT6_SOURCE_TARBALL_PREFIX = everywhere-src > QT6_SITE = > https://download.qt.io/archive/qt/$(QT6_VERSION_MAJOR)/$(QT6_VERSION)/submodules > > diff --git a/package/qt6/qt6base/0001-Fix-CVE-2024-33861-for-Qt6.7.patch > b/package/qt6/qt6base/0001-Fix-CVE-2024-33861-for-Qt6.7.patch > new file mode 100644 > index 0000000000..f016788017 > --- /dev/null > +++ b/package/qt6/qt6base/0001-Fix-CVE-2024-33861-for-Qt6.7.patch > @@ -0,0 +1,36 @@ > +From 7f88945625f560796c86a267086f163e74c1407b Mon Sep 17 00:00:00 2001 > +From: Roy Kollen Svendsen > +Date: Sun, 12 May 2024 07:15:32 +0200 > +Subject: [PATCH] Fix CVE-2024-33861 for Qt6.7 > + > +Signed-off-by: Roy Kollen Svendsen > > +Upstream: > https://download.qt.io/archive/qt/6.7/CVE-2024-33861-qtbase-6.7.diff > +--- > + src/corelib/text/qstringconverter.cpp | 4 ++-- > + 1 file changed, 2 insertions(+), 2 deletions(-) > + > +diff --git a/src/corelib/text/qstringconverter.cpp > b/src/corelib/text/qstringconverter.cpp > +index b5749843..fd45ccf2 100644 > +--- a/src/corelib/text/qstringconverter.cpp > ++++ b/src/corelib/text/qstringconverter.cpp > +@@ -1954,7 +1954,7 @@ struct QStringConverterICU : QStringConverter > + const void *context; > + ucnv_getToUCallBack(icu_conv, &action, &context); > + if (context != state) > +- ucnv_setToUCallBack(icu_conv, action, &state, nullptr, > nullptr, &err); > ++ ucnv_setToUCallBack(icu_conv, action, state, nullptr, > nullptr, &err); > + > + ucnv_toUnicode(icu_conv, &target, targetLimit, &source, > sourceLimit, nullptr, flush, &err); > + // We did reserve enough space: > +@@ -1987,7 +1987,7 @@ struct QStringConverterICU : QStringConverter > + const void *context; > + ucnv_getFromUCallBack(icu_conv, &action, &context); > + if (context != state) > +- ucnv_setFromUCallBack(icu_conv, action, &state, nullptr, > nullptr, &err); > ++ ucnv_setFromUCallBack(icu_conv, action, state, nullptr, > nullptr, &err); > + > + ucnv_fromUnicode(icu_conv, &target, targetLimit, &source, > sourceLimit, nullptr, flush, &err); > + // We did reserve enough space: > +-- > +2.45.0 > + > diff --git a/package/qt6/qt6base/qt6base.hash > b/package/qt6/qt6base/qt6base.hash > index cb111bd405..0f45826a45 100644 > --- a/package/qt6/qt6base/qt6base.hash > +++ b/package/qt6/qt6base/qt6base.hash > @@ -1,5 +1,5 @@ > -# Hash from: > https://download.qt.io/official_releases/qt/6.4/6.4.3/submodules/qtbase-everywhere-src-6.4.3.tar.xz.sha256 > -sha256 > > 5087c9e5b0165e7bc3c1a4ab176b35d0cd8f52636aea903fa377bdba00891a60 > qtbase-everywhere-src-6.4.3.tar.xz > +# Hash from: > https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtbase-everywhere-src-6.7.0.tar.xz.sha256 > +sha256 > > 11b2e29e2e52fb0e3b453ea13bbe51a10fdff36e1c192d8868c5a40233b8b254 > qtbase-everywhere-src-6.7.0.tar.xz > > # Hashes for license files > sha256 e3ba223bb1423f0aad8c3dfce0fe3148db48926d41e6fbc3afbbf5ff9e1c89cb > LICENSES/Apache-2.0.txt > diff --git a/package/qt6/qt6base/qt6base.mk b/package/qt6/qt6base/ > qt6base.mk > index 6857725ef5..b8040e395b 100644 > --- a/package/qt6/qt6base/qt6base.mk > +++ b/package/qt6/qt6base/qt6base.mk > @@ -9,7 +9,7 @@ QT6BASE_SITE = $(QT6_SITE) > QT6BASE_SOURCE = > qtbase-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6BASE_VERSION).tar.xz > QT6BASE_CPE_ID_VENDOR = qt > QT6BASE_CPE_ID_PRODUCT = qt > - > +QT6BASE_IGNORE_CVES = CVE-2024-33861 > QT6BASE_CMAKE_BACKEND = ninja > > QT6BASE_LICENSE = \ > diff --git a/package/qt6/qt6core5compat/qt6core5compat.hash > b/package/qt6/qt6core5compat/qt6core5compat.hash > index 0735df3af2..1eb0b5b460 100644 > --- a/package/qt6/qt6core5compat/qt6core5compat.hash > +++ b/package/qt6/qt6core5compat/qt6core5compat.hash > @@ -1,5 +1,5 @@ > -# Hash from: > https://download.qt.io/official_releases/qt/6.4/6.4.3/submodules/qtserialport-everywhere-src-6.4.3.tar.xz.sha256 > -sha256 > > d4b249abb823d575eee9045c24d924ba8d1276e6be7735b287689991d998aa7a > qt5compat-everywhere-src-6.4.3.tar.xz > +# Hash from: > https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qt5compat-everywhere-src-6.7.0.tar.xz.sha256 > +sha256 > > 9d49d4fd8345d8a40b63e0b65cd49c1d8286e33a7f1409bf1316763f654e19f5 > qt5compat-everywhere-src-6.7.0.tar.xz > > # Hashes for license files: > sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce > LICENSES/BSD-3-Clause.txt > diff --git a/package/qt6/qt6serialbus/qt6serialbus.hash > b/package/qt6/qt6serialbus/qt6serialbus.hash > index 98c8931962..17d5090076 100644 > --- a/package/qt6/qt6serialbus/qt6serialbus.hash > +++ b/package/qt6/qt6serialbus/qt6serialbus.hash > @@ -1,5 +1,5 @@ > -# Hash from: > https://download.qt.io/official_releases/qt/6.4/6.4.3/submodules/qtserialbus-everywhere-src-6.4.3.tar.xz.sha256 > -sha256 > > b6446a7516d1f04e561c00f9c50ce4d39dad72150f067722ba759f00b4b34366 > qtserialbus-everywhere-src-6.4.3.tar.xz > +# Hash from: > https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtserialbus-everywhere-src-6.7.0.tar.xz.sha256 > +sha256 > > 498193a9860664f8a55f676656c45af179ac13d48184af43fc58ddf795bb76dd > qtserialbus-everywhere-src-6.7.0.tar.xz > > # Hashes for license files: > sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce > LICENSES/BSD-3-Clause.txt > diff --git a/package/qt6/qt6serialport/qt6serialport.hash > b/package/qt6/qt6serialport/qt6serialport.hash > index 9341978d86..cd51fbe435 100644 > --- a/package/qt6/qt6serialport/qt6serialport.hash > +++ b/package/qt6/qt6serialport/qt6serialport.hash > @@ -1,5 +1,5 @@ > -# Hash from: > https://download.qt.io/official_releases/qt/6.4/6.4.3/submodules/qtserialport-everywhere-src-6.4.3.tar.xz.sha256 > -sha256 > > 5f97ad9067efa39a8a2a39fbbc1e03d2191f305733d9c2f3060f8017ecfc95de > qtserialport-everywhere-src-6.4.3.tar.xz > +# Hash from: > https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtserialport-everywhere-src-6.7.0.tar.xz.sha256 > +sha256 > > b1f02a3d8c9cc8ba2ffa7cca3749f1f147d327e8dfc633fd4ec3cb770d7981c9 > qtserialport-everywhere-src-6.7.0.tar.xz > > # Hashes for license files: > sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce > LICENSES/BSD-3-Clause.txt > diff --git a/package/qt6/qt6svg/qt6svg.hash > b/package/qt6/qt6svg/qt6svg.hash > index bb239cb012..32c1a79a5c 100644 > --- a/package/qt6/qt6svg/qt6svg.hash > +++ b/package/qt6/qt6svg/qt6svg.hash > @@ -1,5 +1,5 @@ > -# Hash from: > https://download.qt.io/official_releases/qt/6.4/6.4.3/submodules/qtsvg-everywhere-src-6.4.3.tar.xz.sha256 > -sha256 > > 88315f886cf81898705e487cedba6e6160724359d23c518c92c333c098879a4a > qtsvg-everywhere-src-6.4.3.tar.xz > +# Hash from: > https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtsvg-everywhere-src-6.7.0.tar.xz.sha256 > +sha256 > > 1518f40e08ff5e6153a6e26e5b95b033413ac143b70795dc1317e7f73ebf922d > qtsvg-everywhere-src-6.7.0.tar.xz > > # Hashes for license files: > sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce > LICENSES/BSD-3-Clause.txt > -- > 2.45.0 > > Acked-by: Jesse Van Gavere Of course testing a huge module like Qt fully is difficult given all the possible options but with these new iterations I tested them as good as I could and I feel confident this series is good to go as-is, great work Roy. -------------- next part -------------- An HTML attachment was scrubbed... URL: From bugzilla at busybox.net Mon May 13 23:05:41 2024 From: bugzilla at busybox.net (bugzilla at busybox.net) Date: Mon, 13 May 2024 23:05:41 +0000 Subject: [Buildroot] [Bug 16072] New: Make 4.4.1 breaks glibc 2.38 build when cross compiling for arm_hf Message-ID: https://bugs.busybox.net/show_bug.cgi?id=16072 Bug ID: 16072 Summary: Make 4.4.1 breaks glibc 2.38 build when cross compiling for arm_hf Product: buildroot Version: 2024.02.1 Hardware: All OS: Linux Status: NEW Severity: normal Priority: P5 Component: Other Assignee: unassigned at buildroot.uclibc.org Reporter: farhandude at gmail.com CC: buildroot at uclibc.org Target Milestone: --- make 4.4.1 is showing some strange behavior when it comes to handling command line variables. Buildroot passes 'install_root' command line variable to the glibc build, this variable is processed in : buildroot-2024.02.1/output/build/glibc-2.38-44-gd37c2b20a4787463d192b32041c3406c2bd91de0/build/config.make: ... install_root = $(DESTDIR) ... DESTDIR is empty With make 4.4.1, install_root gets overridden in config.make With make 4.2.1, install_root DOES NOT get overridden Due to this overriding, glibc tries to install its artifacts in '/' which fails Farhan -- You are receiving this mail because: You are on the CC list for the bug. From bugzilla at busybox.net Mon May 13 23:08:20 2024 From: bugzilla at busybox.net (bugzilla at busybox.net) Date: Mon, 13 May 2024 23:08:20 +0000 Subject: [Buildroot] [Bug 16072] Make 4.4.1 breaks glibc 2.38 build when cross compiling for arm_hf In-Reply-To: References: Message-ID: https://bugs.busybox.net/show_bug.cgi?id=16072 --- Comment #1 from Farhan Ali --- Just adding this for reference: make command-line variables cannot be overridden with simple assignment: https://www.gnu.org/software/make/manual/html_node/Overriding.html -- You are receiving this mail because: You are on the CC list for the bug. From thomas.petazzoni at bootlin.com Tue May 14 04:03:54 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 14 May 2024 04:03:54 -0000 Subject: [Buildroot] [autobuild.buildroot.net] Daily results for 2024-05-13 Message-ID: Hello, Autobuild statistics for 2024-05-13 =================================== branch | OK | NOK | TIM | TOT | 2024.02.x | 11 | 11 | 0 | 22 | master | 73 | 117 | 0 | 190 | Classification of failures by reason for master ----------------------------------------------- bat-0.24.0 | 6 host-sentry-cli-2.20.3 | 6 unknown | 6 fail2ban-1.0.2 | 5 libressl-3.8.4 | 5 coreutils-9.3 | 4 dust-0.9.0 | 4 ibm-sw-tpm2-5452af422edeff7... | 4 check-11970a7e112dfe243a2e6... | 3 ffmpeg-6.1.1 | 3 gobject-introspection-1.76.1 | 3 libcamera-apps-1.2.1 | 3 libffi-3.4.6 | 3 beecrypt-4.2.1 | 2 bird-2.0.12 | 2 brcm-patchram-plus-95b7b691... | 2 elfutils-0.189 | 2 glibc-2.39-5-ge0910f1d3278f... | 2 host-libxcrypt-4.4.36 | 2 mongodb-4.2.18 | 2 nushell-0.85.0 | 2 openssh-9.7p1 | 2 zlib-ng-2.1.6 | 2 alsa-plugins-1.2.7.1 | 1 atftp-0.8.0 | 1 aubio-152d6819b360c2e7b379e... | 1 bc-1.07.1 | 1 ccrypt-1.11 | 1 cdrkit-1.1.11 | 1 cni-plugins-1.3.0 | 1 dhcp-4.4.3-P1 | 1 docker-compose-2.27.0 | 1 eza-0.18.8 | 1 fcft-3.1.6 | 1 fftw-quad-3.3.10 | 1 flann-1.9.2 | 1 gdal-3.8.2 | 1 glibmm-2.76.0 | 1 gnu-efi-3.0.18 | 1 host-binutils-bare-metal-2.42 | 1 host-heimdal-f4faaeaba371ff... | 1 ledmon-1.0.0 | 1 libdbi-drivers-0bfae6c43134... | 1 libopenh264-2.4.0 | 1 libp11-0.4.12 | 1 librsvg-2.50.9 | 1 libsepol-3.6 | 1 linux-5.10.162-cip24 | 1 linux-5.10.162-cip24-rt10 | 1 lmdb-0.9.31 | 1 ltp-testsuite-20240129 | 1 ola-0.10.9 | 1 p7zip-17.05 | 1 protobuf-21.12 | 1 python-numpy-1.25.0 | 1 qemu-8.1.1 | 1 ripgrep-14.1.0 | 1 rtl8188eu-306f3e62cf7cddf8c... | 1 rtty-8.1.0 | 1 ruby-3.3.0 | 1 skalibs-2.12.0.1 | 1 syslog-ng-4.7.1 | 1 uclibc-1.0.48 | 1 ulog-0389d243352255f6182326... | 1 util-linux-2.39.3 | 1 Detail of failures for master ----------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- microblaze | alsa-plugins-1.2.7.1 | NOK | http://autobuild.buildroot.net/results/909bf62eb8f55956108b1a36949cc79d696b4766 | microblaze | atftp-0.8.0 | NOK | http://autobuild.buildroot.net/results/1ad1a99677ffcc79e412a27d1bf73d6db47474e6 | ORPH or1k | aubio-152d6819b360c2e7b379e... | NOK | http://autobuild.buildroot.net/results/4a5369090f438281eddc9d72448a321cb93f0d65 | arm | bat-0.24.0 | NOK | http://autobuild.buildroot.net/results/cf4351c73737318e2cad205aa0dd38d9250f3362 | x86_64 | bat-0.24.0 | NOK | http://autobuild.buildroot.net/results/b5e78164c5a974f89449ef6db75f732aad8b0f10 | x86_64 | bat-0.24.0 | NOK | http://autobuild.buildroot.net/results/7f27e508756918461eeec3c20eb6245c925c8704 | s390x | bat-0.24.0 | NOK | http://autobuild.buildroot.net/results/1c62a02b616e0764814345e791ef651c5e55925f | aarch64 | bat-0.24.0 | NOK | http://autobuild.buildroot.net/results/0662b21d6aee875a7e576df28d0e4bbf63b4f3d2 | s390x | bat-0.24.0 | NOK | http://autobuild.buildroot.net/results/03629728ec883fc723bcfe58334270f429ac0341 | sparc64 | bc-1.07.1 | NOK | http://autobuild.buildroot.net/results/4d3c0e0a08cd734699cb61412c99d705738e8ab4 | ORPH i686 | beecrypt-4.2.1 | NOK | http://autobuild.buildroot.net/results/27df4be396c8a55c0d831112411687362fad6d80 | ORPH mips64el | beecrypt-4.2.1 | NOK | http://autobuild.buildroot.net/results/244c74ad56a9a51e9f7950ffe511e6e00123518a | ORPH aarch64_be | bird-2.0.12 | NOK | http://autobuild.buildroot.net/results/d43c3f2d4b2e9bd73de878f8e3eb4e783650e210 | arm | bird-2.0.12 | NOK | http://autobuild.buildroot.net/results/31dfb720f1fbb57ad6cb28a45bc651b3f449d09c | mips64el | brcm-patchram-plus-95b7b691... | NOK | http://autobuild.buildroot.net/results/cd28410188e7eee624f8773189b722c2b87c8d26 | arm | brcm-patchram-plus-95b7b691... | NOK | http://autobuild.buildroot.net/results/da6a5b638ecb2863bff0350090176a43e908212f | riscv32 | ccrypt-1.11 | NOK | http://autobuild.buildroot.net/results/096d22a64a7f297bbb7f7f62a2e8d92463726cfb | ORPH mips64el | cdrkit-1.1.11 | NOK | http://autobuild.buildroot.net/results/1ed18a7c92c9399a0ab909e2bb1c813c5f007d9b | arc | check-11970a7e112dfe243a2e6... | NOK | http://autobuild.buildroot.net/results/de473e7b2efb2c3687e74f15c2ceb65dbc534a8a | ORPH arc | check-11970a7e112dfe243a2e6... | NOK | http://autobuild.buildroot.net/results/bc952a7ab70ed0536df4289d88d96b81018b4f3f | ORPH arc | check-11970a7e112dfe243a2e6... | NOK | http://autobuild.buildroot.net/results/5e22e6a10ff03488e81b027b379c0e3234ab6ac6 | ORPH riscv64 | cni-plugins-1.3.0 | NOK | http://autobuild.buildroot.net/results/75577cface981f8b3d81510e2839cb4bd2880893 | powerpc | coreutils-9.3 | NOK | http://autobuild.buildroot.net/results/09853805534e34f47ddbfa741a785041c2f09708 | ORPH aarch64 | coreutils-9.3 | NOK | http://autobuild.buildroot.net/results/6cca8a6adb4a03d79203d95bf03d3a8dd66768ac | ORPH xtensa | coreutils-9.3 | NOK | http://autobuild.buildroot.net/results/c0017e0a415b1fad345d0b672fdbfdda121f63c4 | ORPH powerpc | coreutils-9.3 | NOK | http://autobuild.buildroot.net/results/c1fff43d1f8ff27edf902ce62eb11d23d7938db8 | ORPH sh4a | dhcp-4.4.3-P1 | NOK | http://autobuild.buildroot.net/results/1a73db8c9a4ab153283e46ee5e63fcc273ea0134 | ORPH arm | docker-compose-2.27.0 | NOK | http://autobuild.buildroot.net/results/23babe268017c82a09e092fe39c25c765d543c5f | aarch64 | dust-0.9.0 | NOK | http://autobuild.buildroot.net/results/482e5fd9c32ea41c1a5b2932f136fe03f183c30a | ORPH arm | dust-0.9.0 | NOK | http://autobuild.buildroot.net/results/0052378117b2bdfa6783589e8a453990acc7bc02 | ORPH arm | dust-0.9.0 | NOK | http://autobuild.buildroot.net/results/f82c425a65b7a4e11e705e23eb766f70f0947525 | ORPH powerpc64 | dust-0.9.0 | NOK | http://autobuild.buildroot.net/results/014c2ad1bd0073ee8ac81c9f17cab9e7aff99e5a | ORPH microblazeel | elfutils-0.189 | NOK | http://autobuild.buildroot.net/results/42672c7b220dbc2aeba6cba505f70b5c844e6fa4 | ORPH microblaze | elfutils-0.189 | NOK | http://autobuild.buildroot.net/results/887628c2d977297a3bfdc50fa412051f175d75bf | ORPH sparc64 | eza-0.18.8 | NOK | http://autobuild.buildroot.net/results/fcb42530ab3363f080046d1997f68a514cb86b5c | sh4aeb | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/26717987b0c3fb78793fdfbb436722ab893d26a1 | x86_64 | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/a16e0bcb2e17863807af304ea3aaa5576c76a04a | m68k | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/6f533826c94abdebcf5d2ef91cae71b6e2fddc74 | microblazeel | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/65dd4a9be5698c71fad43f257f5b0f99bf28cee9 | arm | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/ad4cab7bf473a1caccc4c07c5a29744868515466 | aarch64_be | fcft-3.1.6 | NOK | http://autobuild.buildroot.net/results/689928d698001ee5ac8bf83c65a09b07b2d027a9 | arc | ffmpeg-6.1.1 | NOK | http://autobuild.buildroot.net/results/16e1f7f22e79fb91afb29e606d302da275e0736b | arc | ffmpeg-6.1.1 | NOK | http://autobuild.buildroot.net/results/326c9500e4e24902186b20eac91f003cc9ca56ba | microblazeel | ffmpeg-6.1.1 | NOK | http://autobuild.buildroot.net/results/ef351509227b44bb38da7d3a3e2fbde33eaa3054 | powerpc64le | fftw-quad-3.3.10 | NOK | http://autobuild.buildroot.net/results/e87eb4030ffc2a898aadc0aaa8d009971da210a6 | ORPH or1k | flann-1.9.2 | NOK | http://autobuild.buildroot.net/results/459335c193c2ec6c09375ae0c8606c22cb3b042b | microblazeel | gdal-3.8.2 | NOK | http://autobuild.buildroot.net/results/e79265257316bf8b251b7ac78018417ad79f3720 | powerpc64le | glibc-2.39-5-ge0910f1d3278f... | NOK | http://autobuild.buildroot.net/results/7ee0ae41c259272df1494de8a22ffc08b11b86d0 | powerpc64le | glibc-2.39-5-ge0910f1d3278f... | NOK | http://autobuild.buildroot.net/results/29e159d5e744f48e7c0670bde7126c2eb962b154 | i686 | glibmm-2.76.0 | NOK | http://autobuild.buildroot.net/results/279c80f01f385c8f1db92924e8c6e35150fd122f | arm | gnu-efi-3.0.18 | NOK | http://autobuild.buildroot.net/results/1d39f48b7364650602545c86591e173b4332f661 | sparc64 | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/c9d015a3ac1a73e4c5e088f1fba8b0c899755665 | ORPH powerpc | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/71f06ea7957a8949dcbda7200df7d85d1456cdb7 | ORPH m68k | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/37038337af82aeeb8c847e6e763a1482ca14f9c2 | ORPH powerpc64le | host-binutils-bare-metal-2.42 | NOK | http://autobuild.buildroot.net/results/32fc4b1ebe82b4af5b64910da742f316b6cbf736 | aarch64_be | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/a7d1f062fbca59bef691c9f4d8a62a9da82ece07 | ORPH microblazeel | host-libxcrypt-4.4.36 | NOK | http://autobuild.buildroot.net/results/3f53436efd3132c7825be6259d92aac2858c1217 | x86_64 | host-libxcrypt-4.4.36 | NOK | http://autobuild.buildroot.net/results/ea240733c0ea648527cbc53dabee4b9a6be3c42c | mipsel | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/6cc9b8ff7b2ac774d3f3e3ee9ce44db50cfa5a06 | i686 | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/91df45ed46b018bde2bc2ae4b3de090d8ada8207 | mips64el | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/ca213b840c1143142d32896d5d55300de011bad4 | sparc | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/c5942ab630e5e75b4bc6cd1580c7645b3c3602f1 | mipsel | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/7ecc8af43f3b84663a15534f3d9ca749409e5631 | aarch64_be | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/34dc99d049cd70849dbc4c7af7313bc46d3158e2 | powerpc64 | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/b98714ded476b20c2bf17274f57e9e146a97d521 | sparc | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/7e8892af3cde78722a6173d3b5754bb362ffe2e6 | aarch64 | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/b8237fcc08f483ae94bb6b51f90b1016f50cf205 | aarch64 | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/2eeee44f3fccbbd3d5b6d84433d4ae68b7429fd6 | microblaze | ledmon-1.0.0 | NOK | http://autobuild.buildroot.net/results/553e2bbcbb3228284fc35c400dba67e61a9a4c31 | powerpc | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/db7085b2465e33050868e8ea969dc926b7692103 | microblazeel | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/485b5ecc3c58962348b68171268e8b974833703a | xtensa | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/e988121a775645707ebc9c6d3addcb8b2197a3fa | sh4a | libdbi-drivers-0bfae6c43134... | NOK | http://autobuild.buildroot.net/results/0da33b64748b1047e04731373e1b62fff7a61060 | or1k | libffi-3.4.6 | NOK | http://autobuild.buildroot.net/results/3a0f0c6a3bc978cf6756ae7246a40c186799f7f5 | arceb | libffi-3.4.6 | NOK | http://autobuild.buildroot.net/results/c6381284c4bbb90f03a02e2aa7eeab4e8c27b452 | arc | libffi-3.4.6 | NOK | http://autobuild.buildroot.net/results/b1924c8e0a48f8faa2838e311dafb910888e18ef | mipsel | libopenh264-2.4.0 | NOK | http://autobuild.buildroot.net/results/f943c091d6eb01793ee1a42bff76965dd209e161 | s390x | libp11-0.4.12 | NOK | http://autobuild.buildroot.net/results/3a232d5e9220c452542764542623167e001e3fea | ORPH mips64el | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/6c4ad59e943e63342d16f33716cbb165e618a830 | ORPH sh4 | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/ee369b169d3bf79fb6a717ae9e051cff06a8a34a | ORPH sparc | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/3385f0b0955d3b8e178b6becd0e8e1c35d778c0c | ORPH nios2 | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/be37020a0998276432a743917c20d62484cd885a | ORPH microblazeel | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/766c0756f0ed67e42dc77d0878b17186366127fc | ORPH arm | librsvg-2.50.9 | NOK | http://autobuild.buildroot.net/results/d257890b7b5b411daa5b275af1c24463310a4588 | xtensa | libsepol-3.6 | NOK | http://autobuild.buildroot.net/results/71f4a2f0e155cb76c6ab662a77302711de6f6afe | mips | linux-5.10.162-cip24 | NOK | http://autobuild.buildroot.net/results/ab04a76d09d90e14ad782efdd30267d555ccabfc | ORPH powerpc | linux-5.10.162-cip24-rt10 | NOK | http://autobuild.buildroot.net/results/b35fad4ad61da38eb1d480ec1b1e002b66a94dd6 | ORPH arm | lmdb-0.9.31 | NOK | http://autobuild.buildroot.net/results/e2bc8c35a10b6513c5605954e93b5b8a1ec7654b | x86_64 | ltp-testsuite-20240129 | NOK | http://autobuild.buildroot.net/results/0dee595990c7f7eb35f9bb58c111534a8183cc50 | aarch64 | mongodb-4.2.18 | NOK | http://autobuild.buildroot.net/results/59fd3af35c97ae9cea13c4d7ebc563f13effbcfb | arm | mongodb-4.2.18 | NOK | http://autobuild.buildroot.net/results/8090dd7f62ae93fb0a423f809f5e4216cd8f8c2b | s390x | nushell-0.85.0 | NOK | http://autobuild.buildroot.net/results/ba53fe3306c6b515757f34628d3b5be86420639d | ORPH arm | nushell-0.85.0 | NOK | http://autobuild.buildroot.net/results/66a0f5d8f3b5fba846dd843899fbacf9f37abf4e | ORPH sparc | ola-0.10.9 | NOK | http://autobuild.buildroot.net/results/a7f8cab996f21c7a4d490263663aed4fd099297f | mipsel | openssh-9.7p1 | NOK | http://autobuild.buildroot.net/results/592adac624b2fff95286bf8bf67d0cdb6f52a4d1 | ORPH mips | openssh-9.7p1 | NOK | http://autobuild.buildroot.net/results/e415a8ca4a8a9633c3c5bf665f7c7121d5335fa8 | ORPH nios2 | p7zip-17.05 | NOK | http://autobuild.buildroot.net/results/ab46a302ffd985cfa00730ed93fe848734c49cd0 | arc | protobuf-21.12 | NOK | http://autobuild.buildroot.net/results/e7b25b35642f264d52a3b5808a997dc5629da868 | powerpc64 | python-numpy-1.25.0 | NOK | http://autobuild.buildroot.net/results/223c0d0a021b57fba6884577cf6ad8c0801921cb | mipsel | qemu-8.1.1 | NOK | http://autobuild.buildroot.net/results/db6ba3135791a449217115f1b856470e852dac20 | arm | ripgrep-14.1.0 | NOK | http://autobuild.buildroot.net/results/5e9efd3926a97f89c54e8102e4c4542c857ab007 | microblazeel | rtl8188eu-306f3e62cf7cddf8c... | NOK | http://autobuild.buildroot.net/results/493a8ed6c351ac2d04bd838d444744040bbdae3c | powerpc | rtty-8.1.0 | NOK | http://autobuild.buildroot.net/results/2858e9c0a620a07cb8c90728fa35faf582f20fd1 | riscv64 | ruby-3.3.0 | NOK | http://autobuild.buildroot.net/results/215cb9e53b0307b8aa5e154ad0468f134a01d14f | powerpc64 | skalibs-2.12.0.1 | NOK | http://autobuild.buildroot.net/results/101d0e5faeb648e362feba97ad0ad97929958095 | m68k | syslog-ng-4.7.1 | NOK | http://autobuild.buildroot.net/results/63e0abe4b3495e4611778626fd6c051231cfc551 | or1k | uclibc-1.0.48 | NOK | http://autobuild.buildroot.net/results/e4bd08d694c67128ef22cf3afa6ba735c970f7cd | sh4 | ulog-0389d243352255f6182326... | NOK | http://autobuild.buildroot.net/results/3c4d3bd11d7a974312f73f6534d8de9171041df6 | arm | unknown | NOK | http://autobuild.buildroot.net/results/de9592067e2f123acb136bdbcfaefa12d521f6a2 | sh4eb | unknown | NOK | http://autobuild.buildroot.net/results/1bd838d98f20e868e571bd1487f5235eb30d7b0d | arc | unknown | NOK | http://autobuild.buildroot.net/results/af239d90382e22d192b442cfaa4add75daef303f | arceb | unknown | NOK | http://autobuild.buildroot.net/results/f456de809a1654cc22cb72b759ab692b73720292 | mips64el | unknown | NOK | http://autobuild.buildroot.net/results/8f62265a87fe2c5fda640f107f5ead13eb89c9b1 | arm | unknown | NOK | http://autobuild.buildroot.net/results/e15557e76d7beba2d8ae309dfb9f302549d106af | arm | util-linux-2.39.3 | NOK | http://autobuild.buildroot.net/results/7d59e4ebc393afce751546d72ee606f61a2bc54a | ORPH riscv64 | zlib-ng-2.1.6 | NOK | http://autobuild.buildroot.net/results/abbded64d18ed1d3f06921a9763eda09c61a9754 | ORPH riscv64 | zlib-ng-2.1.6 | NOK | http://autobuild.buildroot.net/results/9cf0cbb79327c20b43dd2da6abf9e326d2e0ca69 | ORPH Classification of failures by reason for 2024.02.x -------------------------------------------------- gobject-introspection-1.76.1 | 2 linux-6.6.27 | 2 apcupsd-3.14.14 | 1 bat-0.24.0 | 1 gdal-3.8.2 | 1 pulseaudio-17.0 | 1 qt5base-da6e958319e95fe564d... | 1 reaver-1.6.6 | 1 volk-3.0.0 | 1 Detail of failures for 2024.02.x -------------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- aarch64 | apcupsd-3.14.14 | NOK | http://autobuild.buildroot.net/results/b21dd64b847f69644a798788eeb9c15ddd9fb001 | i586 | bat-0.24.0 | NOK | http://autobuild.buildroot.net/results/072144f81ff0b221dee6cf728f310848cae1fbbf | microblazeel | gdal-3.8.2 | NOK | http://autobuild.buildroot.net/results/cc978a948963a5638ec5ab5c1c0953e0fa458195 | x86_64 | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/dbcd8b6e1c9e1e696f9340e0eafbe736cba5c88d | ORPH sparc64 | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/856f59d515ac8be8debef4a198825adccbea2a03 | ORPH powerpc64 | linux-6.6.27 | NOK | http://autobuild.buildroot.net/results/f0706cd92d2ad4d56c9af636dc3d109b2de571fd | ORPH powerpc64 | linux-6.6.27 | NOK | http://autobuild.buildroot.net/results/517df829f0e9c99489171aec3d455fea85153674 | ORPH mipsel | pulseaudio-17.0 | NOK | http://autobuild.buildroot.net/results/733098c022906d2a207af2f7afc6f0a1f73b3da8 | ORPH arm | qt5base-da6e958319e95fe564d... | NOK | http://autobuild.buildroot.net/results/10d157c2b3f7142da29d38ed1b3f8d34c6b92588 | arceb | reaver-1.6.6 | NOK | http://autobuild.buildroot.net/results/4baf685b6bb962b130274393568a8853d15e986c | powerpc | volk-3.0.0 | NOK | http://autobuild.buildroot.net/results/6aa40628b1d339828b2dbf39462436d3ea9247f4 | Gitlab CI results for 2024-05-13 ================================ Detail of runtime-test failures for master ------------------------------------------ runtime-test | link to the job | orph? --------------------------+---------------------------------------------------------------+------ TestDockerCompose | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833307823 | ORPH ...ilp32dMuslBleedingEdge | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833309173 | ORPH ...iscv32ilp32dMuslStable | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833309174 | ORPH TestMender | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308175 | ORPH TestNu | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308218 | ORPH TestOci | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833307649 | ORPH TestPythonPy3MlDtypes | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308461 | ORPH TestPythonPy3PyAlsa | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308479 | ORPH TestPythonPy3SciPy | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308513 | ORPH TestRust | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308568 | ORPH TestRustBin | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308569 | ORPH TestRustVendoring | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308571 | ORPH -- http://autobuild.buildroot.net From wbx at openadk.org Tue May 14 06:25:03 2024 From: wbx at openadk.org (Waldemar Brodkorb) Date: Tue, 14 May 2024 08:25:03 +0200 Subject: [Buildroot] [PATCH] support: update config.sub/config.guess Message-ID: Signed-off-by: Waldemar Brodkorb --- support/gnuconfig/README.buildroot | 2 +- support/gnuconfig/config.guess | 1233 +++++++++++++++------------- support/gnuconfig/config.sub | 302 +++++-- 3 files changed, 894 insertions(+), 643 deletions(-) diff --git a/support/gnuconfig/README.buildroot b/support/gnuconfig/README.buildroot index 952eea8b10..f34a6566bd 100644 --- a/support/gnuconfig/README.buildroot +++ b/support/gnuconfig/README.buildroot @@ -18,4 +18,4 @@ Run the script 'update' in this directory, and commit the result. The current Buildroot version is based on this commit of the config.git repository (leave alone on its own line, the script updates it): -d7a4dee7cc25e332b990d0a6d9f0ddd42cb33cf5 +948ae97ca5703224bd3eada06b7a69f40dd15a02 diff --git a/support/gnuconfig/config.guess b/support/gnuconfig/config.guess index 8d70ec2b26..f6d217a49f 100755 --- a/support/gnuconfig/config.guess +++ b/support/gnuconfig/config.guess @@ -1,12 +1,14 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2020 Free Software Foundation, Inc. +# Copyright 1992-2024 Free Software Foundation, Inc. -timestamp='2020-09-19' +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2024-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but @@ -27,17 +29,25 @@ timestamp='2020-09-19' # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess # # Please send patches to . +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + + me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] -Output the configuration name of the system \`$me' is run on. +Output the configuration name of the system '$me' is run on. Options: -h, --help print this help, then exit @@ -50,13 +60,13 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2020 Free Software Foundation, Inc. +Copyright 1992-2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" -Try \`$me --help' for more information." +Try '$me --help' for more information." # Parse command line while test $# -gt 0 ; do @@ -84,13 +94,16 @@ if test $# != 0; then exit 1 fi +# Just in case it came from the environment. +GUESS= + # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. +# Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still +# use 'HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. @@ -102,7 +115,7 @@ set_cc_for_build() { # prevent multiple calls if $tmp is already set test "$tmp" && return 0 : "${TMPDIR=/tmp}" - # shellcheck disable=SC2039 + # shellcheck disable=SC2039,SC3028 { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || @@ -112,7 +125,7 @@ set_cc_for_build() { ,,) echo "int x;" > "$dummy.c" for driver in cc gcc c89 c99 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then - CC_FOR_BUILD="$driver" + CC_FOR_BUILD=$driver break fi done @@ -133,38 +146,57 @@ fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -case "$UNAME_SYSTEM" in +case $UNAME_SYSTEM in Linux|GNU|GNU/*) - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - LIBC=gnu + LIBC=unknown set_cc_for_build cat <<-EOF > "$dummy.c" + #if defined(__ANDROID__) + LIBC=android + #else #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc + #elif defined(__GLIBC__) + LIBC=gnu + #elif defined(__LLVM_LIBC__) + LIBC=llvm #else #include + /* First heuristic to detect musl libc. */ #ifdef __DEFINED_va_list LIBC=musl - #else - LIBC=gnu + #endif #endif #endif EOF - eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" + cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "$cc_set_libc" + + # Second heuristic to detect musl libc. + if [ "$LIBC" = unknown ] && + command -v ldd >/dev/null && + ldd --version 2>&1 | grep -q ^musl; then + LIBC=musl + fi + + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + if [ "$LIBC" = unknown ]; then + LIBC=gnu + fi ;; esac # Note: order is significant - the case branches are not exclusive. -case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in +case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, @@ -176,12 +208,12 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ - "/sbin/$sysctl" 2>/dev/null || \ - "/usr/sbin/$sysctl" 2>/dev/null || \ + /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ echo unknown)` - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in + aarch64eb) machine=aarch64_be-unknown ;; armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; @@ -190,13 +222,13 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` - machine="${arch}${endian}"-unknown + machine=${arch}${endian}-unknown ;; - *) machine="$UNAME_MACHINE_ARCH"-unknown ;; + *) machine=$UNAME_MACHINE_ARCH-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in earm*) os=netbsdelf ;; @@ -217,7 +249,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in ;; esac # Determine ABI tags. - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` @@ -228,7 +260,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. - case "$UNAME_VERSION" in + case $UNAME_VERSION in Debian*) release='-gnu' ;; @@ -239,51 +271,57 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "$machine-${os}${release}${abi-}" - exit ;; + GUESS=$machine-${os}${release}${abi-} + ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE + ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE + ;; + *:SecBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE + ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE + ;; *:MidnightBSD:*:*) - echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE + ;; *:ekkoBSD:*:*) - echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE + ;; *:SolidBSD:*:*) - echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE + ;; *:OS108:*:*) - echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE + ;; macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE + ;; *:MirBSD:*:*) - echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE + ;; *:Sortix:*:*) - echo "$UNAME_MACHINE"-unknown-sortix - exit ;; + GUESS=$UNAME_MACHINE-unknown-sortix + ;; *:Twizzler:*:*) - echo "$UNAME_MACHINE"-unknown-twizzler - exit ;; + GUESS=$UNAME_MACHINE-unknown-twizzler + ;; *:Redox:*:*) - echo "$UNAME_MACHINE"-unknown-redox - exit ;; + GUESS=$UNAME_MACHINE-unknown-redox + ;; mips:OSF1:*.*) - echo mips-dec-osf1 - exit ;; + GUESS=mips-dec-osf1 + ;; alpha:OSF1:*:*) + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + trap '' 0 case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` @@ -297,7 +335,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in + case $ALPHA_CPU_TYPE in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") @@ -334,68 +372,69 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; + OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + GUESS=$UNAME_MACHINE-dec-osf$OSF_REL + ;; Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; + GUESS=m68k-unknown-sysv4 + ;; *:[Aa]miga[Oo][Ss]:*:*) - echo "$UNAME_MACHINE"-unknown-amigaos - exit ;; + GUESS=$UNAME_MACHINE-unknown-amigaos + ;; *:[Mm]orph[Oo][Ss]:*:*) - echo "$UNAME_MACHINE"-unknown-morphos - exit ;; + GUESS=$UNAME_MACHINE-unknown-morphos + ;; *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; + GUESS=i370-ibm-openedition + ;; *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; + GUESS=s390-ibm-zvmoe + ;; *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; + GUESS=powerpc-ibm-os400 + ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix"$UNAME_RELEASE" - exit ;; + GUESS=arm-acorn-riscix$UNAME_RELEASE + ;; arm*:riscos:*:*|arm*:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; + GUESS=arm-unknown-riscos + ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; + GUESS=hppa1.1-hitachi-hiuxmpp + ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee at wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; + case `(/bin/universe) 2>/dev/null` in + att) GUESS=pyramid-pyramid-sysv3 ;; + *) GUESS=pyramid-pyramid-bsd ;; + esac + ;; NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; + GUESS=pyramid-pyramid-svr4 + ;; DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; + GUESS=sparc-icl-nx6 + ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; + sparc) GUESS=sparc-icl-nx7 ;; + esac + ;; s390x:SunOS:*:*) - echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL + ;; sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-hal-solaris2$SUN_REL + ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris2$SUN_REL + ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux"$UNAME_RELEASE" - exit ;; + GUESS=i386-pc-auroraux$UNAME_RELEASE + ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) set_cc_for_build SUN_ARCH=i386 @@ -404,47 +443,50 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # This test works for both compilers. if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi - echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$SUN_ARCH-pc-solaris2$SUN_REL + ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris3$SUN_REL + ;; sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in + case `/usr/bin/arch -k` in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" - exit ;; + # Japanese Language versions have a version number like '4.1.3-JL'. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` + GUESS=sparc-sun-sunos$SUN_REL + ;; sun3*:SunOS:*:*) - echo m68k-sun-sunos"$UNAME_RELEASE" - exit ;; + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 - case "`/bin/arch`" in + case `/bin/arch` in sun3) - echo m68k-sun-sunos"$UNAME_RELEASE" + GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun4) - echo sparc-sun-sunos"$UNAME_RELEASE" + GUESS=sparc-sun-sunos$UNAME_RELEASE ;; esac - exit ;; + ;; aushp:SunOS:*:*) - echo sparc-auspex-sunos"$UNAME_RELEASE" - exit ;; + GUESS=sparc-auspex-sunos$UNAME_RELEASE + ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor @@ -454,41 +496,41 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-milan-mint$UNAME_RELEASE + ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-hades-mint$UNAME_RELEASE + ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-unknown-mint$UNAME_RELEASE + ;; m68k:machten:*:*) - echo m68k-apple-machten"$UNAME_RELEASE" - exit ;; + GUESS=m68k-apple-machten$UNAME_RELEASE + ;; powerpc:machten:*:*) - echo powerpc-apple-machten"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-apple-machten$UNAME_RELEASE + ;; RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; + GUESS=mips-dec-mach_bsd4.3 + ;; RISC*:ULTRIX:*:*) - echo mips-dec-ultrix"$UNAME_RELEASE" - exit ;; + GUESS=mips-dec-ultrix$UNAME_RELEASE + ;; VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix"$UNAME_RELEASE" - exit ;; + GUESS=vax-dec-ultrix$UNAME_RELEASE + ;; 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix"$UNAME_RELEASE" - exit ;; + GUESS=clipper-intergraph-clix$UNAME_RELEASE + ;; mips:*:*:UMIPS | mips:*:*:RISCos) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" @@ -516,29 +558,29 @@ EOF dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos"$UNAME_RELEASE" - exit ;; + GUESS=mips-mips-riscos$UNAME_RELEASE + ;; Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; + GUESS=powerpc-motorola-powermax + ;; Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; + GUESS=powerpc-harris-powerunix + ;; m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; + GUESS=m88k-harris-cxux7 + ;; m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; + GUESS=m88k-motorola-sysv4 + ;; m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` @@ -547,44 +589,45 @@ EOF if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ test "$TARGET_BINARY_INTERFACE"x = x then - echo m88k-dg-dgux"$UNAME_RELEASE" + GUESS=m88k-dg-dgux$UNAME_RELEASE else - echo m88k-dg-dguxbcs"$UNAME_RELEASE" + GUESS=m88k-dg-dguxbcs$UNAME_RELEASE fi else - echo i586-dg-dgux"$UNAME_RELEASE" + GUESS=i586-dg-dgux$UNAME_RELEASE fi - exit ;; + ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; + GUESS=m88k-dolphin-sysv3 + ;; M88*:*:R3*:*) # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; + GUESS=m88k-tektronix-sysv3 + ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; + GUESS=m68k-tektronix-bsd + ;; *:IRIX*:*:*) - echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" - exit ;; + IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` + GUESS=mips-sgi-irix$IRIX_REL + ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id + ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; + GUESS=i386-ibm-aix + ;; ia64:AIX:*:*) if test -x /usr/bin/oslevel ; then IBM_REV=`/usr/bin/oslevel` else - IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" - exit ;; + GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV + ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then set_cc_for_build @@ -601,16 +644,16 @@ EOF EOF if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then - echo "$SYSTEM_NAME" + GUESS=$SYSTEM_NAME else - echo rs6000-ibm-aix3.2.5 + GUESS=rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 + GUESS=rs6000-ibm-aix3.2.4 else - echo rs6000-ibm-aix3.2 + GUESS=rs6000-ibm-aix3.2 fi - exit ;; + ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then @@ -619,48 +662,48 @@ EOF IBM_ARCH=powerpc fi if test -x /usr/bin/lslpp ; then - IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else - IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo "$IBM_ARCH"-ibm-aix"$IBM_REV" - exit ;; + GUESS=$IBM_ARCH-ibm-aix$IBM_REV + ;; *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; + GUESS=rs6000-ibm-aix + ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) - echo romp-ibm-bsd4.4 - exit ;; + GUESS=romp-ibm-bsd4.4 + ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 + GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to + ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; + GUESS=rs6000-bull-bosx + ;; DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; + GUESS=m68k-bull-sysv3 + ;; 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; + GUESS=m68k-hp-bsd + ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; + GUESS=m68k-hp-bsd4.4 + ;; 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` - case "$UNAME_MACHINE" in + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + case $UNAME_MACHINE in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if test -x /usr/bin/getconf; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "$sc_cpu_version" in + case $sc_cpu_version in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 - case "$sc_kernel_bits" in + case $sc_kernel_bits in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 @@ -727,12 +770,12 @@ EOF HP_ARCH=hppa64 fi fi - echo "$HP_ARCH"-hp-hpux"$HPUX_REV" - exit ;; + GUESS=$HP_ARCH-hp-hpux$HPUX_REV + ;; ia64:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux"$HPUX_REV" - exit ;; + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + GUESS=ia64-hp-hpux$HPUX_REV + ;; 3050*:HI-UX:*:*) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" @@ -762,36 +805,36 @@ EOF EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; + GUESS=unknown-hitachi-hiuxwe2 + ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) - echo hppa1.1-hp-bsd - exit ;; + GUESS=hppa1.1-hp-bsd + ;; 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; + GUESS=hppa1.0-hp-bsd + ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; + GUESS=hppa1.0-hp-mpeix + ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) - echo hppa1.1-hp-osf - exit ;; + GUESS=hppa1.1-hp-osf + ;; hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; + GUESS=hppa1.0-hp-osf + ;; i*86:OSF1:*:*) if test -x /usr/sbin/sysversion ; then - echo "$UNAME_MACHINE"-unknown-osf1mk + GUESS=$UNAME_MACHINE-unknown-osf1mk else - echo "$UNAME_MACHINE"-unknown-osf1 + GUESS=$UNAME_MACHINE-unknown-osf1 fi - exit ;; + ;; parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; + GUESS=hppa1.1-hp-lites + ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; + GUESS=c1-convex-bsd + ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd @@ -799,17 +842,18 @@ EOF fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; + GUESS=c34-convex-bsd + ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; + GUESS=c38-convex-bsd + ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; + GUESS=c4-convex-bsd + ;; CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=ymp-cray-unicos$CRAY_REL + ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ @@ -817,112 +861,153 @@ EOF -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) - echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=t90-cray-unicos$CRAY_REL + ;; CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=alphaev5-cray-unicosmk$CRAY_REL + ;; CRAY*SV1:*:*:*) - echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=sv1-cray-unicos$CRAY_REL + ;; *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=craynv-cray-unicosmp$CRAY_REL + ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE + ;; sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=sparc-unknown-bsdi$UNAME_RELEASE + ;; *:BSD/OS:*:*) - echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE + ;; arm:FreeBSD:*:*) UNAME_PROCESSOR=`uname -p` set_cc_for_build if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi else - echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf fi - exit ;; + ;; *:FreeBSD:*:*) - UNAME_PROCESSOR=`/usr/bin/uname -p` - case "$UNAME_PROCESSOR" in + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac - echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" - exit ;; + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL + ;; i*:CYGWIN*:*) - echo "$UNAME_MACHINE"-pc-cygwin - exit ;; + GUESS=$UNAME_MACHINE-pc-cygwin + ;; *:MINGW64*:*) - echo "$UNAME_MACHINE"-pc-mingw64 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw64 + ;; *:MINGW*:*) - echo "$UNAME_MACHINE"-pc-mingw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw32 + ;; *:MSYS*:*) - echo "$UNAME_MACHINE"-pc-msys - exit ;; + GUESS=$UNAME_MACHINE-pc-msys + ;; i*:PW*:*) - echo "$UNAME_MACHINE"-pc-pw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-pw32 + ;; + *:SerenityOS:*:*) + GUESS=$UNAME_MACHINE-pc-serenity + ;; *:Interix*:*) - case "$UNAME_MACHINE" in + case $UNAME_MACHINE in x86) - echo i586-pc-interix"$UNAME_RELEASE" - exit ;; + GUESS=i586-pc-interix$UNAME_RELEASE + ;; authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix"$UNAME_RELEASE" - exit ;; + GUESS=x86_64-unknown-interix$UNAME_RELEASE + ;; IA64) - echo ia64-unknown-interix"$UNAME_RELEASE" - exit ;; + GUESS=ia64-unknown-interix$UNAME_RELEASE + ;; esac ;; i*:UWIN*:*) - echo "$UNAME_MACHINE"-pc-uwin - exit ;; + GUESS=$UNAME_MACHINE-pc-uwin + ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-pc-cygwin - exit ;; + GUESS=x86_64-pc-cygwin + ;; prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=powerpcle-unknown-solaris2$SUN_REL + ;; *:GNU:*:*) # the GNU system - echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" - exit ;; + GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` + GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL + ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" - exit ;; + GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC + ;; + x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-pc-managarm-mlibc" + ;; + *:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-unknown-managarm-mlibc" + ;; *:Minix:*:*) - echo "$UNAME_MACHINE"-unknown-minix - exit ;; + GUESS=$UNAME_MACHINE-unknown-minix + ;; aarch64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + set_cc_for_build + CPU=$UNAME_MACHINE + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __ARM_EABI__ + #ifdef __ARM_PCS_VFP + ABI=eabihf + #else + ABI=eabi + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;; + esac + fi + GUESS=$CPU-unknown-linux-$LIBCABI + ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in EV5) UNAME_MACHINE=alphaev5 ;; @@ -935,60 +1020,72 @@ EOF esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; - arc:Linux:*:* | arceb:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; arm*:Linux:*:*) set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi else - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf fi fi - exit ;; + ;; avr32*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; cris:Linux:*:*) - echo "$UNAME_MACHINE"-axis-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; crisv32:Linux:*:*) - echo "$UNAME_MACHINE"-axis-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; e2k:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; frv:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; hexagon:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:Linux:*:*) - echo "$UNAME_MACHINE"-pc-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-pc-linux-$LIBC + ;; ia64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; k1om:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:cos:*:*) + GUESS=$UNAME_MACHINE-unknown-cos + ;; + kvx:mbr:*:*) + GUESS=$UNAME_MACHINE-unknown-mbr + ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m32r*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m68*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; mips:Linux:*:* | mips64:Linux:*:*) set_cc_for_build IS_GLIBC=0 @@ -1033,123 +1130,135 @@ EOF #endif #endif EOF - eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`" + cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` + eval "$cc_set_vars" test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; openrisc*:Linux:*:*) - echo or1k-unknown-linux-"$LIBC" - exit ;; + GUESS=or1k-unknown-linux-$LIBC + ;; or32:Linux:*:* | or1k*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; padre:Linux:*:*) - echo sparc-unknown-linux-"$LIBC" - exit ;; + GUESS=sparc-unknown-linux-$LIBC + ;; parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-"$LIBC" - exit ;; + GUESS=hppa64-unknown-linux-$LIBC + ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; - PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; - *) echo hppa-unknown-linux-"$LIBC" ;; + PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; + PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; + *) GUESS=hppa-unknown-linux-$LIBC ;; esac - exit ;; + ;; ppc64:Linux:*:*) - echo powerpc64-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc64-unknown-linux-$LIBC + ;; ppc:Linux:*:*) - echo powerpc-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc-unknown-linux-$LIBC + ;; ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc64le-unknown-linux-$LIBC + ;; ppcle:Linux:*:*) - echo powerpcle-unknown-linux-"$LIBC" - exit ;; - riscv32:Linux:*:* | riscv64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpcle-unknown-linux-$LIBC + ;; + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; s390:Linux:*:* | s390x:Linux:*:*) - echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-ibm-linux-$LIBC + ;; sh64*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sh*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; tile*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; vax:Linux:*:*) - echo "$UNAME_MACHINE"-dec-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-dec-linux-$LIBC + ;; x86_64:Linux:*:*) set_cc_for_build + CPU=$UNAME_MACHINE LIBCABI=$LIBC if test "$CC_FOR_BUILD" != no_compiler_found; then - if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_X32 >/dev/null - then - LIBCABI="$LIBC"x32 - fi + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __i386__ + ABI=x86 + #else + #ifdef __ILP32__ + ABI=x32 + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + x86) CPU=i686 ;; + x32) LIBCABI=${LIBC}x32 ;; + esac fi - echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI" - exit ;; + GUESS=$CPU-pc-linux-$LIBCABI + ;; xtensa*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; + GUESS=i386-sequent-sysv4 + ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. - echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" - exit ;; + GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION + ;; i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility + # If we were able to find 'uname', then EMX Unix compatibility # is probably installed. - echo "$UNAME_MACHINE"-pc-os2-emx - exit ;; + GUESS=$UNAME_MACHINE-pc-os2-emx + ;; i*86:XTS-300:*:STOP) - echo "$UNAME_MACHINE"-unknown-stop - exit ;; + GUESS=$UNAME_MACHINE-unknown-stop + ;; i*86:atheos:*:*) - echo "$UNAME_MACHINE"-unknown-atheos - exit ;; + GUESS=$UNAME_MACHINE-unknown-atheos + ;; i*86:syllable:*:*) - echo "$UNAME_MACHINE"-pc-syllable - exit ;; + GUESS=$UNAME_MACHINE-pc-syllable + ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=i386-unknown-lynxos$UNAME_RELEASE + ;; i*86:*DOS:*:*) - echo "$UNAME_MACHINE"-pc-msdosdjgpp - exit ;; + GUESS=$UNAME_MACHINE-pc-msdosdjgpp + ;; i*86:*:4.*:*) UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" + GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL else - echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" + GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL fi - exit ;; + ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in @@ -1157,12 +1266,12 @@ EOF *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac - echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}" - exit ;; + GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 @@ -1172,11 +1281,11 @@ EOF && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 - echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" + GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL else - echo "$UNAME_MACHINE"-pc-sysv32 + GUESS=$UNAME_MACHINE-pc-sysv32 fi - exit ;; + ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about @@ -1184,31 +1293,31 @@ EOF # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; + GUESS=i586-pc-msdosdjgpp + ;; Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; + GUESS=i386-pc-mach3 + ;; paragon:*:*:*) - echo i860-intel-osf1 - exit ;; + GUESS=i860-intel-osf1 + ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 + GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 + GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 fi - exit ;; + ;; mini*:CTIX:SYS*5:*) # "miniframe" - echo m68010-convergent-sysv - exit ;; + GUESS=m68010-convergent-sysv + ;; mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; + GUESS=m68k-convergent-sysv + ;; M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; + GUESS=m68k-diab-dnix + ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) @@ -1233,116 +1342,119 @@ EOF /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=m68k-unknown-lynxos$UNAME_RELEASE + ;; mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; + GUESS=m68k-atari-sysv4 + ;; TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=sparc-unknown-lynxos$UNAME_RELEASE + ;; rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=rs6000-unknown-lynxos$UNAME_RELEASE + ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-unknown-lynxos$UNAME_RELEASE + ;; SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv"$UNAME_RELEASE" - exit ;; + GUESS=mips-dde-sysv$UNAME_RELEASE + ;; RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo "$UNAME_MACHINE"-sni-sysv4 + GUESS=$UNAME_MACHINE-sni-sysv4 else - echo ns32k-sni-sysv + GUESS=ns32k-sni-sysv fi - exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + ;; + PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort # says - echo i586-unisys-sysv4 - exit ;; + GUESS=i586-unisys-sysv4 + ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; + GUESS=hppa1.1-stratus-sysv4 + ;; *:*:*:FTX*) # From seanf at swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; + GUESS=i860-stratus-sysv4 + ;; i*86:VOS:*:*) # From Paul.Green at stratus.com. - echo "$UNAME_MACHINE"-stratus-vos - exit ;; + GUESS=$UNAME_MACHINE-stratus-vos + ;; *:VOS:*:*) # From Paul.Green at stratus.com. - echo hppa1.1-stratus-vos - exit ;; + GUESS=hppa1.1-stratus-vos + ;; mc68*:A/UX:*:*) - echo m68k-apple-aux"$UNAME_RELEASE" - exit ;; + GUESS=m68k-apple-aux$UNAME_RELEASE + ;; news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; + GUESS=mips-sony-newsos6 + ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if test -d /usr/nec; then - echo mips-nec-sysv"$UNAME_RELEASE" + GUESS=mips-nec-sysv$UNAME_RELEASE else - echo mips-unknown-sysv"$UNAME_RELEASE" + GUESS=mips-unknown-sysv$UNAME_RELEASE fi - exit ;; + ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; + GUESS=powerpc-be-beos + ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; + GUESS=powerpc-apple-beos + ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; + GUESS=i586-pc-beos + ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; - x86_64:Haiku:*:*) - echo x86_64-unknown-haiku - exit ;; + GUESS=i586-pc-haiku + ;; + ppc:Haiku:*:*) # Haiku running on Apple PowerPC + GUESS=powerpc-apple-haiku + ;; + *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat) + GUESS=$UNAME_MACHINE-unknown-haiku + ;; SX-4:SUPER-UX:*:*) - echo sx4-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx4-nec-superux$UNAME_RELEASE + ;; SX-5:SUPER-UX:*:*) - echo sx5-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx5-nec-superux$UNAME_RELEASE + ;; SX-6:SUPER-UX:*:*) - echo sx6-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx6-nec-superux$UNAME_RELEASE + ;; SX-7:SUPER-UX:*:*) - echo sx7-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx7-nec-superux$UNAME_RELEASE + ;; SX-8:SUPER-UX:*:*) - echo sx8-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx8-nec-superux$UNAME_RELEASE + ;; SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx8r-nec-superux$UNAME_RELEASE + ;; SX-ACE:SUPER-UX:*:*) - echo sxace-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sxace-nec-superux$UNAME_RELEASE + ;; Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-apple-rhapsody$UNAME_RELEASE + ;; *:Rhapsody:*:*) - echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE + ;; arm64:Darwin:*:*) - echo aarch64-apple-darwin"$UNAME_RELEASE" - exit ;; + GUESS=aarch64-apple-darwin$UNAME_RELEASE + ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in @@ -1378,109 +1490,122 @@ EOF # uname -m returns i386 or x86_64 UNAME_PROCESSOR=$UNAME_MACHINE fi - echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE + ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi - echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE + ;; *:QNX:*:4*) - echo i386-pc-qnx - exit ;; + GUESS=i386-pc-qnx + ;; NEO-*:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=neo-tandem-nsk$UNAME_RELEASE + ;; NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nse-tandem-nsk$UNAME_RELEASE + ;; NSR-*:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsr-tandem-nsk$UNAME_RELEASE + ;; NSV-*:NONSTOP_KERNEL:*:*) - echo nsv-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsv-tandem-nsk$UNAME_RELEASE + ;; NSX-*:NONSTOP_KERNEL:*:*) - echo nsx-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsx-tandem-nsk$UNAME_RELEASE + ;; *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; + GUESS=mips-compaq-nonstopux + ;; BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; + GUESS=bs2000-siemens-sysv + ;; DS/*:UNIX_System_V:*:*) - echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE + ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - # shellcheck disable=SC2154 - if test "$cputype" = 386; then + if test "${cputype-}" = 386; then UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" + elif test "x${cputype-}" != x; then + UNAME_MACHINE=$cputype fi - echo "$UNAME_MACHINE"-unknown-plan9 - exit ;; + GUESS=$UNAME_MACHINE-unknown-plan9 + ;; *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; + GUESS=pdp10-unknown-tops10 + ;; *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; + GUESS=pdp10-unknown-tenex + ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; + GUESS=pdp10-dec-tops20 + ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; + GUESS=pdp10-xkl-tops20 + ;; *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; + GUESS=pdp10-unknown-tops20 + ;; *:ITS:*:*) - echo pdp10-unknown-its - exit ;; + GUESS=pdp10-unknown-its + ;; SEI:*:*:SEIUX) - echo mips-sei-seiux"$UNAME_RELEASE" - exit ;; + GUESS=mips-sei-seiux$UNAME_RELEASE + ;; *:DragonFly:*:*) - echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" - exit ;; + DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL + ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "$UNAME_MACHINE" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; + case $UNAME_MACHINE in + A*) GUESS=alpha-dec-vms ;; + I*) GUESS=ia64-dec-vms ;; + V*) GUESS=vax-dec-vms ;; esac ;; *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; + GUESS=i386-pc-xenix + ;; i*86:skyos:*:*) - echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" - exit ;; + SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` + GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL + ;; i*86:rdos:*:*) - echo "$UNAME_MACHINE"-pc-rdos - exit ;; - i*86:AROS:*:*) - echo "$UNAME_MACHINE"-pc-aros - exit ;; + GUESS=$UNAME_MACHINE-pc-rdos + ;; + i*86:Fiwix:*:*) + GUESS=$UNAME_MACHINE-pc-fiwix + ;; + *:AROS:*:*) + GUESS=$UNAME_MACHINE-unknown-aros + ;; x86_64:VMkernel:*:*) - echo "$UNAME_MACHINE"-unknown-esx - exit ;; + GUESS=$UNAME_MACHINE-unknown-esx + ;; amd64:Isilon\ OneFS:*:*) - echo x86_64-unknown-onefs - exit ;; + GUESS=x86_64-unknown-onefs + ;; *:Unleashed:*:*) - echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE + ;; + *:Ironclad:*:*) + GUESS=$UNAME_MACHINE-unknown-ironclad + ;; esac +# Do we have a guess based on uname results? +if test "x$GUESS" != x; then + echo "$GUESS" + exit +fi + # No uname command or uname output not recognized. set_cc_for_build cat > "$dummy.c" </dev/null && SYSTEM_NAME=`$dummy` && +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. @@ -1620,7 +1745,7 @@ test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } echo "$0: unable to guess system type" >&2 -case "$UNAME_MACHINE:$UNAME_SYSTEM" in +case $UNAME_MACHINE:$UNAME_SYSTEM in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&2 <&2 + echo "Invalid configuration '$1': more than four components" >&2 exit 1 ;; *-*-*-*) @@ -134,7 +145,8 @@ case $1 in nto-qnx* | linux-* | uclinux-uclibc* \ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ - | storm-chaos* | os2-emx* | rtmk-nova*) + | storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \ + | windows-* ) basic_machine=$field1 basic_os=$maybe_os ;; @@ -163,6 +175,10 @@ case $1 in basic_machine=$field1 basic_os=$field2 ;; + zephyr*) + basic_machine=$field1-unknown + basic_os=$field2 + ;; # Manufacturers dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ @@ -922,11 +938,13 @@ case $basic_machine in *-*) # shellcheck disable=SC2162 + saved_IFS=$IFS IFS="-" read cpu vendor <&2 + echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2 exit 1 ;; esac @@ -1278,34 +1287,45 @@ esac # Decode manufacturer-specific aliases for certain operating systems. -if test x$basic_os != x +if test x"$basic_os" != x then -# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just +# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just # set os. +obj= case $basic_os in gnu/linux*) kernel=linux - os=`echo $basic_os | sed -e 's|gnu/linux|gnu|'` + os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` + ;; + os2-emx) + kernel=os2 + os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` ;; nto-qnx*) kernel=nto - os=`echo $basic_os | sed -e 's|nto-qnx|qnx|'` + os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` ;; *-*) # shellcheck disable=SC2162 + saved_IFS=$IFS IFS="-" read kernel os <&2 + fi + ;; + *) + echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 + exit 1 + ;; +esac + +case $obj in + aout* | coff* | elf* | pe*) + ;; + '') + # empty is fine + ;; *) - echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 + echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 + exit 1 + ;; +esac + +# Here we handle the constraint that a (synthetic) cpu and os are +# valid only in combination with each other and nowhere else. +case $cpu-$os in + # The "javascript-unknown-ghcjs" triple is used by GHC; we + # accept it here in order to tolerate that, but reject any + # variations. + javascript-ghcjs) + ;; + javascript-* | *-ghcjs) + echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2 exit 1 ;; esac # As a final step for OS-related things, validate the OS-kernel combination # (given a valid OS), if there is a kernel. -case $kernel-$os in - linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* ) +case $kernel-$os-$obj in + linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ + | linux-mlibc*- | linux-musl*- | linux-newlib*- \ + | linux-relibc*- | linux-uclibc*- ) ;; - uclinux-uclibc* ) + uclinux-uclibc*- ) ;; - -dietlibc* | -newlib* | -musl* | -uclibc* ) + managarm-mlibc*- | managarm-kernel*- ) + ;; + windows*-msvc*-) + ;; + -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \ + | -uclibc*- ) # These are just libc implementations, not actual OSes, and thus # require a kernel. - echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 + echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 exit 1 ;; - kfreebsd*-gnu* | kopensolaris*-gnu*) + -kernel*- ) + echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 + exit 1 ;; - nto-qnx*) + *-kernel*- ) + echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 + exit 1 ;; - *-eabi* | *-gnueabi*) + *-msvc*- ) + echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 + exit 1 + ;; + kfreebsd*-gnu*- | kopensolaris*-gnu*-) + ;; + vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) + ;; + nto-qnx*-) + ;; + os2-emx-) ;; - -*) + *-eabi*- | *-gnueabi*-) + ;; + none--*) + # None (no kernel, i.e. freestanding / bare metal), + # can be paired with an machine code file format + ;; + -*-) # Blank kernel with real OS is always fine. ;; - *-*) - echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 + --*) + # Blank kernel and OS with real machine code file format is always fine. + ;; + *-*-*) + echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2 exit 1 ;; esac @@ -1836,7 +1960,7 @@ case $vendor in ;; esac -echo "$cpu-$vendor-${kernel:+$kernel-}$os" +echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" exit # Local variables: -- 2.30.2 From wbx at openadk.org Tue May 14 06:26:09 2024 From: wbx at openadk.org (Waldemar Brodkorb) Date: Tue, 14 May 2024 08:26:09 +0200 Subject: [Buildroot] [PATCH 1/3] arch: add support for loongarch64 Message-ID: Signed-off-by: Waldemar Brodkorb --- arch/Config.in | 12 ++++++++++++ arch/Config.in.loongarch64 | 14 ++++++++++++++ package/glibc/Config.in | 1 + package/musl/Config.in | 1 + 4 files changed, 28 insertions(+) create mode 100644 arch/Config.in.loongarch64 diff --git a/arch/Config.in b/arch/Config.in index f39c33ef7f..070a4aca3a 100644 --- a/arch/Config.in +++ b/arch/Config.in @@ -77,6 +77,14 @@ config BR2_i386 Intel i386 architecture compatible microprocessor http://en.wikipedia.org/wiki/I386 +config BR2_loongarch64 + bool "loongarch64" + select BR2_ARCH_IS_64 + select BR2_USE_MMU + help + Loongarch is a RISC microprocessor from Loongarch Technologies. + https://en.wikipedia.org/wiki/Loongson + config BR2_m68k bool "m68k" # MMU support is set by the subarchitecture file, arch/Config.in.m68k @@ -374,6 +382,10 @@ if BR2_arm || BR2_armeb || BR2_aarch64 || BR2_aarch64_be source "arch/Config.in.arm" endif +if BR2_loongarch64 +source "arch/Config.in.loongarch64" +endif + if BR2_m68k source "arch/Config.in.m68k" endif diff --git a/arch/Config.in.loongarch64 b/arch/Config.in.loongarch64 new file mode 100644 index 0000000000..2b5bac095d --- /dev/null +++ b/arch/Config.in.loongarch64 @@ -0,0 +1,14 @@ +config BR2_ARCH + default "loongarch64" + +config BR2_NORMALIZED_ARCH + default "loongarch" + +config BR2_ENDIAN + default "LITTLE" + +config BR2_READELF_ARCH_NAME + default "LoongArch" + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/package/glibc/Config.in b/package/glibc/Config.in index 81c64083f4..5385e2a855 100644 --- a/package/glibc/Config.in +++ b/package/glibc/Config.in @@ -5,6 +5,7 @@ config BR2_PACKAGE_GLIBC_ARCH_SUPPORTS default y if BR2_aarch64 default y if BR2_aarch64_be default y if BR2_i386 + default y if BR2_loongarch64 default y if BR2_m68k_m68k default y if BR2_mips default y if BR2_mipsel diff --git a/package/musl/Config.in b/package/musl/Config.in index a6e2af054c..70475326f5 100644 --- a/package/musl/Config.in +++ b/package/musl/Config.in @@ -5,6 +5,7 @@ config BR2_PACKAGE_MUSL_ARCH_SUPPORTS default y if BR2_arm default y if BR2_armeb default y if BR2_i386 + default y if BR2_loongarch64 default y if BR2_m68k_m68k default y if BR2_microblaze default y if BR2_mips -- 2.30.2 From wbx at openadk.org Tue May 14 06:27:01 2024 From: wbx at openadk.org (Waldemar Brodkorb) Date: Tue, 14 May 2024 08:27:01 +0200 Subject: [Buildroot] [PATCH 2/3] linux: add support for vmlinux.efi Message-ID: Signed-off-by: Waldemar Brodkorb --- linux/Config.in | 4 ++++ linux/linux.mk | 2 ++ 2 files changed, 6 insertions(+) diff --git a/linux/Config.in b/linux/Config.in index d3d4c42910..8aab953ddf 100644 --- a/linux/Config.in +++ b/linux/Config.in @@ -285,6 +285,10 @@ config BR2_LINUX_KERNEL_VMLINUX_BIN bool "vmlinux.bin" depends on BR2_mips || BR2_mipsel || BR2_sh +config BR2_LINUX_KERNEL_VMLINUX_EFI + bool "vmlinux.efi" + depends on BR2_loongarch64 + config BR2_LINUX_KERNEL_VMLINUX bool "vmlinux" diff --git a/linux/linux.mk b/linux/linux.mk index 16d9f19470..3e0e728656 100644 --- a/linux/linux.mk +++ b/linux/linux.mk @@ -231,6 +231,8 @@ else ifeq ($(BR2_LINUX_KERNEL_IMAGEGZ),y) LINUX_IMAGE_NAME = Image.gz else ifeq ($(BR2_LINUX_KERNEL_LINUX_BIN),y) LINUX_IMAGE_NAME = linux.bin +else ifeq ($(BR2_LINUX_KERNEL_VMLINUX_EFI),y) +LINUX_IMAGE_NAME = vmlinux.efi else ifeq ($(BR2_LINUX_KERNEL_VMLINUX_BIN),y) LINUX_IMAGE_NAME = vmlinux.bin else ifeq ($(BR2_LINUX_KERNEL_VMLINUX),y) -- 2.30.2 From wbx at openadk.org Tue May 14 06:27:54 2024 From: wbx at openadk.org (Waldemar Brodkorb) Date: Tue, 14 May 2024 08:27:54 +0200 Subject: [Buildroot] [PATCH 3/3] configs/qemu_loongarch64: new defconfig Message-ID: Signed-off-by: Waldemar Brodkorb --- .../patches/linux-headers/linux-headers.hash | 2 ++ .../qemu/loongarch64/patches/linux/linux.hash | 2 ++ configs/qemu_loongarch64_defconfig | 27 +++++++++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 board/qemu/loongarch64/patches/linux-headers/linux-headers.hash create mode 100644 board/qemu/loongarch64/patches/linux/linux.hash create mode 100644 configs/qemu_loongarch64_defconfig diff --git a/board/qemu/loongarch64/patches/linux-headers/linux-headers.hash b/board/qemu/loongarch64/patches/linux-headers/linux-headers.hash new file mode 100644 index 0000000000..f3d9c1186a --- /dev/null +++ b/board/qemu/loongarch64/patches/linux-headers/linux-headers.hash @@ -0,0 +1,2 @@ +# From https://cdn.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc +sha256 b66a5b863b0f8669448b74ca83bd641a856f164b29956e539bbcb5fdeeab9cc6 linux-6.6.30.tar.xz diff --git a/board/qemu/loongarch64/patches/linux/linux.hash b/board/qemu/loongarch64/patches/linux/linux.hash new file mode 100644 index 0000000000..f3d9c1186a --- /dev/null +++ b/board/qemu/loongarch64/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# From https://cdn.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc +sha256 b66a5b863b0f8669448b74ca83bd641a856f164b29956e539bbcb5fdeeab9cc6 linux-6.6.30.tar.xz diff --git a/configs/qemu_loongarch64_defconfig b/configs/qemu_loongarch64_defconfig new file mode 100644 index 0000000000..025e9907e2 --- /dev/null +++ b/configs/qemu_loongarch64_defconfig @@ -0,0 +1,27 @@ +# Architecture +BR2_loongarch64=y + +# Filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.30" +BR2_LINUX_KERNEL_DEFCONFIG="loongson3" +BR2_LINUX_KERNEL_VMLINUX_EFI=y + +# Disable network scripts +# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y -- 2.30.2 From thomas.petazzoni at bootlin.com Tue May 14 07:49:44 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 14 May 2024 09:49:44 +0200 Subject: [Buildroot] [PATCH] package: fix filename/hashes of Cargo-fetched packages Message-ID: <20240514074945.2885400-1-thomas.petazzoni@bootlin.com> Commit de5ed8021269e18070b92def5df10f9157bc2085 ("{boot, package}: update hashes for generated archives") forgot to update the filename and hashes of Cargo-fetched packages. This commit therefore updates the incorrect filenames and hashes. It allows to run: make bat-legal-info \ dust-legal-info \ eza-legal-info \ hyperfine-legal-info \ nushell-legal-info \ procs-legal-info \ ripgrep-legal-info \ host-rust-bindgen-legal-info \ host-sentry-cli-legal-info \ tealdeer-legal-info successfully. Also fixes: http://autobuild.buildroot.net/results/1ff5ccf5ee6029669af1413c95827f670ae212b3/ (dust) http://autobuild.buildroot.net/results/f887adebe611f0021d5ee85acb95cced7c8b71c0/ (sentry-cli) http://autobuild.buildroot.net/results/b95093c618eafeb3726513a3ef6199488406093d/ (bat) (and probably some other similar issues) Cc: Yann E. MORIN Cc: Arnout Vandecappelle Signed-off-by: Thomas Petazzoni --- package/bat/bat.hash | 2 +- package/dust/dust.hash | 2 +- package/eza/eza.hash | 2 +- package/hyperfine/hyperfine.hash | 2 +- package/nushell/nushell.hash | 2 +- package/procs/procs.hash | 2 +- package/ripgrep/ripgrep.hash | 2 +- package/rust-bindgen/rust-bindgen.hash | 2 +- package/sentry-cli/sentry-cli.hash | 2 +- package/tealdeer/tealdeer.hash | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package/bat/bat.hash b/package/bat/bat.hash index 775838d921..e80301ff49 100644 --- a/package/bat/bat.hash +++ b/package/bat/bat.hash @@ -1,4 +1,4 @@ # Locally generated -sha256 6a32062aeb76b8d7d4cffbb5b267818ee1f35149af0c35fdb8999cea63e65854 bat-0.24.0-cargo1.tar.gz +sha256 45fcdd6076dc1b45698a7b6c0f4d1f5d9ae676f3ca3b155402ad24680d5b4df6 bat-0.24.0-cargo2.tar.gz sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE-APACHE sha256 dccda9eb9533f5c65624a1106536c6cfde46008d58e60b3faf154e8b9fd5b46e LICENSE-MIT diff --git a/package/dust/dust.hash b/package/dust/dust.hash index 0b2f123080..975ec9664d 100644 --- a/package/dust/dust.hash +++ b/package/dust/dust.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 fffe56f60bb596213edcd054f45e3b611c4b9b7861ff4a1bb9e0721012474032 dust-0.9.0-cargo1.tar.gz +sha256 ace29e85647e7079f9eaa066da9b1368c7200233eb0814442499948b5adeb028 dust-0.9.0-cargo2.tar.gz sha256 aee6e2d13d3a55c7881630c09b41ca7b3b44bb1437b5d36695d22decc3655160 LICENSE diff --git a/package/eza/eza.hash b/package/eza/eza.hash index ddc23f50e2..8765261e7e 100644 --- a/package/eza/eza.hash +++ b/package/eza/eza.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 925347e190028308e8105d5c6aef395fd73cd3ceec2df2bf35b285101e75bf3b eza-0.18.8-cargo1.tar.gz +sha256 709507bd46c1e1c4c14d6e34266355d78ae21fe2525f8bf42089cab36ebf0134 eza-0.18.8-cargo2.tar.gz sha256 2762990c7fbba9d550802a2593c1d857dcd52596bb0f9f192a97e9a7ac5f4f9e LICENCE diff --git a/package/hyperfine/hyperfine.hash b/package/hyperfine/hyperfine.hash index 6806bda9c8..88b8710125 100644 --- a/package/hyperfine/hyperfine.hash +++ b/package/hyperfine/hyperfine.hash @@ -1,4 +1,4 @@ # Locally computed -sha256 e4a945fcd08e93fed47e542383942874960a893a94a60758b7bd208821c623f5 hyperfine-1.18.0-cargo1.tar.gz +sha256 6cbe5673729ba7fd7a1b0b19a54630f93f4fcc29ea7878845f17931d31cd16fb hyperfine-1.18.0-cargo2.tar.gz sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE-APACHE sha256 1dfee18c2ff07ce551de4d6a1d2db158c0380746b488a7f0d08c8e0d3568b7c3 LICENSE-MIT diff --git a/package/nushell/nushell.hash b/package/nushell/nushell.hash index 2fe48557da..c125a6c652 100644 --- a/package/nushell/nushell.hash +++ b/package/nushell/nushell.hash @@ -1,3 +1,3 @@ # Locally generated -sha256 9518d79a04b374c23d4523252080b176e835050b3c6ef8243ee54411a8f8cba4 nushell-0.85.0-cargo1.tar.gz +sha256 9175b7e25a93a35c4f2690a63e7c36ac2dc31a9d762f59de01aac8ac1075b02f nushell-0.85.0-cargo2.tar.gz sha256 2dc1f03f729c21902d869b4d8f8dc528fc730f4c6ad83fc128672bda0ad69196 LICENSE diff --git a/package/procs/procs.hash b/package/procs/procs.hash index e4e3764976..da6b4377e2 100644 --- a/package/procs/procs.hash +++ b/package/procs/procs.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 fe93b0ace885e1342870b49b2ee64f0862fd799395740e5c549f2fd67d14d944 procs-0.14.5-cargo1.tar.gz +sha256 86715967bd378a4c0330708e11714bda2c8ce9f757fb3006073238d77e83e6e1 procs-0.14.5-cargo2.tar.gz sha256 feb87a2e0c305de3464cc44077da5393c52d8ca6362d37427157d04ec6f4510d LICENSE diff --git a/package/ripgrep/ripgrep.hash b/package/ripgrep/ripgrep.hash index c1241106b7..39165770dc 100644 --- a/package/ripgrep/ripgrep.hash +++ b/package/ripgrep/ripgrep.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 e3165367d5d613294f4c47dbb28ac59cda5465529e85bbc7243355e04be376de ripgrep-14.1.0-cargo1.tar.gz +sha256 7e1e66e2e9a7290a0a9445a82886a678ee8b2583b296fb851e1472c7403a681a ripgrep-14.1.0-cargo2.tar.gz sha256 0f96a83840e146e43c0ec96a22ec1f392e0680e6c1226e6f3ba87e0740af850f LICENSE-MIT diff --git a/package/rust-bindgen/rust-bindgen.hash b/package/rust-bindgen/rust-bindgen.hash index 17e6d82337..7b222e577f 100644 --- a/package/rust-bindgen/rust-bindgen.hash +++ b/package/rust-bindgen/rust-bindgen.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 23951b867ea4e24d49e3f74855300e1050ccacb86bca86005ce3307bfc761342 rust-bindgen-0.65.1-cargo1.tar.gz +sha256 618a92ac5e0e855a4e5cb16fb71258c4859679f3f7d7d95c7150e8b09cbbfbde rust-bindgen-0.65.1-cargo2.tar.gz sha256 c23953d9deb0a3312dbeaf6c128a657f3591acee45067612fa68405eaa4525db LICENSE diff --git a/package/sentry-cli/sentry-cli.hash b/package/sentry-cli/sentry-cli.hash index ff2684d110..0335c57cb3 100644 --- a/package/sentry-cli/sentry-cli.hash +++ b/package/sentry-cli/sentry-cli.hash @@ -1,3 +1,3 @@ # locally calculated -sha256 b31e66d4d0e65d9903c50c69565638f16db06420248d65d3d7bd955dc68d829c sentry-cli-2.20.3-cargo1.tar.gz +sha256 997581bca5bdb6f7540ea9d6e1d25f0e9df06fcc338d26ed75fc81f9401d65d4 sentry-cli-2.20.3-cargo2.tar.gz sha256 9503def7b54ceb6e3cd182fd59bc05d3a30d7eae481e65aaba4b495133c83c14 LICENSE diff --git a/package/tealdeer/tealdeer.hash b/package/tealdeer/tealdeer.hash index 94049567be..f5493ec8eb 100644 --- a/package/tealdeer/tealdeer.hash +++ b/package/tealdeer/tealdeer.hash @@ -1,4 +1,4 @@ # Locally generated -sha256 cf4999339cda32314ca42f4553440baa07fdf698e0a6ec254cbc25297f1e603a tealdeer-1.6.1-cargo1.tar.gz +sha256 f0be09eed89d25e44f954e9c25476176d9e4acc15171ae93b5977d7f244851ba tealdeer-1.6.1-cargo2.tar.gz sha256 62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a LICENSE-APACHE sha256 a313b5e62b80a08f3aae0fa62ff3de8482ef55247299eb352ab44f87ef456b1b LICENSE-MIT -- 2.45.0 From thomas.petazzoni at bootlin.com Tue May 14 07:58:15 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 14 May 2024 09:58:15 +0200 Subject: [Buildroot] [PATCH] support: update config.sub/config.guess In-Reply-To: References: Message-ID: <20240514095815.59ab4664@windsurf> On Tue, 14 May 2024 08:25:03 +0200 Waldemar Brodkorb wrote: > Signed-off-by: Waldemar Brodkorb > --- > support/gnuconfig/README.buildroot | 2 +- > support/gnuconfig/config.guess | 1233 +++++++++++++++------------- > support/gnuconfig/config.sub | 302 +++++-- > 3 files changed, 894 insertions(+), 643 deletions(-) Could you share some details on the motivation for this update? Is it just because they are out of date, or it is fixing something specific? Thanks, Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Tue May 14 07:59:17 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 14 May 2024 09:59:17 +0200 Subject: [Buildroot] [PATCH 3/3] configs/qemu_loongarch64: new defconfig In-Reply-To: References: Message-ID: <20240514095917.4df6491b@windsurf> Hello, On Tue, 14 May 2024 08:27:54 +0200 Waldemar Brodkorb wrote: > Signed-off-by: Waldemar Brodkorb > --- > .../patches/linux-headers/linux-headers.hash | 2 ++ > .../qemu/loongarch64/patches/linux/linux.hash | 2 ++ > configs/qemu_loongarch64_defconfig | 27 +++++++++++++++++++ > 3 files changed, 31 insertions(+) This needs a readme.txt in board/qemu/, with the proper formatting so that our CI testing can pick up the qemu command line (see other qemu readme.txt). This also needs a DEVELOPERS entry added. Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Tue May 14 08:02:17 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 14 May 2024 10:02:17 +0200 Subject: [Buildroot] [PATCH 1/3] arch: add support for loongarch64 In-Reply-To: References: Message-ID: <20240514100217.35add5c1@windsurf> On Tue, 14 May 2024 08:26:09 +0200 Waldemar Brodkorb wrote: > Signed-off-by: Waldemar Brodkorb > --- > arch/Config.in | 12 ++++++++++++ > arch/Config.in.loongarch64 | 14 ++++++++++++++ > package/glibc/Config.in | 1 + > package/musl/Config.in | 1 + > 4 files changed, 28 insertions(+) > create mode 100644 arch/Config.in.loongarch64 This needs an entry in the DEVELOPERS file. Is this architecture supported in all versions of binutils/gcc/gdb we support? > diff --git a/arch/Config.in.loongarch64 b/arch/Config.in.loongarch64 > new file mode 100644 > index 0000000000..2b5bac095d > --- /dev/null > +++ b/arch/Config.in.loongarch64 > @@ -0,0 +1,14 @@ > +config BR2_ARCH > + default "loongarch64" > + > +config BR2_NORMALIZED_ARCH > + default "loongarch" > + > +config BR2_ENDIAN > + default "LITTLE" > + > +config BR2_READELF_ARCH_NAME > + default "LoongArch" > + Based on the gcc documentation, I see two -march values: ?loongarch64? A generic CPU with 64-bit extensions. ?la464? LoongArch LA464 CPU with LBT, LSX, LASX, LVZ. And also 3 ABIs: ?lp64d? Uses 64-bit general purpose registers and 32/64-bit floating-point registers for parameter passing. Data model is LP64, where ?int? is 32 bits, while ?long int? and pointers are 64 bits. ?lp64f? Uses 64-bit general purpose registers and 32-bit floating-point registers for parameter passing. Data model is LP64, where ?int? is 32 bits, while ?long int? and pointers are 64 bits. ?lp64s? Uses 64-bit general purpose registers and no floating-point registers for parameter passing. Data model is LP64, where ?int? is 32 bits, while ?long int? and pointers are 64 bits. Should we do something about this? Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Tue May 14 08:20:49 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 14 May 2024 10:20:49 +0200 Subject: [Buildroot] [PATCH v2 1/1] package/python-ml-dtypes: bump to version 0.3.2 In-Reply-To: <20240206161715.550268-1-james.hilliard1@gmail.com> References: <20240206161715.550268-1-james.hilliard1@gmail.com> Message-ID: <20240514102049.39a4d771@windsurf> Hello James, On Tue, 6 Feb 2024 09:17:15 -0700 James Hilliard wrote: > Migrate from distutils which is being deprecated to setuptools. > > Drop python-pybind which is no longer required: > https://github.com/jax-ml/ml_dtypes/blob/v0.3.2/CHANGELOG.md#032---2024-01-03 > > Signed-off-by: James Hilliard > --- > Changes v1 -> v2: > - drop pybind > --- > package/python-ml-dtypes/Config.in | 1 - > package/python-ml-dtypes/python-ml-dtypes.hash | 4 ++-- > package/python-ml-dtypes/python-ml-dtypes.mk | 9 ++++----- > 3 files changed, 6 insertions(+), 8 deletions(-) This package fails to build: https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308461 Could you have a look? If you submit a fix, please don't just "fix" the issue, research since when the issue started occurring, so that we know if the issue is affecting one of our stable branches. Thanks a lot! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From wbx at openadk.org Tue May 14 08:21:38 2024 From: wbx at openadk.org (Waldemar Brodkorb) Date: Tue, 14 May 2024 10:21:38 +0200 Subject: [Buildroot] [PATCH v2] support: update config.sub/config.guess Message-ID: This adds support for Loongarch64 support. Signed-off-by: Waldemar Brodkorb --- v1->v2: add motivation requested by Thomas P. --- support/gnuconfig/README.buildroot | 2 +- support/gnuconfig/config.guess | 1233 +++++++++++++++------------- support/gnuconfig/config.sub | 302 +++++-- 3 files changed, 894 insertions(+), 643 deletions(-) diff --git a/support/gnuconfig/README.buildroot b/support/gnuconfig/README.buildroot index 952eea8b10..f34a6566bd 100644 --- a/support/gnuconfig/README.buildroot +++ b/support/gnuconfig/README.buildroot @@ -18,4 +18,4 @@ Run the script 'update' in this directory, and commit the result. The current Buildroot version is based on this commit of the config.git repository (leave alone on its own line, the script updates it): -d7a4dee7cc25e332b990d0a6d9f0ddd42cb33cf5 +948ae97ca5703224bd3eada06b7a69f40dd15a02 diff --git a/support/gnuconfig/config.guess b/support/gnuconfig/config.guess index 8d70ec2b26..f6d217a49f 100755 --- a/support/gnuconfig/config.guess +++ b/support/gnuconfig/config.guess @@ -1,12 +1,14 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2020 Free Software Foundation, Inc. +# Copyright 1992-2024 Free Software Foundation, Inc. -timestamp='2020-09-19' +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2024-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but @@ -27,17 +29,25 @@ timestamp='2020-09-19' # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess # # Please send patches to . +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + + me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] -Output the configuration name of the system \`$me' is run on. +Output the configuration name of the system '$me' is run on. Options: -h, --help print this help, then exit @@ -50,13 +60,13 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2020 Free Software Foundation, Inc. +Copyright 1992-2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" -Try \`$me --help' for more information." +Try '$me --help' for more information." # Parse command line while test $# -gt 0 ; do @@ -84,13 +94,16 @@ if test $# != 0; then exit 1 fi +# Just in case it came from the environment. +GUESS= + # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. +# Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still +# use 'HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. @@ -102,7 +115,7 @@ set_cc_for_build() { # prevent multiple calls if $tmp is already set test "$tmp" && return 0 : "${TMPDIR=/tmp}" - # shellcheck disable=SC2039 + # shellcheck disable=SC2039,SC3028 { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || @@ -112,7 +125,7 @@ set_cc_for_build() { ,,) echo "int x;" > "$dummy.c" for driver in cc gcc c89 c99 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then - CC_FOR_BUILD="$driver" + CC_FOR_BUILD=$driver break fi done @@ -133,38 +146,57 @@ fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -case "$UNAME_SYSTEM" in +case $UNAME_SYSTEM in Linux|GNU|GNU/*) - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - LIBC=gnu + LIBC=unknown set_cc_for_build cat <<-EOF > "$dummy.c" + #if defined(__ANDROID__) + LIBC=android + #else #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc + #elif defined(__GLIBC__) + LIBC=gnu + #elif defined(__LLVM_LIBC__) + LIBC=llvm #else #include + /* First heuristic to detect musl libc. */ #ifdef __DEFINED_va_list LIBC=musl - #else - LIBC=gnu + #endif #endif #endif EOF - eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" + cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "$cc_set_libc" + + # Second heuristic to detect musl libc. + if [ "$LIBC" = unknown ] && + command -v ldd >/dev/null && + ldd --version 2>&1 | grep -q ^musl; then + LIBC=musl + fi + + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + if [ "$LIBC" = unknown ]; then + LIBC=gnu + fi ;; esac # Note: order is significant - the case branches are not exclusive. -case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in +case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, @@ -176,12 +208,12 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ - "/sbin/$sysctl" 2>/dev/null || \ - "/usr/sbin/$sysctl" 2>/dev/null || \ + /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ echo unknown)` - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in + aarch64eb) machine=aarch64_be-unknown ;; armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; @@ -190,13 +222,13 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` - machine="${arch}${endian}"-unknown + machine=${arch}${endian}-unknown ;; - *) machine="$UNAME_MACHINE_ARCH"-unknown ;; + *) machine=$UNAME_MACHINE_ARCH-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in earm*) os=netbsdelf ;; @@ -217,7 +249,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in ;; esac # Determine ABI tags. - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` @@ -228,7 +260,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. - case "$UNAME_VERSION" in + case $UNAME_VERSION in Debian*) release='-gnu' ;; @@ -239,51 +271,57 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "$machine-${os}${release}${abi-}" - exit ;; + GUESS=$machine-${os}${release}${abi-} + ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE + ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE + ;; + *:SecBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE + ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE + ;; *:MidnightBSD:*:*) - echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE + ;; *:ekkoBSD:*:*) - echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE + ;; *:SolidBSD:*:*) - echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE + ;; *:OS108:*:*) - echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE + ;; macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE + ;; *:MirBSD:*:*) - echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE + ;; *:Sortix:*:*) - echo "$UNAME_MACHINE"-unknown-sortix - exit ;; + GUESS=$UNAME_MACHINE-unknown-sortix + ;; *:Twizzler:*:*) - echo "$UNAME_MACHINE"-unknown-twizzler - exit ;; + GUESS=$UNAME_MACHINE-unknown-twizzler + ;; *:Redox:*:*) - echo "$UNAME_MACHINE"-unknown-redox - exit ;; + GUESS=$UNAME_MACHINE-unknown-redox + ;; mips:OSF1:*.*) - echo mips-dec-osf1 - exit ;; + GUESS=mips-dec-osf1 + ;; alpha:OSF1:*:*) + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + trap '' 0 case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` @@ -297,7 +335,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in + case $ALPHA_CPU_TYPE in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") @@ -334,68 +372,69 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; + OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + GUESS=$UNAME_MACHINE-dec-osf$OSF_REL + ;; Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; + GUESS=m68k-unknown-sysv4 + ;; *:[Aa]miga[Oo][Ss]:*:*) - echo "$UNAME_MACHINE"-unknown-amigaos - exit ;; + GUESS=$UNAME_MACHINE-unknown-amigaos + ;; *:[Mm]orph[Oo][Ss]:*:*) - echo "$UNAME_MACHINE"-unknown-morphos - exit ;; + GUESS=$UNAME_MACHINE-unknown-morphos + ;; *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; + GUESS=i370-ibm-openedition + ;; *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; + GUESS=s390-ibm-zvmoe + ;; *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; + GUESS=powerpc-ibm-os400 + ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix"$UNAME_RELEASE" - exit ;; + GUESS=arm-acorn-riscix$UNAME_RELEASE + ;; arm*:riscos:*:*|arm*:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; + GUESS=arm-unknown-riscos + ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; + GUESS=hppa1.1-hitachi-hiuxmpp + ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee at wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; + case `(/bin/universe) 2>/dev/null` in + att) GUESS=pyramid-pyramid-sysv3 ;; + *) GUESS=pyramid-pyramid-bsd ;; + esac + ;; NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; + GUESS=pyramid-pyramid-svr4 + ;; DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; + GUESS=sparc-icl-nx6 + ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; + sparc) GUESS=sparc-icl-nx7 ;; + esac + ;; s390x:SunOS:*:*) - echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL + ;; sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-hal-solaris2$SUN_REL + ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris2$SUN_REL + ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux"$UNAME_RELEASE" - exit ;; + GUESS=i386-pc-auroraux$UNAME_RELEASE + ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) set_cc_for_build SUN_ARCH=i386 @@ -404,47 +443,50 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # This test works for both compilers. if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi - echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$SUN_ARCH-pc-solaris2$SUN_REL + ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris3$SUN_REL + ;; sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in + case `/usr/bin/arch -k` in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" - exit ;; + # Japanese Language versions have a version number like '4.1.3-JL'. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` + GUESS=sparc-sun-sunos$SUN_REL + ;; sun3*:SunOS:*:*) - echo m68k-sun-sunos"$UNAME_RELEASE" - exit ;; + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 - case "`/bin/arch`" in + case `/bin/arch` in sun3) - echo m68k-sun-sunos"$UNAME_RELEASE" + GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun4) - echo sparc-sun-sunos"$UNAME_RELEASE" + GUESS=sparc-sun-sunos$UNAME_RELEASE ;; esac - exit ;; + ;; aushp:SunOS:*:*) - echo sparc-auspex-sunos"$UNAME_RELEASE" - exit ;; + GUESS=sparc-auspex-sunos$UNAME_RELEASE + ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor @@ -454,41 +496,41 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-milan-mint$UNAME_RELEASE + ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-hades-mint$UNAME_RELEASE + ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-unknown-mint$UNAME_RELEASE + ;; m68k:machten:*:*) - echo m68k-apple-machten"$UNAME_RELEASE" - exit ;; + GUESS=m68k-apple-machten$UNAME_RELEASE + ;; powerpc:machten:*:*) - echo powerpc-apple-machten"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-apple-machten$UNAME_RELEASE + ;; RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; + GUESS=mips-dec-mach_bsd4.3 + ;; RISC*:ULTRIX:*:*) - echo mips-dec-ultrix"$UNAME_RELEASE" - exit ;; + GUESS=mips-dec-ultrix$UNAME_RELEASE + ;; VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix"$UNAME_RELEASE" - exit ;; + GUESS=vax-dec-ultrix$UNAME_RELEASE + ;; 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix"$UNAME_RELEASE" - exit ;; + GUESS=clipper-intergraph-clix$UNAME_RELEASE + ;; mips:*:*:UMIPS | mips:*:*:RISCos) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" @@ -516,29 +558,29 @@ EOF dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos"$UNAME_RELEASE" - exit ;; + GUESS=mips-mips-riscos$UNAME_RELEASE + ;; Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; + GUESS=powerpc-motorola-powermax + ;; Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; + GUESS=powerpc-harris-powerunix + ;; m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; + GUESS=m88k-harris-cxux7 + ;; m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; + GUESS=m88k-motorola-sysv4 + ;; m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` @@ -547,44 +589,45 @@ EOF if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ test "$TARGET_BINARY_INTERFACE"x = x then - echo m88k-dg-dgux"$UNAME_RELEASE" + GUESS=m88k-dg-dgux$UNAME_RELEASE else - echo m88k-dg-dguxbcs"$UNAME_RELEASE" + GUESS=m88k-dg-dguxbcs$UNAME_RELEASE fi else - echo i586-dg-dgux"$UNAME_RELEASE" + GUESS=i586-dg-dgux$UNAME_RELEASE fi - exit ;; + ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; + GUESS=m88k-dolphin-sysv3 + ;; M88*:*:R3*:*) # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; + GUESS=m88k-tektronix-sysv3 + ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; + GUESS=m68k-tektronix-bsd + ;; *:IRIX*:*:*) - echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" - exit ;; + IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` + GUESS=mips-sgi-irix$IRIX_REL + ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id + ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; + GUESS=i386-ibm-aix + ;; ia64:AIX:*:*) if test -x /usr/bin/oslevel ; then IBM_REV=`/usr/bin/oslevel` else - IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" - exit ;; + GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV + ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then set_cc_for_build @@ -601,16 +644,16 @@ EOF EOF if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then - echo "$SYSTEM_NAME" + GUESS=$SYSTEM_NAME else - echo rs6000-ibm-aix3.2.5 + GUESS=rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 + GUESS=rs6000-ibm-aix3.2.4 else - echo rs6000-ibm-aix3.2 + GUESS=rs6000-ibm-aix3.2 fi - exit ;; + ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then @@ -619,48 +662,48 @@ EOF IBM_ARCH=powerpc fi if test -x /usr/bin/lslpp ; then - IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else - IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo "$IBM_ARCH"-ibm-aix"$IBM_REV" - exit ;; + GUESS=$IBM_ARCH-ibm-aix$IBM_REV + ;; *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; + GUESS=rs6000-ibm-aix + ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) - echo romp-ibm-bsd4.4 - exit ;; + GUESS=romp-ibm-bsd4.4 + ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 + GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to + ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; + GUESS=rs6000-bull-bosx + ;; DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; + GUESS=m68k-bull-sysv3 + ;; 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; + GUESS=m68k-hp-bsd + ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; + GUESS=m68k-hp-bsd4.4 + ;; 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` - case "$UNAME_MACHINE" in + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + case $UNAME_MACHINE in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if test -x /usr/bin/getconf; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "$sc_cpu_version" in + case $sc_cpu_version in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 - case "$sc_kernel_bits" in + case $sc_kernel_bits in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 @@ -727,12 +770,12 @@ EOF HP_ARCH=hppa64 fi fi - echo "$HP_ARCH"-hp-hpux"$HPUX_REV" - exit ;; + GUESS=$HP_ARCH-hp-hpux$HPUX_REV + ;; ia64:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux"$HPUX_REV" - exit ;; + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + GUESS=ia64-hp-hpux$HPUX_REV + ;; 3050*:HI-UX:*:*) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" @@ -762,36 +805,36 @@ EOF EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; + GUESS=unknown-hitachi-hiuxwe2 + ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) - echo hppa1.1-hp-bsd - exit ;; + GUESS=hppa1.1-hp-bsd + ;; 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; + GUESS=hppa1.0-hp-bsd + ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; + GUESS=hppa1.0-hp-mpeix + ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) - echo hppa1.1-hp-osf - exit ;; + GUESS=hppa1.1-hp-osf + ;; hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; + GUESS=hppa1.0-hp-osf + ;; i*86:OSF1:*:*) if test -x /usr/sbin/sysversion ; then - echo "$UNAME_MACHINE"-unknown-osf1mk + GUESS=$UNAME_MACHINE-unknown-osf1mk else - echo "$UNAME_MACHINE"-unknown-osf1 + GUESS=$UNAME_MACHINE-unknown-osf1 fi - exit ;; + ;; parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; + GUESS=hppa1.1-hp-lites + ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; + GUESS=c1-convex-bsd + ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd @@ -799,17 +842,18 @@ EOF fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; + GUESS=c34-convex-bsd + ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; + GUESS=c38-convex-bsd + ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; + GUESS=c4-convex-bsd + ;; CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=ymp-cray-unicos$CRAY_REL + ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ @@ -817,112 +861,153 @@ EOF -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) - echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=t90-cray-unicos$CRAY_REL + ;; CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=alphaev5-cray-unicosmk$CRAY_REL + ;; CRAY*SV1:*:*:*) - echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=sv1-cray-unicos$CRAY_REL + ;; *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=craynv-cray-unicosmp$CRAY_REL + ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE + ;; sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=sparc-unknown-bsdi$UNAME_RELEASE + ;; *:BSD/OS:*:*) - echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE + ;; arm:FreeBSD:*:*) UNAME_PROCESSOR=`uname -p` set_cc_for_build if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi else - echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf fi - exit ;; + ;; *:FreeBSD:*:*) - UNAME_PROCESSOR=`/usr/bin/uname -p` - case "$UNAME_PROCESSOR" in + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac - echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" - exit ;; + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL + ;; i*:CYGWIN*:*) - echo "$UNAME_MACHINE"-pc-cygwin - exit ;; + GUESS=$UNAME_MACHINE-pc-cygwin + ;; *:MINGW64*:*) - echo "$UNAME_MACHINE"-pc-mingw64 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw64 + ;; *:MINGW*:*) - echo "$UNAME_MACHINE"-pc-mingw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw32 + ;; *:MSYS*:*) - echo "$UNAME_MACHINE"-pc-msys - exit ;; + GUESS=$UNAME_MACHINE-pc-msys + ;; i*:PW*:*) - echo "$UNAME_MACHINE"-pc-pw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-pw32 + ;; + *:SerenityOS:*:*) + GUESS=$UNAME_MACHINE-pc-serenity + ;; *:Interix*:*) - case "$UNAME_MACHINE" in + case $UNAME_MACHINE in x86) - echo i586-pc-interix"$UNAME_RELEASE" - exit ;; + GUESS=i586-pc-interix$UNAME_RELEASE + ;; authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix"$UNAME_RELEASE" - exit ;; + GUESS=x86_64-unknown-interix$UNAME_RELEASE + ;; IA64) - echo ia64-unknown-interix"$UNAME_RELEASE" - exit ;; + GUESS=ia64-unknown-interix$UNAME_RELEASE + ;; esac ;; i*:UWIN*:*) - echo "$UNAME_MACHINE"-pc-uwin - exit ;; + GUESS=$UNAME_MACHINE-pc-uwin + ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-pc-cygwin - exit ;; + GUESS=x86_64-pc-cygwin + ;; prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=powerpcle-unknown-solaris2$SUN_REL + ;; *:GNU:*:*) # the GNU system - echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" - exit ;; + GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` + GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL + ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" - exit ;; + GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC + ;; + x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-pc-managarm-mlibc" + ;; + *:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-unknown-managarm-mlibc" + ;; *:Minix:*:*) - echo "$UNAME_MACHINE"-unknown-minix - exit ;; + GUESS=$UNAME_MACHINE-unknown-minix + ;; aarch64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + set_cc_for_build + CPU=$UNAME_MACHINE + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __ARM_EABI__ + #ifdef __ARM_PCS_VFP + ABI=eabihf + #else + ABI=eabi + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;; + esac + fi + GUESS=$CPU-unknown-linux-$LIBCABI + ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in EV5) UNAME_MACHINE=alphaev5 ;; @@ -935,60 +1020,72 @@ EOF esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; - arc:Linux:*:* | arceb:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; arm*:Linux:*:*) set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi else - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf fi fi - exit ;; + ;; avr32*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; cris:Linux:*:*) - echo "$UNAME_MACHINE"-axis-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; crisv32:Linux:*:*) - echo "$UNAME_MACHINE"-axis-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; e2k:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; frv:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; hexagon:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:Linux:*:*) - echo "$UNAME_MACHINE"-pc-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-pc-linux-$LIBC + ;; ia64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; k1om:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:cos:*:*) + GUESS=$UNAME_MACHINE-unknown-cos + ;; + kvx:mbr:*:*) + GUESS=$UNAME_MACHINE-unknown-mbr + ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m32r*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m68*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; mips:Linux:*:* | mips64:Linux:*:*) set_cc_for_build IS_GLIBC=0 @@ -1033,123 +1130,135 @@ EOF #endif #endif EOF - eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`" + cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` + eval "$cc_set_vars" test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; openrisc*:Linux:*:*) - echo or1k-unknown-linux-"$LIBC" - exit ;; + GUESS=or1k-unknown-linux-$LIBC + ;; or32:Linux:*:* | or1k*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; padre:Linux:*:*) - echo sparc-unknown-linux-"$LIBC" - exit ;; + GUESS=sparc-unknown-linux-$LIBC + ;; parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-"$LIBC" - exit ;; + GUESS=hppa64-unknown-linux-$LIBC + ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; - PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; - *) echo hppa-unknown-linux-"$LIBC" ;; + PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; + PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; + *) GUESS=hppa-unknown-linux-$LIBC ;; esac - exit ;; + ;; ppc64:Linux:*:*) - echo powerpc64-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc64-unknown-linux-$LIBC + ;; ppc:Linux:*:*) - echo powerpc-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc-unknown-linux-$LIBC + ;; ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc64le-unknown-linux-$LIBC + ;; ppcle:Linux:*:*) - echo powerpcle-unknown-linux-"$LIBC" - exit ;; - riscv32:Linux:*:* | riscv64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpcle-unknown-linux-$LIBC + ;; + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; s390:Linux:*:* | s390x:Linux:*:*) - echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-ibm-linux-$LIBC + ;; sh64*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sh*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; tile*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; vax:Linux:*:*) - echo "$UNAME_MACHINE"-dec-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-dec-linux-$LIBC + ;; x86_64:Linux:*:*) set_cc_for_build + CPU=$UNAME_MACHINE LIBCABI=$LIBC if test "$CC_FOR_BUILD" != no_compiler_found; then - if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_X32 >/dev/null - then - LIBCABI="$LIBC"x32 - fi + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __i386__ + ABI=x86 + #else + #ifdef __ILP32__ + ABI=x32 + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + x86) CPU=i686 ;; + x32) LIBCABI=${LIBC}x32 ;; + esac fi - echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI" - exit ;; + GUESS=$CPU-pc-linux-$LIBCABI + ;; xtensa*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; + GUESS=i386-sequent-sysv4 + ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. - echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" - exit ;; + GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION + ;; i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility + # If we were able to find 'uname', then EMX Unix compatibility # is probably installed. - echo "$UNAME_MACHINE"-pc-os2-emx - exit ;; + GUESS=$UNAME_MACHINE-pc-os2-emx + ;; i*86:XTS-300:*:STOP) - echo "$UNAME_MACHINE"-unknown-stop - exit ;; + GUESS=$UNAME_MACHINE-unknown-stop + ;; i*86:atheos:*:*) - echo "$UNAME_MACHINE"-unknown-atheos - exit ;; + GUESS=$UNAME_MACHINE-unknown-atheos + ;; i*86:syllable:*:*) - echo "$UNAME_MACHINE"-pc-syllable - exit ;; + GUESS=$UNAME_MACHINE-pc-syllable + ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=i386-unknown-lynxos$UNAME_RELEASE + ;; i*86:*DOS:*:*) - echo "$UNAME_MACHINE"-pc-msdosdjgpp - exit ;; + GUESS=$UNAME_MACHINE-pc-msdosdjgpp + ;; i*86:*:4.*:*) UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" + GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL else - echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" + GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL fi - exit ;; + ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in @@ -1157,12 +1266,12 @@ EOF *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac - echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}" - exit ;; + GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 @@ -1172,11 +1281,11 @@ EOF && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 - echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" + GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL else - echo "$UNAME_MACHINE"-pc-sysv32 + GUESS=$UNAME_MACHINE-pc-sysv32 fi - exit ;; + ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about @@ -1184,31 +1293,31 @@ EOF # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; + GUESS=i586-pc-msdosdjgpp + ;; Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; + GUESS=i386-pc-mach3 + ;; paragon:*:*:*) - echo i860-intel-osf1 - exit ;; + GUESS=i860-intel-osf1 + ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 + GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 + GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 fi - exit ;; + ;; mini*:CTIX:SYS*5:*) # "miniframe" - echo m68010-convergent-sysv - exit ;; + GUESS=m68010-convergent-sysv + ;; mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; + GUESS=m68k-convergent-sysv + ;; M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; + GUESS=m68k-diab-dnix + ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) @@ -1233,116 +1342,119 @@ EOF /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=m68k-unknown-lynxos$UNAME_RELEASE + ;; mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; + GUESS=m68k-atari-sysv4 + ;; TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=sparc-unknown-lynxos$UNAME_RELEASE + ;; rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=rs6000-unknown-lynxos$UNAME_RELEASE + ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-unknown-lynxos$UNAME_RELEASE + ;; SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv"$UNAME_RELEASE" - exit ;; + GUESS=mips-dde-sysv$UNAME_RELEASE + ;; RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo "$UNAME_MACHINE"-sni-sysv4 + GUESS=$UNAME_MACHINE-sni-sysv4 else - echo ns32k-sni-sysv + GUESS=ns32k-sni-sysv fi - exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + ;; + PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort # says - echo i586-unisys-sysv4 - exit ;; + GUESS=i586-unisys-sysv4 + ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; + GUESS=hppa1.1-stratus-sysv4 + ;; *:*:*:FTX*) # From seanf at swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; + GUESS=i860-stratus-sysv4 + ;; i*86:VOS:*:*) # From Paul.Green at stratus.com. - echo "$UNAME_MACHINE"-stratus-vos - exit ;; + GUESS=$UNAME_MACHINE-stratus-vos + ;; *:VOS:*:*) # From Paul.Green at stratus.com. - echo hppa1.1-stratus-vos - exit ;; + GUESS=hppa1.1-stratus-vos + ;; mc68*:A/UX:*:*) - echo m68k-apple-aux"$UNAME_RELEASE" - exit ;; + GUESS=m68k-apple-aux$UNAME_RELEASE + ;; news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; + GUESS=mips-sony-newsos6 + ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if test -d /usr/nec; then - echo mips-nec-sysv"$UNAME_RELEASE" + GUESS=mips-nec-sysv$UNAME_RELEASE else - echo mips-unknown-sysv"$UNAME_RELEASE" + GUESS=mips-unknown-sysv$UNAME_RELEASE fi - exit ;; + ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; + GUESS=powerpc-be-beos + ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; + GUESS=powerpc-apple-beos + ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; + GUESS=i586-pc-beos + ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; - x86_64:Haiku:*:*) - echo x86_64-unknown-haiku - exit ;; + GUESS=i586-pc-haiku + ;; + ppc:Haiku:*:*) # Haiku running on Apple PowerPC + GUESS=powerpc-apple-haiku + ;; + *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat) + GUESS=$UNAME_MACHINE-unknown-haiku + ;; SX-4:SUPER-UX:*:*) - echo sx4-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx4-nec-superux$UNAME_RELEASE + ;; SX-5:SUPER-UX:*:*) - echo sx5-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx5-nec-superux$UNAME_RELEASE + ;; SX-6:SUPER-UX:*:*) - echo sx6-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx6-nec-superux$UNAME_RELEASE + ;; SX-7:SUPER-UX:*:*) - echo sx7-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx7-nec-superux$UNAME_RELEASE + ;; SX-8:SUPER-UX:*:*) - echo sx8-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx8-nec-superux$UNAME_RELEASE + ;; SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx8r-nec-superux$UNAME_RELEASE + ;; SX-ACE:SUPER-UX:*:*) - echo sxace-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sxace-nec-superux$UNAME_RELEASE + ;; Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-apple-rhapsody$UNAME_RELEASE + ;; *:Rhapsody:*:*) - echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE + ;; arm64:Darwin:*:*) - echo aarch64-apple-darwin"$UNAME_RELEASE" - exit ;; + GUESS=aarch64-apple-darwin$UNAME_RELEASE + ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in @@ -1378,109 +1490,122 @@ EOF # uname -m returns i386 or x86_64 UNAME_PROCESSOR=$UNAME_MACHINE fi - echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE + ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi - echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE + ;; *:QNX:*:4*) - echo i386-pc-qnx - exit ;; + GUESS=i386-pc-qnx + ;; NEO-*:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=neo-tandem-nsk$UNAME_RELEASE + ;; NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nse-tandem-nsk$UNAME_RELEASE + ;; NSR-*:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsr-tandem-nsk$UNAME_RELEASE + ;; NSV-*:NONSTOP_KERNEL:*:*) - echo nsv-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsv-tandem-nsk$UNAME_RELEASE + ;; NSX-*:NONSTOP_KERNEL:*:*) - echo nsx-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsx-tandem-nsk$UNAME_RELEASE + ;; *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; + GUESS=mips-compaq-nonstopux + ;; BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; + GUESS=bs2000-siemens-sysv + ;; DS/*:UNIX_System_V:*:*) - echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE + ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - # shellcheck disable=SC2154 - if test "$cputype" = 386; then + if test "${cputype-}" = 386; then UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" + elif test "x${cputype-}" != x; then + UNAME_MACHINE=$cputype fi - echo "$UNAME_MACHINE"-unknown-plan9 - exit ;; + GUESS=$UNAME_MACHINE-unknown-plan9 + ;; *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; + GUESS=pdp10-unknown-tops10 + ;; *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; + GUESS=pdp10-unknown-tenex + ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; + GUESS=pdp10-dec-tops20 + ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; + GUESS=pdp10-xkl-tops20 + ;; *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; + GUESS=pdp10-unknown-tops20 + ;; *:ITS:*:*) - echo pdp10-unknown-its - exit ;; + GUESS=pdp10-unknown-its + ;; SEI:*:*:SEIUX) - echo mips-sei-seiux"$UNAME_RELEASE" - exit ;; + GUESS=mips-sei-seiux$UNAME_RELEASE + ;; *:DragonFly:*:*) - echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" - exit ;; + DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL + ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "$UNAME_MACHINE" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; + case $UNAME_MACHINE in + A*) GUESS=alpha-dec-vms ;; + I*) GUESS=ia64-dec-vms ;; + V*) GUESS=vax-dec-vms ;; esac ;; *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; + GUESS=i386-pc-xenix + ;; i*86:skyos:*:*) - echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" - exit ;; + SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` + GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL + ;; i*86:rdos:*:*) - echo "$UNAME_MACHINE"-pc-rdos - exit ;; - i*86:AROS:*:*) - echo "$UNAME_MACHINE"-pc-aros - exit ;; + GUESS=$UNAME_MACHINE-pc-rdos + ;; + i*86:Fiwix:*:*) + GUESS=$UNAME_MACHINE-pc-fiwix + ;; + *:AROS:*:*) + GUESS=$UNAME_MACHINE-unknown-aros + ;; x86_64:VMkernel:*:*) - echo "$UNAME_MACHINE"-unknown-esx - exit ;; + GUESS=$UNAME_MACHINE-unknown-esx + ;; amd64:Isilon\ OneFS:*:*) - echo x86_64-unknown-onefs - exit ;; + GUESS=x86_64-unknown-onefs + ;; *:Unleashed:*:*) - echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE + ;; + *:Ironclad:*:*) + GUESS=$UNAME_MACHINE-unknown-ironclad + ;; esac +# Do we have a guess based on uname results? +if test "x$GUESS" != x; then + echo "$GUESS" + exit +fi + # No uname command or uname output not recognized. set_cc_for_build cat > "$dummy.c" </dev/null && SYSTEM_NAME=`$dummy` && +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. @@ -1620,7 +1745,7 @@ test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } echo "$0: unable to guess system type" >&2 -case "$UNAME_MACHINE:$UNAME_SYSTEM" in +case $UNAME_MACHINE:$UNAME_SYSTEM in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&2 <&2 + echo "Invalid configuration '$1': more than four components" >&2 exit 1 ;; *-*-*-*) @@ -134,7 +145,8 @@ case $1 in nto-qnx* | linux-* | uclinux-uclibc* \ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ - | storm-chaos* | os2-emx* | rtmk-nova*) + | storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \ + | windows-* ) basic_machine=$field1 basic_os=$maybe_os ;; @@ -163,6 +175,10 @@ case $1 in basic_machine=$field1 basic_os=$field2 ;; + zephyr*) + basic_machine=$field1-unknown + basic_os=$field2 + ;; # Manufacturers dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ @@ -922,11 +938,13 @@ case $basic_machine in *-*) # shellcheck disable=SC2162 + saved_IFS=$IFS IFS="-" read cpu vendor <&2 + echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2 exit 1 ;; esac @@ -1278,34 +1287,45 @@ esac # Decode manufacturer-specific aliases for certain operating systems. -if test x$basic_os != x +if test x"$basic_os" != x then -# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just +# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just # set os. +obj= case $basic_os in gnu/linux*) kernel=linux - os=`echo $basic_os | sed -e 's|gnu/linux|gnu|'` + os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` + ;; + os2-emx) + kernel=os2 + os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` ;; nto-qnx*) kernel=nto - os=`echo $basic_os | sed -e 's|nto-qnx|qnx|'` + os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` ;; *-*) # shellcheck disable=SC2162 + saved_IFS=$IFS IFS="-" read kernel os <&2 + fi + ;; + *) + echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 + exit 1 + ;; +esac + +case $obj in + aout* | coff* | elf* | pe*) + ;; + '') + # empty is fine + ;; *) - echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 + echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 + exit 1 + ;; +esac + +# Here we handle the constraint that a (synthetic) cpu and os are +# valid only in combination with each other and nowhere else. +case $cpu-$os in + # The "javascript-unknown-ghcjs" triple is used by GHC; we + # accept it here in order to tolerate that, but reject any + # variations. + javascript-ghcjs) + ;; + javascript-* | *-ghcjs) + echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2 exit 1 ;; esac # As a final step for OS-related things, validate the OS-kernel combination # (given a valid OS), if there is a kernel. -case $kernel-$os in - linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* ) +case $kernel-$os-$obj in + linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ + | linux-mlibc*- | linux-musl*- | linux-newlib*- \ + | linux-relibc*- | linux-uclibc*- ) ;; - uclinux-uclibc* ) + uclinux-uclibc*- ) ;; - -dietlibc* | -newlib* | -musl* | -uclibc* ) + managarm-mlibc*- | managarm-kernel*- ) + ;; + windows*-msvc*-) + ;; + -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \ + | -uclibc*- ) # These are just libc implementations, not actual OSes, and thus # require a kernel. - echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 + echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 exit 1 ;; - kfreebsd*-gnu* | kopensolaris*-gnu*) + -kernel*- ) + echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 + exit 1 ;; - nto-qnx*) + *-kernel*- ) + echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 + exit 1 ;; - *-eabi* | *-gnueabi*) + *-msvc*- ) + echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 + exit 1 + ;; + kfreebsd*-gnu*- | kopensolaris*-gnu*-) + ;; + vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) + ;; + nto-qnx*-) + ;; + os2-emx-) ;; - -*) + *-eabi*- | *-gnueabi*-) + ;; + none--*) + # None (no kernel, i.e. freestanding / bare metal), + # can be paired with an machine code file format + ;; + -*-) # Blank kernel with real OS is always fine. ;; - *-*) - echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 + --*) + # Blank kernel and OS with real machine code file format is always fine. + ;; + *-*-*) + echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2 exit 1 ;; esac @@ -1836,7 +1960,7 @@ case $vendor in ;; esac -echo "$cpu-$vendor-${kernel:+$kernel-}$os" +echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" exit # Local variables: -- 2.30.2 From thomas.petazzoni at bootlin.com Tue May 14 08:23:18 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 14 May 2024 10:23:18 +0200 Subject: [Buildroot] [PATCH v1 1/3] package/go-bootstrap-stage2: bump version to go1.19.13 In-Reply-To: <20240307015107.2908128-1-christian@aperture.us> References: <20240307015107.2908128-1-christian@aperture.us> Message-ID: <20240514102318.1cdeba18@windsurf> Hello Christian, On Wed, 6 Mar 2024 17:51:05 -0800 Christian Stewart via buildroot wrote: > Update to the latest 1.19.x version available. > > Signed-off-by: Christian Stewart > --- > package/go-bootstrap-stage2/go-bootstrap-stage2.hash | 2 +- > package/go-bootstrap-stage2/go-bootstrap-stage2.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) I don't think it's this patch causing the issue, but we have a Go build failure in our Gitlab CI: https://gitlab.com/buildroot.org/buildroot/-/jobs/6833307823 Could you have a look? Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Tue May 14 08:58:00 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 14 May 2024 10:58:00 +0200 Subject: [Buildroot] [PATCH] docs, package/gcc: switch to Gitlab issue tracker Message-ID: <20240514085801.3202503-1-thomas.petazzoni@bootlin.com> Our Bugzilla is so slow and unstable that it has become unusable. Let's switch to using the Gitlab issue tracker instead. There are still lots of references to the Bugzilla bug tracker in our News page at https://buildroot.org/news.html, but these are for older news. Signed-off-by: Thomas Petazzoni --- docs/manual/contribute.adoc | 2 +- docs/manual/resources.adoc | 2 +- docs/website/contribute.html | 2 +- docs/website/support.html | 5 +++-- package/gcc/gcc.mk | 2 +- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/manual/contribute.adoc b/docs/manual/contribute.adoc index 6ff6c15314..c88035597e 100644 --- a/docs/manual/contribute.adoc +++ b/docs/manual/contribute.adoc @@ -25,7 +25,7 @@ for more information on obtaining a Buildroot git tree. === Reproducing, analyzing and fixing bugs A first way of contributing is to have a look at the open bug reports in -the https://bugs.buildroot.org/buglist.cgi?product=buildroot[Buildroot bug +the https://gitlab.com/buildroot.org/buildroot/-/issues[Buildroot bug tracker]. As we strive to keep the bug count as small as possible, all help in reproducing, analyzing and fixing reported bugs is more than welcome. Don't hesitate to add a comment to bug reports reporting your diff --git a/docs/manual/resources.adoc b/docs/manual/resources.adoc index 68b7eb9062..4ef709c317 100644 --- a/docs/manual/resources.adoc +++ b/docs/manual/resources.adoc @@ -40,7 +40,7 @@ better as it will reach more people, both developers and users. Bug tracker:: + Bugs in Buildroot can be reported via the mailing list or alternatively -via the https://bugs.buildroot.org/buglist.cgi?product=buildroot[Buildroot +via the https://gitlab.com/buildroot.org/buildroot/-/issues[Buildroot bugtracker]. Please refer to xref:reporting-bugs[] before creating a bug report. diff --git a/docs/website/contribute.html b/docs/website/contribute.html index aa1cf93f1b..95028ee788 100644 --- a/docs/website/contribute.html +++ b/docs/website/contribute.html @@ -13,7 +13,7 @@
  • Reproducing, analyzing and fixing bugs from our - bug tracker
  • + bug tracker
  • Analyzing and fixing autobuild failures
  • Reviewing and testing patches sent by other developers. See the diff --git a/docs/website/support.html b/docs/website/support.html index 28873c6d76..75551b770e 100644 --- a/docs/website/support.html +++ b/docs/website/support.html @@ -80,8 +80,9 @@
-

If you think you found a bug in Buildroot, you can use the - Bug Tracker to post your bugs and/or +

If you think you found a bug in Buildroot, you + can use the + Bug Tracker to post your bugs and/or participate to find solutions to existing problems.

Note: patches are only accepted through the mailing list.

diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk index 672f9472a9..e4780353cb 100644 --- a/package/gcc/gcc.mk +++ b/package/gcc/gcc.mk @@ -83,7 +83,7 @@ HOST_GCC_COMMON_CONF_OPTS = \ --with-mpc=$(HOST_DIR) \ --with-mpfr=$(HOST_DIR) \ --with-pkgversion="Buildroot $(BR2_VERSION_FULL)" \ - --with-bugurl="http://bugs.buildroot.net/" \ + --with-bugurl="https://gitlab.com/buildroot.org/buildroot/-/issues" \ --without-zstd ifeq ($(BR2_REPRODUCIBLE),y) -- 2.45.0 From andreas.hilse at googlemail.com Tue May 14 09:33:07 2024 From: andreas.hilse at googlemail.com (Andreas Hilse) Date: Tue, 14 May 2024 11:33:07 +0200 Subject: [Buildroot] [PATCH] linux-pam: add patch for spurious password expires in 0 days warning In-Reply-To: <20240513231942.2dd93919@windsurf> References: <20240327140125.154985-1-andreas.hilse@gmail.com> <20240513231942.2dd93919@windsurf> Message-ID: Hello Thomas, There is already a new version 1.6.1 released by linux-pam that contains the bugfix. I guess updating directly would be better. What do you think? Thanks! From andreas.hilse at googlemail.com Tue May 14 09:35:48 2024 From: andreas.hilse at googlemail.com (Andreas Hilse) Date: Tue, 14 May 2024 11:35:48 +0200 Subject: [Buildroot] [PATCH] linux-pam: add patch for spurious password expires in 0 days warning In-Reply-To: References: <20240327140125.154985-1-andreas.hilse@gmail.com> <20240513231942.2dd93919@windsurf> Message-ID: Hello Thomas, Ignore my last mail, the version bump to 1.6.1 has already been committed to master. Thanks! On Tue, May 14, 2024 at 11:33?AM Andreas Hilse wrote: > > Hello Thomas, > > There is already a new version 1.6.1 released by linux-pam that > contains the bugfix. I guess updating directly would be better. > What do you think? > > Thanks! -- Mit freundlichen Gruessen Andreas Hilse From marleen.vos at essensium.com Tue May 14 10:12:44 2024 From: marleen.vos at essensium.com (marleen.vos at essensium.com) Date: Tue, 14 May 2024 12:12:44 +0200 Subject: [Buildroot] [PATCH 1/1] configs/avenger96_defconfig: fix CI build error due to a missing package for uboot Message-ID: <20240514101244.1067520-1-marleen.vos@mind.be> From: Marleen Vos This refers to https://gitlab.com/buildroot.org/buildroot/-/jobs/6813124907 The build error referenced in that link is: error: command 'swig' failed: No such file or directory make[4]: *** [scripts/dtc/pylibfdt/Makefile:33: rebuild] Error 1 make[3]: *** [scripts/Makefile.build:397: scripts/dtc/pylibfdt] Error 2 make[2]: *** [Makefile:2014: scripts_dtc] Error 2 make[1]: *** [package/pkg-generic.mk:283: /builds/buildroot.org/buildroot/output/build/uboot-2024.01/.stamp_built] Error 2 make: *** [Makefile:82: _all] Error 2 BR2_TARGET_UBOOT_NEEDS_PYLIBFDT is added to the avenger96_defconfig in order to resolve the issue Signed-off-by: Marleen Vos --- configs/avenger96_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/avenger96_defconfig b/configs/avenger96_defconfig index f73b654dc8..64cfb3c2b0 100644 --- a/configs/avenger96_defconfig +++ b/configs/avenger96_defconfig @@ -47,6 +47,7 @@ BR2_TARGET_UBOOT_FORMAT_DTB=y BR2_TARGET_UBOOT_FORMAT_CUSTOM=y BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=stm32mp15xx-dhcor-avenger96" +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y # Additional tools BR2_PACKAGE_HOST_GENIMAGE=y -- 2.34.1 From troglobit at gmail.com Tue May 14 10:36:29 2024 From: troglobit at gmail.com (Joachim Wiberg) Date: Tue, 14 May 2024 12:36:29 +0200 Subject: [Buildroot] [PATCH 1/1] package/hostapd: drop duplicate host-pkgconf dependency Message-ID: <20240514103629.2002634-1-troglobit@gmail.com> host-pkgconf already defined as dependency in package ingress. Signed-off-by: Joachim Wiberg --- package/hostapd/hostapd.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/hostapd/hostapd.mk b/package/hostapd/hostapd.mk index 8981d9247e..5756510e1d 100644 --- a/package/hostapd/hostapd.mk +++ b/package/hostapd/hostapd.mk @@ -25,7 +25,7 @@ HOSTAPD_CONFIG_DISABLE = # Try to use openssl if it's already available ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) -HOSTAPD_DEPENDENCIES += host-pkgconf libopenssl +HOSTAPD_DEPENDENCIES += libopenssl HOSTAPD_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs openssl` HOSTAPD_CONFIG_EDITS += 's/\#\(CONFIG_TLS=openssl\)/\1/' else -- 2.34.1 From christian at aperture.us Tue May 14 11:39:46 2024 From: christian at aperture.us (Christian Stewart) Date: Tue, 14 May 2024 04:39:46 -0700 Subject: [Buildroot] [PATCH v1 1/3] package/go-bootstrap-stage2: bump version to go1.19.13 In-Reply-To: <20240514102318.1cdeba18@windsurf> References: <20240307015107.2908128-1-christian@aperture.us> <20240514102318.1cdeba18@windsurf> Message-ID: Hi Thomas, On Tue, May 14, 2024, 1:23?AM Thomas Petazzoni wrote: > Hello Christian, > > On Wed, 6 Mar 2024 17:51:05 -0800 > Christian Stewart via buildroot wrote: > > > Update to the latest 1.19.x version available. > > > > Signed-off-by: Christian Stewart > > --- > > package/go-bootstrap-stage2/go-bootstrap-stage2.hash | 2 +- > > package/go-bootstrap-stage2/go-bootstrap-stage2.mk | 2 +- > > 2 files changed, 2 insertions(+), 2 deletions(-) > > I don't think it's this patch causing the issue, but we have a Go build > failure in our Gitlab CI: > > https://gitlab.com/buildroot.org/buildroot/-/jobs/6833307823 > > Could you have a look? > This looks like we need to pass -buildvcs=false to Go. I'll have a look at submitting a patch for this. Thanks, Christian Stewart -------------- next part -------------- An HTML attachment was scrubbed... URL: From bonet at grenoble.cnrs.fr Tue May 14 12:22:59 2024 From: bonet at grenoble.cnrs.fr (Edgar Bonet) Date: Tue, 14 May 2024 14:22:59 +0200 Subject: [Buildroot] [PATCH 1/1] board/acmesystems/acqua-a5: fix hash of at91bootstrap3 Message-ID: Commit 5b847f88fef7 (board: update hashes for generated achives) updated the file board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash by changing the file name suffix: -git3.tar.gz -> -git4.tar.gz. It did not, however, update the hash itself. Do it now. Fixes: 5b847f88fef768c8e79422db4193533b3a7488ea Signed-off-by: Edgar Bonet --- .../acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash b/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash index 3734f22c95..6edf3d3345 100644 --- a/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash +++ b/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 fef34111a07d9e5aa97b0840355a367f806a17e029583830e9deaa747ce47824 at91bootstrap3-v3.10.3-git4.tar.gz +sha256 5ea2a8fed1ba0024229c6f6d77176679e1b24791bdbce8e285634013d4a93551 at91bootstrap3-v3.10.3-git4.tar.gz -- 2.34.1 From yann.morin.1998 at free.fr Tue May 14 15:33:17 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Tue, 14 May 2024 17:33:17 +0200 Subject: [Buildroot] [git commit] package: fix filename/hashes of Cargo-fetched packages Message-ID: <20240514153349.4C493873AE@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=1dace793ba11fc45c6ae7842a84daa4612ad4279 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Commit de5ed8021269e18070b92def5df10f9157bc2085 ("{boot, package}: update hashes for generated archives") forgot to update the filename and hashes of Cargo-fetched packages. This commit therefore updates the incorrect filenames and hashes. It allows to run: make bat-legal-info \ dust-legal-info \ eza-legal-info \ hyperfine-legal-info \ nushell-legal-info \ procs-legal-info \ ripgrep-legal-info \ host-rust-bindgen-legal-info \ host-sentry-cli-legal-info \ tealdeer-legal-info successfully. Also fixes: http://autobuild.buildroot.net/results/1ff5ccf5ee6029669af1413c95827f670ae212b3/ (dust) http://autobuild.buildroot.net/results/f887adebe611f0021d5ee85acb95cced7c8b71c0/ (sentry-cli) http://autobuild.buildroot.net/results/b95093c618eafeb3726513a3ef6199488406093d/ (bat) (and probably some other similar issues) Cc: Yann E. MORIN Cc: Arnout Vandecappelle Signed-off-by: Thomas Petazzoni Signed-off-by: Yann E. MORIN --- package/bat/bat.hash | 2 +- package/dust/dust.hash | 2 +- package/eza/eza.hash | 2 +- package/hyperfine/hyperfine.hash | 2 +- package/nushell/nushell.hash | 2 +- package/procs/procs.hash | 2 +- package/ripgrep/ripgrep.hash | 2 +- package/rust-bindgen/rust-bindgen.hash | 2 +- package/sentry-cli/sentry-cli.hash | 2 +- package/tealdeer/tealdeer.hash | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package/bat/bat.hash b/package/bat/bat.hash index 775838d921..e80301ff49 100644 --- a/package/bat/bat.hash +++ b/package/bat/bat.hash @@ -1,4 +1,4 @@ # Locally generated -sha256 6a32062aeb76b8d7d4cffbb5b267818ee1f35149af0c35fdb8999cea63e65854 bat-0.24.0-cargo1.tar.gz +sha256 45fcdd6076dc1b45698a7b6c0f4d1f5d9ae676f3ca3b155402ad24680d5b4df6 bat-0.24.0-cargo2.tar.gz sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE-APACHE sha256 dccda9eb9533f5c65624a1106536c6cfde46008d58e60b3faf154e8b9fd5b46e LICENSE-MIT diff --git a/package/dust/dust.hash b/package/dust/dust.hash index 0b2f123080..975ec9664d 100644 --- a/package/dust/dust.hash +++ b/package/dust/dust.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 fffe56f60bb596213edcd054f45e3b611c4b9b7861ff4a1bb9e0721012474032 dust-0.9.0-cargo1.tar.gz +sha256 ace29e85647e7079f9eaa066da9b1368c7200233eb0814442499948b5adeb028 dust-0.9.0-cargo2.tar.gz sha256 aee6e2d13d3a55c7881630c09b41ca7b3b44bb1437b5d36695d22decc3655160 LICENSE diff --git a/package/eza/eza.hash b/package/eza/eza.hash index ddc23f50e2..8765261e7e 100644 --- a/package/eza/eza.hash +++ b/package/eza/eza.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 925347e190028308e8105d5c6aef395fd73cd3ceec2df2bf35b285101e75bf3b eza-0.18.8-cargo1.tar.gz +sha256 709507bd46c1e1c4c14d6e34266355d78ae21fe2525f8bf42089cab36ebf0134 eza-0.18.8-cargo2.tar.gz sha256 2762990c7fbba9d550802a2593c1d857dcd52596bb0f9f192a97e9a7ac5f4f9e LICENCE diff --git a/package/hyperfine/hyperfine.hash b/package/hyperfine/hyperfine.hash index 6806bda9c8..88b8710125 100644 --- a/package/hyperfine/hyperfine.hash +++ b/package/hyperfine/hyperfine.hash @@ -1,4 +1,4 @@ # Locally computed -sha256 e4a945fcd08e93fed47e542383942874960a893a94a60758b7bd208821c623f5 hyperfine-1.18.0-cargo1.tar.gz +sha256 6cbe5673729ba7fd7a1b0b19a54630f93f4fcc29ea7878845f17931d31cd16fb hyperfine-1.18.0-cargo2.tar.gz sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE-APACHE sha256 1dfee18c2ff07ce551de4d6a1d2db158c0380746b488a7f0d08c8e0d3568b7c3 LICENSE-MIT diff --git a/package/nushell/nushell.hash b/package/nushell/nushell.hash index 2fe48557da..c125a6c652 100644 --- a/package/nushell/nushell.hash +++ b/package/nushell/nushell.hash @@ -1,3 +1,3 @@ # Locally generated -sha256 9518d79a04b374c23d4523252080b176e835050b3c6ef8243ee54411a8f8cba4 nushell-0.85.0-cargo1.tar.gz +sha256 9175b7e25a93a35c4f2690a63e7c36ac2dc31a9d762f59de01aac8ac1075b02f nushell-0.85.0-cargo2.tar.gz sha256 2dc1f03f729c21902d869b4d8f8dc528fc730f4c6ad83fc128672bda0ad69196 LICENSE diff --git a/package/procs/procs.hash b/package/procs/procs.hash index e4e3764976..da6b4377e2 100644 --- a/package/procs/procs.hash +++ b/package/procs/procs.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 fe93b0ace885e1342870b49b2ee64f0862fd799395740e5c549f2fd67d14d944 procs-0.14.5-cargo1.tar.gz +sha256 86715967bd378a4c0330708e11714bda2c8ce9f757fb3006073238d77e83e6e1 procs-0.14.5-cargo2.tar.gz sha256 feb87a2e0c305de3464cc44077da5393c52d8ca6362d37427157d04ec6f4510d LICENSE diff --git a/package/ripgrep/ripgrep.hash b/package/ripgrep/ripgrep.hash index c1241106b7..39165770dc 100644 --- a/package/ripgrep/ripgrep.hash +++ b/package/ripgrep/ripgrep.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 e3165367d5d613294f4c47dbb28ac59cda5465529e85bbc7243355e04be376de ripgrep-14.1.0-cargo1.tar.gz +sha256 7e1e66e2e9a7290a0a9445a82886a678ee8b2583b296fb851e1472c7403a681a ripgrep-14.1.0-cargo2.tar.gz sha256 0f96a83840e146e43c0ec96a22ec1f392e0680e6c1226e6f3ba87e0740af850f LICENSE-MIT diff --git a/package/rust-bindgen/rust-bindgen.hash b/package/rust-bindgen/rust-bindgen.hash index 17e6d82337..7b222e577f 100644 --- a/package/rust-bindgen/rust-bindgen.hash +++ b/package/rust-bindgen/rust-bindgen.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 23951b867ea4e24d49e3f74855300e1050ccacb86bca86005ce3307bfc761342 rust-bindgen-0.65.1-cargo1.tar.gz +sha256 618a92ac5e0e855a4e5cb16fb71258c4859679f3f7d7d95c7150e8b09cbbfbde rust-bindgen-0.65.1-cargo2.tar.gz sha256 c23953d9deb0a3312dbeaf6c128a657f3591acee45067612fa68405eaa4525db LICENSE diff --git a/package/sentry-cli/sentry-cli.hash b/package/sentry-cli/sentry-cli.hash index ff2684d110..0335c57cb3 100644 --- a/package/sentry-cli/sentry-cli.hash +++ b/package/sentry-cli/sentry-cli.hash @@ -1,3 +1,3 @@ # locally calculated -sha256 b31e66d4d0e65d9903c50c69565638f16db06420248d65d3d7bd955dc68d829c sentry-cli-2.20.3-cargo1.tar.gz +sha256 997581bca5bdb6f7540ea9d6e1d25f0e9df06fcc338d26ed75fc81f9401d65d4 sentry-cli-2.20.3-cargo2.tar.gz sha256 9503def7b54ceb6e3cd182fd59bc05d3a30d7eae481e65aaba4b495133c83c14 LICENSE diff --git a/package/tealdeer/tealdeer.hash b/package/tealdeer/tealdeer.hash index 94049567be..f5493ec8eb 100644 --- a/package/tealdeer/tealdeer.hash +++ b/package/tealdeer/tealdeer.hash @@ -1,4 +1,4 @@ # Locally generated -sha256 cf4999339cda32314ca42f4553440baa07fdf698e0a6ec254cbc25297f1e603a tealdeer-1.6.1-cargo1.tar.gz +sha256 f0be09eed89d25e44f954e9c25476176d9e4acc15171ae93b5977d7f244851ba tealdeer-1.6.1-cargo2.tar.gz sha256 62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a LICENSE-APACHE sha256 a313b5e62b80a08f3aae0fa62ff3de8482ef55247299eb352ab44f87ef456b1b LICENSE-MIT From yann.morin.1998 at free.fr Tue May 14 15:35:18 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Tue, 14 May 2024 17:35:18 +0200 Subject: [Buildroot] [PATCH] package: fix filename/hashes of Cargo-fetched packages In-Reply-To: <20240514074945.2885400-1-thomas.petazzoni@bootlin.com> References: <20240514074945.2885400-1-thomas.petazzoni@bootlin.com> Message-ID: Thomas, All, On 2024-05-14 09:49 +0200, Thomas Petazzoni spake thusly: > Commit de5ed8021269e18070b92def5df10f9157bc2085 ("{boot, package}: > update hashes for generated archives") forgot to update the filename > and hashes of Cargo-fetched packages. No idea how on Earth I totally missed that... :-/ > This commit therefore updates the incorrect filenames and hashes. It > allows to run: > > make bat-legal-info \ > dust-legal-info \ > eza-legal-info \ > hyperfine-legal-info \ > nushell-legal-info \ > procs-legal-info \ > ripgrep-legal-info \ > host-rust-bindgen-legal-info \ > host-sentry-cli-legal-info \ > tealdeer-legal-info > > successfully. > > Also fixes: > > http://autobuild.buildroot.net/results/1ff5ccf5ee6029669af1413c95827f670ae212b3/ (dust) > http://autobuild.buildroot.net/results/f887adebe611f0021d5ee85acb95cced7c8b71c0/ (sentry-cli) > http://autobuild.buildroot.net/results/b95093c618eafeb3726513a3ef6199488406093d/ (bat) > (and probably some other similar issues) > > Cc: Yann E. MORIN > Cc: Arnout Vandecappelle > Signed-off-by: Thomas Petazzoni Applied to master, thanks for cleaning up after my mess... Regards, Yann E. MORIN. > --- > package/bat/bat.hash | 2 +- > package/dust/dust.hash | 2 +- > package/eza/eza.hash | 2 +- > package/hyperfine/hyperfine.hash | 2 +- > package/nushell/nushell.hash | 2 +- > package/procs/procs.hash | 2 +- > package/ripgrep/ripgrep.hash | 2 +- > package/rust-bindgen/rust-bindgen.hash | 2 +- > package/sentry-cli/sentry-cli.hash | 2 +- > package/tealdeer/tealdeer.hash | 2 +- > 10 files changed, 10 insertions(+), 10 deletions(-) > > diff --git a/package/bat/bat.hash b/package/bat/bat.hash > index 775838d921..e80301ff49 100644 > --- a/package/bat/bat.hash > +++ b/package/bat/bat.hash > @@ -1,4 +1,4 @@ > # Locally generated > -sha256 6a32062aeb76b8d7d4cffbb5b267818ee1f35149af0c35fdb8999cea63e65854 bat-0.24.0-cargo1.tar.gz > +sha256 45fcdd6076dc1b45698a7b6c0f4d1f5d9ae676f3ca3b155402ad24680d5b4df6 bat-0.24.0-cargo2.tar.gz > sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE-APACHE > sha256 dccda9eb9533f5c65624a1106536c6cfde46008d58e60b3faf154e8b9fd5b46e LICENSE-MIT > diff --git a/package/dust/dust.hash b/package/dust/dust.hash > index 0b2f123080..975ec9664d 100644 > --- a/package/dust/dust.hash > +++ b/package/dust/dust.hash > @@ -1,3 +1,3 @@ > # Locally computed > -sha256 fffe56f60bb596213edcd054f45e3b611c4b9b7861ff4a1bb9e0721012474032 dust-0.9.0-cargo1.tar.gz > +sha256 ace29e85647e7079f9eaa066da9b1368c7200233eb0814442499948b5adeb028 dust-0.9.0-cargo2.tar.gz > sha256 aee6e2d13d3a55c7881630c09b41ca7b3b44bb1437b5d36695d22decc3655160 LICENSE > diff --git a/package/eza/eza.hash b/package/eza/eza.hash > index ddc23f50e2..8765261e7e 100644 > --- a/package/eza/eza.hash > +++ b/package/eza/eza.hash > @@ -1,3 +1,3 @@ > # Locally computed > -sha256 925347e190028308e8105d5c6aef395fd73cd3ceec2df2bf35b285101e75bf3b eza-0.18.8-cargo1.tar.gz > +sha256 709507bd46c1e1c4c14d6e34266355d78ae21fe2525f8bf42089cab36ebf0134 eza-0.18.8-cargo2.tar.gz > sha256 2762990c7fbba9d550802a2593c1d857dcd52596bb0f9f192a97e9a7ac5f4f9e LICENCE > diff --git a/package/hyperfine/hyperfine.hash b/package/hyperfine/hyperfine.hash > index 6806bda9c8..88b8710125 100644 > --- a/package/hyperfine/hyperfine.hash > +++ b/package/hyperfine/hyperfine.hash > @@ -1,4 +1,4 @@ > # Locally computed > -sha256 e4a945fcd08e93fed47e542383942874960a893a94a60758b7bd208821c623f5 hyperfine-1.18.0-cargo1.tar.gz > +sha256 6cbe5673729ba7fd7a1b0b19a54630f93f4fcc29ea7878845f17931d31cd16fb hyperfine-1.18.0-cargo2.tar.gz > sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE-APACHE > sha256 1dfee18c2ff07ce551de4d6a1d2db158c0380746b488a7f0d08c8e0d3568b7c3 LICENSE-MIT > diff --git a/package/nushell/nushell.hash b/package/nushell/nushell.hash > index 2fe48557da..c125a6c652 100644 > --- a/package/nushell/nushell.hash > +++ b/package/nushell/nushell.hash > @@ -1,3 +1,3 @@ > # Locally generated > -sha256 9518d79a04b374c23d4523252080b176e835050b3c6ef8243ee54411a8f8cba4 nushell-0.85.0-cargo1.tar.gz > +sha256 9175b7e25a93a35c4f2690a63e7c36ac2dc31a9d762f59de01aac8ac1075b02f nushell-0.85.0-cargo2.tar.gz > sha256 2dc1f03f729c21902d869b4d8f8dc528fc730f4c6ad83fc128672bda0ad69196 LICENSE > diff --git a/package/procs/procs.hash b/package/procs/procs.hash > index e4e3764976..da6b4377e2 100644 > --- a/package/procs/procs.hash > +++ b/package/procs/procs.hash > @@ -1,3 +1,3 @@ > # Locally computed > -sha256 fe93b0ace885e1342870b49b2ee64f0862fd799395740e5c549f2fd67d14d944 procs-0.14.5-cargo1.tar.gz > +sha256 86715967bd378a4c0330708e11714bda2c8ce9f757fb3006073238d77e83e6e1 procs-0.14.5-cargo2.tar.gz > sha256 feb87a2e0c305de3464cc44077da5393c52d8ca6362d37427157d04ec6f4510d LICENSE > diff --git a/package/ripgrep/ripgrep.hash b/package/ripgrep/ripgrep.hash > index c1241106b7..39165770dc 100644 > --- a/package/ripgrep/ripgrep.hash > +++ b/package/ripgrep/ripgrep.hash > @@ -1,3 +1,3 @@ > # Locally calculated > -sha256 e3165367d5d613294f4c47dbb28ac59cda5465529e85bbc7243355e04be376de ripgrep-14.1.0-cargo1.tar.gz > +sha256 7e1e66e2e9a7290a0a9445a82886a678ee8b2583b296fb851e1472c7403a681a ripgrep-14.1.0-cargo2.tar.gz > sha256 0f96a83840e146e43c0ec96a22ec1f392e0680e6c1226e6f3ba87e0740af850f LICENSE-MIT > diff --git a/package/rust-bindgen/rust-bindgen.hash b/package/rust-bindgen/rust-bindgen.hash > index 17e6d82337..7b222e577f 100644 > --- a/package/rust-bindgen/rust-bindgen.hash > +++ b/package/rust-bindgen/rust-bindgen.hash > @@ -1,3 +1,3 @@ > # Locally calculated > -sha256 23951b867ea4e24d49e3f74855300e1050ccacb86bca86005ce3307bfc761342 rust-bindgen-0.65.1-cargo1.tar.gz > +sha256 618a92ac5e0e855a4e5cb16fb71258c4859679f3f7d7d95c7150e8b09cbbfbde rust-bindgen-0.65.1-cargo2.tar.gz > sha256 c23953d9deb0a3312dbeaf6c128a657f3591acee45067612fa68405eaa4525db LICENSE > diff --git a/package/sentry-cli/sentry-cli.hash b/package/sentry-cli/sentry-cli.hash > index ff2684d110..0335c57cb3 100644 > --- a/package/sentry-cli/sentry-cli.hash > +++ b/package/sentry-cli/sentry-cli.hash > @@ -1,3 +1,3 @@ > # locally calculated > -sha256 b31e66d4d0e65d9903c50c69565638f16db06420248d65d3d7bd955dc68d829c sentry-cli-2.20.3-cargo1.tar.gz > +sha256 997581bca5bdb6f7540ea9d6e1d25f0e9df06fcc338d26ed75fc81f9401d65d4 sentry-cli-2.20.3-cargo2.tar.gz > sha256 9503def7b54ceb6e3cd182fd59bc05d3a30d7eae481e65aaba4b495133c83c14 LICENSE > diff --git a/package/tealdeer/tealdeer.hash b/package/tealdeer/tealdeer.hash > index 94049567be..f5493ec8eb 100644 > --- a/package/tealdeer/tealdeer.hash > +++ b/package/tealdeer/tealdeer.hash > @@ -1,4 +1,4 @@ > # Locally generated > -sha256 cf4999339cda32314ca42f4553440baa07fdf698e0a6ec254cbc25297f1e603a tealdeer-1.6.1-cargo1.tar.gz > +sha256 f0be09eed89d25e44f954e9c25476176d9e4acc15171ae93b5977d7f244851ba tealdeer-1.6.1-cargo2.tar.gz > sha256 62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a LICENSE-APACHE > sha256 a313b5e62b80a08f3aae0fa62ff3de8482ef55247299eb352ab44f87ef456b1b LICENSE-MIT > -- > 2.45.0 > -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Tue May 14 15:39:06 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Tue, 14 May 2024 17:39:06 +0200 Subject: [Buildroot] [git commit] board/acmesystems/acqua-a5: fix hash of at91bootstrap3 Message-ID: <20240514153934.BB5BE873BD@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=31c39632856ecd38d3597793e8273786d4f0614f branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Commit 5b847f88fef7 (board: update hashes for generated achives) updated the file board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash by changing the file name suffix: -git3.tar.gz -> -git4.tar.gz. It did not, however, update the hash itself. Do it now. Fixes: 5b847f88fef768c8e79422db4193533b3a7488ea Signed-off-by: Edgar Bonet Signed-off-by: Yann E. MORIN --- board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash b/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash index 3734f22c95..6edf3d3345 100644 --- a/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash +++ b/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 fef34111a07d9e5aa97b0840355a367f806a17e029583830e9deaa747ce47824 at91bootstrap3-v3.10.3-git4.tar.gz +sha256 5ea2a8fed1ba0024229c6f6d77176679e1b24791bdbce8e285634013d4a93551 at91bootstrap3-v3.10.3-git4.tar.gz From yann.morin.1998 at free.fr Tue May 14 15:41:00 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Tue, 14 May 2024 17:41:00 +0200 Subject: [Buildroot] [PATCH 1/1] board/acmesystems/acqua-a5: fix hash of at91bootstrap3 In-Reply-To: References: Message-ID: Edgar, All, On 2024-05-14 14:22 +0200, Edgar Bonet spake thusly: > Commit 5b847f88fef7 (board: update hashes for generated achives) updated > the file > > board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash > > by changing the file name suffix: -git3.tar.gz -> -git4.tar.gz. It did > not, however, update the hash itself. Do it now. I knew I would miss some things here and there. I hoped I wouldd not, but I knew I would... > Fixes: 5b847f88fef768c8e79422db4193533b3a7488ea > Signed-off-by: Edgar Bonet Applied to master, thanks for fixing my mess! Regards, Yann E. MORIN. > --- > .../acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash b/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash > index 3734f22c95..6edf3d3345 100644 > --- a/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash > +++ b/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash > @@ -1,2 +1,2 @@ > # Locally calculated > -sha256 fef34111a07d9e5aa97b0840355a367f806a17e029583830e9deaa747ce47824 at91bootstrap3-v3.10.3-git4.tar.gz > +sha256 5ea2a8fed1ba0024229c6f6d77176679e1b24791bdbce8e285634013d4a93551 at91bootstrap3-v3.10.3-git4.tar.gz > -- > 2.34.1 > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From james.hilliard1 at gmail.com Tue May 14 15:42:50 2024 From: james.hilliard1 at gmail.com (James Hilliard) Date: Tue, 14 May 2024 09:42:50 -0600 Subject: [Buildroot] [PATCH 1/1] package/python-ml-dtypes: skip dependency check Message-ID: <20240514154250.1453970-1-james.hilliard1@gmail.com> This package pins overly strict numpy dependency versions apparently for compatibility reasons that don't appear relevant to buildroot. This package also appears to pin an overly strict setuptools version for unclear reasons. See: https://github.com/jax-ml/ml_dtypes/blob/v0.3.2/pyproject.toml#L51-L55 To fix this lets just set the --skip-dependency-check build option and ignore the build dependency version mismatches since they don't appear to cause any build issues. This error was introduced when we migrated setuptools to pep517 in 8937db8dd595e0988751e5dbb568e870b07b39cc. Signed-off-by: James Hilliard --- package/python-ml-dtypes/python-ml-dtypes.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/package/python-ml-dtypes/python-ml-dtypes.mk b/package/python-ml-dtypes/python-ml-dtypes.mk index 676137ecf1..8097265078 100644 --- a/package/python-ml-dtypes/python-ml-dtypes.mk +++ b/package/python-ml-dtypes/python-ml-dtypes.mk @@ -10,6 +10,7 @@ PYTHON_ML_DTYPES_SITE = https://files.pythonhosted.org/packages/39/7d/8d85fcba86 PYTHON_ML_DTYPES_LICENSE = Apache-2.0 PYTHON_ML_DTYPES_LICENSE_FILES = LICENSE PYTHON_ML_DTYPES_SETUP_TYPE = setuptools +PYTHON_ML_DTYPES_BUILD_OPTS = --skip-dependency-check PYTHON_ML_DTYPES_DEPENDENCIES = \ host-python-numpy \ -- 2.34.1 From yann.morin.1998 at free.fr Tue May 14 15:43:06 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Tue, 14 May 2024 17:43:06 +0200 Subject: [Buildroot] [git commit] configs/avenger96_defconfig: fix CI build error due to a missing package for uboot Message-ID: <20240514154403.D03EE873C2@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=9764258aaf0ef78ffd83e17d26959613b04b2944 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master This refers to https://gitlab.com/buildroot.org/buildroot/-/jobs/6813124907 The build error referenced in that link is: error: command 'swig' failed: No such file or directory make[4]: *** [scripts/dtc/pylibfdt/Makefile:33: rebuild] Error 1 make[3]: *** [scripts/Makefile.build:397: scripts/dtc/pylibfdt] Error 2 make[2]: *** [Makefile:2014: scripts_dtc] Error 2 make[1]: *** [package/pkg-generic.mk:283: /builds/buildroot.org/buildroot/output/build/uboot-2024.01/.stamp_built] Error 2 make: *** [Makefile:82: _all] Error 2 BR2_TARGET_UBOOT_NEEDS_PYLIBFDT is added to the avenger96_defconfig in order to resolve the issue Signed-off-by: Marleen Vos Signed-off-by: Yann E. MORIN --- configs/avenger96_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/avenger96_defconfig b/configs/avenger96_defconfig index f73b654dc8..64cfb3c2b0 100644 --- a/configs/avenger96_defconfig +++ b/configs/avenger96_defconfig @@ -47,6 +47,7 @@ BR2_TARGET_UBOOT_FORMAT_DTB=y BR2_TARGET_UBOOT_FORMAT_CUSTOM=y BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=stm32mp15xx-dhcor-avenger96" +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y # Additional tools BR2_PACKAGE_HOST_GENIMAGE=y From yann.morin.1998 at free.fr Tue May 14 15:49:14 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Tue, 14 May 2024 17:49:14 +0200 Subject: [Buildroot] [PATCH 1/1] configs/avenger96_defconfig: fix CI build error due to a missing package for uboot In-Reply-To: <20240514101244.1067520-1-marleen.vos@mind.be> References: <20240514101244.1067520-1-marleen.vos@mind.be> Message-ID: Marleen, All, On 2024-05-14 12:12 +0200, Marleen Vos via buildroot spake thusly: > From: Marleen Vos > > This refers to https://gitlab.com/buildroot.org/buildroot/-/jobs/6813124907 > The build error referenced in that link is: > > error: command 'swig' failed: No such file or directory > make[4]: *** [scripts/dtc/pylibfdt/Makefile:33: rebuild] Error 1 > make[3]: *** [scripts/Makefile.build:397: scripts/dtc/pylibfdt] Error 2 > make[2]: *** [Makefile:2014: scripts_dtc] Error 2 > make[1]: *** [package/pkg-generic.mk:283: /builds/buildroot.org/buildroot/output/build/uboot-2024.01/.stamp_built] Error 2 > make: *** [Makefile:82: _all] Error 2 > > BR2_TARGET_UBOOT_NEEDS_PYLIBFDT is added to the avenger96_defconfig in order to resolve the issue > > Signed-off-by: Marleen Vos Applied to master, thanks. While you're looking at this defconfig, could look into adding hashes for the custom versions it uses? See for example: 5efa5e9023 configs/armadeus_apf27: add hashes for Linux/U-Boot Regards, Yann E. MORIN. > --- > configs/avenger96_defconfig | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/configs/avenger96_defconfig b/configs/avenger96_defconfig > index f73b654dc8..64cfb3c2b0 100644 > --- a/configs/avenger96_defconfig > +++ b/configs/avenger96_defconfig > @@ -47,6 +47,7 @@ BR2_TARGET_UBOOT_FORMAT_DTB=y > BR2_TARGET_UBOOT_FORMAT_CUSTOM=y > BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" > BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=stm32mp15xx-dhcor-avenger96" > +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y > > # Additional tools > BR2_PACKAGE_HOST_GENIMAGE=y > -- > 2.34.1 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From james.hilliard1 at gmail.com Tue May 14 16:00:51 2024 From: james.hilliard1 at gmail.com (James Hilliard) Date: Tue, 14 May 2024 10:00:51 -0600 Subject: [Buildroot] [PATCH v4 1/1] package/cloudflared: new package Message-ID: <20240514160051.1540342-1-james.hilliard1@gmail.com> Signed-off-by: James Hilliard --- Changes v3 -> v4: - update to version 2024.4.1 Changes v2 -> v3: - fix version Changes v1 -> v2: - fix Config.in syntax/section --- package/Config.in | 1 + package/cloudflared/Config.in | 7 +++++++ package/cloudflared/cloudflared.hash | 3 +++ package/cloudflared/cloudflared.mk | 14 ++++++++++++++ 4 files changed, 25 insertions(+) create mode 100644 package/cloudflared/Config.in create mode 100644 package/cloudflared/cloudflared.hash create mode 100644 package/cloudflared/cloudflared.mk diff --git a/package/Config.in b/package/Config.in index 1b6a5b0dab..db9230bf85 100644 --- a/package/Config.in +++ b/package/Config.in @@ -2386,6 +2386,7 @@ endif source "package/cfm/Config.in" source "package/chrony/Config.in" source "package/civetweb/Config.in" + source "package/cloudflared/Config.in" source "package/connman/Config.in" source "package/connman-gtk/Config.in" source "package/conntrack-tools/Config.in" diff --git a/package/cloudflared/Config.in b/package/cloudflared/Config.in new file mode 100644 index 0000000000..3a1a715dc7 --- /dev/null +++ b/package/cloudflared/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_CLOUDFLARED + bool "cloudflared" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + help + Cloudflare Tunnel client (formerly Argo Tunnel). + + https://github.com/cloudflare/cloudflared diff --git a/package/cloudflared/cloudflared.hash b/package/cloudflared/cloudflared.hash new file mode 100644 index 0000000000..adaf107a22 --- /dev/null +++ b/package/cloudflared/cloudflared.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 11bed2bd793cc03775aa6270797ed328434bc982e09fd3597e267590f28d2436 cloudflared-2024.4.1-go2.tar.gz +sha256 58d1e17ffe5109a7ae296caafcadfdbe6a7d176f0bc4ab01e12a689b0499d8bd LICENSE diff --git a/package/cloudflared/cloudflared.mk b/package/cloudflared/cloudflared.mk new file mode 100644 index 0000000000..819cfd5e64 --- /dev/null +++ b/package/cloudflared/cloudflared.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# cloudflared +# +################################################################################ + +CLOUDFLARED_VERSION = 2024.4.1 +CLOUDFLARED_SITE = $(call github,cloudflare,cloudflared,$(CLOUDFLARED_VERSION)) +CLOUDFLARED_LICENSE = Apache-2.0 +CLOUDFLARED_LICENSE_FILES = LICENSE +CLOUDFLARED_BUILD_TARGETS = cmd/cloudflared +CLOUDFLARED_LDFLAGS = -X main.Version=$(CLOUDFLARED_VERSION) + +$(eval $(golang-package)) -- 2.34.1 From wbx at openadk.org Tue May 14 16:15:11 2024 From: wbx at openadk.org (Waldemar Brodkorb) Date: Tue, 14 May 2024 18:15:11 +0200 Subject: [Buildroot] [PATCHv2 1/3] arch: add support for loongarch64 Message-ID: Loongarch is a RISC microprocessor from Loongarch Technologies. - at the moment we only support lp64d ABI - binutils 2.40 is too old so disable it for loongarch64 - gcc 12.x is too old to compile a Linux kernel, so disable it for loongarch64 - gdb versions work fine Signed-off-by: Waldemar Brodkorb --- v1->v2: - added me to DEVELOPERS file requested by Thomas P. - check older binutils/gcc/gdb for support requested by Thomas P. --- DEVELOPERS | 1 + arch/Config.in | 12 ++++++++++++ arch/Config.in.loongarch64 | 14 ++++++++++++++ package/binutils/Config.in.host | 1 + package/gcc/Config.in.host | 2 ++ package/glibc/Config.in | 1 + package/musl/Config.in | 1 + 7 files changed, 32 insertions(+) create mode 100644 arch/Config.in.loongarch64 diff --git a/DEVELOPERS b/DEVELOPERS index a9deddb343..9e299e7e66 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -3203,6 +3203,7 @@ N: Wade Berrier F: package/ngrep/ N: Waldemar Brodkorb +F: arch/Config.in.loongarch64 F: board/qemu/riscv32-virt/ F: configs/qemu_riscv32_nommu_virt_defconfig F: package/asterisk/ diff --git a/arch/Config.in b/arch/Config.in index f39c33ef7f..070a4aca3a 100644 --- a/arch/Config.in +++ b/arch/Config.in @@ -77,6 +77,14 @@ config BR2_i386 Intel i386 architecture compatible microprocessor http://en.wikipedia.org/wiki/I386 +config BR2_loongarch64 + bool "loongarch64" + select BR2_ARCH_IS_64 + select BR2_USE_MMU + help + Loongarch is a RISC microprocessor from Loongarch Technologies. + https://en.wikipedia.org/wiki/Loongson + config BR2_m68k bool "m68k" # MMU support is set by the subarchitecture file, arch/Config.in.m68k @@ -374,6 +382,10 @@ if BR2_arm || BR2_armeb || BR2_aarch64 || BR2_aarch64_be source "arch/Config.in.arm" endif +if BR2_loongarch64 +source "arch/Config.in.loongarch64" +endif + if BR2_m68k source "arch/Config.in.m68k" endif diff --git a/arch/Config.in.loongarch64 b/arch/Config.in.loongarch64 new file mode 100644 index 0000000000..2b5bac095d --- /dev/null +++ b/arch/Config.in.loongarch64 @@ -0,0 +1,14 @@ +config BR2_ARCH + default "loongarch64" + +config BR2_NORMALIZED_ARCH + default "loongarch" + +config BR2_ENDIAN + default "LITTLE" + +config BR2_READELF_ARCH_NAME + default "LoongArch" + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/package/binutils/Config.in.host b/package/binutils/Config.in.host index cb65f5f5e4..89e36d6047 100644 --- a/package/binutils/Config.in.host +++ b/package/binutils/Config.in.host @@ -14,6 +14,7 @@ choice config BR2_BINUTILS_VERSION_2_40_X bool "binutils 2.40" + depends on !BR2_loongarch64 config BR2_BINUTILS_VERSION_2_41_X bool "binutils 2.41" diff --git a/package/gcc/Config.in.host b/package/gcc/Config.in.host index 2324561a3e..a0377cc0a3 100644 --- a/package/gcc/Config.in.host +++ b/package/gcc/Config.in.host @@ -30,6 +30,8 @@ config BR2_GCC_VERSION_12_X depends on !BR2_POWERPC_CPU_HAS_SPE # ARC HS48 rel 31 only supported by gcc arc fork. depends on !BR2_archs4x_rel31 + # too old to compile Linux Kernel + depends on !BR2_loongarch64 select BR2_TOOLCHAIN_GCC_AT_LEAST_12 config BR2_GCC_VERSION_13_X diff --git a/package/glibc/Config.in b/package/glibc/Config.in index 81c64083f4..5385e2a855 100644 --- a/package/glibc/Config.in +++ b/package/glibc/Config.in @@ -5,6 +5,7 @@ config BR2_PACKAGE_GLIBC_ARCH_SUPPORTS default y if BR2_aarch64 default y if BR2_aarch64_be default y if BR2_i386 + default y if BR2_loongarch64 default y if BR2_m68k_m68k default y if BR2_mips default y if BR2_mipsel diff --git a/package/musl/Config.in b/package/musl/Config.in index a6e2af054c..70475326f5 100644 --- a/package/musl/Config.in +++ b/package/musl/Config.in @@ -5,6 +5,7 @@ config BR2_PACKAGE_MUSL_ARCH_SUPPORTS default y if BR2_arm default y if BR2_armeb default y if BR2_i386 + default y if BR2_loongarch64 default y if BR2_m68k_m68k default y if BR2_microblaze default y if BR2_mips -- 2.30.2 From wbx at openadk.org Tue May 14 16:16:19 2024 From: wbx at openadk.org (Waldemar Brodkorb) Date: Tue, 14 May 2024 18:16:19 +0200 Subject: [Buildroot] [PATCHv2 2/3] linux: add support for vmlinux.efi Message-ID: Signed-off-by: Waldemar Brodkorb --- v1->v2: - no changes --- linux/Config.in | 4 ++++ linux/linux.mk | 2 ++ 2 files changed, 6 insertions(+) diff --git a/linux/Config.in b/linux/Config.in index d3d4c42910..8aab953ddf 100644 --- a/linux/Config.in +++ b/linux/Config.in @@ -285,6 +285,10 @@ config BR2_LINUX_KERNEL_VMLINUX_BIN bool "vmlinux.bin" depends on BR2_mips || BR2_mipsel || BR2_sh +config BR2_LINUX_KERNEL_VMLINUX_EFI + bool "vmlinux.efi" + depends on BR2_loongarch64 + config BR2_LINUX_KERNEL_VMLINUX bool "vmlinux" diff --git a/linux/linux.mk b/linux/linux.mk index 16d9f19470..3e0e728656 100644 --- a/linux/linux.mk +++ b/linux/linux.mk @@ -231,6 +231,8 @@ else ifeq ($(BR2_LINUX_KERNEL_IMAGEGZ),y) LINUX_IMAGE_NAME = Image.gz else ifeq ($(BR2_LINUX_KERNEL_LINUX_BIN),y) LINUX_IMAGE_NAME = linux.bin +else ifeq ($(BR2_LINUX_KERNEL_VMLINUX_EFI),y) +LINUX_IMAGE_NAME = vmlinux.efi else ifeq ($(BR2_LINUX_KERNEL_VMLINUX_BIN),y) LINUX_IMAGE_NAME = vmlinux.bin else ifeq ($(BR2_LINUX_KERNEL_VMLINUX),y) -- 2.30.2 From wbx at openadk.org Tue May 14 16:18:36 2024 From: wbx at openadk.org (Waldemar Brodkorb) Date: Tue, 14 May 2024 18:18:36 +0200 Subject: [Buildroot] [PATCHv2 3/3] configs/qemu_loongarch64: new defconfig Message-ID: Signed-off-by: Waldemar Brodkorb --- v1->v2: - add me to DEVELOPERS file as requested by Thomas P. - add the missing readme.txt file requested by Thomas P. --- DEVELOPERS | 2 ++ .../patches/linux-headers/linux-headers.hash | 2 ++ .../qemu/loongarch64/patches/linux/linux.hash | 2 ++ board/qemu/loongarch64/readme.txt | 11 ++++++++ configs/qemu_loongarch64_defconfig | 27 +++++++++++++++++++ 5 files changed, 44 insertions(+) create mode 100644 board/qemu/loongarch64/patches/linux-headers/linux-headers.hash create mode 100644 board/qemu/loongarch64/patches/linux/linux.hash create mode 100644 board/qemu/loongarch64/readme.txt create mode 100644 configs/qemu_loongarch64_defconfig diff --git a/DEVELOPERS b/DEVELOPERS index 9e299e7e66..fa933b8742 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -3204,7 +3204,9 @@ F: package/ngrep/ N: Waldemar Brodkorb F: arch/Config.in.loongarch64 +F: board/qemu/loongarch64/ F: board/qemu/riscv32-virt/ +F: configs/qemu_loongarch64_defconfig F: configs/qemu_riscv32_nommu_virt_defconfig F: package/asterisk/ F: package/libjwt/ diff --git a/board/qemu/loongarch64/patches/linux-headers/linux-headers.hash b/board/qemu/loongarch64/patches/linux-headers/linux-headers.hash new file mode 100644 index 0000000000..f3d9c1186a --- /dev/null +++ b/board/qemu/loongarch64/patches/linux-headers/linux-headers.hash @@ -0,0 +1,2 @@ +# From https://cdn.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc +sha256 b66a5b863b0f8669448b74ca83bd641a856f164b29956e539bbcb5fdeeab9cc6 linux-6.6.30.tar.xz diff --git a/board/qemu/loongarch64/patches/linux/linux.hash b/board/qemu/loongarch64/patches/linux/linux.hash new file mode 100644 index 0000000000..f3d9c1186a --- /dev/null +++ b/board/qemu/loongarch64/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# From https://cdn.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc +sha256 b66a5b863b0f8669448b74ca83bd641a856f164b29956e539bbcb5fdeeab9cc6 linux-6.6.30.tar.xz diff --git a/board/qemu/loongarch64/readme.txt b/board/qemu/loongarch64/readme.txt new file mode 100644 index 0000000000..3d49ba57f4 --- /dev/null +++ b/board/qemu/loongarch64/readme.txt @@ -0,0 +1,11 @@ +Qemu does not bundle the BIOS file QEMU_EFI.fd. You need to build it: +https://github.com/tianocore/edk2-platforms/tree/master/Platform/Loongson/LoongArchQemuPkg#readme + +For a binary you can download it from here: +https://debug.openadk.org/QEMU_EFI.fd + +Run the emulation with: + + qemu-system-loongarch64 -M virt -bios QEMU_EFI.fd -append "console=ttyS0,115200" -kernel output/images/vmlinux.efi -nographic # qemu_loongarch64_defconfig + +The login prompt will appear in the terminal that started Qemu. diff --git a/configs/qemu_loongarch64_defconfig b/configs/qemu_loongarch64_defconfig new file mode 100644 index 0000000000..025e9907e2 --- /dev/null +++ b/configs/qemu_loongarch64_defconfig @@ -0,0 +1,27 @@ +# Architecture +BR2_loongarch64=y + +# Filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.30" +BR2_LINUX_KERNEL_DEFCONFIG="loongson3" +BR2_LINUX_KERNEL_VMLINUX_EFI=y + +# Disable network scripts +# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y -- 2.30.2 From kadambini.nema at gmail.com Tue May 14 16:52:51 2024 From: kadambini.nema at gmail.com (Kadambini Nema) Date: Tue, 14 May 2024 09:52:51 -0700 Subject: [Buildroot] [PATCH 1/1] package/ustreamer: bump version to 6.11 Message-ID: <20240514165251.511634-1-kadambini.nema@gmail.com> changelog - https://github.com/pikvm/ustreamer/compare/v5.51...v6.11 Signed-off-by: Kadambini Nema --- package/ustreamer/ustreamer.hash | 2 +- package/ustreamer/ustreamer.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/ustreamer/ustreamer.hash b/package/ustreamer/ustreamer.hash index d3f603e0c8..7c70f0195f 100644 --- a/package/ustreamer/ustreamer.hash +++ b/package/ustreamer/ustreamer.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 88f107e02a0b5c6493d55ed1bce0c85f66ce83d2bc0271ff6319ad593c6584bc ustreamer-5.51.tar.gz +sha256 80ab01eeaa81c7d8e9c7f62304287d176fd729cb12ca5adb2e181b5a3da79216 ustreamer-6.11.tar.gz sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE diff --git a/package/ustreamer/ustreamer.mk b/package/ustreamer/ustreamer.mk index dc8577b5e9..5b73e387d6 100644 --- a/package/ustreamer/ustreamer.mk +++ b/package/ustreamer/ustreamer.mk @@ -4,7 +4,7 @@ # ################################################################################ -USTREAMER_VERSION = 5.51 +USTREAMER_VERSION = 6.11 USTREAMER_SITE = $(call github,pikvm,ustreamer,v$(USTREAMER_VERSION)) USTREAMER_LICENSE = GPL-3.0+ USTREAMER_LICENSE_FILES = LICENSE -- 2.25.1 From fontaine.fabrice at gmail.com Tue May 14 17:20:32 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Tue, 14 May 2024 19:20:32 +0200 Subject: [Buildroot] [PATCH 1/1] package/cjson: security bump to version 1.7.18 Message-ID: <20240514172032.3581-1-fontaine.fabrice@gmail.com> Add NULL check to cJSON_SetValuestring() (CVE-2024-31755) https://github.com/DaveGamble/cJSON/releases/tag/v1.7.18 Signed-off-by: Fabrice Fontaine --- package/cjson/cjson.hash | 2 +- package/cjson/cjson.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/cjson/cjson.hash b/package/cjson/cjson.hash index 305dc0d7b8..e07ae0f7bf 100644 --- a/package/cjson/cjson.hash +++ b/package/cjson/cjson.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 c91d1eeb7175c50d49f6ba2a25e69b46bd05cffb798382c19bfb202e467ec51c cjson-1.7.17.tar.gz +sha256 3aa806844a03442c00769b83e99970be70fbef03735ff898f4811dd03b9f5ee5 cjson-1.7.18.tar.gz sha256 a36dda207c36db5818729c54e7ad4e8b0c6fba847491ba64f372c1a2037b6d5c LICENSE diff --git a/package/cjson/cjson.mk b/package/cjson/cjson.mk index 4719a3dc9b..35304ec618 100644 --- a/package/cjson/cjson.mk +++ b/package/cjson/cjson.mk @@ -4,7 +4,7 @@ # ################################################################################ -CJSON_VERSION = 1.7.17 +CJSON_VERSION = 1.7.18 CJSON_SITE = $(call github,DaveGamble,cjson,v$(CJSON_VERSION)) CJSON_INSTALL_STAGING = YES CJSON_LICENSE = MIT -- 2.43.0 From fontaine.fabrice at gmail.com Tue May 14 17:21:42 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Tue, 14 May 2024 19:21:42 +0200 Subject: [Buildroot] [PATCH 1/1] package/libnpth: fix gnupg2 build with uclibc Message-ID: <20240514172142.4449-1-fontaine.fabrice@gmail.com> Fix the following build failure of gnupg2 raised since bump to version 1.7 in commit 3ef4d24192b20bd1eb5e34c9fa2a6aa5bde91f91 and https://git.gnupg.org/cgi-bin/gitweb.cgi?p=npth.git;a=commitdiff;h=02ce6b2d27f91ed6285e4e92d99c21bcc7823c9b: /home/autobuild/autobuild/instance-2/output-1/host/lib/gcc/armeb-buildroot-linux-uclibcgnueabi/13.2.0/../../../../armeb-buildroot-linux-uclibcgnueabi/bin/ld: /home/autobuild/autobuild/instance-2/output-1/host/bin/../armeb-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libnpth.so: undefined reference to `busy_wait_for' Fixes: 3ef4d24192b20bd1eb5e34c9fa2a6aa5bde91f91 - http://autobuild.buildroot.org/results/9a27ffde79598a39b4fd55c716978d32d0beb924 Signed-off-by: Fabrice Fontaine --- ..._rwlock_timedrdlock-is-not-supported.patch | 51 +++++++++++++++++++ .../libnpth/0003-Fix-previous-commit.patch | 39 ++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 package/libnpth/0002-Return-a-run-time-error-if-npth_rwlock_timedrdlock-is-not-supported.patch create mode 100644 package/libnpth/0003-Fix-previous-commit.patch diff --git a/package/libnpth/0002-Return-a-run-time-error-if-npth_rwlock_timedrdlock-is-not-supported.patch b/package/libnpth/0002-Return-a-run-time-error-if-npth_rwlock_timedrdlock-is-not-supported.patch new file mode 100644 index 0000000000..0d9b38e4ce --- /dev/null +++ b/package/libnpth/0002-Return-a-run-time-error-if-npth_rwlock_timedrdlock-is-not-supported.patch @@ -0,0 +1,51 @@ +From 01f03a91c9bd63910995aeef412beb3ca6dc9a67 Mon Sep 17 00:00:00 2001 +From: NIIBE Yutaka +Date: Tue, 7 May 2024 13:45:47 +0900 +Subject: [PATCH] Return a run-time error if npth_rwlock_timedrdlock is not + supported. + +* src/npth.c (npth_rwlock_timedrdlock): Return ENOSYS if not +supported. +(npth_rwlock_timedwrlock): Use HAVE_PTHREAD_RWLOCK_TRYWRLOCK. + +-- + +GnuPG-bug-id: 7109 +Fixed-commit: 363c370bd35dd0bb4e5636b2d4f06ea88c658794 +Signed-off-by: NIIBE Yutaka + +Upstream: https://git.gnupg.org/cgi-bin/gitweb.cgi?p=npth.git;a=commit;h=01f03a91c9bd63910995aeef412beb3ca6dc9a67 +Signed-off-by: Fabrice Fontaine +--- + src/npth.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/npth.c b/src/npth.c +index c0ff8da..f02540c 100644 +--- a/src/npth.c ++++ b/src/npth.c +@@ -488,9 +488,11 @@ npth_rwlock_timedrdlock (npth_rwlock_t *rwlock, const struct timespec *abstime) + ENTER(); + #if HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK + err = pthread_rwlock_timedrdlock (rwlock, abstime); +-#else ++#elif HAVE_PTHREAD_RWLOCK_TRYRDLOCK + err = busy_wait_for ((trylock_func_t) pthread_rwlock_tryrdlock, rwlock, + abstime); ++#else ++ err = ENOSYS; + #endif + LEAVE(); + return err; +@@ -533,7 +535,7 @@ npth_rwlock_timedwrlock (npth_rwlock_t *rwlock, const struct timespec *abstime) + ENTER(); + #if HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK + err = pthread_rwlock_timedwrlock (rwlock, abstime); +-#elif HAVE_PTHREAD_RWLOCK_TRYRDLOCK ++#elif HAVE_PTHREAD_RWLOCK_TRYWRLOCK + err = busy_wait_for ((trylock_func_t) pthread_rwlock_trywrlock, rwlock, + abstime); + #else +-- +2.30.2 + diff --git a/package/libnpth/0003-Fix-previous-commit.patch b/package/libnpth/0003-Fix-previous-commit.patch new file mode 100644 index 0000000000..5f3ce06bf6 --- /dev/null +++ b/package/libnpth/0003-Fix-previous-commit.patch @@ -0,0 +1,39 @@ +From 75c68399ef3bbb5d024f2a60474a7214fa479016 Mon Sep 17 00:00:00 2001 +From: NIIBE Yutaka +Date: Mon, 13 May 2024 11:13:23 +0900 +Subject: [PATCH] Fix previous commit. + +Signed-off-by: NIIBE Yutaka + +Upstream: https://git.gnupg.org/cgi-bin/gitweb.cgi?p=npth.git;a=commit;h=75c68399ef3bbb5d024f2a60474a7214fa479016 +Signed-off-by: Fabrice Fontaine +--- + src/npth.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/src/npth.c b/src/npth.c +index f02540c..8dced17 100644 +--- a/src/npth.c ++++ b/src/npth.c +@@ -178,6 +178,18 @@ static int initialized_or_any_threads; + typedef int (*trylock_func_t) (void *); + + #ifndef HAVE_PTHREAD_MUTEX_TIMEDLOCK ++#define REQUIRE_THE_BUSY_WAIT_FOR_IMPLEMENTATION 1 ++#endif ++ ++#if !HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK && HAVE_PTHREAD_RWLOCK_TRYRDLOCK ++#define REQUIRE_THE_BUSY_WAIT_FOR_IMPLEMENTATION 1 ++#endif ++ ++#if !HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK && HAVE_PTHREAD_RWLOCK_TRYWRLOCK ++#define REQUIRE_THE_BUSY_WAIT_FOR_IMPLEMENTATION 1 ++#endif ++ ++#if REQUIRE_THE_BUSY_WAIT_FOR_IMPLEMENTATION + static int + busy_wait_for (trylock_func_t trylock, void *lock, + const struct timespec *abstime) +-- +2.30.2 + -- 2.43.0 From fontaine.fabrice at gmail.com Tue May 14 17:24:38 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Tue, 14 May 2024 19:24:38 +0200 Subject: [Buildroot] [PATCH 1/1] package/libedit: set LIBEDIT_CPE_ID_VALID Message-ID: <20240514172438.68998-1-fontaine.fabrice@gmail.com> cpe:2.3:a:libedit_project:libedit is a valid CPE identifier for this package: https://nvd.nist.gov/products/cpe/detail/42ACF08B-DD62-48D3-8568-32DAFD116956 Signed-off-by: Fabrice Fontaine --- package/libedit/libedit.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/package/libedit/libedit.mk b/package/libedit/libedit.mk index ea7f98fdbd..98e29a9b1a 100644 --- a/package/libedit/libedit.mk +++ b/package/libedit/libedit.mk @@ -10,6 +10,7 @@ LIBEDIT_INSTALL_STAGING = YES LIBEDIT_DEPENDENCIES = ncurses LIBEDIT_LICENSE = BSD-3-Clause LIBEDIT_LICENSE_FILES = COPYING +LIBEDIT_CPE_ID_VALID = YES # We're patching configure.ac LIBEDIT_AUTORECONF = YES -- 2.43.0 From ju.o at free.fr Tue May 14 17:26:54 2024 From: ju.o at free.fr (Julien Olivain) Date: Tue, 14 May 2024 19:26:54 +0200 Subject: [Buildroot] [PATCH 1/1] package/python-ml-dtypes: skip dependency check In-Reply-To: <20240514154250.1453970-1-james.hilliard1@gmail.com> References: <20240514154250.1453970-1-james.hilliard1@gmail.com> Message-ID: <4e9d5bc99a30a885dddb8aba6145f56d@free.fr> Hi James, Thanks for the patch! I successfully tested it on branch master at commit 9764258 with command: support/testing/run-tests \ -d dl -o output_folder \ tests.package.test_python_ml_dtypes On 14/05/2024 17:42, James Hilliard wrote: > This package pins overly strict numpy dependency versions apparently > for compatibility reasons that don't appear relevant to buildroot. > > This package also appears to pin an overly strict setuptools version > for unclear reasons. > > See: > https://github.com/jax-ml/ml_dtypes/blob/v0.3.2/pyproject.toml#L51-L55 > > To fix this lets just set the --skip-dependency-check build option and > ignore the build dependency version mismatches since they don't appear > to cause any build issues. > > This error was introduced when we migrated setuptools to pep517 in > 8937db8dd595e0988751e5dbb568e870b07b39cc. > > Signed-off-by: James Hilliard Tested-by: Julien Olivain > --- > package/python-ml-dtypes/python-ml-dtypes.mk | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/package/python-ml-dtypes/python-ml-dtypes.mk > b/package/python-ml-dtypes/python-ml-dtypes.mk > index 676137ecf1..8097265078 100644 > --- a/package/python-ml-dtypes/python-ml-dtypes.mk > +++ b/package/python-ml-dtypes/python-ml-dtypes.mk > @@ -10,6 +10,7 @@ PYTHON_ML_DTYPES_SITE = > https://files.pythonhosted.org/packages/39/7d/8d85fcba86 > PYTHON_ML_DTYPES_LICENSE = Apache-2.0 > PYTHON_ML_DTYPES_LICENSE_FILES = LICENSE > PYTHON_ML_DTYPES_SETUP_TYPE = setuptools > +PYTHON_ML_DTYPES_BUILD_OPTS = --skip-dependency-check > > PYTHON_ML_DTYPES_DEPENDENCIES = \ > host-python-numpy \ > -- > 2.34.1 Best regards, Julien. From fontaine.fabrice at gmail.com Tue May 14 17:39:19 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Tue, 14 May 2024 19:39:19 +0200 Subject: [Buildroot] [PATCH 1/1] package/gnuplot: fix readline dependency Message-ID: <20240514173919.318237-1-fontaine.fabrice@gmail.com> --without-readline is interpreted as --with-readline=builtin since bump to version 5.4.0 in commit 263da09323e83bb3d6552b70b739523b66459df8 and https://github.com/gnuplot/gnuplot/commit/b492ea63bd604081ffb9dee3843e295b0b29df85 so add a mandatory dependency to readline or libedit to gnuplot As a side-effect, this will avoid the following build failure with builtin readline raised since bump to version 6.0.0 in commit 5f11ce4aeaba99917778c384b236d267e78a7b29: /home/autobuild/autobuild/instance-14/output-1/host/lib/gcc/arm-buildroot-linux-gnueabi/13.2.0/../../../../arm-buildroot-linux-gnueabi/bin/ld: history.o: in function `read_history': history.c:(.text+0xa8): undefined reference to `gp_read_history' Fixes: 5f11ce4aeaba99917778c384b236d267e78a7b29 - http://autobuild.buildroot.org/results/5e45dd8f9071694110c8481f222b9b07b6a97ef3 Signed-off-by: Fabrice Fontaine --- package/gnuplot/Config.in | 1 + package/gnuplot/gnuplot.mk | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/package/gnuplot/Config.in b/package/gnuplot/Config.in index 603c194fe5..8068a7283b 100644 --- a/package/gnuplot/Config.in +++ b/package/gnuplot/Config.in @@ -1,5 +1,6 @@ config BR2_PACKAGE_GNUPLOT bool "gnuplot" + select BR2_PACKAGE_READLINE if !BR2_PACKAGE_LIBEDIT help A portable command-line driven graphing utility. diff --git a/package/gnuplot/gnuplot.mk b/package/gnuplot/gnuplot.mk index 26b2daaf24..e34dd2a60b 100644 --- a/package/gnuplot/gnuplot.mk +++ b/package/gnuplot/gnuplot.mk @@ -41,8 +41,9 @@ endif ifeq ($(BR2_PACKAGE_READLINE),y) GNUPLOT_CONF_OPTS += --with-readline=gnu GNUPLOT_DEPENDENCIES += readline -else -GNUPLOT_CONF_OPTS += --without-readline +else ifeq ($(BR2_PACKAGE_LIBEDIT),y) +GNUPLOT_CONF_OPTS += --with-readline=bsd +GNUPLOT_DEPENDENCIES += libedit endif # Remove Javascript scripts, lua scripts, PostScript files -- 2.43.0 From peter at korsgaard.com Tue May 14 19:50:19 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Tue, 14 May 2024 21:50:19 +0200 Subject: [Buildroot] [PATCH 2/2] configs/openblocks_a6_defconfig: add hashes for Linux / headers In-Reply-To: <20240514195019.4113851-1-peter@korsgaard.com> References: <20240514195019.4113851-1-peter@korsgaard.com> Message-ID: <20240514195019.4113851-2-peter@korsgaard.com> And enable BR2_DOWNLOAD_FORCE_CHECK_HASHES. Generated by utils/add-custom-hashes, with the (redundant) linux-headers.hash replaced by a symlink. Signed-off-by: Peter Korsgaard --- board/openblocks/a6/patches/linux-headers/linux-headers.hash | 1 + board/openblocks/a6/patches/linux/linux.hash | 2 ++ configs/openblocks_a6_defconfig | 2 ++ 3 files changed, 5 insertions(+) create mode 120000 board/openblocks/a6/patches/linux-headers/linux-headers.hash create mode 100644 board/openblocks/a6/patches/linux/linux.hash diff --git a/board/openblocks/a6/patches/linux-headers/linux-headers.hash b/board/openblocks/a6/patches/linux-headers/linux-headers.hash new file mode 120000 index 0000000000..5808d92afe --- /dev/null +++ b/board/openblocks/a6/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/openblocks/a6/patches/linux/linux.hash b/board/openblocks/a6/patches/linux/linux.hash new file mode 100644 index 0000000000..b207306a2b --- /dev/null +++ b/board/openblocks/a6/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 0820fdb7971c6974338081c11fbf2dc869870501e7bdcac4d0ed58ba1f57b61c linux-4.14.336.tar.xz diff --git a/configs/openblocks_a6_defconfig b/configs/openblocks_a6_defconfig index 69b75f5043..6a816597ac 100644 --- a/configs/openblocks_a6_defconfig +++ b/configs/openblocks_a6_defconfig @@ -3,6 +3,8 @@ BR2_arm=y BR2_arm926t=y # system +BR2_GLOBAL_PATCH_DIR="board/openblocks/a6/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y BR2_TARGET_GENERIC_HOSTNAME="openblocks-a6" BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" BR2_SYSTEM_DHCP="eth0" -- 2.39.2 From peter at korsgaard.com Tue May 14 19:50:18 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Tue, 14 May 2024 21:50:18 +0200 Subject: [Buildroot] [PATCH 1/2] configs/openblocks_a6_defconfig: bump Linux to fix binutils 2.41 build Message-ID: <20240514195019.4113851-1-peter@korsgaard.com> Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6813125272 The Linux kernel fails to build since commit e88225ed882 (package/binutils: make 2.41 the default version): arch/arm/mm/proc-feroceon.S: Assembler messages: arch/arm/mm/proc-feroceon.S:587: Error: junk at end of line, first unrecognized character is `#' make[3]: *** [scripts/Makefile.build:430: arch/arm/mm/proc-feroceon.o] Error 1 make[3]: *** Waiting for unfinished jobs.... Fix the build by bumping the kernel to 4.14.336, which includes commit 3ab03df64f77 (ARM: 8933/1: replace Sun/Solaris style flag on section directive): https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-4.14.y&id=3ab03df64f7754728a2257c47775a70a88428331 Signed-off-by: Peter Korsgaard --- configs/openblocks_a6_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/openblocks_a6_defconfig b/configs/openblocks_a6_defconfig index 2238c0940c..69b75f5043 100644 --- a/configs/openblocks_a6_defconfig +++ b/configs/openblocks_a6_defconfig @@ -17,7 +17,7 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y # kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.253" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.336" BR2_LINUX_KERNEL_DEFCONFIG="mvebu_v5" BR2_LINUX_KERNEL_APPENDED_UIMAGE=y BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" -- 2.39.2 From yann.morin.1998 at free.fr Tue May 14 20:21:19 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Tue, 14 May 2024 22:21:19 +0200 Subject: [Buildroot] [PATCH] package/python-*: fix hashes for cargo-vendored python packages Message-ID: <20240514202119.3685539-1-yann.morin.1998@free.fr> The recent commits that touched vendoring and hashes, totally missed the non-native vendored packages, like python packages that contain rust code, and are thus cargo-vendored. The issue in this case, is that we need to download the archive as it is hosted and known to PyPI, but store it locally with our vendoring suffix. This is inherently conflicting. Fortunately, the PyPI webserver will ignore the query part of the URL, so we can request the archive known to PyPI, and append an arbitrary query, that is automatically constructed with the actual filename we will use to store it. Basically, an URL for a python package like: https://pypi.org.pkg/pkg-hash/pkg-vesion.tar.gz can be turned into: https://pypi.org.pkg/pkg-hash/pkg-vesion.tar.gz?buildroot-path=filename/python-pkg-version-cargo2.tar.gz This way, we can use out default _SOURCE value, and construct a _SITE that contains the actual package URL, with an arbtrary query. NOTE: this is a stop-gap measure, to quickly fix those packages, while waiting for a generic solution that works in all cases, not just with PyPI. NOTE-2: of course, if PyPI changes its policy, and no longer ignored the query part, this is going to break again. Hence the need for a generic solution... Reported-by: Thomas Petazzoni Signed-off-by: Yann E. MORIN --- package/python-bcrypt/python-bcrypt.hash | 2 +- package/python-bcrypt/python-bcrypt.mk | 5 +++-- package/python-cryptography/python-cryptography.hash | 2 +- package/python-cryptography/python-cryptography.mk | 5 +++-- package/python-maturin/python-maturin.hash | 2 +- package/python-maturin/python-maturin.mk | 5 +++-- package/python-orjson/python-orjson.hash | 2 +- package/python-orjson/python-orjson.mk | 5 +++-- package/python-pydantic-core/python-pydantic-core.hash | 2 +- package/python-pydantic-core/python-pydantic-core.mk | 5 +++-- package/python-rpds-py/python-rpds-py.hash | 2 +- package/python-rpds-py/python-rpds-py.mk | 5 +++-- package/python-rtoml/python-rtoml.hash | 2 +- package/python-rtoml/python-rtoml.mk | 5 +++-- 14 files changed, 28 insertions(+), 21 deletions(-) diff --git a/package/python-bcrypt/python-bcrypt.hash b/package/python-bcrypt/python-bcrypt.hash index e148078699..8e660a158b 100644 --- a/package/python-bcrypt/python-bcrypt.hash +++ b/package/python-bcrypt/python-bcrypt.hash @@ -1,4 +1,4 @@ # Locally calculated after vendoring -sha256 d64daee0af1afe137718674e67a49b8bb791842aab265b588a6d68d44a449c70 bcrypt-4.0.1.tar.gz +sha256 f0b2c7d5d79a6537e3d291b07d2be70dd122a15ea871854d4ce95b447c6873a5 python-bcrypt-4.0.1-cargo2.tar.gz # Locally computed sha256 checksums sha256 8173d5c29b4f956d532781d2b86e4e30f83e6b7878dce18c919451d6ba707c90 LICENSE diff --git a/package/python-bcrypt/python-bcrypt.mk b/package/python-bcrypt/python-bcrypt.mk index cbd6855d9c..f3137401d7 100644 --- a/package/python-bcrypt/python-bcrypt.mk +++ b/package/python-bcrypt/python-bcrypt.mk @@ -5,8 +5,9 @@ ################################################################################ PYTHON_BCRYPT_VERSION = 4.0.1 -PYTHON_BCRYPT_SOURCE = bcrypt-$(PYTHON_BCRYPT_VERSION).tar.gz -PYTHON_BCRYPT_SITE = https://files.pythonhosted.org/packages/8c/ae/3af7d006aacf513975fd1948a6b4d6f8b4a307f8a244e1a3d3774b297aad +PYTHON_BCRYPT_SOURCE_PYPI = bcrypt-$(PYTHON_BCRYPT_VERSION).tar.gz +PYTHON_BCRYPT_SITE_PYPI = https://files.pythonhosted.org/packages/8c/ae/3af7d006aacf513975fd1948a6b4d6f8b4a307f8a244e1a3d3774b297aad +PYTHON_BCRYPT_SITE = $(PYTHON_BCRYPT_SITE_PYPI)/$(PYTHON_BCRYPT_SOURCE_PYPI)?buildroot-path=filename PYTHON_BCRYPT_SETUP_TYPE = setuptools PYTHON_BCRYPT_LICENSE = Apache-2.0 PYTHON_BCRYPT_LICENSE_FILES = LICENSE diff --git a/package/python-cryptography/python-cryptography.hash b/package/python-cryptography/python-cryptography.hash index e083014750..5fbf69a208 100644 --- a/package/python-cryptography/python-cryptography.hash +++ b/package/python-cryptography/python-cryptography.hash @@ -1,5 +1,5 @@ # Locally calculated after vendoring -sha256 405c9a6271e1a088ea0b432bc2094e2e8baadb2241e192ce9c73a7cc9793b127 cryptography-39.0.2.tar.gz +sha256 b55c6c011ba4bb803de0b557f40f1765bab9f63240e93516daaf75c3c68e6618 python-cryptography-39.0.2-cargo2.tar.gz # Locally computed sha256 checksums sha256 43dad2cc752ab721cd9a9f36ece70fb53ab7713551f2d3d8694d8e8c5a06d6e2 LICENSE sha256 aac73b3148f6d1d7111dbca32099f68d26c644c6813ae1e4f05f6579aa2663fe LICENSE.APACHE diff --git a/package/python-cryptography/python-cryptography.mk b/package/python-cryptography/python-cryptography.mk index 07c88ec3da..1cbccd0d5c 100644 --- a/package/python-cryptography/python-cryptography.mk +++ b/package/python-cryptography/python-cryptography.mk @@ -5,8 +5,9 @@ ################################################################################ PYTHON_CRYPTOGRAPHY_VERSION = 39.0.2 -PYTHON_CRYPTOGRAPHY_SOURCE = cryptography-$(PYTHON_CRYPTOGRAPHY_VERSION).tar.gz -PYTHON_CRYPTOGRAPHY_SITE = https://files.pythonhosted.org/packages/fa/f3/f4b8c175ea9a1de650b0085858059050b7953a93d66c97ed89b93b232996 +PYTHON_CRYPTOGRAPHY_SOURCE_PYPI = cryptography-$(PYTHON_CRYPTOGRAPHY_VERSION).tar.gz +PYTHON_CRYPTOGRAPHY_SITE_PYPI = https://files.pythonhosted.org/packages/fa/f3/f4b8c175ea9a1de650b0085858059050b7953a93d66c97ed89b93b232996 +PYTHON_CRYPTOGRAPHY_SITE = $(PYTHON_CRYPTOGRAPHY_SITE_PYPI)/$(PYTHON_CRYPTOGRAPHY_SOURCE_PYPI)?buildroot-path=filename PYTHON_CRYPTOGRAPHY_SETUP_TYPE = setuptools-rust PYTHON_CRYPTOGRAPHY_LICENSE = Apache-2.0 or BSD-3-Clause PYTHON_CRYPTOGRAPHY_LICENSE_FILES = LICENSE LICENSE.APACHE LICENSE.BSD diff --git a/package/python-maturin/python-maturin.hash b/package/python-maturin/python-maturin.hash index be6167afea..9807260ebd 100644 --- a/package/python-maturin/python-maturin.hash +++ b/package/python-maturin/python-maturin.hash @@ -1,5 +1,5 @@ # Locally calculated after vendoring -sha256 3757ed29fbaa87a7dde95dade795ea80f099a867343e920ccc471f75d141a6fa maturin-1.4.0.tar.gz +sha256 53d51f5e2decca9af248748684aefa9245910757f19ae147dcf566172ecb0907 python-maturin-1.4.0-cargo2.tar.gz # Locally computed sha256 checksums sha256 a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2 license-apache sha256 ea7882c559733766ad08343bde1d1ec80a4967c03a738fb8e0058ef6289f7b7c license-mit diff --git a/package/python-maturin/python-maturin.mk b/package/python-maturin/python-maturin.mk index 91507468a2..37479dd7e7 100644 --- a/package/python-maturin/python-maturin.mk +++ b/package/python-maturin/python-maturin.mk @@ -5,8 +5,9 @@ ################################################################################ PYTHON_MATURIN_VERSION = 1.4.0 -PYTHON_MATURIN_SOURCE = maturin-$(PYTHON_MATURIN_VERSION).tar.gz -PYTHON_MATURIN_SITE = https://files.pythonhosted.org/packages/20/90/43a3aa35f037e91582ec7516a92084a71f84e89e39ef580813bed072b154 +PYTHON_MATURIN_SOURCE_PYPI = maturin-$(PYTHON_MATURIN_VERSION).tar.gz +PYTHON_MATURIN_SITE_PYPI = https://files.pythonhosted.org/packages/20/90/43a3aa35f037e91582ec7516a92084a71f84e89e39ef580813bed072b154 +PYTHON_MATURIN_SITE = $(PYTHON_MATURIN_SITE_PYPI)/$(PYTHON_MATURIN_SOURCE_PYPI)?buildroot-path=filename PYTHON_MATURIN_SETUP_TYPE = setuptools-rust PYTHON_MATURIN_LICENSE = Apache-2.0 or MIT PYTHON_MATURIN_LICENSE_FILES = license-apache license-mit diff --git a/package/python-orjson/python-orjson.hash b/package/python-orjson/python-orjson.hash index 0e9b93f311..c010097fc7 100644 --- a/package/python-orjson/python-orjson.hash +++ b/package/python-orjson/python-orjson.hash @@ -1,5 +1,5 @@ # Locally calculated after vendoring -sha256 245a1ad9a8f926273787e91f7d7e14b4b357e263a215d8c96dd2039b3cddc238 orjson-3.9.10.tar.gz +sha256 30dbdd4ebd62a40b6f13a3c741bb215004778c17fd951d0ce5812a7c34476b09 python-orjson-3.9.10-cargo2.tar.gz # Locally computed sha256 checksums sha256 a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2 LICENSE-APACHE sha256 23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3 LICENSE-MIT diff --git a/package/python-orjson/python-orjson.mk b/package/python-orjson/python-orjson.mk index a2e8a50468..dd538acb0a 100644 --- a/package/python-orjson/python-orjson.mk +++ b/package/python-orjson/python-orjson.mk @@ -5,8 +5,9 @@ ################################################################################ PYTHON_ORJSON_VERSION = 3.9.10 -PYTHON_ORJSON_SOURCE = orjson-$(PYTHON_ORJSON_VERSION).tar.gz -PYTHON_ORJSON_SITE = https://files.pythonhosted.org/packages/72/75/642688bf5d99131fe8cf603f4ef9f26e4b1c6ed8f7f5c7e6fb31def54fb7 +PYTHON_ORJSON_SOURCE_PYPI = orjson-$(PYTHON_ORJSON_VERSION).tar.gz +PYTHON_ORJSON_SITE_PYPI = https://files.pythonhosted.org/packages/72/75/642688bf5d99131fe8cf603f4ef9f26e4b1c6ed8f7f5c7e6fb31def54fb7 +PYTHON_ORJSON_SITE = $(PYTHON_ORJSON_SITE_PYPI)/$(PYTHON_ORJSON_SOURCE_PYPI)?buildroot-path=filename PYTHON_ORJSON_SETUP_TYPE = maturin PYTHON_ORJSON_LICENSE = Apache-2.0 or MIT PYTHON_ORJSON_LICENSE_FILES = LICENSE-APACHE LICENSE-MIT diff --git a/package/python-pydantic-core/python-pydantic-core.hash b/package/python-pydantic-core/python-pydantic-core.hash index 817595ba8c..b5d975cb3b 100644 --- a/package/python-pydantic-core/python-pydantic-core.hash +++ b/package/python-pydantic-core/python-pydantic-core.hash @@ -1,4 +1,4 @@ # Locally calculated after vendoring -sha256 032fff43cdec54ac579bbdda1a09163e89634c729c1a8163340601a5dfc55eb3 pydantic_core-2.14.6.tar.gz +sha256 23f5e10872d9c3d49ebc1fcbd317612eb63d65a7afd88dbef8d23cb63d830cb4 python-pydantic-core-2.14.6-cargo2.tar.gz # Locally computed sha256 checksums sha256 2afdd30d54b4d62b6f488a6bcc1546e84ec5061f13f4209c03d012348783795a LICENSE diff --git a/package/python-pydantic-core/python-pydantic-core.mk b/package/python-pydantic-core/python-pydantic-core.mk index 8b6e0053e4..38128ebe46 100644 --- a/package/python-pydantic-core/python-pydantic-core.mk +++ b/package/python-pydantic-core/python-pydantic-core.mk @@ -5,8 +5,9 @@ ################################################################################ PYTHON_PYDANTIC_CORE_VERSION = 2.14.6 -PYTHON_PYDANTIC_CORE_SOURCE = pydantic_core-$(PYTHON_PYDANTIC_CORE_VERSION).tar.gz -PYTHON_PYDANTIC_CORE_SITE = https://files.pythonhosted.org/packages/b2/7d/8304d8471cfe4288f95a3065ebda56f9790d087edc356ad5bd83c89e2d79 +PYTHON_PYDANTIC_CORE_SOURCE_PYPI = pydantic_core-$(PYTHON_PYDANTIC_CORE_VERSION).tar.gz +PYTHON_PYDANTIC_CORE_SITE_PYPI = https://files.pythonhosted.org/packages/b2/7d/8304d8471cfe4288f95a3065ebda56f9790d087edc356ad5bd83c89e2d79 +PYTHON_PYDANTIC_CORE_SITE = $(PYTHON_PYDANTIC_CORE_SITE_PYPI)/$(PYTHON_PYDANTIC_CORE_SOURCE_PYPI)?buildroot-path=filename PYTHON_PYDANTIC_CORE_SETUP_TYPE = maturin PYTHON_PYDANTIC_CORE_LICENSE = MIT PYTHON_PYDANTIC_CORE_LICENSE_FILES = LICENSE diff --git a/package/python-rpds-py/python-rpds-py.hash b/package/python-rpds-py/python-rpds-py.hash index 62b508ae6b..3071f60df7 100644 --- a/package/python-rpds-py/python-rpds-py.hash +++ b/package/python-rpds-py/python-rpds-py.hash @@ -1,4 +1,4 @@ # Locally calculated after vendoring -sha256 d9b542bf5321495737005a78d9fbf40541b898d1e2b3309cbe36a2431977be8b rpds_py-0.18.1.tar.gz +sha256 c16ec7e898efa0302cde6ac3c83ef8a2400f865d44941085b4f87784325fb89a python-rpds-py-0.18.1-cargo2.tar.gz # Locally computed sha256 checksums sha256 314e4e91be3baa93c0fb4bccc9e4e97cd643eb839b065af921782c2175fe9909 LICENSE diff --git a/package/python-rpds-py/python-rpds-py.mk b/package/python-rpds-py/python-rpds-py.mk index c38f749521..398ac6682b 100644 --- a/package/python-rpds-py/python-rpds-py.mk +++ b/package/python-rpds-py/python-rpds-py.mk @@ -5,8 +5,9 @@ ################################################################################ PYTHON_RPDS_PY_VERSION = 0.18.1 -PYTHON_RPDS_PY_SOURCE = rpds_py-$(PYTHON_RPDS_PY_VERSION).tar.gz -PYTHON_RPDS_PY_SITE = https://files.pythonhosted.org/packages/2d/aa/e7c404bdee1db7be09860dff423d022ffdce9269ec8e6532cce09ee7beea +PYTHON_RPDS_PY_SOURCE_PYPI = rpds_py-$(PYTHON_RPDS_PY_VERSION).tar.gz +PYTHON_RPDS_PY_SITE_PYPI = https://files.pythonhosted.org/packages/2d/aa/e7c404bdee1db7be09860dff423d022ffdce9269ec8e6532cce09ee7beea +PYTHON_RPDS_PY_SITE = $(PYTHON_RPDS_PY_SITE_PYPI)/$(PYTHON_RPDS_PY_SOURCE_PYPI)?buildroot-path=filename PYTHON_RPDS_PY_SETUP_TYPE = maturin PYTHON_RPDS_PY_LICENSE = MIT PYTHON_RPDS_PY_LICENSE_FILES = LICENSE diff --git a/package/python-rtoml/python-rtoml.hash b/package/python-rtoml/python-rtoml.hash index 59f17d9d62..dae1badcf3 100644 --- a/package/python-rtoml/python-rtoml.hash +++ b/package/python-rtoml/python-rtoml.hash @@ -1,4 +1,4 @@ # Locally calculated after vendoring -sha256 987d3d9e9d56761b17c3e4e172937cbcc793bf24b0ebb2730647a9a2cf86c789 rtoml-0.10.0.tar.gz +sha256 624cc1ff2b3fdea42aeee3a4d1537d37431ec001870dfee1e04a12bd3076a2d3 python-rtoml-0.10.0-cargo2.tar.gz # Locally computed sha256 checksums sha256 cd5ffde80e6d3286a2e2e5f02fb2cb07b823931ca368e7c735a6c5f5aebe7103 LICENSE diff --git a/package/python-rtoml/python-rtoml.mk b/package/python-rtoml/python-rtoml.mk index 16f9dea573..d5de20f832 100644 --- a/package/python-rtoml/python-rtoml.mk +++ b/package/python-rtoml/python-rtoml.mk @@ -5,8 +5,9 @@ ################################################################################ PYTHON_RTOML_VERSION = 0.10.0 -PYTHON_RTOML_SOURCE = rtoml-$(PYTHON_RTOML_VERSION).tar.gz -PYTHON_RTOML_SITE = https://files.pythonhosted.org/packages/ca/b2/0e77a00e75ed582ec1c4c3a9e1eeed886a15c195bcce87b7daf1171c4115 +PYTHON_RTOML_SOURCE_PYPI = rtoml-$(PYTHON_RTOML_VERSION).tar.gz +PYTHON_RTOML_SITE_PYPI = https://files.pythonhosted.org/packages/ca/b2/0e77a00e75ed582ec1c4c3a9e1eeed886a15c195bcce87b7daf1171c4115 +PYTHON_RTOML_SITE = $(PYTHON_RTOML_SITE_PYPI)/$(PYTHON_RTOML_SOURCE_PYPI)?buildroot-path=filename PYTHON_RTOML_SETUP_TYPE = maturin PYTHON_RTOML_LICENSE = MIT PYTHON_RTOML_LICENSE_FILES = LICENSE -- 2.44.0 From thomas at devoogdt.com Tue May 14 20:23:37 2024 From: thomas at devoogdt.com (Thomas Devoogdt) Date: Tue, 14 May 2024 22:23:37 +0200 Subject: [Buildroot] [PATCH v1] package/libopenssl: fix build for the bootlin-riscv32-glibc toolchain Message-ID: <20240514202337.3934490-1-thomas@devoogdt.com> Seen while using the ./utils/test-pkg utility. /home/thomas/br-test-pkg/bootlin-riscv32-glibc/host/opt/ext-toolchain/bin/../lib/gcc/riscv32-buildroot-linux-gnu/13.2.0/../../../../riscv32-buildroot-linux-gnu/bin/ld: crypto/legacy-dso-riscvcap.o: in function `OPENSSL_cpuid_setup': riscvcap.c:(.text.startup+0x190): undefined reference to `riscv_vlen_asm' Signed-off-by: Thomas Devoogdt --- ...Implement-riscv_vlen_asm-for-riscv32.patch | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 package/libopenssl/0004-Implement-riscv_vlen_asm-for-riscv32.patch diff --git a/package/libopenssl/0004-Implement-riscv_vlen_asm-for-riscv32.patch b/package/libopenssl/0004-Implement-riscv_vlen_asm-for-riscv32.patch new file mode 100644 index 0000000000..5de3221172 --- /dev/null +++ b/package/libopenssl/0004-Implement-riscv_vlen_asm-for-riscv32.patch @@ -0,0 +1,50 @@ +From 84f1acab51e159366b8cf97635ed97f8f0b6564a Mon Sep 17 00:00:00 2001 +From: Hongren Zheng +Date: Fri, 26 Apr 2024 06:03:43 +0000 +Subject: [PATCH] Implement riscv_vlen_asm for riscv32 + +riscvcap.c: undefined reference to 'riscv_vlen_asm' + +Reviewed-by: Paul Dale +Reviewed-by: Tomas Mraz +(Merged from https://github.com/openssl/openssl/pull/24270) + +/home/thomas/br-test-pkg/bootlin-riscv32-glibc/host/opt/ext-toolchain/bin/../lib/gcc/riscv32-buildroot-linux-gnu/13.2.0/../../../../riscv32-buildroot-linux-gnu/bin/ld: crypto/legacy-dso-riscvcap.o: in function `OPENSSL_cpuid_setup': +riscvcap.c:(.text.startup+0x190): undefined reference to `riscv_vlen_asm' + +Upstream: https://github.com/openssl/openssl/commit/87314d24c4f025df1ebf47dc527cc8a96bef354a +Signed-off-by: Thomas Devoogdt +--- + crypto/riscv32cpuid.pl | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +diff --git a/crypto/riscv32cpuid.pl b/crypto/riscv32cpuid.pl +index 20694e7de7..ac1c043ec9 100644 +--- a/crypto/riscv32cpuid.pl ++++ b/crypto/riscv32cpuid.pl +@@ -84,5 +84,22 @@ OPENSSL_cleanse: + ___ + } + ++{ ++my ($ret) = ('a0'); ++$code .= <<___; ++################################################################################ ++# size_t riscv_vlen_asm(void) ++# Return VLEN (i.e. the length of a vector register in bits). ++.p2align 3 ++.globl riscv_vlen_asm ++.type riscv_vlen_asm,\@function ++riscv_vlen_asm: ++ csrr $ret, vlenb ++ slli $ret, $ret, 3 ++ ret ++.size riscv_vlen_asm,.-riscv_vlen_asm ++___ ++} ++ + print $code; + close STDOUT or die "error closing STDOUT: $!"; +-- +2.34.1 + -- 2.34.1 From bonet at grenoble.cnrs.fr Tue May 14 20:28:31 2024 From: bonet at grenoble.cnrs.fr (Edgar Bonet) Date: Tue, 14 May 2024 22:28:31 +0200 Subject: [Buildroot] Nginx fails to build with GCC 14 Message-ID: <5647a701-8c5a-4ce6-92c3-3c252e1cd91b@grenoble.cnrs.fr> Hello all! Building nginx with GCC 14 fails at the configure step with: ./configure: error: libatomic_ops library was not found. Steps to reproduce: git checkout 9764258aaf0e # master as of 2024-05-14 make clean make defconfig utils/config --enable GCC_VERSION_14_X utils/config --enable PACKAGE_NGINX make olddefconfig make If the option GCC_VERSION_14_X is omitted (we then default to GCC 13), the build succeeds. Looking at output/build/nginx-1.24.0/objs/autoconf.err, it appears the error is not caused by a missing library, but by an unrelated ?incompatible pointer type? error on the test program: ... checking for atomic_ops library objs/autotest.c: In function 'main': objs/autotest.c:9:48: error: passing argument 1 of 'AO_compare_and_swap' from incompatible pointer type [-Wincompatible-pointer-types] I did not dig this much further. However, I noticed that the file package/nginx/nginx.mk contains this comment: # disable external libatomic_ops because its detection fails. which makes me wonder why ./configure is probing for the library anyway. Regards, Edgar Bonet. From thomas at devoogdt.com Tue May 14 20:33:47 2024 From: thomas at devoogdt.com (Thomas Devoogdt) Date: Tue, 14 May 2024 22:33:47 +0200 Subject: [Buildroot] [PATCH v2] package/fluent-bit: bump to v3.0.3 In-Reply-To: <20240420185958.4165997-1-thomas@devoogdt.com> References: <20240420185958.4165997-1-thomas@devoogdt.com> Message-ID: <20240514203347.4107730-1-thomas@devoogdt.com> Release Notes: - https://fluentbit.io/announcements/v3.0.1 - https://fluentbit.io/announcements/v3.0.2 - https://fluentbit.io/announcements/v3.0.3 Signed-off-by: Thomas Devoogdt --- v2: bump from v3.0.2 to v3.0.3 --- package/fluent-bit/fluent-bit.hash | 2 +- package/fluent-bit/fluent-bit.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/fluent-bit/fluent-bit.hash b/package/fluent-bit/fluent-bit.hash index cc9c976d60..a53f6dba51 100644 --- a/package/fluent-bit/fluent-bit.hash +++ b/package/fluent-bit/fluent-bit.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 e70ae5be2f0ca1cb842a1c8d2762437907c522765f79b5c0c391eaa1b57c9f4c fluent-bit-3.0.0.tar.gz +sha256 2f3b82e8b7802fe92625009531592f12d500ff61a02ecf4cd27e0f138a6dc566 fluent-bit-3.0.3.tar.gz sha256 0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594 LICENSE diff --git a/package/fluent-bit/fluent-bit.mk b/package/fluent-bit/fluent-bit.mk index 33054bea66..b235c3abf4 100644 --- a/package/fluent-bit/fluent-bit.mk +++ b/package/fluent-bit/fluent-bit.mk @@ -4,7 +4,7 @@ # ################################################################################ -FLUENT_BIT_VERSION = 3.0.0 +FLUENT_BIT_VERSION = 3.0.3 FLUENT_BIT_SITE = $(call github,fluent,fluent-bit,v$(FLUENT_BIT_VERSION)) FLUENT_BIT_LICENSE = Apache-2.0 FLUENT_BIT_LICENSE_FILES = LICENSE -- 2.34.1 From peter at korsgaard.com Tue May 14 21:02:27 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Tue, 14 May 2024 23:02:27 +0200 Subject: [Buildroot] [PATCH 1/1] package/cjson: security bump to version 1.7.18 In-Reply-To: <20240514172032.3581-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Tue, 14 May 2024 19:20:32 +0200") References: <20240514172032.3581-1-fontaine.fabrice@gmail.com> Message-ID: <87a5kst8d8.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > Add NULL check to cJSON_SetValuestring() (CVE-2024-31755) > https://github.com/DaveGamble/cJSON/releases/tag/v1.7.18 > Signed-off-by: Fabrice Fontaine Committed, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Tue May 14 21:01:04 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Tue, 14 May 2024 23:01:04 +0200 Subject: [Buildroot] [git commit] package/cjson: security bump to version 1.7.18 Message-ID: <20240514210348.9D6BF873CE@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=0c091c15ea22d0f5b1e2114bc56e16d77d77247c branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Add NULL check to cJSON_SetValuestring() (CVE-2024-31755) https://github.com/DaveGamble/cJSON/releases/tag/v1.7.18 Signed-off-by: Fabrice Fontaine Signed-off-by: Peter Korsgaard --- package/cjson/cjson.hash | 2 +- package/cjson/cjson.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/cjson/cjson.hash b/package/cjson/cjson.hash index 305dc0d7b8..e07ae0f7bf 100644 --- a/package/cjson/cjson.hash +++ b/package/cjson/cjson.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 c91d1eeb7175c50d49f6ba2a25e69b46bd05cffb798382c19bfb202e467ec51c cjson-1.7.17.tar.gz +sha256 3aa806844a03442c00769b83e99970be70fbef03735ff898f4811dd03b9f5ee5 cjson-1.7.18.tar.gz sha256 a36dda207c36db5818729c54e7ad4e8b0c6fba847491ba64f372c1a2037b6d5c LICENSE diff --git a/package/cjson/cjson.mk b/package/cjson/cjson.mk index 4719a3dc9b..35304ec618 100644 --- a/package/cjson/cjson.mk +++ b/package/cjson/cjson.mk @@ -4,7 +4,7 @@ # ################################################################################ -CJSON_VERSION = 1.7.17 +CJSON_VERSION = 1.7.18 CJSON_SITE = $(call github,DaveGamble,cjson,v$(CJSON_VERSION)) CJSON_INSTALL_STAGING = YES CJSON_LICENSE = MIT From peter at korsgaard.com Tue May 14 21:26:13 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Tue, 14 May 2024 23:26:13 +0200 Subject: [Buildroot] [PATCH 1/1] package/libedit: set LIBEDIT_CPE_ID_VALID In-Reply-To: <20240514172438.68998-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Tue, 14 May 2024 19:24:38 +0200") References: <20240514172438.68998-1-fontaine.fabrice@gmail.com> Message-ID: <875xvgt79m.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > cpe:2.3:a:libedit_project:libedit is a valid CPE identifier for this > package: > https://nvd.nist.gov/products/cpe/detail/42ACF08B-DD62-48D3-8568-32DAFD116956 > Signed-off-by: Fabrice Fontaine Committed, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Tue May 14 21:26:01 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Tue, 14 May 2024 23:26:01 +0200 Subject: [Buildroot] [git commit] package/libedit: set LIBEDIT_CPE_ID_VALID Message-ID: <20240514212627.D6CF1873D5@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=300cb3dc16efeb592bddcb8be07310c21c2c0d7a branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master cpe:2.3:a:libedit_project:libedit is a valid CPE identifier for this package: https://nvd.nist.gov/products/cpe/detail/42ACF08B-DD62-48D3-8568-32DAFD116956 Signed-off-by: Fabrice Fontaine Signed-off-by: Peter Korsgaard --- package/libedit/libedit.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/package/libedit/libedit.mk b/package/libedit/libedit.mk index ea7f98fdbd..98e29a9b1a 100644 --- a/package/libedit/libedit.mk +++ b/package/libedit/libedit.mk @@ -10,6 +10,7 @@ LIBEDIT_INSTALL_STAGING = YES LIBEDIT_DEPENDENCIES = ncurses LIBEDIT_LICENSE = BSD-3-Clause LIBEDIT_LICENSE_FILES = COPYING +LIBEDIT_CPE_ID_VALID = YES # We're patching configure.ac LIBEDIT_AUTORECONF = YES From bernd at kuhls.net Tue May 14 21:54:02 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:54:02 +0200 Subject: [Buildroot] [PATCH 1/5] package/bc: fix build with gcc 14.x Message-ID: <20240514215406.2866563-1-bernd@kuhls.net> Fixes: http://autobuild.buildroot.net/results/4d3/4d3c0e0a08cd734699cb61412c99d705738e8ab4/ Signed-off-by: Bernd Kuhls --- ...and-write-errors-on-input-and-output.patch | 41 ++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/package/bc/0002-notice-read-and-write-errors-on-input-and-output.patch b/package/bc/0002-notice-read-and-write-errors-on-input-and-output.patch index cc72e5cd69..87654e3c14 100644 --- a/package/bc/0002-notice-read-and-write-errors-on-input-and-output.patch +++ b/package/bc/0002-notice-read-and-write-errors-on-input-and-output.patch @@ -26,6 +26,10 @@ Origin: other Bug-Debian: http://bugs.debian.org/488735 Signed-off-by: Matthew Weber +Signed-off-by: Bernd Kuhls +[Bernd: + Updated to incorporate changes by Matthias Klose + on 2024-03-13 that fix Debian bug https://bugs.debian.org/1065375] --- bc/execute.c | 10 +++++++++- bc/main.c | 3 +++ @@ -276,6 +280,14 @@ diff --git a/dc/dc.c b/dc/dc.c index 6a2bb26..ccdb1c2 100644 --- a/dc/dc.c +++ b/dc/dc.c +@@ -45,6 +45,7 @@ + #include + #include "dc.h" + #include "dc-proto.h" ++#include "number.h" + + #ifndef EXIT_SUCCESS /* C89 */ + # define EXIT_SUCCESS 0 @@ -59,6 +59,7 @@ static void bug_report_info DC_DECLVOID() { @@ -304,6 +316,14 @@ diff --git a/dc/eval.c b/dc/eval.c index 05a3d9e..6c54e61 100644 --- a/dc/eval.c +++ b/dc/eval.c +@@ -41,6 +41,7 @@ + #endif + #include "dc.h" + #include "dc-proto.h" ++#include "number.h" + + typedef enum {DC_FALSE, DC_TRUE} dc_boolean; + @@ -97,12 +97,15 @@ static int input_pushback; static int input_fil DC_DECLVOID() @@ -512,6 +532,14 @@ diff --git a/dc/misc.c b/dc/misc.c index cd23602..cd910b8 100644 --- a/dc/misc.c +++ b/dc/misc.c +@@ -47,6 +47,7 @@ + #include + #include "dc.h" + #include "dc-proto.h" ++#include "number.h" + + #ifndef EXIT_FAILURE /* C89 */ + # define EXIT_FAILURE 1 @@ -89,6 +89,7 @@ dc_show_id DC_DECLARG((fp, id, suffix)) fprintf(fp, "'%c' (%#o)%s", (unsigned int) id, id, suffix); else @@ -593,8 +621,11 @@ diff --git a/dc/stack.c b/dc/stack.c index 49422df..174411d 100644 --- a/dc/stack.c +++ b/dc/stack.c -@@ -35,7 +35,10 @@ +@@ -33,9 +33,13 @@ + #include "dc.h" + #include "dc-proto.h" #include "dc-regdef.h" ++#include "number.h" /* an oft-used error message: */ -#define Empty_Stack fprintf(stderr, "%s: stack empty\n", progname) @@ -657,6 +688,14 @@ diff --git a/dc/string.c b/dc/string.c index dee9169..389d899 100644 --- a/dc/string.c +++ b/dc/string.c +@@ -45,6 +45,7 @@ + #endif + #include "dc.h" + #include "dc-proto.h" ++#include "number.h" + + /* here is the completion of the dc_string type: */ + struct dc_string { @@ -94,6 +94,7 @@ dc_out_str DC_DECLARG((value, discard_flag)) dc_discard discard_flag DC_DECLEND { -- 2.39.2 From bernd at kuhls.net Tue May 14 21:54:03 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:54:03 +0200 Subject: [Buildroot] [PATCH 2/5] package/rrdtool: fix build with gcc 14.x In-Reply-To: <20240514215406.2866563-1-bernd@kuhls.net> References: <20240514215406.2866563-1-bernd@kuhls.net> Message-ID: <20240514215406.2866563-2-bernd@kuhls.net> Signed-off-by: Bernd Kuhls --- .../0001-Constify-argv-fix-warnings.patch | 1586 +++++++++++++++++ 1 file changed, 1586 insertions(+) create mode 100644 package/rrdtool/0001-Constify-argv-fix-warnings.patch diff --git a/package/rrdtool/0001-Constify-argv-fix-warnings.patch b/package/rrdtool/0001-Constify-argv-fix-warnings.patch new file mode 100644 index 0000000000..e41e729a0e --- /dev/null +++ b/package/rrdtool/0001-Constify-argv-fix-warnings.patch @@ -0,0 +1,1586 @@ +From b76e3c578f1e9f582e9c28f50d82b1f569602075 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michal=20Such=C3=A1nek?= +Date: Fri, 5 Jan 2024 15:31:48 +0100 +Subject: [PATCH] Constify argv, fix warnings. (#1242) + +* Fix perl warnings + + - cast POPs to void to avoid unused value warning + - declare functions that don't set RETVAL as returning void + +Signed-off-by: Michal Suchanek + +* Constify argv + +rrd has no business modifying the string pointed to by passed agrv, and +as far as gcc can see it does indeed not modify them because it compiles +with const argv. + +This fixes warnings when passing const strings into rrd, and avoids the +need to duplicate all strings in the tcl bindings. + +This fixes warnings like these: +[ 3s] prog/sensord/rrd.c: In function 'rrdInit': +[ 3s] prog/sensord/rrd.c:302:40: warning: cast discards 'const' qualifier from pointer target type [-Wcast-qual] +[ 3s] 302 | ret = rrd_create(argc, (char**) argv); +[ 3s] | ^ +[ 3s] prog/sensord/rrd.c: In function 'rrdUpdate': +[ 3s] prog/sensord/rrd.c:458:42: warning: cast discards 'const' qualifier from pointer target type [-Wcast-qual] +[ 3s] 458 | if ((ret = rrd_update(3, (char **) /* WEAK */ argv))) { +[ 3s] | ^ + +Signed-off-by: Michal Suchanek + +* tcl: Do not duplicate const strings + +--------- + +Signed-off-by: Michal Suchanek + +Upstream: https://github.com/oetiker/rrdtool-1.x/commit/b76e3c578f1e9f582e9c28f50d82b1f569602075 + +Signed-off-by: Bernd Kuhls +--- + CHANGES | 3 ++ + bindings/lua/rrdlua.c | 25 +++++----- + bindings/perl-shared/RRDs.xs | 36 +++++++------- + bindings/python/rrdtoolmodule.c | 38 +++++++-------- + bindings/ruby/main.c | 10 ++-- + bindings/tcl/tclrrd.c | 84 ++++++++------------------------- + src/optparse.c | 14 +++--- + src/optparse.h | 6 +-- + src/rrd.h | 38 +++++++-------- + src/rrd_cgi.c | 24 +++++----- + src/rrd_create.c | 2 +- + src/rrd_daemon.c | 12 ++--- + src/rrd_dump.c | 4 +- + src/rrd_fetch.c | 2 +- + src/rrd_first.c | 2 +- + src/rrd_flushcached.c | 2 +- + src/rrd_graph.c | 6 +-- + src/rrd_graph.h | 4 +- + src/rrd_graph_helper.c | 2 +- + src/rrd_info.c | 2 +- + src/rrd_last.c | 2 +- + src/rrd_lastupdate.c | 2 +- + src/rrd_list.c | 6 +-- + src/rrd_modify.c | 2 +- + src/rrd_modify.h | 2 +- + src/rrd_resize.c | 4 +- + src/rrd_restore.c | 2 +- + src/rrd_tool.c | 26 +++++----- + src/rrd_tune.c | 2 +- + src/rrd_update.c | 4 +- + src/rrd_xport.c | 2 +- + src/rrdupdate.c | 7 +-- + 32 files changed, 168 insertions(+), 209 deletions(-) + +diff --git a/bindings/lua/rrdlua.c b/bindings/lua/rrdlua.c +index d1a700641..2095c3b5b 100644 +--- a/bindings/lua/rrdlua.c ++++ b/bindings/lua/rrdlua.c +@@ -37,8 +37,8 @@ + extern void rrd_freemem(void *mem); + + extern int luaopen_rrd (lua_State * L); +-typedef int (*RRD_FUNCTION)(int, char **); +-typedef rrd_info_t *(RRD_FUNCTION_V)(int, char **); ++typedef int (*RRD_FUNCTION)(int, const char **); ++typedef rrd_info_t *(RRD_FUNCTION_V)(int, const char **); + + /**********************************************************/ + +@@ -49,9 +49,9 @@ static void reset_rrd_state(void) + rrd_clear_error(); + } + +-static char **make_argv(const char *cmd, lua_State * L) ++static const char **make_argv(const char *cmd, lua_State * L) + { +- char **argv; ++ const char **argv; + int i; + int argc = lua_gettop(L) + 1; + +@@ -60,13 +60,12 @@ static char **make_argv(const char *cmd, lua_State * L) + luaL_error(L, "Can't allocate memory for arguments array", cmd); + + /* fprintf(stderr, "Args:\n"); */ +- argv[0] = (char *) cmd; /* Dummy arg. Cast to (char *) because rrd */ +- /* functions don't expect (const * char) */ ++ argv[0] = cmd; + /* fprintf(stderr, "%s\n", argv[0]); */ + for (i=1; i + #include "../../src/rrd_tool.h" + #include "../../src/rrd_format.h" ++#include "../../src/unused.h" + + /* support pre-8.4 tcl */ + +@@ -41,47 +42,39 @@ extern int Tclrrd_SafeInit( + * Hence, we need to do some preparation before + * calling the rrd library functions. + */ +-static char **getopt_init( ++static const char **getopt_init( + int argc, + CONST84 char *argv[]) + { +- char **argv2; ++ const char **argv2; + int i; + + argv2 = calloc(argc, sizeof(char *)); + for (i = 0; i < argc; i++) { +- argv2[i] = strdup(argv[i]); ++ argv2[i] = argv[i]; + } + return argv2; + } + + static void getopt_cleanup( +- int argc, +- char **argv2) ++ int UNUSED(argc), ++ const char **argv2) + { +- int i; +- +- for (i = 0; i < argc; i++) { +- if (argv2[i] != NULL) { +- free(argv2[i]); +- } +- } +- free(argv2); ++ free((void *)argv2); + } + + static void getopt_free_element( +- char *argv2[], ++ const char *argv2[], + int argn) + { + if (argv2[argn] != NULL) { +- free(argv2[argn]); + argv2[argn] = NULL; + } + } + + static void getopt_squieeze( + int *argc, +- char *argv2[]) ++ const char *argv2[]) + { + int i, null_i = 0, argc_tmp = *argc; + +@@ -104,7 +97,7 @@ static int Rrd_Create( + CONST84 char *argv[]) + { + int argv_i; +- char **argv2; ++ const char **argv2; + char *parsetime_error = NULL; + time_t last_up = time(NULL) - 10; + long int long_tmp; +@@ -295,7 +288,7 @@ static int Rrd_Flushcached( + return TCL_ERROR; + } + +- rrd_flushcached(argc, (char**)argv); ++ rrd_flushcached(argc, argv); + + if (rrd_test_error()) { + Tcl_AppendResult(interp, "RRD Error: ", +@@ -380,7 +373,7 @@ static int Rrd_Update( + CONST84 char *argv[]) + { + int argv_i; +- char **argv2, *template = NULL; ++ const char **argv2, *template = NULL; + + argv2 = getopt_init(argc, argv); + +@@ -391,16 +384,10 @@ static int Rrd_Update( + Tcl_AppendResult(interp, "RRD Error: option '", + argv2[argv_i - 1], "' needs an argument", + (char *) NULL); +- if (template != NULL) { +- free(template); +- } + getopt_cleanup(argc, argv2); + return TCL_ERROR; + } +- if (template != NULL) { +- free(template); +- } +- template = strdup(argv2[argv_i]); ++ template = argv2[argv_i]; + getopt_free_element(argv2, argv_i - 1); + getopt_free_element(argv2, argv_i); + } else if (!strcmp(argv2[argv_i], "--")) { +@@ -409,9 +396,6 @@ static int Rrd_Update( + } else if (argv2[argv_i][0] == '-') { + Tcl_AppendResult(interp, "RRD Error: unknown option '", + argv2[argv_i], "'", (char *) NULL); +- if (template != NULL) { +- free(template); +- } + getopt_cleanup(argc, argv2); + return TCL_ERROR; + } +@@ -422,18 +406,12 @@ static int Rrd_Update( + if (argc < 2) { + Tcl_AppendResult(interp, "RRD Error: needs rrd filename", + (char *) NULL); +- if (template != NULL) { +- free(template); +- } + getopt_cleanup(argc, argv2); + return TCL_ERROR; + } + + rrd_update_r(argv2[1], template, argc - 2, (const char **)argv2 + 2); + +- if (template != NULL) { +- free(template); +- } + getopt_cleanup(argc, argv2); + + if (rrd_test_error()) { +@@ -454,7 +432,6 @@ static int Rrd_Info( + { + int status = TCL_OK; + rrd_info_t *data; +- char **argv2; + + /* TODO: support for rrdcached */ + if (argc != 2) { +@@ -463,9 +440,7 @@ static int Rrd_Info( + return TCL_ERROR; + } + +- argv2 = getopt_init(argc, argv); +- +- data = rrd_info_r(argv2[1]); ++ data = rrd_info_r(argv[1]); + + if (data) { + Tcl_SetObjResult(interp, convert_info(data)); +@@ -477,7 +452,6 @@ static int Rrd_Info( + status = TCL_ERROR; + } + +- getopt_cleanup(argc, argv2); + return status; + } + +@@ -488,7 +462,6 @@ static int Rrd_Lastupdate( + CONST84 char *argv[]) + { + time_t last_update; +- char **argv2; + char **ds_namv; + char **last_ds; + char s[30]; +@@ -502,8 +475,7 @@ static int Rrd_Lastupdate( + return TCL_ERROR; + } + +- argv2 = getopt_init(argc, argv); +- if (rrd_lastupdate_r(argv2[1], &last_update, ++ if (rrd_lastupdate_r(argv[1], &last_update, + &ds_cnt, &ds_namv, &last_ds) == 0) { + listPtr = Tcl_GetObjResult(interp); + for (i = 0; i < ds_cnt; i++) { +@@ -527,7 +499,6 @@ static int Rrd_Lastupdate( + free(ds_namv); + } + } +- getopt_cleanup(argc, argv2); + return TCL_OK; + } + +@@ -543,10 +514,8 @@ static int Rrd_Fetch( + char **ds_namv; + Tcl_Obj *listPtr; + char s[30]; +- char **argv2; + +- argv2 = getopt_init(argc, argv); +- if (rrd_fetch(argc, argv2, &start, &end, &step, ++ if (rrd_fetch(argc, argv, &start, &end, &step, + &ds_cnt, &ds_namv, &data) != -1) { + datai = data; + listPtr = Tcl_GetObjResult(interp); +@@ -562,7 +531,6 @@ static int Rrd_Fetch( + free(ds_namv); + free(data); + } +- getopt_cleanup(argc, argv2); + + if (rrd_test_error()) { + Tcl_AppendResult(interp, "RRD Error: ", +@@ -590,7 +558,7 @@ static int Rrd_Graph( + int rc, xsize, ysize; + double ymin, ymax; + char dimensions[50]; +- char **argv2; ++ const char **argv2; + CONST84 char *save; + + /* +@@ -692,11 +660,7 @@ static int Rrd_Tune( + int argc, + CONST84 char *argv[]) + { +- char **argv2; +- +- argv2 = getopt_init(argc, argv); +- rrd_tune(argc, argv2); +- getopt_cleanup(argc, argv2); ++ rrd_tune(argc, argv); + + if (rrd_test_error()) { + Tcl_AppendResult(interp, "RRD Error: ", +@@ -716,11 +680,7 @@ static int Rrd_Resize( + int argc, + CONST84 char *argv[]) + { +- char **argv2; +- +- argv2 = getopt_init(argc, argv); +- rrd_resize(argc, argv2); +- getopt_cleanup(argc, argv2); ++ rrd_resize(argc, argv); + + if (rrd_test_error()) { + Tcl_AppendResult(interp, "RRD Error: ", +@@ -740,11 +700,7 @@ static int Rrd_Restore( + int argc, + CONST84 char *argv[]) + { +- char **argv2; +- +- argv2 = getopt_init(argc, argv); +- rrd_restore(argc, argv2); +- getopt_cleanup(argc, argv2); ++ rrd_restore(argc, argv); + + if (rrd_test_error()) { + Tcl_AppendResult(interp, "RRD Error: ", +diff --git a/src/optparse.c b/src/optparse.c +index 9040ba8b2..79a3efe11 100644 +--- a/src/optparse.c ++++ b/src/optparse.c +@@ -10,7 +10,7 @@ + #define options_argv(i) \ + ((i) < options->argc ? options->argv[i] : NULL) + +-void optparse_init(struct optparse *options, int argc, char **argv) ++void optparse_init(struct optparse *options, int argc, const char **argv) + { + options->argv = argv; + options->argc = argc; +@@ -42,7 +42,7 @@ is_longopt(const char *arg) + static void + permute(struct optparse *options, int index) + { +- char *nonoption = options->argv[index]; ++ const char *nonoption = options->argv[index]; + for (int i = index; i < options->optind - 1; i++) + options->argv[i] = options->argv[i + 1]; + options->argv[options->optind - 1] = nonoption; +@@ -67,7 +67,7 @@ int optparse(struct optparse *options, const char *optstring) + options->errmsg[0] = '\0'; + options->optopt = 0; + options->optarg = NULL; +- char *option = options_argv(options->optind); ++ const char *option = options_argv(options->optind); + if (option == NULL) { + return -1; + } else if (is_dashdash(option)) { +@@ -88,7 +88,7 @@ int optparse(struct optparse *options, const char *optstring) + option += options->subopt + 1; + options->optopt = option[0]; + int type = argtype(optstring, option[0]); +- char *next = options_argv(options->optind + 1); ++ const char *next = options_argv(options->optind + 1); + switch (type) { + case -1: + opterror(options, "invalid option -- '%c'", option[0]); +@@ -128,10 +128,10 @@ int optparse(struct optparse *options, const char *optstring) + return 0; + } + +-char *optparse_arg(struct optparse *options) ++const char *optparse_arg(struct optparse *options) + { + options->subopt = 0; +- char *option = options->argv[options->optind]; ++ const char *option = options->argv[options->optind]; + if (option != NULL) + options->optind++; + return option; +@@ -222,7 +222,7 @@ optparse_long(struct optparse *options, + int *longindex) + { + // printf("%i < %i\n",options->optind,options->argc); +- char *option = options_argv(options->optind); ++ const char *option = options_argv(options->optind); + if (option == NULL) { + return -1; + } else if (is_dashdash(option)) { +diff --git a/src/optparse.h b/src/optparse.h +index c4b0ec19c..7a0bb3885 100644 +--- a/src/optparse.h ++++ b/src/optparse.h +@@ -44,7 +44,7 @@ + */ + + struct optparse { +- char **argv; ++ const char **argv; + int argc; + int permute; + int optind; +@@ -65,7 +65,7 @@ struct optparse_long { + /** + * Initializes the parser state. + */ +-void optparse_init(struct optparse *options, int argc, char **argv); ++void optparse_init(struct optparse *options, int argc, const char **argv); + + /** + * Read the next option in the argv array. +@@ -98,6 +98,6 @@ optparse_long(struct optparse *options, + * subcommand returned by optparse_arg(). This function allows you to + * ignore the value of optind. + */ +-char *optparse_arg(struct optparse *options); ++const char *optparse_arg(struct optparse *options); + + #endif +diff --git a/src/rrd.h b/src/rrd.h +index 184887ccc..b40f9a449 100644 +--- a/src/rrd.h ++++ b/src/rrd.h +@@ -155,10 +155,10 @@ extern "C" { + /* main function blocks */ + int rrd_create( + int, +- char **); ++ const char **); + rrd_info_t *rrd_info( + int, +- char **); ++ const char **); + rrd_info_t *rrd_info_push( + rrd_info_t *, + char *, +@@ -170,19 +170,19 @@ extern "C" { + rrd_info_t *); + char *rrd_list( + int, +- char **); ++ const char **); + char *rrd_list_r( + int, +- char *dirname); ++ const char *dirname); + int rrd_update( + int, +- char **); ++ const char **); + rrd_info_t *rrd_update_v( + int, +- char **); ++ const char **); + int rrd_graph( + int, +- char **, ++ const char **, + char ***, + int *, + int *, +@@ -191,11 +191,11 @@ extern "C" { + double *); + rrd_info_t *rrd_graph_v( + int, +- char **); ++ const char **); + + int rrd_fetch( + int, +- char **, ++ const char **, + time_t *, + time_t *, + unsigned long *, +@@ -204,32 +204,32 @@ extern "C" { + rrd_value_t **); + int rrd_restore( + int, +- char **); ++ const char **); + int rrd_dump( + int, +- char **); ++ const char **); + int rrd_tune( + int, +- char **); ++ const char **); + time_t rrd_last( + int, +- char **); ++ const char **); + int rrd_lastupdate( + int argc, +- char **argv); ++ const char **argv); + time_t rrd_first( + int, +- char **); ++ const char **); + int rrd_resize( + int, +- char **); ++ const char **); + char *rrd_strversion( + void); + double rrd_version( + void); + int rrd_xport( + int, +- char **, ++ const char **, + int *, + time_t *, + time_t *, +@@ -239,7 +239,7 @@ extern "C" { + rrd_value_t **); + int rrd_flushcached( + int argc, +- char **argv); ++ const char **argv); + + void rrd_freemem( + void *mem); +@@ -323,7 +323,7 @@ extern "C" { + const char **argv); + int rrd_dump_opt_r( + const char *filename, +- char *outname, ++ const char *outname, + int opt_noheader); + int rrd_dump_r( + const char *filename, +diff --git a/src/rrd_cgi.c b/src/rrd_cgi.c +index b82c310db..14a4f511a 100644 +--- a/src/rrd_cgi.c ++++ b/src/rrd_cgi.c +@@ -102,7 +102,7 @@ static char *rrdstrip( + static char *scanargs( + char *line, + int *argc, +- char ***args); ++ const char ***args); + + /* format at-time specified times using strftime */ + static char *printstrftime( +@@ -317,7 +317,7 @@ static const char *putvar( + } + + /* expand those RRD:* directives that can be used recursively */ +-static char *rrd_expand_vars( ++static const char *rrd_expand_vars( + char *buffer) + { + int i; +@@ -434,7 +434,7 @@ static int readfile( + + int main( + int argc, +- char *argv[]) ++ const char *argv[]) + { + char *buffer; + long i; +@@ -926,7 +926,7 @@ static char *drawgraph( + } + calfree(); + if (rrd_graph +- (argc + 1, (char **) args - 1, &calcpr, &xsize, &ysize, NULL, &ymin, ++ (argc + 1, args - 1, &calcpr, &xsize, &ysize, NULL, &ymin, + &ymax) != -1) { + return stralloc(calcpr[0]); + } else { +@@ -973,7 +973,7 @@ static char *printtimelast( + /* not raising argc in step with args - 1 since the last argument + will be used below for strftime */ + +- last = rrd_last(argc, (char **) args - 1); ++ last = rrd_last(argc, args - 1); + if (rrd_test_error()) { + char err[4096]; + +@@ -1027,7 +1027,7 @@ static char *printtimenow( + static char *scanargs( + char *line, + int *argument_count, +- char ***arguments) ++ const char ***arguments) + { + char *getP; /* read cursor */ + char *putP; /* write cursor */ +@@ -1039,8 +1039,8 @@ static char *scanargs( + + /* local array of arguments while parsing */ + int argc = 1; +- char **argv; +- char **argv_tmp; /* temp variable for realloc() */ ++ const char **argv; ++ const char **argv_tmp; /* temp variable for realloc() */ + + #ifdef DEBUG_PARSER + printf("<-- scanargs(%s) -->\n", line); +@@ -1051,7 +1051,7 @@ static char *scanargs( + + /* create initial argument array of char pointers */ + argsz = 32; +- argv = (char **) malloc(argsz * sizeof(char *)); ++ argv = malloc(argsz * sizeof(char *)); + if (!argv) { + return NULL; + } +@@ -1146,7 +1146,7 @@ static char *scanargs( + if (argc == argsz - 2) { + /* resize argument array */ + argsz *= 2; +- argv_tmp = (char **) rrd_realloc(argv, argsz * sizeof(char *)); ++ argv_tmp = rrd_realloc(argv, argsz * sizeof(char *)); + if (*argv_tmp == NULL) { + return NULL; + } +@@ -1213,7 +1213,7 @@ static int parse( + /* the name of the vairable ... */ + char *val; + long valln; +- char **args; ++ const char **args; + char *end; + long end_offset; + int argc; +@@ -1264,7 +1264,7 @@ static int parse( + /* make sure we do not shrink the mallocd block */ + size_t newbufsize = i + strlen(end) + valln + 1; + +- *buf = (char *) rrd_realloc(*buf, newbufsize); ++ *buf = rrd_realloc(*buf, newbufsize); + + if (*buf == NULL) { + perror("Realoc buf:"); +diff --git a/src/rrd_create.c b/src/rrd_create.c +index f9bad0866..919b4195a 100644 +--- a/src/rrd_create.c ++++ b/src/rrd_create.c +@@ -76,7 +76,7 @@ static void parseGENERIC_DS( + + int rrd_create( + int argc, +- char **argv) ++ const char **argv) + { + struct optparse_long longopts[] = { + {"start", 'b', OPTPARSE_REQUIRED}, +diff --git a/src/rrd_daemon.c b/src/rrd_daemon.c +index 751798aa1..21c38a11d 100644 +--- a/src/rrd_daemon.c ++++ b/src/rrd_daemon.c +@@ -1877,7 +1877,7 @@ static int handle_request_tune( + HANDLER_PROTO) + { /* {{{ */ + int status; +- char** argv = NULL; ++ const char** argv = NULL; + int argc, argc_tmp; + char* i; + int rc; +@@ -1916,7 +1916,7 @@ static int handle_request_tune( + goto done; + } + +- if ((argv = (char **) malloc(argc * sizeof(char*))) == NULL) { ++ if ((argv = malloc(argc * sizeof(char*))) == NULL) { + rc = send_response(sock, RESP_ERR, "%s\n", rrd_strerror(ENOMEM)); + goto done; + } +@@ -1927,7 +1927,7 @@ static int handle_request_tune( + argc_tmp += 1; + } + +- status = rrd_tune_r(file, argc, (const char **)argv); ++ status = rrd_tune_r(file, argc, argv); + if (status != 0) { + rc = send_response(sock, RESP_ERR, "Got error %s\n", rrd_get_error()); + goto done; +@@ -1935,7 +1935,7 @@ static int handle_request_tune( + rc = send_response(sock, RESP_OK, "Success\n"); + done: + free(file); +- free(argv); ++ free((void *)argv); + return rc; + } + +@@ -4505,7 +4505,7 @@ static int cleanup( + + static int read_options( + int argc, +- char **argv) ++ const char **argv) + { /* {{{ */ + struct optparse_long longopts[] = { + {NULL, 'a', OPTPARSE_REQUIRED}, +@@ -5050,7 +5050,7 @@ static int read_options( + + int main( + int argc, +- char **argv) ++ const char **argv) + { + int status; + +diff --git a/src/rrd_dump.c b/src/rrd_dump.c +index a4490d594..c58e0ee4a 100644 +--- a/src/rrd_dump.c ++++ b/src/rrd_dump.c +@@ -497,7 +497,7 @@ static size_t rrd_dump_opt_cb_fileout( + + int rrd_dump_opt_r( + const char *filename, +- char *outname, ++ const char *outname, + int opt_noheader) + { + FILE *out_file; +@@ -543,7 +543,7 @@ int rrd_dump_r( + + int rrd_dump( + int argc, +- char **argv) ++ const char **argv) + { + int opt; + struct optparse_long longopts[] = { +diff --git a/src/rrd_fetch.c b/src/rrd_fetch.c +index c739bfc45..54780f19b 100644 +--- a/src/rrd_fetch.c ++++ b/src/rrd_fetch.c +@@ -61,7 +61,7 @@ + + int rrd_fetch( + int argc, +- char **argv, ++ const char **argv, + time_t *start, + time_t *end, /* which time frame do you want ? + * will be changed to represent reality */ +diff --git a/src/rrd_first.c b/src/rrd_first.c +index a696c5c38..f3dde5404 100644 +--- a/src/rrd_first.c ++++ b/src/rrd_first.c +@@ -13,7 +13,7 @@ + + time_t rrd_first( + int argc, +- char **argv) ++ const char **argv) + { + struct optparse_long longopts[] = { + {"rraindex", 129, OPTPARSE_REQUIRED}, +diff --git a/src/rrd_flushcached.c b/src/rrd_flushcached.c +index 090bca749..3bf6cd29d 100644 +--- a/src/rrd_flushcached.c ++++ b/src/rrd_flushcached.c +@@ -22,7 +22,7 @@ + #include "rrd_tool.h" + #include "rrd_client.h" + +-int rrd_flushcached (int argc, char **argv) ++int rrd_flushcached (int argc, const char **argv) + { + struct optparse_long longopts[] = { + {"daemon", 'd', OPTPARSE_REQUIRED}, +diff --git a/src/rrd_graph.c b/src/rrd_graph.c +index b32d45085..46511e9a3 100644 +--- a/src/rrd_graph.c ++++ b/src/rrd_graph.c +@@ -4607,7 +4607,7 @@ int scan_for_col( + /* Now just a wrapper around rrd_graph_v */ + int rrd_graph( + int argc, +- char **argv, ++ const char **argv, + char ***prdata, + int *xsize, + int *ysize, +@@ -4690,7 +4690,7 @@ int rrd_graph( + + rrd_info_t *rrd_graph_v( + int argc, +- char **argv) ++ const char **argv) + { + image_desc_t im; + rrd_info_t *grinfo; +@@ -4953,7 +4953,7 @@ void rrd_graph_init( + + void rrd_graph_options( + int argc, +- char *argv[], ++ const char **argv, + struct optparse *poptions, + image_desc_t *im) + { +diff --git a/src/rrd_graph.h b/src/rrd_graph.h +index 4df32ec66..083cf3800 100644 +--- a/src/rrd_graph.h ++++ b/src/rrd_graph.h +@@ -473,12 +473,12 @@ void time_clean( + + void rrd_graph_options( + int, +- char **, ++ const char **, + struct optparse *, + image_desc_t *); + void rrd_graph_script( + int, +- char **, ++ const char **, + image_desc_t *const, + int); + int rrd_graph_color( +diff --git a/src/rrd_graph_helper.c b/src/rrd_graph_helper.c +index 99cdefa65..ba90e1a6c 100644 +--- a/src/rrd_graph_helper.c ++++ b/src/rrd_graph_helper.c +@@ -1952,7 +1952,7 @@ static int parse_xport( + + void rrd_graph_script( + int argc, +- char *argv[], ++ const char **argv, + image_desc_t *const im, + int optno) + { +diff --git a/src/rrd_info.c b/src/rrd_info.c +index c0c6f68c7..eb0d4e4de 100644 +--- a/src/rrd_info.c ++++ b/src/rrd_info.c +@@ -82,7 +82,7 @@ rrd_info_t + + rrd_info_t *rrd_info( + int argc, +- char **argv) ++ const char **argv) + { + struct optparse_long longopts[] = { + {"daemon", 'd', OPTPARSE_REQUIRED}, +diff --git a/src/rrd_last.c b/src/rrd_last.c +index 026a1e828..1aae72512 100644 +--- a/src/rrd_last.c ++++ b/src/rrd_last.c +@@ -11,7 +11,7 @@ + + time_t rrd_last( + int argc, +- char **argv) ++ const char **argv) + { + char *opt_daemon = NULL; + time_t lastupdate; +diff --git a/src/rrd_lastupdate.c b/src/rrd_lastupdate.c +index ab30dcf67..4f7f4770e 100644 +--- a/src/rrd_lastupdate.c ++++ b/src/rrd_lastupdate.c +@@ -14,7 +14,7 @@ + #include "rrd_client.h" + #include + +-int rrd_lastupdate (int argc, char **argv) ++int rrd_lastupdate (int argc, const char **argv) + { + struct optparse_long longopts[] = { + {"daemon", 'd', OPTPARSE_REQUIRED}, +diff --git a/src/rrd_list.c b/src/rrd_list.c +index e743b9b7d..6e96220ea 100644 +--- a/src/rrd_list.c ++++ b/src/rrd_list.c +@@ -37,7 +37,7 @@ static char *move_past_prefix(const char *prefix, const char *string) + return (char *)&(string[index]); + } + +-static char *rrd_list_rec(int recursive, char *root, char *dirname) ++static char *rrd_list_rec(int recursive, const char *root, const char *dirname) + { + #define SANE_ASPRINTF2(_dest_str, _format, ...) \ + if (asprintf(&_dest_str, _format, __VA_ARGS__) == -1) { \ +@@ -138,7 +138,7 @@ static char *rrd_list_rec(int recursive, char *root, char *dirname) + return out; + } + +-char *rrd_list_r(int recursive, char *dirname) ++char *rrd_list_r(int recursive, const char *dirname) + { + #define SANE_ASPRINTF(_dest_str, _format, ...) \ + if (asprintf(&_dest_str, _format, __VA_ARGS__) == -1) { \ +@@ -240,7 +240,7 @@ char *rrd_list_r(int recursive, char *dirname) + return rrd_list_rec(recursive, dirname, dirname); + } + +-char *rrd_list(int argc, char **argv) ++char *rrd_list(int argc, const char **argv) + { + char *opt_daemon = NULL; + int status; +diff --git a/src/rrd_modify.c b/src/rrd_modify.c +index a2b07f640..70ac9e77f 100644 +--- a/src/rrd_modify.c ++++ b/src/rrd_modify.c +@@ -1297,7 +1297,7 @@ static int add_rras(const rrd_t *in, rrd_t *out, const int *ds_map, + } + + int handle_modify(const rrd_t *in, const char *outfilename, +- int argc, char **argv, int optidx, ++ int argc, const char **argv, int optidx, + int newstep) { + // parse add/remove options + int rc = -1; +diff --git a/src/rrd_modify.h b/src/rrd_modify.h +index 52d8789be..64a39926e 100644 +--- a/src/rrd_modify.h ++++ b/src/rrd_modify.h +@@ -28,7 +28,7 @@ typedef struct { + } rra_mod_op_t; + + int handle_modify(const rrd_t *in, const char *outfilename, +- int argc, char **argv, int optind, ++ int argc, const char **argv, int optind, + int newstep); + + typedef union { +diff --git a/src/rrd_resize.c b/src/rrd_resize.c +index fb75d81ff..742e6d141 100644 +--- a/src/rrd_resize.c ++++ b/src/rrd_resize.c +@@ -12,9 +12,9 @@ + + int rrd_resize( + int argc, +- char **argv) ++ const char **argv) + { +- char *infilename, outfilename[11] = "resize.rrd"; ++ const char *infilename, outfilename[11] = "resize.rrd"; + rrd_t rrdold, rrdnew; + rrd_value_t buffer; + int version; +diff --git a/src/rrd_restore.c b/src/rrd_restore.c +index 85d481e0c..ebef5efe8 100644 +--- a/src/rrd_restore.c ++++ b/src/rrd_restore.c +@@ -1378,7 +1378,7 @@ int write_file( + + int rrd_restore( + int argc, +- char **argv) ++ const char **argv) + { + struct optparse_long longopts[] = { + {"range-check", 'r', OPTPARSE_NONE}, +diff --git a/src/rrd_tool.c b/src/rrd_tool.c +index cc6119d9a..56321ee1a 100644 +--- a/src/rrd_tool.c ++++ b/src/rrd_tool.c +@@ -22,16 +22,16 @@ + + + static void PrintUsage( +- char *cmd); ++ const char *cmd); + static int CountArgs( + char *aLine); + static int CreateArgs( ++ const char *, + char *, +- char *, +- char **); ++ const char **); + static int HandleInputLine( + int, +- char **, ++ const char **, + FILE *); + int RemoteMode = 0; + int ChangeRoot = 0; +@@ -42,7 +42,7 @@ int ChangeRoot = 0; + + + static void PrintUsage( +- char *cmd) ++ const char *cmd) + { + + #ifdef BUILD_DATE +@@ -443,11 +443,11 @@ static char *fgetslong( + + int main( + int argc, +- char *argv[]) ++ const char *argv[]) + { +- char **myargv; ++ const char **myargv; + char *aLine; +- char *firstdir = ""; ++ const char *firstdir = ""; + + #ifdef MUST_DISABLE_SIGFPE + signal(SIGFPE, SIG_IGN); +@@ -526,7 +526,7 @@ int main( + printf("ERROR: not enough arguments\n"); + continue; + } +- if ((myargv = (char **) malloc((argc + 1) * ++ if ((myargv = malloc((argc + 1) * + sizeof(char *))) == NULL) { + perror("malloc"); + exit(1); +@@ -572,7 +572,7 @@ int main( + resolving them portably is not really simple. */ + static int HandleInputLine( + int argc, +- char **argv, ++ const char **argv, + FILE * out) + { + #if defined(HAVE_OPENDIR) && defined (HAVE_READDIR) +@@ -887,12 +887,12 @@ static int CountArgs( + * CreateArgs - take a string (aLine) and tokenize + */ + static int CreateArgs( +- char *pName, ++ const char *pName, + char *aLine, +- char **argv) ++ const char **argv) + { + char *getP, *putP; +- char **pargv = argv; ++ const char **pargv = argv; + char Quote = 0; + int inArg = 0; + int len; +diff --git a/src/rrd_tune.c b/src/rrd_tune.c +index 198817f37..dd3f3f7cb 100644 +--- a/src/rrd_tune.c ++++ b/src/rrd_tune.c +@@ -71,7 +71,7 @@ static int set_hwsmootharg( + + int rrd_tune( + int argc, +- char **argv) ++ const char **argv) + { + char *opt_daemon = NULL; + const char *in_filename = NULL; +diff --git a/src/rrd_update.c b/src/rrd_update.c +index fbbe2820a..bb9a0602c 100644 +--- a/src/rrd_update.c ++++ b/src/rrd_update.c +@@ -299,7 +299,7 @@ static void initialize_time( + + rrd_info_t *rrd_update_v( + int argc, +- char **argv) ++ const char **argv) + { + struct optparse_long longopts[] = { + {"template", 't', OPTPARSE_REQUIRED}, +@@ -674,7 +674,7 @@ static int rrd_template_update(const char *filename, /* {{{ */ + + int rrd_update( + int argc, +- char **argv) ++ const char **argv) + { + struct optparse_long longopts[] = { + {"template", 't', OPTPARSE_REQUIRED}, +diff --git a/src/rrd_xport.c b/src/rrd_xport.c +index d15d33dd9..93c02f926 100644 +--- a/src/rrd_xport.c ++++ b/src/rrd_xport.c +@@ -73,7 +73,7 @@ static int rrd_xport_format_addprints( + + int rrd_xport( + int argc, +- char **argv, ++ const char **argv, + int UNUSED(*xsize), + time_t *start, + time_t *end, /* which time frame do you want ? +diff --git a/src/rrdupdate.c b/src/rrdupdate.c +index cbbf48cc1..e368516c8 100644 +--- a/src/rrdupdate.c ++++ b/src/rrdupdate.c +@@ -20,19 +20,20 @@ int main( + int argc, + char **argv) + { ++ const char **cargv = (const char **)argv; + char *name=basename(argv[0]); + rrd_info_t *info; + + if (!strcmp(name, "rrdcreate")) { +- rrd_create(argc, argv); ++ rrd_create(argc, cargv); + } + else if (!strcmp(name, "rrdinfo")) { +- info=rrd_info(argc, argv); ++ info=rrd_info(argc, cargv); + rrd_info_print(info); + rrd_info_free(info); + } + else { +- rrd_update(argc, argv); ++ rrd_update(argc, cargv); + } + + if (rrd_test_error()) { -- 2.39.2 From bernd at kuhls.net Tue May 14 21:54:04 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:54:04 +0200 Subject: [Buildroot] [PATCH 3/5] package/collectd: fix build with gcc 14.x In-Reply-To: <20240514215406.2866563-1-bernd@kuhls.net> References: <20240514215406.2866563-1-bernd@kuhls.net> Message-ID: <20240514215406.2866563-3-bernd@kuhls.net> Signed-off-by: Bernd Kuhls --- ...c-nut-c-detect-int-types-required-by.patch | 153 ++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 package/collectd/0003-configure.ac-src-nut-c-detect-int-types-required-by.patch diff --git a/package/collectd/0003-configure.ac-src-nut-c-detect-int-types-required-by.patch b/package/collectd/0003-configure.ac-src-nut-c-detect-int-types-required-by.patch new file mode 100644 index 0000000000..f08dc1b731 --- /dev/null +++ b/package/collectd/0003-configure.ac-src-nut-c-detect-int-types-required-by.patch @@ -0,0 +1,153 @@ +From d409ffa2a64cac3fc2abe2bb86ec3a80cb34d0a6 Mon Sep 17 00:00:00 2001 +From: Jim Klimov +Date: Wed, 31 Aug 2022 11:40:01 +0200 +Subject: [PATCH] configure.ac, src/nut.c: detect int types required by NUT API + we build against + +Either use the stricter int types required by NUT headers since v2.8.0 release, +or the relaxed (arch-dependent) types required by older NUT releases - depending +on which NUT API version the collectd is building against at the moment. + +Inspired by discussion at https://github.com/networkupstools/nut/issues/1638 + +Upstream: https://github.com/collectd/collectd/commit/d409ffa2a64cac3fc2abe2bb86ec3a80cb34d0a6 + +Signed-off-by: Bernd Kuhls +--- + configure.ac | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++ + src/nut.c | 4 +-- + 2 files changed, 102 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 1737aff316..f88ed26505 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -5881,6 +5881,106 @@ if test "x$with_libupsclient" = "xyes"; then + CPPFLAGS="$SAVE_CPPFLAGS" + fi + ++if test "x$with_libupsclient" = "xyes"; then ++ dnl The m4 script logic below is modelled after NUT_FUNC_GETNAMEINFO_ARGTYPES ++ dnl further originating in curl autoconf scripts or beyond. See there for an ++ dnl example of general-case logic to handle matching of numerous possible ++ dnl data types for each argument in supported API variants. ++ dnl Note: techically compiler complains here not about int types themselves, ++ dnl but about pointers to such data. We know "out of band" that e.g. NUT ++ dnl change to "size_t" happened at once for all arguments in the API, so ++ dnl simplify the handling here and now with that assumption. ++ AC_LANG_PUSH([C]) ++ SAVE_CPPFLAGS="$CPPFLAGS" ++ SAVE_LDFLAGS="$LDFLAGS" ++ SAVE_CFLAGS="$CFLAGS" ++ CPPFLAGS="$CPPFLAGS $with_libupsclient_cflags" ++ LDFLAGS="$LDFLAGS $with_libupsclient_libs" ++ CFLAGS="$CFLAGS $with_libupsclient_cflags" ++ if test "x$GCC" = "xyes"; then ++ CFLAGS="$CFLAGS -Wall -Werror" ++ fi ++ ++ dnl upscli_splitname() *is* there forever (2007 or older) ++ dnl but int types e.g. "port" changed in NUT 2.8.0 ++ dnl Also this is the UPSCONN_t::port field type: ++ AC_CACHE_CHECK([int type of port argument for NUT upscli_splitname], ++ [collectd_cv_func_upscli_splitname_args], [ ++ collectd_cv_func_upscli_splitname_args="unknown" ++ for port_arg in 'uint16_t' 'int' ; do ++ AC_COMPILE_IFELSE([ ++ AC_LANG_PROGRAM([ ++#include ++/* int upscli_splitname(const char *buf, char **upsname, char **hostname, *port); */ ++ ],[ ++const char *origname = "ups at localhost:3493"; ++$port_arg port=0; ++char *hostname; ++char *upsname; ++int res = upscli_splitname(origname, &upsname, &hostname, &port); ++return(res); ++ ]) ++ ],[ ++ collectd_cv_func_upscli_splitname_args="$port_arg" ++ break ++ ]) ++ done ++ ]) ++ ++ AS_IF([test x"$collectd_cv_func_upscli_splitname_args" = xunknown], ++ [AC_MSG_WARN([Can not find proper port type for upscli_splitname()]) ++ with_libupsclient="no (required data types for NUT API were not detected)"], ++ [AC_DEFINE_UNQUOTED(NUT_PORT_TYPE, $collectd_cv_func_upscli_splitname_args, ++ [Define to the integer type for TCP/IP ports used by NUT API we build against]) ++ ]) ++ ++ ++ AC_CACHE_CHECK([int type of length/numbering arguments for NUT upscli_list_next], ++ [collectd_cv_func_upscli_list_next_args], [ ++ collectd_cv_func_upscli_list_next_args="unknown" ++ for size_arg in 'size_t' 'unsigned int' 'int' ; do ++ AC_COMPILE_IFELSE([ ++ AC_LANG_PROGRAM([ ++#include ++/* int upscli_list_next(UPSCONN_t *ups, numq, const char **query, *numa, char ***answer); */ ++ ++#if HAVE_UPSCONN_T ++typedef UPSCONN_t collectd_upsconn_t; ++#elif HAVE_UPSCONN ++typedef UPSCONN collectd_upsconn_t; ++#else ++#error "Unable to determine the UPS connection type." ++#endif ++ ],[ ++$size_arg query_num=0; ++$size_arg answer_num=0; ++const char * query; ++char** answer; ++collectd_upsconn_t ups; ++int res = upscli_list_next(&ups, query_num, &query, &answer_num, &answer); ++return(res); ++ ]) ++ ],[ ++ collectd_cv_func_upscli_list_next_args="$size_arg" ++ break ++ ]) ++ done ++ ]) ++ ++ AS_IF([test x"$collectd_cv_func_upscli_list_next_args" = xunknown], ++ [AC_MSG_WARN([Can not find proper type for array sizes and string lengths used by upscli_list_next()]) ++ with_libupsclient="no (required data types for NUT API were not detected)"], ++ [AC_DEFINE_UNQUOTED(NUT_SIZE_TYPE, $collectd_cv_func_upscli_list_next_args, ++ [Define to the integer type for array sizes and string lengths used by NUT API we build against]) ++ ]) ++ ++ ++ CPPFLAGS="$SAVE_CPPFLAGS" ++ LDFLAGS="$SAVE_LDFLAGS" ++ CFLAGS="$SAVE_CFLAGS" ++ AC_LANG_POP([C]) ++fi ++ + if test "x$with_libupsclient" = "xyes"; then + BUILD_WITH_LIBUPSCLIENT_CFLAGS="$with_libupsclient_cflags" + BUILD_WITH_LIBUPSCLIENT_LIBS="$with_libupsclient_libs" +diff --git a/src/nut.c b/src/nut.c +index a9a6c98380..1a29438b07 100644 +--- a/src/nut.c ++++ b/src/nut.c +@@ -46,7 +46,7 @@ struct nut_ups_s { + collectd_upsconn_t *conn; + char *upsname; + char *hostname; +- int port; ++ NUT_PORT_TYPE port; + nut_ups_t *next; + }; + +@@ -250,7 +250,7 @@ static int nut_read(user_data_t *user_data) { + const char *query[3] = {"VAR", ups->upsname, NULL}; + unsigned int query_num = 2; + char **answer; +- unsigned int answer_num; ++ NUT_SIZE_TYPE answer_num; + int status; + + /* (Re-)Connect if we have no connection */ -- 2.39.2 From bernd at kuhls.net Tue May 14 21:54:05 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:54:05 +0200 Subject: [Buildroot] [PATCH 4/5] package/sofia-sip: fix build with gcc 14.x In-Reply-To: <20240514215406.2866563-1-bernd@kuhls.net> References: <20240514215406.2866563-1-bernd@kuhls.net> Message-ID: <20240514215406.2866563-4-bernd@kuhls.net> Signed-off-by: Bernd Kuhls --- ...mpatible-pointer-type-in-sip_basic-c.patch | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 package/sofia-sip/0001-Fix-incompatible-pointer-type-in-sip_basic-c.patch diff --git a/package/sofia-sip/0001-Fix-incompatible-pointer-type-in-sip_basic-c.patch b/package/sofia-sip/0001-Fix-incompatible-pointer-type-in-sip_basic-c.patch new file mode 100644 index 0000000000..7f890fd27b --- /dev/null +++ b/package/sofia-sip/0001-Fix-incompatible-pointer-type-in-sip_basic-c.patch @@ -0,0 +1,27 @@ +From 46b02f0655af0a9594e805f09a8ee99278f84777 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Tomi=20L=C3=A4hteenm=C3=A4ki?= +Date: Mon, 19 Feb 2024 09:06:20 +0200 +Subject: [PATCH] Fix incompatible pointer type in sip_basic.c + +Closes #248 + +Upstream: https://github.com/freeswitch/sofia-sip/pull/249 + +Signed-off-by: Bernd Kuhls +--- + libsofia-sip-ua/sip/sip_basic.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libsofia-sip-ua/sip/sip_basic.c b/libsofia-sip-ua/sip/sip_basic.c +index 3444fb25..82e824e3 100644 +--- a/libsofia-sip-ua/sip/sip_basic.c ++++ b/libsofia-sip-ua/sip/sip_basic.c +@@ -2901,7 +2901,7 @@ issize_t sip_identity_d(su_home_t *home, sip_header_t *h, char *s, isize_t slen) + ext = strchr(ppt, ';'); + + if (ext) { +- msg_param_t *params = su_alloc(home, sizeof(msg_param_t)); ++ msg_param_t const *params = su_alloc(home, sizeof(msg_param_t)); + if (msg_params_d(home, &ext, ¶ms) >= 0) { + id->id_info_params = params; + } -- 2.39.2 From bernd at kuhls.net Tue May 14 21:54:06 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:54:06 +0200 Subject: [Buildroot] [PATCH 5/5] package/unixodbc: fix build with gcc 14.x In-Reply-To: <20240514215406.2866563-1-bernd@kuhls.net> References: <20240514215406.2866563-1-bernd@kuhls.net> Message-ID: <20240514215406.2866563-5-bernd@kuhls.net> Signed-off-by: Bernd Kuhls --- ...r-Fix-incompatible-pointer-to-intege.patch | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 package/unixodbc/0001-PostgreSQL-driver-Fix-incompatible-pointer-to-intege.patch diff --git a/package/unixodbc/0001-PostgreSQL-driver-Fix-incompatible-pointer-to-intege.patch b/package/unixodbc/0001-PostgreSQL-driver-Fix-incompatible-pointer-to-intege.patch new file mode 100644 index 0000000000..8efe6dae4e --- /dev/null +++ b/package/unixodbc/0001-PostgreSQL-driver-Fix-incompatible-pointer-to-intege.patch @@ -0,0 +1,49 @@ +From 45f501e1be2db6b017cc242c79bfb9de32b332a1 Mon Sep 17 00:00:00 2001 +From: Florian Weimer +Date: Mon, 29 Jan 2024 08:27:29 +0100 +Subject: [PATCH] PostgreSQL driver: Fix incompatible pointer-to-integer types + +These result in out-of-bounds stack writes on 64-bit architectures +(caller has 4 bytes, callee writes 8 bytes), and seem to have gone +unnoticed on little-endian architectures (although big-endian +architectures must be broken). + +This change is required to avoid a build failure with GCC 14. + +Upstream: https://github.com/lurcher/unixODBC/commit/45f501e1be2db6b017cc242c79bfb9de32b332a1 + +Signed-off-by: Bernd Kuhls +--- + Drivers/Postgre7.1/info.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/Drivers/Postgre7.1/info.c b/Drivers/Postgre7.1/info.c +index 63ac91f..2216ecd 100644 +--- a/Drivers/Postgre7.1/info.c ++++ b/Drivers/Postgre7.1/info.c +@@ -1779,14 +1779,14 @@ char *table_name; + char index_name[MAX_INFO_STRING]; + short fields_vector[8]; + char isunique[10], isclustered[10]; +-SDWORD index_name_len, fields_vector_len; ++SQLLEN index_name_len, fields_vector_len; + TupleNode *row; + int i; + HSTMT hcol_stmt; + StatementClass *col_stmt, *indx_stmt; + char column_name[MAX_INFO_STRING], relhasrules[MAX_INFO_STRING]; + char **column_names = 0; +-Int4 column_name_len; ++SQLLEN column_name_len; + int total_columns = 0; + char error = TRUE; + ConnInfo *ci; +@@ -2136,7 +2136,7 @@ HSTMT htbl_stmt; + StatementClass *tbl_stmt; + char tables_query[STD_STATEMENT_LEN]; + char attname[MAX_INFO_STRING]; +-SDWORD attname_len; ++SQLLEN attname_len; + char pktab[MAX_TABLE_LEN + 1]; + Int2 result_cols; + -- 2.39.2 From bernd at kuhls.net Tue May 14 21:55:16 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:55:16 +0200 Subject: [Buildroot] [PATCH 1/4] package/intel-mediadriver: bump version to 24.2.2 Message-ID: <20240514215519.2866643-1-bernd@kuhls.net> Signed-off-by: Bernd Kuhls --- package/intel-mediadriver/intel-mediadriver.hash | 2 +- package/intel-mediadriver/intel-mediadriver.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/intel-mediadriver/intel-mediadriver.hash b/package/intel-mediadriver/intel-mediadriver.hash index fcc7b9dfbb..8a23f9cd7e 100644 --- a/package/intel-mediadriver/intel-mediadriver.hash +++ b/package/intel-mediadriver/intel-mediadriver.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 94dfcc4d2e6f75d0b9b9a5c95c1ff5d69178440888ff2ab98ec095d4adf8e955 intel-media-24.2.1.tar.gz +sha256 7d0d43e201706ab2dc62741b7873d52dc3779a7b1187b5a321cd0a37223b2b8c intel-media-24.2.2.tar.gz sha256 74979d5aaee78b8da82e3aafd415a216b6131dfff6d95d6930927c8a4e3bded3 LICENSE.md diff --git a/package/intel-mediadriver/intel-mediadriver.mk b/package/intel-mediadriver/intel-mediadriver.mk index c1a9c54c61..f074261bbc 100644 --- a/package/intel-mediadriver/intel-mediadriver.mk +++ b/package/intel-mediadriver/intel-mediadriver.mk @@ -6,7 +6,7 @@ # based on https://software.intel.com/en-us/articles/build-and-debug-open-source-media-stack -INTEL_MEDIADRIVER_VERSION = 24.2.1 +INTEL_MEDIADRIVER_VERSION = 24.2.2 INTEL_MEDIADRIVER_SITE = https://github.com/intel/media-driver/archive INTEL_MEDIADRIVER_SOURCE= intel-media-$(INTEL_MEDIADRIVER_VERSION).tar.gz INTEL_MEDIADRIVER_LICENSE = MIT, BSD-3-Clause -- 2.39.2 From bernd at kuhls.net Tue May 14 21:55:17 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:55:17 +0200 Subject: [Buildroot] [PATCH 2/4] package/libvpl: bump version to 2.11.0 In-Reply-To: <20240514215519.2866643-1-bernd@kuhls.net> References: <20240514215519.2866643-1-bernd@kuhls.net> Message-ID: <20240514215519.2866643-2-bernd@kuhls.net> Signed-off-by: Bernd Kuhls --- package/libvpl/libvpl.hash | 2 +- package/libvpl/libvpl.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/libvpl/libvpl.hash b/package/libvpl/libvpl.hash index 19407e01ba..f8a89f962b 100644 --- a/package/libvpl/libvpl.hash +++ b/package/libvpl/libvpl.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 ad956ea7ecf14614325f59dfb44cc5ba08e2fcac373342d61c7db152ac651253 libvpl-2.10.2.tar.gz +sha256 3e322ba6b3593da03e1cfdb8062f9f1545f6d9b1de39e36876de5934b26737d2 libvpl-2.11.0.tar.gz sha256 bf1cfac2e2792b6e1e995ce103d70796aecaf2ec7e4c5fe5474f7acec7b4a677 LICENSE diff --git a/package/libvpl/libvpl.mk b/package/libvpl/libvpl.mk index 34cd40cb4c..b8ebfd2b59 100644 --- a/package/libvpl/libvpl.mk +++ b/package/libvpl/libvpl.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBVPL_VERSION = 2.10.2 +LIBVPL_VERSION = 2.11.0 LIBVPL_SITE = $(call github,intel,libvpl,v$(LIBVPL_VERSION)) LIBVPL_LICENSE = MIT LIBVPL_LICENSE_FILES = LICENSE -- 2.39.2 From bernd at kuhls.net Tue May 14 21:55:18 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:55:18 +0200 Subject: [Buildroot] [PATCH 3/4] package/onevpl-intel-gpu: rename package to intel-vpl-gpu-rt In-Reply-To: <20240514215519.2866643-1-bernd@kuhls.net> References: <20240514215519.2866643-1-bernd@kuhls.net> Message-ID: <20240514215519.2866643-3-bernd@kuhls.net> Upstream renamed the package and moved the github repo: https://github.com/intel/vpl-gpu-rt/commit/74dbcc6240e8315ad927f642a5d733e6a515a1d4 Signed-off-by: Bernd Kuhls --- Config.in.legacy | 8 ++++++++ DEVELOPERS | 2 +- package/Config.in | 2 +- .../Config.in | 13 +++++++------ .../intel-vpl-gpu-rt.hash} | 2 +- package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.mk | 15 +++++++++++++++ package/onevpl-intel-gpu/onevpl-intel-gpu.mk | 15 --------------- 7 files changed, 33 insertions(+), 24 deletions(-) rename package/{onevpl-intel-gpu => intel-vpl-gpu-rt}/Config.in (69%) rename package/{onevpl-intel-gpu/onevpl-intel-gpu.hash => intel-vpl-gpu-rt/intel-vpl-gpu-rt.hash} (80%) create mode 100644 package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.mk delete mode 100644 package/onevpl-intel-gpu/onevpl-intel-gpu.mk diff --git a/Config.in.legacy b/Config.in.legacy index 46f7a304cb..6dac729f95 100644 --- a/Config.in.legacy +++ b/Config.in.legacy @@ -146,6 +146,14 @@ endif comment "Legacy options removed in 2024.05" +config BR2_PACKAGE_ONEVPL_INTEL_GPU + bool "onevpl-intel-gpu has been renamed" + select BR2_LEGACY + select BR2_PACKAGE_INTEL_VPL_GPU_RT + help + The onevpl-intel-gpu package has been renamed to + intel-vpl-gpu-rt. + config BR2_GCC_VERSION_11_X bool "gcc 11.x support removed" select BR2_LEGACY diff --git a/DEVELOPERS b/DEVELOPERS index fbd1209830..c870863609 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -384,6 +384,7 @@ F: package/intel-gmmlib/ F: package/intel-mediadriver/ F: package/intel-mediasdk/ F: package/intel-microcode/ +F: package/intel-vpl-gpu-rt/ F: package/jsoncpp/ F: package/kodi* F: package/lame/ @@ -455,7 +456,6 @@ F: package/monero/ F: package/mpg123/ F: package/ntp/ F: package/nut/ -F: package/onevpl-intel-gpu/ F: package/opus/ F: package/p2pool/ F: package/pciutils/ diff --git a/package/Config.in b/package/Config.in index 2d826b45dc..e3eadc2ff5 100644 --- a/package/Config.in +++ b/package/Config.in @@ -1665,6 +1665,7 @@ menu "Graphics" source "package/intel-gmmlib/Config.in" source "package/intel-mediadriver/Config.in" source "package/intel-mediasdk/Config.in" + source "package/intel-vpl-gpu-rt/Config.in" source "package/irrlicht/Config.in" source "package/jasper/Config.in" source "package/jbig2dec/Config.in" @@ -1711,7 +1712,6 @@ menu "Graphics" source "package/libvpl/Config.in" source "package/libwpe/Config.in" source "package/menu-cache/Config.in" - source "package/onevpl-intel-gpu/Config.in" source "package/opencl-clhpp/Config.in" source "package/opencv3/Config.in" source "package/opencv4/Config.in" diff --git a/package/onevpl-intel-gpu/Config.in b/package/intel-vpl-gpu-rt/Config.in similarity index 69% rename from package/onevpl-intel-gpu/Config.in rename to package/intel-vpl-gpu-rt/Config.in index 740e954ee5..da26ea6aa5 100644 --- a/package/onevpl-intel-gpu/Config.in +++ b/package/intel-vpl-gpu-rt/Config.in @@ -1,5 +1,5 @@ -config BR2_PACKAGE_ONEVPL_INTEL_GPU - bool "onevpl-intel-gpu" +config BR2_PACKAGE_INTEL_VPL_GPU_RT + bool "intel-vpl-gpu-rt" depends on BR2_x86_64 # intel-mediadriver depends on BR2_PACKAGE_LIBVPL_ARCH_SUPPORTS # libvpl depends on BR2_INSTALL_LIBSTDCPP # libvpl @@ -12,12 +12,13 @@ config BR2_PACKAGE_ONEVPL_INTEL_GPU select BR2_PACKAGE_LIBVA select BR2_PACKAGE_LIBVPL help - Intel? oneVPL GPU Runtime is a Runtime implementation of - oneVPL API for Intel Gen GPUs, starting with Tiger Lake. + Intel? Video Processing Library (Intel? VPL) GPU Runtime is a + Runtime implementation of Intel? VPL API for Intel Gen GPUs, + starting with Tiger Lake. - https://github.com/oneapi-src/oneVPL-intel-gpu + https://github.com/intel/vpl-gpu-rt -comment "onevpl-intel-gpu needs a toolchain w/ dynamic library, gcc >= 7, C++, NPTL" +comment "intel-vpl-gpu-rt needs a toolchain w/ dynamic library, gcc >= 7, C++, NPTL" depends on BR2_x86_64 depends on BR2_PACKAGE_LIBVPL_ARCH_SUPPORTS depends on BR2_TOOLCHAIN_HAS_SYNC_1 diff --git a/package/onevpl-intel-gpu/onevpl-intel-gpu.hash b/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.hash similarity index 80% rename from package/onevpl-intel-gpu/onevpl-intel-gpu.hash rename to package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.hash index 59b1c5a23c..6b57b4674c 100644 --- a/package/onevpl-intel-gpu/onevpl-intel-gpu.hash +++ b/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 b261d87d91a56a6a462f6a129ddd97945a49637995ee6aa67ebd9b26c0a3c1a0 onevpl-intel-gpu-24.2.1.tar.gz +sha256 b261d87d91a56a6a462f6a129ddd97945a49637995ee6aa67ebd9b26c0a3c1a0 intel-vpl-gpu-rt-24.2.1.tar.gz sha256 c31c3cc5fd66d1250dbca1c3d9011a9f874537442ac71c8de80f2f0fed13f297 LICENSE diff --git a/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.mk b/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.mk new file mode 100644 index 0000000000..e3ca68926e --- /dev/null +++ b/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# intel-vpl-gpu-rt +# +################################################################################ + +INTEL_VPL_GPU_RT_VERSION = 24.2.1 +INTEL_VPL_GPU_RT_SITE = $(call github,intel,vpl-gpu-rt,intel-onevpl-$(INTEL_VPL_GPU_RT_VERSION)) +INTEL_VPL_GPU_RT_LICENSE = MIT +INTEL_VPL_GPU_RT_LICENSE_FILES = LICENSE +INTEL_VPL_GPU_RT_CPE_ID_VENDOR = intel +INTEL_VPL_GPU_RT_CPE_ID_PRODUCT = onevpl_gpu_runtime +INTEL_VPL_GPU_RT_DEPENDENCIES = libva libvpl + +$(eval $(cmake-package)) diff --git a/package/onevpl-intel-gpu/onevpl-intel-gpu.mk b/package/onevpl-intel-gpu/onevpl-intel-gpu.mk deleted file mode 100644 index a68e628182..0000000000 --- a/package/onevpl-intel-gpu/onevpl-intel-gpu.mk +++ /dev/null @@ -1,15 +0,0 @@ -################################################################################ -# -# onevpl-intel-gpu -# -################################################################################ - -ONEVPL_INTEL_GPU_VERSION = 24.2.1 -ONEVPL_INTEL_GPU_SITE = $(call github,oneapi-src,oneVPL-intel-gpu,intel-onevpl-$(ONEVPL_INTEL_GPU_VERSION)) -ONEVPL_INTEL_GPU_LICENSE = MIT -ONEVPL_INTEL_GPU_LICENSE_FILES = LICENSE -ONEVPL_INTEL_GPU_CPE_ID_VENDOR = intel -ONEVPL_INTEL_GPU_CPE_ID_PRODUCT = onevpl_gpu_runtime -ONEVPL_INTEL_GPU_DEPENDENCIES = libva libvpl - -$(eval $(cmake-package)) -- 2.39.2 From bernd at kuhls.net Tue May 14 21:55:19 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:55:19 +0200 Subject: [Buildroot] [PATCH 4/4] package/intel-vpl-gpu-rt: bump version to 24.2.2 In-Reply-To: <20240514215519.2866643-1-bernd@kuhls.net> References: <20240514215519.2866643-1-bernd@kuhls.net> Message-ID: <20240514215519.2866643-4-bernd@kuhls.net> Signed-off-by: Bernd Kuhls --- package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.hash | 2 +- package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.hash b/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.hash index 6b57b4674c..ea0bc0ae24 100644 --- a/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.hash +++ b/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 b261d87d91a56a6a462f6a129ddd97945a49637995ee6aa67ebd9b26c0a3c1a0 intel-vpl-gpu-rt-24.2.1.tar.gz +sha256 fc83bdea13a176812744e4c4c731b2387f03eafaa7375816a60555718a2b4dce intel-vpl-gpu-rt-24.2.2.tar.gz sha256 c31c3cc5fd66d1250dbca1c3d9011a9f874537442ac71c8de80f2f0fed13f297 LICENSE diff --git a/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.mk b/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.mk index e3ca68926e..2570646359 100644 --- a/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.mk +++ b/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.mk @@ -4,7 +4,7 @@ # ################################################################################ -INTEL_VPL_GPU_RT_VERSION = 24.2.1 +INTEL_VPL_GPU_RT_VERSION = 24.2.2 INTEL_VPL_GPU_RT_SITE = $(call github,intel,vpl-gpu-rt,intel-onevpl-$(INTEL_VPL_GPU_RT_VERSION)) INTEL_VPL_GPU_RT_LICENSE = MIT INTEL_VPL_GPU_RT_LICENSE_FILES = LICENSE -- 2.39.2 From bernd at kuhls.net Tue May 14 21:55:46 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:55:46 +0200 Subject: [Buildroot] [PATCH 1/1] package/kodi-pvr-waipu: bump version to 21.6.1-Omega Message-ID: <20240514215546.2866676-1-bernd@kuhls.net> Signed-off-by: Bernd Kuhls --- package/kodi-pvr-waipu/kodi-pvr-waipu.hash | 2 +- package/kodi-pvr-waipu/kodi-pvr-waipu.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-waipu/kodi-pvr-waipu.hash b/package/kodi-pvr-waipu/kodi-pvr-waipu.hash index 2c682c884c..6377f36e80 100644 --- a/package/kodi-pvr-waipu/kodi-pvr-waipu.hash +++ b/package/kodi-pvr-waipu/kodi-pvr-waipu.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 0db467d4986c36efb0c837dd728fc6322d3021fe2d8c93da9355b63f210fa0ca kodi-pvr-waipu-21.6.0-Omega.tar.gz +sha256 96c558f02d820c43994da05a89693f3e787c2adb8faa2ff28127a6e97d33525c kodi-pvr-waipu-21.6.1-Omega.tar.gz sha256 4202d4fb329f58c83ba921b56d7071e37f7df3f15b3820a3a04ef8eee49f54d2 pvr.waipu/LICENSE.txt diff --git a/package/kodi-pvr-waipu/kodi-pvr-waipu.mk b/package/kodi-pvr-waipu/kodi-pvr-waipu.mk index 4e9f8e00cf..222abcaa1b 100644 --- a/package/kodi-pvr-waipu/kodi-pvr-waipu.mk +++ b/package/kodi-pvr-waipu/kodi-pvr-waipu.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_WAIPU_VERSION = 21.6.0-Omega +KODI_PVR_WAIPU_VERSION = 21.6.1-Omega KODI_PVR_WAIPU_SITE = $(call github,flubshi,pvr.waipu,$(KODI_PVR_WAIPU_VERSION)) KODI_PVR_WAIPU_LICENSE = GPL-2.0+ KODI_PVR_WAIPU_LICENSE_FILES = pvr.waipu/LICENSE.txt -- 2.39.2 From bernd at kuhls.net Tue May 14 21:56:15 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:56:15 +0200 Subject: [Buildroot] [PATCH 1/1] package/{mesa3d, mesa3d-headers}: bump version to 24.0.7 Message-ID: <20240514215615.2866697-1-bernd@kuhls.net> Release notes: https://lists.freedesktop.org/archives/mesa-announce/2024-May/000758.html Signed-off-by: Bernd Kuhls --- package/mesa3d-headers/mesa3d-headers.mk | 2 +- package/mesa3d/mesa3d.hash | 6 +++--- package/mesa3d/mesa3d.mk | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package/mesa3d-headers/mesa3d-headers.mk b/package/mesa3d-headers/mesa3d-headers.mk index e1f6211e17..e35774a942 100644 --- a/package/mesa3d-headers/mesa3d-headers.mk +++ b/package/mesa3d-headers/mesa3d-headers.mk @@ -12,7 +12,7 @@ endif # Not possible to directly refer to mesa3d variables, because of # first/second expansion trickery... -MESA3D_HEADERS_VERSION = 24.0.6 +MESA3D_HEADERS_VERSION = 24.0.7 MESA3D_HEADERS_SOURCE = mesa-$(MESA3D_HEADERS_VERSION).tar.xz MESA3D_HEADERS_SITE = https://archive.mesa3d.org MESA3D_HEADERS_DL_SUBDIR = mesa3d diff --git a/package/mesa3d/mesa3d.hash b/package/mesa3d/mesa3d.hash index fb3df96555..f2c25464f4 100644 --- a/package/mesa3d/mesa3d.hash +++ b/package/mesa3d/mesa3d.hash @@ -1,5 +1,5 @@ -# From https://lists.freedesktop.org/archives/mesa-announce/2024-April/000755.html -sha256 8b7a92dbe6468c18f2383700135b5fe9de836cdf0cc8fd7dbae3c7110237d604 mesa-24.0.6.tar.xz -sha512 60fcc77132c3cb0c98e650d97d3324bfd18abe7f8f8a3aa5209f71b2fddd94510f939bbf5272b2241749307184d5badde9da4842be57ce13f5760875885ea6fc mesa-24.0.6.tar.xz +# From https://lists.freedesktop.org/archives/mesa-announce/2024-May/000758.html +sha256 7454425f1ed4a6f1b5b107e1672b30c88b22ea0efea000ae2c7d96db93f6c26a mesa-24.0.7.tar.xz +sha512 77b0fae80ab0a07e2e528c113eadef0e3004b8df3e6e98fffe6fc2d8ac39f5ce7fa38ebe5c2ae32bfbac993dd7cbe288ace18ebb03cf2fb445fe7114f74dd45c mesa-24.0.7.tar.xz # License sha256 a00275a53178e2645fb65be99a785c110513446a5071ff2c698ed260ad917d75 docs/license.rst diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk index 39cbb4c23b..6bccdaed04 100644 --- a/package/mesa3d/mesa3d.mk +++ b/package/mesa3d/mesa3d.mk @@ -5,7 +5,7 @@ ################################################################################ # When updating the version, please also update mesa3d-headers -MESA3D_VERSION = 24.0.6 +MESA3D_VERSION = 24.0.7 MESA3D_SOURCE = mesa-$(MESA3D_VERSION).tar.xz MESA3D_SITE = https://archive.mesa3d.org MESA3D_LICENSE = MIT, SGI, Khronos -- 2.39.2 From bernd at kuhls.net Tue May 14 21:56:36 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:56:36 +0200 Subject: [Buildroot] [PATCH 1/1] package/squid: security bump version to 6.9 Message-ID: <20240514215636.2866720-1-bernd@kuhls.net> Fixes CVE-2024-25111: https://github.com/squid-cache/squid/security/advisories/GHSA-72c2-c3wm-8qxc Signed-off-by: Bernd Kuhls --- package/squid/squid.hash | 6 +++--- package/squid/squid.mk | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/squid/squid.hash b/package/squid/squid.hash index 4a8ea5d550..ed78933306 100644 --- a/package/squid/squid.hash +++ b/package/squid/squid.hash @@ -1,6 +1,6 @@ -# From http://www.squid-cache.org/Versions/v6/squid-6.6.tar.xz.asc -md5 5a41134ee1b7e75f62088acdec92d2ca squid-6.6.tar.xz -sha1 f05e06a9dd3bf7501d2844e43d9ae1bd00e9edcc squid-6.6.tar.xz +# From http://www.squid-cache.org/Versions/v6/squid-6.9.tar.xz.asc +md5 4888e9dc75c0daa0ed526b34c055cb67 squid-6.9.tar.xz +sha1 5e73b30116ce7111589cc2b1c9bfe3c17efa2e75 squid-6.9.tar.xz # Locally calculated sha256 55bd7f9f4898153161ea1228998acb551bf840832b9e5b90fc8ecd2942420318 squid-6.6.tar.xz sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/squid/squid.mk b/package/squid/squid.mk index e325c63cb0..60eca397ec 100644 --- a/package/squid/squid.mk +++ b/package/squid/squid.mk @@ -4,7 +4,7 @@ # ################################################################################ -SQUID_VERSION = 6.6 +SQUID_VERSION = 6.9 SQUID_SOURCE = squid-$(SQUID_VERSION).tar.xz SQUID_SITE = http://www.squid-cache.org/Versions/v6 SQUID_LICENSE = GPL-2.0+ -- 2.39.2 From bernd at kuhls.net Tue May 14 21:57:12 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:57:12 +0200 Subject: [Buildroot] [PATCH 1/1] package/php: bump version to 8.3.7 Message-ID: <20240514215712.2866745-1-bernd@kuhls.net> Removed patch which is included in this release. Changelog: https://www.php.net/ChangeLog-8.php#PHP_8_3 Release notes: https://news-web.php.net/php.announce/427 Signed-off-by: Bernd Kuhls --- ...ll_stack.c-fix-build-without-pthread.patch | 39 ------------------- package/php/php.hash | 2 +- package/php/php.mk | 2 +- 3 files changed, 2 insertions(+), 41 deletions(-) delete mode 100644 package/php/0006-Zend-zend_call_stack.c-fix-build-without-pthread.patch diff --git a/package/php/0006-Zend-zend_call_stack.c-fix-build-without-pthread.patch b/package/php/0006-Zend-zend_call_stack.c-fix-build-without-pthread.patch deleted file mode 100644 index 10b0083655..0000000000 --- a/package/php/0006-Zend-zend_call_stack.c-fix-build-without-pthread.patch +++ /dev/null @@ -1,39 +0,0 @@ -From c3e37c438a11d59d858fcc7b46eac00a8074972b Mon Sep 17 00:00:00 2001 -From: Fabrice Fontaine -Date: Sat, 30 Mar 2024 17:51:55 +0100 -Subject: [PATCH] Zend/zend_call_stack.c: fix build without pthread - -Fix the following build failure without pthread raised since version -8.3.0 and -https://github.com/php/php-src/commit/a11c8a30399e90c17c287b9656c0077bc5131c9c: - -/home/buildroot/instance-0/output-1/build/php-8.3.4/Zend/zend_call_stack.c:39:11: fatal error: pthread.h: No such file or directory - 39 | # include - | ^~~~~~~~~~~ - -Fixes: - - http://autobuild.buildroot.org/results/a4ef648a9da50b26ed56d5d490e4cf5a1bfff970 - -Signed-off-by: Fabrice Fontaine -Upstream: https://github.com/php/php-src/pull/13843 ---- - Zend/zend_call_stack.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/Zend/zend_call_stack.c b/Zend/zend_call_stack.c -index 97cbed9041..97de938a0f 100644 ---- a/Zend/zend_call_stack.c -+++ b/Zend/zend_call_stack.c -@@ -35,7 +35,8 @@ - # include - # endif - #endif /* ZEND_WIN32 */ --#if defined(__linux__) || defined(__FreeBSD__) || defined(__APPLE__) || defined(__OpenBSD__) -+#if (defined(HAVE_PTHREAD_GETATTR_NP) && defined(HAVE_PTHREAD_ATTR_GETSTACK)) || \ -+ defined(__FreeBSD__) || defined(__APPLE__) || defined(__OpenBSD__) - # include - #endif - #ifdef __FreeBSD__ --- -2.43.0 - diff --git a/package/php/php.hash b/package/php/php.hash index 4378d7ed07..9b25eabd32 100644 --- a/package/php/php.hash +++ b/package/php/php.hash @@ -1,5 +1,5 @@ # From https://www.php.net/downloads.php -sha256 53c8386b2123af97626d3438b3e4058e0c5914cb74b048a6676c57ac647f5eae php-8.3.6.tar.xz +sha256 d53433c1ca6b2c8741afa7c524272e6806c1e895e5912a058494fea89988570a php-8.3.7.tar.xz # License file sha256 b42e4df5e50e6ecda1047d503d6d91d71032d09ed1027ba1ef29eed26f890c5a LICENSE diff --git a/package/php/php.mk b/package/php/php.mk index 5b26ec90e2..ad2d901dfd 100644 --- a/package/php/php.mk +++ b/package/php/php.mk @@ -4,7 +4,7 @@ # ################################################################################ -PHP_VERSION = 8.3.6 +PHP_VERSION = 8.3.7 PHP_SITE = https://www.php.net/distributions PHP_SOURCE = php-$(PHP_VERSION).tar.xz PHP_INSTALL_STAGING = YES -- 2.39.2 From bernd at kuhls.net Tue May 14 21:57:48 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:57:48 +0200 Subject: [Buildroot] [PATCH 1/1] package/cmake: bump version to 3.29.2 Message-ID: <20240514215748.2866768-1-bernd@kuhls.net> Release notes: https://cmake.org/cmake/help/latest/release/3.29.html https://www.kitware.com/cmake-3-29-0-available-for-download/ https://www.kitware.com/cmake-3-29-1-available-for-download/ https://www.kitware.com/cmake-3-29-2-available-for-download/ Updated license hash due to copyright year bump: https://gitlab.kitware.com/cmake/cmake/-/commit/4bc97565d0f97fa1a840d56ab58be46ccad175e0 and updated zlib version: https://gitlab.kitware.com/cmake/cmake/-/commit/6c2bed54f6610405e1a37aa48ff0f8d25f198076 Signed-off-by: Bernd Kuhls --- package/cmake/Config.in.host | 5 +++++ package/cmake/cmake.hash | 6 +++--- package/cmake/cmake.mk | 4 ++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/package/cmake/Config.in.host b/package/cmake/Config.in.host index c38bb9daaa..6865ce1557 100644 --- a/package/cmake/Config.in.host +++ b/package/cmake/Config.in.host @@ -51,10 +51,15 @@ config BR2_HOST_CMAKE_AT_LEAST_3_28 bool select BR2_HOST_CMAKE_AT_LEAST_3_27 +config BR2_HOST_CMAKE_AT_LEAST_3_29 + bool + select BR2_HOST_CMAKE_AT_LEAST_3_28 + # This order guarantees that the highest version is set, as kconfig # stops affecting a value on the first matching default. config BR2_HOST_CMAKE_AT_LEAST string + default "3.29" if BR2_HOST_CMAKE_AT_LEAST_3_29 default "3.28" if BR2_HOST_CMAKE_AT_LEAST_3_28 default "3.27" if BR2_HOST_CMAKE_AT_LEAST_3_27 default "3.26" if BR2_HOST_CMAKE_AT_LEAST_3_26 diff --git a/package/cmake/cmake.hash b/package/cmake/cmake.hash index 74b4a0a3a8..ebf2d2552d 100644 --- a/package/cmake/cmake.hash +++ b/package/cmake/cmake.hash @@ -1,5 +1,5 @@ -# From https://cmake.org/files/v3.28/cmake-3.28.3-SHA-256.txt -sha256 72b7570e5c8593de6ac4ab433b73eab18c5fb328880460c86ce32608141ad5c1 cmake-3.28.3.tar.gz +# From https://cmake.org/files/v3.29/cmake-3.29.2-SHA-256.txt +sha256 36db4b6926aab741ba6e4b2ea2d99c9193222132308b4dc824d4123cb730352e cmake-3.29.2.tar.gz # Locally calculated -sha256 4a01ccf2dc580ba570d02bc015bbe0ec92f1f318717aae9540ba841ba7946756 Copyright.txt +sha256 0676e30827684487aa0ea8f72f01e9460a6320fa34a2888df0ad1dd3e8a06eb8 Copyright.txt diff --git a/package/cmake/cmake.mk b/package/cmake/cmake.mk index 49d1f9fea5..8b71d55fe5 100644 --- a/package/cmake/cmake.mk +++ b/package/cmake/cmake.mk @@ -5,8 +5,8 @@ ################################################################################ # When updating the version, please also update BR2_HOST_CMAKE_AT_LEAST_X_Y -CMAKE_VERSION_MAJOR = 3.28 -CMAKE_VERSION = $(CMAKE_VERSION_MAJOR).3 +CMAKE_VERSION_MAJOR = 3.29 +CMAKE_VERSION = $(CMAKE_VERSION_MAJOR).2 CMAKE_SITE = https://cmake.org/files/v$(CMAKE_VERSION_MAJOR) CMAKE_LICENSE = BSD-3-Clause CMAKE_LICENSE_FILES = Copyright.txt -- 2.39.2 From christian at aperture.us Tue May 14 23:38:41 2024 From: christian at aperture.us (Christian Stewart) Date: Tue, 14 May 2024 16:38:41 -0700 Subject: [Buildroot] [PATCH v1 1/3] package/go-bootstrap-stage2: bump version to go1.19.13 In-Reply-To: References: <20240307015107.2908128-1-christian@aperture.us> <20240514102318.1cdeba18@windsurf> Message-ID: Hi Thomas, On Tue, May 14, 2024 at 4:39?AM Christian Stewart wrote: > On Tue, May 14, 2024, 1:23?AM Thomas Petazzoni wrote: >> >> I don't think it's this patch causing the issue, but we have a Go build >> failure in our Gitlab CI: >> >> https://gitlab.com/buildroot.org/buildroot/-/jobs/6833307823 >> >> Could you have a look? > > This looks like we need to pass -buildvcs=false to Go. I'll have a look at submitting a patch for this. I found this commit in Go which fixed & added a test to ensure that -buildvcs=false is set when GOROOT_BOOTSTRAP is set (which it was in the failing job). commit 42a46206b97ca7cf4246d3c1230a70cf42ad5bb0 Author: Bryan C. Mills Date: Fri Sep 9 17:29:12 2022 -0400 cmd/go: omit VCS stamping during bootstrap cmd/dist can't easily hard-code -buildvcs=false because not all versions of cmd/go supported for bootstrapping recognize that flag. However, we don't want to stamp the bootstrap binaries: the stamping is redundant with the VERSION file writted during bootstrapping (which is why it is normally omitted for standard-library packages and commands), and it may also interfere with building the Go repo from a source tarball or zip file. Fixes #54852. Change-Id: If223f094af137c4c202d6bf622619bd2da397ec4 Reviewed-on: https://go-review.googlesource.com/c/go/+/432435 See: https://github.com/golang/go/commit/42a46206b97ca7cf4246d3c1230a70cf42ad5bb0 However it seems that bootstrap step is failing due to -buildvcs=false not being set. I will try to debug further. This could be a Go regression. Best regards, Christian Stewart From wangdong115 at foxmail.com Wed May 15 00:52:31 2024 From: wangdong115 at foxmail.com (Dong Wang) Date: Wed, 15 May 2024 08:52:31 +0800 Subject: [Buildroot] [PATCH] configs/friendlyarm_nanopi_neo_defconfig: new defconfig Message-ID: This patch adds a new defconfig for the NanoPi NEO board made by FriendlyARM. This board is based on the Allwinner H3 SoC. See: https://wiki.friendlyelec.com/wiki/index.php/NanoPi_NEO . This patch uses the mainline kernel and u-boot for the board. The configurations are based on the previously dropped defconfig maintained by Yann E. MORIN . Signed-off-by: Dong Wang --- DEVELOPERS | 4 +++ board/friendlyarm/nanopi-neo/boot.cmd | 5 +++ board/friendlyarm/nanopi-neo/genimage.cfg | 36 +++++++++++++++++++ board/friendlyarm/nanopi-neo/readme.txt | 41 +++++++++++++++++++++ configs/friendlyarm_nanopi_neo_defconfig | 44 +++++++++++++++++++++++ 5 files changed, 130 insertions(+) create mode 100644 board/friendlyarm/nanopi-neo/boot.cmd create mode 100644 board/friendlyarm/nanopi-neo/genimage.cfg create mode 100644 board/friendlyarm/nanopi-neo/readme.txt create mode 100644 configs/friendlyarm_nanopi_neo_defconfig diff --git a/DEVELOPERS b/DEVELOPERS index a9deddb343..13439b9892 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -858,6 +858,10 @@ F: package/logsurfer/ N: Dominik Michael Rauh F: package/gdal/ +N: Dong Wang +F: board/friendlyarm/nanopi-neo +F: configs/friendlyarm_nanopi_neo_defconfig + N: Doug Kehn F: package/nss-pam-ldapd/ F: package/sp-oops-extract/ diff --git a/board/friendlyarm/nanopi-neo/boot.cmd b/board/friendlyarm/nanopi-neo/boot.cmd new file mode 100644 index 0000000000..8c199ed480 --- /dev/null +++ b/board/friendlyarm/nanopi-neo/boot.cmd @@ -0,0 +1,5 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait panic=10 + +load mmc 0:1 ${fdt_addr_r} ${fdtfile} +load mmc 0:1 ${kernel_addr_r} zImage +bootz ${kernel_addr_r} - ${fdt_addr_r} diff --git a/board/friendlyarm/nanopi-neo/genimage.cfg b/board/friendlyarm/nanopi-neo/genimage.cfg new file mode 100644 index 0000000000..4cfd8c8fc2 --- /dev/null +++ b/board/friendlyarm/nanopi-neo/genimage.cfg @@ -0,0 +1,36 @@ +# Minimal SD card image for the NanoPi NEO. +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-h3-nanopi-neo.dtb", + "boot.scr" + } + } + + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = false + image = "u-boot-sunxi-with-spl.bin" + offset = 8K + size = 1000K # 1MB - 8KB(offset) - 16KB(GPT) + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/board/friendlyarm/nanopi-neo/readme.txt b/board/friendlyarm/nanopi-neo/readme.txt new file mode 100644 index 0000000000..cfe7714a41 --- /dev/null +++ b/board/friendlyarm/nanopi-neo/readme.txt @@ -0,0 +1,41 @@ +Nanopi NEO + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the NanoPi NEO. With the current configuration +it will bring-up the board, and allow access through the serial console. + +FriendlyARM Nanopi NEO link: +https://wiki.friendlyelec.com/wiki/index.php/NanoPi_NEO + +How to build +============ + + $ make friendlyarm_nanopi_neo_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SD card in your Nanopi NEO and power it up. The console +is on the debug TTL UART, 115200 8N1. + +Ethernet +========== + + # udhcpc -i eth0 + +Enjoy! diff --git a/configs/friendlyarm_nanopi_neo_defconfig b/configs/friendlyarm_nanopi_neo_defconfig new file mode 100644 index 0000000000..a725553258 --- /dev/null +++ b/configs/friendlyarm_nanopi_neo_defconfig @@ -0,0 +1,44 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="nanopi-neo" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the NanoPi NEO" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.30" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun8i-h3-nanopi-neo" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/friendlyarm/nanopi-neo/genimage.cfg" + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nanopi_neo" +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" + +# Host utilities +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/friendlyarm/nanopi-neo/boot.cmd" -- 2.25.1 From thomas.petazzoni at bootlin.com Wed May 15 04:02:00 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 15 May 2024 04:02:00 -0000 Subject: [Buildroot] [autobuild.buildroot.net] Daily results for 2024-05-14 Message-ID: Hello, Autobuild statistics for 2024-05-14 =================================== branch | OK | NOK | TIM | TOT | 2024.02.x | 14 | 11 | 0 | 25 | master | 54 | 95 | 1 | 150 | Classification of failures by reason for master ----------------------------------------------- gobject-introspection-1.76.1 | 5 fail2ban-1.0.2 | 4 host-sentry-cli-2.20.3 | 4 linux-6.8.9 | 4 bat-0.24.0 | 3 dust-0.9.0 | 3 ffmpeg-6.1.1 | 3 libsepol-3.6 | 3 unknown | 3 check-11970a7e112dfe243a2e6... | 2 containerd-1.7.14 | 2 frr-8.5.4 | 2 host-cmake-3.28.3 | 2 host-gcc-initial-13.2.0 | 2 ibm-sw-tpm2-5452af422edeff7... | 2 libopenssl-3.3.0 | 2 libressl-3.8.4 | 2 mongodb-4.2.18 | 2 proj-9.3.0 | 2 shadow-4.14.5 | 2 sofia-sip-1.13.17 | 2 uclibc-1.0.48 | 2 zeek-4.1.1 | 2 aer-inject-9bd5e2c7886fca72... | 1 android-tools-4.2.2+git2013... | 1 bandwidthd-2.0.1-auto-r11 | 1 brltty-6.6 | 1 busybox-1.36.1 | 1 clang-15.0.3 | 1 crun-1.12 | 1 eza-0.18.8 | 1 foot-1.16.2 | 1 freetype-2.13.2 | 1 gnuplot-6.0.0 | 1 gobject-introspection | 1 google-breakpad-f49c2f1a202... | 1 host-babeltrace2-2.0.4 | 1 host-binutils-2.42 | 1 host-clang-15.0.3 | 1 host-heimdal-f4faaeaba371ff... | 1 host-libxcrypt-4.4.36 | 1 host-perl-5.38.2 | 1 jack2-1.9.22 | 1 libarchive-3.7.3 | 1 libglib2-2.76.1 | 1 libunistring-1.2 | 1 lighttpd-1.4.76 | 1 linux-5.10.162-cip24 | 1 mediastreamer-4.4.8 | 1 openssh-9.7p1 | 1 pistache-3ec9d7c4f8b828fdd3... | 1 pppd-e1266c76d1ad39f98f1167... | 1 procs-0.14.5 | 1 python-grpcio-1.60.0 | 1 python-remi-2022.7.27 | 1 rtl8188eu-306f3e62cf7cddf8c... | 1 syslog-ng-4.7.1 | 1 ustreamer-5.51 | 1 volk-3.0.0 | 1 Detail of failures for master ----------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- aarch64 | aer-inject-9bd5e2c7886fca72... | NOK | http://autobuild.buildroot.net/results/d8e310a8dcfcfec772569524d3b497cece72041f | ORPH powerpc64le | android-tools-4.2.2+git2013... | NOK | http://autobuild.buildroot.net/results/84725c06965a567844e569048ab7edaa18544f20 | nios2 | bandwidthd-2.0.1-auto-r11 | NOK | http://autobuild.buildroot.net/results/73e96e7b91b61bf844e48483f00664467c25d094 | arm | bat-0.24.0 | NOK | http://autobuild.buildroot.net/results/c0d1dbfbba40a1ac45490f1206813551473f2925 | aarch64 | bat-0.24.0 | NOK | http://autobuild.buildroot.net/results/a8b8af030b8e805af61fd54a593d53e063b1d5c9 | powerpc64le | bat-0.24.0 | NOK | http://autobuild.buildroot.net/results/b95093c618eafeb3726513a3ef6199488406093d | microblazeel | brltty-6.6 | NOK | http://autobuild.buildroot.net/results/6244f79e95663ed73b6b27e742cda8df04bf79be | sparc64 | busybox-1.36.1 | NOK | http://autobuild.buildroot.net/results/f550fd18fabca5f7380ca58ba0d958eb0929f1d9 | ORPH sparc | check-11970a7e112dfe243a2e6... | NOK | http://autobuild.buildroot.net/results/44c63e9d6dac525915afdaf06b46c53f6d23c411 | ORPH arm | check-11970a7e112dfe243a2e6... | NOK | http://autobuild.buildroot.net/results/e69d3b2d27dd2eae309e0b7ee84a9fa0844ba351 | ORPH arm | clang-15.0.3 | NOK | http://autobuild.buildroot.net/results/f3f24315569104a20bfa623123535368c3e9612d | riscv64 | containerd-1.7.14 | NOK | http://autobuild.buildroot.net/results/545596fda62b07a8e631482c08e7ff52f4c18f68 | riscv64 | containerd-1.7.14 | NOK | http://autobuild.buildroot.net/results/dd7bf68f083919bf2a2ce406a565b1b3cc3661d2 | arc | crun-1.12 | NOK | http://autobuild.buildroot.net/results/57c0e17ef553671c2d18cd09fa713b84363ee6f2 | x86_64 | dust-0.9.0 | NOK | http://autobuild.buildroot.net/results/276bb6df59fe03ec8a615138d3d3a394ca25bd83 | ORPH x86_64 | dust-0.9.0 | NOK | http://autobuild.buildroot.net/results/1ff5ccf5ee6029669af1413c95827f670ae212b3 | ORPH aarch64 | dust-0.9.0 | NOK | http://autobuild.buildroot.net/results/af80c50816f99302132dc462d4522dfd5651abcd | ORPH powerpc | eza-0.18.8 | NOK | http://autobuild.buildroot.net/results/345131affd11212013e44cc1148707241f01bd7e | i686 | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/c4514660730a747c41674ac9ff33fc47ffa90c38 | powerpc64le | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/967f1ec7b8df68d75bd13fbddace23058bafc21b | sparc64 | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/c0c0d01042dec1f1e03ad559daa79abcecaf5a9b | microblaze | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/bec408fbd9079990b3a61091801258685cd10acf | arc | ffmpeg-6.1.1 | NOK | http://autobuild.buildroot.net/results/70f2bebe3668f5502e14213f9643ef9208fe8b72 | arc | ffmpeg-6.1.1 | NOK | http://autobuild.buildroot.net/results/bdc391abb4d82af0169989e90251df3af685e3ec | microblazeel | ffmpeg-6.1.1 | NOK | http://autobuild.buildroot.net/results/d89675316f0a285c35ddcfec0c1bd6a9e5a55d9f | or1k | foot-1.16.2 | NOK | http://autobuild.buildroot.net/results/11f0c5aca2ed80936b4f7d4d02bf4c163bc54896 | powerpc64 | freetype-2.13.2 | NOK | http://autobuild.buildroot.net/results/05325577496480ba1df26e9ce32c14206c7c5a1f | arc | frr-8.5.4 | NOK | http://autobuild.buildroot.net/results/082a03cfe45468caea1e3b8b101f0496759c6c39 | xtensa | frr-8.5.4 | NOK | http://autobuild.buildroot.net/results/190cf9865381021dcdd4d5d7743b000bcb8e450b | arm | gnuplot-6.0.0 | NOK | http://autobuild.buildroot.net/results/5e45dd8f9071694110c8481f222b9b07b6a97ef3 | microblazeel | gobject-introspection | TIM | http://autobuild.buildroot.net/results/dad14e5982bbf314a2a002324848d812195a915c | mips | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/32a46af0747d90d7c155557386b886e8baef8714 | ORPH sh4a | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/3bf4a45f7d7a468806130bf56ca4f2ce7294c505 | ORPH powerpc | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/ab0f2408b87772094fc894cf06699176a12ad3aa | ORPH mips | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/98950b448343f90971c877f4c4c61e5a81306680 | ORPH powerpc | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/9997c6a23199a8a459c54cd16f380f7276bbecf5 | ORPH mipsel | google-breakpad-f49c2f1a202... | NOK | http://autobuild.buildroot.net/results/6c5a22fb173714a45bf7f6e83f125a0ca36fb12a | m68k | host-babeltrace2-2.0.4 | NOK | http://autobuild.buildroot.net/results/07e37804d82407f9da6b8c21588ea19464621c43 | sh4eb | host-binutils-2.42 | NOK | http://autobuild.buildroot.net/results/7ebcabf81fe366f0f903b6f31e18a02f9ff947cd | arm | host-clang-15.0.3 | NOK | http://autobuild.buildroot.net/results/5f6fb1f26e8c41caa076538d20e5b4a017842ace | s390x | host-cmake-3.28.3 | NOK | http://autobuild.buildroot.net/results/4942fff06169b5bb54e70a6161b1dd841e6aef7c | s390x | host-cmake-3.28.3 | NOK | http://autobuild.buildroot.net/results/abd3e4172cf81fd6241f99290e6fff3f03ff1135 | sh4 | host-gcc-initial-13.2.0 | NOK | http://autobuild.buildroot.net/results/35fda8c98376fb0ad4371e2bf9d5179e436655d6 | i686 | host-gcc-initial-13.2.0 | NOK | http://autobuild.buildroot.net/results/32ffaab89a065fd04cf058eba9c11322458e3e82 | m68k | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/71623199789ad3bdf4dc54ae487b4ab2f4b7a9dd | ORPH microblazeel | host-libxcrypt-4.4.36 | NOK | http://autobuild.buildroot.net/results/0bb4169b22d706ef049b9f2b84e735c6bf94ca8d | sparc64 | host-perl-5.38.2 | NOK | http://autobuild.buildroot.net/results/c8744837fe9aeb0ab5430cdd721c8267adccee45 | aarch64 | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/50d7d973a84ef21c0bbcfff5e6dc3f1840370756 | mips64 | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/606a6f342699ba838f90aa36c5d78f5bbb3392b3 | arm | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/7b26a88a6fbed1775d9c1dbefae4938d93331930 | powerpc64 | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/f887adebe611f0021d5ee85acb95cced7c8b71c0 | m68k | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/1402723300998ee82b1ad890edae039a4124e8f2 | i686 | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/f612d7eb76a422500315ad9db44a861e21c8a4d4 | xtensa | jack2-1.9.22 | NOK | http://autobuild.buildroot.net/results/56dccf0918883b1348e89dd8b892c4f6f5a0b0f5 | aarch64 | libarchive-3.7.3 | NOK | http://autobuild.buildroot.net/results/59535c80b4b4606ccd97cb81c5843d97b8e6358a | arc | libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/7627f12fa32279ad3c93bd95e3710bb2ccf0ed64 | riscv32 | libopenssl-3.3.0 | NOK | http://autobuild.buildroot.net/results/1459a9a290d6b673c64957b5779f8ab54d2f4017 | ORPH microblaze | libopenssl-3.3.0 | NOK | http://autobuild.buildroot.net/results/551fad2f8233527c3fdd895fdfb23ab972f71117 | ORPH mips64el | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/cd3b72271b0870094c9dbb66a734706405710115 | ORPH powerpc | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/bba0104bb685ef4146030575f83aab30e81eb5d7 | ORPH xtensa | libsepol-3.6 | NOK | http://autobuild.buildroot.net/results/a8d59f266aa1ca3ce9c487dfa285e6593525d4ad | xtensa | libsepol-3.6 | NOK | http://autobuild.buildroot.net/results/7377f40fbcb34061060a79923e1f1d6934d1b879 | xtensa | libsepol-3.6 | NOK | http://autobuild.buildroot.net/results/7be215baf7309584a4244db65fd0c858007854fe | s390x | libunistring-1.2 | NOK | http://autobuild.buildroot.net/results/8edad730753b150ca7f927f9d4de572358df8779 | sparc64 | lighttpd-1.4.76 | NOK | http://autobuild.buildroot.net/results/8a03607d5b9732a91a354b2b30705c1892deefb9 | ORPH mips64 | linux-5.10.162-cip24 | NOK | http://autobuild.buildroot.net/results/f9016262a689789c09fcf626c2a425bfed6d98cb | ORPH aarch64_be | linux-6.8.9 | NOK | http://autobuild.buildroot.net/results/02bf1cba1b212a843ef67639450c4016d514a735 | ORPH powerpc | linux-6.8.9 | NOK | http://autobuild.buildroot.net/results/05abb6d7f6a1bef436ea830cd8a784c60ec858a9 | ORPH sh4aeb | linux-6.8.9 | NOK | http://autobuild.buildroot.net/results/52dc932b03b913ef10acf7bb8a6efef650f8bbae | ORPH mips | linux-6.8.9 | NOK | http://autobuild.buildroot.net/results/155fcfa46a2203cf46543ee703b354b15d3bf640 | ORPH sh4 | mediastreamer-4.4.8 | NOK | http://autobuild.buildroot.net/results/23850a40ff4881f19d6e6147a14538ea52013d09 | ORPH aarch64 | mongodb-4.2.18 | NOK | http://autobuild.buildroot.net/results/6633c7261dc1b3d38d281a7c39e31fdf8be1330f | arm | mongodb-4.2.18 | NOK | http://autobuild.buildroot.net/results/420b8ed7228730dcfeabfeaa70810411c209dd80 | arm | openssh-9.7p1 | NOK | http://autobuild.buildroot.net/results/c5fbf4ab7df24fde5fdec285a2dbd2c04ea9c7fd | ORPH arm | pistache-3ec9d7c4f8b828fdd3... | NOK | http://autobuild.buildroot.net/results/1f5f18713d078482cd9995cb71da08303a30ded4 | ORPH sparc | pppd-e1266c76d1ad39f98f1167... | NOK | http://autobuild.buildroot.net/results/5085556e465c0cfea87dc7114f45e0d96927398f | arm | procs-0.14.5 | NOK | http://autobuild.buildroot.net/results/abac4127dc8a0519235487d3aa75b7f9900769d4 | sparc64 | proj-9.3.0 | NOK | http://autobuild.buildroot.net/results/442c6f7bedf2870692e9f60c10b03e28d9aed1f3 | microblaze | proj-9.3.0 | NOK | http://autobuild.buildroot.net/results/a94dfcd4f765e128a715b00d9032d45033aa4713 | i686 | python-grpcio-1.60.0 | NOK | http://autobuild.buildroot.net/results/056a97b5242052327b44dfc297ea29024f225ca9 | aarch64_be | python-remi-2022.7.27 | NOK | http://autobuild.buildroot.net/results/967658872018b40dd0123d4d09cbd1cb03bf626b | x86_64 | rtl8188eu-306f3e62cf7cddf8c... | NOK | http://autobuild.buildroot.net/results/c91828d666f9ad7e7976362c443b29da57af5d8a | arm | shadow-4.14.5 | NOK | http://autobuild.buildroot.net/results/cfdf4ea064df4839424026483d4e3d222df4da46 | arm | shadow-4.14.5 | NOK | http://autobuild.buildroot.net/results/5cb62733e7d8e5021321010a71d0034066ba821c | arm | sofia-sip-1.13.17 | NOK | http://autobuild.buildroot.net/results/a6d872ea2033636794df6decc055f19889f4fdb7 | i686 | sofia-sip-1.13.17 | NOK | http://autobuild.buildroot.net/results/3a07c946fafa2b8f4a5a03e9538240ca95b18dca | nios2 | syslog-ng-4.7.1 | NOK | http://autobuild.buildroot.net/results/cf36fb119224ba50a768dbe363d4c381f76eb476 | i686 | uclibc-1.0.48 | NOK | http://autobuild.buildroot.net/results/9f586db6f6890adb2b0f6426b728d08330581ddc | arceb | uclibc-1.0.48 | NOK | http://autobuild.buildroot.net/results/d9b924bdea3fd61060fa0e961c12534c1fff80de | powerpc64 | unknown | NOK | http://autobuild.buildroot.net/results/17c66958cad99e446a17604b77676198e2a8944e | riscv32 | unknown | NOK | http://autobuild.buildroot.net/results/d5fd03ce95ad58847da2ab4234bee6824449d67b | m68k | unknown | NOK | http://autobuild.buildroot.net/results/d8c4c7693c3f7bfb69a5a34346ac1bbb3b7151e9 | i686 | ustreamer-5.51 | NOK | http://autobuild.buildroot.net/results/db08277684ff03b7b655b9be46962ba31d071dda | powerpc | volk-3.0.0 | NOK | http://autobuild.buildroot.net/results/e3282218e8894e3e88c7d1917bec9df81402b067 | aarch64 | zeek-4.1.1 | NOK | http://autobuild.buildroot.net/results/d7e5cd34918c6e1e1bb0b0c60519acc891fbb79a | arm | zeek-4.1.1 | NOK | http://autobuild.buildroot.net/results/35de0516a2c3389378a21413922f2f75dda5c638 | Classification of failures by reason for 2024.02.x -------------------------------------------------- bird-2.0.12 | 2 elfutils-0.189 | 1 host-heimdal-f4faaeaba371ff... | 1 ipmitool-1_8_19 | 1 libcamera-apps-1.2.1 | 1 libopenssl-3.2.1 | 1 mariadb-10.11.6 | 1 python-grpcio-1.60.0 | 1 shadow-4.14.3 | 1 unknown | 1 Detail of failures for 2024.02.x -------------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- sparc | bird-2.0.12 | NOK | http://autobuild.buildroot.net/results/86cd548229c12ab4519c1d3f212e64e6eab97b90 | mipsel | bird-2.0.12 | NOK | http://autobuild.buildroot.net/results/c4a2f201ee306dab6f8b6374f7be10989200496f | microblaze | elfutils-0.189 | NOK | http://autobuild.buildroot.net/results/de00407df5d84ea4f0f6daab9a5baf85a3bbff85 | ORPH x86_64 | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/a4c7d1b7149d37948cbf65c29a13d0331c7fc3d3 | ORPH armeb | ipmitool-1_8_19 | NOK | http://autobuild.buildroot.net/results/df4d58a0623f36ccef1d8739644f224d5d7cf34c | microblazeel | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/d5e475f90c0ef086829cbe0561916f42e689ff79 | arm | libopenssl-3.2.1 | NOK | http://autobuild.buildroot.net/results/ba1474dda768b10084814b94704aefd6dba6f706 | ORPH mips | mariadb-10.11.6 | NOK | http://autobuild.buildroot.net/results/44807e6038dd4d9cd9042fe7f102ac8367e555a0 | ORPH aarch64_be | python-grpcio-1.60.0 | NOK | http://autobuild.buildroot.net/results/f5b32e918a48f06083aa78b3f819846ef439af1a | mips64el | shadow-4.14.3 | NOK | http://autobuild.buildroot.net/results/24ff25dd917bde2b14f6b3a25ed0291e37cc8184 | i686 | unknown | NOK | http://autobuild.buildroot.net/results/2aa593264fe9563b7fe92d0df5d207770e7d3edd | Gitlab CI results for 2024-05-14 ================================ Detail of runtime-test failures for master ------------------------------------------ runtime-test | link to the job | orph? --------------------------+---------------------------------------------------------------+------ TestDockerCompose | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833307823 | ORPH ...ilp32dMuslBleedingEdge | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833309173 | ORPH ...iscv32ilp32dMuslStable | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833309174 | ORPH TestMender | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308175 | ORPH TestNu | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308218 | ORPH TestOci | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833307649 | ORPH TestPythonPy3MlDtypes | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308461 | ORPH TestPythonPy3PyAlsa | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308479 | ORPH TestPythonPy3SciPy | https://gitlab.com/buildroot.org/buildroot/-/jobs/6844560339 | ORPH TestRust | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308568 | ORPH TestRustBin | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308569 | ORPH TestRustVendoring | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308571 | ORPH -- http://autobuild.buildroot.net From peter at korsgaard.com Wed May 15 06:05:25 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:05:25 +0200 Subject: [Buildroot] [PATCH 1/1] package/ustreamer: bump version to 6.11 In-Reply-To: <20240514165251.511634-1-kadambini.nema@gmail.com> (Kadambini Nema's message of "Tue, 14 May 2024 09:52:51 -0700") References: <20240514165251.511634-1-kadambini.nema@gmail.com> Message-ID: <871q63txsq.fsf@dell.be.48ers.dk> >>>>> "Kadambini" == Kadambini Nema writes: > changelog - https://github.com/pikvm/ustreamer/compare/v5.51...v6.11 > Signed-off-by: Kadambini Nema Committed, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 06:06:11 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:06:11 +0200 Subject: [Buildroot] [PATCH 1/1] package/{mesa3d, mesa3d-headers}: bump version to 24.0.7 In-Reply-To: <20240514215615.2866697-1-bernd@kuhls.net> (Bernd Kuhls's message of "Tue, 14 May 2024 23:56:15 +0200") References: <20240514215615.2866697-1-bernd@kuhls.net> Message-ID: <87wmnvsj70.fsf@dell.be.48ers.dk> >>>>> "Bernd" == Bernd Kuhls writes: > Release notes: > https://lists.freedesktop.org/archives/mesa-announce/2024-May/000758.html > Signed-off-by: Bernd Kuhls Committed, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 06:08:39 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:08:39 +0200 Subject: [Buildroot] [PATCH 1/1] package/squid: security bump version to 6.9 In-Reply-To: <20240514215636.2866720-1-bernd@kuhls.net> (Bernd Kuhls's message of "Tue, 14 May 2024 23:56:36 +0200") References: <20240514215636.2866720-1-bernd@kuhls.net> Message-ID: <87seyjsj2w.fsf@dell.be.48ers.dk> >>>>> "Bernd" == Bernd Kuhls writes: > Fixes CVE-2024-25111: > https://github.com/squid-cache/squid/security/advisories/GHSA-72c2-c3wm-8qxc > Signed-off-by: Bernd Kuhls > --- > package/squid/squid.hash | 6 +++--- > package/squid/squid.mk | 2 +- > 2 files changed, 4 insertions(+), 4 deletions(-) > diff --git a/package/squid/squid.hash b/package/squid/squid.hash > index 4a8ea5d550..ed78933306 100644 > --- a/package/squid/squid.hash > +++ b/package/squid/squid.hash > @@ -1,6 +1,6 @@ > -# From http://www.squid-cache.org/Versions/v6/squid-6.6.tar.xz.asc > -md5 5a41134ee1b7e75f62088acdec92d2ca squid-6.6.tar.xz > -sha1 f05e06a9dd3bf7501d2844e43d9ae1bd00e9edcc squid-6.6.tar.xz > +# From http://www.squid-cache.org/Versions/v6/squid-6.9.tar.xz.asc > +md5 4888e9dc75c0daa0ed526b34c055cb67 squid-6.9.tar.xz > +sha1 5e73b30116ce7111589cc2b1c9bfe3c17efa2e75 squid-6.9.tar.xz > # Locally calculated > sha256 55bd7f9f4898153161ea1228998acb551bf840832b9e5b90fc8ecd2942420318 squid-6.6.tar.xz You forgot to update the sha256. Committed with that fixed, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 06:11:25 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:11:25 +0200 Subject: [Buildroot] [PATCH 1/1] package/gnuplot: fix readline dependency In-Reply-To: <20240514173919.318237-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Tue, 14 May 2024 19:39:19 +0200") References: <20240514173919.318237-1-fontaine.fabrice@gmail.com> Message-ID: <87o797siya.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > --without-readline is interpreted as --with-readline=builtin since bump > to version 5.4.0 in commit 263da09323e83bb3d6552b70b739523b66459df8 and > https://github.com/gnuplot/gnuplot/commit/b492ea63bd604081ffb9dee3843e295b0b29df85 > so add a mandatory dependency to readline or libedit to gnuplot > As a side-effect, this will avoid the following build failure with > builtin readline raised since bump to version 6.0.0 in commit > 5f11ce4aeaba99917778c384b236d267e78a7b29: > /home/autobuild/autobuild/instance-14/output-1/host/lib/gcc/arm-buildroot-linux-gnueabi/13.2.0/../../../../arm-buildroot-linux-gnueabi/bin/ld: > history.o: in function `read_history': > history.c:(.text+0xa8): undefined reference to `gp_read_history' > Fixes: 5f11ce4aeaba99917778c384b236d267e78a7b29 > - http://autobuild.buildroot.org/results/5e45dd8f9071694110c8481f222b9b07b6a97ef3 > Signed-off-by: Fabrice Fontaine Committed, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 06:12:55 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:12:55 +0200 Subject: [Buildroot] [PATCH v2] package/fluent-bit: bump to v3.0.3 In-Reply-To: <20240514203347.4107730-1-thomas@devoogdt.com> (Thomas Devoogdt's message of "Tue, 14 May 2024 22:33:47 +0200") References: <20240420185958.4165997-1-thomas@devoogdt.com> <20240514203347.4107730-1-thomas@devoogdt.com> Message-ID: <87jzjvsivs.fsf@dell.be.48ers.dk> >>>>> "Thomas" == Thomas Devoogdt writes: > Release Notes: > - https://fluentbit.io/announcements/v3.0.1 > - https://fluentbit.io/announcements/v3.0.2 > - https://fluentbit.io/announcements/v3.0.3 > Signed-off-by: Thomas Devoogdt > --- > v2: bump from v3.0.2 to v3.0.3 Committed, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 06:14:24 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:14:24 +0200 Subject: [Buildroot] [PATCH 1/1] package/libnpth: fix gnupg2 build with uclibc In-Reply-To: <20240514172142.4449-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Tue, 14 May 2024 19:21:42 +0200") References: <20240514172142.4449-1-fontaine.fabrice@gmail.com> Message-ID: <87frujsitb.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > Fix the following build failure of gnupg2 raised since bump to version > 1.7 in commit 3ef4d24192b20bd1eb5e34c9fa2a6aa5bde91f91 and > https://git.gnupg.org/cgi-bin/gitweb.cgi?p=npth.git;a=commitdiff;h=02ce6b2d27f91ed6285e4e92d99c21bcc7823c9b: > /home/autobuild/autobuild/instance-2/output-1/host/lib/gcc/armeb-buildroot-linux-uclibcgnueabi/13.2.0/../../../../armeb-buildroot-linux-uclibcgnueabi/bin/ld: > /home/autobuild/autobuild/instance-2/output-1/host/bin/../armeb-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libnpth.so: > undefined reference to `busy_wait_for' > Fixes: 3ef4d24192b20bd1eb5e34c9fa2a6aa5bde91f91 > - http://autobuild.buildroot.org/results/9a27ffde79598a39b4fd55c716978d32d0beb924 > Signed-off-by: Fabrice Fontaine Committed, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 06:14:47 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:14:47 +0200 Subject: [Buildroot] [PATCH 1/1] package/kodi-pvr-waipu: bump version to 21.6.1-Omega In-Reply-To: <20240514215546.2866676-1-bernd@kuhls.net> (Bernd Kuhls's message of "Tue, 14 May 2024 23:55:46 +0200") References: <20240514215546.2866676-1-bernd@kuhls.net> Message-ID: <87bk57siso.fsf@dell.be.48ers.dk> >>>>> "Bernd" == Bernd Kuhls writes: > Signed-off-by: Bernd Kuhls Committed, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 06:15:51 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:15:51 +0200 Subject: [Buildroot] [PATCH 1/1] package/php: bump version to 8.3.7 In-Reply-To: <20240514215712.2866745-1-bernd@kuhls.net> (Bernd Kuhls's message of "Tue, 14 May 2024 23:57:12 +0200") References: <20240514215712.2866745-1-bernd@kuhls.net> Message-ID: <877cfvsiqw.fsf@dell.be.48ers.dk> >>>>> "Bernd" == Bernd Kuhls writes: > Removed patch which is included in this release. > Changelog: https://www.php.net/ChangeLog-8.php#PHP_8_3 > Release notes: https://news-web.php.net/php.announce/427 > Signed-off-by: Bernd Kuhls Committed, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 06:04:17 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:04:17 +0200 Subject: [Buildroot] [git commit] package/{mesa3d, mesa3d-headers}: bump version to 24.0.7 Message-ID: <20240515061605.9B37387146@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=4b18f32e5d9c3537a05405201092d65148b1bdbf branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Release notes: https://lists.freedesktop.org/archives/mesa-announce/2024-May/000758.html Signed-off-by: Bernd Kuhls Signed-off-by: Peter Korsgaard --- package/mesa3d-headers/mesa3d-headers.mk | 2 +- package/mesa3d/mesa3d.hash | 6 +++--- package/mesa3d/mesa3d.mk | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package/mesa3d-headers/mesa3d-headers.mk b/package/mesa3d-headers/mesa3d-headers.mk index e1f6211e17..e35774a942 100644 --- a/package/mesa3d-headers/mesa3d-headers.mk +++ b/package/mesa3d-headers/mesa3d-headers.mk @@ -12,7 +12,7 @@ endif # Not possible to directly refer to mesa3d variables, because of # first/second expansion trickery... -MESA3D_HEADERS_VERSION = 24.0.6 +MESA3D_HEADERS_VERSION = 24.0.7 MESA3D_HEADERS_SOURCE = mesa-$(MESA3D_HEADERS_VERSION).tar.xz MESA3D_HEADERS_SITE = https://archive.mesa3d.org MESA3D_HEADERS_DL_SUBDIR = mesa3d diff --git a/package/mesa3d/mesa3d.hash b/package/mesa3d/mesa3d.hash index fb3df96555..f2c25464f4 100644 --- a/package/mesa3d/mesa3d.hash +++ b/package/mesa3d/mesa3d.hash @@ -1,5 +1,5 @@ -# From https://lists.freedesktop.org/archives/mesa-announce/2024-April/000755.html -sha256 8b7a92dbe6468c18f2383700135b5fe9de836cdf0cc8fd7dbae3c7110237d604 mesa-24.0.6.tar.xz -sha512 60fcc77132c3cb0c98e650d97d3324bfd18abe7f8f8a3aa5209f71b2fddd94510f939bbf5272b2241749307184d5badde9da4842be57ce13f5760875885ea6fc mesa-24.0.6.tar.xz +# From https://lists.freedesktop.org/archives/mesa-announce/2024-May/000758.html +sha256 7454425f1ed4a6f1b5b107e1672b30c88b22ea0efea000ae2c7d96db93f6c26a mesa-24.0.7.tar.xz +sha512 77b0fae80ab0a07e2e528c113eadef0e3004b8df3e6e98fffe6fc2d8ac39f5ce7fa38ebe5c2ae32bfbac993dd7cbe288ace18ebb03cf2fb445fe7114f74dd45c mesa-24.0.7.tar.xz # License sha256 a00275a53178e2645fb65be99a785c110513446a5071ff2c698ed260ad917d75 docs/license.rst diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk index 39cbb4c23b..6bccdaed04 100644 --- a/package/mesa3d/mesa3d.mk +++ b/package/mesa3d/mesa3d.mk @@ -5,7 +5,7 @@ ################################################################################ # When updating the version, please also update mesa3d-headers -MESA3D_VERSION = 24.0.6 +MESA3D_VERSION = 24.0.7 MESA3D_SOURCE = mesa-$(MESA3D_VERSION).tar.xz MESA3D_SITE = https://archive.mesa3d.org MESA3D_LICENSE = MIT, SGI, Khronos From peter at korsgaard.com Wed May 15 05:56:45 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 07:56:45 +0200 Subject: [Buildroot] [git commit] package/ustreamer: bump version to 6.11 Message-ID: <20240515061605.8C59487149@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=c6c173dadb7b44ba4af92237d05503b8e83e51dc branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master changelog - https://github.com/pikvm/ustreamer/compare/v5.51...v6.11 Signed-off-by: Kadambini Nema Signed-off-by: Peter Korsgaard --- package/ustreamer/ustreamer.hash | 2 +- package/ustreamer/ustreamer.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/ustreamer/ustreamer.hash b/package/ustreamer/ustreamer.hash index d3f603e0c8..7c70f0195f 100644 --- a/package/ustreamer/ustreamer.hash +++ b/package/ustreamer/ustreamer.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 88f107e02a0b5c6493d55ed1bce0c85f66ce83d2bc0271ff6319ad593c6584bc ustreamer-5.51.tar.gz +sha256 80ab01eeaa81c7d8e9c7f62304287d176fd729cb12ca5adb2e181b5a3da79216 ustreamer-6.11.tar.gz sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE diff --git a/package/ustreamer/ustreamer.mk b/package/ustreamer/ustreamer.mk index dc8577b5e9..5b73e387d6 100644 --- a/package/ustreamer/ustreamer.mk +++ b/package/ustreamer/ustreamer.mk @@ -4,7 +4,7 @@ # ################################################################################ -USTREAMER_VERSION = 5.51 +USTREAMER_VERSION = 6.11 USTREAMER_SITE = $(call github,pikvm,ustreamer,v$(USTREAMER_VERSION)) USTREAMER_LICENSE = GPL-3.0+ USTREAMER_LICENSE_FILES = LICENSE From peter at korsgaard.com Wed May 15 06:07:22 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:07:22 +0200 Subject: [Buildroot] [git commit] package/squid: security bump version to 6.9 Message-ID: <20240515061605.A83C987157@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=58ccc55bff54d4c6c289a2d348f18b1b6dfde62d branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fixes CVE-2024-25111: https://github.com/squid-cache/squid/security/advisories/GHSA-72c2-c3wm-8qxc Signed-off-by: Bernd Kuhls [Peter: update sha256 hash] Signed-off-by: Peter Korsgaard --- package/squid/squid.hash | 8 ++++---- package/squid/squid.mk | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package/squid/squid.hash b/package/squid/squid.hash index 4a8ea5d550..e5017ae5cd 100644 --- a/package/squid/squid.hash +++ b/package/squid/squid.hash @@ -1,6 +1,6 @@ -# From http://www.squid-cache.org/Versions/v6/squid-6.6.tar.xz.asc -md5 5a41134ee1b7e75f62088acdec92d2ca squid-6.6.tar.xz -sha1 f05e06a9dd3bf7501d2844e43d9ae1bd00e9edcc squid-6.6.tar.xz +# From http://www.squid-cache.org/Versions/v6/squid-6.9.tar.xz.asc +md5 4888e9dc75c0daa0ed526b34c055cb67 squid-6.9.tar.xz +sha1 5e73b30116ce7111589cc2b1c9bfe3c17efa2e75 squid-6.9.tar.xz # Locally calculated -sha256 55bd7f9f4898153161ea1228998acb551bf840832b9e5b90fc8ecd2942420318 squid-6.6.tar.xz +sha256 1ad72d46e1cb556e9561214f0fb181adb87c7c47927ef69bc8acd68a03f61882 squid-6.9.tar.xz sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/squid/squid.mk b/package/squid/squid.mk index e325c63cb0..60eca397ec 100644 --- a/package/squid/squid.mk +++ b/package/squid/squid.mk @@ -4,7 +4,7 @@ # ################################################################################ -SQUID_VERSION = 6.6 +SQUID_VERSION = 6.9 SQUID_SOURCE = squid-$(SQUID_VERSION).tar.xz SQUID_SITE = http://www.squid-cache.org/Versions/v6 SQUID_LICENSE = GPL-2.0+ From peter at korsgaard.com Wed May 15 06:12:16 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:12:16 +0200 Subject: [Buildroot] [git commit] package/fluent-bit: bump to v3.0.3 Message-ID: <20240515061605.C874787149@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=15820bc0cd668fa9e1db78d29a3c44cb1e6cf717 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Release Notes: - https://fluentbit.io/announcements/v3.0.1 - https://fluentbit.io/announcements/v3.0.2 - https://fluentbit.io/announcements/v3.0.3 Signed-off-by: Thomas Devoogdt Signed-off-by: Peter Korsgaard --- package/fluent-bit/fluent-bit.hash | 2 +- package/fluent-bit/fluent-bit.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/fluent-bit/fluent-bit.hash b/package/fluent-bit/fluent-bit.hash index cc9c976d60..a53f6dba51 100644 --- a/package/fluent-bit/fluent-bit.hash +++ b/package/fluent-bit/fluent-bit.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 e70ae5be2f0ca1cb842a1c8d2762437907c522765f79b5c0c391eaa1b57c9f4c fluent-bit-3.0.0.tar.gz +sha256 2f3b82e8b7802fe92625009531592f12d500ff61a02ecf4cd27e0f138a6dc566 fluent-bit-3.0.3.tar.gz sha256 0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594 LICENSE diff --git a/package/fluent-bit/fluent-bit.mk b/package/fluent-bit/fluent-bit.mk index 33054bea66..b235c3abf4 100644 --- a/package/fluent-bit/fluent-bit.mk +++ b/package/fluent-bit/fluent-bit.mk @@ -4,7 +4,7 @@ # ################################################################################ -FLUENT_BIT_VERSION = 3.0.0 +FLUENT_BIT_VERSION = 3.0.3 FLUENT_BIT_SITE = $(call github,fluent,fluent-bit,v$(FLUENT_BIT_VERSION)) FLUENT_BIT_LICENSE = Apache-2.0 FLUENT_BIT_LICENSE_FILES = LICENSE From peter at korsgaard.com Wed May 15 06:10:25 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:10:25 +0200 Subject: [Buildroot] [git commit] package/gnuplot: fix readline dependency Message-ID: <20240515061605.B78CF8714A@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=93864cef0b1ec94c44498a4edd31de92725b28b2 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master --without-readline is interpreted as --with-readline=builtin since bump to version 5.4.0 in commit 263da09323e83bb3d6552b70b739523b66459df8 and https://github.com/gnuplot/gnuplot/commit/b492ea63bd604081ffb9dee3843e295b0b29df85 so add a mandatory dependency to readline or libedit to gnuplot As a side-effect, this will avoid the following build failure with builtin readline raised since bump to version 6.0.0 in commit 5f11ce4aeaba99917778c384b236d267e78a7b29: /home/autobuild/autobuild/instance-14/output-1/host/lib/gcc/arm-buildroot-linux-gnueabi/13.2.0/../../../../arm-buildroot-linux-gnueabi/bin/ld: history.o: in function `read_history': history.c:(.text+0xa8): undefined reference to `gp_read_history' Fixes: 5f11ce4aeaba99917778c384b236d267e78a7b29 - http://autobuild.buildroot.org/results/5e45dd8f9071694110c8481f222b9b07b6a97ef3 Signed-off-by: Fabrice Fontaine Signed-off-by: Peter Korsgaard --- package/gnuplot/Config.in | 1 + package/gnuplot/gnuplot.mk | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/package/gnuplot/Config.in b/package/gnuplot/Config.in index 603c194fe5..8068a7283b 100644 --- a/package/gnuplot/Config.in +++ b/package/gnuplot/Config.in @@ -1,5 +1,6 @@ config BR2_PACKAGE_GNUPLOT bool "gnuplot" + select BR2_PACKAGE_READLINE if !BR2_PACKAGE_LIBEDIT help A portable command-line driven graphing utility. diff --git a/package/gnuplot/gnuplot.mk b/package/gnuplot/gnuplot.mk index 26b2daaf24..e34dd2a60b 100644 --- a/package/gnuplot/gnuplot.mk +++ b/package/gnuplot/gnuplot.mk @@ -41,8 +41,9 @@ endif ifeq ($(BR2_PACKAGE_READLINE),y) GNUPLOT_CONF_OPTS += --with-readline=gnu GNUPLOT_DEPENDENCIES += readline -else -GNUPLOT_CONF_OPTS += --without-readline +else ifeq ($(BR2_PACKAGE_LIBEDIT),y) +GNUPLOT_CONF_OPTS += --with-readline=bsd +GNUPLOT_DEPENDENCIES += libedit endif # Remove Javascript scripts, lua scripts, PostScript files From peter at korsgaard.com Wed May 15 06:15:16 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:15:16 +0200 Subject: [Buildroot] [git commit] package/php: bump version to 8.3.7 Message-ID: <20240515061605.ED7EE87149@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=932b52fad87d79d9f26a343edafe2981079de16e branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Removed patch which is included in this release. Changelog: https://www.php.net/ChangeLog-8.php#PHP_8_3 Release notes: https://news-web.php.net/php.announce/427 Signed-off-by: Bernd Kuhls Signed-off-by: Peter Korsgaard --- ...nd_call_stack.c-fix-build-without-pthread.patch | 39 ---------------------- package/php/php.hash | 2 +- package/php/php.mk | 2 +- 3 files changed, 2 insertions(+), 41 deletions(-) diff --git a/package/php/0006-Zend-zend_call_stack.c-fix-build-without-pthread.patch b/package/php/0006-Zend-zend_call_stack.c-fix-build-without-pthread.patch deleted file mode 100644 index 10b0083655..0000000000 --- a/package/php/0006-Zend-zend_call_stack.c-fix-build-without-pthread.patch +++ /dev/null @@ -1,39 +0,0 @@ -From c3e37c438a11d59d858fcc7b46eac00a8074972b Mon Sep 17 00:00:00 2001 -From: Fabrice Fontaine -Date: Sat, 30 Mar 2024 17:51:55 +0100 -Subject: [PATCH] Zend/zend_call_stack.c: fix build without pthread - -Fix the following build failure without pthread raised since version -8.3.0 and -https://github.com/php/php-src/commit/a11c8a30399e90c17c287b9656c0077bc5131c9c: - -/home/buildroot/instance-0/output-1/build/php-8.3.4/Zend/zend_call_stack.c:39:11: fatal error: pthread.h: No such file or directory - 39 | # include - | ^~~~~~~~~~~ - -Fixes: - - http://autobuild.buildroot.org/results/a4ef648a9da50b26ed56d5d490e4cf5a1bfff970 - -Signed-off-by: Fabrice Fontaine -Upstream: https://github.com/php/php-src/pull/13843 ---- - Zend/zend_call_stack.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/Zend/zend_call_stack.c b/Zend/zend_call_stack.c -index 97cbed9041..97de938a0f 100644 ---- a/Zend/zend_call_stack.c -+++ b/Zend/zend_call_stack.c -@@ -35,7 +35,8 @@ - # include - # endif - #endif /* ZEND_WIN32 */ --#if defined(__linux__) || defined(__FreeBSD__) || defined(__APPLE__) || defined(__OpenBSD__) -+#if (defined(HAVE_PTHREAD_GETATTR_NP) && defined(HAVE_PTHREAD_ATTR_GETSTACK)) || \ -+ defined(__FreeBSD__) || defined(__APPLE__) || defined(__OpenBSD__) - # include - #endif - #ifdef __FreeBSD__ --- -2.43.0 - diff --git a/package/php/php.hash b/package/php/php.hash index 4378d7ed07..9b25eabd32 100644 --- a/package/php/php.hash +++ b/package/php/php.hash @@ -1,5 +1,5 @@ # From https://www.php.net/downloads.php -sha256 53c8386b2123af97626d3438b3e4058e0c5914cb74b048a6676c57ac647f5eae php-8.3.6.tar.xz +sha256 d53433c1ca6b2c8741afa7c524272e6806c1e895e5912a058494fea89988570a php-8.3.7.tar.xz # License file sha256 b42e4df5e50e6ecda1047d503d6d91d71032d09ed1027ba1ef29eed26f890c5a LICENSE diff --git a/package/php/php.mk b/package/php/php.mk index 5b26ec90e2..ad2d901dfd 100644 --- a/package/php/php.mk +++ b/package/php/php.mk @@ -4,7 +4,7 @@ # ################################################################################ -PHP_VERSION = 8.3.6 +PHP_VERSION = 8.3.7 PHP_SITE = https://www.php.net/distributions PHP_SOURCE = php-$(PHP_VERSION).tar.xz PHP_INSTALL_STAGING = YES From peter at korsgaard.com Wed May 15 06:13:08 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:13:08 +0200 Subject: [Buildroot] [git commit] package/libnpth: fix gnupg2 build with uclibc Message-ID: <20240515061605.D60268715C@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=ad64ddd4f306eb787ce98263148a91b3386be570 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fix the following build failure of gnupg2 raised since bump to version 1.7 in commit 3ef4d24192b20bd1eb5e34c9fa2a6aa5bde91f91 and https://git.gnupg.org/cgi-bin/gitweb.cgi?p=npth.git;a=commitdiff;h=02ce6b2d27f91ed6285e4e92d99c21bcc7823c9b: /home/autobuild/autobuild/instance-2/output-1/host/lib/gcc/armeb-buildroot-linux-uclibcgnueabi/13.2.0/../../../../armeb-buildroot-linux-uclibcgnueabi/bin/ld: /home/autobuild/autobuild/instance-2/output-1/host/bin/../armeb-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libnpth.so: undefined reference to `busy_wait_for' Fixes: 3ef4d24192b20bd1eb5e34c9fa2a6aa5bde91f91 - http://autobuild.buildroot.org/results/9a27ffde79598a39b4fd55c716978d32d0beb924 Signed-off-by: Fabrice Fontaine Signed-off-by: Peter Korsgaard --- ...-npth_rwlock_timedrdlock-is-not-supported.patch | 51 ++++++++++++++++++++++ package/libnpth/0003-Fix-previous-commit.patch | 39 +++++++++++++++++ 2 files changed, 90 insertions(+) diff --git a/package/libnpth/0002-Return-a-run-time-error-if-npth_rwlock_timedrdlock-is-not-supported.patch b/package/libnpth/0002-Return-a-run-time-error-if-npth_rwlock_timedrdlock-is-not-supported.patch new file mode 100644 index 0000000000..0d9b38e4ce --- /dev/null +++ b/package/libnpth/0002-Return-a-run-time-error-if-npth_rwlock_timedrdlock-is-not-supported.patch @@ -0,0 +1,51 @@ +From 01f03a91c9bd63910995aeef412beb3ca6dc9a67 Mon Sep 17 00:00:00 2001 +From: NIIBE Yutaka +Date: Tue, 7 May 2024 13:45:47 +0900 +Subject: [PATCH] Return a run-time error if npth_rwlock_timedrdlock is not + supported. + +* src/npth.c (npth_rwlock_timedrdlock): Return ENOSYS if not +supported. +(npth_rwlock_timedwrlock): Use HAVE_PTHREAD_RWLOCK_TRYWRLOCK. + +-- + +GnuPG-bug-id: 7109 +Fixed-commit: 363c370bd35dd0bb4e5636b2d4f06ea88c658794 +Signed-off-by: NIIBE Yutaka + +Upstream: https://git.gnupg.org/cgi-bin/gitweb.cgi?p=npth.git;a=commit;h=01f03a91c9bd63910995aeef412beb3ca6dc9a67 +Signed-off-by: Fabrice Fontaine +--- + src/npth.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/npth.c b/src/npth.c +index c0ff8da..f02540c 100644 +--- a/src/npth.c ++++ b/src/npth.c +@@ -488,9 +488,11 @@ npth_rwlock_timedrdlock (npth_rwlock_t *rwlock, const struct timespec *abstime) + ENTER(); + #if HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK + err = pthread_rwlock_timedrdlock (rwlock, abstime); +-#else ++#elif HAVE_PTHREAD_RWLOCK_TRYRDLOCK + err = busy_wait_for ((trylock_func_t) pthread_rwlock_tryrdlock, rwlock, + abstime); ++#else ++ err = ENOSYS; + #endif + LEAVE(); + return err; +@@ -533,7 +535,7 @@ npth_rwlock_timedwrlock (npth_rwlock_t *rwlock, const struct timespec *abstime) + ENTER(); + #if HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK + err = pthread_rwlock_timedwrlock (rwlock, abstime); +-#elif HAVE_PTHREAD_RWLOCK_TRYRDLOCK ++#elif HAVE_PTHREAD_RWLOCK_TRYWRLOCK + err = busy_wait_for ((trylock_func_t) pthread_rwlock_trywrlock, rwlock, + abstime); + #else +-- +2.30.2 + diff --git a/package/libnpth/0003-Fix-previous-commit.patch b/package/libnpth/0003-Fix-previous-commit.patch new file mode 100644 index 0000000000..5f3ce06bf6 --- /dev/null +++ b/package/libnpth/0003-Fix-previous-commit.patch @@ -0,0 +1,39 @@ +From 75c68399ef3bbb5d024f2a60474a7214fa479016 Mon Sep 17 00:00:00 2001 +From: NIIBE Yutaka +Date: Mon, 13 May 2024 11:13:23 +0900 +Subject: [PATCH] Fix previous commit. + +Signed-off-by: NIIBE Yutaka + +Upstream: https://git.gnupg.org/cgi-bin/gitweb.cgi?p=npth.git;a=commit;h=75c68399ef3bbb5d024f2a60474a7214fa479016 +Signed-off-by: Fabrice Fontaine +--- + src/npth.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/src/npth.c b/src/npth.c +index f02540c..8dced17 100644 +--- a/src/npth.c ++++ b/src/npth.c +@@ -178,6 +178,18 @@ static int initialized_or_any_threads; + typedef int (*trylock_func_t) (void *); + + #ifndef HAVE_PTHREAD_MUTEX_TIMEDLOCK ++#define REQUIRE_THE_BUSY_WAIT_FOR_IMPLEMENTATION 1 ++#endif ++ ++#if !HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK && HAVE_PTHREAD_RWLOCK_TRYRDLOCK ++#define REQUIRE_THE_BUSY_WAIT_FOR_IMPLEMENTATION 1 ++#endif ++ ++#if !HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK && HAVE_PTHREAD_RWLOCK_TRYWRLOCK ++#define REQUIRE_THE_BUSY_WAIT_FOR_IMPLEMENTATION 1 ++#endif ++ ++#if REQUIRE_THE_BUSY_WAIT_FOR_IMPLEMENTATION + static int + busy_wait_for (trylock_func_t trylock, void *lock, + const struct timespec *abstime) +-- +2.30.2 + From peter at korsgaard.com Wed May 15 06:14:44 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:14:44 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-waipu: bump version to 21.6.1-Omega Message-ID: <20240515061605.E0AAA8715D@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=3f3c22d1bf2e2923eae88f1997925c38aeb49f28 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Peter Korsgaard --- package/kodi-pvr-waipu/kodi-pvr-waipu.hash | 2 +- package/kodi-pvr-waipu/kodi-pvr-waipu.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-waipu/kodi-pvr-waipu.hash b/package/kodi-pvr-waipu/kodi-pvr-waipu.hash index 2c682c884c..6377f36e80 100644 --- a/package/kodi-pvr-waipu/kodi-pvr-waipu.hash +++ b/package/kodi-pvr-waipu/kodi-pvr-waipu.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 0db467d4986c36efb0c837dd728fc6322d3021fe2d8c93da9355b63f210fa0ca kodi-pvr-waipu-21.6.0-Omega.tar.gz +sha256 96c558f02d820c43994da05a89693f3e787c2adb8faa2ff28127a6e97d33525c kodi-pvr-waipu-21.6.1-Omega.tar.gz sha256 4202d4fb329f58c83ba921b56d7071e37f7df3f15b3820a3a04ef8eee49f54d2 pvr.waipu/LICENSE.txt diff --git a/package/kodi-pvr-waipu/kodi-pvr-waipu.mk b/package/kodi-pvr-waipu/kodi-pvr-waipu.mk index 4e9f8e00cf..222abcaa1b 100644 --- a/package/kodi-pvr-waipu/kodi-pvr-waipu.mk +++ b/package/kodi-pvr-waipu/kodi-pvr-waipu.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_WAIPU_VERSION = 21.6.0-Omega +KODI_PVR_WAIPU_VERSION = 21.6.1-Omega KODI_PVR_WAIPU_SITE = $(call github,flubshi,pvr.waipu,$(KODI_PVR_WAIPU_VERSION)) KODI_PVR_WAIPU_LICENSE = GPL-2.0+ KODI_PVR_WAIPU_LICENSE_FILES = pvr.waipu/LICENSE.txt From bugzilla at busybox.net Wed May 15 06:22:12 2024 From: bugzilla at busybox.net (bugzilla at busybox.net) Date: Wed, 15 May 2024 06:22:12 +0000 Subject: [Buildroot] [Bug 16075] New: Cannot use linux kernel extensions from external tree (building zfs into kernel) Message-ID: https://bugs.busybox.net/show_bug.cgi?id=16075 Bug ID: 16075 Summary: Cannot use linux kernel extensions from external tree (building zfs into kernel) Product: buildroot Version: 2024.02.1 Hardware: All OS: Linux Status: NEW Severity: normal Priority: P5 Component: Other Assignee: unassigned at buildroot.uclibc.org Reporter: mscdex at mscdex.net CC: buildroot at uclibc.org Target Milestone: --- I'm wanting to build zfs into the kernel, so after reading through the documentation it seemed like the best way to go about it would be through Buildroot's Linux kernel extension mechanism. I already have an existing, working external tree, so according to the documentation I added a `linux/Config.ext.in` and `linux/linux-ext-zfs-inkernel.mk` to my external tree. Re-running `make menuconfig` and navigating to the Linux Extensions section shows both the built-in Buildroot extensions and my new extension. However, after I select my extension and save the Buildroot configuration, just about every make target except `menuconfig` fails with: linux/linux.mk:646: *** Package 'linux' defined a second time in 'linux/'; previous definition was in '/home/foo/buildroot-external/linux/'. Stop. make: *** [Makefile:23: _all] Error 2 I tried explicitly adding a reference to the Config.ext.in in my external tree's Config.in and adding a reference to the linux-ext-zfs-inkernel.mk in my external tree's external.mk, but that did not make any difference. For what it's worth here are the contents of the two files (there may be issues with them as I obviously haven't been able to test them yet): linux/Config.ext.in: config BR2_LINUX_KERNEL_EXT_ZFS_INKERNEL bool "In-kernel ZFS" help In-kernel ZFS module linux/linux-ext-zfs-inkernel.mk: ZFS_INKERNEL_VERSION = 2.2.2 ZFS_INKERNEL_SOURCE = https://github.com/openzfs/zfs/releases/download/zfs-$(ZFS_INKERNEL_VERSION) ZFS_INKERNEL_INSTALL_STAGING = NO ZFS_INKERNEL_INSTALL_TARGET = NO define ZFS_INKERNEL_COPY_BUILTIN cd $(ZFS_INKERNEL_BUILDDIR) && ./copy-builtin $(LINUX_DIR) endef ZFS_INKERNEL_POST_CONFIGURE_HOOKS += ZFS_INKERNEL_COPY_BUILTIN LINUX_EXTENSIONS += zfs-inkernel ZFS_INKERNEL_CONF_OPTS = \ --with-linux=$(LINUX_DIR) \ --enable-linux-builtin ZFS_INKERNEL_MAKE = true $(eval $(autotools-package)) -- You are receiving this mail because: You are on the CC list for the bug. From sebastien.szymanski at armadeus.com Wed May 15 10:02:09 2024 From: sebastien.szymanski at armadeus.com (=?UTF-8?q?S=C3=A9bastien=20Szymanski?=) Date: Wed, 15 May 2024 12:02:09 +0200 Subject: [Buildroot] [PATCH v2 1/1] package/nxp-bt-wifi-firmware: new package Message-ID: <20240515100209.24769-1-sebastien.szymanski@armadeus.com> This package provides firmwares for NXP WiFi + Bluetooth chipsets. It is named "nxp-bt-wifi-firmware" so that it is not confused with the package firmware-imx. Signed-off-by: S?bastien Szymanski --- Changes for v2: - rename the package nxp-bt-wifi-firwmare package/Config.in | 1 + package/nxp-bt-wifi-firmware/Config.in | 62 +++++++++++++++++++ .../nxp-bt-wifi-firmware.hash | 3 + .../nxp-bt-wifi-firmware.mk | 32 ++++++++++ 4 files changed, 98 insertions(+) create mode 100644 package/nxp-bt-wifi-firmware/Config.in create mode 100644 package/nxp-bt-wifi-firmware/nxp-bt-wifi-firmware.hash create mode 100644 package/nxp-bt-wifi-firmware/nxp-bt-wifi-firmware.mk diff --git a/package/Config.in b/package/Config.in index 1b6a5b0dabb8..da0853b46c81 100644 --- a/package/Config.in +++ b/package/Config.in @@ -452,6 +452,7 @@ menu "Firmware" source "package/brcmfmac_sdio-firmware-rpi/Config.in" source "package/linux-firmware/Config.in" source "package/murata-cyw-fw/Config.in" + source "package/nxp-bt-wifi-firmware/Config.in" source "package/odroidc2-firmware/Config.in" source "package/qcom-db410c-firmware/Config.in" source "package/qoriq-fm-ucode/Config.in" diff --git a/package/nxp-bt-wifi-firmware/Config.in b/package/nxp-bt-wifi-firmware/Config.in new file mode 100644 index 000000000000..21a84289c918 --- /dev/null +++ b/package/nxp-bt-wifi-firmware/Config.in @@ -0,0 +1,62 @@ +config BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE + bool "nxp-bt-wifi-firmware" + help + Firmwares for NXP Bluetooth / WiFi chipsets based modules + + https://github.com/nxp-imx/imx-firmware + +if BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE + +config BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_8801 + bool "8801 (SD)" + help + NXP 8801 module firmware files. + +config BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_8987 + bool "8987 (SD)" + help + NXP 8987 module firmware files. + +config BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_8997 + bool "8997" + help + NXP 8997 module firmware files. + +choice + prompt "8997 WiFi interface" if BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_8997 + +config BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_8997_SD + bool "SD" + +config BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_8997_PCIE + bool "PCIe" + +endchoice + +config BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_9098 + bool "9098" + help + NXP 9098 module firmware files. + +choice + prompt "9098 WiFi interface" if BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_9098 + +config BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_9098_SD + bool "SD" + +config BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_9098_PCIE + bool "PCIe" + +endchoice + +config BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_IW416 + bool "IW416 (SD)" + help + NXP IW416 module firmware files. + +config BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_IW612 + bool "IW612 (SD)" + help + NXP IW612 module firmware files. + +endif diff --git a/package/nxp-bt-wifi-firmware/nxp-bt-wifi-firmware.hash b/package/nxp-bt-wifi-firmware/nxp-bt-wifi-firmware.hash new file mode 100644 index 000000000000..d45456c895b6 --- /dev/null +++ b/package/nxp-bt-wifi-firmware/nxp-bt-wifi-firmware.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2feba2969db7b6fc86aa0a13a0993ca241e155c23c0024c41316e67924778f5f nxp-bt-wifi-firmware-lf-6.6.3_1.0.0.tar.gz +sha256 3827bf3548bfd9de73bf51fbdd7a8c674dcecfb249cfa1a7cf17bd2dc4e08a8c LICENSE.txt diff --git a/package/nxp-bt-wifi-firmware/nxp-bt-wifi-firmware.mk b/package/nxp-bt-wifi-firmware/nxp-bt-wifi-firmware.mk new file mode 100644 index 000000000000..afdc060b1b92 --- /dev/null +++ b/package/nxp-bt-wifi-firmware/nxp-bt-wifi-firmware.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# nxp-bt-wifi-firmware +# +################################################################################ + +NXP_BT_WIFI_FIRMWARE_VERSION = lf-6.6.3_1.0.0 +NXP_BT_WIFI_FIRMWARE_SITE = $(call github,nxp-imx,imx-firmware,$(NXP_BT_WIFI_FIRMWARE_VERSION)) +NXP_BT_WIFI_FIRMWARE_LICENSE = NXP Software License Agreement +NXP_BT_WIFI_FIRMWARE_LICENSE_FILES = LICENSE.txt +NXP_BT_WIFI_FIRMWARE_REDISTRIBUTE = NO + +NXP_BT_WIFI_FIRMWARE_FILES_$(BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_8801) += FwImage_8801_SD +NXP_BT_WIFI_FIRMWARE_FILES_$(BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_8987) += FwImage_8987 +NXP_BT_WIFI_FIRMWARE_FILES_$(BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_8997_SD) += FwImage_8997_SD +NXP_BT_WIFI_FIRMWARE_FILES_$(BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_8997_PCIE) += FwImage_8997 +NXP_BT_WIFI_FIRMWARE_FILES_$(BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_9098_SD) += FwImage_9098_SD +NXP_BT_WIFI_FIRMWARE_FILES_$(BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_9098_PCIE) += FwImage_9098_PCIE +NXP_BT_WIFI_FIRMWARE_FILES_$(BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_IW416) += FwImage_IW416_SD +NXP_BT_WIFI_FIRMWARE_FILES_$(BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_IW612) += FwImage_IW612_SD + +define NXP_BT_WIFI_FIRMWARE_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/nxp/wifi_mod_para.conf \ + $(TARGET_DIR)/lib/firmware/nxp/wifi_mod_para.conf + $(INSTALL) -m 0644 -D $(@D)/nxp/mfguart/helper_uart_3000000.bin \ + $(TARGET_DIR)/lib/firmware/nxp/helper_uart_3000000.bin + $(foreach f,$(NXP_BT_WIFI_FIRMWARE_FILES_y), \ + $(INSTALL) -m 0644 -D $(@D)/nxp/$(f)/* $(TARGET_DIR)/lib/firmware/nxp/ + ) +endef + +$(eval $(generic-package)) -- 2.43.2 From wbx at openadk.org Wed May 15 10:40:50 2024 From: wbx at openadk.org (Waldemar Brodkorb) Date: Wed, 15 May 2024 12:40:50 +0200 Subject: [Buildroot] [PATCH] package/uclibc: fix compile issue with gcc 14.x Message-ID: Fixes: http://autobuild.buildroot.net/results/d9b924bdea3fd61060fa0e961c12534c1fff80de Signed-off-by: Waldemar Brodkorb --- .../0002-fix-kernel_stat64-definition.patch | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 package/uclibc/0002-fix-kernel_stat64-definition.patch diff --git a/package/uclibc/0002-fix-kernel_stat64-definition.patch b/package/uclibc/0002-fix-kernel_stat64-definition.patch new file mode 100644 index 0000000000..5a87586af8 --- /dev/null +++ b/package/uclibc/0002-fix-kernel_stat64-definition.patch @@ -0,0 +1,35 @@ +From 186878405324e96f61d896a149f623e0c792c972 Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Tue, 14 May 2024 23:18:56 -0700 +Subject: [PATCH] fix kernel_stat64 definition + +The commit 74ca8d6f5d2e ("remove UCLIBC_HAS_LFS") removed conditional +compilation dependent on __UCLIBC_HAS_LFS__, assuming it to be always +defined, but removed the wrong branch in the definition of +kernel_stat64. +Fix kernel_stat64 definition to be stat64. + +Signed-off-by: Max Filippov +Tested-by: Chris Packham +Signed-off-by: Waldemar Brodkorb +Upstream: https://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/commit/?id=186878405324e96f61d896a149f623e0c792c972 +--- + libc/sysdeps/linux/common-generic/bits/kernel_stat.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libc/sysdeps/linux/common-generic/bits/kernel_stat.h b/libc/sysdeps/linux/common-generic/bits/kernel_stat.h +index 7a97bb4d7..e874a4a9f 100644 +--- a/libc/sysdeps/linux/common-generic/bits/kernel_stat.h ++++ b/libc/sysdeps/linux/common-generic/bits/kernel_stat.h +@@ -18,7 +18,7 @@ + * However that requires more #ifndef in relevant wrappers, + * further uglifying them + */ +-#define kernel_stat64 stat ++#define kernel_stat64 stat64 + + #endif /* _BITS_STAT_STRUCT_H */ + +-- +2.30.2 + -- 2.30.2 From festevam at gmail.com Wed May 15 11:08:09 2024 From: festevam at gmail.com (Fabio Estevam) Date: Wed, 15 May 2024 08:08:09 -0300 Subject: [Buildroot] [PATCH v2 1/1] package/nxp-bt-wifi-firmware: new package In-Reply-To: <20240515100209.24769-1-sebastien.szymanski@armadeus.com> References: <20240515100209.24769-1-sebastien.szymanski@armadeus.com> Message-ID: Hi S?bastien, On Wed, May 15, 2024 at 7:02?AM S?bastien Szymanski wrote: > > This package provides firmwares for NXP WiFi + Bluetooth chipsets. > It is named "nxp-bt-wifi-firmware" so that it is not confused with the > package firmware-imx. Thanks for the path. Is there support in Buildroot for the https://github.com/nxp-imx/mwifiex kernel modules too? I want to test the IW612 Wifi on the imx93-evk board. Thanks, Fabio Estevam From peter at korsgaard.com Wed May 15 13:22:30 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 15:22:30 +0200 Subject: [Buildroot] [PATCH v2 1/1] kconfig/lxdialog: fix check() with GCC14 In-Reply-To: (Yann E. MORIN's message of "Tue, 30 Apr 2024 20:01:10 +0200") References: <20240408211609.2423619-1-robimarko@gmail.com> Message-ID: <8734qjryzt.fsf@dell.be.48ers.dk> >>>>> "Yann" == Yann E MORIN writes: > Robert, All, > On 2024-04-08 23:16 +0200, Robert Marko spake thusly: >> GCC14 now treats implicit int types as error so when check() from >> check-lxdialog.sh is called to check whether we can link against ncurses >> it will fail silently and the help text indicating to install ncurses is >> printed. >> >> However, this is not due to missing ncurses but once the stderr redirect >> to /dev/null is removed we can see the root cause: >> :2:1: error: return type defaults to ?int? [-Wimplicit-int] >> >> So, in order for menuconfig to work with GCC14 lets just specify the >> return type of main() as int. > I've also added a little note that there is no commit from the kernel > tree that we can backport, because the kernel tree no longer has that > script. >> Signed-off-by: Robert Marko >> Reviewed-by: Petr Vorel >> Tested-by: Petr Vorel > Applied to master with the little note abouve added, thanks. Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 13:24:02 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 15:24:02 +0200 Subject: [Buildroot] [PATCH] support/testing: TestATFAllwinner: add missing openssl dependency In-Reply-To: (Romain Naour's message of "Tue, 30 Apr 2024 23:41:14 +0200") References: <20240424195943.527542-1-romain.naour@smile.fr> Message-ID: <87y18bqkct.fsf@dell.be.48ers.dk> >>>>> "Romain" == Romain Naour writes: > Le 24/04/2024 ? 21:59, Romain Naour a ?crit?: >> The commit [1] updated the u-boot version with the one used by >> orangepi_zero_plus2_defconfig but the dependency on openssl >> was forgotten. >> >> Fixes: >> https://gitlab.com/buildroot.org/buildroot/-/jobs/6703221868 >> >> [1] eb16148dddc6be39b0d850181c2461fdaba1ee6f >> >> Signed-off-by: Romain Naour Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 13:25:28 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 15:25:28 +0200 Subject: [Buildroot] [PATCH] support/testing: TestF2FS: update kernel to 4.19.310 In-Reply-To: <20240424201033.550180-1-romain.naour@smile.fr> (Romain Naour's message of "Wed, 24 Apr 2024 22:10:33 +0200") References: <20240424201033.550180-1-romain.naour@smile.fr> Message-ID: <87ttizqkaf.fsf@dell.be.48ers.dk> >>>>> "Romain" == Romain Naour writes: > Since the toolchain Bootlin update to 2023.11-1 [1], the arm Linux > kernel build is broken with binutils >= 2.41 with: > arch/arm/mm/proc-v7.S: Assembler messages: > arch/arm/mm/proc-v7.S:640: Error: junk at end of line, first unrecognized character is `#' > A similar issue has already be fixed for qemu m68k [2]. > Bump to the latest kernel 4.19 that already include the backport > of 790756c7e022 ("ARM: 8933/1: replace Sun/Solaris style flag on section directive") > [1] 7e0e6e3b8618ab942f25b11ee72fbc5a4deefdf1 > [2] a1ce9474e40f731f327035d8c0962abb16f00ff7 > Fixes: > https://gitlab.com/buildroot.org/buildroot/-/jobs/6703222383 > Signed-off-by: Romain Naour Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 13:23:39 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 15:23:39 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] support/testing: TestATFAllwinner: add missing openssl dependency Message-ID: <20240515132757.D0F2387321@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=c8a229c85015b1a44911b5daa30238dcf925c72c branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x The commit [1] updated the u-boot version with the one used by orangepi_zero_plus2_defconfig but the dependency on openssl was forgotten. Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6703221868 [1] eb16148dddc6be39b0d850181c2461fdaba1ee6f Signed-off-by: Romain Naour (cherry picked from commit bc75b09b1c18541abaa47fc34eab44e91e2018ca) Signed-off-by: Peter Korsgaard --- support/testing/tests/boot/test_atf.py | 1 + 1 file changed, 1 insertion(+) diff --git a/support/testing/tests/boot/test_atf.py b/support/testing/tests/boot/test_atf.py index 352725e721..b0e7696e86 100644 --- a/support/testing/tests/boot/test_atf.py +++ b/support/testing/tests/boot/test_atf.py @@ -19,6 +19,7 @@ class TestATFAllwinner(infra.basetest.BRTest): BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.10" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_zero_plus2" BR2_TARGET_UBOOT_NEEDS_DTC=y + BR2_TARGET_UBOOT_NEEDS_OPENSSL=y BR2_TARGET_UBOOT_NEEDS_PYTHON3=y BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y From peter at korsgaard.com Wed May 15 13:25:16 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 15:25:16 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] support/testing: TestF2FS: update kernel to 4.19.310 Message-ID: <20240515132757.DC13087323@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=0b892513d02a3ce7cfb30127764652f676a28ffe branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Since the toolchain Bootlin update to 2023.11-1 [1], the arm Linux kernel build is broken with binutils >= 2.41 with: arch/arm/mm/proc-v7.S: Assembler messages: arch/arm/mm/proc-v7.S:640: Error: junk at end of line, first unrecognized character is `#' A similar issue has already be fixed for qemu m68k [2]. Bump to the latest kernel 4.19 that already include the backport of 790756c7e022 ("ARM: 8933/1: replace Sun/Solaris style flag on section directive") [1] 7e0e6e3b8618ab942f25b11ee72fbc5a4deefdf1 [2] a1ce9474e40f731f327035d8c0962abb16f00ff7 Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6703222383 Signed-off-by: Romain Naour (cherry picked from commit 7e126bd38d5eedb49cd29699c1afe8b53edd71e0) Signed-off-by: Peter Korsgaard --- support/testing/tests/fs/test_f2fs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/support/testing/tests/fs/test_f2fs.py b/support/testing/tests/fs/test_f2fs.py index 425fbe31ca..826077ac94 100644 --- a/support/testing/tests/fs/test_f2fs.py +++ b/support/testing/tests/fs/test_f2fs.py @@ -20,7 +20,7 @@ class TestF2FS(infra.basetest.BRTest): # BR2_TARGET_ROOTFS_TAR is not set BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y - BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.204" + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.310" BR2_LINUX_KERNEL_USE_DEFCONFIG=y BR2_LINUX_KERNEL_DEFCONFIG="vexpress" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}" From peter at korsgaard.com Wed May 15 13:18:09 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 15:18:09 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] kconfig/lxdialog: fix check() with GCC14 Message-ID: <20240515132757.C629B87320@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=f5a347c1dc11297f57d1b33aaf4f9c936fa2d241 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x GCC14 now treats implicit int types as error so when check() from check-lxdialog.sh is called to check whether we can link against ncurses it will fail silently and the help text indicating to install ncurses is printed. However, this is not due to missing ncurses but once the stderr redirect to /dev/null is removed we can see the root cause: :2:1: error: return type defaults to ???int??? [-Wimplicit-int] So, in order for menuconfig to work with GCC14 lets just specify the return type of main() as int. Npte that the upstream kconfig in the linux kernel source tree no longer carries or uses the check-lxdialog.sh script since commit 1c5af5cf9308 (kconfig: refactor ncurses package checks for building mconf and nconf), so there is no commit we can backport to our kconfig copy. Signed-off-by: Robert Marko Reviewed-by: Petr Vorel Tested-by: Petr Vorel [yann.morin.1998 at free.fr: add note about upstream kernel] Signed-off-by: Yann E. MORIN (cherry picked from commit a6210d28dbf66b2f0a42d945711dfd93c7329feb) Signed-off-by: Peter Korsgaard --- support/kconfig/lxdialog/check-lxdialog.sh | 2 +- .../22-kconfig-lxdialog-fix-check-with-GCC14.patch | 43 ++++++++++++++++++++++ support/kconfig/patches/series | 1 + 3 files changed, 45 insertions(+), 1 deletion(-) diff --git a/support/kconfig/lxdialog/check-lxdialog.sh b/support/kconfig/lxdialog/check-lxdialog.sh index 16cd9a3186..27d6c30a57 100755 --- a/support/kconfig/lxdialog/check-lxdialog.sh +++ b/support/kconfig/lxdialog/check-lxdialog.sh @@ -48,7 +48,7 @@ trap "rm -f $tmp" 0 1 2 3 15 check() { $cc -x c - -o $tmp 2>/dev/null <<'EOF' #include CURSES_LOC -main() {} +int main() {} EOF if [ $? != 0 ]; then echo " *** Unable to find the ncurses libraries or the" 1>&2 diff --git a/support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch b/support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch new file mode 100644 index 0000000000..41081bb45d --- /dev/null +++ b/support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch @@ -0,0 +1,43 @@ +From 3ae91337b53fa3ccf0bad7f181fcaf483fab22ee Mon Sep 17 00:00:00 2001 +From: Robert Marko +Date: Wed, 3 Apr 2024 14:18:07 +0200 +Subject: [PATCH] kconfig/lxdialog: fix check() with GCC14 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +GCC14 now treats implicit int types as error so when check() from +check-lxdialog.sh is called to check whether we can link against ncurses +it will fail silently and the help text indicating to install ncurses is +printed. + +However, this is not due to missing ncurses but once the stderr redirect +to /dev/null is removed we can see the root cause: +:2:1: error: return type defaults to ???int??? [-Wimplicit-int] + +So, in order for menuconfig to work with GCC14 lets just specify the +return type of main() as int. + +Signed-off-by: Robert Marko +Reviewed-by: Petr Vorel +Tested-by: Petr Vorel +--- + kconfig/lxdialog/check-lxdialog.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/kconfig/lxdialog/check-lxdialog.sh b/kconfig/lxdialog/check-lxdialog.sh +index 16cd9a3186..27d6c30a57 100755 +--- a/kconfig/lxdialog/check-lxdialog.sh ++++ b/kconfig/lxdialog/check-lxdialog.sh +@@ -48,7 +48,7 @@ trap "rm -f $tmp" 0 1 2 3 15 + check() { + $cc -x c - -o $tmp 2>/dev/null <<'EOF' + #include CURSES_LOC +-main() {} ++int main() {} + EOF + if [ $? != 0 ]; then + echo " *** Unable to find the ncurses libraries or the" 1>&2 +-- +2.44.0 + diff --git a/support/kconfig/patches/series b/support/kconfig/patches/series index e5a6f69d8f..f120e323b7 100644 --- a/support/kconfig/patches/series +++ b/support/kconfig/patches/series @@ -10,3 +10,4 @@ 19-merge_config.sh-add-br2-external-support.patch 20-merge_config.sh-Allow-to-define-config-prefix.patch 21-Avoid-false-positive-matches-from-comment-lines.patch +22-kconfig-lxdialog-fix-check-with-GCC14.patch From peter at korsgaard.com Wed May 15 13:34:31 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 15:34:31 +0200 Subject: [Buildroot] [PATCH 1/1] configs/wandboard: uboot needs openssl In-Reply-To: <20240412195346.1563030-1-ju.o@free.fr> (Julien Olivain's message of "Fri, 12 Apr 2024 21:53:46 +0200") References: <20240412195346.1563030-1-ju.o@free.fr> Message-ID: <87pltnqjvc.fsf@dell.be.48ers.dk> >>>>> "Julien" == Julien Olivain writes: > Fixes: > https://gitlab.com/buildroot.org/buildroot/-/jobs/6609466641 > Signed-off-by: Julien Olivain Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 13:34:14 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 15:34:14 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] configs/wandboard: uboot needs openssl Message-ID: <20240515133441.EBB1E87358@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=cd987cbcc13f4f6fa74be0b4dde511bc1642a31e branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6609466641 Signed-off-by: Julien Olivain Reviewed-by: Fabio Estevam Signed-off-by: Romain Naour (cherry picked from commit ffe920b6447a9138cd679f98ecffccbcae0d107c) Signed-off-by: Peter Korsgaard --- configs/wandboard_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/wandboard_defconfig b/configs/wandboard_defconfig index 522173b8ed..b110c292dd 100644 --- a/configs/wandboard_defconfig +++ b/configs/wandboard_defconfig @@ -26,6 +26,7 @@ BR2_TARGET_UBOOT_CUSTOM_VERSION=y BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="wandboard" BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y BR2_TARGET_UBOOT_SPL=y BR2_TARGET_UBOOT_SPL_NAME="SPL" From romain.naour at smile.fr Wed May 15 14:01:32 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 15 May 2024 16:01:32 +0200 Subject: [Buildroot] [PATCH 1/1] package/python-ml-dtypes: skip dependency check In-Reply-To: <4e9d5bc99a30a885dddb8aba6145f56d@free.fr> References: <20240514154250.1453970-1-james.hilliard1@gmail.com> <4e9d5bc99a30a885dddb8aba6145f56d@free.fr> Message-ID: <888f8476-9bc2-409d-a35d-bb93282627d0@smile.fr> Hello James, Julien, All, Le 14/05/2024 ? 19:26, Julien Olivain a ?crit?: > Hi James, > > Thanks for the patch! > > I successfully tested it on branch master at commit 9764258 with command: > > ??? support/testing/run-tests \ > ??????? -d dl -o output_folder \ > ??????? tests.package.test_python_ml_dtypes > > On 14/05/2024 17:42, James Hilliard wrote: >> This package pins overly strict numpy dependency versions apparently >> for compatibility reasons that don't appear relevant to buildroot. >> >> This package also appears to pin an overly strict setuptools version >> for unclear reasons. I looked at this issue last week with the same conclusions... I was able to fix the setuptools version check but it was sill failing with numpy check (it seems numpy dependency is never found while cross-compiling). >> >> See: >> https://github.com/jax-ml/ml_dtypes/blob/v0.3.2/pyproject.toml#L51-L55 >> >> To fix this lets just set the --skip-dependency-check build option and >> ignore the build dependency version mismatches since they don't appear >> to cause any build issues. Maybe we should avoid using --skip-dependency-check option too easily. We could miss any new dependency used by further release? >> >> This error was introduced when we migrated setuptools to pep517 in >> 8937db8dd595e0988751e5dbb568e870b07b39cc. >> >> Signed-off-by: James Hilliard > > Tested-by: Julien Olivain > >> --- >> ?package/python-ml-dtypes/python-ml-dtypes.mk | 1 + >> ?1 file changed, 1 insertion(+) >> >> diff --git a/package/python-ml-dtypes/python-ml-dtypes.mk >> b/package/python-ml-dtypes/python-ml-dtypes.mk >> index 676137ecf1..8097265078 100644 >> --- a/package/python-ml-dtypes/python-ml-dtypes.mk >> +++ b/package/python-ml-dtypes/python-ml-dtypes.mk >> @@ -10,6 +10,7 @@ PYTHON_ML_DTYPES_SITE = >> https://files.pythonhosted.org/packages/39/7d/8d85fcba86 >> ?PYTHON_ML_DTYPES_LICENSE = Apache-2.0 >> ?PYTHON_ML_DTYPES_LICENSE_FILES = LICENSE >> ?PYTHON_ML_DTYPES_SETUP_TYPE = setuptools We could add a comment here to explain why we skip-dependency-check here. Best regards, Romain >> +PYTHON_ML_DTYPES_BUILD_OPTS = --skip-dependency-check >> >> ?PYTHON_ML_DTYPES_DEPENDENCIES = \ >> ???? host-python-numpy \ >> -- >> 2.34.1 > > Best regards, > > Julien. > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot From romain.naour at smile.fr Wed May 15 14:12:46 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 15 May 2024 16:12:46 +0200 Subject: [Buildroot] [PATCH] package/python-ml-dtypes: remove python-pybind from C++ dependency comment Message-ID: <20240515141246.44580-1-romain.naour@smile.fr> python-pybind dependency has been removed since the version bump to 0.3.2 [1] [1] 06e1a3620e5268951be089d2b150c1802de7de4c Signed-off-by: Romain Naour --- package/python-ml-dtypes/Config.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/python-ml-dtypes/Config.in b/package/python-ml-dtypes/Config.in index 58c218b214..7dce2fea42 100644 --- a/package/python-ml-dtypes/Config.in +++ b/package/python-ml-dtypes/Config.in @@ -1,7 +1,7 @@ config BR2_PACKAGE_PYTHON_ML_DTYPES bool "python-ml-dtypes" depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS - depends on BR2_INSTALL_LIBSTDCPP # python-pybind, python-numpy + depends on BR2_INSTALL_LIBSTDCPP # python-numpy depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL # python-numpy depends on BR2_TOOLCHAIN_GCC_AT_LEAST_9 # python-numpy depends on BR2_HOST_GCC_AT_LEAST_9 # host-python-numpy -- 2.44.0 From peter at korsgaard.com Wed May 15 14:44:15 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 16:44:15 +0200 Subject: [Buildroot] [PATCH] configs/sipeed_licheepi_nano_defconfig: fix missing linux headers In-Reply-To: <20240402210856.67418-1-gero.schwaericke@posteo.de> ("Gero =?utf-8?Q?Schw=C3=A4ricke=22's?= message of "Tue, 2 Apr 2024 21:08:52 +0000") References: <20240402210856.67418-1-gero.schwaericke@posteo.de> Message-ID: <87le4bqgn4.fsf@dell.be.48ers.dk> >>>>> "Gero" == Gero Schw?ricke writes: > The build failed with: > Incorrect selection of kernel headers: expected 6.8.x, got 6.5.x > Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6498278078 > Signed-off-by: Gero Schw?ricke Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 14:32:59 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 16:32:59 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] configs/sipeed_licheepi_nano_defconfig: fix missing linux headers Message-ID: <20240515144426.DFEA287390@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=f113543d83d57f9c5ef621e03b4934e2623e20f4 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x The build failed with: Incorrect selection of kernel headers: expected 6.8.x, got 6.5.x Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6498278078 Signed-off-by: Gero Schw??ricke Signed-off-by: Romain Naour (cherry picked from commit f5aac04c362b593011ce245549d4bfc3311dbe9d) Signed-off-by: Peter Korsgaard --- configs/sipeed_licheepi_nano_defconfig | 3 +++ 1 file changed, 3 insertions(+) diff --git a/configs/sipeed_licheepi_nano_defconfig b/configs/sipeed_licheepi_nano_defconfig index 8be26165d9..6eb4a3069d 100644 --- a/configs/sipeed_licheepi_nano_defconfig +++ b/configs/sipeed_licheepi_nano_defconfig @@ -9,6 +9,9 @@ BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/sipeed/licheepi_nano/genimage.cfg" +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_5=y + # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y From peter at korsgaard.com Wed May 15 14:59:02 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 16:59:02 +0200 Subject: [Buildroot] [PATCH] package/libvncserver: correct WITH_THREADS=ON/OFF logic Message-ID: <20240515145903.363218-1-peter@korsgaard.com> Commit ee59023794f5540e5 (package/libvncserver: bump to version 0.9.12) changes the package from autotools to cmake and accidently inverted the threads logic. The reason this was not noticed is that the build system verifies if threads support works and otherwise disables it even when -DWITH_THREADS=ON is passed, E.G. for a nothread configuration: cmake ... -DWITH_THREADS=ON ... .. -- Performing Test CMAKE_HAVE_LIBC_PTHREAD -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed -- Looking for pthread_create in pthreads -- Looking for pthread_create in pthreads - not found -- Looking for pthread_create in pthread -- Looking for pthread_create in pthread - not found Signed-off-by: Peter Korsgaard --- package/libvncserver/libvncserver.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/libvncserver/libvncserver.mk b/package/libvncserver/libvncserver.mk index 3a15a82d08..082f838f12 100644 --- a/package/libvncserver/libvncserver.mk +++ b/package/libvncserver/libvncserver.mk @@ -22,7 +22,7 @@ LIBVNCSERVER_CONF_OPTS += \ -DWITH_SDL=OFF \ -DWITH_TESTS=OFF -ifneq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) LIBVNCSERVER_CONF_OPTS += -DWITH_THREADS=ON else LIBVNCSERVER_CONF_OPTS += -DWITH_THREADS=OFF -- 2.39.2 From peter at korsgaard.com Wed May 15 15:01:20 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 17:01:20 +0200 Subject: [Buildroot] [buildroot/buildroot] Repair libvncserver .mk file error (PR #141) In-Reply-To: (Thomas Petazzoni's message of "Mon, 13 May 2024 23:49:55 -0700") References: Message-ID: <87h6ezqfun.fsf@dell.be.48ers.dk> >>>>> "Thomas" == Thomas Petazzoni writes: > Closed #141. But the issue looks real, so I've posted a patch for it: https://patchwork.ozlabs.org/project/buildroot/patch/20240515145903.363218-1-peter at korsgaard.com/ -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 15:10:09 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 17:10:09 +0200 Subject: [Buildroot] [PATCH] configs/raspberrypizero2w_defconfig: fix typo in headers series option In-Reply-To: <20240403222513.1267595-1-gero.schwaericke@posteo.de> ("Gero =?utf-8?Q?Schw=C3=A4ricke=22's?= message of "Wed, 3 Apr 2024 22:24:44 +0000") References: <20240403222513.1267595-1-gero.schwaericke@posteo.de> Message-ID: <87cypnqffy.fsf@dell.be.48ers.dk> >>>>> "Gero" == Gero Schw?ricke writes: > The build for this defconfig fails with: > Incorrect selection of kernel headers: expected 6.8.x, got 6.1.x > Found with the following command while trying to find boards that have > missing custom headers series: > grep --null --recursive --files-without-match "BR2_TOOLCHAIN_EXTERNAL=y" ./configs \ > | xargs --null grep --null --files-with-matches "BR2_LINUX_KERNEL_CUSTOM_.*=y" \ > | xargs --null grep --null --files-without-match "BR2_KERNEL_HEADERS_[0-9]\+_[0-9]\+=y"\ > | xargs --null grep --files-without-match "BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_[0-9]\+_[0-9]\+=y" > ./configs/mangopi_mq1rdw2_defconfig # patch pending > ./configs/raspberrypizero2w_defconfig > ./configs/sipeed_licheepi_nano_defconfig # patch pending > Signed-off-by: Gero Schw?ricke Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 15:09:37 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 17:09:37 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] configs/raspberrypizero2w_defconfig: fix typo in headers series option Message-ID: <20240515151102.0EB5A873AB@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=e036a25271ceedb8b9839437832c3bccd2075e14 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x The build for this defconfig fails with: Incorrect selection of kernel headers: expected 6.8.x, got 6.1.x Found with the following command while trying to find boards that have missing custom headers series: grep --null --recursive --files-without-match "BR2_TOOLCHAIN_EXTERNAL=y" ./configs \ | xargs --null grep --null --files-with-matches "BR2_LINUX_KERNEL_CUSTOM_.*=y" \ | xargs --null grep --null --files-without-match "BR2_KERNEL_HEADERS_[0-9]\+_[0-9]\+=y"\ | xargs --null grep --files-without-match "BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_[0-9]\+_[0-9]\+=y" ./configs/mangopi_mq1rdw2_defconfig # patch pending ./configs/raspberrypizero2w_defconfig ./configs/sipeed_licheepi_nano_defconfig # patch pending Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6712162631 Signed-off-by: Gero Schw??ricke [Romain: add gitlab-ci link] Signed-off-by: Romain Naour (cherry picked from commit dc18b639c93f972246fce345b43dc091d07d35ca) Signed-off-by: Peter Korsgaard --- configs/raspberrypizero2w_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/raspberrypizero2w_defconfig b/configs/raspberrypizero2w_defconfig index 1bf335c076..e152889f2d 100644 --- a/configs/raspberrypizero2w_defconfig +++ b/configs/raspberrypizero2w_defconfig @@ -3,7 +3,7 @@ BR2_cortex_a53=y BR2_ARM_FPU_NEON_VFPV4=y # Linux headers same as kernel, 6.1 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6.1=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y BR2_TOOLCHAIN_BUILDROOT_CXX=y From james.hilliard1 at gmail.com Wed May 15 15:10:54 2024 From: james.hilliard1 at gmail.com (James Hilliard) Date: Wed, 15 May 2024 09:10:54 -0600 Subject: [Buildroot] [PATCH 1/1] package/python-ml-dtypes: skip dependency check In-Reply-To: <888f8476-9bc2-409d-a35d-bb93282627d0@smile.fr> References: <20240514154250.1453970-1-james.hilliard1@gmail.com> <4e9d5bc99a30a885dddb8aba6145f56d@free.fr> <888f8476-9bc2-409d-a35d-bb93282627d0@smile.fr> Message-ID: On Wed, May 15, 2024 at 8:01?AM Romain Naour wrote: > > Hello James, Julien, All, > > Le 14/05/2024 ? 19:26, Julien Olivain a ?crit : > > Hi James, > > > > Thanks for the patch! > > > > I successfully tested it on branch master at commit 9764258 with command: > > > > support/testing/run-tests \ > > -d dl -o output_folder \ > > tests.package.test_python_ml_dtypes > > > > On 14/05/2024 17:42, James Hilliard wrote: > >> This package pins overly strict numpy dependency versions apparently > >> for compatibility reasons that don't appear relevant to buildroot. > >> > >> This package also appears to pin an overly strict setuptools version > >> for unclear reasons. > > I looked at this issue last week with the same conclusions... > I was able to fix the setuptools version check but it was sill failing with > numpy check (it seems numpy dependency is never found while cross-compiling). > > >> > >> See: > >> https://github.com/jax-ml/ml_dtypes/blob/v0.3.2/pyproject.toml#L51-L55 > >> > >> To fix this lets just set the --skip-dependency-check build option and > >> ignore the build dependency version mismatches since they don't appear > >> to cause any build issues. > > Maybe we should avoid using --skip-dependency-check option too easily. We could > miss any new dependency used by further release? Yeah, we shouldn't use it unless we have a good reason for it, I think this qualifies. > > >> > >> This error was introduced when we migrated setuptools to pep517 in > >> 8937db8dd595e0988751e5dbb568e870b07b39cc. > >> > >> Signed-off-by: James Hilliard > > > > Tested-by: Julien Olivain > > > >> --- > >> package/python-ml-dtypes/python-ml-dtypes.mk | 1 + > >> 1 file changed, 1 insertion(+) > >> > >> diff --git a/package/python-ml-dtypes/python-ml-dtypes.mk > >> b/package/python-ml-dtypes/python-ml-dtypes.mk > >> index 676137ecf1..8097265078 100644 > >> --- a/package/python-ml-dtypes/python-ml-dtypes.mk > >> +++ b/package/python-ml-dtypes/python-ml-dtypes.mk > >> @@ -10,6 +10,7 @@ PYTHON_ML_DTYPES_SITE = > >> https://files.pythonhosted.org/packages/39/7d/8d85fcba86 > >> PYTHON_ML_DTYPES_LICENSE = Apache-2.0 > >> PYTHON_ML_DTYPES_LICENSE_FILES = LICENSE > >> PYTHON_ML_DTYPES_SETUP_TYPE = setuptools > > We could add a comment here to explain why we skip-dependency-check here. Well we haven't really been doing that on other packages using this flag, and packages specifying overly strict/unnecessary build dependencies in some way is generally always the reason for this flag for any packages using it. > > Best regards, > Romain > > >> +PYTHON_ML_DTYPES_BUILD_OPTS = --skip-dependency-check > >> > >> PYTHON_ML_DTYPES_DEPENDENCIES = \ > >> host-python-numpy \ > >> -- > >> 2.34.1 > > > > Best regards, > > > > Julien. > > _______________________________________________ > > buildroot mailing list > > buildroot at buildroot.org > > https://lists.buildroot.org/mailman/listinfo/buildroot > From peter at korsgaard.com Wed May 15 15:28:20 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 17:28:20 +0200 Subject: [Buildroot] [PATCH] configs/pc_x86_64_{bios, efi}_defconfig: add wireless regdb In-Reply-To: <20240330212200.794927-1-aladyshev22@gmail.com> (Konstantin Aladyshev's message of "Sun, 31 Mar 2024 00:22:00 +0300") References: <20240330212200.794927-1-aladyshev22@gmail.com> Message-ID: <878r0bqeln.fsf@dell.be.48ers.dk> >>>>> "Konstantin" == Konstantin Aladyshev writes: > Wireless regulatory database lists the allowed radio frequencies for > each local jurisdiction. Since linux-4.15 the kernel supports loading > the files regulatory.db/regulatory.db.p7s directly from the > /lib/firmware directory. Currently this package is not enabled and > kernel complains with the following message on every boot: > """ > platform regulatory.0: Direct firmware load for regulatory.db failed > with error -2 > cfg80211: failed to load regulatory.db > """ > Add wireless regulatory database package to fix the issue. > Signed-off-by: Konstantin Aladyshev Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 15:29:47 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 17:29:47 +0200 Subject: [Buildroot] [PATCH 1/1] package/fluidsynth: bump to version 2.3.5 In-Reply-To: <20240401191720.141576-1-ju.o@free.fr> (Julien Olivain's message of "Mon, 1 Apr 2024 21:17:20 +0200") References: <20240401191720.141576-1-ju.o@free.fr> Message-ID: <874jazqej8.fsf@dell.be.48ers.dk> >>>>> "Julien" == Julien Olivain writes: > For change log since v2.3.4, see: > - https://github.com/FluidSynth/fluidsynth/releases/tag/v2.3.5 > Signed-off-by: Julien Olivain Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 15:30:50 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 17:30:50 +0200 Subject: [Buildroot] [PATCH 1/1] package/apcupsd: set ac_cv_path_SHUTDOWN In-Reply-To: <20240330221122.1112448-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sat, 30 Mar 2024 23:11:22 +0100") References: <20240330221122.1112448-1-fontaine.fabrice@gmail.com> Message-ID: <87zfsrozx1.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > Set ac_cv_path_SHUTDOWN to /sbin/shutdown to avoid the following build > failure when shutdown is not available on host raised since the addition > of the package in commit d12b63b741586b89c4017551308c43512a617287: > configure: error: Missing required tool; need any one of: shutdown shutdown.bsd > Fixes: d12b63b741586b89c4017551308c43512a617287 > - http://autobuild.buildroot.org/results/a8bbb5ced8343e08070361f260050de422144710 > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 15:27:31 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 17:27:31 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] configs/pc_x86_64_{bios, efi}_defconfig: add wireless regdb Message-ID: <20240515153113.8F2C1873D5@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=3c14bcebcb657fee1bed615a6b8073add9a0975b branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Wireless regulatory database lists the allowed radio frequencies for each local jurisdiction. Since linux-4.15 the kernel supports loading the files regulatory.db/regulatory.db.p7s directly from the /lib/firmware directory. Currently this package is not enabled and kernel complains with the following message on every boot: """ platform regulatory.0: Direct firmware load for regulatory.db failed with error -2 cfg80211: failed to load regulatory.db """ Add wireless regulatory database package to fix the issue. Signed-off-by: Konstantin Aladyshev Signed-off-by: Thomas Petazzoni (cherry picked from commit 16e9f514905a12caab1d1b308dd95f8b79977828) Signed-off-by: Peter Korsgaard --- configs/pc_x86_64_bios_defconfig | 1 + configs/pc_x86_64_efi_defconfig | 1 + 2 files changed, 2 insertions(+) diff --git a/configs/pc_x86_64_bios_defconfig b/configs/pc_x86_64_bios_defconfig index 6032544d2d..cba92ad93d 100644 --- a/configs/pc_x86_64_bios_defconfig +++ b/configs/pc_x86_64_bios_defconfig @@ -62,3 +62,4 @@ BR2_PACKAGE_ACPID=y BR2_PACKAGE_CONNMAN=y BR2_PACKAGE_CONNMAN_CLIENT=y BR2_PACKAGE_CONNMAN_WIFI=y +BR2_PACKAGE_WIRELESS_REGDB=y diff --git a/configs/pc_x86_64_efi_defconfig b/configs/pc_x86_64_efi_defconfig index afb652f3fc..fe6686b4a2 100644 --- a/configs/pc_x86_64_efi_defconfig +++ b/configs/pc_x86_64_efi_defconfig @@ -63,3 +63,4 @@ BR2_PACKAGE_ACPID=y BR2_PACKAGE_CONNMAN=y BR2_PACKAGE_CONNMAN_CLIENT=y BR2_PACKAGE_CONNMAN_WIFI=y +BR2_PACKAGE_WIRELESS_REGDB=y From peter at korsgaard.com Wed May 15 15:30:35 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 17:30:35 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/apcupsd: set ac_cv_path_SHUTDOWN Message-ID: <20240515153113.A99AF873D7@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=bb7a0c27d4bca705089f7d17d5a6c302545f2539 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Set ac_cv_path_SHUTDOWN to /sbin/shutdown to avoid the following build failure when shutdown is not available on host raised since the addition of the package in commit d12b63b741586b89c4017551308c43512a617287: configure: error: Missing required tool; need any one of: shutdown shutdown.bsd Fixes: d12b63b741586b89c4017551308c43512a617287 - http://autobuild.buildroot.org/results/a8bbb5ced8343e08070361f260050de422144710 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni (cherry picked from commit 640a79000b028eef3f54ba18e450c27bbeea9f56) Signed-off-by: Peter Korsgaard --- package/apcupsd/apcupsd.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/package/apcupsd/apcupsd.mk b/package/apcupsd/apcupsd.mk index 97e6d6a558..43a016678d 100644 --- a/package/apcupsd/apcupsd.mk +++ b/package/apcupsd/apcupsd.mk @@ -11,6 +11,7 @@ APCUPSD_LICENSE_FILES = COPYING APCUPSD_CPE_ID_VENDOR = apcupsd APCUPSD_SELINUX_MODULES = apache apcupsd APCUPSD_CONF_OPTS = --disable-test +APCUPSD_CONF_ENV = ac_cv_path_SHUTDOWN=/sbin/shutdown ifneq ($(BR2_PACKAGE_APCUPSD_MODBUS_USB)$(BR2_PACKAGE_APCUPSD_USB),) APCUPSD_CONF_ENV += ac_cv_path_usbcfg=$(STAGING_DIR)/usr/bin/libusb-config From peter at korsgaard.com Wed May 15 15:29:33 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 17:29:33 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/fluidsynth: bump to version 2.3.5 Message-ID: <20240515153113.9CBA6873D6@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=8811a2d0ebaff24bb6e94da1897378c52ebf24b9 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x For change log since v2.3.4, see: - https://github.com/FluidSynth/fluidsynth/releases/tag/v2.3.5 Signed-off-by: Julien Olivain Signed-off-by: Thomas Petazzoni (cherry picked from commit 0215a6d6f68e03909f54f4bbb160161b8d80503d) Signed-off-by: Peter Korsgaard --- package/fluidsynth/fluidsynth.hash | 2 +- package/fluidsynth/fluidsynth.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/fluidsynth/fluidsynth.hash b/package/fluidsynth/fluidsynth.hash index 824f246a2c..91d8778cbf 100644 --- a/package/fluidsynth/fluidsynth.hash +++ b/package/fluidsynth/fluidsynth.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 1529ef5bc3b9ef3adc2a7964505912f7305103e269e50cc0316f500b22053ac9 fluidsynth-2.3.4.tar.gz +sha256 f89e8e983ecfb4a5b4f5d8c2b9157ed18d15ed2e36246fa782f18abaea550e0d fluidsynth-2.3.5.tar.gz sha256 9b872a8a070b8ad329c4bd380fb1bf0000f564c75023ec8e1e6803f15364b9e9 LICENSE diff --git a/package/fluidsynth/fluidsynth.mk b/package/fluidsynth/fluidsynth.mk index 4317c6e460..ef05b6a569 100644 --- a/package/fluidsynth/fluidsynth.mk +++ b/package/fluidsynth/fluidsynth.mk @@ -4,7 +4,7 @@ # ################################################################################ -FLUIDSYNTH_VERSION = 2.3.4 +FLUIDSYNTH_VERSION = 2.3.5 FLUIDSYNTH_SITE = $(call github,FluidSynth,fluidsynth,v$(FLUIDSYNTH_VERSION)) FLUIDSYNTH_LICENSE = LGPL-2.1+ FLUIDSYNTH_LICENSE_FILES = LICENSE From bonet at grenoble.cnrs.fr Wed May 15 15:31:15 2024 From: bonet at grenoble.cnrs.fr (Edgar Bonet) Date: Wed, 15 May 2024 17:31:15 +0200 Subject: [Buildroot] Nginx fails to build with GCC 14 In-Reply-To: <5647a701-8c5a-4ce6-92c3-3c252e1cd91b@grenoble.cnrs.fr> References: <5647a701-8c5a-4ce6-92c3-3c252e1cd91b@grenoble.cnrs.fr> Message-ID: <4c9e89d1-48f6-48a7-b7af-0d429e2256cc@grenoble.cnrs.fr> Hello all! On 2024-05-14, I wrote: > Building nginx with GCC 14 fails at the configure step with: > > ./configure: error: libatomic_ops library was not found. It turns out the issue is in a tiny test program that the configure script tries to compile in order to probe for the atomic_ops library. The compilation fails on an ?incompatible pointer type? error. Up to GCC 13, implicitly casting between incompatible pointer types only issued a warning. Since GCC 14, this is an error.[1] I fixed the issue with the meta-patch (patch adding a patch) below. May I now submit this to buildroot? Should I instead attempt to upstream the inner patch before submitting here the meta-patch? Any comments on these patches are welcome. Regards, Edgar. [1] https://gcc.gnu.org/gcc-14/porting_to.html#incompatible-pointer-types -- >8 -- Subject: [PATCH 1/1] package/nginx: fix compile error in configure script Building with GCC 14 fails at the configure step with: ./configure: error: libatomic_ops library was not found. The error is not caused by a missing library, but by an unrelated "incompatible pointer type" error in the test program: ... checking for atomic_ops library objs/autotest.c: In function 'main': objs/autotest.c:9:48: error: passing argument 1 of 'AO_compare_and_swap' from incompatible pointer type [-Wincompatible-pointer-types] This used to be a warning, but it is an error since GCC 14.[1] Fix this by patching the test program in order to use the correct pointer types. [1] https://gcc.gnu.org/gcc-14/porting_to.html#incompatible-pointer-types Signed-off-by: Edgar Bonet --- ...ix-compile-error-in-configure-script.patch | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 package/nginx/0011-Fix-compile-error-in-configure-script.patch diff --git a/package/nginx/0011-Fix-compile-error-in-configure-script.patch b/package/nginx/0011-Fix-compile-error-in-configure-script.patch new file mode 100644 index 0000000000..f8160a1da2 --- /dev/null +++ b/package/nginx/0011-Fix-compile-error-in-configure-script.patch @@ -0,0 +1,40 @@ +From e1bcac837f6aeabc4ddece06ecbcf2bcca8dd651 Mon Sep 17 00:00:00 2001 +From: Edgar Bonet +Date: Wed, 15 May 2024 16:35:27 +0200 +Subject: [PATCH] Fix compile error in configure script + +Building with GCC 14 fails at the configure step with: + + ./configure: error: libatomic_ops library was not found. + +The error is not caused by a missing library, but by an unrelated +"incompatible pointer type" error in the test program: + + ... + checking for atomic_ops library + objs/autotest.c: In function 'main': + objs/autotest.c:9:48: error: passing argument 1 of 'AO_compare_and_swap' from incompatible pointer type [-Wincompatible-pointer-types] + +Fix the error by using the correct pointer types. + +Signed-off-by: Edgar Bonet +--- + auto/lib/libatomic/conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/auto/lib/libatomic/conf b/auto/lib/libatomic/conf +index d1e484a..0f12b9c 100644 +--- a/auto/lib/libatomic/conf ++++ b/auto/lib/libatomic/conf +@@ -20,7 +20,7 @@ else + #include " + ngx_feature_path= + ngx_feature_libs="-latomic_ops" +- ngx_feature_test="long n = 0; ++ ngx_feature_test="volatile size_t n = 0; + if (!AO_compare_and_swap(&n, 0, 1)) + return 1; + if (AO_fetch_and_add(&n, 1) != 1) +-- +2.34.1 + -- 2.34.1 From fontaine.fabrice at gmail.com Wed May 15 16:25:01 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Wed, 15 May 2024 18:25:01 +0200 Subject: [Buildroot] [PATCH 1/1] package/syslog-ng: fix libcurl build without C++ Message-ID: <20240515162501.1086749-1-fontaine.fabrice@gmail.com> Fix the following libcurl build failure without C++ raised since bump to version 4.7.1 in commit 105f0398c76f3288b2668e0b3ec722b2ebe55a0b and https://github.com/syslog-ng/syslog-ng/commit/86feed7bff068a48be477a5b702ca24abc441d70: configure: error: C++ support is mandatory when the cloud-auth module is enabled. Fixes: 105f0398c76f3288b2668e0b3ec722b2ebe55a0b - http://autobuild.buildroot.org/results/cf36fb119224ba50a768dbe363d4c381f76eb476 Signed-off-by: Fabrice Fontaine --- package/syslog-ng/syslog-ng.mk | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/package/syslog-ng/syslog-ng.mk b/package/syslog-ng/syslog-ng.mk index 4f9a455e81..57ee46ce05 100644 --- a/package/syslog-ng/syslog-ng.mk +++ b/package/syslog-ng/syslog-ng.mk @@ -61,8 +61,13 @@ endif ifeq ($(BR2_PACKAGE_LIBCURL),y) SYSLOG_NG_DEPENDENCIES += libcurl -SYSLOG_NG_CONF_OPTS += --enable-http --enable-cloud-auth +SYSLOG_NG_CONF_OPTS += --enable-http SYSLOG_NG_CONF_OPTS += --with-libcurl="$(STAGING_DIR)/usr" +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) +SYSLOG_NG_CONF_OPTS += --enable-cloud-auth +else +SYSLOG_NG_CONF_OPTS += --disable-cloud-auth +endif else SYSLOG_NG_CONF_OPTS += --disable-http --disable-cloud-auth endif -- 2.43.0 From fontaine.fabrice at gmail.com Wed May 15 16:26:26 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Wed, 15 May 2024 18:26:26 +0200 Subject: [Buildroot] [PATCH 1/1] package/p11-kit: fix build with gcc 14 Message-ID: <20240515162627.1087686-1-fontaine.fabrice@gmail.com> Fix the following build failure with gcc 14: p11-kit/import-object.c: In function 'add_attrs_pubkey_rsa': p11-kit/import-object.c:223:62: error: passing argument 3 of 'p11_asn1_read' from incompatible pointer type [-Wincompatible-pointer-types] 223 | attr_modulus.pValue = p11_asn1_read (asn, "modulus", &attr_modulus.ulValueLen); | ^~~~~~~~~~~~~~~~~~~~~~~~ | | | long unsigned int * Fixes: - http://autobuild.buildroot.org/results/41508a057568ad715e9e00a67adfc3867445d6c1 Signed-off-by: Fabrice Fontaine --- ...teger-truncation-on-32-bit-platforms.patch | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 package/p11-kit/0001-import-object-Avoid-integer-truncation-on-32-bit-platforms.patch diff --git a/package/p11-kit/0001-import-object-Avoid-integer-truncation-on-32-bit-platforms.patch b/package/p11-kit/0001-import-object-Avoid-integer-truncation-on-32-bit-platforms.patch new file mode 100644 index 0000000000..03f54b4408 --- /dev/null +++ b/package/p11-kit/0001-import-object-Avoid-integer-truncation-on-32-bit-platforms.patch @@ -0,0 +1,109 @@ +From d49c92c8420db6ee4c88515bdb014f68f4d471d9 Mon Sep 17 00:00:00 2001 +From: Daiki Ueno +Date: Sat, 2 Dec 2023 09:24:01 +0900 +Subject: [PATCH] import-object: Avoid integer truncation on 32-bit platforms +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The build fails when compiling for 32-bit platforms with +-Werror=incompatible-pointer-types: + + CFLAGS="-m32 -march=i686 -Werror=incompatible-pointer-types -Werror=implicit -Werror=int-conversion" setarch i686 -- meson setup _build + setarch i686 -- meson compile -C _build -v + ... + + ../p11-kit/import-object.c: In function ?add_attrs_pubkey_rsa?: + ../p11-kit/import-object.c:223:62: error: passing argument 3 of ?p11_asn1_read? from incompatible pointer type [-Werror=incompatible-pointer-types] + 223 | attr_modulus.pValue = p11_asn1_read (asn, "modulus", &attr_modulus.ulValueLen); + | ^~~~~~~~~~~~~~~~~~~~~~~~ + | | + | long unsigned int * + +Reported by Sam James in: +https://github.com/p11-glue/p11-kit/issues/608 + +Signed-off-by: Daiki Ueno + +Upstream: https://github.com/p11-glue/p11-kit/commit/d49c92c8420db6ee4c88515bdb014f68f4d471d9 +Signed-off-by: Fabrice Fontaine +--- + p11-kit/import-object.c | 30 +++++++++++++++++++++++++++--- + 1 file changed, 27 insertions(+), 3 deletions(-) + +diff --git a/p11-kit/import-object.c b/p11-kit/import-object.c +index feee0765..fb47b964 100644 +--- a/p11-kit/import-object.c ++++ b/p11-kit/import-object.c +@@ -55,6 +55,7 @@ + #endif + + #include ++#include + #include + #include + #include +@@ -201,6 +202,7 @@ add_attrs_pubkey_rsa (CK_ATTRIBUTE *attrs, + CK_ATTRIBUTE attr_encrypt = { CKA_ENCRYPT, &tval, sizeof (tval) }; + CK_ATTRIBUTE attr_modulus = { CKA_MODULUS, }; + CK_ATTRIBUTE attr_exponent = { CKA_PUBLIC_EXPONENT, }; ++ size_t len = 0; + + pubkey = p11_asn1_read (info, "subjectPublicKey", &pubkey_len); + if (pubkey == NULL) { +@@ -220,17 +222,31 @@ add_attrs_pubkey_rsa (CK_ATTRIBUTE *attrs, + goto cleanup; + } + +- attr_modulus.pValue = p11_asn1_read (asn, "modulus", &attr_modulus.ulValueLen); ++ attr_modulus.pValue = p11_asn1_read (asn, "modulus", &len); + if (attr_modulus.pValue == NULL) { + p11_message (_("failed to obtain modulus")); + goto cleanup; + } ++#if ULONG_MAX < SIZE_MAX ++ if (len > ULONG_MAX) { ++ p11_message (_("failed to obtain modulus")); ++ goto cleanup; ++ } ++#endif ++ attr_modulus.ulValueLen = len; + +- attr_exponent.pValue = p11_asn1_read (asn, "publicExponent", &attr_exponent.ulValueLen); ++ attr_exponent.pValue = p11_asn1_read (asn, "publicExponent", &len); + if (attr_exponent.pValue == NULL) { + p11_message (_("failed to obtain exponent")); + goto cleanup; + } ++#if ULONG_MAX < SIZE_MAX ++ if (len > ULONG_MAX) { ++ p11_message (_("failed to obtain exponent")); ++ goto cleanup; ++ } ++#endif ++ attr_exponent.ulValueLen = len; + + result = p11_attrs_build (attrs, &attr_key_type, &attr_encrypt, &attr_modulus, &attr_exponent, NULL); + if (result == NULL) { +@@ -260,12 +276,20 @@ add_attrs_pubkey_ec (CK_ATTRIBUTE *attrs, + CK_ATTRIBUTE attr_key_type = { CKA_KEY_TYPE, &key_type, sizeof (key_type) }; + CK_ATTRIBUTE attr_ec_params = { CKA_EC_PARAMS, }; + CK_ATTRIBUTE attr_ec_point = { CKA_EC_POINT, }; ++ size_t len = 0; + +- attr_ec_params.pValue = p11_asn1_read (info, "algorithm.parameters", &attr_ec_params.ulValueLen); ++ attr_ec_params.pValue = p11_asn1_read (info, "algorithm.parameters", &len); + if (attr_ec_params.pValue == NULL) { + p11_message (_("failed to obtain EC parameters")); + goto cleanup; + } ++#if ULONG_MAX < SIZE_MAX ++ if (len > ULONG_MAX) { ++ p11_message (_("failed to obtain EC parameters")); ++ goto cleanup; ++ } ++#endif ++ attr_ec_params.ulValueLen = len; + + /* subjectPublicKey is read as BIT STRING value which contains + * EC point data. We need to DER encode this data as OCTET STRING. -- 2.43.0 From arnout at mind.be Wed May 15 16:37:38 2024 From: arnout at mind.be (Arnout Vandecappelle) Date: Wed, 15 May 2024 18:37:38 +0200 Subject: [Buildroot] [PATCH 1/1] board/acmesystems/acqua-a5: fix hash of at91bootstrap3 In-Reply-To: References: Message-ID: <370e62b0-78e1-40fb-a363-aa0adff93993@mind.be> On 14/05/2024 17:41, Yann E. MORIN wrote: > Edgar, All, > > On 2024-05-14 14:22 +0200, Edgar Bonet spake thusly: >> Commit 5b847f88fef7 (board: update hashes for generated achives) updated >> the file >> >> board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash >> >> by changing the file name suffix: -git3.tar.gz -> -git4.tar.gz. It did >> not, however, update the hash itself. Do it now. > > I knew I would miss some things here and there. I hoped I wouldd not, > but I knew I would... That one was on me though: there was a merge conflict in that file and it seems I messed it up... Regards, Arnout > >> Fixes: 5b847f88fef768c8e79422db4193533b3a7488ea >> Signed-off-by: Edgar Bonet > > Applied to master, thanks for fixing my mess! > > Regards, > Yann E. MORIN. > >> --- >> .../acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash b/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash >> index 3734f22c95..6edf3d3345 100644 >> --- a/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash >> +++ b/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash >> @@ -1,2 +1,2 @@ >> # Locally calculated >> -sha256 fef34111a07d9e5aa97b0840355a367f806a17e029583830e9deaa747ce47824 at91bootstrap3-v3.10.3-git4.tar.gz >> +sha256 5ea2a8fed1ba0024229c6f6d77176679e1b24791bdbce8e285634013d4a93551 at91bootstrap3-v3.10.3-git4.tar.gz >> -- >> 2.34.1 >> _______________________________________________ >> buildroot mailing list >> buildroot at buildroot.org >> https://lists.buildroot.org/mailman/listinfo/buildroot > From bugzilla at busybox.net Wed May 15 16:45:30 2024 From: bugzilla at busybox.net (bugzilla at busybox.net) Date: Wed, 15 May 2024 16:45:30 +0000 Subject: [Buildroot] [Bug 16075] Cannot use linux kernel extensions from external tree (building zfs into kernel) In-Reply-To: References: Message-ID: https://bugs.busybox.net/show_bug.cgi?id=16075 --- Comment #1 from Arnout Vandecappelle --- Is it possible that you have `include */*.mk` in your external.mk? This will include your `linux/linux-ext-zfs-inkernel.mk` in the "main" buildroot include, but it should only be included in the linux-extensions-specific section in buildroot linux/linux.mk: include $(sort $(wildcard $(foreach ext,$(BR2_EXTERNAL_DIRS), \ $(ext)/linux/linux-ext-*.mk))) -- You are receiving this mail because: You are on the CC list for the bug. From dario.binacchi at amarulasolutions.com Wed May 15 16:49:12 2024 From: dario.binacchi at amarulasolutions.com (Dario Binacchi) Date: Wed, 15 May 2024 18:49:12 +0200 Subject: [Buildroot] [PATCH 1/1] package/zxing-cpp: add options for enabling readers and/or writers Message-ID: <20240515164912.104672-1-dario.binacchi@amarulasolutions.com> The patch allows you to choose whether to build encoding (BUILD_WRITERS), decoding (BUILD_READERS) or both. This way, it's possible to keep the library size at minimum. By default, to ensure backward compatibility, both are compiled. Signed-off-by: Dario Binacchi --- package/zxing-cpp/Config.in | 27 +++++++++++++++++++++++++++ package/zxing-cpp/zxing-cpp.mk | 14 ++++++++++++-- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/package/zxing-cpp/Config.in b/package/zxing-cpp/Config.in index b72a00ec35f9..f5883045fb1a 100644 --- a/package/zxing-cpp/Config.in +++ b/package/zxing-cpp/Config.in @@ -17,3 +17,30 @@ config BR2_PACKAGE_ZXING_CPP compiles the C++ port. https://github.com/zxing-cpp/zxing-cpp + +if BR2_PACKAGE_ZXING_CPP + +choice + prompt "readers/writers support" + default BR2_PACKAGE_ZXING_CPP_READERS_AND_WRITERS + help + Select what you want to enable and then compile + +config BR2_PACKAGE_ZXING_CPP_READERS + bool "readers only" + help + Build with only readers (decoders) support + +config BR2_PACKAGE_ZXING_CPP_WRITERS + bool "writers only" + help + Build with only writers (encoders) support + +config BR2_PACKAGE_ZXING_CPP_READERS_AND_WRITERS + bool "readers and writers" + help + Build with readers and writers support + +endchoice + +endif # BR2_PACKAGE_ZXING_CPP diff --git a/package/zxing-cpp/zxing-cpp.mk b/package/zxing-cpp/zxing-cpp.mk index 86a1ef96806d..c37769ea5d6b 100644 --- a/package/zxing-cpp/zxing-cpp.mk +++ b/package/zxing-cpp/zxing-cpp.mk @@ -12,8 +12,6 @@ ZXING_CPP_INSTALL_STAGING = YES ZXING_CPP_SUPPORTS_IN_SOURCE_BUILD = NO ZXING_CPP_DEPENDENCIES = host-pkgconf stb ZXING_CPP_CONF_OPTS = \ - -DBUILD_READERS=ON \ - -DBUILD_WRITERS=ON \ -DBUILD_BLACKBOX_TESTS=OFF \ -DBUILD_UNIT_TESTS=OFF \ -DBUILD_DEPENDENCIES=LOCAL @@ -28,4 +26,16 @@ else ZXING_CPP_CONF_OPTS += -DBUILD_PYTHON_MODULE=OFF endif +ifeq ($(BR2_PACKAGE_ZXING_CPP_READERS)$(BR2_PACKAGE_ZXING_CPP_READERS_AND_WRITERS),y) +ZXING_CPP_CONF_OPTS += -DBUILD_READERS=ON +else +ZXING_CPP_CONF_OPTS += -DBUILD_READERS=OFF +endif + +ifeq ($(BR2_PACKAGE_ZXING_CPP_WRITERS)$(BR2_PACKAGE_ZXING_CPP_READERS_AND_WRITERS),y) +ZXING_CPP_CONF_OPTS += -DBUILD_WRITERS=ON +else +ZXING_CPP_CONF_OPTS += -DBUILD_WRITERS=OFF +endif + $(eval $(cmake-package)) -- 2.43.0 From fontaine.fabrice at gmail.com Wed May 15 18:10:47 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Wed, 15 May 2024 20:10:47 +0200 Subject: [Buildroot] [PATCH 1/1] package/ustreamer: fix uclibc build Message-ID: <20240515181047.1254290-1-fontaine.fabrice@gmail.com> Fix the following uclibc build failure raised since bump to version 6.11 in commit c6c173dadb7b44ba4af92237d05503b8e83e51dc and https://github.com/pikvm/ustreamer/commit/2d6716aa4762151f0fb1b900d3cd3295d328cab6: In file included from libs/base64.h:25, from libs/base64.c:23: libs/types.h:30:9: error: unknown type name 'ssize_t' 30 | typedef ssize_t sz; | ^~~~~~~ Fixes: c6c173dadb7b44ba4af92237d05503b8e83e51dc - http://autobuild.buildroot.org/results/24498049d7beb4afaaf9f9a0c2fc0bcd26a3ee04 Signed-off-by: Fabrice Fontaine --- ...src-libs-types.h-include-sys-types.h.patch | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 package/ustreamer/0001-src-libs-types.h-include-sys-types.h.patch diff --git a/package/ustreamer/0001-src-libs-types.h-include-sys-types.h.patch b/package/ustreamer/0001-src-libs-types.h-include-sys-types.h.patch new file mode 100644 index 0000000000..82fe596963 --- /dev/null +++ b/package/ustreamer/0001-src-libs-types.h-include-sys-types.h.patch @@ -0,0 +1,36 @@ +From 6c24c9ea610e7cc0e47d1e7124697098d5ef365e Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 15 May 2024 19:56:49 +0200 +Subject: [PATCH] src/libs/types.h: include sys/types.h (#273) + +Include sys/types.h to avoid the following uclibc build failure since +version 5.52 and +https://github.com/pikvm/ustreamer/commit/2d6716aa4762151f0fb1b900d3cd3295d328cab6: + +In file included from libs/base64.h:25, + from libs/base64.c:23: +libs/types.h:30:9: error: unknown type name 'ssize_t' + 30 | typedef ssize_t sz; + | ^~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/24498049d7beb4afaaf9f9a0c2fc0bcd26a3ee04 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/pikvm/ustreamer/commit/6c24c9ea610e7cc0e47d1e7124697098d5ef365e +--- + src/libs/types.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/libs/types.h b/src/libs/types.h +index 54e42325..b35bbaea 100644 +--- a/src/libs/types.h ++++ b/src/libs/types.h +@@ -24,6 +24,7 @@ + #include + #include + #include ++#include + + + typedef long long sll; -- 2.43.0 From bugzilla at busybox.net Wed May 15 19:12:21 2024 From: bugzilla at busybox.net (bugzilla at busybox.net) Date: Wed, 15 May 2024 19:12:21 +0000 Subject: [Buildroot] [Bug 16075] Cannot use linux kernel extensions from external tree (building zfs into kernel) In-Reply-To: References: Message-ID: https://bugs.busybox.net/show_bug.cgi?id=16075 Yann E. MORIN changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |INVALID CC| |yann.morin.1998 at free.fr --- Comment #2 from Yann E. MORIN --- mscdex, All, You are calling the autotools-package macro in your linux externsion; that is going to create an actual package, which is what is actually causing you trouble. The linux-ext file should be limited exactly to defining the linux extension. Downloading the sources for the extension should be done in a separate package. See for example the fbtft linux extension, which is simple enough to be a good example. Regards, Yann E. MORIN. -- You are receiving this mail because: You are on the CC list for the bug. From arnout at mind.be Wed May 15 19:19:32 2024 From: arnout at mind.be (Arnout Vandecappelle) Date: Wed, 15 May 2024 21:19:32 +0200 Subject: [Buildroot] Nginx fails to build with GCC 14 In-Reply-To: <4c9e89d1-48f6-48a7-b7af-0d429e2256cc@grenoble.cnrs.fr> References: <5647a701-8c5a-4ce6-92c3-3c252e1cd91b@grenoble.cnrs.fr> <4c9e89d1-48f6-48a7-b7af-0d429e2256cc@grenoble.cnrs.fr> Message-ID: Hi Edgar, On 15/05/2024 17:31, Edgar Bonet wrote: > Hello all! > > On 2024-05-14, I wrote: >> Building nginx with GCC 14 fails at the configure step with: >> >> ./configure: error: libatomic_ops library was not found. > > It turns out the issue is in a tiny test program that the configure > script tries to compile in order to probe for the atomic_ops library. > The compilation fails on an ?incompatible pointer type? error. Up to > GCC 13, implicitly casting between incompatible pointer types only > issued a warning. Since GCC 14, this is an error.[1] > > I fixed the issue with the meta-patch (patch adding a patch) below. May > I now submit this to buildroot? Sure you can! The only thing missing is that the patch should have an Upstream: tag with the URL of the PR or whatever you made to send the patch upstream. > Should I instead attempt to upstream the > inner patch before submitting here the meta-patch? Not instead, but in addition. It can take a long time before the patch has been accepted upstream and there's a new release. > Any comments on these > patches are welcome. > > Regards, > > Edgar. > > [1] https://gcc.gnu.org/gcc-14/porting_to.html#incompatible-pointer-types > > -- >8 -- > Subject: [PATCH 1/1] package/nginx: fix compile error in configure script > > Building with GCC 14 fails at the configure step with: > > ./configure: error: libatomic_ops library was not found. > > The error is not caused by a missing library, but by an unrelated > "incompatible pointer type" error in the test program: > > ... > checking for atomic_ops library > objs/autotest.c: In function 'main': > objs/autotest.c:9:48: error: passing argument 1 of 'AO_compare_and_swap' from incompatible pointer type [-Wincompatible-pointer-types] > > This used to be a warning, but it is an error since GCC 14.[1] > > Fix this by patching the test program in order to use the correct > pointer types. > > [1] https://gcc.gnu.org/gcc-14/porting_to.html#incompatible-pointer-types > > Signed-off-by: Edgar Bonet > --- > ...ix-compile-error-in-configure-script.patch | 40 +++++++++++++++++++ > 1 file changed, 40 insertions(+) > create mode 100644 package/nginx/0011-Fix-compile-error-in-configure-script.patch > > diff --git a/package/nginx/0011-Fix-compile-error-in-configure-script.patch b/package/nginx/0011-Fix-compile-error-in-configure-script.patch > new file mode 100644 > index 0000000000..f8160a1da2 > --- /dev/null > +++ b/package/nginx/0011-Fix-compile-error-in-configure-script.patch > @@ -0,0 +1,40 @@ > +From e1bcac837f6aeabc4ddece06ecbcf2bcca8dd651 Mon Sep 17 00:00:00 2001 > +From: Edgar Bonet > +Date: Wed, 15 May 2024 16:35:27 +0200 > +Subject: [PATCH] Fix compile error in configure script > + > +Building with GCC 14 fails at the configure step with: > + > + ./configure: error: libatomic_ops library was not found. > + > +The error is not caused by a missing library, but by an unrelated > +"incompatible pointer type" error in the test program: > + > + ... > + checking for atomic_ops library > + objs/autotest.c: In function 'main': > + objs/autotest.c:9:48: error: passing argument 1 of 'AO_compare_and_swap' from incompatible pointer type [-Wincompatible-pointer-types] > + > +Fix the error by using the correct pointer types. > + > +Signed-off-by: Edgar Bonet > +--- > + auto/lib/libatomic/conf | 2 +- > + 1 file changed, 1 insertion(+), 1 deletion(-) > + > +diff --git a/auto/lib/libatomic/conf b/auto/lib/libatomic/conf > +index d1e484a..0f12b9c 100644 > +--- a/auto/lib/libatomic/conf > ++++ b/auto/lib/libatomic/conf > +@@ -20,7 +20,7 @@ else > + #include " > + ngx_feature_path= > + ngx_feature_libs="-latomic_ops" > +- ngx_feature_test="long n = 0; > ++ ngx_feature_test="volatile size_t n = 0; The interface actually defines it as AO_t, so perhaps use that instead of volatile size_t? Regards, Arnout > + if (!AO_compare_and_swap(&n, 0, 1)) > + return 1; > + if (AO_fetch_and_add(&n, 1) != 1) > +-- > +2.34.1 > + From dario.binacchi at amarulasolutions.com Wed May 15 21:07:15 2024 From: dario.binacchi at amarulasolutions.com (Dario Binacchi) Date: Wed, 15 May 2024 23:07:15 +0200 Subject: [Buildroot] [PATCH 1/1] package/uuu: bump to version 1.5.181 Message-ID: <20240515210715.643355-1-dario.binacchi@amarulasolutions.com> This is a hot fix for version 1.5.179. Release notes: https://github.com/nxp-imx/mfgtools/releases/tag/uuu_1.5.181 Signed-off-by: Dario Binacchi --- package/uuu/uuu.hash | 2 +- package/uuu/uuu.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/uuu/uuu.hash b/package/uuu/uuu.hash index cc78f6785b83..787bf7d48705 100644 --- a/package/uuu/uuu.hash +++ b/package/uuu/uuu.hash @@ -1,3 +1,3 @@ # locally computed -sha256 6742a0c3b1e5b3b892963473f65e2770462f3bf2871424b800ffa0ed159feb84 uuu_source-uuu_1.5.179.tar.gz +sha256 5e3bab017cf1b7a6a85d0cd46c0de6660de9b93fb24b0a21d8ecc4fb9f663e2c uuu_source-uuu_1.5.181.tar.gz sha256 cc8d47f7b9260f6669ecd41c24554c552f17581d81ee8fc602c6d23edb8bf495 LICENSE diff --git a/package/uuu/uuu.mk b/package/uuu/uuu.mk index b633bd70dbea..056b2a8c52db 100644 --- a/package/uuu/uuu.mk +++ b/package/uuu/uuu.mk @@ -4,7 +4,7 @@ # ################################################################################ -UUU_VERSION = 1.5.179 +UUU_VERSION = 1.5.181 UUU_SOURCE = uuu_source-uuu_$(UUU_VERSION).tar.gz UUU_SITE = https://github.com/NXPmicro/mfgtools/releases/download/uuu_$(UUU_VERSION) UUU_LICENSE = BSD 3-Clause "New" or "Revised" License -- 2.43.0 From thomas.petazzoni at bootlin.com Thu May 16 03:57:58 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 16 May 2024 03:57:58 -0000 Subject: [Buildroot] [autobuild.buildroot.net] Daily results for 2024-05-15 Message-ID: Hello, Autobuild statistics for 2024-05-15 =================================== branch | OK | NOK | TIM | TOT | 2024.02.x | 12 | 6 | 1 | 19 | master | 32 | 54 | 1 | 87 | Classification of failures by reason for master ----------------------------------------------- fail2ban-1.0.2 | 5 linux-6.8.9 | 4 elfutils-0.189 | 3 mariadb-10.11.6 | 3 unknown | 3 coreutils-9.3 | 2 fcft-3.1.6 | 2 ibm-sw-tpm2-5452af422edeff7... | 2 uclibc-1.0.48 | 2 ustreamer-6.11 | 2 check-11970a7e112dfe243a2e6... | 1 containerd-1.7.14 | 1 ffmpeg-6.1.1 | 1 fftw-quad-3.3.10 | 1 flatbuffers-23.5.26 | 1 gnu-efi-3.0.18 | 1 gobject-introspection | 1 kvmtool-4d2c017f41533b0e51e... | 1 libcamera-apps-1.2.1 | 1 libffi-3.4.6 | 1 libmemcached-1.1.4 | 1 librsvg-2.50.9 | 1 libzenoh-c-0.11.0.2 | 1 linux-5.10.162-cip24 | 1 lxc-5.0.3 | 1 micropython-1.22.0 | 1 p11-kit-0.25.3 | 1 pcsc-lite-2.1.0 | 1 pppd-e1266c76d1ad39f98f1167... | 1 python-grpcio-1.60.0 | 1 python-ml-dtypes-0.3.2 | 1 python-remi-2022.7.27 | 1 qemu-9.0.0 | 1 rtty-8.1.0 | 1 sofia-sip-1.13.17 | 1 ulog-0389d243352255f6182326... | 1 util-linux-2.39.3 | 1 Detail of failures for master ----------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- xtensa | check-11970a7e112dfe243a2e6... | NOK | http://autobuild.buildroot.net/results/d2c4a1cfd03e1bec74e1a7aaf43a89828d1faee6 | ORPH riscv64 | containerd-1.7.14 | NOK | http://autobuild.buildroot.net/results/c3c6c96e837b5f38fce04db5a762a5be13b9e213 | sparc | coreutils-9.3 | NOK | http://autobuild.buildroot.net/results/d35ae64ece19b6458bf4699e806f7c017fbb6d75 | ORPH arm | coreutils-9.3 | NOK | http://autobuild.buildroot.net/results/1aab17839876eb1ad32b619d0161b763e63285e9 | ORPH microblazeel | elfutils-0.189 | NOK | http://autobuild.buildroot.net/results/779e13b93de99f19f2cfd660025f9cb88618de51 | ORPH microblazeel | elfutils-0.189 | NOK | http://autobuild.buildroot.net/results/747368203b869b329195fc8319adcdff9f0e30e4 | ORPH microblazeel | elfutils-0.189 | NOK | http://autobuild.buildroot.net/results/0ac3e848d78f50a7f2323ef7bd534a37a5ffa7a7 | ORPH x86_64 | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/4385ce7b933cf789851a1a761d6410a829868acb | s390x | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/34bdb953b358a19329a8cb94fabea8977373280e | arm | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/71edad7e4cd59ff4fa85df029b37bed0accfea35 | mipsel | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/c463c808814cb439e7697b1d51807cd462ede0b8 | sh4 | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/fe426fb1a22c25ad37735787ed437783a60a5a8b | mips | fcft-3.1.6 | NOK | http://autobuild.buildroot.net/results/749cefdfe6fff5b649c6c71d222b5ae0f13ed219 | mips | fcft-3.1.6 | NOK | http://autobuild.buildroot.net/results/b8faa8243f6267eaf3f01c2b1f205b9602047ffa | microblazeel | ffmpeg-6.1.1 | NOK | http://autobuild.buildroot.net/results/5ec36917e6bb40381df3888b971a5ff8235f2eb4 | powerpc64 | fftw-quad-3.3.10 | NOK | http://autobuild.buildroot.net/results/9d533cd9299d7915a050c5c983d43840b99f966c | ORPH m68k | flatbuffers-23.5.26 | NOK | http://autobuild.buildroot.net/results/6d837c5827d678d02cdbcbdf788234100ff42f00 | arm | gnu-efi-3.0.18 | NOK | http://autobuild.buildroot.net/results/7dbc7938a065d663fec96f78203e3411f5b4dd61 | microblaze | gobject-introspection | TIM | http://autobuild.buildroot.net/results/8665453e2f4f9cfe49008764bdf8e43907c004a3 | mips64el | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/713ea2e42659f2b38796d13f54f8ac1195e497ba | arm | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/fe8ff9766bc1014b20fce29da49ac6adc2658f56 | mips | kvmtool-4d2c017f41533b0e51e... | NOK | http://autobuild.buildroot.net/results/bf0fb0087ca52f43433519fc91d8c7d95b2b66da | ORPH sparc64 | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/0cf3e4d0e9c799f6c36c2a71f8e4dc4492ddb5b4 | arceb | libffi-3.4.6 | NOK | http://autobuild.buildroot.net/results/c22e6482f89863d3de4ab2cb2c1ab7638b57ad97 | x86_64 | libmemcached-1.1.4 | NOK | http://autobuild.buildroot.net/results/e55888dce2965e6bdb12b5fc96fb9c5607816373 | ORPH arm | librsvg-2.50.9 | NOK | http://autobuild.buildroot.net/results/971330325f60fc9178bd6c113c849ebaaa06c921 | sparc64 | libzenoh-c-0.11.0.2 | NOK | http://autobuild.buildroot.net/results/e07b1b902358bfb4357268e58fe496b2bb8a43ea | riscv64 | linux-5.10.162-cip24 | NOK | http://autobuild.buildroot.net/results/afb3f4362c82b105af1f36e25dbdc7fa1cb7ac21 | ORPH nios2 | linux-6.8.9 | NOK | http://autobuild.buildroot.net/results/2e4dfe88482a5aa657f276a9cdf1a762107400d1 | ORPH xtensa | linux-6.8.9 | NOK | http://autobuild.buildroot.net/results/c8f5bb9281d2511364cf0904f674c803da6f8d8f | ORPH nios2 | linux-6.8.9 | NOK | http://autobuild.buildroot.net/results/3754c830b6a5c9fabef5c3f1b3522e0990646f3b | ORPH aarch64_be | linux-6.8.9 | NOK | http://autobuild.buildroot.net/results/e533d74bb784807e0eac0d6207f30e7544474af9 | ORPH aarch64_be | lxc-5.0.3 | NOK | http://autobuild.buildroot.net/results/19fa05b628b48d220bbda4a194ab799d55f5a9bc | sparc | mariadb-10.11.6 | NOK | http://autobuild.buildroot.net/results/55dbb4ea1fe60338d88bff3108031acead8308ae | ORPH mips | mariadb-10.11.6 | NOK | http://autobuild.buildroot.net/results/2c9771fe9c49340ba51f3358473c90d7d337336b | ORPH aarch64 | mariadb-10.11.6 | NOK | http://autobuild.buildroot.net/results/29022a29f6e60106260bd221bd097da714d1b3f6 | ORPH aarch64_be | micropython-1.22.0 | NOK | http://autobuild.buildroot.net/results/69942accc66c812155f55770b559b9dbe4f8f5e6 | sh4aeb | p11-kit-0.25.3 | NOK | http://autobuild.buildroot.net/results/41508a057568ad715e9e00a67adfc3867445d6c1 | ORPH microblazeel | pcsc-lite-2.1.0 | NOK | http://autobuild.buildroot.net/results/99dd6dc579397885ecc98520bd266e96243d6c08 | ORPH sparc | pppd-e1266c76d1ad39f98f1167... | NOK | http://autobuild.buildroot.net/results/474c0f974f0af222bee2e36f742d07c782e1001e | mips | python-grpcio-1.60.0 | NOK | http://autobuild.buildroot.net/results/f7abf52918f34fe5be8583e9aca3e4597e58a3f7 | arc | python-ml-dtypes-0.3.2 | NOK | http://autobuild.buildroot.net/results/996b112b1b6a000d87725a47241c5b3a46a05cac | arc | python-remi-2022.7.27 | NOK | http://autobuild.buildroot.net/results/6c834de6e9d5ed2b9bc47aa971ff4412bdd954ec | powerpc64le | qemu-9.0.0 | NOK | http://autobuild.buildroot.net/results/714cb84ed46a6c0ac97638fe159fa614025ec584 | x86_64 | rtty-8.1.0 | NOK | http://autobuild.buildroot.net/results/ab8faf450a3f4dded07f1b0177ce63299878364c | sparc | sofia-sip-1.13.17 | NOK | http://autobuild.buildroot.net/results/0d5f402c42d3ecc4445fd8e7ccfeb28186da9336 | m68k | uclibc-1.0.48 | NOK | http://autobuild.buildroot.net/results/e4e9227f8f1b9b9db48eb5b4fa20f1f456b01d9d | arceb | uclibc-1.0.48 | NOK | http://autobuild.buildroot.net/results/2edf086945e9725b75be75108f085b567cc069b4 | nios2 | ulog-0389d243352255f6182326... | NOK | http://autobuild.buildroot.net/results/500121e7a73259e409b017a0382859f4ece23882 | sparc64 | unknown | NOK | http://autobuild.buildroot.net/results/3846cb7f8b06062d98a983758535d39ca3df2360 | s390x | unknown | NOK | http://autobuild.buildroot.net/results/dd6529e5fb479fbf5d47ee0c1dab57cb0bc3eba1 | or1k | unknown | NOK | http://autobuild.buildroot.net/results/e8997e1750e5cb73941543e1a1766602f53ec203 | m68k | ustreamer-6.11 | NOK | http://autobuild.buildroot.net/results/24498049d7beb4afaaf9f9a0c2fc0bcd26a3ee04 | m68k | ustreamer-6.11 | NOK | http://autobuild.buildroot.net/results/a7c02225eee9d37ca0904a20080a1a6393ebff0f | arm | util-linux-2.39.3 | NOK | http://autobuild.buildroot.net/results/fb1feb47f2660882fa53f66bacc63e191fd52175 | ORPH Classification of failures by reason for 2024.02.x -------------------------------------------------- heirloom-mailx | 1 host-heimdal-f4faaeaba371ff... | 1 host-sentry-cli-2.20.3 | 1 libressl-3.8.4 | 1 ncmpc-0.49 | 1 proj-9.3.0 | 1 shadow-4.14.3 | 1 Detail of failures for 2024.02.x -------------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- arm | heirloom-mailx | TIM | http://autobuild.buildroot.net/results/25e162c69e25f1ceddf1786d2ce27abc03b3b89f | mipsel | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/65a0f6fc9ac14d3727b8b4c5006c6717636724a3 | ORPH mips64el | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/9e147f97f4097d10adc8b46770ffaebcc1271e77 | powerpc | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/a651a679d0a57c8c388ac169c2ece3549de3b469 | ORPH aarch64 | ncmpc-0.49 | NOK | http://autobuild.buildroot.net/results/24ad8e4cfec1a2c8193467f3641b094457c5f4c1 | aarch64_be | proj-9.3.0 | NOK | http://autobuild.buildroot.net/results/b19c11a17b9be6b28320238c8d517900104fdb41 | arm | shadow-4.14.3 | NOK | http://autobuild.buildroot.net/results/0ad9d22ac220a93704eb46133351c8462b325b50 | -- http://autobuild.buildroot.net From Alex.Michel at wiedemann-group.com Thu May 16 06:48:51 2024 From: Alex.Michel at wiedemann-group.com (Michel Alex) Date: Thu, 16 May 2024 06:48:51 +0000 Subject: [Buildroot] package/libzenoh-c: bump to version 0.11.0.3 Message-ID: https://github.com/eclipse-zenoh/zenoh-c/releases/tag/0.11.0.3 Signed-off-by: Alex Michel --- package/libzenoh-c/libzenoh-c.hash | 2 +- package/libzenoh-c/libzenoh-c.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/libzenoh-c/libzenoh-c.hash b/package/libzenoh-c/libzenoh-c.hash index 8331f5cca4..852e785ead 100644 --- a/package/libzenoh-c/libzenoh-c.hash +++ b/package/libzenoh-c/libzenoh-c.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 c792f0be936ecbb3f759124be28950a01385f4680eaf4f1da55997640899648e libzenoh-c-0.11.0.2-cargo2.tar.gz +sha256 03ff32bfd11e39a1634d5abe0e69599ec988c63115682a17a5e7d021f3c1e9e8 libzenoh-c-0.11.0.3.tar.gz sha256 01a44774f7b1a453595c7c6d7f7308284ba6a1059dc49e14dad6647e1d44a338 LICENSE diff --git a/package/libzenoh-c/libzenoh-c.mk b/package/libzenoh-c/libzenoh-c.mk index 3a50fe6bf1..07c153e328 100644 --- a/package/libzenoh-c/libzenoh-c.mk +++ b/package/libzenoh-c/libzenoh-c.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBZENOH_C_VERSION = 0.11.0.2 +LIBZENOH_C_VERSION = 0.11.0.3 LIBZENOH_C_SITE = $(call github,eclipse-zenoh,zenoh-c,$(LIBZENOH_C_VERSION)) LIBZENOH_C_LICENSE = Apache-2.0 or EPL-2.0 LIBZENOH_C_LICENSE_FILES = LICENSE -- 2.34.1 From romain.naour at smile.fr Thu May 16 07:07:45 2024 From: romain.naour at smile.fr (Romain Naour) Date: Thu, 16 May 2024 09:07:45 +0200 Subject: [Buildroot] [PATCH v1 1/3] package/go-bootstrap-stage2: bump version to go1.19.13 In-Reply-To: References: <20240307015107.2908128-1-christian@aperture.us> <20240514102318.1cdeba18@windsurf> Message-ID: Hello Christian, All, Le 15/05/2024 ? 01:38, Christian Stewart via buildroot a ?crit?: > Hi Thomas, > > On Tue, May 14, 2024 at 4:39?AM Christian Stewart wrote: >> On Tue, May 14, 2024, 1:23?AM Thomas Petazzoni wrote: >>> >>> I don't think it's this patch causing the issue, but we have a Go build >>> failure in our Gitlab CI: >>> >>> https://gitlab.com/buildroot.org/buildroot/-/jobs/6833307823 >>> >>> Could you have a look? >> >> This looks like we need to pass -buildvcs=false to Go. I'll have a look at submitting a patch for this. > > I found this commit in Go which fixed & added a test to ensure that > -buildvcs=false is set when GOROOT_BOOTSTRAP is set (which it was in > the failing job). > > commit 42a46206b97ca7cf4246d3c1230a70cf42ad5bb0 > Author: Bryan C. Mills > Date: Fri Sep 9 17:29:12 2022 -0400 > > cmd/go: omit VCS stamping during bootstrap > > cmd/dist can't easily hard-code -buildvcs=false because not all > versions of cmd/go supported for bootstrapping recognize that flag. > > However, we don't want to stamp the bootstrap binaries: the stamping > is redundant with the VERSION file writted during bootstrapping (which > is why it is normally omitted for standard-library packages and > commands), and it may also interfere with building the Go repo from a > source tarball or zip file. > > Fixes #54852. > > Change-Id: If223f094af137c4c202d6bf622619bd2da397ec4 > Reviewed-on: https://go-review.googlesource.com/c/go/+/432435 > > See: https://github.com/golang/go/commit/42a46206b97ca7cf4246d3c1230a70cf42ad5bb0 > > However it seems that bootstrap step is failing due to -buildvcs=false > not being set. > > I will try to debug further. This could be a Go regression. I tried to reproduce using docker-run script but the build succeed. Actually this issue remind me the issue we had with newer git release and how gitlab checks out the repository: https://gitlab.com/buildroot.org/buildroot/-/commit/a016b693f7830f3c8ae815851d3204b8b6e99821 Indeed, within gitlab-ci build context the build fail due to the ownership of the (buildroot) git tree. is go ignore the .gitconfig file somehow ? Anyway, go should not try to use git to retrieve some info since we are not in the go repository. I applied the same patch "fix go-bootstrap when parent dir contains invalid .git" from [1] to go-bootstrap-stage3 [1] https://gitlab.com/buildroot.org/buildroot/-/commit/bc8e70a08ba083d978c828e31442a7645c9099d7 And the build succeed on gitlab-ci: https://gitlab.com/kubu93/buildroot/-/jobs/6860670292 Best regards, Romain > > Best regards, > Christian Stewart > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot From friedtj at free.fr Thu May 16 08:34:21 2024 From: friedtj at free.fr (friedtj at free.fr) Date: Thu, 16 May 2024 10:34:21 +0200 (CEST) Subject: [Buildroot] [PATCH 1/1] package/gnuradio: add optional IIO support to GNU Radio In-Reply-To: <20240512095911.17df30df@windsurf> References: <1392555888.1047670733.1711087389627.JavaMail.zimbra@free.fr> <1322751925.1056008247.1711141112983.JavaMail.zimbra@free.fr> <20240512095911.17df30df@windsurf> Message-ID: <1829902423.330785126.1715848461667.JavaMail.zimbra@free.fr> Indeed libiio dependency must be activated. The following patch aims at providing optional IIO support in GNU Radio since it is now included and no longer an external package: Signed-off-by: Jean-Michel Friedt --- package/gnuradio/Config.in | 7 +++++++ package/gnuradio/gnuradio.mk | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/package/gnuradio/Config.in b/package/gnuradio/Config.in index be997e91e2..78bee9e221 100644 --- a/package/gnuradio/Config.in +++ b/package/gnuradio/Config.in @@ -136,6 +136,13 @@ config BR2_PACKAGE_GNURADIO_FILTER help Filter signal processing blocks +config BR2_PACKAGE_GNURADIO_IIO + bool "gr-iio support" + select BR2_PACKAGE_LIBIIO + select BR2_PACKAGE_GNURADIO_BLOCKS + help + IIO support + config BR2_PACKAGE_GNURADIO_NETWORK bool "gr-network support" select BR2_PACKAGE_GNURADIO_BLOCKS diff --git a/package/gnuradio/gnuradio.mk b/package/gnuradio/gnuradio.mk index 4e82c9e129..bdaab86f35 100644 --- a/package/gnuradio/gnuradio.mk +++ b/package/gnuradio/gnuradio.mk @@ -112,6 +112,13 @@ else GNURADIO_CONF_OPTS += -DENABLE_GR_NETWORK=OFF endif +ifeq ($(BR2_PACKAGE_GNURADIO_IIO),y) +GNURADIO_CONF_OPTS += -DENABLE_GR_IIO=ON +GNURADIO_DEPENDENCIES += libiio +else +GNURADIO_CONF_OPTS += -DENABLE_GR_IIO=OFF +endif + ifeq ($(BR2_PACKAGE_GNURADIO_PYTHON),y) GNURADIO_DEPENDENCIES += python3 python-pybind \ host-python-numpy host-python-packaging -- 2.43.0 Thanks, ----- Mail original ----- De: "Thomas Petazzoni" ?: "friedtj" Cc: "buildroot" Envoy?: Dimanche 12 Mai 2024 09:59:11 Objet: Re: [Buildroot] package/gnuradio: activate gr-iio Hello Jean-Michel, On Fri, 22 Mar 2024 21:58:32 +0100 (CET) friedtj at free.fr wrote: > From e26989cc30d4476d7384e62064cfa6486706bf8b Mon Sep 17 00:00:00 2001 > From: JM Friedt > Date: Fri, 22 Mar 2024 20:55:44 +0000 > Subject: [PATCH 1/1] package/gnuradio: add IIO as optional feature of GNU Radio I'm not sure what happened, but your patch is badly formatted. Also your Signed-off-by line is missing. > +config BR2_PACKAGE_GNURADIO_IIO > + bool "gr-iio support" > + select BR2_PACKAGE_LIBIIO Since you select libiio... > + select BR2_PACKAGE_GNURADIO_BLOCKS > + help > + IIO support > + > config BR2_PACKAGE_GNURADIO_NETWORK > bool "gr-network support" > select BR2_PACKAGE_GNURADIO_BLOCKS > diff --git a/package/gnuradio/gnuradio.mk b/package/gnuradio/gnuradio.mk > index 4e82c9e129..2267e7561a 100644 > --- a/package/gnuradio/gnuradio.mk > +++ b/package/gnuradio/gnuradio.mk > @@ -112,6 +112,12 @@ else > GNURADIO_CONF_OPTS += -DENABLE_GR_NETWORK=OFF > endif > > +ifeq ($(BR2_PACKAGE_GNURADIO_IIO),y) > +GNURADIO_CONF_OPTS += -DENABLE_GR_IIO=ON don't you need libiio as a build dependency? > +else > +GNURADIO_CONF_OPTS += -DENABLE_GR_IIO=OFF > +endif Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From bonet at grenoble.cnrs.fr Thu May 16 08:38:10 2024 From: bonet at grenoble.cnrs.fr (Edgar Bonet) Date: Thu, 16 May 2024 10:38:10 +0200 Subject: [Buildroot] Nginx fails to build with GCC 14 In-Reply-To: References: <5647a701-8c5a-4ce6-92c3-3c252e1cd91b@grenoble.cnrs.fr> <4c9e89d1-48f6-48a7-b7af-0d429e2256cc@grenoble.cnrs.fr> Message-ID: Hello Arnout, all! > the patch should have an Upstream: tag with the URL of the PR or > whatever you made to send the patch upstream. OK. I guess I will have to learn some basic mercurial commands, as the Nginx developers expect patches to be submitted in ?HG changeset patch? format... > > ++ ngx_feature_test="volatile size_t n = 0; > > The interface actually defines it as AO_t, so perhaps use that instead > of volatile size_t? Oh right! I hadn't even checked the API. Will use AO_t. Thanks! Edgar. From christian at aperture.us Thu May 16 09:06:48 2024 From: christian at aperture.us (Christian Stewart) Date: Thu, 16 May 2024 02:06:48 -0700 Subject: [Buildroot] [PATCH v1 1/3] package/go-bootstrap-stage2: bump version to go1.19.13 In-Reply-To: References: <20240307015107.2908128-1-christian@aperture.us> <20240514102318.1cdeba18@windsurf> Message-ID: Romain, On Thu, May 16, 2024, 12:07?AM Romain Naour wrote: > Hello Christian, All, > > Le 15/05/2024 ? 01:38, Christian Stewart via buildroot a ?crit : > Anyway, go should not try to use git to retrieve some info since we are > not in > the go repository. > > I applied the same patch "fix go-bootstrap when parent dir contains invalid > .git" from [1] to go-bootstrap-stage3 > > [1] > > https://gitlab.com/buildroot.org/buildroot/-/commit/bc8e70a08ba083d978c828e31442a7645c9099d7 > > And the build succeed on gitlab-ci: > https://gitlab.com/kubu93/buildroot/-/jobs/6860670292 > > Best regards, > Romain > Ah yes, a year ago (July 2023) I encountered this issue, added the patch to buildroot, sent the patch upstream: https://go-review.googlesource.com/c/go/+/513835#message-3e06cf20e68b78655fd3aa2af4a192e45bb29e63 - had review comments on that CL, but never got around to updating / resubmitting it :( Good to know that worked! Best regards, Christian Stewart -------------- next part -------------- An HTML attachment was scrubbed... URL: From peter at korsgaard.com Thu May 16 09:27:02 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 11:27:02 +0200 Subject: [Buildroot] [PATCH] utils/check-package: new check for Buildroot's defconfig files In-Reply-To: <20240501215127.2d729695@windsurf> (Thomas Petazzoni via buildroot's message of "Wed, 1 May 2024 21:51:27 +0200") References: <20240331203403.815497-1-yann.morin.1998@free.fr> <20240501215127.2d729695@windsurf> Message-ID: <87v83ep0nt.fsf@dell.be.48ers.dk> >>>>> "Thomas" == Thomas Petazzoni via buildroot writes: > On Sun, 31 Mar 2024 22:34:03 +0200 > "Yann E. MORIN" wrote: >> Now that we do have support for checking hashes for custom versions >> (for the few packages for which we do support custom versions, like the >> kernel, some bootloaders...), we want to ensure that our defconfig >> files, when they enable one or more such custom version, do enable >> checking the hashes for those versions, and thus we want to require all >> our defconfigs do enable BR2_DOWNLOAD_FORCE_CHECK_HASHES. >> >> Add a check for that condition. >> >> We need to be careful that we only check Buildroot's defconfig, whether >> in-tree or in a br2-external, and not kernel or other kconfig-based >> defconfig files, like those in board/ sub-directories. So we only match >> defconfig files that are in a configs/ directory, whether at the >> toplevel (for in-tree defconfigs), or not (for br2-external defconfigs). I wonder if it really makes sense to enforce this for br2-external defconfigs, as it is basically a question about policy and they are "out of our hands". Depending on the use case it may or may not make sense for those defconfigs to use hashes. E.G. at $WORK I have a br2-external tree where check-package is used to ensure that the packages are well behaved (E.G. do not negatively impact the rest), but E.G. the kernel is downloaded from a trusted git server and changed often, so the overhead of maintaining hashes of the (buildroot internally generated) tarball is quite annoying. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 16 09:28:01 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 11:28:01 +0200 Subject: [Buildroot] [PATCH 1/1] package/coreutils: drop gmp optional dependency In-Reply-To: <20240330185620.995961-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sat, 30 Mar 2024 19:56:20 +0100") References: <20240330185620.995961-1-fontaine.fabrice@gmail.com> Message-ID: <87r0e2p0m6.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > libgmp is included in coreutils (through bootstrap.conf) since bump to > version 9.0 in commit 2ee43bad85693d1c96e14f5b39ccb13a8982f50a and > https://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=13046444888a7e96f48d28fdd5a6ffe03d4ab036: > configure: WARNING: unrecognized options: --disable-gtk-doc, > --disable-gtk-doc-html, --disable-doc, --disable-docs, > --disable-documentation, --with-xmlto, --with-fop, --enable-ipv6, > --enable-static, --enable-shared, --without-gmp > Fixes: 2ee43bad85693d1c96e14f5b39ccb13a8982f50a > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 16 09:41:06 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 11:41:06 +0200 Subject: [Buildroot] [PATCH 1/1] support/testing: add iperf runtime test In-Reply-To: <20240420105441.35505-1-ju.o@free.fr> (Julien Olivain's message of "Sat, 20 Apr 2024 12:54:41 +0200") References: <20240420105441.35505-1-ju.o@free.fr> Message-ID: <87msoqp00d.fsf@dell.be.48ers.dk> >>>>> "Julien" == Julien Olivain writes: > Signed-off-by: Julien Olivain Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From bonet at grenoble.cnrs.fr Thu May 16 10:06:50 2024 From: bonet at grenoble.cnrs.fr (Edgar Bonet) Date: Thu, 16 May 2024 12:06:50 +0200 Subject: [Buildroot] [PATCH 1/1] package/nginx: fix compile error in configure script Message-ID: <1ed351b7-0e04-436d-9ce3-ca70f4d3ff74@grenoble.cnrs.fr> Building with GCC 14 fails at the configure step with: ./configure: error: libatomic_ops library was not found. The error is not caused by a missing library, but by an unrelated "incompatible pointer type" error in the test program: ... checking for atomic_ops library objs/autotest.c: In function 'main': objs/autotest.c:9:48: error: passing argument 1 of 'AO_compare_and_swap' from incompatible pointer type [-Wincompatible-pointer-types] This used to be a warning, but it is an error since GCC 14.[1] Fix this by patching the test program in order to use the correct pointer types. [1] https://gcc.gnu.org/gcc-14/porting_to.html#incompatible-pointer-types Signed-off-by: Edgar Bonet --- ...ix-compile-error-in-configure-script.patch | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 package/nginx/0011-Fix-compile-error-in-configure-script.patch diff --git a/package/nginx/0011-Fix-compile-error-in-configure-script.patch b/package/nginx/0011-Fix-compile-error-in-configure-script.patch new file mode 100644 index 0000000000..2e719928ce --- /dev/null +++ b/package/nginx/0011-Fix-compile-error-in-configure-script.patch @@ -0,0 +1,41 @@ +From e1bcac837f6aeabc4ddece06ecbcf2bcca8dd651 Mon Sep 17 00:00:00 2001 +From: Edgar Bonet +Date: Thu, 16 May 2024 11:15:10 +0200 +Subject: [PATCH] Fix compile error in configure script + +Building with GCC 14 fails at the configure step with: + + ./configure: error: libatomic_ops library was not found. + +The error is not caused by a missing library, but by an unrelated +"incompatible pointer type" error in the test program: + + ... + checking for atomic_ops library + objs/autotest.c: In function 'main': + objs/autotest.c:9:48: error: passing argument 1 of 'AO_compare_and_swap' from incompatible pointer type [-Wincompatible-pointer-types] + +Fix the error by using the correct pointer types. + +Signed-off-by: Edgar Bonet +Upstream: https://mailman.nginx.org/pipermail/nginx-devel/2024-May/LF5H73UPOIS64TVQUN5N6S2A4IACBRPT.html +--- + auto/lib/libatomic/conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/auto/lib/libatomic/conf b/auto/lib/libatomic/conf +index d1e484a..0f12b9c 100644 +--- a/auto/lib/libatomic/conf ++++ b/auto/lib/libatomic/conf +@@ -20,7 +20,7 @@ else + #include " + ngx_feature_path= + ngx_feature_libs="-latomic_ops" +- ngx_feature_test="long n = 0; ++ ngx_feature_test="AO_t n = 0; + if (!AO_compare_and_swap(&n, 0, 1)) + return 1; + if (AO_fetch_and_add(&n, 1) != 1) +-- +2.34.1 + -- 2.34.1 From jonhenrik at qbee.io Thu May 16 10:51:18 2024 From: jonhenrik at qbee.io (=?UTF-8?q?Jon=20Henrik=20Bj=C3=B8rnstad?=) Date: Thu, 16 May 2024 12:51:18 +0200 Subject: [Buildroot] [PATCH 1/1] package/qbee-agent: bump version to 2024.19 Message-ID: <20240516105118.3064532-1-jonhenrik@qbee.io> Signed-off-by: Jon Henrik Bj?rnstad --- package/qbee-agent/qbee-agent.hash | 2 +- package/qbee-agent/qbee-agent.mk | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/qbee-agent/qbee-agent.hash b/package/qbee-agent/qbee-agent.hash index 8e9e7230ea..69fab1d0c3 100644 --- a/package/qbee-agent/qbee-agent.hash +++ b/package/qbee-agent/qbee-agent.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 d329d6d1c885ec4d410ab8c5f93320ab603cef860311a6b392edd5b903039a81 qbee-agent-2024.09-go2.tar.gz +sha256 7bf7c341bf48310c48ed34b970f64b6556197e6de707d3fa8e92d2b5141d0c20 qbee-agent-2024.19-go2.tar.gz sha256 02d07d96be99eb042b01ba650079a440ce26a78c5e0e1e8060c33a8c9e200404 LICENSE diff --git a/package/qbee-agent/qbee-agent.mk b/package/qbee-agent/qbee-agent.mk index 30219eebdc..711c152031 100644 --- a/package/qbee-agent/qbee-agent.mk +++ b/package/qbee-agent/qbee-agent.mk @@ -5,12 +5,12 @@ ################################################################################ # keep QBEE_AGENT_COMMIT_ID in sync when updating -QBEE_AGENT_VERSION = 2024.09 +QBEE_AGENT_VERSION = 2024.19 QBEE_AGENT_SITE = $(call github,qbee-io,qbee-agent,$(QBEE_AGENT_VERSION)) QBEE_AGENT_LICENSE = Apache-2.0 QBEE_AGENT_LICENSE_FILES = LICENSE -QBEE_AGENT_COMMIT_ID = c30d43b8e64cfef960cee9475b58ae083e4ad246 +QBEE_AGENT_COMMIT_ID = 9d0ed1bc1bab18c75a73dbacc2026e86113c97aa QBEE_AGENT_GOMOD = go.qbee.io/agent -- 2.25.1 From jonhenrik at qbee.io Thu May 16 11:00:40 2024 From: jonhenrik at qbee.io (=?UTF-8?Q?Jon_Henrik_Bj=C3=B8rnstad?=) Date: Thu, 16 May 2024 13:00:40 +0200 Subject: [Buildroot] [PATCH 1/1] package/qbee-agent: new package In-Reply-To: <20240512120544.002e958a@windsurf> References: <20240305093839.3152030-1-jonhenrik@qbee.io> <20240305093839.3152030-2-jonhenrik@qbee.io> <20240512120544.002e958a@windsurf> Message-ID: Hi Thomas, Thank you very much for the feedback and reviewing my patch. As this patch was for an older version of the qbee-agent, I have today submitted a patch to bump the version. With kind regards, Jon Henrik Bj?rnstad On Sun, May 12, 2024 at 12:05?PM Thomas Petazzoni < thomas.petazzoni at bootlin.com> wrote: > Hello Jon, > > Thanks for your patch, and sorry for the long delay in getting back to > you. I have applied your patch, with some fixes (see below). > > On Tue, 5 Mar 2024 10:38:39 +0100 > Jon Henrik Bj?rnstad via buildroot wrote: > > > diff --git a/package/qbee-agent/Config.in b/package/qbee-agent/Config.in > > new file mode 100644 > > index 0000000000..02e35827ef > > --- /dev/null > > +++ b/package/qbee-agent/Config.in > > @@ -0,0 +1,17 @@ > > +config BR2_PACKAGE_QBEE_AGENT > > + bool "qbee-agent" > > + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS > > + select BR2_PACKAGE_IPTABLES # runtime > > + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # runtime > > + select BR2_PACKAGE_SHADOW # runtime > > + select BR2_PACKAGE_BASH # runtime > > When you select something, you need to replicate the "depends on" of > the thing you are selecting. So here: > > + depends on BR2_USE_MMU # bash > + depends on !BR2_STATIC_LIBS # shadow > + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 # shadow > > > + help > > + Qbee is a device management platform that comprise > > + of an open-source agent and a hosted SaaS backend. > > + This config installs pre-built static binaries made > > + with the official public signing key for qbee.io. The > > + binaries will work seamlessly with the qbee.io device > > + management backend. > > + > > + https://github.com/qbee-io/qbee-agent > > + https://qbee.io > > And you need to add a Config.in comment about those dependencies: > > +comment "qbee-agent needs a toolchain w/ headers >= 4.14, dynamic library" > + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS > + depends on BR2_USE_MMU > + depends on BR2_STATIC_LIBS || \ > + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 > > > diff --git a/package/qbee-agent/qbee-agent.hash > b/package/qbee-agent/qbee-agent.hash > > new file mode 100644 > > index 0000000000..1c6a361ff6 > > --- /dev/null > > +++ b/package/qbee-agent/qbee-agent.hash > > @@ -0,0 +1,3 @@ > > +# Locally calculated > > +sha256 > b1b5a6d4e18fbd8536d05616c632f10ef309d26036a19c5ce28d0635c45d8cab > qbee-agent-2024.09.tar.gz > > I had to update the hash and the filename, due to the recent changes in > the download infrastructure (not your fault, the changes were committed > very recently). > > > +sha256 > 02d07d96be99eb042b01ba650079a440ce26a78c5e0e1e8060c33a8c9e200404 LICENSE > > diff --git a/package/qbee-agent/qbee-agent.mk b/package/qbee-agent/ > qbee-agent.mk > > new file mode 100644 > > index 0000000000..66037195c1 > > --- /dev/null > > +++ b/package/qbee-agent/qbee-agent.mk > > @@ -0,0 +1,35 @@ > > > +################################################################################ > > +# > > +# qbee-agent package > > +# > > > +################################################################################ > > + > > +QBEE_AGENT_VERSION = 2024.09 > > Added a comment above this line, saying that QBEE_AGENT_COMMIT_ID > should be kept in sync. > > > +QBEE_AGENT_SITE = $(call > github,qbee-io,qbee-agent,$(QBEE_AGENT_VERSION)) > > +QBEE_AGENT_LICENSE = Apache-2.0 > > +QBEE_AGENT_LICENSE_FILES = LICENSE > > + > > +QBEE_AGENT_COMMIT_ID = c30d43b8e64cfef960cee9475b58ae083e4ad246 > > + > > +QBEE_AGENT_GOMOD = go.qbee.io/agent > > + > > +QBEE_AGENT_LDFLAGS = -s -w \ > > + -X $(QBEE_AGENT_GOMOD)/app.Version=$(QBEE_AGENT_VERSION) \ > > + -X $(QBEE_AGENT_GOMOD)/app.Commit=$(QBEE_AGENT_COMMIT_ID) > > + > > +define QBEE_AGENT_INSTALL_TARGET_CMDS > > + $(INSTALL) -m 0755 $(@D)/bin/qbee-agent > $(TARGET_DIR)/usr/bin/qbee-agent > > + $(INSTALL) -D -m 0600 $(@D)/package/share/ssl/ca.cert > $(TARGET_DIR)/etc/qbee/ppkeys/ca.cert > > +endef > > As suggested by Yann E. Morin in a previous iteration, I dropped the > installation of the binary from there, and turned this into a > post-install target hook. Indeed, the golang-package infrastructure > already takes care of installing the binary. > > Thanks a lot! > > Thomas > -- > Thomas Petazzoni, co-owner and CEO, Bootlin > Embedded Linux and Kernel engineering and training > https://bootlin.com > -------------- next part -------------- An HTML attachment was scrubbed... URL: From peter at korsgaard.com Thu May 16 11:02:28 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 13:02:28 +0200 Subject: [Buildroot] [PATCH 1/1] support/testing: add fwts runtime test In-Reply-To: <20240420132817.1352847-1-ju.o@free.fr> (Julien Olivain's message of "Sat, 20 Apr 2024 15:28:17 +0200") References: <20240420132817.1352847-1-ju.o@free.fr> Message-ID: <87ikzeow8r.fsf@dell.be.48ers.dk> >>>>> "Julien" == Julien Olivain writes: > Signed-off-by: Julien Olivain Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 16 11:02:37 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 13:02:37 +0200 Subject: [Buildroot] [PATCH 1/2] package/fwts: update _SITE url to use https In-Reply-To: <20240420143618.1809745-1-ju.o@free.fr> (Julien Olivain's message of "Sat, 20 Apr 2024 16:36:17 +0200") References: <20240420143618.1809745-1-ju.o@free.fr> Message-ID: <87eda2ow8i.fsf@dell.be.48ers.dk> >>>>> "Julien" == Julien Olivain writes: > The http URL redirects to https. This commit updates this URL to > directly use https. > Signed-off-by: Julien Olivain Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 16 11:08:34 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 13:08:34 +0200 Subject: [Buildroot] [PATCH] package/linux-pam: bump to version 1.6.1 In-Reply-To: <20240426071304.2564147-1-sairon@sairon.cz> ("Jan =?utf-8?B?xIxlcm3DoWsiJ3M=?= message of "Fri, 26 Apr 2024 09:13:03 +0200") References: <20240426071304.2564147-1-sairon@sairon.cz> Message-ID: <87a5kqovyl.fsf@dell.be.48ers.dk> >>>>> "Jan" == Jan ?erm?k writes: > Bump to latest version, fixing couple of bugs. Remove patch already > included in this release. > https://github.com/linux-pam/linux-pam/releases/tag/v1.6.1 > Signed-off-by: Jan ?erm?k Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 16 09:27:46 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 11:27:46 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/coreutils: drop gmp optional dependency Message-ID: <20240516110928.2449E8740B@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=f2eb2273170e9d12e44fd56c707e54ddc245b949 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x libgmp is included in coreutils (through bootstrap.conf) since bump to version 9.0 in commit 2ee43bad85693d1c96e14f5b39ccb13a8982f50a and https://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=13046444888a7e96f48d28fdd5a6ffe03d4ab036: configure: WARNING: unrecognized options: --disable-gtk-doc, --disable-gtk-doc-html, --disable-doc, --disable-docs, --disable-documentation, --with-xmlto, --with-fop, --enable-ipv6, --enable-static, --enable-shared, --without-gmp Fixes: 2ee43bad85693d1c96e14f5b39ccb13a8982f50a Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni (cherry picked from commit 16463a00affa0ba4814e583bcd544174528f371e) Signed-off-by: Peter Korsgaard --- package/coreutils/coreutils.mk | 6 ------ 1 file changed, 6 deletions(-) diff --git a/package/coreutils/coreutils.mk b/package/coreutils/coreutils.mk index e9cb7b67cb..846d4fa567 100644 --- a/package/coreutils/coreutils.mk +++ b/package/coreutils/coreutils.mk @@ -75,12 +75,6 @@ ifeq ($(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y) COREUTILS_CONF_OPTS += --with-libintl-prefix=$(STAGING_DIR)/usr endif -ifeq ($(BR2_PACKAGE_GMP),y) -COREUTILS_DEPENDENCIES += gmp -else -COREUTILS_CONF_OPTS += --without-gmp -endif - ifeq ($(BR2_PACKAGE_LIBCAP),y) COREUTILS_DEPENDENCIES += libcap else From peter at korsgaard.com Thu May 16 09:35:30 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 11:35:30 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] support/testing: add iperf runtime test Message-ID: <20240516110928.30D83873D4@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=1f383f120e5f32c597d767ed202bc10a88f99898 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: Julien Olivain Signed-off-by: Thomas Petazzoni (cherry picked from commit 6317f6c9a4107d3409530b653c5900bff17ffb6e) Signed-off-by: Peter Korsgaard --- DEVELOPERS | 1 + support/testing/tests/package/test_iperf.py | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index a2a2c56a13..cab7258cb1 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -1789,6 +1789,7 @@ F: support/testing/tests/package/test_gzip.py F: support/testing/tests/package/test_highway.py F: support/testing/tests/package/test_hwloc.py F: support/testing/tests/package/test_iozone.py +F: support/testing/tests/package/test_iperf.py F: support/testing/tests/package/test_iperf3.py F: support/testing/tests/package/test_iptables.py F: support/testing/tests/package/test_jailhouse.py diff --git a/support/testing/tests/package/test_iperf.py b/support/testing/tests/package/test_iperf.py new file mode 100644 index 0000000000..31f04d9896 --- /dev/null +++ b/support/testing/tests/package/test_iperf.py @@ -0,0 +1,23 @@ +import os + +import infra.basetest + + +class TestIperf(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_IPERF=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + self.assertRunOk("iperf --version") + self.assertRunOk("iperf -s -D") + self.assertRunOk("iperf -c 127.0.0.1 -t 3") From peter at korsgaard.com Thu May 16 09:41:54 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 11:41:54 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/fwts: update _SITE url to use https Message-ID: <20240516110928.4CC948740E@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=48275e431f5f3ba3ef1c1290d3b28d5c31821172 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x The http URL redirects to https. This commit updates this URL to directly use https. Signed-off-by: Julien Olivain Signed-off-by: Thomas Petazzoni (cherry picked from commit 2aa3a23bbe755ef73af7dfbb65dd8ec60c8c1865) Signed-off-by: Peter Korsgaard --- package/fwts/fwts.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/fwts/fwts.mk b/package/fwts/fwts.mk index f06609777d..a3f91ee495 100644 --- a/package/fwts/fwts.mk +++ b/package/fwts/fwts.mk @@ -6,7 +6,7 @@ FWTS_VERSION = 23.07.00 FWTS_SOURCE = fwts-V$(FWTS_VERSION).tar.gz -FWTS_SITE = http://fwts.ubuntu.com/release +FWTS_SITE = https://fwts.ubuntu.com/release FWTS_STRIP_COMPONENTS = 0 FWTS_LICENSE = GPL-2.0, LGPL-2.1, Custom FWTS_LICENSE_FILES = debian/copyright From peter at korsgaard.com Thu May 16 09:41:28 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 11:41:28 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] support/testing: add fwts runtime test Message-ID: <20240516110928.3F19E8740D@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=2b8ca3cfbeb221a787c60d705f1670be8da2e539 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: Julien Olivain Signed-off-by: Thomas Petazzoni (cherry picked from commit 7c1faf997f868586a40a9cb6f03166d85a67b8f8) Signed-off-by: Peter Korsgaard --- DEVELOPERS | 1 + support/testing/tests/package/test_fwts.py | 67 ++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index cab7258cb1..8f58b47fe0 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -1777,6 +1777,7 @@ F: support/testing/tests/package/test_file/ F: support/testing/tests/package/test_fluidsynth.py F: support/testing/tests/package/test_fluidsynth/ F: support/testing/tests/package/test_fping.py +F: support/testing/tests/package/test_fwts.py F: support/testing/tests/package/test_gawk.py F: support/testing/tests/package/test_ghostscript.py F: support/testing/tests/package/test_ghostscript/ diff --git a/support/testing/tests/package/test_fwts.py b/support/testing/tests/package/test_fwts.py new file mode 100644 index 0000000000..ef792136c2 --- /dev/null +++ b/support/testing/tests/package/test_fwts.py @@ -0,0 +1,67 @@ +import os + +import infra.basetest + + +class TestFwts(infra.basetest.BRTest): + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_4=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_TARGET_ROOTFS_EXT2_SIZE="128M" + BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/aarch64-sbsa/assemble-flash-images support/scripts/genimage.sh" + BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/qemu/aarch64-sbsa/genimage.cfg" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.28" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y + BR2_TARGET_EDK2=y + BR2_TARGET_EDK2_PLATFORM_QEMU_SBSA=y + BR2_TARGET_GRUB2=y + BR2_TARGET_GRUB2_ARM64_EFI=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.9" + BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="qemu_sbsa" + BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y + BR2_PACKAGE_FWTS=y + BR2_PACKAGE_FWTS_EFI_RUNTIME_MODULE=y + BR2_PACKAGE_HOST_GENIMAGE=y + BR2_PACKAGE_HOST_DOSFSTOOLS=y + BR2_PACKAGE_HOST_MTOOLS=y + """ + + def test_run(self): + hda = os.path.join(self.builddir, "images", "disk.img") + flash0 = os.path.join(self.builddir, "images", "SBSA_FLASH0.fd") + flash1 = os.path.join(self.builddir, "images", "SBSA_FLASH1.fd") + self.emulator.boot(arch="aarch64", + options=["-M", "sbsa-ref", + "-cpu", "cortex-a57", + "-m", "512M", + "-pflash", flash0, + "-pflash", flash1, + "-hda", hda]) + self.emulator.login() + + # Check the program can execute. + self.assertRunOk("fwts --version") + + # We run a simple UEFI runtime service variable interface test + # suite. Those tests are using the fwts efi_runtime kernel + # module. + self.assertRunOk("fwts -q uefirtvariable", timeout=30) + + # The previous fwts invocation is expected to have created a + # "results.log" report. We check the file exists and contains + # a known header string. + expected_str = "Results generated by fwts:" + cmd = f"grep -F '{expected_str}' results.log" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + self.assertTrue(out[0].startswith(expected_str)) From peter at korsgaard.com Thu May 16 11:07:27 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 13:07:27 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/linux-pam: bump to version 1.6.1 Message-ID: <20240516110928.5BE258740B@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=4415daf635e56f55993eafdd196864ebab5b6d3c branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Bump to latest version, fixing couple of bugs. Remove patch already included in this release. https://github.com/linux-pam/linux-pam/releases/tag/v1.6.1 Signed-off-by: Jan ??erm??k Signed-off-by: Thomas Petazzoni (cherry picked from commit 0d394c39b8f26ba6e65771cd4afdcc4fac0ed0e8) Signed-off-by: Peter Korsgaard --- .../0001-pam_namespace-include-stdint-h.patch | 42 ---------------------- package/linux-pam/linux-pam.hash | 4 +-- package/linux-pam/linux-pam.mk | 2 +- 3 files changed, 3 insertions(+), 45 deletions(-) diff --git a/package/linux-pam/0001-pam_namespace-include-stdint-h.patch b/package/linux-pam/0001-pam_namespace-include-stdint-h.patch deleted file mode 100644 index 5eda619505..0000000000 --- a/package/linux-pam/0001-pam_namespace-include-stdint-h.patch +++ /dev/null @@ -1,42 +0,0 @@ -From cc9d40b7cdbd3e15ccaa324a0dda1680ef9dea13 Mon Sep 17 00:00:00 2001 -From: Jacob Heider -Date: Wed, 17 Jan 2024 11:49:26 -0500 -Subject: [PATCH] pam_namespace: include stdint.h - -pam_namespace.c makes use of SIZE_MAX but doesn't include stdint.h, -resulting in the following build failures on 1.6.0: - - pam_namespace.c: In function 'process_line': - pam_namespace.c:649:41: error: 'SIZE_MAX' undeclared (first use in this function) - 649 | if (count > UINT_MAX || count > SIZE_MAX / sizeof(uid_t)) { - | ^~~~~~~~ - pam_namespace.c:41:1: note: 'SIZE_MAX' is defined in header ''; did you forget to '#include '? - 40 | #include "argv_parse.h" - +++ |+#include - 41 | - pam_namespace.c:649:41: note: each undeclared identifier is reported only once for each function it appears in - 649 | if (count > UINT_MAX || count > SIZE_MAX / sizeof(uid_t)) { - | ^~~~~~~~ - -Fixes: v1.6.0~100 ("pam_namespace: validate amount of uids in config") -Resolves: https://github.com/linux-pam/linux-pam/issues/733 - -Upstream: https://github.com/linux-pam/linux-pam/commit/cc9d40b7cdbd3e15ccaa324a0dda1680ef9dea13 -Signed-off-by: Fabrice Fontaine ---- - modules/pam_namespace/pam_namespace.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/modules/pam_namespace/pam_namespace.c b/modules/pam_namespace/pam_namespace.c -index f72d67189..b16731c22 100644 ---- a/modules/pam_namespace/pam_namespace.c -+++ b/modules/pam_namespace/pam_namespace.c -@@ -34,6 +34,8 @@ - - #define _ATFILE_SOURCE - -+#include "config.h" -+#include - #include "pam_cc_compat.h" - #include "pam_inline.h" - #include "pam_namespace.h" diff --git a/package/linux-pam/linux-pam.hash b/package/linux-pam/linux-pam.hash index cd882715cb..353613e6e6 100644 --- a/package/linux-pam/linux-pam.hash +++ b/package/linux-pam/linux-pam.hash @@ -1,6 +1,6 @@ # Locally computed hashes after checking signature at -# https://github.com/linux-pam/linux-pam/releases/download/v1.6.0/Linux-PAM-1.6.0.tar.xz.asc +# https://github.com/linux-pam/linux-pam/releases/download/v1.6.1/Linux-PAM-1.6.1.tar.xz.asc # signed with the key 8C6BFD92EE0F42EDF91A6A736D1A7F052E5924BB -sha256 fff4a34e5bbee77e2e8f1992f27631e2329bcbf8a0563ddeb5c3389b4e3169ad Linux-PAM-1.6.0.tar.xz +sha256 f8923c740159052d719dbfc2a2f81942d68dd34fcaf61c706a02c9b80feeef8e Linux-PAM-1.6.1.tar.xz # Locally computed sha256 133d98e7a2ab3ffd330b4debb0bfc10fea21e4b2b5a5b09de2e924293be5ff08 Copyright diff --git a/package/linux-pam/linux-pam.mk b/package/linux-pam/linux-pam.mk index 89a46e81df..a205d67c54 100644 --- a/package/linux-pam/linux-pam.mk +++ b/package/linux-pam/linux-pam.mk @@ -4,7 +4,7 @@ # ################################################################################ -LINUX_PAM_VERSION = 1.6.0 +LINUX_PAM_VERSION = 1.6.1 LINUX_PAM_SOURCE = Linux-PAM-$(LINUX_PAM_VERSION).tar.xz LINUX_PAM_SITE = https://github.com/linux-pam/linux-pam/releases/download/v$(LINUX_PAM_VERSION) LINUX_PAM_INSTALL_STAGING = YES From Alex.Michel at wiedemann-group.com Thu May 16 11:59:11 2024 From: Alex.Michel at wiedemann-group.com (Michel Alex) Date: Thu, 16 May 2024 11:59:11 +0000 Subject: [Buildroot] [PATCH 1/1] package/libzenoh-pico: bump version to 0.11.0.3 Message-ID: https://github.com/eclipse-zenoh/zenoh-pico/releases Signed-off-by: Alex Michel --- package/libzenoh-pico/libzenoh-pico.hash | 2 +- package/libzenoh-pico/libzenoh-pico.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/libzenoh-pico/libzenoh-pico.hash b/package/libzenoh-pico/libzenoh-pico.hash index 945d0f9aaf..9ea45969aa 100644 --- a/package/libzenoh-pico/libzenoh-pico.hash +++ b/package/libzenoh-pico/libzenoh-pico.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 c259da44aa919919d1129b6a46edb05e2f5f2bf2818f73c27f515e443da9fc83 libzenoh-pico-0.11.0.1.tar.gz +sha256 a5bc5cae6fd4ade3d69d8a2ed0aef89f4c8f752f79d74b7462f5bb3437680b72 libzenoh-pico-0.11.0.3.tar.gz sha256 d386df32cf327bbb25abe894277d3d7e0f447bafc59f4ad362615b0136f30db5 LICENSE diff --git a/package/libzenoh-pico/libzenoh-pico.mk b/package/libzenoh-pico/libzenoh-pico.mk index 86204de14f..9163ba30ad 100644 --- a/package/libzenoh-pico/libzenoh-pico.mk +++ b/package/libzenoh-pico/libzenoh-pico.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBZENOH_PICO_VERSION = 0.11.0.1 +LIBZENOH_PICO_VERSION = 0.11.0.3 LIBZENOH_PICO_SITE = $(call github,eclipse-zenoh,zenoh-pico,$(LIBZENOH_PICO_VERSION)) LIBZENOH_PICO_LICENSE = Apache-2.0 or EPL-2.0 LIBZENOH_PICO_LICENSE_FILES = LICENSE -- 2.34.1 From peter at korsgaard.com Thu May 16 12:22:56 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 14:22:56 +0200 Subject: [Buildroot] [PATCH 1/1] DEVELOPERS: add myself for Armadeus boards In-Reply-To: <20240418133035.30749-1-sebastien.szymanski@armadeus.com> (=?utf-8?Q?=22S=C3=A9bastien?= Szymanski"'s message of "Thu, 18 Apr 2024 15:30:35 +0200") References: <20240418133035.30749-1-sebastien.szymanski@armadeus.com> Message-ID: <875xveosin.fsf@dell.be.48ers.dk> >>>>> "S?bastien" == S?bastien Szymanski writes: > Signed-off-by: S?bastien Szymanski Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 16 12:24:48 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 14:24:48 +0200 Subject: [Buildroot] [PATCH] DEVELOPERS: remove Sebastian Weyer In-Reply-To: <20240501211300.1590881-1-romain.naour@smile.fr> (Romain Naour's message of "Wed, 1 May 2024 23:12:43 +0200") References: <20240501211300.1590881-1-romain.naour@smile.fr> Message-ID: <871q62osfj.fsf@dell.be.48ers.dk> >>>>> "Romain" == Romain Naour writes: > Sebastian email address at Smile is bouncing, so drop it > from the DEVELOPERS file. > Signed-off-by: Romain Naour Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 16 12:24:31 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 14:24:31 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] DEVELOPERS: remove Sebastian Weyer Message-ID: <20240516122509.B397687415@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=99eafd1cc66fabeb8b5e7c12cfb97b7c6b9781a9 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Sebastian email address at Smile is bouncing, so drop it from the DEVELOPERS file. Signed-off-by: Romain Naour Signed-off-by: Yann E. MORIN (cherry picked from commit 7b973daac3f24ffce0246c5bbf80541499d86189) Signed-off-by: Peter Korsgaard --- DEVELOPERS | 8 -------- 1 file changed, 8 deletions(-) diff --git a/DEVELOPERS b/DEVELOPERS index 88c266293b..6a1ec436ff 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2752,14 +2752,6 @@ F: support/misc/toolchainfile.cmake.in N: Sam Voss F: package/ripgrep/ -N: Sebastian Weyer -F: package/amlogic-boot-fip/ -F: package/nushell/ -F: package/rust-bindgen/ -F: package/spirv-headers/ -F: support/testing/tests/package/sample_nu.nu -F: support/testing/tests/package/test_nu.py - N: S??bastien Szymanski F: board/armadeus/ F: configs/armadeus* From peter at korsgaard.com Thu May 16 12:22:40 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 14:22:40 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] DEVELOPERS: add myself for Armadeus boards Message-ID: <20240516122509.A762A87414@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=27e7c199cf14804e038c5b550e050c76ec27ac9b branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: S??bastien Szymanski Signed-off-by: Romain Naour (cherry picked from commit 74c0cf2152415ab99c93d4d03acd7bfec39fd511) Signed-off-by: Peter Korsgaard --- DEVELOPERS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index 8f58b47fe0..88c266293b 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2761,6 +2761,8 @@ F: support/testing/tests/package/sample_nu.nu F: support/testing/tests/package/test_nu.py N: S??bastien Szymanski +F: board/armadeus/ +F: configs/armadeus* F: package/mmc-utils/ F: package/python-flask-jsonrpc/ F: package/python-flask-login/ From dario.binacchi at amarulasolutions.com Thu May 16 15:52:12 2024 From: dario.binacchi at amarulasolutions.com (Dario Binacchi) Date: Thu, 16 May 2024 17:52:12 +0200 Subject: [Buildroot] [PATCH 1/1] configs/qemu_sparc_ss10_defconfig: fix linux hash Message-ID: <20240516155212.975737-1-dario.binacchi@amarulasolutions.com> The patch fixes "make legal-info" for qemu_sparc_ss10 configuration: >>> host-gcc-initial 13.2.0 Collecting legal info COPYING: OK (sha256: 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c) COPYING3: OK (sha256: 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903) COPYING.LIB: OK (sha256: a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861) COPYING3.LIB: OK (sha256: a853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c) ERROR: No hash found for linux-6.8.6.tar.xz Signed-off-by: Dario Binacchi --- .../qemu/sparc-ss10/patches/linux-headers/linux-headers.hash | 1 + board/qemu/sparc-ss10/patches/linux/linux.hash | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) create mode 120000 board/qemu/sparc-ss10/patches/linux-headers/linux-headers.hash diff --git a/board/qemu/sparc-ss10/patches/linux-headers/linux-headers.hash b/board/qemu/sparc-ss10/patches/linux-headers/linux-headers.hash new file mode 120000 index 000000000000..5808d92afe89 --- /dev/null +++ b/board/qemu/sparc-ss10/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/qemu/sparc-ss10/patches/linux/linux.hash b/board/qemu/sparc-ss10/patches/linux/linux.hash index 762f8575e7e7..9d0d5466ca17 100644 --- a/board/qemu/sparc-ss10/patches/linux/linux.hash +++ b/board/qemu/sparc-ss10/patches/linux/linux.hash @@ -1,2 +1,2 @@ -# From https://cdn.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc -sha256 1973e6fc3e8617fc8b0e24b33180449f1a39fa6a607f8dba61cf91b4c5bba466 linux-6.8.6.tar.gz +# sha256 locally computed +sha256 9e723232d603ab45ebf043c34714c48f277ab195c29abcb8472f2a4c3a5a1995 linux-6.8.6.tar.xz -- 2.43.0 From bonet at grenoble.cnrs.fr Thu May 16 15:56:41 2024 From: bonet at grenoble.cnrs.fr (Edgar Bonet) Date: Thu, 16 May 2024 17:56:41 +0200 Subject: [Buildroot] Support external toolchains based on gcc 14 Message-ID: Hello all! Last July, right before support for gcc 13 was added for buildroot's internal toolchain in 3009095ba8 (package/gcc: add support for gcc 13), the support was added for the external toolchain in dfbd1aae23 (toolchain/toolchain-external/toolchain-external-custom: add gcc 13 version selection). Last week, support for gcc 14 has been added for the internal toolchain in 5eb0203cb0 (package/gcc: add version 14.x), but this is still lacking for the external toolchain. Is this an oversight? Should I just wait? Should I instead submit a patch equivalent to dfbd1aae23 for gcc 14? Regards, Edgar. From fontaine.fabrice at gmail.com Thu May 16 16:31:44 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Thu, 16 May 2024 18:31:44 +0200 Subject: [Buildroot] [PATCH 1/1] package/putty: security bump to version 0.81 Message-ID: <20240516163144.640424-1-fontaine.fabrice@gmail.com> The only change between 0.80 and 0.81 is one security fix: - ECDSA signatures using 521-bit keys (the NIST P521 curve, otherwise known as ecdsa-sha2-nistp521) were generated with biased random numbers. This permits an attacker in possession of a few dozen signatures to RECOVER THE PRIVATE KEY. Any 521-bit ECDSA private key that PuTTY or Pageant has used to sign anything should be considered compromised. This vulnerability has the identifier CVE-2024-31497. Update hash of LICENCE file (update in year with https://git.tartarus.org/?p=simon/putty.git;a=commit;h=f2f28ac0386eebbd45ea605818d31d62d219f589) https://lists.tartarus.org/pipermail/putty-announce/2024/000038.html Signed-off-by: Fabrice Fontaine --- package/putty/putty.hash | 8 ++++---- package/putty/putty.mk | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package/putty/putty.hash b/package/putty/putty.hash index 84569a31e5..30b749c47b 100644 --- a/package/putty/putty.hash +++ b/package/putty/putty.hash @@ -1,7 +1,7 @@ # Hashes from: http://the.earth.li/~sgtatham/putty/0.80/{sha1,sha256,sha512}sums -sha1 9c4a96f63ee3e927472191c935cc89228693c03a putty-0.80.tar.gz -sha256 2013c83a721b1753529e9090f7c3830e8fe4c80a070ccce764539badb3f67081 putty-0.80.tar.gz -sha512 c8a6b6fa54ecd8bcf4ec274fef51343dd9996e6458b250b5555c4dc88ded25e87f97277da482c29858510e65635112d541f559ab683635bd950572d850129f90 putty-0.80.tar.gz +sha1 8c88d871855d3730a0473bb1cb1006654e73b680 putty-0.81.tar.gz +sha256 cb8b00a94f453494e345a3df281d7a3ed26bb0dd7e36264f145206f8857639fe putty-0.81.tar.gz +sha512 d86f2fd0e126b18275d58cf64334b3b27c450899a1c2be2502de9faa2ef58f7fc8efc5d45f25c8395623f1e21917aa02407343bb2fee44c4c00b9f81267d5ecd putty-0.81.tar.gz # Locally calculated -sha256 7ede37f344ee03436c155a375ecb6cdb42a77105baa6e7804bf43260dc4a0c54 LICENCE +sha256 e0410341c5e45f7479c28d79298edbf615589cdfc115b2d69683d4ccd0425ce0 LICENCE diff --git a/package/putty/putty.mk b/package/putty/putty.mk index bff6e78074..617518e647 100644 --- a/package/putty/putty.mk +++ b/package/putty/putty.mk @@ -4,7 +4,7 @@ # ################################################################################ -PUTTY_VERSION = 0.80 +PUTTY_VERSION = 0.81 PUTTY_SITE = http://the.earth.li/~sgtatham/putty/$(PUTTY_VERSION) PUTTY_LICENSE = MIT PUTTY_LICENSE_FILES = LICENCE -- 2.43.0 From fontaine.fabrice at gmail.com Thu May 16 16:32:45 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Thu, 16 May 2024 18:32:45 +0200 Subject: [Buildroot] [PATCH 1/1] package/frotz: fix build with gcc 14 Message-ID: <20240516163245.641115-1-fontaine.fabrice@gmail.com> Drop -std=c99 from CFLAGS to avoid the following build failure with gcc 14: fastmem.c: In function 'z_restore': fastmem.c:842:36: error: implicit declaration of function 'strdup'; did you mean 'strcmp'? [-Wimplicit-function-declaration] 842 | f_setup.aux_name = strdup(default_name); | ^~~~~~ | strcmp Fixes: - http://autobuild.buildroot.org/results/df3b3b98265ec3a75578614746b2d1426c90e125 Signed-off-by: Fabrice Fontaine --- package/frotz/frotz.mk | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package/frotz/frotz.mk b/package/frotz/frotz.mk index 5af235137c..807c800be9 100644 --- a/package/frotz/frotz.mk +++ b/package/frotz/frotz.mk @@ -20,8 +20,7 @@ endif define FROTZ_BUILD_CMDS $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) PREFIX=/usr CONFIG_DIR=/etc \ - SOUND_TYPE=none CURSES="$(FROTZ_CURSES)" USE_UTF8=$(FROTZ_UTF8) \ - CFLAGS="$(TARGET_CFLAGS) -std=c99" + SOUND_TYPE=none CURSES="$(FROTZ_CURSES)" USE_UTF8=$(FROTZ_UTF8) endef define FROTZ_INSTALL_TARGET_CMDS -- 2.43.0 From thomas at devoogdt.com Thu May 16 17:33:19 2024 From: thomas at devoogdt.com (Thomas Devoogdt) Date: Thu, 16 May 2024 19:33:19 +0200 Subject: [Buildroot] [PATCH 1/1] package/syslog-ng: fix libcurl build without C++ Message-ID: Hi Fabrice, All, I saw a very similar issue when using libressl. https://github.com/syslog-ng/syslog-ng/issues/4923 Perhaps, the usage of libopenssl should also be added to the condition. Kr, Thomas -------------- next part -------------- An HTML attachment was scrubbed... URL: From fontaine.fabrice at gmail.com Thu May 16 18:13:56 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Thu, 16 May 2024 20:13:56 +0200 Subject: [Buildroot] [PATCH 1/1] package/syslog-ng: fix libcurl build without C++ In-Reply-To: References: Message-ID: Hello Thomas, Le jeu. 16 mai 2024 ? 19:33, Thomas Devoogdt a ?crit : > > Hi Fabrice, All, > > > I saw a very similar issue when using libressl. > https://github.com/syslog-ng/syslog-ng/issues/4923 > > Perhaps, the usage of libopenssl should also be added to the condition. It is a different issue. I think it would be better to fix the build with libressl rather than adding a libopenssl condition. I will look into it when I have some free time. > > > Kr, > > Thomas Best Regards, Fabrice From huth at tuxfamily.org Thu May 16 19:25:58 2024 From: huth at tuxfamily.org (Thomas Huth) Date: Thu, 16 May 2024 21:25:58 +0200 Subject: [Buildroot] [PATCH 1/1] package/frotz: fix build with gcc 14 In-Reply-To: <20240516163245.641115-1-fontaine.fabrice@gmail.com> References: <20240516163245.641115-1-fontaine.fabrice@gmail.com> Message-ID: <20240516212558.035e6aed@fedora> Am Thu, 16 May 2024 18:32:45 +0200 schrieb Fabrice Fontaine : > Drop -std=c99 from CFLAGS to avoid the following build failure with gcc > 14: > > fastmem.c: In function 'z_restore': > fastmem.c:842:36: error: implicit declaration of function 'strdup'; did you mean 'strcmp'? [-Wimplicit-function-declaration] > 842 | f_setup.aux_name = strdup(default_name); > | ^~~~~~ > | strcmp I'm pretty sure there was originally was a reason for using -std=c99 here ... could we maybe use -std=gnu99 instead of removing it? Thomas From giulio.benetti at benettiengineering.com Thu May 16 19:33:07 2024 From: giulio.benetti at benettiengineering.com (Giulio Benetti) Date: Thu, 16 May 2024 21:33:07 +0200 Subject: [Buildroot] [PATCH] package/harfbuzz: bump to version 8.5.0 Message-ID: <20240516193307.465413-1-giulio.benetti@benettiengineering.com> Signed-off-by: Giulio Benetti --- package/harfbuzz/harfbuzz.hash | 2 +- package/harfbuzz/harfbuzz.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/harfbuzz/harfbuzz.hash b/package/harfbuzz/harfbuzz.hash index 1ea54e8ee9..d5fc1ae096 100644 --- a/package/harfbuzz/harfbuzz.hash +++ b/package/harfbuzz/harfbuzz.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 af4ea73e25ab748c8c063b78c2f88e48833db9b2ac369e29bd115702e789755e harfbuzz-8.4.0.tar.xz +sha256 77e4f7f98f3d86bf8788b53e6832fb96279956e1c3961988ea3d4b7ca41ddc27 harfbuzz-8.5.0.tar.xz sha256 ba8f810f2455c2f08e2d56bb49b72f37fcf68f1f4fade38977cfd7372050ad64 COPYING diff --git a/package/harfbuzz/harfbuzz.mk b/package/harfbuzz/harfbuzz.mk index 848fac4dd6..3beac5e836 100644 --- a/package/harfbuzz/harfbuzz.mk +++ b/package/harfbuzz/harfbuzz.mk @@ -4,7 +4,7 @@ # ################################################################################ -HARFBUZZ_VERSION = 8.4.0 +HARFBUZZ_VERSION = 8.5.0 HARFBUZZ_SITE = https://github.com/harfbuzz/harfbuzz/releases/download/$(HARFBUZZ_VERSION) HARFBUZZ_SOURCE = harfbuzz-$(HARFBUZZ_VERSION).tar.xz HARFBUZZ_LICENSE = MIT, ISC (ucdn library) -- 2.34.1 From marc.murphy at sancloud.com Thu May 16 20:18:22 2024 From: marc.murphy at sancloud.com (Marc Murphy) Date: Thu, 16 May 2024 20:18:22 +0000 Subject: [Buildroot] [PATCH 1/1] package/ti-k3-r5-loader: support patching in same way as u-boot Message-ID: >From ed5da96fa289155a362e6415de39a461e18935e8 Mon Sep 17 00:00:00 2001 From: Marc Murphy Date: Thu, 16 May 2024 17:09:14 +0100 Subject: [PATCH 1/1] package/ti-k3-r5-loader: support patching in same way as u-boot Signed-off-by: Marc Murphy --- boot/ti-k3-r5-loader/Config.in | 12 ++++++++++++ boot/ti-k3-r5-loader/ti-k3-r5-loader.mk | 19 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/boot/ti-k3-r5-loader/Config.in b/boot/ti-k3-r5-loader/Config.in index c276528fad..0e26a15369 100644 --- a/boot/ti-k3-r5-loader/Config.in +++ b/boot/ti-k3-r5-loader/Config.in @@ -69,6 +69,18 @@ config BR2_TARGET_TI_K3_R5_LOADER_VERSION if BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_GIT || \ BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_HG || \ BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_SVN + +config BR2_TARGET_TI_K3_R5_LOADER_PATCH + string "Custom U-Boot patches" + default "" + help + A space-separated list of patches to apply to U-Boot. + Each patch can be described as an URL, a local file path, + or a directory. In the case of a directory, all files + matching *.patch in the directory will be applied. + + Most users may leave this empty + choice prompt "U-Boot Configuration" default BR2_TARGET_TI_K3_R5_LOADER_USE_DEFCONFIG diff --git a/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk b/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk index 98a6d473f1..b45f30b4b0 100644 --- a/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk +++ b/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk @@ -60,6 +60,25 @@ TI_K3_R5_LOADER_KCONFIG_DEPENDENCIES = \ $(BR2_BISON_HOST_DEPENDENCY) \ $(BR2_FLEX_HOST_DEPENDENCY) +# Analogous code exists in linux/linux.mk. Basically, the generic +# package infrastructure handles downloading and applying remote +# patches. Local patches are handled depending on whether they are +# directories or files. +TI_K3_R5_LOADER_PATCHES = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_PATCH)) +TI_K3_R5_LOADER_PATCH = $(filter ftp://% http://% https://%,$(TI_K3_R5_LOADER_PATCHES)) + +define TI_K3_R5_LOADER_APPLY_LOCAL_PATCHES + for p in $(filter-out ftp://% http://% https://%,$(TI_K3_R5_LOADER_PATCHES)) ; do \ + if test -d $$p ; then \ + $(APPLY_PATCHES) $(@D) $$p \*.patch || exit 1 ; \ + else \ + $(APPLY_PATCHES) $(@D) `dirname $$p` `basename $$p` || exit 1; \ + fi \ + done +endef + +TI_K3_R5_LOADER_POST_PATCH_HOOKS += TI_K3_R5_LOADER_APPLY_LOCAL_PATCHES + ifeq ($(BR2_TARGET_TI_K3_R5_LOADER_USE_DEFCONFIG),y) TI_K3_R5_LOADER_KCONFIG_DEFCONFIG = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_BOARD_DEFCONFIG))_defconfig else ifeq ($(BR2_TARGET_TI_K3_R5_LOADER_USE_CUSTOM_CONFIG),y) -- 2.25.1 From fontaine.fabrice at gmail.com Thu May 16 20:38:02 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Thu, 16 May 2024 22:38:02 +0200 Subject: [Buildroot] [PATCH 1/1] package/frotz: fix build with gcc 14 In-Reply-To: <20240516212558.035e6aed@fedora> References: <20240516163245.641115-1-fontaine.fabrice@gmail.com> <20240516212558.035e6aed@fedora> Message-ID: Le jeu. 16 mai 2024 ? 21:26, Thomas Huth a ?crit : > > Am Thu, 16 May 2024 18:32:45 +0200 > schrieb Fabrice Fontaine : > > > Drop -std=c99 from CFLAGS to avoid the following build failure with gcc > > 14: > > > > fastmem.c: In function 'z_restore': > > fastmem.c:842:36: error: implicit declaration of function 'strdup'; did you mean 'strcmp'? [-Wimplicit-function-declaration] > > 842 | f_setup.aux_name = strdup(default_name); > > | ^~~~~~ > > | strcmp > > I'm pretty sure there was originally was a reason for using -std=c99 here > ... could we maybe use -std=gnu99 instead of removing it? Sure, I'll let you test it and send a v2 ;-) > > Thomas Best Regards, Fabrice From geoff at infradead.org Wed May 1 02:53:05 2024 From: geoff at infradead.org (Geoff Levand) Date: Wed, 1 May 2024 11:53:05 +0900 Subject: [Buildroot] [PATCH] package/flannel: Bump to version 0.25.1 Message-ID: Signed-off-by: Geoff Levand diff --git a/package/flannel/flannel.hash b/package/flannel/flannel.hash index 2e0198debe..97700d37ec 100644 --- a/package/flannel/flannel.hash +++ b/package/flannel/flannel.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 98dde4eda016fec9aa6394cb4b283bdd972deda6ef9e1f2c3669dd2719ea1fe9 flannel-0.24.4.tar.gz +sha256 c0de130efa2b14bc0f057a17df07bfd61154b30ce4a5eca24594c5b533ce661d flannel-0.25.1.tar.gz sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/flannel/flannel.mk b/package/flannel/flannel.mk index 5cdfa0e09e..aa24644764 100644 --- a/package/flannel/flannel.mk +++ b/package/flannel/flannel.mk @@ -4,7 +4,7 @@ # ################################################################################ -FLANNEL_VERSION = 0.24.4 +FLANNEL_VERSION = 0.25.1 FLANNEL_SITE = $(call github,flannel-io,flannel,v$(FLANNEL_VERSION)) FLANNEL_LICENSE = Apache-2.0 From thomas.petazzoni at bootlin.com Wed May 1 03:59:29 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 01 May 2024 03:59:29 -0000 Subject: [Buildroot] [autobuild.buildroot.net] Daily results for 2024-04-30 Message-ID: Hello, Autobuild statistics for 2024-04-30 =================================== branch | OK | NOK | TIM | TOT | 2024.02.x | 10 | 4 | 0 | 14 | master | 19 | 37 | 0 | 56 | Classification of failures by reason for master ----------------------------------------------- apcupsd-3.14.14 | 5 libressl-3.8.4 | 4 unknown | 3 libcamera-apps-1.2.1 | 2 linux-6.8.6 | 2 asterisk-20.7.0 | 1 containerd-1.7.14 | 1 coreutils-9.3 | 1 dmraid-1.0.0.rc16-3 | 1 docker-cli-26.0.2 | 1 elfutils-0.189 | 1 freeipmi-1.6.14 | 1 gdk-pixbuf-2.42.10 | 1 gobject-introspection-1.76.1 | 1 host-delve-1.22.1 | 1 host-fakeroot-1.34 | 1 libffi-3.4.6 | 1 libgeotiff-1.7.1 | 1 libsepol-3.5 | 1 libvorbis-1.3.7 | 1 linux-5.10.162-cip24-rt10 | 1 linux-pam-1.6.0 | 1 ncmpc-0.49 | 1 package/python-pillow/pytho... | 1 python-grpcio-1.60.0 | 1 tpm2-tss-3.2.2 | 1 Detail of failures for master ----------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- sparc | apcupsd-3.14.14 | NOK | http://autobuild.buildroot.net/results/24e73bbccf35b20d131b88e24cc6efc5c724ac79 | s390x | apcupsd-3.14.14 | NOK | http://autobuild.buildroot.net/results/3a880ae8ffae5210041aad88790976902183b278 | arc | apcupsd-3.14.14 | NOK | http://autobuild.buildroot.net/results/3327ccaa36ba465006d0564f02d75dfd3451c349 | arm | apcupsd-3.14.14 | NOK | http://autobuild.buildroot.net/results/12e6ce21f5920becf71fc2a7180e00bdc8800931 | powerpc | apcupsd-3.14.14 | NOK | http://autobuild.buildroot.net/results/a89bafbc93d482b6bcf6548a77abdcd708d71b30 | sparc | asterisk-20.7.0 | NOK | http://autobuild.buildroot.net/results/d16e4ca4bd26234f84d17da24c04a8c19faba6c5 | riscv64 | containerd-1.7.14 | NOK | http://autobuild.buildroot.net/results/1b4fbebbb366f8267b114324320f48915c9ea9d3 | arc | coreutils-9.3 | NOK | http://autobuild.buildroot.net/results/e80bef4b58e096487901fa9af8ed5754cd6d31ff | ORPH mipsel | dmraid-1.0.0.rc16-3 | NOK | http://autobuild.buildroot.net/results/027a4aac2fbe5a5155714a5ccb179aacd40fb959 | ORPH riscv64 | docker-cli-26.0.2 | NOK | http://autobuild.buildroot.net/results/a14a3e666648c54c3764a693e252abed28a82d19 | microblaze | elfutils-0.189 | NOK | http://autobuild.buildroot.net/results/0f0bc6c0ef52a6cbbca2e763f75bfeaf99bb2452 | ORPH sh4 | freeipmi-1.6.14 | NOK | http://autobuild.buildroot.net/results/918e041885d4765496be72b41d4c7a540621711d | microblaze | gdk-pixbuf-2.42.10 | NOK | http://autobuild.buildroot.net/results/72a02676abbe55050e7ed11e847fe5ab003d4dbe | ORPH m68k | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/5fc7b6b84dc293ac4bcd5a450ffa6e09285d21bf | ORPH arm | host-delve-1.22.1 | NOK | http://autobuild.buildroot.net/results/fe63967abf6b081140552b2e922632bd82709d61 | mips64el | host-fakeroot-1.34 | NOK | http://autobuild.buildroot.net/results/3eed99fbd4ad111eab4ff8477b50c942f0686a9f | ORPH s390x | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/66a2e5c6df5d4ac5cda16ec41d559095b021404a | aarch64 | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/5eb014e211ee4a93b5e4ccb53132fb2796cdf8ea | arceb | libffi-3.4.6 | NOK | http://autobuild.buildroot.net/results/ed4c6a3ffcc1cf909e22f7a8b8750387a018199f | or1k | libgeotiff-1.7.1 | NOK | http://autobuild.buildroot.net/results/492f6e71e82eebd5dbbd95f12df2eb41016cbeac | m68k | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/9d2fa14df8bba3cb9c00e9cc697fb90117e0ff0b | ORPH mips64 | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/4a233cc3a62d7f1eadd82c92b2c37d3b6e17d184 | ORPH microblazeel | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/5168ff125ce1af1931e4cc4d916e4fb047ed56f8 | ORPH powerpc64le | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/25c8591bebfcbddd57d3860eca70b7afa4814de3 | ORPH armeb | libsepol-3.5 | NOK | http://autobuild.buildroot.net/results/e2921d3ca5a91b6a761896cccb6e559588523e32 | powerpc | libvorbis-1.3.7 | NOK | http://autobuild.buildroot.net/results/efaaa54b4efef029654a629df372139cfe797be4 | microblaze | linux-5.10.162-cip24-rt10 | NOK | http://autobuild.buildroot.net/results/e590b7884fbad5d311da87ae8cbea0140b15ba67 | ORPH microblazeel | linux-6.8.6 | NOK | http://autobuild.buildroot.net/results/a7409d0c6550c6502d1feb919f69f8e4b2d3cf20 | ORPH powerpc | linux-6.8.6 | NOK | http://autobuild.buildroot.net/results/94defc2db527d060100202cd6ebce060833d6a1e | ORPH arceb | linux-pam-1.6.0 | NOK | http://autobuild.buildroot.net/results/856ae5ee8241e8b2b6a787c2dc2180143bfb29a2 | ORPH aarch64_be | ncmpc-0.49 | NOK | http://autobuild.buildroot.net/results/d3fcf3e09d990ad57c23616e23be523f8ea3c12b | mipsel | package/python-pillow/pytho... | NOK | http://autobuild.buildroot.net/results/4c933419c0dc6f5ab5ca9f5bf99eb87ea38d79b4 | i586 | python-grpcio-1.60.0 | NOK | http://autobuild.buildroot.net/results/5a2594a3e7ccb80368cb0dc58ac34017c3e170be | sh4 | tpm2-tss-3.2.2 | NOK | http://autobuild.buildroot.net/results/8619963db75c9929e3a29019f045e90eb023387e | ORPH powerpc | unknown | NOK | http://autobuild.buildroot.net/results/ceadc2af25de8412a5626df4451753c058d773be | i686 | unknown | NOK | http://autobuild.buildroot.net/results/30b07951651703ce93e055256a5975496aea7277 | nios2 | unknown | NOK | http://autobuild.buildroot.net/results/b7a35699d60a923db6c8930a94ed91610cb2a830 | Classification of failures by reason for 2024.02.x -------------------------------------------------- host-heimdal-f4faaeaba371ff... | 1 libarchive-3.7.2 | 1 libressl-3.8.2 | 1 unknown | 1 Detail of failures for 2024.02.x -------------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- mips64el | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/db0eb2b709881a75d352147170ecf4d1b5b19164 | ORPH powerpc | libarchive-3.7.2 | NOK | http://autobuild.buildroot.net/results/8d40d4d6bc7b5f9d2f5c3f00eea7c0ecd3de0517 | arceb | libressl-3.8.2 | NOK | http://autobuild.buildroot.net/results/b549e57b9a37c095749cd0a7edc144668b319d75 | ORPH arm | unknown | NOK | http://autobuild.buildroot.net/results/b893f5b56a3078ed10332b0f72d297d1a325094a | -- http://autobuild.buildroot.net From bugzilla at busybox.net Wed May 1 05:30:52 2024 From: bugzilla at busybox.net (bugzilla at busybox.net) Date: Wed, 01 May 2024 05:30:52 +0000 Subject: [Buildroot] [Bug 16027] problems building on fedora-40 In-Reply-To: References: Message-ID: https://bugs.busybox.net/show_bug.cgi?id=16027 swerve_olive366 at simplelogin.com changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|INVALID |--- Status|RESOLVED |REOPENED --- Comment #6 from swerve_olive366 at simplelogin.com --- Indeed, ncurses is working again. What about the error in comment #2? Is it working for you? I have fedora 40 too, but after running `make` I still get an error: Unknown option 'passive-ftp' make: *** [package/pkg-generic.mk:179: /buildroot/output/build/host-pkgconf-1.6.3/.stamp_downloaded] Error 1 -- You are receiving this mail because: You are on the CC list for the bug. From bugzilla at busybox.net Wed May 1 07:25:58 2024 From: bugzilla at busybox.net (bugzilla at busybox.net) Date: Wed, 01 May 2024 07:25:58 +0000 Subject: [Buildroot] [Bug 16027] problems building on fedora-40 In-Reply-To: References: Message-ID: https://bugs.busybox.net/show_bug.cgi?id=16027 --- Comment #7 from stsp --- Ah, completely forgot about this one! Since menuconfig now works, please navigate to "Build options" -> "Commands" -> "Wget command" and remove "passive-ftp" from there. -- You are receiving this mail because: You are on the CC list for the bug. From buildroot at busybox.net Wed May 1 07:46:36 2024 From: buildroot at busybox.net (cPanel on busybox.net) Date: 1 May 2024 10:46:36 +0300 Subject: [Buildroot] =?utf-8?q?WARNING=3A_The_=E2=80=9C?= Message-ID: <20240501104636.CDAA08F338AC01B7@busybox.net> An HTML attachment was scrubbed... URL: From dm.chestnykh at gmail.com Wed May 1 09:23:26 2024 From: dm.chestnykh at gmail.com (Dmitry Chestnykh) Date: Wed, 1 May 2024 12:23:26 +0300 Subject: [Buildroot] [PATCH 1/3] package/uclibc: Bump to 1.0.48. Message-ID: <20240501092328.323236-1-dm.chestnykh@gmail.com> In 1.0.48 release uClibc-ng has provided the fix for SPARC related to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784 Signed-off-by: Dmitry Chestnykh --- package/uclibc/uclibc.hash | 4 ++-- package/uclibc/uclibc.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/uclibc/uclibc.hash b/package/uclibc/uclibc.hash index a10ceab54c..571bb7333c 100644 --- a/package/uclibc/uclibc.hash +++ b/package/uclibc/uclibc.hash @@ -1,4 +1,4 @@ -# From https://downloads.uclibc-ng.org/releases/1.0.47/uClibc-ng-1.0.47.tar.xz.sha256 -sha256 29a4d684a06da344ee3ee09acc2ca7649d592ae3ff848f698145c46def05efcb uClibc-ng-1.0.47.tar.xz +# From https://downloads.uclibc-ng.org/releases/1.0.47/uClibc-ng-1.0.48.tar.xz.sha256 +sha256 3bf5fc6cc5cbc454b6c478424755c6f71e7c15578a2c966f02606aa5c5596e21 uClibc-ng-1.0.48.tar.xz # Locally calculated sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 COPYING.LIB diff --git a/package/uclibc/uclibc.mk b/package/uclibc/uclibc.mk index a7b18133ff..9593e18d45 100644 --- a/package/uclibc/uclibc.mk +++ b/package/uclibc/uclibc.mk @@ -4,7 +4,7 @@ # ################################################################################ -UCLIBC_VERSION = 1.0.47 +UCLIBC_VERSION = 1.0.48 UCLIBC_SOURCE = uClibc-ng-$(UCLIBC_VERSION).tar.xz UCLIBC_SITE = https://downloads.uclibc-ng.org/releases/$(UCLIBC_VERSION) UCLIBC_LICENSE = LGPL-2.1+ -- 2.44.0 From dm.chestnykh at gmail.com Wed May 1 09:23:27 2024 From: dm.chestnykh at gmail.com (Dmitry Chestnykh) Date: Wed, 1 May 2024 12:23:27 +0300 Subject: [Buildroot] [PATCH 2/3] configs/qemu_sparc_ss10_defconfig: Restore. In-Reply-To: <20240501092328.323236-1-dm.chestnykh@gmail.com> References: <20240501092328.323236-1-dm.chestnykh@gmail.com> Message-ID: <20240501092328.323236-2-dm.chestnykh@gmail.com> With uClibc-ng-1.0.48 we can restore this config because now sparc systems work without reverting GCC commits. Signed-off-by: Dmitry Chestnykh --- arch/Config.in | 5 ----- configs/qemu_sparc_ss10_defconfig | 28 ++++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 configs/qemu_sparc_ss10_defconfig diff --git a/arch/Config.in b/arch/Config.in index 9912f9fce6..e7349e83ae 100644 --- a/arch/Config.in +++ b/arch/Config.in @@ -216,11 +216,6 @@ config BR2_sh config BR2_sparc bool "SPARC" select BR2_USE_MMU - # uClibc-ng broken on sparc due to recent gcc changes - # that need to be reverted since gcc 8.4, 9.3 and 10.1. - # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784 - # gcc <= 10.x has been removed from Buildroot. - select BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT help SPARC (from Scalable Processor Architecture) is a RISC instruction set architecture (ISA) developed by Sun diff --git a/configs/qemu_sparc_ss10_defconfig b/configs/qemu_sparc_ss10_defconfig new file mode 100644 index 0000000000..a8e3df9180 --- /dev/null +++ b/configs/qemu_sparc_ss10_defconfig @@ -0,0 +1,28 @@ +# Architecture +BR2_sparc=y +BR2_sparc_v8=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_AS_KERNEL=y + +# Linux kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.6" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sparc-ss10/linux.config" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y -- 2.44.0 From dm.chestnykh at gmail.com Wed May 1 09:23:28 2024 From: dm.chestnykh at gmail.com (Dmitry Chestnykh) Date: Wed, 1 May 2024 12:23:28 +0300 Subject: [Buildroot] [PATCH 3/3] package/gcc: Remove unneeded patch. In-Reply-To: <20240501092328.323236-1-dm.chestnykh@gmail.com> References: <20240501092328.323236-1-dm.chestnykh@gmail.com> Message-ID: <20240501092328.323236-3-dm.chestnykh@gmail.com> sparc systems work with uClibc-ng-1.0.48. Signed-off-by: Dmitry Chestnykh --- ...get-92095-internal-error-with-O1-mcp.patch | 322 ------------------ 1 file changed, 322 deletions(-) delete mode 100644 package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch diff --git a/package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch b/package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch deleted file mode 100644 index ec2bf8835d..0000000000 --- a/package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch +++ /dev/null @@ -1,322 +0,0 @@ -From bb9b71752267444b4360442b89129bfc0ae938d3 Mon Sep 17 00:00:00 2001 -From: Romain Naour -Date: Wed, 20 Jan 2021 23:06:07 +0100 -Subject: [PATCH] Revert "re PR target/92095 (internal error with -O1 - -mcpu=niagara2 -fPIE)" - -This reverts commit 3fcce773f0f914c0499b130c6e9efa0e45ee54a0. - -Building the Buildroot defconfig qemu_sparc_ss10_defconfig using -gcc 8.4, 9.3 and 10 produce a broken rootfs that trigger illegal -instruction messages. - -gcc 8.3, 9.2 are the latest working gcc version. -git bisect between gcc 8.4 and 8.4 allowed to identify -the commit that introcuce the regression. - -Reverting this patch allowed to produce a working rootfs. - -Signed-off-by: Romain Naour -Cc: Eric Botcazou ---- - gcc/config/sparc/sparc-protos.h | 1 - - gcc/config/sparc/sparc.c | 121 +++++++----------- - gcc/config/sparc/sparc.md | 5 +- - .../gcc.c-torture/compile/20191108-1.c | 14 -- - gcc/testsuite/gcc.target/sparc/overflow-3.c | 2 +- - gcc/testsuite/gcc.target/sparc/overflow-4.c | 2 +- - gcc/testsuite/gcc.target/sparc/overflow-5.c | 2 +- - 7 files changed, 53 insertions(+), 94 deletions(-) - delete mode 100644 gcc/testsuite/gcc.c-torture/compile/20191108-1.c - -diff --git a/gcc/config/sparc/sparc-protos.h b/gcc/config/sparc/sparc-protos.h -index b3f73c2f2bf..71a067e871c 100644 ---- a/gcc/config/sparc/sparc-protos.h -+++ b/gcc/config/sparc/sparc-protos.h -@@ -69,7 +69,6 @@ extern void sparc_split_reg_mem (rtx, rtx, machine_mode); - extern void sparc_split_mem_reg (rtx, rtx, machine_mode); - extern int sparc_split_reg_reg_legitimate (rtx, rtx); - extern void sparc_split_reg_reg (rtx, rtx, machine_mode); --extern const char *output_load_pcrel_sym (rtx *); - extern const char *output_ubranch (rtx, rtx_insn *); - extern const char *output_cbranch (rtx, rtx, int, int, int, rtx_insn *); - extern const char *output_return (rtx_insn *); -diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c -index 73032d33596..db1b428db90 100644 ---- a/gcc/config/sparc/sparc.c -+++ b/gcc/config/sparc/sparc.c -@@ -4200,6 +4200,13 @@ eligible_for_sibcall_delay (rtx_insn *trial) - static bool - sparc_cannot_force_const_mem (machine_mode mode, rtx x) - { -+ /* After IRA has run in PIC mode, it is too late to put anything into the -+ constant pool if the PIC register hasn't already been initialized. */ -+ if ((lra_in_progress || reload_in_progress) -+ && flag_pic -+ && !crtl->uses_pic_offset_table) -+ return true; -+ - switch (GET_CODE (x)) - { - case CONST_INT: -@@ -4235,11 +4242,9 @@ sparc_cannot_force_const_mem (machine_mode mode, rtx x) - } - - /* Global Offset Table support. */ --static GTY(()) rtx got_symbol_rtx = NULL_RTX; --static GTY(()) rtx got_register_rtx = NULL_RTX; - static GTY(()) rtx got_helper_rtx = NULL_RTX; -- --static GTY(()) bool got_helper_needed = false; -+static GTY(()) rtx got_register_rtx = NULL_RTX; -+static GTY(()) rtx got_symbol_rtx = NULL_RTX; - - /* Return the SYMBOL_REF for the Global Offset Table. */ - -@@ -4252,6 +4257,27 @@ sparc_got (void) - return got_symbol_rtx; - } - -+#ifdef HAVE_GAS_HIDDEN -+# define USE_HIDDEN_LINKONCE 1 -+#else -+# define USE_HIDDEN_LINKONCE 0 -+#endif -+ -+static void -+get_pc_thunk_name (char name[32], unsigned int regno) -+{ -+ const char *reg_name = reg_names[regno]; -+ -+ /* Skip the leading '%' as that cannot be used in a -+ symbol name. */ -+ reg_name += 1; -+ -+ if (USE_HIDDEN_LINKONCE) -+ sprintf (name, "__sparc_get_pc_thunk.%s", reg_name); -+ else -+ ASM_GENERATE_INTERNAL_LABEL (name, "LADDPC", regno); -+} -+ - /* Wrapper around the load_pcrel_sym{si,di} patterns. */ - - static rtx -@@ -4271,78 +4297,30 @@ gen_load_pcrel_sym (rtx op0, rtx op1, rtx op2) - return insn; - } - --/* Output the load_pcrel_sym{si,di} patterns. */ -- --const char * --output_load_pcrel_sym (rtx *operands) --{ -- if (flag_delayed_branch) -- { -- output_asm_insn ("sethi\t%%hi(%a1-4), %0", operands); -- output_asm_insn ("call\t%a2", operands); -- output_asm_insn (" add\t%0, %%lo(%a1+4), %0", operands); -- } -- else -- { -- output_asm_insn ("sethi\t%%hi(%a1-8), %0", operands); -- output_asm_insn ("add\t%0, %%lo(%a1-4), %0", operands); -- output_asm_insn ("call\t%a2", operands); -- output_asm_insn (" nop", NULL); -- } -- -- if (operands[2] == got_helper_rtx) -- got_helper_needed = true; -- -- return ""; --} -- --#ifdef HAVE_GAS_HIDDEN --# define USE_HIDDEN_LINKONCE 1 --#else --# define USE_HIDDEN_LINKONCE 0 --#endif -- - /* Emit code to load the GOT register. */ - - void - load_got_register (void) - { -- rtx insn; -+ if (!got_register_rtx) -+ got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM); - - if (TARGET_VXWORKS_RTP) -- { -- if (!got_register_rtx) -- got_register_rtx = pic_offset_table_rtx; -- -- insn = gen_vxworks_load_got (); -- } -+ emit_insn (gen_vxworks_load_got ()); - else - { -- if (!got_register_rtx) -- got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM); -- - /* The GOT symbol is subject to a PC-relative relocation so we need a - helper function to add the PC value and thus get the final value. */ - if (!got_helper_rtx) - { - char name[32]; -- -- /* Skip the leading '%' as that cannot be used in a symbol name. */ -- if (USE_HIDDEN_LINKONCE) -- sprintf (name, "__sparc_get_pc_thunk.%s", -- reg_names[REGNO (got_register_rtx)] + 1); -- else -- ASM_GENERATE_INTERNAL_LABEL (name, "LADDPC", -- REGNO (got_register_rtx)); -- -+ get_pc_thunk_name (name, GLOBAL_OFFSET_TABLE_REGNUM); - got_helper_rtx = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name)); - } - -- insn -- = gen_load_pcrel_sym (got_register_rtx, sparc_got (), got_helper_rtx); -+ emit_insn (gen_load_pcrel_sym (got_register_rtx, sparc_got (), -+ got_helper_rtx)); - } -- -- emit_insn (insn); - } - - /* Ensure that we are not using patterns that are not OK with PIC. */ -@@ -5494,7 +5472,7 @@ save_local_or_in_reg_p (unsigned int regno, int leaf_function) - return true; - - /* GOT register (%l7) if needed. */ -- if (got_register_rtx && regno == REGNO (got_register_rtx)) -+ if (regno == GLOBAL_OFFSET_TABLE_REGNUM && got_register_rtx) - return true; - - /* If the function accesses prior frames, the frame pointer and the return -@@ -12475,9 +12453,10 @@ static void - sparc_file_end (void) - { - /* If we need to emit the special GOT helper function, do so now. */ -- if (got_helper_needed) -+ if (got_helper_rtx) - { - const char *name = XSTR (got_helper_rtx, 0); -+ const char *reg_name = reg_names[GLOBAL_OFFSET_TABLE_REGNUM]; - #ifdef DWARF2_UNWIND_INFO - bool do_cfi; - #endif -@@ -12514,22 +12493,17 @@ sparc_file_end (void) - #ifdef DWARF2_UNWIND_INFO - do_cfi = dwarf2out_do_cfi_asm (); - if (do_cfi) -- output_asm_insn (".cfi_startproc", NULL); -+ fprintf (asm_out_file, "\t.cfi_startproc\n"); - #endif - if (flag_delayed_branch) -- { -- output_asm_insn ("jmp\t%%o7+8", NULL); -- output_asm_insn (" add\t%%o7, %0, %0", &got_register_rtx); -- } -+ fprintf (asm_out_file, "\tjmp\t%%o7+8\n\t add\t%%o7, %s, %s\n", -+ reg_name, reg_name); - else -- { -- output_asm_insn ("add\t%%o7, %0, %0", &got_register_rtx); -- output_asm_insn ("jmp\t%%o7+8", NULL); -- output_asm_insn (" nop", NULL); -- } -+ fprintf (asm_out_file, "\tadd\t%%o7, %s, %s\n\tjmp\t%%o7+8\n\t nop\n", -+ reg_name, reg_name); - #ifdef DWARF2_UNWIND_INFO - if (do_cfi) -- output_asm_insn (".cfi_endproc", NULL); -+ fprintf (asm_out_file, "\t.cfi_endproc\n"); - #endif - } - -@@ -13035,10 +13009,7 @@ sparc_init_pic_reg (void) - edge entry_edge; - rtx_insn *seq; - -- /* In PIC mode, we need to always initialize the PIC register if optimization -- is enabled, because we are called from IRA and LRA may later force things -- to the constant pool for optimization purposes. */ -- if (!flag_pic || (!crtl->uses_pic_offset_table && !optimize)) -+ if (!crtl->uses_pic_offset_table) - return; - - start_sequence (); -diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md -index 468e2cc5d3b..25134bd1148 100644 ---- a/gcc/config/sparc/sparc.md -+++ b/gcc/config/sparc/sparc.md -@@ -1601,7 +1601,10 @@ - (clobber (reg:P O7_REG))] - "REGNO (operands[0]) == INTVAL (operands[3])" - { -- return output_load_pcrel_sym (operands); -+ if (flag_delayed_branch) -+ return "sethi\t%%hi(%a1-4), %0\n\tcall\t%a2\n\t add\t%0, %%lo(%a1+4), %0"; -+ else -+ return "sethi\t%%hi(%a1-8), %0\n\tadd\t%0, %%lo(%a1-4), %0\n\tcall\t%a2\n\t nop"; - } - [(set (attr "type") (const_string "multi")) - (set (attr "length") -diff --git a/gcc/testsuite/gcc.c-torture/compile/20191108-1.c b/gcc/testsuite/gcc.c-torture/compile/20191108-1.c -deleted file mode 100644 -index 7929751bb06..00000000000 ---- a/gcc/testsuite/gcc.c-torture/compile/20191108-1.c -+++ /dev/null -@@ -1,14 +0,0 @@ --/* PR target/92095 */ --/* Testcase by Sergei Trofimovich */ -- --typedef union { -- double a; -- int b[2]; --} c; -- --double d(int e) --{ -- c f; -- (&f)->b[0] = 15728640; -- return e ? -(&f)->a : (&f)->a; --} -diff --git a/gcc/testsuite/gcc.target/sparc/overflow-3.c b/gcc/testsuite/gcc.target/sparc/overflow-3.c -index 18253bb6e5e..8cb24f52f7b 100644 ---- a/gcc/testsuite/gcc.target/sparc/overflow-3.c -+++ b/gcc/testsuite/gcc.target/sparc/overflow-3.c -@@ -1,5 +1,5 @@ - /* { dg-do compile } */ --/* { dg-options "-O -fno-pie" } */ -+/* { dg-options "-O" } */ - /* { dg-require-effective-target lp64 } */ - - #include -diff --git a/gcc/testsuite/gcc.target/sparc/overflow-4.c b/gcc/testsuite/gcc.target/sparc/overflow-4.c -index fb30877efb9..868edea2b9e 100644 ---- a/gcc/testsuite/gcc.target/sparc/overflow-4.c -+++ b/gcc/testsuite/gcc.target/sparc/overflow-4.c -@@ -1,5 +1,5 @@ - /* { dg-do compile } */ --/* { dg-options "-O -fno-pie -mno-vis3" } */ -+/* { dg-options "-O -mno-vis3" } */ - /* { dg-require-effective-target lp64 } */ - - #include -diff --git a/gcc/testsuite/gcc.target/sparc/overflow-5.c b/gcc/testsuite/gcc.target/sparc/overflow-5.c -index 509d957715d..501ce04f7a1 100644 ---- a/gcc/testsuite/gcc.target/sparc/overflow-5.c -+++ b/gcc/testsuite/gcc.target/sparc/overflow-5.c -@@ -1,5 +1,5 @@ - /* { dg-do compile } */ --/* { dg-options "-O -fno-pie -mvis3" } */ -+/* { dg-options "-O -mvis3" } */ - /* { dg-require-effective-target lp64 } */ - - #include --- -2.25.4 - -- 2.44.0 From dm.chestnykh at gmail.com Wed May 1 09:37:25 2024 From: dm.chestnykh at gmail.com (Dmitry Chestnykh) Date: Wed, 1 May 2024 12:37:25 +0300 Subject: [Buildroot] [PATCH v2 1/3] package/uclibc: Bump to 1.0.48. Message-ID: <20240501093725.325194-1-dm.chestnykh@gmail.com> In 1.0.48 release uClibc-ng has provided the fix for SPARC related to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784 Signed-off-by: Dmitry Chestnykh --- package/uclibc/uclibc.hash | 6 +++--- package/uclibc/uclibc.mk | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/uclibc/uclibc.hash b/package/uclibc/uclibc.hash index a10ceab54c..7097bbf99a 100644 --- a/package/uclibc/uclibc.hash +++ b/package/uclibc/uclibc.hash @@ -1,4 +1,4 @@ -# From https://downloads.uclibc-ng.org/releases/1.0.47/uClibc-ng-1.0.47.tar.xz.sha256 -sha256 29a4d684a06da344ee3ee09acc2ca7649d592ae3ff848f698145c46def05efcb uClibc-ng-1.0.47.tar.xz +# From https://downloads.uclibc-ng.org/releases/1.0.47/uClibc-ng-1.0.48.tar.xz.sha256 +sha256 3bf5fc6cc5cbc454b6c478424755c6f71e7c15578a2c966f02606aa5c5596e21 uClibc-ng-1.0.48.tar.xz # Locally calculated -sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 COPYING.LIB +sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING.LIB diff --git a/package/uclibc/uclibc.mk b/package/uclibc/uclibc.mk index a7b18133ff..9593e18d45 100644 --- a/package/uclibc/uclibc.mk +++ b/package/uclibc/uclibc.mk @@ -4,7 +4,7 @@ # ################################################################################ -UCLIBC_VERSION = 1.0.47 +UCLIBC_VERSION = 1.0.48 UCLIBC_SOURCE = uClibc-ng-$(UCLIBC_VERSION).tar.xz UCLIBC_SITE = https://downloads.uclibc-ng.org/releases/$(UCLIBC_VERSION) UCLIBC_LICENSE = LGPL-2.1+ -- 2.44.0 From bugzilla at busybox.net Wed May 1 09:53:51 2024 From: bugzilla at busybox.net (bugzilla at busybox.net) Date: Wed, 01 May 2024 09:53:51 +0000 Subject: [Buildroot] [Bug 16027] problems building on fedora-40 In-Reply-To: References: Message-ID: https://bugs.busybox.net/show_bug.cgi?id=16027 Yann E. MORIN changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |yann.morin.1998 at free.fr --- Comment #8 from Yann E. MORIN --- stsp, All, Thanks for the report. The menuconfig issue has been fixed with commit a6210d28db (kconfig/lxdialog: fix check() with GCC14). As for the wget issue, please refer to the release notes of your distribution: https://docs.fedoraproject.org/en-US/fedora/latest/release-notes/ Quoting: The wget command in Fedora 40 uses Wget2. Amd a little trivial web-search turns up: https://fedoraproject.org/wiki/Changes/Wget2asWget And of course, it all quickly leads to: https://gitlab.com/gnuwget/wget2/-/wikis/Home#different-behavior-of-wget2 The current workaround is indeed to remove --passive-ftp from the wget command line, but thisis not a vial long-term solution, because it means it is no longer possible to do ftp downloads (which although legacy, still exist). The proper solution would be to contribute a patch that solves the issue. I think a good solution would be two fold: - introduce a new download backend specifically for ftp - drop --passive-ftp from the default wget command line Regards, Yann E. MORIN. -- You are receiving this mail because: You are on the CC list for the bug. From bugzilla at busybox.net Wed May 1 10:08:04 2024 From: bugzilla at busybox.net (bugzilla at busybox.net) Date: Wed, 01 May 2024 10:08:04 +0000 Subject: [Buildroot] [Bug 16027] problems building on fedora-40 In-Reply-To: References: Message-ID: https://bugs.busybox.net/show_bug.cgi?id=16027 --- Comment #9 from stsp --- How about just switching to curl, instead of playing around the legacy stuff as wget is? Ok maybe wget2 is not legacy, but you never know, as now debian-based distros will have wget1, and fedora-based - wget2, all under the same name. -- You are receiving this mail because: You are on the CC list for the bug. From dario.binacchi at amarulasolutions.com Wed May 1 12:00:49 2024 From: dario.binacchi at amarulasolutions.com (Dario Binacchi) Date: Wed, 1 May 2024 14:00:49 +0200 Subject: [Buildroot] [PATCH 1/2] package/qemu: fix disabling fp-bench test compilation Message-ID: <20240501120050.670109-1-dario.binacchi@amarulasolutions.com> With the bump to version 8.1.1, the patch that disabled the compilation of the fp-bench test is no longer applicable, even though the package compilation process does not report any errors in applying the patch itself. The new patch does not disable the test by default but only if the file fenv.h is not missing, with the hope that this approach will be considered acceptable by the maintainer and merged upstream. The patch is an adaptation of the one sent upstream. Signed-off-by: Dario Binacchi --- .checkpackageignore | 2 +- ...fp-disable-fp-bench-build-by-default.patch | 28 ----------- ...on-t-build-fp-bench-test-if-fenv.h-i.patch | 49 +++++++++++++++++++ 3 files changed, 50 insertions(+), 29 deletions(-) delete mode 100644 package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch create mode 100644 package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch diff --git a/.checkpackageignore b/.checkpackageignore index 1b336ce7a3ee..c16e17cc35e4 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -1073,7 +1073,7 @@ package/python3/0028-fix-building-on-older-distributions.patch lib_patch.Upstrea package/python3/0029-configure.ac-fixup-CC-print-multiarch-output-for-mus.patch lib_patch.Upstream package/python3/0030-Add-an-option-to-disable-the-berkeleydb-module.patch lib_patch.Upstream package/python3/0031-lib-crypt-uClibc-ng-doesn-t-set-errno-when-encryptio.patch lib_patch.Upstream -package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch lib_patch.Upstream +package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch lib_patch.Upstream package/qemu/0002-softmmu-qemu-seccomp.c-add-missing-header-for-CLONE_.patch lib_patch.Upstream package/qextserialport/0001-Create-a-main-include-file-QExtSerialPort.patch lib_patch.Upstream package/qextserialport/0002-Tell-qmake-to-add-a-pkgconfig-file-to-ease-usage-wit.patch lib_patch.Upstream diff --git a/package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch b/package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch deleted file mode 100644 index fb7a9a69897b..000000000000 --- a/package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 83d976d6d7f0357659d5daa0f01c52048a609e88 Mon Sep 17 00:00:00 2001 -From: Romain Naour -Date: Wed, 25 Aug 2021 21:55:53 +0200 -Subject: [PATCH] tests/fp: disable fp-bench build by default - -Fixes: -https://lists.nongnu.org/archive/html/qemu-devel/2021-03/msg00947.html - -Signed-off-by: Romain Naour ---- - tests/fp/meson.build | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/tests/fp/meson.build b/tests/fp/meson.build -index 8bd0979f67..2fe019d2c6 100644 ---- a/tests/fp/meson.build -+++ b/tests/fp/meson.build -@@ -640,6 +640,7 @@ fpbench = executable( - dependencies: [qemuutil], - include_directories: [sfinc, include_directories(tfdir)], - c_args: fpcflags, -+ build_by_default: false, - ) - - fptestlog2 = executable( --- -2.35.1 - diff --git a/package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch b/package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch new file mode 100644 index 000000000000..836754ba231a --- /dev/null +++ b/package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch @@ -0,0 +1,49 @@ +From b4a692f46135af1011bf0adbfeb19abf354ca191 Mon Sep 17 00:00:00 2001 +From: Dario Binacchi +Date: Tue, 30 Apr 2024 09:40:55 +0200 +Subject: [PATCH] tests/fp/meson: don't build fp-bench test if fenv.h is + missing + +The fp-bench test (i. e. tests/fp/fp-bench.c) use fenv.h that is not +always provided by the libc (uClibc). The patch disables its compilation +in case the header is not available. + +The patch is based on a suggestion from Paolo Bonzini, which you can +find at the following link. + +Link: https://lists.nongnu.org/archive/html/qemu-devel/2021-03/msg00492.html +Suggested-by: Paolo Bonzini +Signed-off-by: Dario Binacchi +[Upstream status: https://patchwork.ozlabs.org/project/qemu-devel/patch/20240430164752.645521-1-dario.binacchi at amarulasolutions.com/] +--- + tests/fp/meson.build | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +diff --git a/tests/fp/meson.build b/tests/fp/meson.build +index cbc17392d678..cd052667e940 100644 +--- a/tests/fp/meson.build ++++ b/tests/fp/meson.build +@@ -126,12 +126,14 @@ test('fp-test-mulAdd', fptest, + ['f16_mulAdd', 'f32_mulAdd', 'f64_mulAdd', 'f128_mulAdd'], + suite: ['softfloat-slow', 'softfloat-ops-slow', 'slow'], timeout: 90) + +-executable( +- 'fp-bench', +- ['fp-bench.c', '../../fpu/softfloat.c'], +- dependencies: [qemuutil, libtestfloat, libsoftfloat], +- c_args: fpcflags, +-) ++if cc.has_header('fenv.h') ++ executable( ++ 'fp-bench', ++ ['fp-bench.c', '../../fpu/softfloat.c'], ++ dependencies: [qemuutil, libtestfloat, libsoftfloat], ++ c_args: fpcflags, ++ ) ++endif + + fptestlog2 = executable( + 'fp-test-log2', +-- +2.43.0 + -- 2.43.0 From dario.binacchi at amarulasolutions.com Wed May 1 12:00:50 2024 From: dario.binacchi at amarulasolutions.com (Dario Binacchi) Date: Wed, 1 May 2024 14:00:50 +0200 Subject: [Buildroot] [PATCH 2/2] package/qemu: renumber patch In-Reply-To: <20240501120050.670109-1-dario.binacchi@amarulasolutions.com> References: <20240501120050.670109-1-dario.binacchi@amarulasolutions.com> Message-ID: <20240501120050.670109-2-dario.binacchi@amarulasolutions.com> Commit 3fa1ae00681ca ("package/qemu: add option to enable tracing") added a patch with a wrong number. The patch also updates the upstream trailer of the renumbered patch to ensure successful completion of the `utils/docker-run make check-package` command checks. The patch also modifies the upstream trailer of the renumbered patch to successfully pass the checks of the `utils/docker-run make check-package` command. Signed-off-by: Dario Binacchi --- .checkpackageignore | 1 + ...3-tracing-install-trace-events-file-only-if-necessary.patch} | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) rename package/qemu/{0004-tracing-install-trace-events-file-only-if-necessary.patch => 0003-tracing-install-trace-events-file-only-if-necessary.patch} (90%) diff --git a/.checkpackageignore b/.checkpackageignore index c16e17cc35e4..e4f9139d665a 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -1075,6 +1075,7 @@ package/python3/0030-Add-an-option-to-disable-the-berkeleydb-module.patch lib_pa package/python3/0031-lib-crypt-uClibc-ng-doesn-t-set-errno-when-encryptio.patch lib_patch.Upstream package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch lib_patch.Upstream package/qemu/0002-softmmu-qemu-seccomp.c-add-missing-header-for-CLONE_.patch lib_patch.Upstream +package/qemu/0003-tracing-install-trace-events-file-only-if-necessary.patch lib_patch.Upstream package/qextserialport/0001-Create-a-main-include-file-QExtSerialPort.patch lib_patch.Upstream package/qextserialport/0002-Tell-qmake-to-add-a-pkgconfig-file-to-ease-usage-wit.patch lib_patch.Upstream package/qt5/qt5base/0001-qtbase-Fix-build-error-when-using-EGL.patch lib_patch.Upstream diff --git a/package/qemu/0004-tracing-install-trace-events-file-only-if-necessary.patch b/package/qemu/0003-tracing-install-trace-events-file-only-if-necessary.patch similarity index 90% rename from package/qemu/0004-tracing-install-trace-events-file-only-if-necessary.patch rename to package/qemu/0003-tracing-install-trace-events-file-only-if-necessary.patch index 36bdaa4978ad..f9b82865ce16 100644 --- a/package/qemu/0004-tracing-install-trace-events-file-only-if-necessary.patch +++ b/package/qemu/0003-tracing-install-trace-events-file-only-if-necessary.patch @@ -5,7 +5,7 @@ Subject: [PATCH] tracing: install trace events file only if necessary It is not useful when configuring with --enable-trace-backends=nop. -Upstream: https://patchwork.kernel.org/project/qemu-devel/patch/20230408010410.281263-1-casantos at redhat.com/ +[Upstream status: https://patchwork.kernel.org/project/qemu-devel/patch/20230408010410.281263-1-casantos at redhat.com/] Signed-off-by: Carlos Santos Signed-off-by: Carlos Santos --- -- 2.43.0 From wbx at openadk.org Wed May 1 12:10:11 2024 From: wbx at openadk.org (Waldemar Brodkorb) Date: Wed, 1 May 2024 14:10:11 +0200 Subject: [Buildroot] [PATCH v2 1/3] package/uclibc: Bump to 1.0.48. In-Reply-To: <20240501093725.325194-1-dm.chestnykh@gmail.com> References: <20240501093725.325194-1-dm.chestnykh@gmail.com> Message-ID: Hi Dmitry, Dmitry Chestnykh wrote, > In 1.0.48 release uClibc-ng has provided the fix > for SPARC related to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784 > > Signed-off-by: Dmitry Chestnykh Tested-by: Waldemar Brodkorb best regards Waldemar From wbx at openadk.org Wed May 1 12:11:27 2024 From: wbx at openadk.org (Waldemar Brodkorb) Date: Wed, 1 May 2024 14:11:27 +0200 Subject: [Buildroot] [PATCH 2/3] configs/qemu_sparc_ss10_defconfig: Restore. In-Reply-To: <20240501092328.323236-2-dm.chestnykh@gmail.com> References: <20240501092328.323236-1-dm.chestnykh@gmail.com> <20240501092328.323236-2-dm.chestnykh@gmail.com> Message-ID: Hi Dmitry, Dmitry Chestnykh wrote, > With uClibc-ng-1.0.48 we can restore this config > because now sparc systems work without reverting GCC commits. > > Signed-off-by: Dmitry Chestnykh Tested-by: Waldemar Brodkorb best regards Waldemar From wbx at openadk.org Wed May 1 12:12:28 2024 From: wbx at openadk.org (Waldemar Brodkorb) Date: Wed, 1 May 2024 14:12:28 +0200 Subject: [Buildroot] [PATCH 3/3] package/gcc: Remove unneeded patch. In-Reply-To: <20240501092328.323236-3-dm.chestnykh@gmail.com> References: <20240501092328.323236-1-dm.chestnykh@gmail.com> <20240501092328.323236-3-dm.chestnykh@gmail.com> Message-ID: Hi Dmitry, Dmitry Chestnykh wrote, > sparc systems work with uClibc-ng-1.0.48. > > Signed-off-by: Dmitry Chestnykh Tested-by: Waldemar Brodkorb best regards Waldemar From wbx at openadk.org Wed May 1 12:41:14 2024 From: wbx at openadk.org (Waldemar Brodkorb) Date: Wed, 1 May 2024 14:41:14 +0200 Subject: [Buildroot] [PATCH v2] package/asterisk: fix compile issue Message-ID: Fix a compile issue when libyuv and libjpeg is enabled. Detection of following function fails: checking for pjsip_dlg_create_uas_and_inc_lock in -lpjsip... no In config.log you see that libjpeg is missing. Fixes: http://autobuild.buildroot.net/results/7bed9fc68fc9331ad12942c3eab9742ee8a7a4c4 Signed-off-by: Waldemar Brodkorb --- v1->v2: package libjpeg must be enabled, too --- package/asterisk/asterisk.mk | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/package/asterisk/asterisk.mk b/package/asterisk/asterisk.mk index 33d2e78bcf..c37aa5ec9d 100644 --- a/package/asterisk/asterisk.mk +++ b/package/asterisk/asterisk.mk @@ -113,9 +113,15 @@ ASTERISK_CONF_ENV = \ # Uses __atomic_fetch_add_4 ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) -ASTERISK_CONF_ENV += LIBS="-latomic" +ASTERISK_LIBS += -latomic endif +ifeq ($(BR2_PACKAGE_LIBYUV)$(BR2_PACKAGE_JPEG),yy) +ASTERISK_LIBS += -ljpeg +endif + +ASTERISK_CONF_ENV += LIBS="$(ASTERISK_LIBS)" + ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y) ASTERISK_CONF_OPTS += --with-execinfo else -- 2.39.2 From fontaine.fabrice at gmail.com Wed May 1 15:00:42 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Wed, 1 May 2024 17:00:42 +0200 Subject: [Buildroot] [PATCH 1/1] package/asterisk: fix uclibc-ng build Message-ID: <20240501150042.281549-1-fontaine.fabrice@gmail.com> Fix the following uclibc-ng build failure raised since bump to version 20.7.0 in commit 0e6d4d2171ce70d3aa6693f860a36ff08fc4d2b3 and https://github.com/asterisk/asterisk/commit/2694792e13c7f3ab1911c4a69fba0df32c544177: stasis/control.c: In function 'exec_command_on_condition': stasis/control.c:313:3: warning: implicit declaration of function 'pthread_kill'; did you mean 'pthread_yield'? [-Wimplicit-function-declaration] 313 | pthread_kill(control->control_thread, SIGURG); | ^~~~~~~~~~~~ | pthread_yield stasis/control.c:313:41: error: 'SIGURG' undeclared (first use in this function) 313 | pthread_kill(control->control_thread, SIGURG); | ^~~~~~ Fixes: 0e6d4d2171ce70d3aa6693f860a36ff08fc4d2b3 - http://autobuild.buildroot.org/results/d16e4ca4bd26234f84d17da24c04a8c19faba6c5 Signed-off-by: Fabrice Fontaine --- ...es-stasis-control.c-include-signal.h.patch | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 package/asterisk/0005-res-stasis-control.c-include-signal.h.patch diff --git a/package/asterisk/0005-res-stasis-control.c-include-signal.h.patch b/package/asterisk/0005-res-stasis-control.c-include-signal.h.patch new file mode 100644 index 0000000000..fc615c4a19 --- /dev/null +++ b/package/asterisk/0005-res-stasis-control.c-include-signal.h.patch @@ -0,0 +1,43 @@ +From 8391dc3891337ecff8becefe1927a30d3922b848 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 1 May 2024 16:50:50 +0200 +Subject: [PATCH] res/stasis/control.c: include signal.h + +Include signal.h to avoid the following build failure with uclibc-ng +raised since +https://github.com/asterisk/asterisk/commit/2694792e13c7f3ab1911c4a69fba0df32c544177: + +stasis/control.c: In function 'exec_command_on_condition': +stasis/control.c:313:3: warning: implicit declaration of function 'pthread_kill'; did you mean 'pthread_yield'? [-Wimplicit-function-declaration] + 313 | pthread_kill(control->control_thread, SIGURG); + | ^~~~~~~~~~~~ + | pthread_yield +stasis/control.c:313:41: error: 'SIGURG' undeclared (first use in this function) + 313 | pthread_kill(control->control_thread, SIGURG); + | ^~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/d16e4ca4bd26234f84d17da24c04a8c19faba6c5 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/asterisk/asterisk/pull/728 +--- + res/stasis/control.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/res/stasis/control.c b/res/stasis/control.c +index 360f20790..4ed0e2af1 100644 +--- a/res/stasis/control.c ++++ b/res/stasis/control.c +@@ -41,6 +41,8 @@ + #include "asterisk/musiconhold.h" + #include "asterisk/app.h" + ++#include ++ + AST_LIST_HEAD(app_control_rules, stasis_app_control_rule); + + /*! +-- +2.43.0 + -- 2.43.0 From fontaine.fabrice at gmail.com Wed May 1 15:05:07 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Wed, 1 May 2024 17:05:07 +0200 Subject: [Buildroot] [PATCH 1/1] package/libjwt: add CPE variables Message-ID: <20240501150507.284189-1-fontaine.fabrice@gmail.com> cpe:2.3:a:bencollins:jwt_c_library is a valid CPE identifier for this package: https://nvd.nist.gov/products/cpe/detail/6335E595-6F38-4837-83BB-C78B687BB75B Signed-off-by: Fabrice Fontaine --- package/libjwt/libjwt.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package/libjwt/libjwt.mk b/package/libjwt/libjwt.mk index 1643aa7b7a..8929904d10 100644 --- a/package/libjwt/libjwt.mk +++ b/package/libjwt/libjwt.mk @@ -11,6 +11,8 @@ LIBJWT_AUTORECONF = YES LIBJWT_INSTALL_STAGING = YES LIBJWT_LICENSE = MPL-2.0 LIBJWT_LICENSE_FILES = LICENSE +LIBJWT_CPE_ID_VENDOR = bencollins +LIBJWT_CPE_ID_PRODUCT = jwt_c_library LIBJWT_CONF_OPTS = --without-examples ifeq ($(BR2_PACKAGE_OPENSSL),y) -- 2.43.0 From bugzilla at busybox.net Wed May 1 15:08:52 2024 From: bugzilla at busybox.net (bugzilla at busybox.net) Date: Wed, 01 May 2024 15:08:52 +0000 Subject: [Buildroot] [Bug 16027] problems building on fedora-40 In-Reply-To: References: Message-ID: https://bugs.busybox.net/show_bug.cgi?id=16027 --- Comment #10 from Yann E. MORIN --- Hello. > How about just switching to curl, instead > of playing around the legacy stuff as wget is? 1. wget is not legacy. cURL and wget were initialy released at about the same period, in 1996 [0] [1]; both saw their latest release in March 2024. Hard to say that wget is legacy without saying so for cURL. [0] https://en.wikipedia.org/wiki/Wget => January 1996 [1] https://en.wikipedia.org/wiki/CURL => November 1996 2. cURL can be configured without FTP support [2], so if switching from wget to wget2 was done, knowing that FTP was dropped, and considering that was acceptable on the basis that FTP is legacy (broken, insecure...), then it is not inconceivalbe that distros may consider truning FTP off in their builds of cURL, ion the same basis (broken, insecure...). Switching to cURL would not solve the issue. Yes, it is a bit far-fetched, but given the reasoning behind wget2 switch, it is legit to consider it for other tools that are not FTP-only. [2] https://github.com/curl/curl/blob/master/configure.ac#L631 3. Existing packages (in external trees) may use wget's authentication options yo authenticate to an HTTP server; switching to cURL would break them. That also applies to existing (def)config files that use non-standard options, like --no-proxy to talk to internal servers, or --load-cookies with a pre-build script that authenticates against an internal server or filled by a CI/CD job, etc... 4. For all things HTTP-related, wget2 is expected to be option-compatible with wget. 5. As a consequence, it feels more appropriate to keep using wget for HTTP/S downloads, and use a tool dedicated to FTP for FTP downloads, and implemented as a separate backend in Buildroot. Regards, Yann E. MORIN, -- You are receiving this mail because: You are on the CC list for the bug. From bb at ti.com Wed May 1 15:27:23 2024 From: bb at ti.com (Bryan Brattlof) Date: Wed, 1 May 2024 10:27:23 -0500 Subject: [Buildroot] [PATCH 00/11] update bsp binaries for TI SoCs Message-ID: <20240430-optee-update-v1-0-6f73c4903ec3@ti.com> Hello everyone! This series updates all the boot binaries (U-Boot, OP-TEE, TF-A, and Linux) to their latest versions to pull in all bug fixes and new features additions in these projects. This also includes a patch I send out a while ago just to keep things organized. https://lore.kernel.org/buildroot/20240402153328.1859642-1-bb at ti.com/ and finally some proof I didn't completely break something ;) https://paste.sr.ht/~bryanb/b666adef7da412de76efb5e4a68e68e0651f7928 Thanks for reviewing ~Bryan Signed-off-by: Bryan Brattlof --- Bryan Brattlof (10): boot/optee-os: bump to release v4.2.0 boot/uboot: bump to latest v2024.04 release of U-Boot boot/ti-k3-r5-loader: bump to latest U-Boot release configs/ti_am62x_sk_defconfig: update TFA to latest lts release configs/ti_am64x_sk_defconfig: update TFA to latest lts release configs/ti_am62x_sk_defconfig: update uboot to latest release configs/ti_am64x_sk_defconfig: update uboot to latest release configs/ti_am62x_sk_defconfig: update to latest kernel configs/ti_am64x_sk_defconfig: update to latest kernel DEVELOPERS: add myself to TI's packages and reference boards Bryan Brattlof via buildroot (1): boot/ti-k3-boot-firmware: bump to latest version DEVELOPERS | 8 ++++++++ .../patches/arm-trusted-firmware/arm-trusted-firmware.hash | 2 +- board/ti/am62x-sk/patches/linux/linux.hash | 2 +- .../patches/arm-trusted-firmware/arm-trusted-firmware.hash | 2 +- board/ti/am64x-sk/patches/linux/linux.hash | 2 +- boot/optee-os/Config.in | 4 ++-- boot/optee-os/optee-os.hash | 4 ++-- boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash | 2 +- boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk | 4 +--- boot/ti-k3-r5-loader/Config.in | 4 ++-- boot/ti-k3-r5-loader/ti-k3-r5-loader.hash | 2 +- boot/ti-k3-r5-loader/ti-k3-r5-loader.mk | 1 + boot/uboot/Config.in | 6 +++--- boot/uboot/uboot.hash | 2 +- configs/ti_am62x_sk_defconfig | 9 ++++----- configs/ti_am64x_sk_defconfig | 9 ++++----- 16 files changed, 34 insertions(+), 29 deletions(-) --- base-commit: 39ed602169ecf7677328d1387d30869baeb28cea change-id: 20240430-optee-update-b9c1bc4e9f29 Best regards, -- Bryan Brattlof From bb at ti.com Wed May 1 15:27:27 2024 From: bb at ti.com (Bryan Brattlof) Date: Wed, 1 May 2024 10:27:27 -0500 Subject: [Buildroot] [PATCH 04/11] boot/ti-k3-boot-firmware: bump to latest version In-Reply-To: <20240430-optee-update-v1-0-6f73c4903ec3@ti.com> References: <20240430-optee-update-v1-0-6f73c4903ec3@ti.com> Message-ID: <20240430-optee-update-v1-4-6f73c4903ec3@ti.com> From: Bryan Brattlof via buildroot The 09.02.00.009 release of ti-linux-firmware has the latest updates to TI's TIFS, DM and DMSC firmware needed for the K3 generation of processors. Update to pull in these latest updates. Reviewed-by: Heiko Thiery Tested-by: Andreas Dannenberg Signed-off-by: Bryan Brattlof --- boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash | 2 +- boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash index 95131180ef400..2398d02da258a 100644 --- a/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash +++ b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash @@ -1,3 +1,3 @@ # Locally calculated sha256 ab20ffbe7bba7e94be246b3417d33a914b3f07c16c47ef5a7f7602349a666a61 LICENSE.ti -sha256 6032a258ce731d987576115f5de44c677a6b0cf8bddcd61a9a2852928bdfff92 ti-linux-firmware-08.06.00.006.tar.xz +sha256 ae888a0a22f8c5b8fe841236d6e40bb2f821d9a4161dab6924fd989e1467ef0e ti-linux-firmware-09.02.00.009.tar.xz diff --git a/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk index 1f8ade207c13a..9332732ad4a32 100644 --- a/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk +++ b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk @@ -4,9 +4,7 @@ # ################################################################################ -# The hash 340194800a581baf976360386dfc7b5acab8d948 defined in the -# Makefile of ti-k3-image-gen corresponds to the tag 08.06.00.006. -TI_K3_BOOT_FIRMWARE_VERSION = 08.06.00.006 +TI_K3_BOOT_FIRMWARE_VERSION = 09.02.00.009 TI_K3_BOOT_FIRMWARE_SITE = https://git.ti.com/cgit/processor-firmware/ti-linux-firmware/snapshot TI_K3_BOOT_FIRMWARE_SOURCE = ti-linux-firmware-$(TI_K3_BOOT_FIRMWARE_VERSION).tar.xz TI_K3_BOOT_FIRMWARE_INSTALL_IMAGES = YES -- 2.43.2 From yann.morin.1998 at free.fr Wed May 1 16:21:21 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 18:21:21 +0200 Subject: [Buildroot] [git commit] package/asterisk: fix compile issue Message-ID: <20240501162718.8370686382@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=07b7d8708d0c8302ad5407acf81df974050f0f5c branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fix a compile issue when libyuv and libjpeg is enabled. Detection of following function fails: checking for pjsip_dlg_create_uas_and_inc_lock in -lpjsip... no In config.log you see that libjpeg is missing. Fixes: http://autobuild.buildroot.net/results/7bed9fc68fc9331ad12942c3eab9742ee8a7a4c4 Signed-off-by: Waldemar Brodkorb Signed-off-by: Yann E. MORIN --- package/asterisk/asterisk.mk | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/package/asterisk/asterisk.mk b/package/asterisk/asterisk.mk index 33d2e78bcf..c37aa5ec9d 100644 --- a/package/asterisk/asterisk.mk +++ b/package/asterisk/asterisk.mk @@ -113,9 +113,15 @@ ASTERISK_CONF_ENV = \ # Uses __atomic_fetch_add_4 ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) -ASTERISK_CONF_ENV += LIBS="-latomic" +ASTERISK_LIBS += -latomic endif +ifeq ($(BR2_PACKAGE_LIBYUV)$(BR2_PACKAGE_JPEG),yy) +ASTERISK_LIBS += -ljpeg +endif + +ASTERISK_CONF_ENV += LIBS="$(ASTERISK_LIBS)" + ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y) ASTERISK_CONF_OPTS += --with-execinfo else From yann.morin.1998 at free.fr Wed May 1 16:25:48 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 18:25:48 +0200 Subject: [Buildroot] [git commit] package/asterisk: fix uclibc-ng build Message-ID: <20240501162718.8C83586384@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=ebd44d7c5b8b4e24e401863bb779adea2ff3a226 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fix the following uclibc-ng build failure raised since bump to version 20.7.0 in commit 0e6d4d2171ce70d3aa6693f860a36ff08fc4d2b3 and https://github.com/asterisk/asterisk/commit/2694792e13c7f3ab1911c4a69fba0df32c544177: stasis/control.c: In function 'exec_command_on_condition': stasis/control.c:313:3: warning: implicit declaration of function 'pthread_kill'; did you mean 'pthread_yield'? [-Wimplicit-function-declaration] 313 | pthread_kill(control->control_thread, SIGURG); | ^~~~~~~~~~~~ | pthread_yield stasis/control.c:313:41: error: 'SIGURG' undeclared (first use in this function) 313 | pthread_kill(control->control_thread, SIGURG); | ^~~~~~ Fixes: 0e6d4d2171ce70d3aa6693f860a36ff08fc4d2b3 - http://autobuild.buildroot.org/results/d16e4ca4bd26234f84d17da24c04a8c19faba6c5 Signed-off-by: Fabrice Fontaine Signed-off-by: Yann E. MORIN --- ...005-res-stasis-control.c-include-signal.h.patch | 43 ++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/package/asterisk/0005-res-stasis-control.c-include-signal.h.patch b/package/asterisk/0005-res-stasis-control.c-include-signal.h.patch new file mode 100644 index 0000000000..fc615c4a19 --- /dev/null +++ b/package/asterisk/0005-res-stasis-control.c-include-signal.h.patch @@ -0,0 +1,43 @@ +From 8391dc3891337ecff8becefe1927a30d3922b848 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 1 May 2024 16:50:50 +0200 +Subject: [PATCH] res/stasis/control.c: include signal.h + +Include signal.h to avoid the following build failure with uclibc-ng +raised since +https://github.com/asterisk/asterisk/commit/2694792e13c7f3ab1911c4a69fba0df32c544177: + +stasis/control.c: In function 'exec_command_on_condition': +stasis/control.c:313:3: warning: implicit declaration of function 'pthread_kill'; did you mean 'pthread_yield'? [-Wimplicit-function-declaration] + 313 | pthread_kill(control->control_thread, SIGURG); + | ^~~~~~~~~~~~ + | pthread_yield +stasis/control.c:313:41: error: 'SIGURG' undeclared (first use in this function) + 313 | pthread_kill(control->control_thread, SIGURG); + | ^~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/d16e4ca4bd26234f84d17da24c04a8c19faba6c5 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/asterisk/asterisk/pull/728 +--- + res/stasis/control.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/res/stasis/control.c b/res/stasis/control.c +index 360f20790..4ed0e2af1 100644 +--- a/res/stasis/control.c ++++ b/res/stasis/control.c +@@ -41,6 +41,8 @@ + #include "asterisk/musiconhold.h" + #include "asterisk/app.h" + ++#include ++ + AST_LIST_HEAD(app_control_rules, stasis_app_control_rule); + + /*! +-- +2.43.0 + From yann.morin.1998 at free.fr Wed May 1 16:27:22 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 18:27:22 +0200 Subject: [Buildroot] [PATCH 1/1] package/asterisk: fix uclibc-ng build In-Reply-To: <20240501150042.281549-1-fontaine.fabrice@gmail.com> References: <20240501150042.281549-1-fontaine.fabrice@gmail.com> Message-ID: Fabrice, All, On 2024-05-01 17:00 +0200, Fabrice Fontaine spake thusly: > Fix the following uclibc-ng build failure raised since bump to version > 20.7.0 in commit 0e6d4d2171ce70d3aa6693f860a36ff08fc4d2b3 and > https://github.com/asterisk/asterisk/commit/2694792e13c7f3ab1911c4a69fba0df32c544177: > > stasis/control.c: In function 'exec_command_on_condition': > stasis/control.c:313:3: warning: implicit declaration of function 'pthread_kill'; did you mean 'pthread_yield'? [-Wimplicit-function-declaration] > 313 | pthread_kill(control->control_thread, SIGURG); > | ^~~~~~~~~~~~ > | pthread_yield > stasis/control.c:313:41: error: 'SIGURG' undeclared (first use in this function) > 313 | pthread_kill(control->control_thread, SIGURG); > | ^~~~~~ > > Fixes: 0e6d4d2171ce70d3aa6693f860a36ff08fc4d2b3 > - http://autobuild.buildroot.org/results/d16e4ca4bd26234f84d17da24c04a8c19faba6c5 > > Signed-off-by: Fabrice Fontaine Applied to master, thanks. Regards, Yann E. MORIN. > --- > ...es-stasis-control.c-include-signal.h.patch | 43 +++++++++++++++++++ > 1 file changed, 43 insertions(+) > create mode 100644 package/asterisk/0005-res-stasis-control.c-include-signal.h.patch > > diff --git a/package/asterisk/0005-res-stasis-control.c-include-signal.h.patch b/package/asterisk/0005-res-stasis-control.c-include-signal.h.patch > new file mode 100644 > index 0000000000..fc615c4a19 > --- /dev/null > +++ b/package/asterisk/0005-res-stasis-control.c-include-signal.h.patch > @@ -0,0 +1,43 @@ > +From 8391dc3891337ecff8becefe1927a30d3922b848 Mon Sep 17 00:00:00 2001 > +From: Fabrice Fontaine > +Date: Wed, 1 May 2024 16:50:50 +0200 > +Subject: [PATCH] res/stasis/control.c: include signal.h > + > +Include signal.h to avoid the following build failure with uclibc-ng > +raised since > +https://github.com/asterisk/asterisk/commit/2694792e13c7f3ab1911c4a69fba0df32c544177: > + > +stasis/control.c: In function 'exec_command_on_condition': > +stasis/control.c:313:3: warning: implicit declaration of function 'pthread_kill'; did you mean 'pthread_yield'? [-Wimplicit-function-declaration] > + 313 | pthread_kill(control->control_thread, SIGURG); > + | ^~~~~~~~~~~~ > + | pthread_yield > +stasis/control.c:313:41: error: 'SIGURG' undeclared (first use in this function) > + 313 | pthread_kill(control->control_thread, SIGURG); > + | ^~~~~~ > + > +Fixes: > + - http://autobuild.buildroot.org/results/d16e4ca4bd26234f84d17da24c04a8c19faba6c5 > + > +Signed-off-by: Fabrice Fontaine > +Upstream: https://github.com/asterisk/asterisk/pull/728 > +--- > + res/stasis/control.c | 2 ++ > + 1 file changed, 2 insertions(+) > + > +diff --git a/res/stasis/control.c b/res/stasis/control.c > +index 360f20790..4ed0e2af1 100644 > +--- a/res/stasis/control.c > ++++ b/res/stasis/control.c > +@@ -41,6 +41,8 @@ > + #include "asterisk/musiconhold.h" > + #include "asterisk/app.h" > + > ++#include > ++ > + AST_LIST_HEAD(app_control_rules, stasis_app_control_rule); > + > + /*! > +-- > +2.43.0 > + > -- > 2.43.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Wed May 1 16:27:55 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 18:27:55 +0200 Subject: [Buildroot] [PATCH v2] package/asterisk: fix compile issue In-Reply-To: References: Message-ID: Waldemar, All, On 2024-05-01 14:41 +0200, Waldemar Brodkorb spake thusly: > Fix a compile issue when libyuv and libjpeg is enabled. > Detection of following function fails: > checking for pjsip_dlg_create_uas_and_inc_lock in -lpjsip... no > > In config.log you see that libjpeg is missing. > > Fixes: > http://autobuild.buildroot.net/results/7bed9fc68fc9331ad12942c3eab9742ee8a7a4c4 > > Signed-off-by: Waldemar Brodkorb Applied to master, thanks. Regards, Yann E. MORIN. > --- > v1->v2: package libjpeg must be enabled, too > --- > package/asterisk/asterisk.mk | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/package/asterisk/asterisk.mk b/package/asterisk/asterisk.mk > index 33d2e78bcf..c37aa5ec9d 100644 > --- a/package/asterisk/asterisk.mk > +++ b/package/asterisk/asterisk.mk > @@ -113,9 +113,15 @@ ASTERISK_CONF_ENV = \ > > # Uses __atomic_fetch_add_4 > ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) > -ASTERISK_CONF_ENV += LIBS="-latomic" > +ASTERISK_LIBS += -latomic > endif > > +ifeq ($(BR2_PACKAGE_LIBYUV)$(BR2_PACKAGE_JPEG),yy) > +ASTERISK_LIBS += -ljpeg > +endif > + > +ASTERISK_CONF_ENV += LIBS="$(ASTERISK_LIBS)" > + > ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y) > ASTERISK_CONF_OPTS += --with-execinfo > else > -- > 2.39.2 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Wed May 1 16:40:05 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 18:40:05 +0200 Subject: [Buildroot] [git commit] package/asterisk: needs libxcrypt with glibc Message-ID: <20240501164207.C2BEB8638E@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=8996fedefbba7e5dfded9b7389062aba4469deaa branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master We unconditionally configure asterisk with --with-crypt, so the build currently fails under glibc since it removed crypt in 2.39, and we explicitly remove it from external toolchains as well, whatever the version, causing build failures such as: checking for mandatory modules: OPENSSL BKTR CRYPT ILBC JANSSON LIBEDIT LIBJWT LIBXML2 PJPROJECT SQLITE3 ZLIB... fail configure: *** configure: *** The CRYPT installation appears to be missing or broken. configure: *** Either correct the installation, or run configure configure: *** including --without-crypt. Fixing this could be done in two ways: either make libxcrypt a mandatory dependency under glibc, and continue unconditionally enabling crypt support, or only enable crypt support when libxcrypt is available or this was a non-glibc toolchain. We chose the first option, to keep the existing behaviour (crypt support is always enabled), to be aligned with other packages (libxcrypt is selected under glibc toolchains), and because it is also the simplest. Signed-off-by: Yann E. MORIN --- package/asterisk/Config.in | 1 + package/asterisk/asterisk.mk | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/package/asterisk/Config.in b/package/asterisk/Config.in index ba5a574042..71c741acfd 100644 --- a/package/asterisk/Config.in +++ b/package/asterisk/Config.in @@ -12,6 +12,7 @@ config BR2_PACKAGE_ASTERISK select BR2_PACKAGE_LIBILBC select BR2_PACKAGE_LIBJWT select BR2_PACKAGE_LIBPJSIP + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC select BR2_PACKAGE_LIBXML2 select BR2_PACKAGE_SQLITE select BR2_PACKAGE_UTIL_LINUX diff --git a/package/asterisk/asterisk.mk b/package/asterisk/asterisk.mk index c37aa5ec9d..be27509441 100644 --- a/package/asterisk/asterisk.mk +++ b/package/asterisk/asterisk.mk @@ -238,6 +238,11 @@ else ASTERISK_CONF_OPTS += --without-ssl endif +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +# --with-crypt is unconditional, relies on the C library if present +ASTERISK_DEPENDENCIES += libxcrypt +endif + ifeq ($(BR2_PACKAGE_SPEEX)$(BR2_PACKAGE_SPEEXDSP),yy) ASTERISK_DEPENDENCIES += speex ASTERISK_CONF_OPTS += --with-speex --with-speexdsp From yann.morin.1998 at free.fr Wed May 1 18:10:30 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 20:10:30 +0200 Subject: [Buildroot] [PATCH 3/3] package/gcc: Remove unneeded patch. In-Reply-To: <20240501092328.323236-3-dm.chestnykh@gmail.com> References: <20240501092328.323236-1-dm.chestnykh@gmail.com> <20240501092328.323236-3-dm.chestnykh@gmail.com> Message-ID: dmitry, All, On 2024-05-01 12:23 +0300, Dmitry Chestnykh spake thusly: > sparc systems work with uClibc-ng-1.0.48. Right, but... > Signed-off-by: Dmitry Chestnykh > --- > ...get-92095-internal-error-with-O1-mcp.patch | 322 ------------------ > 1 file changed, 322 deletions(-) > delete mode 100644 package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch gcc 8.4.0 is only ever used for PowerPC SPE: package/gcc/Config.in.host 76 config BR2_GCC_VERSION 77 string 78 default "8.4.0" if BR2_GCC_VERSION_POWERPC_SPE So gcc 8.4.0 can't be used for sparc, so any sparc-rleated patch there is totally unused. Which IMHO should be the actual reason for dropping it... Regards, Yann E. MORIN. > diff --git a/package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch b/package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch > deleted file mode 100644 > index ec2bf8835d..0000000000 > --- a/package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch > +++ /dev/null > @@ -1,322 +0,0 @@ > -From bb9b71752267444b4360442b89129bfc0ae938d3 Mon Sep 17 00:00:00 2001 > -From: Romain Naour > -Date: Wed, 20 Jan 2021 23:06:07 +0100 > -Subject: [PATCH] Revert "re PR target/92095 (internal error with -O1 > - -mcpu=niagara2 -fPIE)" > - > -This reverts commit 3fcce773f0f914c0499b130c6e9efa0e45ee54a0. > - > -Building the Buildroot defconfig qemu_sparc_ss10_defconfig using > -gcc 8.4, 9.3 and 10 produce a broken rootfs that trigger illegal > -instruction messages. > - > -gcc 8.3, 9.2 are the latest working gcc version. > -git bisect between gcc 8.4 and 8.4 allowed to identify > -the commit that introcuce the regression. > - > -Reverting this patch allowed to produce a working rootfs. > - > -Signed-off-by: Romain Naour > -Cc: Eric Botcazou > ---- > - gcc/config/sparc/sparc-protos.h | 1 - > - gcc/config/sparc/sparc.c | 121 +++++++----------- > - gcc/config/sparc/sparc.md | 5 +- > - .../gcc.c-torture/compile/20191108-1.c | 14 -- > - gcc/testsuite/gcc.target/sparc/overflow-3.c | 2 +- > - gcc/testsuite/gcc.target/sparc/overflow-4.c | 2 +- > - gcc/testsuite/gcc.target/sparc/overflow-5.c | 2 +- > - 7 files changed, 53 insertions(+), 94 deletions(-) > - delete mode 100644 gcc/testsuite/gcc.c-torture/compile/20191108-1.c > - > -diff --git a/gcc/config/sparc/sparc-protos.h b/gcc/config/sparc/sparc-protos.h > -index b3f73c2f2bf..71a067e871c 100644 > ---- a/gcc/config/sparc/sparc-protos.h > -+++ b/gcc/config/sparc/sparc-protos.h > -@@ -69,7 +69,6 @@ extern void sparc_split_reg_mem (rtx, rtx, machine_mode); > - extern void sparc_split_mem_reg (rtx, rtx, machine_mode); > - extern int sparc_split_reg_reg_legitimate (rtx, rtx); > - extern void sparc_split_reg_reg (rtx, rtx, machine_mode); > --extern const char *output_load_pcrel_sym (rtx *); > - extern const char *output_ubranch (rtx, rtx_insn *); > - extern const char *output_cbranch (rtx, rtx, int, int, int, rtx_insn *); > - extern const char *output_return (rtx_insn *); > -diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c > -index 73032d33596..db1b428db90 100644 > ---- a/gcc/config/sparc/sparc.c > -+++ b/gcc/config/sparc/sparc.c > -@@ -4200,6 +4200,13 @@ eligible_for_sibcall_delay (rtx_insn *trial) > - static bool > - sparc_cannot_force_const_mem (machine_mode mode, rtx x) > - { > -+ /* After IRA has run in PIC mode, it is too late to put anything into the > -+ constant pool if the PIC register hasn't already been initialized. */ > -+ if ((lra_in_progress || reload_in_progress) > -+ && flag_pic > -+ && !crtl->uses_pic_offset_table) > -+ return true; > -+ > - switch (GET_CODE (x)) > - { > - case CONST_INT: > -@@ -4235,11 +4242,9 @@ sparc_cannot_force_const_mem (machine_mode mode, rtx x) > - } > - > - /* Global Offset Table support. */ > --static GTY(()) rtx got_symbol_rtx = NULL_RTX; > --static GTY(()) rtx got_register_rtx = NULL_RTX; > - static GTY(()) rtx got_helper_rtx = NULL_RTX; > -- > --static GTY(()) bool got_helper_needed = false; > -+static GTY(()) rtx got_register_rtx = NULL_RTX; > -+static GTY(()) rtx got_symbol_rtx = NULL_RTX; > - > - /* Return the SYMBOL_REF for the Global Offset Table. */ > - > -@@ -4252,6 +4257,27 @@ sparc_got (void) > - return got_symbol_rtx; > - } > - > -+#ifdef HAVE_GAS_HIDDEN > -+# define USE_HIDDEN_LINKONCE 1 > -+#else > -+# define USE_HIDDEN_LINKONCE 0 > -+#endif > -+ > -+static void > -+get_pc_thunk_name (char name[32], unsigned int regno) > -+{ > -+ const char *reg_name = reg_names[regno]; > -+ > -+ /* Skip the leading '%' as that cannot be used in a > -+ symbol name. */ > -+ reg_name += 1; > -+ > -+ if (USE_HIDDEN_LINKONCE) > -+ sprintf (name, "__sparc_get_pc_thunk.%s", reg_name); > -+ else > -+ ASM_GENERATE_INTERNAL_LABEL (name, "LADDPC", regno); > -+} > -+ > - /* Wrapper around the load_pcrel_sym{si,di} patterns. */ > - > - static rtx > -@@ -4271,78 +4297,30 @@ gen_load_pcrel_sym (rtx op0, rtx op1, rtx op2) > - return insn; > - } > - > --/* Output the load_pcrel_sym{si,di} patterns. */ > -- > --const char * > --output_load_pcrel_sym (rtx *operands) > --{ > -- if (flag_delayed_branch) > -- { > -- output_asm_insn ("sethi\t%%hi(%a1-4), %0", operands); > -- output_asm_insn ("call\t%a2", operands); > -- output_asm_insn (" add\t%0, %%lo(%a1+4), %0", operands); > -- } > -- else > -- { > -- output_asm_insn ("sethi\t%%hi(%a1-8), %0", operands); > -- output_asm_insn ("add\t%0, %%lo(%a1-4), %0", operands); > -- output_asm_insn ("call\t%a2", operands); > -- output_asm_insn (" nop", NULL); > -- } > -- > -- if (operands[2] == got_helper_rtx) > -- got_helper_needed = true; > -- > -- return ""; > --} > -- > --#ifdef HAVE_GAS_HIDDEN > --# define USE_HIDDEN_LINKONCE 1 > --#else > --# define USE_HIDDEN_LINKONCE 0 > --#endif > -- > - /* Emit code to load the GOT register. */ > - > - void > - load_got_register (void) > - { > -- rtx insn; > -+ if (!got_register_rtx) > -+ got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM); > - > - if (TARGET_VXWORKS_RTP) > -- { > -- if (!got_register_rtx) > -- got_register_rtx = pic_offset_table_rtx; > -- > -- insn = gen_vxworks_load_got (); > -- } > -+ emit_insn (gen_vxworks_load_got ()); > - else > - { > -- if (!got_register_rtx) > -- got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM); > -- > - /* The GOT symbol is subject to a PC-relative relocation so we need a > - helper function to add the PC value and thus get the final value. */ > - if (!got_helper_rtx) > - { > - char name[32]; > -- > -- /* Skip the leading '%' as that cannot be used in a symbol name. */ > -- if (USE_HIDDEN_LINKONCE) > -- sprintf (name, "__sparc_get_pc_thunk.%s", > -- reg_names[REGNO (got_register_rtx)] + 1); > -- else > -- ASM_GENERATE_INTERNAL_LABEL (name, "LADDPC", > -- REGNO (got_register_rtx)); > -- > -+ get_pc_thunk_name (name, GLOBAL_OFFSET_TABLE_REGNUM); > - got_helper_rtx = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name)); > - } > - > -- insn > -- = gen_load_pcrel_sym (got_register_rtx, sparc_got (), got_helper_rtx); > -+ emit_insn (gen_load_pcrel_sym (got_register_rtx, sparc_got (), > -+ got_helper_rtx)); > - } > -- > -- emit_insn (insn); > - } > - > - /* Ensure that we are not using patterns that are not OK with PIC. */ > -@@ -5494,7 +5472,7 @@ save_local_or_in_reg_p (unsigned int regno, int leaf_function) > - return true; > - > - /* GOT register (%l7) if needed. */ > -- if (got_register_rtx && regno == REGNO (got_register_rtx)) > -+ if (regno == GLOBAL_OFFSET_TABLE_REGNUM && got_register_rtx) > - return true; > - > - /* If the function accesses prior frames, the frame pointer and the return > -@@ -12475,9 +12453,10 @@ static void > - sparc_file_end (void) > - { > - /* If we need to emit the special GOT helper function, do so now. */ > -- if (got_helper_needed) > -+ if (got_helper_rtx) > - { > - const char *name = XSTR (got_helper_rtx, 0); > -+ const char *reg_name = reg_names[GLOBAL_OFFSET_TABLE_REGNUM]; > - #ifdef DWARF2_UNWIND_INFO > - bool do_cfi; > - #endif > -@@ -12514,22 +12493,17 @@ sparc_file_end (void) > - #ifdef DWARF2_UNWIND_INFO > - do_cfi = dwarf2out_do_cfi_asm (); > - if (do_cfi) > -- output_asm_insn (".cfi_startproc", NULL); > -+ fprintf (asm_out_file, "\t.cfi_startproc\n"); > - #endif > - if (flag_delayed_branch) > -- { > -- output_asm_insn ("jmp\t%%o7+8", NULL); > -- output_asm_insn (" add\t%%o7, %0, %0", &got_register_rtx); > -- } > -+ fprintf (asm_out_file, "\tjmp\t%%o7+8\n\t add\t%%o7, %s, %s\n", > -+ reg_name, reg_name); > - else > -- { > -- output_asm_insn ("add\t%%o7, %0, %0", &got_register_rtx); > -- output_asm_insn ("jmp\t%%o7+8", NULL); > -- output_asm_insn (" nop", NULL); > -- } > -+ fprintf (asm_out_file, "\tadd\t%%o7, %s, %s\n\tjmp\t%%o7+8\n\t nop\n", > -+ reg_name, reg_name); > - #ifdef DWARF2_UNWIND_INFO > - if (do_cfi) > -- output_asm_insn (".cfi_endproc", NULL); > -+ fprintf (asm_out_file, "\t.cfi_endproc\n"); > - #endif > - } > - > -@@ -13035,10 +13009,7 @@ sparc_init_pic_reg (void) > - edge entry_edge; > - rtx_insn *seq; > - > -- /* In PIC mode, we need to always initialize the PIC register if optimization > -- is enabled, because we are called from IRA and LRA may later force things > -- to the constant pool for optimization purposes. */ > -- if (!flag_pic || (!crtl->uses_pic_offset_table && !optimize)) > -+ if (!crtl->uses_pic_offset_table) > - return; > - > - start_sequence (); > -diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md > -index 468e2cc5d3b..25134bd1148 100644 > ---- a/gcc/config/sparc/sparc.md > -+++ b/gcc/config/sparc/sparc.md > -@@ -1601,7 +1601,10 @@ > - (clobber (reg:P O7_REG))] > - "REGNO (operands[0]) == INTVAL (operands[3])" > - { > -- return output_load_pcrel_sym (operands); > -+ if (flag_delayed_branch) > -+ return "sethi\t%%hi(%a1-4), %0\n\tcall\t%a2\n\t add\t%0, %%lo(%a1+4), %0"; > -+ else > -+ return "sethi\t%%hi(%a1-8), %0\n\tadd\t%0, %%lo(%a1-4), %0\n\tcall\t%a2\n\t nop"; > - } > - [(set (attr "type") (const_string "multi")) > - (set (attr "length") > -diff --git a/gcc/testsuite/gcc.c-torture/compile/20191108-1.c b/gcc/testsuite/gcc.c-torture/compile/20191108-1.c > -deleted file mode 100644 > -index 7929751bb06..00000000000 > ---- a/gcc/testsuite/gcc.c-torture/compile/20191108-1.c > -+++ /dev/null > -@@ -1,14 +0,0 @@ > --/* PR target/92095 */ > --/* Testcase by Sergei Trofimovich */ > -- > --typedef union { > -- double a; > -- int b[2]; > --} c; > -- > --double d(int e) > --{ > -- c f; > -- (&f)->b[0] = 15728640; > -- return e ? -(&f)->a : (&f)->a; > --} > -diff --git a/gcc/testsuite/gcc.target/sparc/overflow-3.c b/gcc/testsuite/gcc.target/sparc/overflow-3.c > -index 18253bb6e5e..8cb24f52f7b 100644 > ---- a/gcc/testsuite/gcc.target/sparc/overflow-3.c > -+++ b/gcc/testsuite/gcc.target/sparc/overflow-3.c > -@@ -1,5 +1,5 @@ > - /* { dg-do compile } */ > --/* { dg-options "-O -fno-pie" } */ > -+/* { dg-options "-O" } */ > - /* { dg-require-effective-target lp64 } */ > - > - #include > -diff --git a/gcc/testsuite/gcc.target/sparc/overflow-4.c b/gcc/testsuite/gcc.target/sparc/overflow-4.c > -index fb30877efb9..868edea2b9e 100644 > ---- a/gcc/testsuite/gcc.target/sparc/overflow-4.c > -+++ b/gcc/testsuite/gcc.target/sparc/overflow-4.c > -@@ -1,5 +1,5 @@ > - /* { dg-do compile } */ > --/* { dg-options "-O -fno-pie -mno-vis3" } */ > -+/* { dg-options "-O -mno-vis3" } */ > - /* { dg-require-effective-target lp64 } */ > - > - #include > -diff --git a/gcc/testsuite/gcc.target/sparc/overflow-5.c b/gcc/testsuite/gcc.target/sparc/overflow-5.c > -index 509d957715d..501ce04f7a1 100644 > ---- a/gcc/testsuite/gcc.target/sparc/overflow-5.c > -+++ b/gcc/testsuite/gcc.target/sparc/overflow-5.c > -@@ -1,5 +1,5 @@ > - /* { dg-do compile } */ > --/* { dg-options "-O -fno-pie -mvis3" } */ > -+/* { dg-options "-O -mvis3" } */ > - /* { dg-require-effective-target lp64 } */ > - > - #include > --- > -2.25.4 > - > -- > 2.44.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Wed May 1 18:11:25 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 20:11:25 +0200 Subject: [Buildroot] [PATCH 2/3] configs/qemu_sparc_ss10_defconfig: Restore. In-Reply-To: <20240501092328.323236-2-dm.chestnykh@gmail.com> References: <20240501092328.323236-1-dm.chestnykh@gmail.com> <20240501092328.323236-2-dm.chestnykh@gmail.com> Message-ID: Dmitry, All, On 2024-05-01 12:23 +0300, Dmitry Chestnykh spake thusly: > With uClibc-ng-1.0.48 we can restore this config > because now sparc systems work without reverting GCC commits. > > Signed-off-by: Dmitry Chestnykh > --- > arch/Config.in | 5 ----- > configs/qemu_sparc_ss10_defconfig | 28 ++++++++++++++++++++++++++++ > 2 files changed, 28 insertions(+), 5 deletions(-) > create mode 100644 configs/qemu_sparc_ss10_defconfig This patch is doing two things: 1. allow building an internal toolchain for sparc; 2. (re)introduce a defconfig. It should be two different patches, in the order above. Regards, Yann E. MORIN. > diff --git a/arch/Config.in b/arch/Config.in > index 9912f9fce6..e7349e83ae 100644 > --- a/arch/Config.in > +++ b/arch/Config.in > @@ -216,11 +216,6 @@ config BR2_sh > config BR2_sparc > bool "SPARC" > select BR2_USE_MMU > - # uClibc-ng broken on sparc due to recent gcc changes > - # that need to be reverted since gcc 8.4, 9.3 and 10.1. > - # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784 > - # gcc <= 10.x has been removed from Buildroot. > - select BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT > help > SPARC (from Scalable Processor Architecture) is a RISC > instruction set architecture (ISA) developed by Sun > diff --git a/configs/qemu_sparc_ss10_defconfig b/configs/qemu_sparc_ss10_defconfig > new file mode 100644 > index 0000000000..a8e3df9180 > --- /dev/null > +++ b/configs/qemu_sparc_ss10_defconfig > @@ -0,0 +1,28 @@ > +# Architecture > +BR2_sparc=y > +BR2_sparc_v8=y > + > +# System > +BR2_SYSTEM_DHCP="eth0" > + > +# Filesystem > +BR2_TARGET_ROOTFS_EXT2=y > +# BR2_TARGET_ROOTFS_TAR is not set > + > +# Image > +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" > +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" > + > +# Linux headers same as kernel > +BR2_PACKAGE_HOST_LINUX_HEADERS_AS_KERNEL=y > + > +# Linux kernel > +BR2_LINUX_KERNEL=y > +BR2_LINUX_KERNEL_CUSTOM_VERSION=y > +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.6" > +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y > +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sparc-ss10/linux.config" > + > +# host-qemu for gitlab testing > +BR2_PACKAGE_HOST_QEMU=y > +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y > -- > 2.44.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Wed May 1 18:20:45 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 20:20:45 +0200 Subject: [Buildroot] [PATCH v2 1/3] package/uclibc: Bump to 1.0.48. In-Reply-To: <20240501093725.325194-1-dm.chestnykh@gmail.com> References: <20240501093725.325194-1-dm.chestnykh@gmail.com> Message-ID: Dimitry, All, Thanks for working on this version bump! :-) When resending a patch in a series, resend the full series, not just the fixed patch. Also... On 2024-05-01 12:37 +0300, Dmitry Chestnykh spake thusly: > In 1.0.48 release uClibc-ng has provided the fix > for SPARC related to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784 > > Signed-off-by: Dmitry Chestnykh > --- ... when you send a v2 (v3...) of a patch, you must include a little explanations about what changed between the versions. See for example: https://lore.kernel.org/buildroot/ZjI4anypCjkVxtjO at waldemar-brodkorb.de/ It would have helped spot the fact that the licnese hash has changed, see below... > package/uclibc/uclibc.hash | 6 +++--- > package/uclibc/uclibc.mk | 2 +- > 2 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/package/uclibc/uclibc.hash b/package/uclibc/uclibc.hash > index a10ceab54c..7097bbf99a 100644 > --- a/package/uclibc/uclibc.hash > +++ b/package/uclibc/uclibc.hash > @@ -1,4 +1,4 @@ > -# From https://downloads.uclibc-ng.org/releases/1.0.47/uClibc-ng-1.0.47.tar.xz.sha256 > -sha256 29a4d684a06da344ee3ee09acc2ca7649d592ae3ff848f698145c46def05efcb uClibc-ng-1.0.47.tar.xz > +# From https://downloads.uclibc-ng.org/releases/1.0.47/uClibc-ng-1.0.48.tar.xz.sha256 > +sha256 3bf5fc6cc5cbc454b6c478424755c6f71e7c15578a2c966f02606aa5c5596e21 uClibc-ng-1.0.48.tar.xz > # Locally calculated > -sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 COPYING.LIB > +sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING.LIB We have hashes for license files, so that we notice when the license file changes. In which case we must assess the reason for that change, and it must be explained in the commit log, even if briefly: - did the licensing terms change, and if so, what is the new license? - was there just a minor update, like copyright years? - something else? In any case, updating the hash of a license file should not be done without explanations. Can you respin your series with the requested changes, please? Do not hesitate to carry Waldemar's tested-by tags where appropriate (i.e. on the version bump, the patch drop, but not on the internal toolchain backend and defconfig, because it is not obvious what it applies to). Regards, Yann E. MORIN. > diff --git a/package/uclibc/uclibc.mk b/package/uclibc/uclibc.mk > index a7b18133ff..9593e18d45 100644 > --- a/package/uclibc/uclibc.mk > +++ b/package/uclibc/uclibc.mk > @@ -4,7 +4,7 @@ > # > ################################################################################ > > -UCLIBC_VERSION = 1.0.47 > +UCLIBC_VERSION = 1.0.48 > UCLIBC_SOURCE = uClibc-ng-$(UCLIBC_VERSION).tar.xz > UCLIBC_SITE = https://downloads.uclibc-ng.org/releases/$(UCLIBC_VERSION) > UCLIBC_LICENSE = LGPL-2.1+ > -- > 2.44.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From thomas.petazzoni at bootlin.com Wed May 1 18:30:31 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 20:30:31 +0200 Subject: [Buildroot] [git commit] package/starfive-spltool: new package Message-ID: <20240501185220.E9E9A863B4@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=6c4a99205094dea87986c0e12e955e9ef0676771 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master This patch adds a new package for the Starfive SPL tool. It is used to add a header to the Secondary Program Loader for platforms based on the Starfive JH7110 SoC. Signed-off-by: Thomas Bonnefille Signed-off-by: Thomas Petazzoni --- DEVELOPERS | 3 +++ package/Config.in.host | 1 + package/starfive-spltool/Config.in.host | 8 ++++++++ package/starfive-spltool/starfive-spltool.hash | 2 ++ package/starfive-spltool/starfive-spltool.mk | 20 ++++++++++++++++++++ 5 files changed, 34 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index 51a5cad167..6180d238f0 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2960,6 +2960,9 @@ N: Thijs Vermeir F: package/ranger/ F: package/x265/ +N: Thomas Bonnefille +F: package/starfive-spltool/ + N: Thomas Claveirole F: package/fcgiwrap/ F: package/openlayers/ diff --git a/package/Config.in.host b/package/Config.in.host index 9543a22ffc..986b2854d0 100644 --- a/package/Config.in.host +++ b/package/Config.in.host @@ -107,6 +107,7 @@ menu "Host utilities" source "package/sentry-cli/Config.in.host" source "package/sloci-image/Config.in.host" source "package/squashfs/Config.in.host" + source "package/starfive-spltool/Config.in.host" source "package/sunxi-tools/Config.in.host" source "package/swig/Config.in.host" source "package/swugenerator/Config.in.host" diff --git a/package/starfive-spltool/Config.in.host b/package/starfive-spltool/Config.in.host new file mode 100644 index 0000000000..afb2777ca6 --- /dev/null +++ b/package/starfive-spltool/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_STARFIVE_SPLTOOL + bool "host starfive-spltool" + depends on BR2_riscv + help + Add header to the Secondary Program Loader with the 3rd party + software given by Starfive-Tech for their SoCs. + + https://github.com/starfive-tech/soft_3rdpart/tree/JH7110_VisionFive2_devel/spl_tool diff --git a/package/starfive-spltool/starfive-spltool.hash b/package/starfive-spltool/starfive-spltool.hash new file mode 100644 index 0000000000..55835de310 --- /dev/null +++ b/package/starfive-spltool/starfive-spltool.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 f5466225021fbe4e983cc85f32ce11d92ad30689b18e0d1390d16f6bfab74477 starfive-spltool-JH7110_VF2_515_v5.11.3.tar.gz diff --git a/package/starfive-spltool/starfive-spltool.mk b/package/starfive-spltool/starfive-spltool.mk new file mode 100644 index 0000000000..559df35074 --- /dev/null +++ b/package/starfive-spltool/starfive-spltool.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# starfive-spltool +# +################################################################################ + +STARFIVE_SPLTOOL_VERSION = JH7110_VF2_515_v5.11.3 +STARFIVE_SPLTOOL_SITE = $(call github,starfive-tech,soft_3rdpart,$(STARFIVE_SPLTOOL_VERSION)) +STARFIVE_SPLTOOL_LICENSE = GPL-2.0+ +STARFIVE_SPLTOOL_FILES = spl_tool/LICENSE + +define HOST_STARFIVE_SPLTOOL_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D)/spl_tool +endef + +define HOST_STARFIVE_SPLTOOL_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/spl_tool/spl_tool $(HOST_DIR)/bin/spl_tool +endef + +$(eval $(host-generic-package)) From thomas.petazzoni at bootlin.com Wed May 1 18:51:57 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 20:51:57 +0200 Subject: [Buildroot] [git commit] configs/pine64_star64: new defconfig Message-ID: <20240501185221.03508863B6@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=35635cdc5b59a146928b82812d1c3c6db40b09f1 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master This patch adds a new defconfig for the Star64 board made by Pine64. This board is based on the Starfive JH7110 RISC-V 64 bits SoC. See: https://wiki.pine64.org/wiki/STAR64. This patch uses a custom Kernel and U-Boot made for this board. The SPL has to be signed with the Starfive SPL-Tool which is a software provided by the vendor to get the necessary headers on the SPL. The image configuration is based on the work done by Ivan Velickovic . Signed-off-by: Thomas Bonnefille Signed-off-by: Thomas Petazzoni --- DEVELOPERS | 2 ++ board/pine64/star64/genimage.cfg | 24 +++++++++++++ .../star64/overlay/boot/extlinux/extlinux.conf | 4 +++ board/pine64/star64/post-build.sh | 9 +++++ board/pine64/star64/readme.txt | 32 +++++++++++++++++ board/pine64/star64/star64-uboot-fit-image.its | 29 ++++++++++++++++ configs/pine64_star64_defconfig | 40 ++++++++++++++++++++++ 7 files changed, 140 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index 6180d238f0..c132b61f2a 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2961,6 +2961,8 @@ F: package/ranger/ F: package/x265/ N: Thomas Bonnefille +F: board/pine64/star64 +F: configs/pine64_star64_defconfig F: package/starfive-spltool/ N: Thomas Claveirole diff --git a/board/pine64/star64/genimage.cfg b/board/pine64/star64/genimage.cfg new file mode 100644 index 0000000000..74940016f4 --- /dev/null +++ b/board/pine64/star64/genimage.cfg @@ -0,0 +1,24 @@ +# SD card image for the Pine64 Star64 board + +image sdcard.img { + hdimage { + partition-table-type = "gpt" + } + + partition spl { + image = "u-boot-spl.bin.normal.out" + partition-type-uuid = 2E54B353-1271-4842-806F-E436D6AF6985 + offset = 2M + } + + partition uboot { + image = "opensbi_uboot_payload.img" + partition-type-uuid = 5B193300-FC78-40CD-8002-E86C45580B47 + offset = 4M + } + + partition rootfs { + image = "rootfs.ext4" + bootable = true + } +} diff --git a/board/pine64/star64/overlay/boot/extlinux/extlinux.conf b/board/pine64/star64/overlay/boot/extlinux/extlinux.conf new file mode 100644 index 0000000000..db7cfb7b8b --- /dev/null +++ b/board/pine64/star64/overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,4 @@ +label star64 + kernel /boot/Image + devicetree /boot/jh7110-pine64-star64.dtb + append root=/dev/mmcblk1p3 earlycon=sbi diff --git a/board/pine64/star64/post-build.sh b/board/pine64/star64/post-build.sh new file mode 100755 index 0000000000..ed0a6ebd52 --- /dev/null +++ b/board/pine64/star64/post-build.sh @@ -0,0 +1,9 @@ +#!/bin/bash +BOARD_DIR="$CONFIG_DIR"/board/pine64/star64 + +# Add header to the SPL +"$HOST_DIR"/bin/spl_tool -c -f "$BINARIES_DIR"/u-boot-spl.bin + +# Create the u-boot FIT image +cp "$BOARD_DIR"/star64-uboot-fit-image.its "$BINARIES_DIR" +mkimage -f "$BINARIES_DIR"/star64-uboot-fit-image.its -A riscv -O u-boot -T firmware "$BINARIES_DIR"/opensbi_uboot_payload.img diff --git a/board/pine64/star64/readme.txt b/board/pine64/star64/readme.txt new file mode 100644 index 0000000000..5e6ce25108 --- /dev/null +++ b/board/pine64/star64/readme.txt @@ -0,0 +1,32 @@ +Pine64 Star64 +============= + +The Star64 is a low-cost RISC-V 64-bit based platform, powered by a +Starfive JH7110 processor. + +https://wiki.pine64.org/wiki/STAR64 + +How to build +============ + +$ make pine64_star64_defconfig +$ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX conv=fdatasync + +Preparing the board +=================== + +Connect a TTL UART cable to pin 6 (GND), 8 (TX) and 10 (RX). + +Insert your SD card. + +Power-up the board using a 12V power supply. diff --git a/board/pine64/star64/star64-uboot-fit-image.its b/board/pine64/star64/star64-uboot-fit-image.its new file mode 100644 index 0000000000..08f603163a --- /dev/null +++ b/board/pine64/star64/star64-uboot-fit-image.its @@ -0,0 +1,29 @@ +/dts-v1/; + +/ { + description = "U-boot-spl FIT image for JH7110 Pine64 Star64"; + #address-cells = <2>; + + images { + firmware { + description = "u-boot"; + data = /incbin/("fw_payload.bin"); + type = "firmware"; + arch = "riscv"; + os = "u-boot"; + load = <0x0 0x40000000>; + entry = <0x0 0x40000000>; + compression = "none"; + }; + }; + + configurations { + default = "config-1"; + + config-1 { + description = "U-boot-spl FIT config for JH7110 Pine64 Star64"; + firmware = "firmware"; + }; + }; +}; + diff --git a/configs/pine64_star64_defconfig b/configs/pine64_star64_defconfig new file mode 100644 index 0000000000..2c0c17ad62 --- /dev/null +++ b/configs/pine64_star64_defconfig @@ -0,0 +1,40 @@ +BR2_riscv=y + +# Linux headers same as kernel, a 5.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y + +# Kernel configuration +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,Fishwaldo,Star64_linux,1456c984f15e21e28fb8a9ce96d0ca10e61a71c4)/linux-1456c984f15e21e28fb8a9ce96d0ca10e61a71c4.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="pine64_star64" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="starfive/jh7110-pine64-star64" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# OpenSBI configuration +BR2_TARGET_OPENSBI=y +BR2_TARGET_OPENSBI_UBOOT_PAYLOAD=y +BR2_TARGET_OPENSBI_PLAT="generic" + +# U-Boot configuration +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,Fishwaldo,u-boot,172b47f62039605d6806fa96bd403c21cda28996)/u-boot-172b47f62039605d6806fa96bd403c21cda28996.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="pine64_star64" +BR2_TARGET_UBOOT_SPL=y + +# Misc +BR2_ROOTFS_OVERLAY="board/pine64/star64/overlay/" +BR2_PACKAGE_HOST_STARFIVE_SPLTOOL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="100M" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/pine64/star64/genimage.cfg" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/pine64/star64/post-build.sh" +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y From thomas.petazzoni at bootlin.com Wed May 1 18:53:47 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 20:53:47 +0200 Subject: [Buildroot] [PATCH 1/2] package/starfive_spltool: new package In-Reply-To: <20240403091952.653698-2-thomas.bonnefille@bootlin.com> References: <20240403091952.653698-1-thomas.bonnefille@bootlin.com> <20240403091952.653698-2-thomas.bonnefille@bootlin.com> Message-ID: <20240501205347.41b44d6d@windsurf> On Wed, 3 Apr 2024 11:14:39 +0200 Thomas Bonnefille via buildroot wrote: > This patch adds a new package for the Starfive SPL tool. It is used to > add header to the Secondary Program Loader for board based on the > Starfive JH7110 SoC. > > Signed-off-by: Thomas Bonnefille > --- > DEVELOPERS | 3 +++ > package/Config.in.host | 1 + > package/starfive-spltool/Config.in.host | 8 ++++++++ > .../starfive-spltool.hash | 2 ++ > package/starfive-spltool/starfive-spltool.mk | 20 +++++++++++++++++++ > 5 files changed, 34 insertions(+) > create mode 100644 package/starfive-spltool/Config.in.host > create mode 100644 package/starfive-spltool/JH7110_VF2_515_v5.11.3/starfive-spltool.hash > create mode 100644 package/starfive-spltool/starfive-spltool.mk Thanks, I've applied to master after: - fixing the commit title starfive_spltool -> starfive-spltool - moving the .hash file directly under package/starfive-spltool/, using a versioned directory is only useful for packages for which multiple versions are supported, which is not the case here Thanks! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Wed May 1 18:54:55 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 20:54:55 +0200 Subject: [Buildroot] [PATCH 2/2] configs/pine64-star64: new defconfig In-Reply-To: <20240403091952.653698-3-thomas.bonnefille@bootlin.com> References: <20240403091952.653698-1-thomas.bonnefille@bootlin.com> <20240403091952.653698-3-thomas.bonnefille@bootlin.com> Message-ID: <20240501205455.2f5c46e6@windsurf> Hello Thomas, On Wed, 3 Apr 2024 11:14:40 +0200 Thomas Bonnefille via buildroot wrote: > This patch adds a new defconfig for the Star64 board made by Pine64. This > board is based on the Starfive JH7110 RISC-V 64 bits SoC. > https://wiki.pine64.org/wiki/STAR64 > This patch uses a custom Kernel and U-Boot made for this board. The SPL > has to be signed with the Starfive SPL-Tool which is a software > provided by the vendor to get the necessary headers on the SPL. > The image configuration is based on the work done by Ivan Velickovic > . > > Signed-off-by: Thomas Bonnefille Thanks, I've applied after: - adjusting the commit title pine64-star64 -> pine64_star64 (to match the name of the defconfig) - adding the host-uboot-tools package with FIT support to the defconfig, so that it gets built. Otherwise the build fails at the end when the post-build script calls mkimage as mkimage is not available. Probably it was working on your machine because you had mkimage installed system-wide, but Buildroot shouldn't depend on this. Thanks a lot! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Wed May 1 18:56:22 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 20:56:22 +0200 Subject: [Buildroot] [git commit] package/lua-lsdbus: new package Message-ID: <20240501190033.B03F1863C9@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=119cfd836ed11c2fcdf9d7de32ad5803402b79b1 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Francois Perrad Signed-off-by: Thomas Petazzoni --- package/Config.in | 1 + package/lua-lsdbus/Config.in | 12 ++++++++++++ package/lua-lsdbus/lua-lsdbus.hash | 3 +++ package/lua-lsdbus/lua-lsdbus.mk | 17 +++++++++++++++++ 4 files changed, 33 insertions(+) diff --git a/package/Config.in b/package/Config.in index 1935077f0f..38e9c94198 100644 --- a/package/Config.in +++ b/package/Config.in @@ -751,6 +751,7 @@ menu "Lua libraries/modules" source "package/lua-livr/Config.in" source "package/lua-livr-extra/Config.in" source "package/lua-lpeg-patterns/Config.in" + source "package/lua-lsdbus/Config.in" source "package/lua-lunitx/Config.in" source "package/lua-lunix/Config.in" source "package/lua-lyaml/Config.in" diff --git a/package/lua-lsdbus/Config.in b/package/lua-lsdbus/Config.in new file mode 100644 index 0000000000..f4eda20d6e --- /dev/null +++ b/package/lua-lsdbus/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LUA_LSDBUS + bool "lua-lsdbus" + depends on BR2_PACKAGE_SYSTEMD + select BR2_PACKAGE_MXML + select BR2_PACKAGE_LUA_COMPAT53 if BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_1 + help + Lua D-Bus bindings based on sd-bus and sd-event + + https://github.com/kmarkus/lsdbus + +comment "lua-lsdbus needs systemd" + depends on !BR2_PACKAGE_SYSTEMD diff --git a/package/lua-lsdbus/lua-lsdbus.hash b/package/lua-lsdbus/lua-lsdbus.hash new file mode 100644 index 0000000000..369370d63a --- /dev/null +++ b/package/lua-lsdbus/lua-lsdbus.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 b515cd00c844abc80993e9552d884c71a80a680e47b90a628f1f7bd18b9b821a lua-lsdbus-d132f8b2bd390d0b1c7d17b300190279f92bd494.tar.gz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/package/lua-lsdbus/lua-lsdbus.mk b/package/lua-lsdbus/lua-lsdbus.mk new file mode 100644 index 0000000000..cbd7ee9d4b --- /dev/null +++ b/package/lua-lsdbus/lua-lsdbus.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# lua-lsdbus +# +################################################################################ + +LUA_LSDBUS_VERSION = d132f8b2bd390d0b1c7d17b300190279f92bd494 +LUA_LSDBUS_SITE = $(call github,kmarkus,lsdbus,$(LUA_LSDBUS_VERSION)) +LUA_LSDBUS_DEPENDENCIES = luainterpreter mxml systemd +LUA_LSDBUS_LICENSE = LGPL-2.1 +LUA_LSDBUS_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_LUA_COMPAT53),y) +LUA_LSDBUS_DEPENDENCIES += lua-compat53 +endif + +$(eval $(cmake-package)) From thomas.petazzoni at bootlin.com Wed May 1 19:02:02 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:02:02 +0200 Subject: [Buildroot] [PATCH] package/lua-lsdbus: new package In-Reply-To: <20240403085524.1650692-1-francois.perrad@gadz.org> References: <20240403085524.1650692-1-francois.perrad@gadz.org> Message-ID: <20240501210202.03f37cf8@windsurf> On Wed, 3 Apr 2024 10:55:24 +0200 Francois Perrad wrote: > Signed-off-by: Francois Perrad > --- > package/Config.in | 1 + > package/lua-lsdbus/Config.in | 12 ++++++++++++ > package/lua-lsdbus/lua-lsdbus.hash | 3 +++ > package/lua-lsdbus/lua-lsdbus.mk | 17 +++++++++++++++++ > 4 files changed, 33 insertions(+) > create mode 100644 package/lua-lsdbus/Config.in > create mode 100644 package/lua-lsdbus/lua-lsdbus.hash > create mode 100644 package/lua-lsdbus/lua-lsdbus.mk Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From tekieli.lukasz at gmail.com Wed May 1 19:04:41 2024 From: tekieli.lukasz at gmail.com (Lukasz Tekieli) Date: Wed, 1 May 2024 21:04:41 +0200 Subject: [Buildroot] [PATCH 1/1] configs/visionfive2_defconfig: add hashes for linux/opensbi/u-boot Message-ID: <20240501190441.496683-1-tekieli.lukasz@gmail.com> Enable BR2_DOWNLOAD_FORCE_CHECK_HASHES and set the patch directory. Signed-off-by: Lukasz Tekieli --- board/visionfive2/patches/linux-headers/linux-headers.hash | 1 + board/visionfive2/patches/linux/linux.hash | 2 ++ board/visionfive2/patches/opensbi/opensbi.hash | 2 ++ board/visionfive2/patches/uboot/uboot.hash | 2 ++ configs/visionfive2_defconfig | 2 ++ 5 files changed, 9 insertions(+) create mode 120000 board/visionfive2/patches/linux-headers/linux-headers.hash create mode 100644 board/visionfive2/patches/linux/linux.hash create mode 100644 board/visionfive2/patches/opensbi/opensbi.hash create mode 100644 board/visionfive2/patches/uboot/uboot.hash diff --git a/board/visionfive2/patches/linux-headers/linux-headers.hash b/board/visionfive2/patches/linux-headers/linux-headers.hash new file mode 120000 index 0000000000..5808d92afe --- /dev/null +++ b/board/visionfive2/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/visionfive2/patches/linux/linux.hash b/board/visionfive2/patches/linux/linux.hash new file mode 100644 index 0000000000..ccad8068dd --- /dev/null +++ b/board/visionfive2/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9ac322d85bcf98a04667d929f5c2666b15bd58c6c2d68dd512c72acbced07d04 linux-6.8.2.tar.xz diff --git a/board/visionfive2/patches/opensbi/opensbi.hash b/board/visionfive2/patches/opensbi/opensbi.hash new file mode 100644 index 0000000000..bc4058abe6 --- /dev/null +++ b/board/visionfive2/patches/opensbi/opensbi.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 319b62a4186fbce9b81a0c5f0ec9f003a10c808397a72138bc9745d9b87b1eb1 opensbi-1.4.tar.gz diff --git a/board/visionfive2/patches/uboot/uboot.hash b/board/visionfive2/patches/uboot/uboot.hash new file mode 100644 index 0000000000..97a2b4eaf9 --- /dev/null +++ b/board/visionfive2/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 diff --git a/configs/visionfive2_defconfig b/configs/visionfive2_defconfig index 69c44dfbdd..bb8ab082af 100644 --- a/configs/visionfive2_defconfig +++ b/configs/visionfive2_defconfig @@ -1,4 +1,6 @@ BR2_riscv=y +BR2_GLOBAL_PATCH_DIR="board/visionfive2/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y BR2_SYSTEM_DHCP="eth0" BR2_ROOTFS_OVERLAY="board/visionfive2/overlay" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/visionfive2/post-image.sh" -- 2.40.1 From thomas.petazzoni at bootlin.com Wed May 1 19:05:38 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:05:38 +0200 Subject: [Buildroot] [git commit] configs/pc_x86_64_{bios, efi}_defconfig: add wireless regdb Message-ID: <20240501190715.612B7863D6@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=16e9f514905a12caab1d1b308dd95f8b79977828 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Wireless regulatory database lists the allowed radio frequencies for each local jurisdiction. Since linux-4.15 the kernel supports loading the files regulatory.db/regulatory.db.p7s directly from the /lib/firmware directory. Currently this package is not enabled and kernel complains with the following message on every boot: """ platform regulatory.0: Direct firmware load for regulatory.db failed with error -2 cfg80211: failed to load regulatory.db """ Add wireless regulatory database package to fix the issue. Signed-off-by: Konstantin Aladyshev Signed-off-by: Thomas Petazzoni --- configs/pc_x86_64_bios_defconfig | 1 + configs/pc_x86_64_efi_defconfig | 1 + 2 files changed, 2 insertions(+) diff --git a/configs/pc_x86_64_bios_defconfig b/configs/pc_x86_64_bios_defconfig index 6032544d2d..cba92ad93d 100644 --- a/configs/pc_x86_64_bios_defconfig +++ b/configs/pc_x86_64_bios_defconfig @@ -62,3 +62,4 @@ BR2_PACKAGE_ACPID=y BR2_PACKAGE_CONNMAN=y BR2_PACKAGE_CONNMAN_CLIENT=y BR2_PACKAGE_CONNMAN_WIFI=y +BR2_PACKAGE_WIRELESS_REGDB=y diff --git a/configs/pc_x86_64_efi_defconfig b/configs/pc_x86_64_efi_defconfig index afb652f3fc..fe6686b4a2 100644 --- a/configs/pc_x86_64_efi_defconfig +++ b/configs/pc_x86_64_efi_defconfig @@ -63,3 +63,4 @@ BR2_PACKAGE_ACPID=y BR2_PACKAGE_CONNMAN=y BR2_PACKAGE_CONNMAN_CLIENT=y BR2_PACKAGE_CONNMAN_WIFI=y +BR2_PACKAGE_WIRELESS_REGDB=y From thomas.petazzoni at bootlin.com Wed May 1 19:07:28 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:07:28 +0200 Subject: [Buildroot] [PATCH] configs/pc_x86_64_{bios, efi}_defconfig: add wireless regdb In-Reply-To: <20240330212200.794927-1-aladyshev22@gmail.com> References: <20240330212200.794927-1-aladyshev22@gmail.com> Message-ID: <20240501210728.7fe0ab6a@windsurf> On Sun, 31 Mar 2024 00:22:00 +0300 Konstantin Aladyshev wrote: > Wireless regulatory database lists the allowed radio frequencies for > each local jurisdiction. Since linux-4.15 the kernel supports loading > the files regulatory.db/regulatory.db.p7s directly from the > /lib/firmware directory. Currently this package is not enabled and > kernel complains with the following message on every boot: > """ > platform regulatory.0: Direct firmware load for regulatory.db failed > with error -2 > cfg80211: failed to load regulatory.db > """ > Add wireless regulatory database package to fix the issue. > > Signed-off-by: Konstantin Aladyshev > --- > configs/pc_x86_64_bios_defconfig | 1 + > configs/pc_x86_64_efi_defconfig | 1 + > 2 files changed, 2 insertions(+) Sorry for the long delay: patch applied. Thanks! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From arnout at mind.be Wed May 1 19:09:22 2024 From: arnout at mind.be (Arnout Vandecappelle) Date: Wed, 1 May 2024 21:09:22 +0200 Subject: [Buildroot] [PATCH 1/1] package/pkg-download: add per package download fallback disable In-Reply-To: <6338e428-df6e-40db-8a99-9390d150131d@newtesc.com.br> References: <20220917205253.3737d1c6@windsurf> <6338e428-df6e-40db-8a99-9390d150131d@newtesc.com.br> Message-ID: <0e92066e-ce6f-4d69-9f43-979c62a4d40c@mind.be> On 30/04/2024 19:56, Fl?vio Tapaj?s wrote: > Sorry to necrobump, but such a feature would be handy when using FOO_DL_OPTS to > ensure http authentication. > > Tokens, usernames or passwords will be leaked to the fallback server in case of > failure of the primary source. This could be some source of vulnerability I don't see how any of these would be leaked... A token is passed either as a password or as a header. There's no way to specify per-package wget options anyway, so I guess it will be passed as a password. A password can either be passed in .netrc or .wgetrc (in which case it is site-specific so won't be sent to PRIMARY_SITE or BACKUP_SITE), or it can be passed in the URL, as https://user:pass at server.com/path/source.tar.gz The whole user:pass part also doesn't get used in PRIMARY_SITE or BACKUP_SITE. The above applies to http downloads. For other downloads, it doesn't even matter at all, because that download method won't be used for PRIMARY_SITE and SECONDARY_SITE so any authentication stuff won't be used either. So how does leaking take place? Regards, Arnout > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot From peter at korsgaard.com Wed May 1 19:13:08 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 01 May 2024 21:13:08 +0200 Subject: [Buildroot] [PATCH 1/1] support/testing: add lvm2 runtime test In-Reply-To: <20240213204915.27898-1-ju.o@free.fr> (Julien Olivain's message of "Tue, 13 Feb 2024 21:49:15 +0100") References: <20240213204915.27898-1-ju.o@free.fr> Message-ID: <87msp99whn.fsf@dell.be.48ers.dk> >>>>> "Julien" == Julien Olivain writes: > Signed-off-by: Julien Olivain Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From thomas.petazzoni at bootlin.com Wed May 1 19:08:27 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:08:27 +0200 Subject: [Buildroot] [git commit] package/esp-hosted: bump version to 2024-04-01 Message-ID: <20240501191737.47564863DF@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=9fb4ed3a041eceffdc40139b33de697ca9afa30e branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Add support for Linux 6.9 Signed-off-by: Giulio Benetti Signed-off-by: Thomas Petazzoni --- ...osted_ng-fix-build-failure-on-Linux-6.9.0.patch | 37 ++++++++++++++++++++++ package/esp-hosted/esp-hosted.hash | 2 +- package/esp-hosted/esp-hosted.mk | 2 +- 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/package/esp-hosted/0001-esp_hosted_ng-fix-build-failure-on-Linux-6.9.0.patch b/package/esp-hosted/0001-esp_hosted_ng-fix-build-failure-on-Linux-6.9.0.patch new file mode 100644 index 0000000000..21e8730d37 --- /dev/null +++ b/package/esp-hosted/0001-esp_hosted_ng-fix-build-failure-on-Linux-6.9.0.patch @@ -0,0 +1,37 @@ +From 1cd8671eb64a1278466e7a9c90ceca1be0f8c0d5 Mon Sep 17 00:00:00 2001 +From: Giulio Benetti +Date: Mon, 1 Apr 2024 17:15:19 +0200 +Subject: [PATCH] esp_hosted_ng: fix build failure on Linux 6.9.0 + +With Linux commit: +https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=620d269f29a569ba37419cc03cf1da2d55f6252a +spi_master compatibility has gone, so let's redefine missing needed +macros spi_master and spi_master_put() locally if Linux version is >= +6.9.0. + +Upstream: https://github.com/espressif/esp-hosted/pull/358 + +Signed-off-by: Giulio Benetti +--- + esp_hosted_ng/host/spi/esp_spi.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/esp_hosted_ng/host/spi/esp_spi.c b/esp_hosted_ng/host/spi/esp_spi.c +index d0bd513bd6..9817056b2d 100644 +--- a/esp_hosted_ng/host/spi/esp_spi.c ++++ b/esp_hosted_ng/host/spi/esp_spi.c +@@ -378,6 +378,11 @@ static int __spi_controller_match(struct device *dev, const void *data) + return ctlr->bus_num == *bus_num; + } + ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 9, 0)) ++#define spi_master spi_controller ++#define spi_master_put(_ctlr) spi_controller_put(_ctlr) ++#endif ++ + static struct spi_controller *spi_busnum_to_master(u16 bus_num) + { + struct platform_device *pdev = NULL; +-- +2.34.1 + diff --git a/package/esp-hosted/esp-hosted.hash b/package/esp-hosted/esp-hosted.hash index ff0839076e..d449f5030e 100644 --- a/package/esp-hosted/esp-hosted.hash +++ b/package/esp-hosted/esp-hosted.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 1c4df08132d5204a01adc2797e8f6f6d7ff945609b288cfe2dc2ea50789e8af4 esp-hosted-6a25417fc880fd744b3b0d93c11659c3e7d86384.tar.gz +sha256 8f25c01522fdcb2003ffbfcc0ccf4981f27bddc8080ba978e33590d56f5ae20b esp-hosted-669fd9cd1892bb8b364701968d5f06225346eea9.tar.gz sha256 ed57d96d27be775b22f9571d3724ef84e0d0b8f24b805ec7f87a32189de19a9c LICENSE diff --git a/package/esp-hosted/esp-hosted.mk b/package/esp-hosted/esp-hosted.mk index cc61e39b36..520ad5dc8c 100644 --- a/package/esp-hosted/esp-hosted.mk +++ b/package/esp-hosted/esp-hosted.mk @@ -4,7 +4,7 @@ # ################################################################################ -ESP_HOSTED_VERSION = 6a25417fc880fd744b3b0d93c11659c3e7d86384 +ESP_HOSTED_VERSION = 669fd9cd1892bb8b364701968d5f06225346eea9 ESP_HOSTED_SITE = $(call github,espressif,esp-hosted,$(ESP_HOSTED_VERSION)) ESP_HOSTED_DEPENDENCIES = linux ESP_HOSTED_LICENSE = GPL-2.0 From peter at korsgaard.com Wed May 1 19:17:53 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 01 May 2024 21:17:53 +0200 Subject: [Buildroot] [PATCH 1/1] package/{mesa3d, mesa3d-headers}: bump version to 24.0.4 In-Reply-To: <20240328214954.2249481-1-bernd@kuhls.net> (Bernd Kuhls's message of "Thu, 28 Mar 2024 22:49:54 +0100") References: <20240328214954.2249481-1-bernd@kuhls.net> Message-ID: <87ikzx9w9q.fsf@dell.be.48ers.dk> >>>>> "Bernd" == Bernd Kuhls writes: > Release notes: > https://lists.freedesktop.org/archives/mesa-dev/2024-March/226176.html > Signed-off-by: Bernd Kuhls Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From thomas.petazzoni at bootlin.com Wed May 1 19:18:38 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:18:38 +0200 Subject: [Buildroot] [PATCH] package/esp-hosted: bump version to 2024-04-01 In-Reply-To: <20240401152312.72881-1-giulio.benetti@benettiengineering.com> References: <20240401152312.72881-1-giulio.benetti@benettiengineering.com> Message-ID: <20240501211838.1596d8a1@windsurf> On Mon, 1 Apr 2024 17:23:12 +0200 Giulio Benetti wrote: > Add support for Linux 6.9 > > Signed-off-by: Giulio Benetti > --- > ..._ng-fix-build-failure-on-Linux-6.9.0.patch | 37 +++++++++++++++++++ > package/esp-hosted/esp-hosted.hash | 2 +- > package/esp-hosted/esp-hosted.mk | 2 +- > 3 files changed, 39 insertions(+), 2 deletions(-) > create mode 100644 package/esp-hosted/0001-esp_hosted_ng-fix-build-failure-on-Linux-6.9.0.patch Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From romain.naour at smile.fr Wed May 1 19:20:36 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 21:20:36 +0200 Subject: [Buildroot] [PATCH 00/11] update bsp binaries for TI SoCs In-Reply-To: <20240430-optee-update-v1-0-6f73c4903ec3@ti.com> References: <20240430-optee-update-v1-0-6f73c4903ec3@ti.com> Message-ID: Hello Bryan, All, Le 01/05/2024 ? 17:27, Bryan Brattlof via buildroot a ?crit?: > Hello everyone! > > This series updates all the boot binaries (U-Boot, OP-TEE, TF-A, and > Linux) to their latest versions to pull in all bug fixes and new > features additions in these projects. > > This also includes a patch I send out a while ago just to keep things > organized. > > https://lore.kernel.org/buildroot/20240402153328.1859642-1-bb at ti.com/ > > and finally some proof I didn't completely break something ;) > > https://paste.sr.ht/~bryanb/b666adef7da412de76efb5e4a68e68e0651f7928 We received only patch [4/11] boot/ti-k3-boot-firmware: bump to latest version Can you try to resend the series? Note: It would be better to use "boot/ti-k3-boot-firmware: bump to version 09.02.00.009" Best regards, Romain > > Thanks for reviewing > ~Bryan > > Signed-off-by: Bryan Brattlof > --- > Bryan Brattlof (10): > boot/optee-os: bump to release v4.2.0 > boot/uboot: bump to latest v2024.04 release of U-Boot > boot/ti-k3-r5-loader: bump to latest U-Boot release > configs/ti_am62x_sk_defconfig: update TFA to latest lts release > configs/ti_am64x_sk_defconfig: update TFA to latest lts release > configs/ti_am62x_sk_defconfig: update uboot to latest release > configs/ti_am64x_sk_defconfig: update uboot to latest release > configs/ti_am62x_sk_defconfig: update to latest kernel > configs/ti_am64x_sk_defconfig: update to latest kernel > DEVELOPERS: add myself to TI's packages and reference boards > > Bryan Brattlof via buildroot (1): > boot/ti-k3-boot-firmware: bump to latest version > > DEVELOPERS | 8 ++++++++ > .../patches/arm-trusted-firmware/arm-trusted-firmware.hash | 2 +- > board/ti/am62x-sk/patches/linux/linux.hash | 2 +- > .../patches/arm-trusted-firmware/arm-trusted-firmware.hash | 2 +- > board/ti/am64x-sk/patches/linux/linux.hash | 2 +- > boot/optee-os/Config.in | 4 ++-- > boot/optee-os/optee-os.hash | 4 ++-- > boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash | 2 +- > boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk | 4 +--- > boot/ti-k3-r5-loader/Config.in | 4 ++-- > boot/ti-k3-r5-loader/ti-k3-r5-loader.hash | 2 +- > boot/ti-k3-r5-loader/ti-k3-r5-loader.mk | 1 + > boot/uboot/Config.in | 6 +++--- > boot/uboot/uboot.hash | 2 +- > configs/ti_am62x_sk_defconfig | 9 ++++----- > configs/ti_am64x_sk_defconfig | 9 ++++----- > 16 files changed, 34 insertions(+), 29 deletions(-) > --- > base-commit: 39ed602169ecf7677328d1387d30869baeb28cea > change-id: 20240430-optee-update-b9c1bc4e9f29 > > Best regards, From peter at korsgaard.com Wed May 1 19:21:13 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 01 May 2024 21:21:13 +0200 Subject: [Buildroot] [PATCH 1/1] package/freeipmi: bump to version 1.6.14 In-Reply-To: <20240328215547.67028-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Thu, 28 Mar 2024 22:55:47 +0100") References: <20240328215547.67028-1-fontaine.fabrice@gmail.com> Message-ID: <87edal9w46.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > https://lists.gnu.org/archive/html/freeipmi-announce/2024-01/msg00001.html > https://lists.gnu.org/archive/html/freeipmi-announce/2024-01/msg00000.html > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 1 19:22:39 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 01 May 2024 21:22:39 +0200 Subject: [Buildroot] [git commit] docs/manual: fix host-python-setuptools typo In-Reply-To: <20240403195358.107E8846CD@busybox.osuosl.org> (Thomas Petazzoni via buildroot's message of "Wed, 3 Apr 2024 21:53:41 +0200") References: <20240403195358.107E8846CD@busybox.osuosl.org> Message-ID: <87a5l99w1s.fsf@dell.be.48ers.dk> >>>>> "Thomas" == Thomas Petazzoni via buildroot writes: > commit: https://git.buildroot.net/buildroot/commit/?id=f12c77442e1184427eee0960646833728a4c47db > branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master > Signed-off-by: Rapha?l M?lotte > Signed-off-by: Thomas Petazzoni Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From thomas.petazzoni at bootlin.com Wed May 1 19:18:52 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:18:52 +0200 Subject: [Buildroot] [git commit] package/fluidsynth: bump to version 2.3.5 Message-ID: <20240501192323.AA755863E5@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=0215a6d6f68e03909f54f4bbb160161b8d80503d branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master For change log since v2.3.4, see: - https://github.com/FluidSynth/fluidsynth/releases/tag/v2.3.5 Signed-off-by: Julien Olivain Signed-off-by: Thomas Petazzoni --- package/fluidsynth/fluidsynth.hash | 2 +- package/fluidsynth/fluidsynth.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/fluidsynth/fluidsynth.hash b/package/fluidsynth/fluidsynth.hash index 824f246a2c..91d8778cbf 100644 --- a/package/fluidsynth/fluidsynth.hash +++ b/package/fluidsynth/fluidsynth.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 1529ef5bc3b9ef3adc2a7964505912f7305103e269e50cc0316f500b22053ac9 fluidsynth-2.3.4.tar.gz +sha256 f89e8e983ecfb4a5b4f5d8c2b9157ed18d15ed2e36246fa782f18abaea550e0d fluidsynth-2.3.5.tar.gz sha256 9b872a8a070b8ad329c4bd380fb1bf0000f564c75023ec8e1e6803f15364b9e9 LICENSE diff --git a/package/fluidsynth/fluidsynth.mk b/package/fluidsynth/fluidsynth.mk index 4317c6e460..ef05b6a569 100644 --- a/package/fluidsynth/fluidsynth.mk +++ b/package/fluidsynth/fluidsynth.mk @@ -4,7 +4,7 @@ # ################################################################################ -FLUIDSYNTH_VERSION = 2.3.4 +FLUIDSYNTH_VERSION = 2.3.5 FLUIDSYNTH_SITE = $(call github,FluidSynth,fluidsynth,v$(FLUIDSYNTH_VERSION)) FLUIDSYNTH_LICENSE = LGPL-2.1+ FLUIDSYNTH_LICENSE_FILES = LICENSE From thomas.petazzoni at bootlin.com Wed May 1 19:23:38 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:23:38 +0200 Subject: [Buildroot] [PATCH 1/1] package/fluidsynth: bump to version 2.3.5 In-Reply-To: <20240401191720.141576-1-ju.o@free.fr> References: <20240401191720.141576-1-ju.o@free.fr> Message-ID: <20240501212338.6680bb2e@windsurf> On Mon, 1 Apr 2024 21:17:20 +0200 Julien Olivain wrote: > For change log since v2.3.4, see: > - https://github.com/FluidSynth/fluidsynth/releases/tag/v2.3.5 > > Signed-off-by: Julien Olivain > --- > package/fluidsynth/fluidsynth.hash | 2 +- > package/fluidsynth/fluidsynth.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From peter at korsgaard.com Wed May 1 18:49:28 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 1 May 2024 20:49:28 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] support/testing: add lvm2 runtime test Message-ID: <20240501192441.EE7C1863F8@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=bcafe4be058074848d661f5a38d6a2b4a3ad73d2 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: Julien Olivain Signed-off-by: Arnout Vandecappelle (cherry picked from commit 79f7d71640061f65aedfa4f8845a6757e8b0f3fc) Signed-off-by: Peter Korsgaard --- DEVELOPERS | 2 + support/testing/tests/package/test_lvm2.py | 163 +++++++++++++++++++++ .../tests/package/test_lvm2/linux-lvm2.fragment | 2 + 3 files changed, 167 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index a38b681a8a..8ccf6ff46c 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -1805,6 +1805,8 @@ F: support/testing/tests/package/test_libgpgme.py F: support/testing/tests/package/test_libjxl.py F: support/testing/tests/package/test_lrzip.py F: support/testing/tests/package/test_ltrace.py +F: support/testing/tests/package/test_lvm2.py +F: support/testing/tests/package/test_lvm2/ F: support/testing/tests/package/test_lzip.py F: support/testing/tests/package/test_lsof.py F: support/testing/tests/package/test_lz4.py diff --git a/support/testing/tests/package/test_lvm2.py b/support/testing/tests/package/test_lvm2.py new file mode 100644 index 0000000000..bdbae7a4ec --- /dev/null +++ b/support/testing/tests/package/test_lvm2.py @@ -0,0 +1,163 @@ +import os +import subprocess + +import infra.basetest + + +class TestLvm2(infra.basetest.BRTest): + # This test creates a lvm2 volume. A specific Kernel need to be + # built with a config fragment enabling this support. This test + # also uses resize2fs from e2fsprogs. + kernel_fragment = \ + infra.filepath("tests/package/test_lvm2/linux-lvm2.fragment") + config = \ + f""" + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.77" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{kernel_fragment}" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_PACKAGE_E2FSPROGS=y + BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y + BR2_PACKAGE_LVM2=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_TARGET_ROOTFS_CPIO_GZIP=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def get_free_disk_space(self, path): + out, ret = self.emulator.run(f"df -k {path}") + self.assertEqual(ret, 0) + return int(out[1].split()[3]) + + def test_run(self): + # Test configuration: + storage_devs = ["/dev/vda", "/dev/vdb", "/dev/vdc"] + storage_size = 16 # Mega Bytes + lvm_vg = "br_vg" # Volume Group name + lvm_lv = "br_lv" # Logical Volume name + lv_dev = f"/dev/{lvm_vg}/{lvm_lv}" # Logical Volume dev name + mnt_pt = "/mnt/lvm2-storage" + data_file = f"{mnt_pt}/data.bin" + + qemu_storage_opts = [] + for i in range(len(storage_devs)): + disk_file = os.path.join(self.builddir, "images", f"disk{i}.img") + self.emulator.logfile.write(f"Creating disk image: {disk_file}\n") + self.emulator.logfile.flush() + subprocess.check_call( + ["dd", "if=/dev/zero", f"of={disk_file}", + "bs=1M", f"count={storage_size}"], + stdout=self.emulator.logfile, + stderr=self.emulator.logfile) + opts = ["-drive", f"file={disk_file},if=virtio,format=raw"] + qemu_storage_opts += opts + + img = os.path.join(self.builddir, "images", "rootfs.cpio.gz") + kern = os.path.join(self.builddir, "images", "Image") + self.emulator.boot(arch="aarch64", + kernel=kern, + kernel_cmdline=["console=ttyAMA0"], + options=["-M", "virt", "-cpu", "cortex-a57", "-m", "256M", + "-initrd", img] + qemu_storage_opts) + self.emulator.login() + + # Test the program can execute. + self.assertRunOk("lvm version") + + # We did not created any Physical Volume yet. We should NOT + # see any of our storage devices in a pvscan. + out, ret = self.emulator.run("pvscan") + self.assertEqual(ret, 0) + for dev in storage_devs: + self.assertNotIn(dev, "\n".join(out)) + + # We initialize our Physical Volumes (PVs). + pv_devs = " ".join(storage_devs) + self.assertRunOk(f"pvcreate {pv_devs}") + + # We run few diagnostic commands related to PVs. + self.assertRunOk(f"pvck {pv_devs}") + self.assertRunOk(f"pvdisplay {pv_devs}") + self.assertRunOk("pvs") + + # Now we initialized the PVs, we should see them in a pvscan. + out, ret = self.emulator.run("pvscan") + self.assertEqual(ret, 0) + for dev in storage_devs: + self.assertIn(dev, "\n".join(out)) + + # We create a Volume Group (VG) including two of our three + # PVs. + cmd = f"vgcreate {lvm_vg} {storage_devs[0]} {storage_devs[1]}" + self.assertRunOk(cmd) + + # We run few diagnostic commands related to VGs. + self.assertRunOk(f"vgck {lvm_vg}") + self.assertRunOk(f"vgdisplay {lvm_vg}") + self.assertRunOk("vgscan") + self.assertRunOk("vgs") + + # We create a Logical Volume (LV) in our VG. + self.assertRunOk(f"lvcreate -l 100%FREE -n {lvm_lv} {lvm_vg}") + + # We check LVM created the LV device. + self.assertRunOk(f"ls -al {lv_dev}") + + # We run few diagnostic commands related to LVs. + self.assertRunOk("lvscan") + self.assertRunOk("lvs") + + # We create a ext4 filesystem on our LV. + self.assertRunOk(f"mkfs.ext4 {lv_dev}") + + # We create a mount point directory and mount the device. + self.assertRunOk(f"mkdir -p {mnt_pt}") + self.assertRunOk(f"mount {lv_dev} {mnt_pt}") + + # We create a data file in our new filesystem. Note: this file + # is slightly larger than a single PV. This data file should + # span over the two PVs in the VG. + data_size = storage_size + 4 + cmd = f"dd if=/dev/urandom of={data_file} bs=1M count={data_size}" + self.assertRunOk(cmd) + + # We compute the hash of our data, and save it for later. + hash_cmd = f"sha256sum {data_file}" + out, ret = self.emulator.run(hash_cmd) + self.assertEqual(ret, 0) + data_sha256 = out[0] + + # We compute the free space of the mount point. + fs_free_space = self.get_free_disk_space(mnt_pt) + + # We extend of VG with our third PV. + self.assertRunOk(f"vgextend {lvm_vg} {storage_devs[2]}") + + # We grow the LV to use all the space of the VG. + self.assertRunOk(f"lvresize -l +100%FREE {lvm_vg}/{lvm_lv}") + + # We resize the filesystem to use all the LV space. + self.assertRunOk(f"resize2fs {lv_dev}") + + # Now we grew the LV and resized the filesystem, we recompute + # the free space and check we have more. + fs2_free_space = self.get_free_disk_space(mnt_pt) + self.assertGreater(fs2_free_space, fs_free_space) + + # With all those on-the-fly operations on the mounted + # filesystem, the data file should be intact. We should + # recompute the same data checksum as before. + out, ret = self.emulator.run(hash_cmd) + self.assertEqual(ret, 0) + self.assertEqual(out[0], data_sha256) + + # Finally, we unmount the filesystem. It should not contain + # any error. + self.assertRunOk(f"umount {mnt_pt}") + self.assertRunOk(f"e2fsck -f -n {lv_dev}") diff --git a/support/testing/tests/package/test_lvm2/linux-lvm2.fragment b/support/testing/tests/package/test_lvm2/linux-lvm2.fragment new file mode 100644 index 0000000000..0fade167a3 --- /dev/null +++ b/support/testing/tests/package/test_lvm2/linux-lvm2.fragment @@ -0,0 +1,2 @@ +CONFIG_MD=y +CONFIG_BLK_DEV_DM=y From peter at korsgaard.com Wed May 1 19:16:53 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 1 May 2024 21:16:53 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/{mesa3d, mesa3d-headers}: bump version to 24.0.4 Message-ID: <20240501192442.1C941863F8@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=2ab350b279742e802efae973c55f7e485bd1c841 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Release notes: https://lists.freedesktop.org/archives/mesa-dev/2024-March/226176.html Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni (cherry picked from commit eedba64ab217a5b15dffe77565ffc129f1097ac3) Signed-off-by: Peter Korsgaard --- package/mesa3d-headers/mesa3d-headers.mk | 2 +- package/mesa3d/mesa3d.hash | 6 +++--- package/mesa3d/mesa3d.mk | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package/mesa3d-headers/mesa3d-headers.mk b/package/mesa3d-headers/mesa3d-headers.mk index 7f39fefaf5..0756296a01 100644 --- a/package/mesa3d-headers/mesa3d-headers.mk +++ b/package/mesa3d-headers/mesa3d-headers.mk @@ -12,7 +12,7 @@ endif # Not possible to directly refer to mesa3d variables, because of # first/second expansion trickery... -MESA3D_HEADERS_VERSION = 24.0.3 +MESA3D_HEADERS_VERSION = 24.0.4 MESA3D_HEADERS_SOURCE = mesa-$(MESA3D_HEADERS_VERSION).tar.xz MESA3D_HEADERS_SITE = https://archive.mesa3d.org MESA3D_HEADERS_DL_SUBDIR = mesa3d diff --git a/package/mesa3d/mesa3d.hash b/package/mesa3d/mesa3d.hash index 1e94c2c612..e2e0be2641 100644 --- a/package/mesa3d/mesa3d.hash +++ b/package/mesa3d/mesa3d.hash @@ -1,5 +1,5 @@ -# From https://lists.freedesktop.org/archives/mesa-announce/2024-March/000752.html -sha256 77aec9a2a37b7d3596ea1640b3cc53d0b5d9b3b52abed89de07e3717e91bfdbe mesa-24.0.3.tar.xz -sha512 76b3b479877c40f729d7f530af4e3577fa74363edcd3d9474350d498a51dbb761fc034b39bee8547e97c30fd3a520cbc50c742d5a187746e83ddab1df44f37e9 mesa-24.0.3.tar.xz +# From https://lists.freedesktop.org/archives/mesa-dev/2024-March/226176.html +sha256 90febd30a098cbcd97ff62ecc3dcf5c93d76f7fa314de944cfce81951ba745f0 mesa-24.0.4.tar.xz +sha512 1d05b07026417fbe9cf18f7b18f2db9fe5fe327555c590283d87f69bbdd51f64135928a1dbe155d750187fc268bbdbb070bc1ae9ffc3e013b8707b391969d515 mesa-24.0.4.tar.xz # License sha256 a00275a53178e2645fb65be99a785c110513446a5071ff2c698ed260ad917d75 docs/license.rst diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk index bdb7ea9a6c..c2343488ed 100644 --- a/package/mesa3d/mesa3d.mk +++ b/package/mesa3d/mesa3d.mk @@ -5,7 +5,7 @@ ################################################################################ # When updating the version, please also update mesa3d-headers -MESA3D_VERSION = 24.0.3 +MESA3D_VERSION = 24.0.4 MESA3D_SOURCE = mesa-$(MESA3D_VERSION).tar.xz MESA3D_SITE = https://archive.mesa3d.org MESA3D_LICENSE = MIT, SGI, Khronos From peter at korsgaard.com Wed May 1 19:22:10 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 1 May 2024 21:22:10 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] docs/manual: fix host-python-setuptools typo Message-ID: <20240501192442.381DE863FA@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=81764dcfc66f5f50444994fd8706e887c4026153 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: Rapha??l M??lotte Signed-off-by: Thomas Petazzoni (cherry picked from commit f12c77442e1184427eee0960646833728a4c47db) Signed-off-by: Peter Korsgaard --- docs/manual/adding-packages-python.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/manual/adding-packages-python.adoc b/docs/manual/adding-packages-python.adoc index 9953be6639..67f2f6081d 100644 --- a/docs/manual/adding-packages-python.adoc +++ b/docs/manual/adding-packages-python.adoc @@ -92,7 +92,7 @@ Note that: dependencies are automatically added as needed by the Python package infrastructure. - * Similarly, it is not needed to add +host-setuptools+ to + * Similarly, it is not needed to add +host-python-setuptools+ to +PYTHON_FOO_DEPENDENCIES+ for setuptools-based packages, since it's automatically added by the Python infrastructure as needed. From peter at korsgaard.com Wed May 1 19:21:01 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 1 May 2024 21:21:01 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/freeipmi: bump to version 1.6.14 Message-ID: <20240501192442.26623863F9@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=6f5451096b523ffc331696393d057b095252266c branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x https://lists.gnu.org/archive/html/freeipmi-announce/2024-01/msg00001.html https://lists.gnu.org/archive/html/freeipmi-announce/2024-01/msg00000.html Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni (cherry picked from commit 38db0df41a8989226a7170f8998982a1173c6b58) Signed-off-by: Peter Korsgaard --- package/freeipmi/freeipmi.hash | 2 +- package/freeipmi/freeipmi.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/freeipmi/freeipmi.hash b/package/freeipmi/freeipmi.hash index ac24b7c64e..2f81d90c1d 100644 --- a/package/freeipmi/freeipmi.hash +++ b/package/freeipmi/freeipmi.hash @@ -1,5 +1,5 @@ # Locally computed: -sha256 65fbd6910fc010457748695414f27c5755b4e8d75734221221f3858c6230a897 freeipmi-1.6.11.tar.gz +sha256 1a3dac5c76b7ccc4d4f86aa12b8ef9b212baef7489bf05e899b89abb7e14edb5 freeipmi-1.6.14.tar.gz sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING.bmc-watchdog sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING.ipmiconsole diff --git a/package/freeipmi/freeipmi.mk b/package/freeipmi/freeipmi.mk index ecff6f9925..e28f63f715 100644 --- a/package/freeipmi/freeipmi.mk +++ b/package/freeipmi/freeipmi.mk @@ -4,7 +4,7 @@ # ################################################################################ -FREEIPMI_VERSION = 1.6.11 +FREEIPMI_VERSION = 1.6.14 FREEIPMI_SITE = https://ftp.gnu.org/gnu/freeipmi FREEIPMI_LICENSE = GPL-3.0+, BSD-like (sunbmc) FREEIPMI_LICENSE_FILES = \ From thomas.petazzoni at bootlin.com Wed May 1 19:27:16 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:27:16 +0200 Subject: [Buildroot] [git commit] package/python-pycrate: bump to version 0.7.2 Message-ID: <20240501192801.CE8C4863FF@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=653bd0d28b39aee415d38494accc1dc64aea432c branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master The license.txt file is now part of the release tarball, so it is no longer needed to download it separately, and re-add it to the source tree. The https://github.com/P1sec/pycrate/ repository has been archived, so use the new official location, as referenced by https://pypi.org/project/pycrate/. Signed-off-by: Nasser Afshin Signed-off-by: Thomas Petazzoni --- package/python-pycrate/Config.in | 2 +- package/python-pycrate/python-pycrate.hash | 4 ++-- package/python-pycrate/python-pycrate.mk | 10 ++-------- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/package/python-pycrate/Config.in b/package/python-pycrate/Config.in index bbd6873938..e78df43fcd 100644 --- a/package/python-pycrate/Config.in +++ b/package/python-pycrate/Config.in @@ -4,4 +4,4 @@ config BR2_PACKAGE_PYTHON_PYCRATE A software suite to handle various data and protocol formats. - https://github.com/P1sec/pycrate/ + https://github.com/pycrate-org/pycrate/ diff --git a/package/python-pycrate/python-pycrate.hash b/package/python-pycrate/python-pycrate.hash index 94ec99b738..5489f9290f 100644 --- a/package/python-pycrate/python-pycrate.hash +++ b/package/python-pycrate/python-pycrate.hash @@ -1,5 +1,5 @@ # md5, sha256 from https://pypi.org/pypi/pycrate/json -md5 bd21fa697ecff7ad93bec4943230d281 pycrate-0.7.0.tar.gz -sha256 c83232f522b5bbc3b3eeaca2cf38ee63cd3c25d0c15f3ba221e6dafa89b9a763 pycrate-0.7.0.tar.gz +md5 37e1bda10f41fe947512e9d5f8289518 pycrate-0.7.2.tar.gz +sha256 8abd3fb9f3e7a2dc62061490f01e99b2a6185e88b1c9bf30db68853b748b8f61 pycrate-0.7.2.tar.gz # Locally computed sha256 checksums sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 license.txt diff --git a/package/python-pycrate/python-pycrate.mk b/package/python-pycrate/python-pycrate.mk index 1645eaf52c..41ad30fcc8 100644 --- a/package/python-pycrate/python-pycrate.mk +++ b/package/python-pycrate/python-pycrate.mk @@ -4,17 +4,11 @@ # ################################################################################ -PYTHON_PYCRATE_VERSION = 0.7.0 +PYTHON_PYCRATE_VERSION = 0.7.2 PYTHON_PYCRATE_SOURCE = pycrate-$(PYTHON_PYCRATE_VERSION).tar.gz -PYTHON_PYCRATE_SITE = https://files.pythonhosted.org/packages/a6/a5/aab94e6bb8b3281cc450dde3961b417bd56abde2401955a9a4904df44c68 +PYTHON_PYCRATE_SITE = https://files.pythonhosted.org/packages/f4/01/09aac6ea758ca7b7b1b4832c0c39003752ef7b6c1478e6db2f34171db3fe PYTHON_PYCRATE_SETUP_TYPE = setuptools -PYTHON_PYCRATE_EXTRA_DOWNLOADS = https://raw.githubusercontent.com/P1sec/pycrate/$(PYTHON_PYCRATE_VERSION)/license.txt PYTHON_PYCRATE_LICENSE = LGPL-2.1+ PYTHON_PYCRATE_LICENSE_FILES = license.txt -define PYTHON_PYCRATE_ADD_LICENSE_FILE - cp $(PYTHON_PYCRATE_DL_DIR)/license.txt $(@D) -endef -PYTHON_PYCRATE_POST_EXTRACT_HOOKS += PYTHON_PYCRATE_ADD_LICENSE_FILE - $(eval $(python-package)) From thomas.petazzoni at bootlin.com Wed May 1 19:33:31 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:33:31 +0200 Subject: [Buildroot] [PATCH] package/python-pycrate: bump to version 0.7.2 In-Reply-To: <20240401192629.932481-1-afshin.nasser@gmail.com> References: <20240401192629.932481-1-afshin.nasser@gmail.com> Message-ID: <20240501213331.48643919@windsurf> Hello Nasser, On Mon, 1 Apr 2024 22:56:29 +0330 Nasser Afshin wrote: > Signed-off-by: Nasser Afshin Thanks for the patch. However, your empty commit log really wasn't enough. It's not just a version bump, it does a number of other changes that should have been explained in the commit log. So I've expanded it as such: The license.txt file is now part of the release tarball, so it is no longer needed to download it separately, and re-add it to the source tree. The https://github.com/P1sec/pycrate/ repository has been archived, so use the new official location, as referenced by https://pypi.org/project/pycrate/. > -PYTHON_PYCRATE_LICENSE = LGPL-2.1+ > +PYTHON_PYCRATE_LICENSE = LGPL-2.1 This change looked incorrect to me. Files I've looked at in the tree do have the (or later) statement, so I kept LGPL-2.1+. If you have a good justification for this change, could you submit a patch with a non-empty commit log giving some explanation? Applied to master with those changes, thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Wed May 1 19:35:17 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:35:17 +0200 Subject: [Buildroot] [git commit] package/apcupsd: set ac_cv_path_SHUTDOWN Message-ID: <20240501193552.D51608640F@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=640a79000b028eef3f54ba18e450c27bbeea9f56 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Set ac_cv_path_SHUTDOWN to /sbin/shutdown to avoid the following build failure when shutdown is not available on host raised since the addition of the package in commit d12b63b741586b89c4017551308c43512a617287: configure: error: Missing required tool; need any one of: shutdown shutdown.bsd Fixes: d12b63b741586b89c4017551308c43512a617287 - http://autobuild.buildroot.org/results/a8bbb5ced8343e08070361f260050de422144710 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/apcupsd/apcupsd.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/package/apcupsd/apcupsd.mk b/package/apcupsd/apcupsd.mk index 97e6d6a558..43a016678d 100644 --- a/package/apcupsd/apcupsd.mk +++ b/package/apcupsd/apcupsd.mk @@ -11,6 +11,7 @@ APCUPSD_LICENSE_FILES = COPYING APCUPSD_CPE_ID_VENDOR = apcupsd APCUPSD_SELINUX_MODULES = apache apcupsd APCUPSD_CONF_OPTS = --disable-test +APCUPSD_CONF_ENV = ac_cv_path_SHUTDOWN=/sbin/shutdown ifneq ($(BR2_PACKAGE_APCUPSD_MODBUS_USB)$(BR2_PACKAGE_APCUPSD_USB),) APCUPSD_CONF_ENV += ac_cv_path_usbcfg=$(STAGING_DIR)/usr/bin/libusb-config From thomas.petazzoni at bootlin.com Wed May 1 19:36:54 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:36:54 +0200 Subject: [Buildroot] [PATCH 1/1] package/apcupsd: set ac_cv_path_SHUTDOWN In-Reply-To: <20240330221122.1112448-1-fontaine.fabrice@gmail.com> References: <20240330221122.1112448-1-fontaine.fabrice@gmail.com> Message-ID: <20240501213654.4ee4e9c9@windsurf> On Sat, 30 Mar 2024 23:11:22 +0100 Fabrice Fontaine wrote: > Set ac_cv_path_SHUTDOWN to /sbin/shutdown to avoid the following build > failure when shutdown is not available on host raised since the addition > of the package in commit d12b63b741586b89c4017551308c43512a617287: > > configure: error: Missing required tool; need any one of: shutdown shutdown.bsd > > Fixes: d12b63b741586b89c4017551308c43512a617287 > - http://autobuild.buildroot.org/results/a8bbb5ced8343e08070361f260050de422144710 > > Signed-off-by: Fabrice Fontaine > --- > package/apcupsd/apcupsd.mk | 1 + > 1 file changed, 1 insertion(+) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From yann.morin.1998 at free.fr Wed May 1 19:46:27 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 21:46:27 +0200 Subject: [Buildroot] [PATCH 1/1] package/pkg-download: add per package download fallback disable In-Reply-To: <0e92066e-ce6f-4d69-9f43-979c62a4d40c@mind.be> References: <20220917205253.3737d1c6@windsurf> <6338e428-df6e-40db-8a99-9390d150131d@newtesc.com.br> <0e92066e-ce6f-4d69-9f43-979c62a4d40c@mind.be> Message-ID: Arnout, All, On 2024-05-01 21:09 +0200, Arnout Vandecappelle via buildroot spake thusly: > On 30/04/2024 19:56, Fl?vio Tapaj?s wrote: > > Sorry to necrobump, but such a feature would be handy when using > > FOO_DL_OPTS to ensure http authentication. > > > > Tokens, usernames or passwords will be leaked to the fallback server in > > case of failure of the primary source. This could be some source of > > vulnerability > > I don't see how any of these would be leaked... > > A token is passed either as a password or as a header. There's no way to > specify per-package wget options anyway, It *is* possible to pass per-package download options: FOO_DL_OPTS = --header 'Auth-Token: my-secret' And those options are passed to all the downloads tentatives. This of course only works properly when the main download is done with wget, though, as options for git-as-main are not valid for wget-as-primary or wget-as-backup. Note that we used to have such a package in Buildroot, amd-catalyst, but it was removed a while ago. Still, we're testing that in outr download runtime tests, for sftp and scp, so we know it works... Regards, Yann E. MORIN. > so I guess it will be passed as a > password. > > A password can either be passed in .netrc or .wgetrc (in which case it is > site-specific so won't be sent to PRIMARY_SITE or BACKUP_SITE), or it can be > passed in the URL, as https://user:pass at server.com/path/source.tar.gz > The whole user:pass part also doesn't get used in PRIMARY_SITE or BACKUP_SITE. > > The above applies to http downloads. For other downloads, it doesn't even > matter at all, because that download method won't be used for PRIMARY_SITE > and SECONDARY_SITE so any authentication stuff won't be used either. > > So how does leaking take place? > > Regards, > Arnout > > > > > _______________________________________________ > > buildroot mailing list > > buildroot at buildroot.org > > https://lists.buildroot.org/mailman/listinfo/buildroot > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From thomas.petazzoni at bootlin.com Wed May 1 19:41:27 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:41:27 +0200 Subject: [Buildroot] [git commit] utils/check-package: new check for Buildroot's defconfig files Message-ID: <20240501195108.92FC78641A@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=7931f78c16f08f7a850181ce4b316e2be7522f26 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Now that we do have support for checking hashes for custom versions (for the few packages for which we do support custom versions, like the kernel, some bootloaders...), we want to ensure that our defconfig files, when they enable one or more such custom version, do enable checking the hashes for those versions, and thus we want to require all our defconfigs do enable BR2_DOWNLOAD_FORCE_CHECK_HASHES. Add a check for that condition. We need to be careful that we only check Buildroot's defconfig, whether in-tree or in a br2-external, and not kernel or other kconfig-based defconfig files, like those in board/ sub-directories. So we only match defconfig files that are in a configs/ directory, whether at the toplevel (for in-tree defconfigs), or not (for br2-external defconfigs). Since we only have two defconfigs that check hashes for custom versions, regnerate .checkpackageignore to ignore all so-far broken defconfigs. Suggested-by: Arnout Vandecappelle (Essensium/Mind) Signed-off-by: Yann E. MORIN Cc: Ricardo Martincoski Signed-off-by: Thomas Petazzoni --- .checkpackageignore | 288 +++++++++++++++++++++++++++++++++ utils/check-package | 9 ++ utils/checkpackagelib/lib_defconfig.py | 20 +++ 3 files changed, 317 insertions(+) diff --git a/.checkpackageignore b/.checkpackageignore index 1b336ce7a3..0b169ea2f1 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -116,6 +116,294 @@ boot/syslinux/0013-Fix-build-with-gnu-efi-version-3.0.9.patch lib_patch.Upstream boot/syslinux/0014-Fix-build-with-binutils-note-gnu-property-section.patch lib_patch.Upstream boot/syslinux/0016-Workaround-multiple-definition-of-symbol-errors.patch lib_patch.Upstream boot/syslinux/0017-Replace-builtin-strlen-that-appears-to-get-optimized.patch lib_patch.Upstream +configs/aarch64_efi_defconfig lib_defconfig.ForceCheckHash +configs/acmesystems_acqua_a5_256mb_defconfig lib_defconfig.ForceCheckHash +configs/acmesystems_acqua_a5_512mb_defconfig lib_defconfig.ForceCheckHash +configs/acmesystems_aria_g25_128mb_defconfig lib_defconfig.ForceCheckHash +configs/acmesystems_aria_g25_256mb_defconfig lib_defconfig.ForceCheckHash +configs/acmesystems_arietta_g25_128mb_defconfig lib_defconfig.ForceCheckHash +configs/acmesystems_arietta_g25_256mb_defconfig lib_defconfig.ForceCheckHash +configs/am574x_idk_defconfig lib_defconfig.ForceCheckHash +configs/amarula_vyasa_rk3288_defconfig lib_defconfig.ForceCheckHash +configs/andes_ae350_45_defconfig lib_defconfig.ForceCheckHash +configs/arcturus_ucls1012a_defconfig lib_defconfig.ForceCheckHash +configs/arcturus_ucp1020_defconfig lib_defconfig.ForceCheckHash +configs/arm_foundationv8_defconfig lib_defconfig.ForceCheckHash +configs/armadeus_apf27_defconfig lib_defconfig.ForceCheckHash +configs/armadeus_apf28_defconfig lib_defconfig.ForceCheckHash +configs/armadeus_apf51_defconfig lib_defconfig.ForceCheckHash +configs/aspeed_ast2500evb_defconfig lib_defconfig.ForceCheckHash +configs/aspeed_ast2600evb_defconfig lib_defconfig.ForceCheckHash +configs/asus_tinker-s_rk3288_defconfig lib_defconfig.ForceCheckHash +configs/asus_tinker_rk3288_defconfig lib_defconfig.ForceCheckHash +configs/at91sam9260eknf_defconfig lib_defconfig.ForceCheckHash +configs/at91sam9g20dfc_defconfig lib_defconfig.ForceCheckHash +configs/at91sam9g45m10ek_defconfig lib_defconfig.ForceCheckHash +configs/at91sam9rlek_defconfig lib_defconfig.ForceCheckHash +configs/at91sam9x5ek_defconfig lib_defconfig.ForceCheckHash +configs/at91sam9x5ek_dev_defconfig lib_defconfig.ForceCheckHash +configs/at91sam9x5ek_mmc_defconfig lib_defconfig.ForceCheckHash +configs/at91sam9x5ek_mmc_dev_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d27_som1_ek_mmc_dev_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d2_xplained_mmc_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d2_xplained_mmc_dev_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d3_xplained_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d3_xplained_dev_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d3_xplained_mmc_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d3_xplained_mmc_dev_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d3xek_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d4_xplained_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d4_xplained_dev_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d4_xplained_mmc_defconfig lib_defconfig.ForceCheckHash +configs/atmel_sama5d4_xplained_mmc_dev_defconfig lib_defconfig.ForceCheckHash +configs/avenger96_defconfig lib_defconfig.ForceCheckHash +configs/avnet_rzboard_v2l_defconfig lib_defconfig.ForceCheckHash +configs/bananapi_m2_berry_defconfig lib_defconfig.ForceCheckHash +configs/bananapi_m2_ultra_defconfig lib_defconfig.ForceCheckHash +configs/bananapi_m2_zero_defconfig lib_defconfig.ForceCheckHash +configs/bananapro_defconfig lib_defconfig.ForceCheckHash +configs/beagleboardx15_defconfig lib_defconfig.ForceCheckHash +configs/beaglebone_defconfig lib_defconfig.ForceCheckHash +configs/beaglebone_qt5_defconfig lib_defconfig.ForceCheckHash +configs/beagleboneai_defconfig lib_defconfig.ForceCheckHash +configs/beaglev_defconfig lib_defconfig.ForceCheckHash +configs/beelink_gs1_defconfig lib_defconfig.ForceCheckHash +configs/broadcom_northstar_defconfig lib_defconfig.ForceCheckHash +configs/canaan_kd233_defconfig lib_defconfig.ForceCheckHash +configs/chromebook_elm_defconfig lib_defconfig.ForceCheckHash +configs/chromebook_snow_defconfig lib_defconfig.ForceCheckHash +configs/ci20_defconfig lib_defconfig.ForceCheckHash +configs/cubieboard2_defconfig lib_defconfig.ForceCheckHash +configs/engicam_imx6qdl_icore_defconfig lib_defconfig.ForceCheckHash +configs/engicam_imx6qdl_icore_qt5_defconfig lib_defconfig.ForceCheckHash +configs/engicam_imx6qdl_icore_rqs_defconfig lib_defconfig.ForceCheckHash +configs/engicam_imx6ul_geam_defconfig lib_defconfig.ForceCheckHash +configs/engicam_imx6ul_isiot_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx28evk_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx6dlsabreauto_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx6dlsabresd_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx6qsabreauto_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx6qsabresd_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx6sxsabresd_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx6ullevk_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx7dsabresd_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx8dxlevk_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx8mmevk_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx8mnevk_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx8mpevk_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx8mqevk_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx8qmmek_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx8qxpmek_defconfig lib_defconfig.ForceCheckHash +configs/freescale_imx93evk_defconfig lib_defconfig.ForceCheckHash +configs/freescale_p1025twr_defconfig lib_defconfig.ForceCheckHash +configs/freescale_t1040d4rdb_defconfig lib_defconfig.ForceCheckHash +configs/freescale_t2080_qds_rdb_defconfig lib_defconfig.ForceCheckHash +configs/friendlyarm_nanopi_r2s_defconfig lib_defconfig.ForceCheckHash +configs/galileo_defconfig lib_defconfig.ForceCheckHash +configs/globalscale_espressobin_defconfig lib_defconfig.ForceCheckHash +configs/grinn_chiliboard_defconfig lib_defconfig.ForceCheckHash +configs/grinn_liteboard_defconfig lib_defconfig.ForceCheckHash +configs/hifive_unleashed_defconfig lib_defconfig.ForceCheckHash +configs/icnova-a20-adb4006_defconfig lib_defconfig.ForceCheckHash +configs/imx23evk_defconfig lib_defconfig.ForceCheckHash +configs/imx6-sabreauto_defconfig lib_defconfig.ForceCheckHash +configs/imx6-sabresd_defconfig lib_defconfig.ForceCheckHash +configs/imx6-sabresd_qt5_defconfig lib_defconfig.ForceCheckHash +configs/imx6slevk_defconfig lib_defconfig.ForceCheckHash +configs/imx6sx-sdb_defconfig lib_defconfig.ForceCheckHash +configs/imx6ulevk_defconfig lib_defconfig.ForceCheckHash +configs/imx6ullevk_defconfig lib_defconfig.ForceCheckHash +configs/imx6ulpico_defconfig lib_defconfig.ForceCheckHash +configs/imx7d-sdb_defconfig lib_defconfig.ForceCheckHash +configs/imx7dpico_defconfig lib_defconfig.ForceCheckHash +configs/imx8mmpico_defconfig lib_defconfig.ForceCheckHash +configs/imx8mn_bsh_smm_s2_defconfig lib_defconfig.ForceCheckHash +configs/imx8mn_bsh_smm_s2_pro_defconfig lib_defconfig.ForceCheckHash +configs/imx8mpico_defconfig lib_defconfig.ForceCheckHash +configs/imx8mqevk_defconfig lib_defconfig.ForceCheckHash +configs/imxrt1050-evk_defconfig lib_defconfig.ForceCheckHash +configs/khadas_vim3_defconfig lib_defconfig.ForceCheckHash +configs/kontron_bl_imx8mm_defconfig lib_defconfig.ForceCheckHash +configs/kontron_pitx_imx8m_defconfig lib_defconfig.ForceCheckHash +configs/kontron_smarc_sal28_defconfig lib_defconfig.ForceCheckHash +configs/lego_ev3_defconfig lib_defconfig.ForceCheckHash +configs/linksprite_pcduino_defconfig lib_defconfig.ForceCheckHash +configs/ls1028ardb_defconfig lib_defconfig.ForceCheckHash +configs/ls1046a-frwy_defconfig lib_defconfig.ForceCheckHash +configs/mangopi_mq1rdw2_defconfig lib_defconfig.ForceCheckHash +configs/mender_x86_64_efi_defconfig lib_defconfig.ForceCheckHash +configs/microchip_mpfs_icicle_defconfig lib_defconfig.ForceCheckHash +configs/microchip_sam9x60ek_mmc_defconfig lib_defconfig.ForceCheckHash +configs/microchip_sam9x60ek_mmc_dev_defconfig lib_defconfig.ForceCheckHash +configs/microchip_sama5d27_wlsom1_ek_mmc_defconfig lib_defconfig.ForceCheckHash +configs/microchip_sama5d27_wlsom1_ek_mmc_dev_defconfig lib_defconfig.ForceCheckHash +configs/microchip_sama5d2_icp_mmc_defconfig lib_defconfig.ForceCheckHash +configs/microchip_sama5d2_icp_mmc_dev_defconfig lib_defconfig.ForceCheckHash +configs/microchip_sama7g5ek_mmc_defconfig lib_defconfig.ForceCheckHash +configs/microchip_sama7g5ek_mmc_dev_defconfig lib_defconfig.ForceCheckHash +configs/minnowboard_max_defconfig lib_defconfig.ForceCheckHash +configs/mx25pdk_defconfig lib_defconfig.ForceCheckHash +configs/mx51evk_defconfig lib_defconfig.ForceCheckHash +configs/mx53loco_defconfig lib_defconfig.ForceCheckHash +configs/mx6cubox_defconfig lib_defconfig.ForceCheckHash +configs/mx6sx_udoo_neo_defconfig lib_defconfig.ForceCheckHash +configs/mx6udoo_defconfig lib_defconfig.ForceCheckHash +configs/nexbox_a95x_defconfig lib_defconfig.ForceCheckHash +configs/nitrogen6sx_defconfig lib_defconfig.ForceCheckHash +configs/nitrogen6x_defconfig lib_defconfig.ForceCheckHash +configs/nitrogen7_defconfig lib_defconfig.ForceCheckHash +configs/nitrogen8m_defconfig lib_defconfig.ForceCheckHash +configs/nitrogen8mm_defconfig lib_defconfig.ForceCheckHash +configs/nitrogen8mn_defconfig lib_defconfig.ForceCheckHash +configs/nitrogen8mp_defconfig lib_defconfig.ForceCheckHash +configs/octavo_osd32mp1_brk_defconfig lib_defconfig.ForceCheckHash +configs/octavo_osd32mp1_red_defconfig lib_defconfig.ForceCheckHash +configs/odroidc2_defconfig lib_defconfig.ForceCheckHash +configs/odroidxu4_defconfig lib_defconfig.ForceCheckHash +configs/olimex_a10_olinuxino_lime_defconfig lib_defconfig.ForceCheckHash +configs/olimex_a13_olinuxino_defconfig lib_defconfig.ForceCheckHash +configs/olimex_a20_olinuxino_lime2_defconfig lib_defconfig.ForceCheckHash +configs/olimex_a20_olinuxino_lime_defconfig lib_defconfig.ForceCheckHash +configs/olimex_a20_olinuxino_micro_defconfig lib_defconfig.ForceCheckHash +configs/olimex_a33_olinuxino_defconfig lib_defconfig.ForceCheckHash +configs/olimex_a64_olinuxino_defconfig lib_defconfig.ForceCheckHash +configs/olimex_imx233_olinuxino_defconfig lib_defconfig.ForceCheckHash +configs/olimex_stmp157_olinuxino_lime_defconfig lib_defconfig.ForceCheckHash +configs/olpc_xo175_defconfig lib_defconfig.ForceCheckHash +configs/olpc_xo1_defconfig lib_defconfig.ForceCheckHash +configs/openblocks_a6_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_lite2_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_lite_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_one_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_one_plus_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_pc2_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_pc_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_pc_plus_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_r1_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_zero3_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_zero_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_zero_plus2_defconfig lib_defconfig.ForceCheckHash +configs/orangepi_zero_plus_defconfig lib_defconfig.ForceCheckHash +configs/pandaboard_defconfig lib_defconfig.ForceCheckHash +configs/pc_x86_64_bios_defconfig lib_defconfig.ForceCheckHash +configs/pc_x86_64_efi_defconfig lib_defconfig.ForceCheckHash +configs/pcengines_apu2_defconfig lib_defconfig.ForceCheckHash +configs/pine64_defconfig lib_defconfig.ForceCheckHash +configs/pine64_pinecube_defconfig lib_defconfig.ForceCheckHash +configs/pine64_sopine_defconfig lib_defconfig.ForceCheckHash +configs/pine64_star64_defconfig lib_defconfig.ForceCheckHash +configs/qemu_aarch64_ebbr_defconfig lib_defconfig.ForceCheckHash +configs/qemu_aarch64_sbsa_defconfig lib_defconfig.ForceCheckHash +configs/qemu_aarch64_virt_defconfig lib_defconfig.ForceCheckHash +configs/qemu_arm_ebbr_defconfig lib_defconfig.ForceCheckHash +configs/qemu_arm_versatile_defconfig lib_defconfig.ForceCheckHash +configs/qemu_arm_vexpress_defconfig lib_defconfig.ForceCheckHash +configs/qemu_arm_vexpress_tz_defconfig lib_defconfig.ForceCheckHash +configs/qemu_m68k_mcf5208_defconfig lib_defconfig.ForceCheckHash +configs/qemu_m68k_q800_defconfig lib_defconfig.ForceCheckHash +configs/qemu_microblazebe_mmu_defconfig lib_defconfig.ForceCheckHash +configs/qemu_microblazeel_mmu_defconfig lib_defconfig.ForceCheckHash +configs/qemu_mips32r2_malta_defconfig lib_defconfig.ForceCheckHash +configs/qemu_mips32r2el_malta_defconfig lib_defconfig.ForceCheckHash +configs/qemu_mips32r6_malta_defconfig lib_defconfig.ForceCheckHash +configs/qemu_mips32r6el_malta_defconfig lib_defconfig.ForceCheckHash +configs/qemu_mips64_malta_defconfig lib_defconfig.ForceCheckHash +configs/qemu_mips64el_malta_defconfig lib_defconfig.ForceCheckHash +configs/qemu_mips64r6_malta_defconfig lib_defconfig.ForceCheckHash +configs/qemu_mips64r6el_malta_defconfig lib_defconfig.ForceCheckHash +configs/qemu_nios2_10m50_defconfig lib_defconfig.ForceCheckHash +configs/qemu_or1k_defconfig lib_defconfig.ForceCheckHash +configs/qemu_ppc64_e5500_defconfig lib_defconfig.ForceCheckHash +configs/qemu_ppc64_pseries_defconfig lib_defconfig.ForceCheckHash +configs/qemu_ppc64le_powernv8_defconfig lib_defconfig.ForceCheckHash +configs/qemu_ppc64le_pseries_defconfig lib_defconfig.ForceCheckHash +configs/qemu_ppc_bamboo_defconfig lib_defconfig.ForceCheckHash +configs/qemu_ppc_e500mc_defconfig lib_defconfig.ForceCheckHash +configs/qemu_ppc_g3beige_defconfig lib_defconfig.ForceCheckHash +configs/qemu_ppc_mac99_defconfig lib_defconfig.ForceCheckHash +configs/qemu_ppc_mpc8544ds_defconfig lib_defconfig.ForceCheckHash +configs/qemu_riscv32_virt_defconfig lib_defconfig.ForceCheckHash +configs/qemu_riscv64_nommu_virt_defconfig lib_defconfig.ForceCheckHash +configs/qemu_riscv64_virt_defconfig lib_defconfig.ForceCheckHash +configs/qemu_riscv64_virt_efi_defconfig lib_defconfig.ForceCheckHash +configs/qemu_s390x_defconfig lib_defconfig.ForceCheckHash +configs/qemu_sh4_r2d_defconfig lib_defconfig.ForceCheckHash +configs/qemu_sh4eb_r2d_defconfig lib_defconfig.ForceCheckHash +configs/qemu_sparc64_sun4u_defconfig lib_defconfig.ForceCheckHash +configs/qemu_x86_64_defconfig lib_defconfig.ForceCheckHash +configs/qemu_x86_defconfig lib_defconfig.ForceCheckHash +configs/qemu_xtensa_lx60_defconfig lib_defconfig.ForceCheckHash +configs/qemu_xtensa_lx60_nommu_defconfig lib_defconfig.ForceCheckHash +configs/raspberrypi0_defconfig lib_defconfig.ForceCheckHash +configs/raspberrypi0w_defconfig lib_defconfig.ForceCheckHash +configs/raspberrypi2_defconfig lib_defconfig.ForceCheckHash +configs/raspberrypi3_64_defconfig lib_defconfig.ForceCheckHash +configs/raspberrypi3_defconfig lib_defconfig.ForceCheckHash +configs/raspberrypi3_qt5we_defconfig lib_defconfig.ForceCheckHash +configs/raspberrypi4_64_defconfig lib_defconfig.ForceCheckHash +configs/raspberrypi4_defconfig lib_defconfig.ForceCheckHash +configs/raspberrypi_defconfig lib_defconfig.ForceCheckHash +configs/raspberrypicm4io_64_defconfig lib_defconfig.ForceCheckHash +configs/raspberrypicm4io_defconfig lib_defconfig.ForceCheckHash +configs/raspberrypizero2w_defconfig lib_defconfig.ForceCheckHash +configs/riotboard_defconfig lib_defconfig.ForceCheckHash +configs/roc_pc_rk3399_defconfig lib_defconfig.ForceCheckHash +configs/rock64_defconfig lib_defconfig.ForceCheckHash +configs/rock_pi_n8_defconfig lib_defconfig.ForceCheckHash +configs/rockpro64_defconfig lib_defconfig.ForceCheckHash +configs/roseapplepi_defconfig lib_defconfig.ForceCheckHash +configs/s6lx9_microboard_defconfig lib_defconfig.ForceCheckHash +configs/sheevaplug_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_lichee_rv_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_lichee_rv_dock_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_licheepi_nano_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_licheepi_zero_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_maix_bit_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_maix_bit_sdcard_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_maix_dock_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_maix_dock_sdcard_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_maix_go_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_maix_go_sdcard_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_maixduino_defconfig lib_defconfig.ForceCheckHash +configs/sipeed_maixduino_sdcard_defconfig lib_defconfig.ForceCheckHash +configs/snps_arc700_axs101_defconfig lib_defconfig.ForceCheckHash +configs/snps_arc700_nsim_defconfig lib_defconfig.ForceCheckHash +configs/snps_archs38_axs103_defconfig lib_defconfig.ForceCheckHash +configs/snps_archs38_haps_defconfig lib_defconfig.ForceCheckHash +configs/snps_archs38_hsdk_defconfig lib_defconfig.ForceCheckHash +configs/socrates_cyclone5_defconfig lib_defconfig.ForceCheckHash +configs/solidrun_clearfog_defconfig lib_defconfig.ForceCheckHash +configs/solidrun_clearfog_gt_8k_defconfig lib_defconfig.ForceCheckHash +configs/solidrun_macchiatobin_defconfig lib_defconfig.ForceCheckHash +configs/spike_riscv64_defconfig lib_defconfig.ForceCheckHash +configs/stm32f429_disco_xip_defconfig lib_defconfig.ForceCheckHash +configs/stm32f469_disco_sd_defconfig lib_defconfig.ForceCheckHash +configs/stm32f469_disco_xip_defconfig lib_defconfig.ForceCheckHash +configs/stm32f769_disco_sd_defconfig lib_defconfig.ForceCheckHash +configs/stm32mp157a_dk1_defconfig lib_defconfig.ForceCheckHash +configs/stm32mp157c_dk2_defconfig lib_defconfig.ForceCheckHash +configs/stm32mp157c_odyssey_defconfig lib_defconfig.ForceCheckHash +configs/terasic_de10nano_cyclone5_defconfig lib_defconfig.ForceCheckHash +configs/toradex_apalis_imx6_defconfig lib_defconfig.ForceCheckHash +configs/ts4900_defconfig lib_defconfig.ForceCheckHash +configs/ts5500_defconfig lib_defconfig.ForceCheckHash +configs/ts7680_defconfig lib_defconfig.ForceCheckHash +configs/uevm5432_defconfig lib_defconfig.ForceCheckHash +configs/versal_vck190_defconfig lib_defconfig.ForceCheckHash +configs/visionfive2_defconfig lib_defconfig.ForceCheckHash +configs/visionfive_defconfig lib_defconfig.ForceCheckHash +configs/wandboard_defconfig lib_defconfig.ForceCheckHash +configs/warp7_defconfig lib_defconfig.ForceCheckHash +configs/zynq_microzed_defconfig lib_defconfig.ForceCheckHash +configs/zynq_zc702_defconfig lib_defconfig.ForceCheckHash +configs/zynq_zc706_defconfig lib_defconfig.ForceCheckHash +configs/zynq_zed_defconfig lib_defconfig.ForceCheckHash +configs/zynqmp_kria_kd240_defconfig lib_defconfig.ForceCheckHash +configs/zynqmp_kria_kr260_defconfig lib_defconfig.ForceCheckHash +configs/zynqmp_kria_kv260_defconfig lib_defconfig.ForceCheckHash +configs/zynqmp_zcu102_defconfig lib_defconfig.ForceCheckHash +configs/zynqmp_zcu104_defconfig lib_defconfig.ForceCheckHash +configs/zynqmp_zcu106_defconfig lib_defconfig.ForceCheckHash linux/5.10.162-cip24-rt10/0001-arch-microblaze-mm-init.c-fix-build.patch lib_patch.Upstream package/18xx-ti-utils/0001-plt.h-fix-build-with-gcc-10.patch lib_patch.Upstream package/4th/0001-avoid-regen-during-install.patch lib_patch.Upstream diff --git a/utils/check-package b/utils/check-package index 61b66a8a67..cbb3613e19 100755 --- a/utils/check-package +++ b/utils/check-package @@ -10,6 +10,7 @@ import sys import checkpackagelib.base import checkpackagelib.lib_config +import checkpackagelib.lib_defconfig import checkpackagelib.lib_hash import checkpackagelib.lib_ignore import checkpackagelib.lib_mk @@ -113,6 +114,7 @@ DO_CHECK_INTREE = re.compile(r"|".join([ r"arch/", r"board/", r"boot/", + r"configs/", r"fs/", r"linux/", r"package/", @@ -137,6 +139,11 @@ DO_NOT_CHECK_INTREE = re.compile(r"|".join([ SYSV_INIT_SCRIPT_FILENAME = re.compile(r"/S\d\d[^/]+$") +# For defconfigs: avoid matching kernel, uboot... defconfig files, so +# limit to defconfig files in a configs/ directory, either in-tree or +# in a br2-external tree. +BR_DEFCONFIG_FILENAME = re.compile(r"^(.+/)?configs/[^/]+_defconfig$") + def get_lib_from_filename(fname): if flags.intree_only: @@ -152,6 +159,8 @@ def get_lib_from_filename(fname): return checkpackagelib.lib_ignore if CONFIG_IN_FILENAME.search(fname): return checkpackagelib.lib_config + if BR_DEFCONFIG_FILENAME.search(fname): + return checkpackagelib.lib_defconfig if fname.endswith(".hash"): return checkpackagelib.lib_hash if fname.endswith(".mk"): diff --git a/utils/checkpackagelib/lib_defconfig.py b/utils/checkpackagelib/lib_defconfig.py new file mode 100644 index 0000000000..ab0e361b57 --- /dev/null +++ b/utils/checkpackagelib/lib_defconfig.py @@ -0,0 +1,20 @@ +# See utils/checkpackagelib/readme.txt before editing this file. + +from checkpackagelib.base import _CheckFunction + + +class ForceCheckHash(_CheckFunction): + """Checks that a defconfig does force checking all hashes""" + + def before(self): + self.forces = False + + def check_line(self, lineno, text): + if self.forces: + return + if text == "BR2_DOWNLOAD_FORCE_CHECK_HASHES=y\n": + self.forces = True + + def after(self): + if not self.forces: + return [f"{self.filename}:0: missing BR2_DOWNLOAD_FORCE_CHECK_HASHES"] From thomas.petazzoni at bootlin.com Wed May 1 19:51:27 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:51:27 +0200 Subject: [Buildroot] [PATCH] utils/check-package: new check for Buildroot's defconfig files In-Reply-To: <20240331203403.815497-1-yann.morin.1998@free.fr> References: <20240331203403.815497-1-yann.morin.1998@free.fr> Message-ID: <20240501215127.2d729695@windsurf> On Sun, 31 Mar 2024 22:34:03 +0200 "Yann E. MORIN" wrote: > Now that we do have support for checking hashes for custom versions > (for the few packages for which we do support custom versions, like the > kernel, some bootloaders...), we want to ensure that our defconfig > files, when they enable one or more such custom version, do enable > checking the hashes for those versions, and thus we want to require all > our defconfigs do enable BR2_DOWNLOAD_FORCE_CHECK_HASHES. > > Add a check for that condition. > > We need to be careful that we only check Buildroot's defconfig, whether > in-tree or in a br2-external, and not kernel or other kconfig-based > defconfig files, like those in board/ sub-directories. So we only match > defconfig files that are in a configs/ directory, whether at the > toplevel (for in-tree defconfigs), or not (for br2-external defconfigs). > > Since we only have two defconfigs that check hashes for custom versions, > regnerate .checkpackageignore to ignore all so-far broken defconfigs. > > Suggested-by: Arnout Vandecappelle (Essensium/Mind) > Signed-off-by: Yann E. MORIN > Cc: Ricardo Martincoski > > --- > Note: this patch does not contain a regenerated .checkpackageignore, for > ease of review; I can resubmit with it regenerated after reviews, or a > committer may regenerate when applying. > --- > utils/check-package | 9 +++++++++ > utils/checkpackagelib/lib_defconfig.py | 20 ++++++++++++++++++++ > 2 files changed, 29 insertions(+) > create mode 100644 utils/checkpackagelib/lib_defconfig.py Applied to master, after updating .checkpackageignore of course. Thanks! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Wed May 1 19:51:56 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:51:56 +0200 Subject: [Buildroot] [PATCH 1/1] package/coreutils: drop gmp optional dependency In-Reply-To: <20240330185620.995961-1-fontaine.fabrice@gmail.com> References: <20240330185620.995961-1-fontaine.fabrice@gmail.com> Message-ID: <20240501215156.2f942c7e@windsurf> On Sat, 30 Mar 2024 19:56:20 +0100 Fabrice Fontaine wrote: > libgmp is included in coreutils (through bootstrap.conf) since bump to > version 9.0 in commit 2ee43bad85693d1c96e14f5b39ccb13a8982f50a and > https://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=13046444888a7e96f48d28fdd5a6ffe03d4ab036: > > configure: WARNING: unrecognized options: --disable-gtk-doc, --disable-gtk-doc-html, --disable-doc, --disable-docs, --disable-documentation, --with-xmlto, --with-fop, --enable-ipv6, --enable-static, --enable-shared, --without-gmp > > Fixes: 2ee43bad85693d1c96e14f5b39ccb13a8982f50a > > Signed-off-by: Fabrice Fontaine > --- > package/coreutils/coreutils.mk | 6 ------ > 1 file changed, 6 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Wed May 1 19:51:41 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:51:41 +0200 Subject: [Buildroot] [git commit] package/coreutils: drop gmp optional dependency Message-ID: <20240501195256.35BC68641F@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=16463a00affa0ba4814e583bcd544174528f371e branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master libgmp is included in coreutils (through bootstrap.conf) since bump to version 9.0 in commit 2ee43bad85693d1c96e14f5b39ccb13a8982f50a and https://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=13046444888a7e96f48d28fdd5a6ffe03d4ab036: configure: WARNING: unrecognized options: --disable-gtk-doc, --disable-gtk-doc-html, --disable-doc, --disable-docs, --disable-documentation, --with-xmlto, --with-fop, --enable-ipv6, --enable-static, --enable-shared, --without-gmp Fixes: 2ee43bad85693d1c96e14f5b39ccb13a8982f50a Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/coreutils/coreutils.mk | 6 ------ 1 file changed, 6 deletions(-) diff --git a/package/coreutils/coreutils.mk b/package/coreutils/coreutils.mk index e9cb7b67cb..846d4fa567 100644 --- a/package/coreutils/coreutils.mk +++ b/package/coreutils/coreutils.mk @@ -75,12 +75,6 @@ ifeq ($(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y) COREUTILS_CONF_OPTS += --with-libintl-prefix=$(STAGING_DIR)/usr endif -ifeq ($(BR2_PACKAGE_GMP),y) -COREUTILS_DEPENDENCIES += gmp -else -COREUTILS_CONF_OPTS += --without-gmp -endif - ifeq ($(BR2_PACKAGE_LIBCAP),y) COREUTILS_DEPENDENCIES += libcap else From thomas.petazzoni at bootlin.com Wed May 1 19:52:58 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:52:58 +0200 Subject: [Buildroot] [PATCH 1/1] package/acpica: bump to version 20240321 In-Reply-To: <20240419215212.1025654-1-ju.o@free.fr> References: <20240419215212.1025654-1-ju.o@free.fr> Message-ID: <20240501215258.2d29767e@windsurf> On Fri, 19 Apr 2024 23:52:12 +0200 Julien Olivain wrote: > For change log since 20230628, see [1]. > > License file hash changed in [2], due to year update. > > The upstream download page also changed the published hash from sha1 > to sha256. This change is reflected in the hash file. > > [1] https://github.com/acpica/acpica/blob/G20240322/documents/changes.txt > [2] https://github.com/acpica/acpica/commit/c18edfb1abfb50521a363f811bc8e1e64213bd00 > > Signed-off-by: Julien Olivain > --- > Patch tested on master branch at commit 256aa8e with commands: Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Wed May 1 19:53:33 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:53:33 +0200 Subject: [Buildroot] [PATCH 1/1] package/iperf: bump to version 2.2.0 In-Reply-To: <20240420105230.34710-1-ju.o@free.fr> References: <20240420105230.34710-1-ju.o@free.fr> Message-ID: <20240501215333.22c0c30e@windsurf> On Sat, 20 Apr 2024 12:52:30 +0200 Julien Olivain wrote: > For release note, see after the file list at: > https://sourceforge.net/projects/iperf2/files/ > > Note: the md5 file hash is also added, because it is published on > download page. > > Signed-off-by: Julien Olivain > --- > package/iperf/iperf.hash | 5 +++-- > package/iperf/iperf.mk | 2 +- > 2 files changed, 4 insertions(+), 3 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Wed May 1 19:54:08 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:54:08 +0200 Subject: [Buildroot] [PATCH 1/1] support/testing: add iperf runtime test In-Reply-To: <20240420105441.35505-1-ju.o@free.fr> References: <20240420105441.35505-1-ju.o@free.fr> Message-ID: <20240501215408.73ee6720@windsurf> On Sat, 20 Apr 2024 12:54:41 +0200 Julien Olivain wrote: > Signed-off-by: Julien Olivain > --- > DEVELOPERS | 1 + > support/testing/tests/package/test_iperf.py | 23 +++++++++++++++++++++ > 2 files changed, 24 insertions(+) > create mode 100644 support/testing/tests/package/test_iperf.py Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From romain.naour at smile.fr Wed May 1 19:54:19 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 21:54:19 +0200 Subject: [Buildroot] [PATCH v3 1/9] toolchain/toolchain-external: drop external codesourcery niosII toolchain In-Reply-To: <20240306213606.2149683-2-giulio.benetti@benettiengineering.com> References: <20240306213606.2149683-1-giulio.benetti@benettiengineering.com> <20240306213606.2149683-2-giulio.benetti@benettiengineering.com> Message-ID: Hello Giulio, All, Le 06/03/2024 ? 22:35, Giulio Benetti a ?crit?: > This toolchain is pretty old and unlikely used. It's also affected by > binutils bug 27597, so let's remove it. We need to remove this toolchain from toolchain-configs.csv first. No need to respin for that, I added a commit before merging your series. About NiosII, nios2 target will be obsolete in GCC 14: https://sourceware.org/pipermail/binutils/2024-April/133675.html Maybe we should stop supporting it soon. Best regards, Romain > > Signed-off-by: Giulio Benetti > --- > toolchain/toolchain-external/Config.in | 6 ------ > .../toolchain-external/pkg-toolchain-external.mk | 2 +- > .../Config.in | 16 ---------------- > .../Config.in.options | 9 --------- > .../toolchain-external-codesourcery-niosII.hash | 6 ------ > .../toolchain-external-codesourcery-niosII.mk | 13 ------------- > 6 files changed, 1 insertion(+), 51 deletions(-) > delete mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in > delete mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options > delete mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash > delete mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk > > diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in > index c1c159cb8e..cb678b7886 100644 > --- a/toolchain/toolchain-external/Config.in > +++ b/toolchain/toolchain-external/Config.in > @@ -33,9 +33,6 @@ source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config > source "toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in" > source "toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in" > > -# NIOSII > -source "toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in" > - > # Bootlin toolchains, available for virtually all architectures > source "toolchain/toolchain-external/toolchain-external-bootlin/Config.in" > > @@ -137,9 +134,6 @@ source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config > source "toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in.options" > source "toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in.options" > > -# NIOSII > -source "toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options" > - > # Bootlin toolchains > source "toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options" > > diff --git a/toolchain/toolchain-external/pkg-toolchain-external.mk b/toolchain/toolchain-external/pkg-toolchain-external.mk > index ddf1d70ab4..aa5365b5bd 100644 > --- a/toolchain/toolchain-external/pkg-toolchain-external.mk > +++ b/toolchain/toolchain-external/pkg-toolchain-external.mk > @@ -13,7 +13,7 @@ > # * Toolchains provided by Linaro for the ARM and AArch64 > # architectures > # * Sourcery CodeBench toolchains (from Mentor Graphics) for the ARM, > -# MIPS, PowerPC, x86_64 and NIOS 2 architectures. For the MIPS > +# MIPS, PowerPC, and x86_64 architectures. For the MIPS > # toolchain, the -muclibc variant isn't supported yet, only the > # default glibc-based variant is. > # * Synopsys DesignWare toolchains for ARC cores > diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in > deleted file mode 100644 > index cf3ce69a68..0000000000 > --- a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in > +++ /dev/null > @@ -1,16 +0,0 @@ > -config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII > - bool "Sourcery CodeBench Nios-II 2018.05" > - depends on BR2_nios2 > - depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_8 > - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" > - select BR2_TOOLCHAIN_EXTERNAL_GLIBC > - select BR2_TOOLCHAIN_HAS_SSP > - select BR2_TOOLCHAIN_HAS_NATIVE_RPC > - select BR2_INSTALL_LIBSTDCPP > - select BR2_HOSTARCH_NEEDS_IA32_LIBS > - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15 > - select BR2_TOOLCHAIN_GCC_AT_LEAST_7 > - help > - Sourcery CodeBench toolchain for the Nios-II architecture, > - from Mentor Graphics. It uses gcc 7.3, binutils 2.28, > - glibc 2.27, gdb 8.0.1 and kernel headers 4.15.5. > diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options > deleted file mode 100644 > index 07cc5ede94..0000000000 > --- a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options > +++ /dev/null > @@ -1,9 +0,0 @@ > -if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII > - > -config BR2_TOOLCHAIN_EXTERNAL_PREFIX > - default "nios2-linux-gnu" > - > -config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL > - default "toolchain-external-codesourcery-niosII" > - > -endif > diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash > deleted file mode 100644 > index 47893ab7e2..0000000000 > --- a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash > +++ /dev/null > @@ -1,6 +0,0 @@ > -# From https://sourcery.mentor.com/GNUToolchain/release3374 > -md5 4f536b3b9b4e00f483e82e304c0a27ae sourceryg++-2018.05-5-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2 > -md5 be42ab83da2e8db7b73dc890c2549570 sourceryg++-2018.05-5-nios2-linux-gnu.src.tar.bz2 > -# Locally calculated > -sha256 c19afb432b5b23f8d5d639831d3a423a3ea3c9cc62e0015020d20ea2eb36dd1b sourceryg++-2018.05-5-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2 > -sha256 d73a6364106dd62352711f932d3be8e97fdaaa548995678b5d38d9f21e22437a sourceryg++-2018.05-5-nios2-linux-gnu.src.tar.bz2 > diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk > deleted file mode 100644 > index cb0fe760ff..0000000000 > --- a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk > +++ /dev/null > @@ -1,13 +0,0 @@ > -################################################################################ > -# > -# toolchain-external-codesourcery-niosII > -# > -################################################################################ > - > -TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION = 2018.05-5 > - > -TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_SITE = https://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX) > -TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_SOURCE = sourceryg++-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2 > -TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_ACTUAL_SOURCE_TARBALL = sourceryg++-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2 > - > -$(eval $(toolchain-external-package)) From thomas.petazzoni at bootlin.com Wed May 1 19:55:23 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:55:23 +0200 Subject: [Buildroot] [PATCH 1/1] package/fwts: disable parallel build In-Reply-To: <20240420132251.1349622-1-ju.o@free.fr> References: <20240420132251.1349622-1-ju.o@free.fr> Message-ID: <20240501215523.5bc7ce23@windsurf> On Sat, 20 Apr 2024 15:22:51 +0200 Julien Olivain wrote: > fwts randomly fail to build in parallel with error: > > mv: cannot stat 'dtcompilerparser.tab.c': No such file or directory > mv: cannot stat 'prparser.tab.c': No such file or directory > > This is a known upstream issue. See: > https://github.com/fwts/fwts/issues/7 > > This commit workaround this issue by disabling parallel builds. > > Signed-off-by: Julien Olivain > --- > package/fwts/fwts.mk | 3 +++ > 1 file changed, 3 insertions(+) Hm, I don't see any failures in the autobuilders. Did you encounter this issue personally? Why don't we see it in the autobuilders? Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Wed May 1 19:57:01 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 21:57:01 +0200 Subject: [Buildroot] [PATCH 1/1] support/testing: add fwts runtime test In-Reply-To: <20240420132817.1352847-1-ju.o@free.fr> References: <20240420132817.1352847-1-ju.o@free.fr> Message-ID: <20240501215701.7b2ce70e@windsurf> On Sat, 20 Apr 2024 15:28:17 +0200 Julien Olivain wrote: > Signed-off-by: Julien Olivain > --- > DEVELOPERS | 1 + > support/testing/tests/package/test_fwts.py | 67 ++++++++++++++++++++++ > 2 files changed, 68 insertions(+) > create mode 100644 support/testing/tests/package/test_fwts.py Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From romain.naour at smile.fr Wed May 1 19:54:38 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 21:54:38 +0200 Subject: [Buildroot] [git commit] support/config-fragments: remove sourcery-nios2.config Message-ID: <20240501195824.0CDD886484@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=65fe2a8f02c694975065c890c0e6038619c025ff branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master The Sourcery CodeBench Nios-II 2018.05 external toolchain will be removed, first remove it from toolchain-configs.csv used by test-pkg and genrandconfig scripts. Signed-off-by: Romain Naour --- support/config-fragments/autobuild/sourcery-nios2.config | 3 --- support/config-fragments/autobuild/toolchain-configs.csv | 1 - 2 files changed, 4 deletions(-) diff --git a/support/config-fragments/autobuild/sourcery-nios2.config b/support/config-fragments/autobuild/sourcery-nios2.config deleted file mode 100644 index d58407d513..0000000000 --- a/support/config-fragments/autobuild/sourcery-nios2.config +++ /dev/null @@ -1,3 +0,0 @@ -BR2_nios2=y -BR2_TOOLCHAIN_EXTERNAL=y -BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII=y diff --git a/support/config-fragments/autobuild/toolchain-configs.csv b/support/config-fragments/autobuild/toolchain-configs.csv index 2c4fa45fe7..47d5fddfbd 100644 --- a/support/config-fragments/autobuild/toolchain-configs.csv +++ b/support/config-fragments/autobuild/toolchain-configs.csv @@ -65,4 +65,3 @@ support/config-fragments/autobuild/linaro-aarch64-be.config,x86 support/config-fragments/autobuild/linaro-arm.config,x86 support/config-fragments/autobuild/sourcery-mips64.config,x86 support/config-fragments/autobuild/sourcery-mips.config,x86 -support/config-fragments/autobuild/sourcery-nios2.config,x86 From romain.naour at smile.fr Wed May 1 19:57:21 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 21:57:21 +0200 Subject: [Buildroot] [git commit] package/kf5/kf5-kcoreaddons: drop nios2 binutils bug 27597 dependency Message-ID: <20240501195824.50C8E86485@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=f9e4c41c19707d0cdb30c5607350ad80cd53e8e8 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Now that binutils patch has been backported to every Buildroot binutils version we can drop nios2 binutils bug 27597 dependency. Signed-off-by: Giulio Benetti Signed-off-by: Romain Naour --- package/kf5/kf5-kcoreaddons/Config.in | 1 - 1 file changed, 1 deletion(-) diff --git a/package/kf5/kf5-kcoreaddons/Config.in b/package/kf5/kf5-kcoreaddons/Config.in index 02bd38e395..88fda03ee0 100644 --- a/package/kf5/kf5-kcoreaddons/Config.in +++ b/package/kf5/kf5-kcoreaddons/Config.in @@ -1,6 +1,5 @@ config BR2_PACKAGE_KF5_KCOREADDONS bool "kf5-kcoreaddons" - depends on !BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597 select BR2_PACKAGE_KF5_EXTRA_CMAKE_MODULES select BR2_PACKAGE_QT5TOOLS select BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS From romain.naour at smile.fr Wed May 1 19:57:24 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 21:57:24 +0200 Subject: [Buildroot] [git commit] package/libcamera: drop nios2 binutils bug 27597 dependency Message-ID: <20240501195824.5E3908641E@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=138b06cd22b67e48ea801689b269757d4b296c44 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Now that binutils patch has been backported to every Buildroot binutils version we can drop nios2 binutils bug 27597 dependency. Signed-off-by: Giulio Benetti Signed-off-by: Romain Naour --- package/libcamera/Config.in | 1 - 1 file changed, 1 deletion(-) diff --git a/package/libcamera/Config.in b/package/libcamera/Config.in index ccb5281b4b..e84b8d342e 100644 --- a/package/libcamera/Config.in +++ b/package/libcamera/Config.in @@ -3,7 +3,6 @@ config BR2_PACKAGE_LIBCAMERA_ARCH_SUPPORTS default y # Invalid packing size of ControlValue struct on m68k depends on !BR2_m68k - depends on !BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597 menuconfig BR2_PACKAGE_LIBCAMERA bool "libcamera" From romain.naour at smile.fr Wed May 1 19:57:19 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 21:57:19 +0200 Subject: [Buildroot] [git commit] package/gdal: drop nios2 binutils bug 27597 dependency Message-ID: <20240501195824.457BE86484@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=e983a6404814292092ab797d3983fa97aea76741 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Now that binutils patch has been backported to every Buildroot binutils version we can drop nios2 binutils bug 27597 dependency. Signed-off-by: Giulio Benetti Reviewed-by: Maxim Kochetkov Signed-off-by: Romain Naour --- package/gdal/Config.in | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/package/gdal/Config.in b/package/gdal/Config.in index 24a1f06af2..839a1bd7ea 100644 --- a/package/gdal/Config.in +++ b/package/gdal/Config.in @@ -5,7 +5,6 @@ config BR2_PACKAGE_GDAL # configure can't find proj, when linking statically depends on !BR2_STATIC_LIBS depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11, proj - depends on !BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597 depends on BR2_TOOLCHAIN_HAS_THREADS # proj depends on BR2_USE_WCHAR # proj select BR2_PACKAGE_GIFLIB @@ -26,9 +25,8 @@ config BR2_PACKAGE_GDAL https://gdal.org/ -comment "gdal needs a toolchain w/ C++, dynamic library, gcc >= 4.7, not binutils bug 27597, threads, wchar" +comment "gdal needs a toolchain w/ C++, dynamic library, gcc >= 4.7, threads, wchar" depends on BR2_TOOLCHAIN_HAS_SYNC_4 depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 || \ - BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597 || \ !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR From romain.naour at smile.fr Wed May 1 19:57:16 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 21:57:16 +0200 Subject: [Buildroot] [git commit] package/binutils: add local patches to fix Nios2 bug 27597 Message-ID: <20240501195824.2B4DD86486@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=83339a69e4ce03fccbd4d6bebd6a606f3e330085 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master These backported patches fix Nios2 linker bug 27597 that affects packages gdal, kf5-kcoreaddons, libgeos, libcamera, pistache. Signed-off-by: Giulio Benetti Signed-off-by: Romain Naour --- ...s-assertion-fail-in-nios2_elf32_install_i.patch | 125 +++++++++++++++++++++ ...s-assertion-fail-in-nios2_elf32_install_i.patch | 125 +++++++++++++++++++++ ...s-assertion-fail-in-nios2_elf32_install_i.patch | 125 +++++++++++++++++++++ 3 files changed, 375 insertions(+) diff --git a/package/binutils/2.40/0003-PR27597-nios-assertion-fail-in-nios2_elf32_install_i.patch b/package/binutils/2.40/0003-PR27597-nios-assertion-fail-in-nios2_elf32_install_i.patch new file mode 100644 index 0000000000..4753ae13c4 --- /dev/null +++ b/package/binutils/2.40/0003-PR27597-nios-assertion-fail-in-nios2_elf32_install_i.patch @@ -0,0 +1,125 @@ +From 900c0f0aa3d78cd9e67ccd26fbc86224cef4c5b1 Mon Sep 17 00:00:00 2001 +From: Alan Modra +Date: Fri, 16 Feb 2024 22:33:29 +1030 +Subject: [PATCH] PR27597, nios: assertion fail in nios2_elf32_install_imm16 + +The assertion in nios2_elf32_install_imm16 triggers when the PLT is +twice the maximum allowable size for a branch from PLTn to reach +.PLTresolve, and on no other call to nios2_elf32_install_imm16. That +makes the assertion completely useless. We can handle a PIC PLT +exceeding 0x8000 in size by bouncing branches that won't reach through +previous branches. + + PR 27597 + * elf32-nios2.c (nios2_elf32_install_imm16): Delete BFD_ASSERT. + (nios2_build_one_stub): Don't bother masking value passed to + nios2_elf32_install_imm16. + (nios2_elf32_finish_dynamic_symbol): Likewise. Handle overflow + of PLTn branch to .PLTresolve by bouncing through prior branches. + +Upstream: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=900c0f0aa3d78cd9e67ccd26fbc86224cef4c5b1 + +Signed-off-by: Giulio Benetti +--- + bfd/elf32-nios2.c | 40 ++++++++++++++++++++++++---------------- + 1 file changed, 24 insertions(+), 16 deletions(-) + +diff --git a/bfd/elf32-nios2.c b/bfd/elf32-nios2.c +index bebf4239958..7f61e2f8507 100644 +--- a/bfd/elf32-nios2.c ++++ b/bfd/elf32-nios2.c +@@ -1878,8 +1878,6 @@ nios2_elf32_install_imm16 (asection *sec, bfd_vma offset, bfd_vma value) + { + bfd_vma word = bfd_get_32 (sec->owner, sec->contents + offset); + +- BFD_ASSERT (value <= 0xffff || ((bfd_signed_vma) value) >= -0xffff); +- + bfd_put_32 (sec->owner, word | ((value & 0xffff) << 6), + sec->contents + offset); + } +@@ -2518,7 +2516,7 @@ nios2_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg ATTRIBUTE_U + nios2_elf32_install_imm16 (stub_sec, hsh->stub_offset, + hiadj (sym_value)); + nios2_elf32_install_imm16 (stub_sec, hsh->stub_offset + 4, +- (sym_value & 0xffff)); ++ sym_value); + stub_sec->size += 12; + break; + default: +@@ -4986,16 +4984,28 @@ nios2_elf32_finish_dynamic_symbol (bfd *output_bfd, + /* Emit the PLT entry. */ + if (bfd_link_pic (info)) + { ++ bfd_vma br_offset; ++ + nios2_elf32_install_data (splt, nios2_so_plt_entry, h->plt.offset, + 3); + plt_index = (h->plt.offset - 24) / 12; + got_offset = (plt_index + 3) * 4; + nios2_elf32_install_imm16 (splt, h->plt.offset, +- hiadj(plt_index * 4)); ++ hiadj (plt_index * 4)); + nios2_elf32_install_imm16 (splt, h->plt.offset + 4, +- (plt_index * 4) & 0xffff); +- nios2_elf32_install_imm16 (splt, h->plt.offset + 8, +- 0xfff4 - h->plt.offset); ++ plt_index * 4); ++ br_offset = -(h->plt.offset + 12); ++ /* If this plt entry is too far away from the start of .plt ++ for the "br" to reach .PLTresolve, bounce through one or ++ more of the previous "br" instructions. */ ++ if (br_offset < (bfd_vma) -32768) ++ { ++ br_offset += 32768 / 12 * 12 - 4; ++ while (br_offset < (bfd_vma) -32768) ++ br_offset += 32768 / 12 * 12; ++ } ++ nios2_elf32_install_imm16 (splt, h->plt.offset + 8, br_offset); ++ + got_address = (sgotplt->output_section->vma + sgotplt->output_offset + + got_offset); + +@@ -5014,9 +5024,8 @@ nios2_elf32_finish_dynamic_symbol (bfd *output_bfd, + nios2_elf32_install_data (splt, nios2_plt_entry, h->plt.offset, 3); + got_address = (sgotplt->output_section->vma + sgotplt->output_offset + + got_offset); +- nios2_elf32_install_imm16 (splt, h->plt.offset, hiadj(got_address)); +- nios2_elf32_install_imm16 (splt, h->plt.offset + 4, +- got_address & 0xffff); ++ nios2_elf32_install_imm16 (splt, h->plt.offset, hiadj (got_address)); ++ nios2_elf32_install_imm16 (splt, h->plt.offset + 4, got_address); + + /* Fill in the entry in the global offset table. */ + bfd_put_32 (output_bfd, +@@ -5217,8 +5226,8 @@ nios2_elf32_finish_dynamic_sections (bfd *output_bfd, + BFD_ASSERT ((got_pcrel & 0xf) == 0); + nios2_elf32_install_data (splt, nios2_so_plt0_entry, 0, 6); + nios2_elf32_install_imm16 (splt, 4, hiadj (got_pcrel)); +- nios2_elf32_install_imm16 (splt, 12, got_pcrel & 0xffff); +- nios2_elf32_install_imm16 (splt, 16, (got_pcrel + 4) & 0xffff); ++ nios2_elf32_install_imm16 (splt, 12, got_pcrel); ++ nios2_elf32_install_imm16 (splt, 16, got_pcrel + 4); + } + else + { +@@ -5240,14 +5249,13 @@ nios2_elf32_finish_dynamic_sections (bfd *output_bfd, + + nios2_elf32_install_data (splt, nios2_plt0_entry, res_size, 7); + nios2_elf32_install_imm16 (splt, res_size, hiadj (res_start)); +- nios2_elf32_install_imm16 (splt, res_size + 4, +- res_start & 0xffff); ++ nios2_elf32_install_imm16 (splt, res_size + 4, res_start); + nios2_elf32_install_imm16 (splt, res_size + 12, + hiadj (got_address)); + nios2_elf32_install_imm16 (splt, res_size + 16, +- (got_address + 4) & 0xffff); ++ got_address + 4); + nios2_elf32_install_imm16 (splt, res_size + 20, +- (got_address + 8) & 0xffff); ++ got_address + 8); + } + } + } +-- +2.34.1 + diff --git a/package/binutils/2.41/0003-PR27597-nios-assertion-fail-in-nios2_elf32_install_i.patch b/package/binutils/2.41/0003-PR27597-nios-assertion-fail-in-nios2_elf32_install_i.patch new file mode 100644 index 0000000000..4753ae13c4 --- /dev/null +++ b/package/binutils/2.41/0003-PR27597-nios-assertion-fail-in-nios2_elf32_install_i.patch @@ -0,0 +1,125 @@ +From 900c0f0aa3d78cd9e67ccd26fbc86224cef4c5b1 Mon Sep 17 00:00:00 2001 +From: Alan Modra +Date: Fri, 16 Feb 2024 22:33:29 +1030 +Subject: [PATCH] PR27597, nios: assertion fail in nios2_elf32_install_imm16 + +The assertion in nios2_elf32_install_imm16 triggers when the PLT is +twice the maximum allowable size for a branch from PLTn to reach +.PLTresolve, and on no other call to nios2_elf32_install_imm16. That +makes the assertion completely useless. We can handle a PIC PLT +exceeding 0x8000 in size by bouncing branches that won't reach through +previous branches. + + PR 27597 + * elf32-nios2.c (nios2_elf32_install_imm16): Delete BFD_ASSERT. + (nios2_build_one_stub): Don't bother masking value passed to + nios2_elf32_install_imm16. + (nios2_elf32_finish_dynamic_symbol): Likewise. Handle overflow + of PLTn branch to .PLTresolve by bouncing through prior branches. + +Upstream: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=900c0f0aa3d78cd9e67ccd26fbc86224cef4c5b1 + +Signed-off-by: Giulio Benetti +--- + bfd/elf32-nios2.c | 40 ++++++++++++++++++++++++---------------- + 1 file changed, 24 insertions(+), 16 deletions(-) + +diff --git a/bfd/elf32-nios2.c b/bfd/elf32-nios2.c +index bebf4239958..7f61e2f8507 100644 +--- a/bfd/elf32-nios2.c ++++ b/bfd/elf32-nios2.c +@@ -1878,8 +1878,6 @@ nios2_elf32_install_imm16 (asection *sec, bfd_vma offset, bfd_vma value) + { + bfd_vma word = bfd_get_32 (sec->owner, sec->contents + offset); + +- BFD_ASSERT (value <= 0xffff || ((bfd_signed_vma) value) >= -0xffff); +- + bfd_put_32 (sec->owner, word | ((value & 0xffff) << 6), + sec->contents + offset); + } +@@ -2518,7 +2516,7 @@ nios2_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg ATTRIBUTE_U + nios2_elf32_install_imm16 (stub_sec, hsh->stub_offset, + hiadj (sym_value)); + nios2_elf32_install_imm16 (stub_sec, hsh->stub_offset + 4, +- (sym_value & 0xffff)); ++ sym_value); + stub_sec->size += 12; + break; + default: +@@ -4986,16 +4984,28 @@ nios2_elf32_finish_dynamic_symbol (bfd *output_bfd, + /* Emit the PLT entry. */ + if (bfd_link_pic (info)) + { ++ bfd_vma br_offset; ++ + nios2_elf32_install_data (splt, nios2_so_plt_entry, h->plt.offset, + 3); + plt_index = (h->plt.offset - 24) / 12; + got_offset = (plt_index + 3) * 4; + nios2_elf32_install_imm16 (splt, h->plt.offset, +- hiadj(plt_index * 4)); ++ hiadj (plt_index * 4)); + nios2_elf32_install_imm16 (splt, h->plt.offset + 4, +- (plt_index * 4) & 0xffff); +- nios2_elf32_install_imm16 (splt, h->plt.offset + 8, +- 0xfff4 - h->plt.offset); ++ plt_index * 4); ++ br_offset = -(h->plt.offset + 12); ++ /* If this plt entry is too far away from the start of .plt ++ for the "br" to reach .PLTresolve, bounce through one or ++ more of the previous "br" instructions. */ ++ if (br_offset < (bfd_vma) -32768) ++ { ++ br_offset += 32768 / 12 * 12 - 4; ++ while (br_offset < (bfd_vma) -32768) ++ br_offset += 32768 / 12 * 12; ++ } ++ nios2_elf32_install_imm16 (splt, h->plt.offset + 8, br_offset); ++ + got_address = (sgotplt->output_section->vma + sgotplt->output_offset + + got_offset); + +@@ -5014,9 +5024,8 @@ nios2_elf32_finish_dynamic_symbol (bfd *output_bfd, + nios2_elf32_install_data (splt, nios2_plt_entry, h->plt.offset, 3); + got_address = (sgotplt->output_section->vma + sgotplt->output_offset + + got_offset); +- nios2_elf32_install_imm16 (splt, h->plt.offset, hiadj(got_address)); +- nios2_elf32_install_imm16 (splt, h->plt.offset + 4, +- got_address & 0xffff); ++ nios2_elf32_install_imm16 (splt, h->plt.offset, hiadj (got_address)); ++ nios2_elf32_install_imm16 (splt, h->plt.offset + 4, got_address); + + /* Fill in the entry in the global offset table. */ + bfd_put_32 (output_bfd, +@@ -5217,8 +5226,8 @@ nios2_elf32_finish_dynamic_sections (bfd *output_bfd, + BFD_ASSERT ((got_pcrel & 0xf) == 0); + nios2_elf32_install_data (splt, nios2_so_plt0_entry, 0, 6); + nios2_elf32_install_imm16 (splt, 4, hiadj (got_pcrel)); +- nios2_elf32_install_imm16 (splt, 12, got_pcrel & 0xffff); +- nios2_elf32_install_imm16 (splt, 16, (got_pcrel + 4) & 0xffff); ++ nios2_elf32_install_imm16 (splt, 12, got_pcrel); ++ nios2_elf32_install_imm16 (splt, 16, got_pcrel + 4); + } + else + { +@@ -5240,14 +5249,13 @@ nios2_elf32_finish_dynamic_sections (bfd *output_bfd, + + nios2_elf32_install_data (splt, nios2_plt0_entry, res_size, 7); + nios2_elf32_install_imm16 (splt, res_size, hiadj (res_start)); +- nios2_elf32_install_imm16 (splt, res_size + 4, +- res_start & 0xffff); ++ nios2_elf32_install_imm16 (splt, res_size + 4, res_start); + nios2_elf32_install_imm16 (splt, res_size + 12, + hiadj (got_address)); + nios2_elf32_install_imm16 (splt, res_size + 16, +- (got_address + 4) & 0xffff); ++ got_address + 4); + nios2_elf32_install_imm16 (splt, res_size + 20, +- (got_address + 8) & 0xffff); ++ got_address + 8); + } + } + } +-- +2.34.1 + diff --git a/package/binutils/2.42/0003-PR27597-nios-assertion-fail-in-nios2_elf32_install_i.patch b/package/binutils/2.42/0003-PR27597-nios-assertion-fail-in-nios2_elf32_install_i.patch new file mode 100644 index 0000000000..4753ae13c4 --- /dev/null +++ b/package/binutils/2.42/0003-PR27597-nios-assertion-fail-in-nios2_elf32_install_i.patch @@ -0,0 +1,125 @@ +From 900c0f0aa3d78cd9e67ccd26fbc86224cef4c5b1 Mon Sep 17 00:00:00 2001 +From: Alan Modra +Date: Fri, 16 Feb 2024 22:33:29 +1030 +Subject: [PATCH] PR27597, nios: assertion fail in nios2_elf32_install_imm16 + +The assertion in nios2_elf32_install_imm16 triggers when the PLT is +twice the maximum allowable size for a branch from PLTn to reach +.PLTresolve, and on no other call to nios2_elf32_install_imm16. That +makes the assertion completely useless. We can handle a PIC PLT +exceeding 0x8000 in size by bouncing branches that won't reach through +previous branches. + + PR 27597 + * elf32-nios2.c (nios2_elf32_install_imm16): Delete BFD_ASSERT. + (nios2_build_one_stub): Don't bother masking value passed to + nios2_elf32_install_imm16. + (nios2_elf32_finish_dynamic_symbol): Likewise. Handle overflow + of PLTn branch to .PLTresolve by bouncing through prior branches. + +Upstream: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=900c0f0aa3d78cd9e67ccd26fbc86224cef4c5b1 + +Signed-off-by: Giulio Benetti +--- + bfd/elf32-nios2.c | 40 ++++++++++++++++++++++++---------------- + 1 file changed, 24 insertions(+), 16 deletions(-) + +diff --git a/bfd/elf32-nios2.c b/bfd/elf32-nios2.c +index bebf4239958..7f61e2f8507 100644 +--- a/bfd/elf32-nios2.c ++++ b/bfd/elf32-nios2.c +@@ -1878,8 +1878,6 @@ nios2_elf32_install_imm16 (asection *sec, bfd_vma offset, bfd_vma value) + { + bfd_vma word = bfd_get_32 (sec->owner, sec->contents + offset); + +- BFD_ASSERT (value <= 0xffff || ((bfd_signed_vma) value) >= -0xffff); +- + bfd_put_32 (sec->owner, word | ((value & 0xffff) << 6), + sec->contents + offset); + } +@@ -2518,7 +2516,7 @@ nios2_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg ATTRIBUTE_U + nios2_elf32_install_imm16 (stub_sec, hsh->stub_offset, + hiadj (sym_value)); + nios2_elf32_install_imm16 (stub_sec, hsh->stub_offset + 4, +- (sym_value & 0xffff)); ++ sym_value); + stub_sec->size += 12; + break; + default: +@@ -4986,16 +4984,28 @@ nios2_elf32_finish_dynamic_symbol (bfd *output_bfd, + /* Emit the PLT entry. */ + if (bfd_link_pic (info)) + { ++ bfd_vma br_offset; ++ + nios2_elf32_install_data (splt, nios2_so_plt_entry, h->plt.offset, + 3); + plt_index = (h->plt.offset - 24) / 12; + got_offset = (plt_index + 3) * 4; + nios2_elf32_install_imm16 (splt, h->plt.offset, +- hiadj(plt_index * 4)); ++ hiadj (plt_index * 4)); + nios2_elf32_install_imm16 (splt, h->plt.offset + 4, +- (plt_index * 4) & 0xffff); +- nios2_elf32_install_imm16 (splt, h->plt.offset + 8, +- 0xfff4 - h->plt.offset); ++ plt_index * 4); ++ br_offset = -(h->plt.offset + 12); ++ /* If this plt entry is too far away from the start of .plt ++ for the "br" to reach .PLTresolve, bounce through one or ++ more of the previous "br" instructions. */ ++ if (br_offset < (bfd_vma) -32768) ++ { ++ br_offset += 32768 / 12 * 12 - 4; ++ while (br_offset < (bfd_vma) -32768) ++ br_offset += 32768 / 12 * 12; ++ } ++ nios2_elf32_install_imm16 (splt, h->plt.offset + 8, br_offset); ++ + got_address = (sgotplt->output_section->vma + sgotplt->output_offset + + got_offset); + +@@ -5014,9 +5024,8 @@ nios2_elf32_finish_dynamic_symbol (bfd *output_bfd, + nios2_elf32_install_data (splt, nios2_plt_entry, h->plt.offset, 3); + got_address = (sgotplt->output_section->vma + sgotplt->output_offset + + got_offset); +- nios2_elf32_install_imm16 (splt, h->plt.offset, hiadj(got_address)); +- nios2_elf32_install_imm16 (splt, h->plt.offset + 4, +- got_address & 0xffff); ++ nios2_elf32_install_imm16 (splt, h->plt.offset, hiadj (got_address)); ++ nios2_elf32_install_imm16 (splt, h->plt.offset + 4, got_address); + + /* Fill in the entry in the global offset table. */ + bfd_put_32 (output_bfd, +@@ -5217,8 +5226,8 @@ nios2_elf32_finish_dynamic_sections (bfd *output_bfd, + BFD_ASSERT ((got_pcrel & 0xf) == 0); + nios2_elf32_install_data (splt, nios2_so_plt0_entry, 0, 6); + nios2_elf32_install_imm16 (splt, 4, hiadj (got_pcrel)); +- nios2_elf32_install_imm16 (splt, 12, got_pcrel & 0xffff); +- nios2_elf32_install_imm16 (splt, 16, (got_pcrel + 4) & 0xffff); ++ nios2_elf32_install_imm16 (splt, 12, got_pcrel); ++ nios2_elf32_install_imm16 (splt, 16, got_pcrel + 4); + } + else + { +@@ -5240,14 +5249,13 @@ nios2_elf32_finish_dynamic_sections (bfd *output_bfd, + + nios2_elf32_install_data (splt, nios2_plt0_entry, res_size, 7); + nios2_elf32_install_imm16 (splt, res_size, hiadj (res_start)); +- nios2_elf32_install_imm16 (splt, res_size + 4, +- res_start & 0xffff); ++ nios2_elf32_install_imm16 (splt, res_size + 4, res_start); + nios2_elf32_install_imm16 (splt, res_size + 12, + hiadj (got_address)); + nios2_elf32_install_imm16 (splt, res_size + 16, +- (got_address + 4) & 0xffff); ++ got_address + 4); + nios2_elf32_install_imm16 (splt, res_size + 20, +- (got_address + 8) & 0xffff); ++ got_address + 8); + } + } + } +-- +2.34.1 + From romain.naour at smile.fr Wed May 1 19:56:13 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 21:56:13 +0200 Subject: [Buildroot] [git commit] toolchain/toolchain-external: drop external codesourcery niosII toolchain Message-ID: <20240501195824.1D5E78641E@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=7fa0159a5055363d002089f0c451a84594732cf2 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master This toolchain is pretty old and unlikely used. It's also affected by binutils bug 27597, so let's remove it. Remove BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII from pixman package. Signed-off-by: Giulio Benetti [Romain: remove BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII] Signed-off-by: Romain Naour --- package/pixman/pixman.mk | 7 ------- toolchain/toolchain-external/Config.in | 6 ------ toolchain/toolchain-external/pkg-toolchain-external.mk | 2 +- .../toolchain-external-codesourcery-niosII/Config.in | 16 ---------------- .../Config.in.options | 9 --------- .../toolchain-external-codesourcery-niosII.hash | 6 ------ .../toolchain-external-codesourcery-niosII.mk | 13 ------------- 7 files changed, 1 insertion(+), 58 deletions(-) diff --git a/package/pixman/pixman.mk b/package/pixman/pixman.mk index 37eb974c46..8a4f16318f 100644 --- a/package/pixman/pixman.mk +++ b/package/pixman/pixman.mk @@ -50,13 +50,6 @@ endif PIXMAN_CFLAGS = $(TARGET_CFLAGS) -# toolchain gets confused about TLS access through GOT (PIC), so disable TLS -# movhi r4, %got_hiadj(%tls_ldo(fast_path_cache)) -# {standard input}:172: Error: bad expression -ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII),y) -PIXMAN_CFLAGS += -DPIXMAN_NO_TLS -endif - ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_101737),y) PIXMAN_CFLAGS += -O0 endif diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in index af9082cf6e..e91aa16326 100644 --- a/toolchain/toolchain-external/Config.in +++ b/toolchain/toolchain-external/Config.in @@ -29,9 +29,6 @@ source "toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in" # MIPS source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in" -# NIOSII -source "toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in" - # Bootlin toolchains, available for virtually all architectures source "toolchain/toolchain-external/toolchain-external-bootlin/Config.in" @@ -129,9 +126,6 @@ source "toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in.o # MIPS source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in.options" -# NIOSII -source "toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options" - # Bootlin toolchains source "toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options" diff --git a/toolchain/toolchain-external/pkg-toolchain-external.mk b/toolchain/toolchain-external/pkg-toolchain-external.mk index 5343f257e0..c08bf0a653 100644 --- a/toolchain/toolchain-external/pkg-toolchain-external.mk +++ b/toolchain/toolchain-external/pkg-toolchain-external.mk @@ -13,7 +13,7 @@ # * Toolchains provided by Linaro for the ARM and AArch64 # architectures # * Sourcery CodeBench toolchains (from Mentor Graphics) for the ARM, -# MIPS, PowerPC, x86_64 and NIOS 2 architectures. For the MIPS +# MIPS, PowerPC, and x86_64 architectures. For the MIPS # toolchain, the -muclibc variant isn't supported yet, only the # default glibc-based variant is. # * Synopsys DesignWare toolchains for ARC cores diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in deleted file mode 100644 index cf3ce69a68..0000000000 --- a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in +++ /dev/null @@ -1,16 +0,0 @@ -config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII - bool "Sourcery CodeBench Nios-II 2018.05" - depends on BR2_nios2 - depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_8 - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" - select BR2_TOOLCHAIN_EXTERNAL_GLIBC - select BR2_TOOLCHAIN_HAS_SSP - select BR2_TOOLCHAIN_HAS_NATIVE_RPC - select BR2_INSTALL_LIBSTDCPP - select BR2_HOSTARCH_NEEDS_IA32_LIBS - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15 - select BR2_TOOLCHAIN_GCC_AT_LEAST_7 - help - Sourcery CodeBench toolchain for the Nios-II architecture, - from Mentor Graphics. It uses gcc 7.3, binutils 2.28, - glibc 2.27, gdb 8.0.1 and kernel headers 4.15.5. diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options deleted file mode 100644 index 07cc5ede94..0000000000 --- a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options +++ /dev/null @@ -1,9 +0,0 @@ -if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII - -config BR2_TOOLCHAIN_EXTERNAL_PREFIX - default "nios2-linux-gnu" - -config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL - default "toolchain-external-codesourcery-niosII" - -endif diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash deleted file mode 100644 index 47893ab7e2..0000000000 --- a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash +++ /dev/null @@ -1,6 +0,0 @@ -# From https://sourcery.mentor.com/GNUToolchain/release3374 -md5 4f536b3b9b4e00f483e82e304c0a27ae sourceryg++-2018.05-5-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2 -md5 be42ab83da2e8db7b73dc890c2549570 sourceryg++-2018.05-5-nios2-linux-gnu.src.tar.bz2 -# Locally calculated -sha256 c19afb432b5b23f8d5d639831d3a423a3ea3c9cc62e0015020d20ea2eb36dd1b sourceryg++-2018.05-5-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2 -sha256 d73a6364106dd62352711f932d3be8e97fdaaa548995678b5d38d9f21e22437a sourceryg++-2018.05-5-nios2-linux-gnu.src.tar.bz2 diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk deleted file mode 100644 index cb0fe760ff..0000000000 --- a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk +++ /dev/null @@ -1,13 +0,0 @@ -################################################################################ -# -# toolchain-external-codesourcery-niosII -# -################################################################################ - -TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION = 2018.05-5 - -TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_SITE = https://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX) -TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_SOURCE = sourceryg++-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2 -TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_ACTUAL_SOURCE_TARBALL = sourceryg++-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2 - -$(eval $(toolchain-external-package)) From romain.naour at smile.fr Wed May 1 19:57:29 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 21:57:29 +0200 Subject: [Buildroot] [git commit] package/pistache: drop nios2 binutils bug 27597 dependency Message-ID: <20240501195824.83D1086485@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=3b7a8ebefcccb6355f7c5b2d1958bfe408da7452 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Now that binutils patch has been backported to every Buildroot binutils version we can drop nios2 binutils bug 27597 dependency. Signed-off-by: Giulio Benetti Signed-off-by: Romain Naour --- package/pistache/Config.in | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/package/pistache/Config.in b/package/pistache/Config.in index 3acf1f53f0..ca2d2833cd 100644 --- a/package/pistache/Config.in +++ b/package/pistache/Config.in @@ -4,7 +4,6 @@ config BR2_PACKAGE_PISTACHE depends on BR2_USE_WCHAR depends on BR2_TOOLCHAIN_HAS_THREADS depends on BR2_INSTALL_LIBSTDCPP - depends on !BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597 select BR2_PACKAGE_RAPIDJSON help Pistache is a modern and elegant HTTP and REST framework @@ -13,9 +12,8 @@ config BR2_PACKAGE_PISTACHE https://github.com/oktal/pistache -comment "pistache needs a toolchain w/ C++, gcc >= 7, threads, wchar, not binutils bug 27597" +comment "pistache needs a toolchain w/ C++, gcc >= 7, threads, wchar" depends on !BR2_INSTALL_LIBSTDCPP || \ !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || \ !BR2_TOOLCHAIN_HAS_THREADS || \ - !BR2_USE_WCHAR || \ - BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597 + !BR2_USE_WCHAR From romain.naour at smile.fr Wed May 1 19:57:31 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 21:57:31 +0200 Subject: [Buildroot] [git commit] package/postgis: drop nios2 binutils bug 27597 dependency Message-ID: <20240501195824.9054A86484@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=c34e40fb65952c6f1a681e88dcd2995a90e83031 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Now that binutils patch has been backported to every Buildroot binutils version we can drop nios2 binutils bug 27597 dependency. Signed-off-by: Giulio Benetti Reviewed-by: Maxim Kochetkov Signed-off-by: Romain Naour --- package/postgis/Config.in | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/package/postgis/Config.in b/package/postgis/Config.in index 7d42390677..78569d63be 100644 --- a/package/postgis/Config.in +++ b/package/postgis/Config.in @@ -5,7 +5,6 @@ config BR2_PACKAGE_POSTGIS depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libgeos depends on BR2_TOOLCHAIN_HAS_THREADS # libgeos, proj depends on BR2_USE_WCHAR # libgeos, proj - depends on !BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597 # libgeos select BR2_PACKAGE_LIBGEOS select BR2_PACKAGE_PROJ select BR2_PACKAGE_LIBXML2 @@ -18,7 +17,6 @@ config BR2_PACKAGE_POSTGIS https://postgis.net/ -comment "postgis needs a toolchain w/ C++, threads, wchar, gcc >= 4.9, not binutils bug 27597" +comment "postgis needs a toolchain w/ C++, threads, wchar, gcc >= 4.9" depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ - !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \ - BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597 + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR From romain.naour at smile.fr Wed May 1 19:57:26 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 21:57:26 +0200 Subject: [Buildroot] [git commit] package/libgeos: drop nios2 binutils bug 27597 dependency Message-ID: <20240501195824.69E3186487@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=a5f10b35fd2e46ca559c97d0389e9c37497a2cb7 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Now that binutils patch has been backported to every Buildroot binutils version we can drop nios2 binutils bug 27597 dependency. Signed-off-by: Giulio Benetti Reviewed-by: Maxim Kochetkov Signed-off-by: Romain Naour --- package/libgeos/Config.in | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/package/libgeos/Config.in b/package/libgeos/Config.in index 2a27c6f2a4..76cbb9bdcd 100644 --- a/package/libgeos/Config.in +++ b/package/libgeos/Config.in @@ -4,7 +4,6 @@ config BR2_PACKAGE_LIBGEOS depends on BR2_USE_WCHAR depends on BR2_TOOLCHAIN_HAS_THREADS depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++14 - depends on !BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597 help GEOS (Geometry Engine - Open Source) is a C++ port of the JTS Topology Suite (JTS). It aims to contain the complete @@ -14,8 +13,7 @@ config BR2_PACKAGE_LIBGEOS https://trac.osgeo.org/geos -comment "libgeos needs a toolchain w/ C++, wchar, gcc >= 4.9, threads not binutils bug 27597" +comment "libgeos needs a toolchain w/ C++, wchar, gcc >= 4.9, threads" depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ !BR2_TOOLCHAIN_HAS_THREADS || \ - !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \ - BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597 + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 From romain.naour at smile.fr Wed May 1 19:57:33 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 21:57:33 +0200 Subject: [Buildroot] [git commit] toolchain: remove binutils bug 27597 Message-ID: <20240501195824.9BF0486486@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=13602787bc17ead55f30456d8932d705e927ddc7 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Binutils bug 27597 is not present anymore in Buildroot so let's remove it. Signed-off-by: Giulio Benetti Signed-off-by: Romain Naour --- toolchain/Config.in | 6 ------ 1 file changed, 6 deletions(-) diff --git a/toolchain/Config.in b/toolchain/Config.in index e8b3db64fb..944e573f82 100644 --- a/toolchain/Config.in +++ b/toolchain/Config.in @@ -70,12 +70,6 @@ source "package/gdb/Config.in.host" comment "Toolchain Generic Options" -# https://sourceware.org/bugzilla/show_bug.cgi?id=27597 -# Affect toolchains built with binutils 2.36.1, still not fixed. -config BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597 - bool - default y if BR2_nios2 - # https://sourceware.org/bugzilla/show_bug.cgi?id=30730 # Affect toolchains built with binutils 2.40, still not fixed. config BR2_TOOLCHAIN_HAS_BINUTILS_BUG_30730 From romain.naour at smile.fr Wed May 1 20:03:02 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 22:03:02 +0200 Subject: [Buildroot] [PATCH] utils/genrandconfig: remove Sourcery CodeBench Nios-II exclusion Message-ID: <20240501200302.1585821-1-romain.naour@smile.fr> BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII has been removed by [1]. [1] 7fa0159a5055363d002089f0c451a84594732cf2 Cc: Giulio Benetti Signed-off-by: Romain Naour --- utils/genrandconfig | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/utils/genrandconfig b/utils/genrandconfig index 5ebec415b5..df6bede158 100755 --- a/utils/genrandconfig +++ b/utils/genrandconfig @@ -294,18 +294,6 @@ def fixup_config(sysinfo, configfile): if 'BR2_PACKAGE_WESTON=y\n' in configlines and \ BR2_TOOLCHAIN_EXTERNAL_URL + 'mipsel-ctng-linux-uclibc.tar.xz"\n' in configlines: return False - # The cs nios2 2017.02 toolchain is affected by binutils PR19405 - if 'BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII=y\n' in configlines and \ - 'BR2_PACKAGE_BOOST=y\n' in configlines: - return False - # The cs nios2 2017.02 toolchain is affected by binutils PR19405 - if 'BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII=y\n' in configlines and \ - 'BR2_PACKAGE_QT5BASE_GUI=y\n' in configlines: - return False - # The cs nios2 2017.02 toolchain is affected by binutils PR19405 - if 'BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII=y\n' in configlines and \ - 'BR2_PACKAGE_FLANN=y\n' in configlines: - return False # No C library for internal toolchain if 'BR2_TOOLCHAIN_BUILDROOT_NONE=y' in configlines: return False -- 2.44.0 From romain.naour at smile.fr Wed May 1 20:05:55 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 22:05:55 +0200 Subject: [Buildroot] [PATCH v3 1/9] toolchain/toolchain-external: drop external codesourcery niosII toolchain In-Reply-To: References: <20240306213606.2149683-1-giulio.benetti@benettiengineering.com> <20240306213606.2149683-2-giulio.benetti@benettiengineering.com> Message-ID: <379408f7-3eee-47a8-81f6-9a93e8780873@smile.fr> Le 01/05/2024 ? 21:54, Romain Naour a ?crit?: > Hello Giulio, All, > > Le 06/03/2024 ? 22:35, Giulio Benetti a ?crit?: >> This toolchain is pretty old and unlikely used. It's also affected by >> binutils bug 27597, so let's remove it. > > We need to remove this toolchain from toolchain-configs.csv first. > > No need to respin for that, I added a commit before merging your series. > > About NiosII, nios2 target will be obsolete in GCC 14: > > https://sourceware.org/pipermail/binutils/2024-April/133675.html > > Maybe we should stop supporting it soon. I also removed BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII from pixman package. There are still some remaining Sourcery CodeBench Nios-II exclusion in utils/genrandconfig script. See: http://patchwork.ozlabs.org/project/buildroot/patch/20240501200302.1585821-1-romain.naour at smile.fr/ Best regards, Romain > > Best regards, > Romain > >> >> Signed-off-by: Giulio Benetti >> --- >> toolchain/toolchain-external/Config.in | 6 ------ >> .../toolchain-external/pkg-toolchain-external.mk | 2 +- >> .../Config.in | 16 ---------------- >> .../Config.in.options | 9 --------- >> .../toolchain-external-codesourcery-niosII.hash | 6 ------ >> .../toolchain-external-codesourcery-niosII.mk | 13 ------------- >> 6 files changed, 1 insertion(+), 51 deletions(-) >> delete mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in >> delete mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options >> delete mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash >> delete mode 100644 toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk >> >> diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in >> index c1c159cb8e..cb678b7886 100644 >> --- a/toolchain/toolchain-external/Config.in >> +++ b/toolchain/toolchain-external/Config.in >> @@ -33,9 +33,6 @@ source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config >> source "toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in" >> source "toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in" >> >> -# NIOSII >> -source "toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in" >> - >> # Bootlin toolchains, available for virtually all architectures >> source "toolchain/toolchain-external/toolchain-external-bootlin/Config.in" >> >> @@ -137,9 +134,6 @@ source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config >> source "toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in.options" >> source "toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in.options" >> >> -# NIOSII >> -source "toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options" >> - >> # Bootlin toolchains >> source "toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options" >> >> diff --git a/toolchain/toolchain-external/pkg-toolchain-external.mk b/toolchain/toolchain-external/pkg-toolchain-external.mk >> index ddf1d70ab4..aa5365b5bd 100644 >> --- a/toolchain/toolchain-external/pkg-toolchain-external.mk >> +++ b/toolchain/toolchain-external/pkg-toolchain-external.mk >> @@ -13,7 +13,7 @@ >> # * Toolchains provided by Linaro for the ARM and AArch64 >> # architectures >> # * Sourcery CodeBench toolchains (from Mentor Graphics) for the ARM, >> -# MIPS, PowerPC, x86_64 and NIOS 2 architectures. For the MIPS >> +# MIPS, PowerPC, and x86_64 architectures. For the MIPS >> # toolchain, the -muclibc variant isn't supported yet, only the >> # default glibc-based variant is. >> # * Synopsys DesignWare toolchains for ARC cores >> diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in >> deleted file mode 100644 >> index cf3ce69a68..0000000000 >> --- a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in >> +++ /dev/null >> @@ -1,16 +0,0 @@ >> -config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII >> - bool "Sourcery CodeBench Nios-II 2018.05" >> - depends on BR2_nios2 >> - depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_8 >> - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" >> - select BR2_TOOLCHAIN_EXTERNAL_GLIBC >> - select BR2_TOOLCHAIN_HAS_SSP >> - select BR2_TOOLCHAIN_HAS_NATIVE_RPC >> - select BR2_INSTALL_LIBSTDCPP >> - select BR2_HOSTARCH_NEEDS_IA32_LIBS >> - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15 >> - select BR2_TOOLCHAIN_GCC_AT_LEAST_7 >> - help >> - Sourcery CodeBench toolchain for the Nios-II architecture, >> - from Mentor Graphics. It uses gcc 7.3, binutils 2.28, >> - glibc 2.27, gdb 8.0.1 and kernel headers 4.15.5. >> diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options >> deleted file mode 100644 >> index 07cc5ede94..0000000000 >> --- a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options >> +++ /dev/null >> @@ -1,9 +0,0 @@ >> -if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII >> - >> -config BR2_TOOLCHAIN_EXTERNAL_PREFIX >> - default "nios2-linux-gnu" >> - >> -config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL >> - default "toolchain-external-codesourcery-niosII" >> - >> -endif >> diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash >> deleted file mode 100644 >> index 47893ab7e2..0000000000 >> --- a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash >> +++ /dev/null >> @@ -1,6 +0,0 @@ >> -# From https://sourcery.mentor.com/GNUToolchain/release3374 >> -md5 4f536b3b9b4e00f483e82e304c0a27ae sourceryg++-2018.05-5-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2 >> -md5 be42ab83da2e8db7b73dc890c2549570 sourceryg++-2018.05-5-nios2-linux-gnu.src.tar.bz2 >> -# Locally calculated >> -sha256 c19afb432b5b23f8d5d639831d3a423a3ea3c9cc62e0015020d20ea2eb36dd1b sourceryg++-2018.05-5-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2 >> -sha256 d73a6364106dd62352711f932d3be8e97fdaaa548995678b5d38d9f21e22437a sourceryg++-2018.05-5-nios2-linux-gnu.src.tar.bz2 >> diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk >> deleted file mode 100644 >> index cb0fe760ff..0000000000 >> --- a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk >> +++ /dev/null >> @@ -1,13 +0,0 @@ >> -################################################################################ >> -# >> -# toolchain-external-codesourcery-niosII >> -# >> -################################################################################ >> - >> -TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION = 2018.05-5 >> - >> -TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_SITE = https://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX) >> -TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_SOURCE = sourceryg++-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2 >> -TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_ACTUAL_SOURCE_TARBALL = sourceryg++-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2 >> - >> -$(eval $(toolchain-external-package)) > From thomas.petazzoni at bootlin.com Wed May 1 20:06:41 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:06:41 +0200 Subject: [Buildroot] [PATCH 1/2] package/fwts: update _SITE url to use https In-Reply-To: <20240420143618.1809745-1-ju.o@free.fr> References: <20240420143618.1809745-1-ju.o@free.fr> Message-ID: <20240501220641.4303d7b1@windsurf> On Sat, 20 Apr 2024 16:36:17 +0200 Julien Olivain wrote: > The http URL redirects to https. This commit updates this URL to > directly use https. > > Signed-off-by: Julien Olivain > --- > package/fwts/fwts.mk | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Both applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From peter at korsgaard.com Wed May 1 20:15:08 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 01 May 2024 22:15:08 +0200 Subject: [Buildroot] [PATCH 1/5] package/gnupg2: bump to version 2.4.5 In-Reply-To: <20240401131300.511245-1-francois.perrad@gadz.org> (Francois Perrad's message of "Mon, 1 Apr 2024 15:12:56 +0200") References: <20240401131300.511245-1-francois.perrad@gadz.org> Message-ID: <875xvx9tmb.fsf@dell.be.48ers.dk> >>>>> "Francois" == Francois Perrad writes: > Signed-off-by: Francois Perrad Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 1 20:15:35 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 01 May 2024 22:15:35 +0200 Subject: [Buildroot] [PATCH 2/5] package/libassuan: bump to version 2.5.7 In-Reply-To: <20240403084033.512286-2-francois.perrad@gadz.org> (Francois Perrad's message of "Wed, 3 Apr 2024 10:40:30 +0200") References: <20240403084033.512286-1-francois.perrad@gadz.org> <20240403084033.512286-2-francois.perrad@gadz.org> Message-ID: <871q6l9tlk.fsf@dell.be.48ers.dk> >>>>> "Francois" == Francois Perrad writes: > Signed-off-by: Francois Perrad Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 1 20:15:52 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 01 May 2024 22:15:52 +0200 Subject: [Buildroot] [PATCH 3/5] package/libksba: bump to version 1.6.6 In-Reply-To: <20240403084033.512286-3-francois.perrad@gadz.org> (Francois Perrad's message of "Wed, 3 Apr 2024 10:40:31 +0200") References: <20240403084033.512286-1-francois.perrad@gadz.org> <20240403084033.512286-3-francois.perrad@gadz.org> Message-ID: <87wmod8f0n.fsf@dell.be.48ers.dk> >>>>> "Francois" == Francois Perrad writes: > Signed-off-by: Francois Perrad Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 1 20:16:16 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 01 May 2024 22:16:16 +0200 Subject: [Buildroot] [PATCH 4/5] package/libnpth: bump to version 1.7 In-Reply-To: <20240403084033.512286-4-francois.perrad@gadz.org> (Francois Perrad's message of "Wed, 3 Apr 2024 10:40:32 +0200") References: <20240403084033.512286-1-francois.perrad@gadz.org> <20240403084033.512286-4-francois.perrad@gadz.org> Message-ID: <87sez18ezz.fsf@dell.be.48ers.dk> >>>>> "Francois" == Francois Perrad writes: > Signed-off-by: Francois Perrad Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 1 20:16:31 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 01 May 2024 22:16:31 +0200 Subject: [Buildroot] [PATCH 5/5] package/libgpg-error: bump to version 1.48 In-Reply-To: <20240403084033.512286-5-francois.perrad@gadz.org> (Francois Perrad's message of "Wed, 3 Apr 2024 10:40:33 +0200") References: <20240403084033.512286-1-francois.perrad@gadz.org> <20240403084033.512286-5-francois.perrad@gadz.org> Message-ID: <87o79p8ezk.fsf@dell.be.48ers.dk> >>>>> "Francois" == Francois Perrad writes: > Signed-off-by: Francois Perrad Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 1 20:17:51 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 01 May 2024 22:17:51 +0200 Subject: [Buildroot] [PATCH] package/libressl: bump to version 3.8.4 In-Reply-To: <20240403084203.512309-1-francois.perrad@gadz.org> (Francois Perrad's message of "Wed, 3 Apr 2024 10:42:03 +0200") References: <20240403084203.512309-1-francois.perrad@gadz.org> Message-ID: <87jzkd8exc.fsf@dell.be.48ers.dk> >>>>> "Francois" == Francois Perrad writes: > Signed-off-by: Francois Perrad Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 1 20:15:00 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 1 May 2024 22:15:00 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/gnupg2: bump to version 2.4.5 Message-ID: <20240501201812.6F2348649C@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=907bbae1e4b146c47c4e48fbd43ecd12a55c7b1a branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: Francois Perrad Signed-off-by: Yann E. MORIN (cherry picked from commit e5d0543292817341b0ca2e9d2f4486954f1f3dac) Signed-off-by: Peter Korsgaard --- package/gnupg2/gnupg2.hash | 4 ++-- package/gnupg2/gnupg2.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/gnupg2/gnupg2.hash b/package/gnupg2/gnupg2.hash index c821afb55e..8bb64c9eda 100644 --- a/package/gnupg2/gnupg2.hash +++ b/package/gnupg2/gnupg2.hash @@ -1,5 +1,5 @@ # From https://www.gnupg.org/download/integrity_check.html -sha1 228b3984325fdeebc5e3f2d165c6419a5ebc28de gnupg-2.4.4.tar.bz2 -sha256 67ebe016ca90fa7688ce67a387ebd82c6261e95897db7b23df24ff335be85bc6 gnupg-2.4.4.tar.bz2 +sha1 ae0935ead29a2dfa34d6b48d70808652bc3ca73b gnupg-2.4.5.tar.bz2 +sha256 f68f7d75d06cb1635c336d34d844af97436c3f64ea14bcb7c869782f96f44277 gnupg-2.4.5.tar.bz2 # Locally calculated sha256 bc2d6664f6276fa0a72d57633b3ae68dc7dcb677b71018bf08c8e93e509f1357 COPYING diff --git a/package/gnupg2/gnupg2.mk b/package/gnupg2/gnupg2.mk index 986da4790c..39b0a066f6 100644 --- a/package/gnupg2/gnupg2.mk +++ b/package/gnupg2/gnupg2.mk @@ -4,7 +4,7 @@ # ################################################################################ -GNUPG2_VERSION = 2.4.4 +GNUPG2_VERSION = 2.4.5 GNUPG2_SOURCE = gnupg-$(GNUPG2_VERSION).tar.bz2 GNUPG2_SITE = https://gnupg.org/ftp/gcrypt/gnupg GNUPG2_LICENSE = GPL-3.0+ From peter at korsgaard.com Wed May 1 20:15:29 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 1 May 2024 22:15:29 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/libassuan: bump to version 2.5.7 Message-ID: <20240501201812.80BD67FE0C@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=2acbf5f16776e372c37b857ada883348640ee5f6 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: Francois Perrad Signed-off-by: Yann E. MORIN (cherry picked from commit 439525ced972299c8fa60d5e68e710075b9dce79) Signed-off-by: Peter Korsgaard --- package/libassuan/libassuan.hash | 4 ++-- package/libassuan/libassuan.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/libassuan/libassuan.hash b/package/libassuan/libassuan.hash index 084a09848c..6bb5022d13 100644 --- a/package/libassuan/libassuan.hash +++ b/package/libassuan/libassuan.hash @@ -1,6 +1,6 @@ # From https://www.gnupg.org/download/integrity_check.html -sha1 b1e8754dbf89b3a3eb175f5df75048dbca1fce57 libassuan-2.5.6.tar.bz2 -sha256 e9fd27218d5394904e4e39788f9b1742711c3e6b41689a31aa3380bd5aa4f426 libassuan-2.5.6.tar.bz2 +sha1 b6ccd955085dac902a09871f94a3d41a7667d0c8 libassuan-2.5.7.tar.bz2 +sha256 0103081ffc27838a2e50479153ca105e873d3d65d8a9593282e9c94c7e6afb76 libassuan-2.5.7.tar.bz2 # Locally calculated sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING.LIB sha256 fc82ca8b6fdb18d4e3e85cfd8ab58d1bcd3f1b29abe782895abd91d64763f8e7 COPYING diff --git a/package/libassuan/libassuan.mk b/package/libassuan/libassuan.mk index fb95a6fd67..9553c630a2 100644 --- a/package/libassuan/libassuan.mk +++ b/package/libassuan/libassuan.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBASSUAN_VERSION = 2.5.6 +LIBASSUAN_VERSION = 2.5.7 LIBASSUAN_SITE = https://gnupg.org/ftp/gcrypt/libassuan LIBASSUAN_SOURCE = libassuan-$(LIBASSUAN_VERSION).tar.bz2 LIBASSUAN_LICENSE = LGPL-2.1+ (library), GPL-3.0 (tests, doc) From peter at korsgaard.com Wed May 1 20:15:47 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 1 May 2024 22:15:47 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/libksba: bump to version 1.6.6 Message-ID: <20240501201812.8F78E8649D@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=cd6e65ff1e9b441dda86daf800be3a7978e70653 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: Francois Perrad Signed-off-by: Yann E. MORIN (cherry picked from commit dd5d0240d241f8bf88af2c9799b9f13f0e99b515) Signed-off-by: Peter Korsgaard --- package/libksba/libksba.hash | 4 ++-- package/libksba/libksba.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/libksba/libksba.hash b/package/libksba/libksba.hash index 3ac36e19ca..e74cde2cc0 100644 --- a/package/libksba/libksba.hash +++ b/package/libksba/libksba.hash @@ -1,6 +1,6 @@ # From https://www.gnupg.org/download/integrity_check.html -sha1 0ada15ac00baa7df677a05bcb517621708f9c2f2 libksba-1.6.5.tar.bz2 -sha256 a564628c574c99287998753f98d750babd91a4e9db451f46ad140466ef2a6d16 libksba-1.6.5.tar.bz2 +sha1 1db4222e052656700021a30d517f5aa2f882da4a libksba-1.6.6.tar.bz2 +sha256 5dec033d211559338838c0c4957c73dfdc3ee86f73977d6279640c9cd08ce6a4 libksba-1.6.6.tar.bz2 # Hash for license files: sha256 f9c59ea5a5e1dfdeebcd134e6a594c21eb088cc95f6653ee99ff2e187c105380 AUTHORS diff --git a/package/libksba/libksba.mk b/package/libksba/libksba.mk index 52ad5fbeec..b87efda226 100644 --- a/package/libksba/libksba.mk +++ b/package/libksba/libksba.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBKSBA_VERSION = 1.6.5 +LIBKSBA_VERSION = 1.6.6 LIBKSBA_SOURCE = libksba-$(LIBKSBA_VERSION).tar.bz2 LIBKSBA_SITE = https://gnupg.org/ftp/gcrypt/libksba LIBKSBA_LICENSE = LGPL-3.0+ or GPL-2.0+ (library, headers), GPL-3.0+ (manual, tests, build system) From peter at korsgaard.com Wed May 1 20:16:11 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 1 May 2024 22:16:11 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/libnpth: bump to version 1.7 Message-ID: <20240501201812.9D1A98649C@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=3909492646dbd69a771c24808474f3c7fae4b90d branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: Francois Perrad Signed-off-by: Yann E. MORIN (cherry picked from commit 3ef4d24192b20bd1eb5e34c9fa2a6aa5bde91f91) Signed-off-by: Peter Korsgaard --- package/libnpth/libnpth.hash | 7 +++---- package/libnpth/libnpth.mk | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/package/libnpth/libnpth.hash b/package/libnpth/libnpth.hash index b9f72e0770..a140a23f64 100644 --- a/package/libnpth/libnpth.hash +++ b/package/libnpth/libnpth.hash @@ -1,7 +1,6 @@ -# Locally calculated after checking signature -# https://gnupg.org/ftp/gcrypt/npth/npth-1.6.tar.bz2.sig -# using key D8692123C4065DEA5E0F3AB5249B39D24F25E3B6 -sha256 1393abd9adcf0762d34798dc34fdcf4d0d22a8410721e76f1e3afcd1daa4e2d1 npth-1.6.tar.bz2 +# From https://www.gnupg.org/download/integrity_check.html +sha1 a9f7adc1b1f6707071d29bfb3338c28b995ca1ce npth-1.7.tar.bz2 +sha256 8589f56937b75ce33b28d312fccbf302b3b71ec3f3945fde6aaa74027914ad05 npth-1.7.tar.bz2 # Hash for license file: sha256 ce64d5f7b49ea6d80fdb6d4cdee6839d1a94274f7493dc797c3b55b65ec8e9ed COPYING.LIB diff --git a/package/libnpth/libnpth.mk b/package/libnpth/libnpth.mk index ecfef863f4..dc603b607f 100644 --- a/package/libnpth/libnpth.mk +++ b/package/libnpth/libnpth.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBNPTH_VERSION = 1.6 +LIBNPTH_VERSION = 1.7 LIBNPTH_SOURCE = npth-$(LIBNPTH_VERSION).tar.bz2 LIBNPTH_SITE = https://www.gnupg.org/ftp/gcrypt/npth LIBNPTH_LICENSE = LGPL-2.0+ From peter at korsgaard.com Wed May 1 20:16:49 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 1 May 2024 22:16:49 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/libressl: bump to version 3.8.4 Message-ID: <20240501201812.B69BC8649E@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=db08c123305cd22ea60b03ebf322410fd70cbbfc branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: Francois Perrad Signed-off-by: Yann E. MORIN (cherry picked from commit 9d8f9c73a2fd087dd2e8d8853a80da605fa64e4b) Signed-off-by: Peter Korsgaard --- package/libressl/libressl.hash | 2 +- package/libressl/libressl.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/libressl/libressl.hash b/package/libressl/libressl.hash index 40b49dbb82..5d3b54ea9c 100644 --- a/package/libressl/libressl.hash +++ b/package/libressl/libressl.hash @@ -1,4 +1,4 @@ # From https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/SHA256 -sha256 6d4b8d5bbb25a1f8336639e56ec5088052d43a95256697a85c4ce91323c25954 libressl-3.8.2.tar.gz +sha256 c0cef9cfe174ac366ce482f542fddb07721e7fa0caface34b49a8720fa37fe7d libressl-3.8.4.tar.gz # Locally computed sha256 5c63613f008f16a9c0025c096bbd736cecf720494d121b5c5203e0ec6e5955b1 COPYING diff --git a/package/libressl/libressl.mk b/package/libressl/libressl.mk index b72f3b38ce..1d90aa853d 100644 --- a/package/libressl/libressl.mk +++ b/package/libressl/libressl.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBRESSL_VERSION = 3.8.2 +LIBRESSL_VERSION = 3.8.4 LIBRESSL_SITE = https://ftp.openbsd.org/pub/OpenBSD/LibreSSL LIBRESSL_LICENSE = ISC (new additions), OpenSSL or SSLeay (original OpenSSL code) LIBRESSL_LICENSE_FILES = COPYING From peter at korsgaard.com Wed May 1 20:16:24 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 1 May 2024 22:16:24 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/libgpg-error: bump to version 1.48 Message-ID: <20240501201812.AA266863F7@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=1ecaf17202a9aea9d390ada5ce8b16a5e4ec2ac7 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: Francois Perrad Signed-off-by: Yann E. MORIN (cherry picked from commit 6f663219d0368f9367bdd133aad43987fff3b916) Signed-off-by: Peter Korsgaard --- package/libgpg-error/libgpg-error.hash | 5 +++-- package/libgpg-error/libgpg-error.mk | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/package/libgpg-error/libgpg-error.hash b/package/libgpg-error/libgpg-error.hash index 5c445ba0b2..3b3464592a 100644 --- a/package/libgpg-error/libgpg-error.hash +++ b/package/libgpg-error/libgpg-error.hash @@ -1,6 +1,7 @@ # From https://www.gnupg.org/download/integrity_check.html -sha1 94668233fd7bd8e7c0ec5e363134cd53c575da60 libgpg-error-1.47.tar.bz2 -sha256 9e3c670966b96ecc746c28c2c419541e3bcb787d1a73930f5e5f5e1bcbbb9bdb libgpg-error-1.47.tar.bz2 +sha1 8bdb504750b4da9e7daffa164cf1ed9900671f32 libgpg-error-1.48.tar.bz2 +sha256 89ce1ae893e122924b858de84dc4f67aae29ffa610ebf668d5aa539045663d6f libgpg-error-1.48.tar.bz2 + # Locally calculated sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING.LIB diff --git a/package/libgpg-error/libgpg-error.mk b/package/libgpg-error/libgpg-error.mk index 60e3da9de1..3dd0ec94da 100644 --- a/package/libgpg-error/libgpg-error.mk +++ b/package/libgpg-error/libgpg-error.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBGPG_ERROR_VERSION = 1.47 +LIBGPG_ERROR_VERSION = 1.48 LIBGPG_ERROR_SITE = https://www.gnupg.org/ftp/gcrypt/libgpg-error LIBGPG_ERROR_SOURCE = libgpg-error-$(LIBGPG_ERROR_VERSION).tar.bz2 LIBGPG_ERROR_LICENSE = GPL-2.0+, LGPL-2.1+ From thomas.petazzoni at bootlin.com Wed May 1 20:18:38 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:18:38 +0200 Subject: [Buildroot] [PATCH] package/busybox: refresh busybox.config In-Reply-To: <20240426-refresh-busybox-config-v1-1-c70cb5b60243@microchip.com> References: <20240426-refresh-busybox-config-v1-1-c70cb5b60243@microchip.com> Message-ID: <20240501221838.07cb2684@windsurf> Hello Nayab, +Arnout in Cc (question below). On Fri, 26 Apr 2024 14:10:58 +0530 Nayab Sayed via buildroot wrote: > Refresh busybox.config to current version (1.36.1) default values. > > Signed-off-by: Nayab Sayed > --- > When `make busybox-update-config` is executed, the config > CONFIG_UDHCPC6_DEFAULT_SCRIPT became empty. But it's updated to reuse the > value from earlier bump as mentioned in the commit d68b617993bd > (package/busybox: update to 1.36.0). Arnout: I don't really understand the reasoning in commit d68b617993bd. The commit log says: Refresh busybox.config. All configs are set to the new defaults, except for CONFIG_UDHCPC_DEFAULT_SCRIPT: for this one, reuse the script we also use for DHCPv4. This is matches the behaviour previous to the bump, where we had a single script handling both. Did you mean to say CONFIG_UDHCPC6_DEFAULT_SCRIPT instead? In the commit, you do: +CONFIG_UDHCPC6_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" But then, why do we do that? udhcpc6 is not enabled in our busybox.config. Due to this, when we refresh busybox.config, this CONFIG_UDHCPC6_DEFAULT_SCRIPT gets dropped. > @@ -336,7 +336,7 @@ CONFIG_TEST=y > CONFIG_TEST1=y > CONFIG_TEST2=y > CONFIG_FEATURE_TEST_64=y > -# CONFIG_TIMEOUT is not set > +CONFIG_TIMEOUT=y Nayab: this doesn't show up here when I refresh the file. Are you sure this isn't a custom change on your side, unrelated to the Busybox file refresh? Best regards, Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From ju.o at free.fr Wed May 1 20:27:54 2024 From: ju.o at free.fr (Julien Olivain) Date: Wed, 01 May 2024 22:27:54 +0200 Subject: [Buildroot] [PATCH 1/1] package/fwts: disable parallel build In-Reply-To: <20240501215523.5bc7ce23@windsurf> References: <20240420132251.1349622-1-ju.o@free.fr> <20240501215523.5bc7ce23@windsurf> Message-ID: Hi Thomas, On 01/05/2024 21:55, Thomas Petazzoni wrote: > On Sat, 20 Apr 2024 15:22:51 +0200 > Julien Olivain wrote: > >> fwts randomly fail to build in parallel with error: >> >> mv: cannot stat 'dtcompilerparser.tab.c': No such file or >> directory >> mv: cannot stat 'prparser.tab.c': No such file or directory >> >> This is a known upstream issue. See: >> https://github.com/fwts/fwts/issues/7 >> >> This commit workaround this issue by disabling parallel builds. >> >> Signed-off-by: Julien Olivain >> --- >> package/fwts/fwts.mk | 3 +++ >> 1 file changed, 3 insertions(+) > > Hm, I don't see any failures in the autobuilders. Did you encounter > this issue personally? Why don't we see it in the autobuilders? On my side, I see those failures on systems with with 20 cores and more on an idle system doing only the Buildroot build. Maybe the autobuilders have a different load, or less cores? > > Thomas > -- > Thomas Petazzoni, CTO, Bootlin > Embedded Linux and Kernel engineering > https://bootlin.com Best regards, Julien. From romain.naour at smile.fr Wed May 1 20:28:38 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 22:28:38 +0200 Subject: [Buildroot] [PATCH 1/2] package/qemu: fix disabling fp-bench test compilation In-Reply-To: <20240501120050.670109-1-dario.binacchi@amarulasolutions.com> References: <20240501120050.670109-1-dario.binacchi@amarulasolutions.com> Message-ID: Hello Dario, All, Le 01/05/2024 ? 14:00, Dario Binacchi a ?crit?: > With the bump to version 8.1.1, the patch that disabled the compilation > of the fp-bench test is no longer applicable, even though the package > compilation process does not report any errors in applying the patch > itself. The new patch does not disable the test by default but only if > the file fenv.h is not missing, with the hope that this approach will be > considered acceptable by the maintainer and merged upstream. > > The patch is an adaptation of the one sent upstream. Thanks for sending it upstream. > > Signed-off-by: Dario Binacchi > --- > .checkpackageignore | 2 +- > ...fp-disable-fp-bench-build-by-default.patch | 28 ----------- > ...on-t-build-fp-bench-test-if-fenv.h-i.patch | 49 +++++++++++++++++++ > 3 files changed, 50 insertions(+), 29 deletions(-) > delete mode 100644 package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch > create mode 100644 package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch > > diff --git a/.checkpackageignore b/.checkpackageignore > index 1b336ce7a3ee..c16e17cc35e4 100644 > --- a/.checkpackageignore > +++ b/.checkpackageignore > @@ -1073,7 +1073,7 @@ package/python3/0028-fix-building-on-older-distributions.patch lib_patch.Upstrea > package/python3/0029-configure.ac-fixup-CC-print-multiarch-output-for-mus.patch lib_patch.Upstream > package/python3/0030-Add-an-option-to-disable-the-berkeleydb-module.patch lib_patch.Upstream > package/python3/0031-lib-crypt-uClibc-ng-doesn-t-set-errno-when-encryptio.patch lib_patch.Upstream > -package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch lib_patch.Upstream > +package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch lib_patch.Upstream We want to remove .checkpackageignore file. All patches listed here are not yet using "Upstream:" tag. See: https://nightly.buildroot.org/manual.html#_additional_patch_documentation > package/qemu/0002-softmmu-qemu-seccomp.c-add-missing-header-for-CLONE_.patch lib_patch.Upstream > package/qextserialport/0001-Create-a-main-include-file-QExtSerialPort.patch lib_patch.Upstream > package/qextserialport/0002-Tell-qmake-to-add-a-pkgconfig-file-to-ease-usage-wit.patch lib_patch.Upstream > diff --git a/package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch b/package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch > deleted file mode 100644 > index fb7a9a69897b..000000000000 > --- a/package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch > +++ /dev/null > @@ -1,28 +0,0 @@ > -From 83d976d6d7f0357659d5daa0f01c52048a609e88 Mon Sep 17 00:00:00 2001 > -From: Romain Naour > -Date: Wed, 25 Aug 2021 21:55:53 +0200 > -Subject: [PATCH] tests/fp: disable fp-bench build by default > - > -Fixes: > -https://lists.nongnu.org/archive/html/qemu-devel/2021-03/msg00947.html > - > -Signed-off-by: Romain Naour > ---- > - tests/fp/meson.build | 1 + > - 1 file changed, 1 insertion(+) > - > -diff --git a/tests/fp/meson.build b/tests/fp/meson.build > -index 8bd0979f67..2fe019d2c6 100644 > ---- a/tests/fp/meson.build > -+++ b/tests/fp/meson.build > -@@ -640,6 +640,7 @@ fpbench = executable( > - dependencies: [qemuutil], > - include_directories: [sfinc, include_directories(tfdir)], > - c_args: fpcflags, > -+ build_by_default: false, > - ) > - > - fptestlog2 = executable( > --- > -2.35.1 > - > diff --git a/package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch b/package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch > new file mode 100644 > index 000000000000..836754ba231a > --- /dev/null > +++ b/package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch > @@ -0,0 +1,49 @@ > +From b4a692f46135af1011bf0adbfeb19abf354ca191 Mon Sep 17 00:00:00 2001 > +From: Dario Binacchi > +Date: Tue, 30 Apr 2024 09:40:55 +0200 > +Subject: [PATCH] tests/fp/meson: don't build fp-bench test if fenv.h is > + missing > + > +The fp-bench test (i. e. tests/fp/fp-bench.c) use fenv.h that is not > +always provided by the libc (uClibc). The patch disables its compilation > +in case the header is not available. > + > +The patch is based on a suggestion from Paolo Bonzini, which you can > +find at the following link. > + > +Link: https://lists.nongnu.org/archive/html/qemu-devel/2021-03/msg00492.html > +Suggested-by: Paolo Bonzini > +Signed-off-by: Dario Binacchi > +[Upstream status: https://patchwork.ozlabs.org/project/qemu-devel/patch/20240430164752.645521-1-dario.binacchi at amarulasolutions.com/] Please, use "Upstream:" tag instead (without [...]) Upstream: https://patchwork.ozlabs.org/project/qemu-devel/patch/20240430164752.645521-1-dario.binacchi at amarulasolutions.com/ Best regards, Romain > +--- > + tests/fp/meson.build | 14 ++++++++------ > + 1 file changed, 8 insertions(+), 6 deletions(-) > + > +diff --git a/tests/fp/meson.build b/tests/fp/meson.build > +index cbc17392d678..cd052667e940 100644 > +--- a/tests/fp/meson.build > ++++ b/tests/fp/meson.build > +@@ -126,12 +126,14 @@ test('fp-test-mulAdd', fptest, > + ['f16_mulAdd', 'f32_mulAdd', 'f64_mulAdd', 'f128_mulAdd'], > + suite: ['softfloat-slow', 'softfloat-ops-slow', 'slow'], timeout: 90) > + > +-executable( > +- 'fp-bench', > +- ['fp-bench.c', '../../fpu/softfloat.c'], > +- dependencies: [qemuutil, libtestfloat, libsoftfloat], > +- c_args: fpcflags, > +-) > ++if cc.has_header('fenv.h') > ++ executable( > ++ 'fp-bench', > ++ ['fp-bench.c', '../../fpu/softfloat.c'], > ++ dependencies: [qemuutil, libtestfloat, libsoftfloat], > ++ c_args: fpcflags, > ++ ) > ++endif > + > + fptestlog2 = executable( > + 'fp-test-log2', > +-- > +2.43.0 > + From romain.naour at smile.fr Wed May 1 20:29:56 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 22:29:56 +0200 Subject: [Buildroot] [PATCH 2/2] package/qemu: renumber patch In-Reply-To: <20240501120050.670109-2-dario.binacchi@amarulasolutions.com> References: <20240501120050.670109-1-dario.binacchi@amarulasolutions.com> <20240501120050.670109-2-dario.binacchi@amarulasolutions.com> Message-ID: <5ae27bc5-21b0-41c3-a931-a43678bce93d@smile.fr> Hello Dario, All, Le 01/05/2024 ? 14:00, Dario Binacchi a ?crit?: > Commit 3fa1ae00681ca ("package/qemu: add option to enable tracing") > added a patch with a wrong number. > > The patch also updates the upstream trailer of the renumbered patch to > ensure successful completion of the `utils/docker-run make check-package` > command checks. > > The patch also modifies the upstream trailer of the renumbered patch to > successfully pass the checks of the `utils/docker-run make check-package` > command. > > Signed-off-by: Dario Binacchi > --- > .checkpackageignore | 1 + > ...3-tracing-install-trace-events-file-only-if-necessary.patch} | 2 +- > 2 files changed, 2 insertions(+), 1 deletion(-) > rename package/qemu/{0004-tracing-install-trace-events-file-only-if-necessary.patch => 0003-tracing-install-trace-events-file-only-if-necessary.patch} (90%) > > diff --git a/.checkpackageignore b/.checkpackageignore > index c16e17cc35e4..e4f9139d665a 100644 > --- a/.checkpackageignore > +++ b/.checkpackageignore > @@ -1075,6 +1075,7 @@ package/python3/0030-Add-an-option-to-disable-the-berkeleydb-module.patch lib_pa > package/python3/0031-lib-crypt-uClibc-ng-doesn-t-set-errno-when-encryptio.patch lib_patch.Upstream > package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch lib_patch.Upstream > package/qemu/0002-softmmu-qemu-seccomp.c-add-missing-header-for-CLONE_.patch lib_patch.Upstream > +package/qemu/0003-tracing-install-trace-events-file-only-if-necessary.patch lib_patch.Upstream > package/qextserialport/0001-Create-a-main-include-file-QExtSerialPort.patch lib_patch.Upstream > package/qextserialport/0002-Tell-qmake-to-add-a-pkgconfig-file-to-ease-usage-wit.patch lib_patch.Upstream > package/qt5/qt5base/0001-qtbase-Fix-build-error-when-using-EGL.patch lib_patch.Upstream > diff --git a/package/qemu/0004-tracing-install-trace-events-file-only-if-necessary.patch b/package/qemu/0003-tracing-install-trace-events-file-only-if-necessary.patch > similarity index 90% > rename from package/qemu/0004-tracing-install-trace-events-file-only-if-necessary.patch > rename to package/qemu/0003-tracing-install-trace-events-file-only-if-necessary.patch > index 36bdaa4978ad..f9b82865ce16 100644 > --- a/package/qemu/0004-tracing-install-trace-events-file-only-if-necessary.patch > +++ b/package/qemu/0003-tracing-install-trace-events-file-only-if-necessary.patch > @@ -5,7 +5,7 @@ Subject: [PATCH] tracing: install trace events file only if necessary > > It is not useful when configuring with --enable-trace-backends=nop. > > -Upstream: https://patchwork.kernel.org/project/qemu-devel/patch/20230408010410.281263-1-casantos at redhat.com/ > +[Upstream status: https://patchwork.kernel.org/project/qemu-devel/patch/20230408010410.281263-1-casantos at redhat.com/] Same comment, use Upstream: to avoid the check-package warning. Best regards, Romain > Signed-off-by: Carlos Santos > Signed-off-by: Carlos Santos > --- From thomas.petazzoni at bootlin.com Wed May 1 20:06:36 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:06:36 +0200 Subject: [Buildroot] [git commit] package/acpica: bump to version 20240321 Message-ID: <20240501204616.F1151864D0@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=05a4e5d5a5a4c6f9fabcf65bb1b46840dc305e29 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master For change log since 20230628, see [1]. License file hash changed in [2], due to year update. The upstream download page also changed the published hash from sha1 to sha256. This change is reflected in the hash file. [1] https://github.com/acpica/acpica/blob/G20240322/documents/changes.txt [2] https://github.com/acpica/acpica/commit/c18edfb1abfb50521a363f811bc8e1e64213bd00 Signed-off-by: Julien Olivain Signed-off-by: Thomas Petazzoni --- package/acpica/acpica.hash | 5 ++--- package/acpica/acpica.mk | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/package/acpica/acpica.hash b/package/acpica/acpica.hash index dd9f8a1d22..4170587f3a 100644 --- a/package/acpica/acpica.hash +++ b/package/acpica/acpica.hash @@ -1,5 +1,4 @@ # From: https://www.intel.com/content/www/us/en/download/776303/acpi-component-architecture-downloads-unix-format-source-code-and-build-environment-with-an-intel-license.html -sha1 3b893fb771cf3fbd3531de3036e1a5bfc624c9d2 acpica-unix-20230628.tar.gz +sha256 54a299487925fd3e0551c95f9d5cee4f4984930273983eff67aa5cd46f8f338b acpica-unix-20240321.tar.gz # locally computed hash -sha256 86876a745e3d224dcfd222ed3de465b47559e85811df2db9820ef09a9dff5cce acpica-unix-20230628.tar.gz -sha256 905d6f191f3c29aa673602d9c66eb8df00f7e1b35064a081e0de81284ff17ee6 source/include/acpi.h +sha256 b28f54dc421531bbe269afd8c28bf6fdfd6affbe50c2831464f777ec1766d4a5 source/include/acpi.h diff --git a/package/acpica/acpica.mk b/package/acpica/acpica.mk index bbabd9de69..a3d682257d 100644 --- a/package/acpica/acpica.mk +++ b/package/acpica/acpica.mk @@ -4,9 +4,9 @@ # ################################################################################ -ACPICA_VERSION = 20230628 +ACPICA_VERSION = 20240321 ACPICA_SOURCE = acpica-unix-$(ACPICA_VERSION).tar.gz -ACPICA_SITE = https://downloadmirror.intel.com/783534 +ACPICA_SITE = https://downloadmirror.intel.com/819451 ACPICA_LICENSE = BSD-3-Clause or GPL-2.0 ACPICA_LICENSE_FILES = source/include/acpi.h ACPICA_DEPENDENCIES = host-bison host-flex From thomas.petazzoni at bootlin.com Wed May 1 20:06:38 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:06:38 +0200 Subject: [Buildroot] [git commit] support/testing: add iperf runtime test Message-ID: <20240501204617.15FF9864D4@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=6317f6c9a4107d3409530b653c5900bff17ffb6e branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Julien Olivain Signed-off-by: Thomas Petazzoni --- DEVELOPERS | 1 + support/testing/tests/package/test_iperf.py | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index c132b61f2a..6bfad23442 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -1799,6 +1799,7 @@ F: support/testing/tests/package/test_gzip.py F: support/testing/tests/package/test_highway.py F: support/testing/tests/package/test_hwloc.py F: support/testing/tests/package/test_iozone.py +F: support/testing/tests/package/test_iperf.py F: support/testing/tests/package/test_iperf3.py F: support/testing/tests/package/test_iptables.py F: support/testing/tests/package/test_jailhouse.py diff --git a/support/testing/tests/package/test_iperf.py b/support/testing/tests/package/test_iperf.py new file mode 100644 index 0000000000..31f04d9896 --- /dev/null +++ b/support/testing/tests/package/test_iperf.py @@ -0,0 +1,23 @@ +import os + +import infra.basetest + + +class TestIperf(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_IPERF=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + self.assertRunOk("iperf --version") + self.assertRunOk("iperf -s -D") + self.assertRunOk("iperf -c 127.0.0.1 -t 3") From thomas.petazzoni at bootlin.com Wed May 1 20:06:40 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:06:40 +0200 Subject: [Buildroot] [git commit] package/fwts: update _SITE url to use https Message-ID: <20240501204617.3412E864D1@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=2aa3a23bbe755ef73af7dfbb65dd8ec60c8c1865 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master The http URL redirects to https. This commit updates this URL to directly use https. Signed-off-by: Julien Olivain Signed-off-by: Thomas Petazzoni --- package/fwts/fwts.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/fwts/fwts.mk b/package/fwts/fwts.mk index f06609777d..a3f91ee495 100644 --- a/package/fwts/fwts.mk +++ b/package/fwts/fwts.mk @@ -6,7 +6,7 @@ FWTS_VERSION = 23.07.00 FWTS_SOURCE = fwts-V$(FWTS_VERSION).tar.gz -FWTS_SITE = http://fwts.ubuntu.com/release +FWTS_SITE = https://fwts.ubuntu.com/release FWTS_STRIP_COMPONENTS = 0 FWTS_LICENSE = GPL-2.0, LGPL-2.1, Custom FWTS_LICENSE_FILES = debian/copyright From thomas.petazzoni at bootlin.com Wed May 1 20:06:41 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:06:41 +0200 Subject: [Buildroot] [git commit] package/fwts: bump to version 24.03.00 Message-ID: <20240501204617.4133686482@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=17a04da7d4fdfe44547e9b50a62c2f4af49e9ae8 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master For release notes since version 23.07.00, see: https://wiki.ubuntu.com/FirmwareTestSuite/ReleaseNotes/24.03.00 https://wiki.ubuntu.com/FirmwareTestSuite/ReleaseNotes/24.01.00 https://wiki.ubuntu.com/FirmwareTestSuite/ReleaseNotes/23.11.00 License file hash changed, due to year update in: https://github.com/fwts/fwts/commit/cb2014e17f3fab0b2a2921e59e6b7acaa089cffe Signed-off-by: Julien Olivain Signed-off-by: Thomas Petazzoni --- package/fwts/fwts.hash | 4 ++-- package/fwts/fwts.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/fwts/fwts.hash b/package/fwts/fwts.hash index 8525d47ecb..0c0dd58c15 100644 --- a/package/fwts/fwts.hash +++ b/package/fwts/fwts.hash @@ -1,5 +1,5 @@ # Hash from: http://fwts.ubuntu.com/release/SHA256SUMS -sha256 a15e11c42856e9dfcf7ac23ed370618d2777eb996dd7843accf12d45b21b551c fwts-V23.07.00.tar.gz +sha256 d7f2642b1ec3697be798409decd6593d52bb1438f0d2dc697cbc85f52d19b41e fwts-V24.03.00.tar.gz # Hash for license file -sha256 b9e44b1f9f65178e037a59a31b051b51dbd6a531d27c8775d3438a6ce53fc874 debian/copyright +sha256 3cd2c5d12f024ff2aa203e37d7e972c4d5ab7bf1a65e3e09aebccf71e64b525b debian/copyright diff --git a/package/fwts/fwts.mk b/package/fwts/fwts.mk index a3f91ee495..0692121421 100644 --- a/package/fwts/fwts.mk +++ b/package/fwts/fwts.mk @@ -4,7 +4,7 @@ # ################################################################################ -FWTS_VERSION = 23.07.00 +FWTS_VERSION = 24.03.00 FWTS_SOURCE = fwts-V$(FWTS_VERSION).tar.gz FWTS_SITE = https://fwts.ubuntu.com/release FWTS_STRIP_COMPONENTS = 0 From thomas.petazzoni at bootlin.com Wed May 1 20:06:37 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:06:37 +0200 Subject: [Buildroot] [git commit] package/iperf: bump to version 2.2.0 Message-ID: <20240501204617.086F0864D1@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=4d9a3f1a32e743fd5bb267442be98b4e0a2d0e14 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master For release note, see after the file list at: https://sourceforge.net/projects/iperf2/files/ Note: the md5 file hash is also added, because it is published on download page. Signed-off-by: Julien Olivain Signed-off-by: Thomas Petazzoni --- package/iperf/iperf.hash | 5 +++-- package/iperf/iperf.mk | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/package/iperf/iperf.hash b/package/iperf/iperf.hash index eb6088649d..e4d40d5940 100644 --- a/package/iperf/iperf.hash +++ b/package/iperf/iperf.hash @@ -1,6 +1,7 @@ # From https://sourceforge.net/projects/iperf2/files/ -sha1 e7b669c2e8747df95b59956e83ff53d3971d7a5f iperf-2.1.9.tar.gz +md5 34bb6ac1abeb801bf3f729794dc5ac36 iperf-2.2.0.tar.gz +sha1 bcbd101ab36f3faacaab1a765a96806ca49a1495 iperf-2.2.0.tar.gz # Locally computed: -sha256 5c0771aab00ef14520013aef01675977816e23bb8f5d9fde016f90eb2f1be788 iperf-2.1.9.tar.gz +sha256 16810a9575e4c6dd65e4a18ab5df3cdac6730b3c832cf080a8990f132f68364a iperf-2.2.0.tar.gz sha256 5f9f5c4feca3347c3b3c0ada8b16b4e6b698aac4e6f016a24adf61a5915336d1 COPYING diff --git a/package/iperf/iperf.mk b/package/iperf/iperf.mk index 1347f766d1..303614668a 100644 --- a/package/iperf/iperf.mk +++ b/package/iperf/iperf.mk @@ -4,7 +4,7 @@ # ################################################################################ -IPERF_VERSION = 2.1.9 +IPERF_VERSION = 2.2.0 IPERF_SITE = https://downloads.sourceforge.net/project/iperf2 IPERF_LICENSE = MIT-like IPERF_LICENSE_FILES = COPYING From thomas.petazzoni at bootlin.com Wed May 1 20:06:39 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:06:39 +0200 Subject: [Buildroot] [git commit] support/testing: add fwts runtime test Message-ID: <20240501204617.26036864D0@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=7c1faf997f868586a40a9cb6f03166d85a67b8f8 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Julien Olivain Signed-off-by: Thomas Petazzoni --- DEVELOPERS | 1 + support/testing/tests/package/test_fwts.py | 67 ++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index 6bfad23442..726641b513 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -1787,6 +1787,7 @@ F: support/testing/tests/package/test_file/ F: support/testing/tests/package/test_fluidsynth.py F: support/testing/tests/package/test_fluidsynth/ F: support/testing/tests/package/test_fping.py +F: support/testing/tests/package/test_fwts.py F: support/testing/tests/package/test_gawk.py F: support/testing/tests/package/test_ghostscript.py F: support/testing/tests/package/test_ghostscript/ diff --git a/support/testing/tests/package/test_fwts.py b/support/testing/tests/package/test_fwts.py new file mode 100644 index 0000000000..ef792136c2 --- /dev/null +++ b/support/testing/tests/package/test_fwts.py @@ -0,0 +1,67 @@ +import os + +import infra.basetest + + +class TestFwts(infra.basetest.BRTest): + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_4=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_TARGET_ROOTFS_EXT2_SIZE="128M" + BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/aarch64-sbsa/assemble-flash-images support/scripts/genimage.sh" + BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/qemu/aarch64-sbsa/genimage.cfg" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.28" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y + BR2_TARGET_EDK2=y + BR2_TARGET_EDK2_PLATFORM_QEMU_SBSA=y + BR2_TARGET_GRUB2=y + BR2_TARGET_GRUB2_ARM64_EFI=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.9" + BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="qemu_sbsa" + BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y + BR2_PACKAGE_FWTS=y + BR2_PACKAGE_FWTS_EFI_RUNTIME_MODULE=y + BR2_PACKAGE_HOST_GENIMAGE=y + BR2_PACKAGE_HOST_DOSFSTOOLS=y + BR2_PACKAGE_HOST_MTOOLS=y + """ + + def test_run(self): + hda = os.path.join(self.builddir, "images", "disk.img") + flash0 = os.path.join(self.builddir, "images", "SBSA_FLASH0.fd") + flash1 = os.path.join(self.builddir, "images", "SBSA_FLASH1.fd") + self.emulator.boot(arch="aarch64", + options=["-M", "sbsa-ref", + "-cpu", "cortex-a57", + "-m", "512M", + "-pflash", flash0, + "-pflash", flash1, + "-hda", hda]) + self.emulator.login() + + # Check the program can execute. + self.assertRunOk("fwts --version") + + # We run a simple UEFI runtime service variable interface test + # suite. Those tests are using the fwts efi_runtime kernel + # module. + self.assertRunOk("fwts -q uefirtvariable", timeout=30) + + # The previous fwts invocation is expected to have created a + # "results.log" report. We check the file exists and contains + # a known header string. + expected_str = "Results generated by fwts:" + cmd = f"grep -F '{expected_str}' results.log" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + self.assertTrue(out[0].startswith(expected_str)) From thomas.petazzoni at bootlin.com Wed May 1 20:21:16 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:21:16 +0200 Subject: [Buildroot] [git commit] package/{bluez5_utils, bluez5_utils-headers}: bump to version 5.75 Message-ID: <20240501204617.5A219864D4@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=b890206876588ed0d16187abf49d35a45177cc3d branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Bump to version 5.75 containing various fixes. Added a patch to fix build with disabled CUPS (failing since 5.73, waiting to be reviewed and merged) and enabled autoreconf which is needed for that patch. Changelog: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/ChangeLog Signed-off-by: Jan ??erm??k Signed-off-by: Thomas Petazzoni --- .../bluez5_utils-headers/bluez5_utils-headers.mk | 2 +- .../0001-configure.ac-Fix-disable-cups.patch | 41 ++++++++++++++++++++++ package/bluez5_utils/bluez5_utils.hash | 2 +- package/bluez5_utils/bluez5_utils.mk | 4 ++- 4 files changed, 46 insertions(+), 3 deletions(-) diff --git a/package/bluez5_utils-headers/bluez5_utils-headers.mk b/package/bluez5_utils-headers/bluez5_utils-headers.mk index 74b385e110..2f07a7b422 100644 --- a/package/bluez5_utils-headers/bluez5_utils-headers.mk +++ b/package/bluez5_utils-headers/bluez5_utils-headers.mk @@ -5,7 +5,7 @@ ################################################################################ # Keep the version and patches in sync with bluez5_utils -BLUEZ5_UTILS_HEADERS_VERSION = 5.72 +BLUEZ5_UTILS_HEADERS_VERSION = 5.75 BLUEZ5_UTILS_HEADERS_SOURCE = bluez-$(BLUEZ5_UTILS_VERSION).tar.xz BLUEZ5_UTILS_HEADERS_SITE = $(BR2_KERNEL_MIRROR)/linux/bluetooth BLUEZ5_UTILS_HEADERS_DL_SUBDIR = bluez5_utils diff --git a/package/bluez5_utils/0001-configure.ac-Fix-disable-cups.patch b/package/bluez5_utils/0001-configure.ac-Fix-disable-cups.patch new file mode 100644 index 0000000000..2c6c46f6fd --- /dev/null +++ b/package/bluez5_utils/0001-configure.ac-Fix-disable-cups.patch @@ -0,0 +1,41 @@ +From cb0de49bc6f8a6bf8f01a24599b499aa4bf18032 Mon Sep 17 00:00:00 2001 +From: Lars Wendler +Date: Tue, 16 Apr 2024 07:26:04 +0200 +Subject: [PATCH] configure.ac: Fix --disable-cups +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +or else we get: + configure: error: conditional "CUPS_SERVERBIN" was never defined. + Usually this means the macro was only invoked conditionally. + +Fixes: https://github.com/bluez/bluez/issues/773 + +Upstream: https://patchwork.kernel.org/project/bluetooth/list/?series=844910 +Signed-off-by: Jan ??erm??k +--- + configure.ac | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 9dea70d..dbba759 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -249,12 +249,12 @@ AM_CONDITIONAL(CUPS, test "${enable_cups}" != "no") + if (test "${enable_cups}" != "no"); then + AC_MSG_CHECKING([cups directory]) + cups_serverbin=`$PKG_CONFIG cups --variable=cups_serverbin` +- AM_CONDITIONAL(CUPS_SERVERBIN, test "${cups_serverbin}" != "") +- if (test "${cups_serverbin}" != ""); then +- AC_SUBST(CUPS_SERVERBIN, ${cups_serverbin}) +- fi + AC_MSG_RESULT([${cups_serverbin}]) + fi ++AM_CONDITIONAL(CUPS_SERVERBIN, test "${cups_serverbin}" != "") ++AS_IF([test "${cups_serverbin}" != ""],[ ++ AC_SUBST(CUPS_SERVERBIN, ${cups_serverbin}) ++]) + + AC_ARG_ENABLE(mesh, AS_HELP_STRING([--enable-mesh], + [enable Mesh profile support]), [enable_mesh=${enableval}]) diff --git a/package/bluez5_utils/bluez5_utils.hash b/package/bluez5_utils/bluez5_utils.hash index 46680cf3c9..9cc19f87dd 100644 --- a/package/bluez5_utils/bluez5_utils.hash +++ b/package/bluez5_utils/bluez5_utils.hash @@ -1,5 +1,5 @@ # From https://www.kernel.org/pub/linux/bluetooth/sha256sums.asc: -sha256 499d7fa345a996c1bb650f5c6749e1d929111fa6ece0be0e98687fee6124536e bluez-5.72.tar.xz +sha256 988cb3c4551f6e3a667708a578f5ca9f93fc896508f98f08709be4f8ab033c2f bluez-5.75.tar.xz # Locally computed sha256 b499eddebda05a8859e32b820a64577d91f1de2b52efa2a1575a2cb4000bc259 COPYING sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING.LIB diff --git a/package/bluez5_utils/bluez5_utils.mk b/package/bluez5_utils/bluez5_utils.mk index 3ccb63948c..26f0f4afd4 100644 --- a/package/bluez5_utils/bluez5_utils.mk +++ b/package/bluez5_utils/bluez5_utils.mk @@ -5,9 +5,11 @@ ################################################################################ # Keep the version and patches in sync with bluez5_utils-headers -BLUEZ5_UTILS_VERSION = 5.72 +BLUEZ5_UTILS_VERSION = 5.75 BLUEZ5_UTILS_SOURCE = bluez-$(BLUEZ5_UTILS_VERSION).tar.xz BLUEZ5_UTILS_SITE = $(BR2_KERNEL_MIRROR)/linux/bluetooth +# 0001-configure.ac-Fix-disable-cups.patch +BLUEZ5_UTILS_AUTORECONF = YES BLUEZ5_UTILS_INSTALL_STAGING = YES BLUEZ5_UTILS_LICENSE = GPL-2.0+, LGPL-2.1+ BLUEZ5_UTILS_LICENSE_FILES = COPYING COPYING.LIB From thomas.petazzoni at bootlin.com Wed May 1 20:46:26 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:46:26 +0200 Subject: [Buildroot] [PATCH] package/{bluez5_utils, bluez5_utils-headers}: bump to version 5.75 In-Reply-To: <20240426071443.2565112-1-sairon@sairon.cz> References: <20240426071443.2565112-1-sairon@sairon.cz> Message-ID: <20240501224626.1ae78fa5@windsurf> On Fri, 26 Apr 2024 09:14:43 +0200 Jan ?erm?k wrote: > Bump to version 5.75 containing various fixes. Added a patch to fix > build with disabled CUPS (failing since 5.73, waiting to be reviewed and > merged) and enabled autoreconf which is needed for that patch. > > Changelog: > https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/ChangeLog > > Signed-off-by: Jan ?erm?k > --- > .../bluez5_utils-headers.mk | 2 +- > .../0001-configure.ac-Fix-disable-cups.patch | 41 +++++++++++++++++++ > package/bluez5_utils/bluez5_utils.hash | 2 +- > package/bluez5_utils/bluez5_utils.mk | 4 +- > 4 files changed, 46 insertions(+), 3 deletions(-) > create mode 100644 package/bluez5_utils/0001-configure.ac-Fix-disable-cups.patch Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Wed May 1 20:47:05 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:47:05 +0200 Subject: [Buildroot] [PATCH] package/linux-pam: bump to version 1.6.1 In-Reply-To: <20240426071304.2564147-1-sairon@sairon.cz> References: <20240426071304.2564147-1-sairon@sairon.cz> Message-ID: <20240501224705.29e35b6f@windsurf> On Fri, 26 Apr 2024 09:13:03 +0200 Jan ?erm?k wrote: > Bump to latest version, fixing couple of bugs. Remove patch already > included in this release. > > https://github.com/linux-pam/linux-pam/releases/tag/v1.6.1 > > Signed-off-by: Jan ?erm?k > --- > .../0001-pam_namespace-include-stdint-h.patch | 42 ------------------- > package/linux-pam/linux-pam.hash | 4 +- > package/linux-pam/linux-pam.mk | 2 +- > 3 files changed, 3 insertions(+), 45 deletions(-) > delete mode 100644 package/linux-pam/0001-pam_namespace-include-stdint-h.patch Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Wed May 1 20:47:38 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:47:38 +0200 Subject: [Buildroot] [PATCH] package/spdlog: bump to version 1.14.0 In-Reply-To: <20240426113540.534475-1-buildroot@heine.tech> References: <20240426113540.534475-1-buildroot@heine.tech> Message-ID: <20240501224738.5f8a693d@windsurf> On Fri, 26 Apr 2024 13:35:38 +0200 Michael Nosthoff via buildroot wrote: > Signed-off-by: Michael Nosthoff > --- > package/spdlog/spdlog.hash | 2 +- > package/spdlog/spdlog.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Wed May 1 20:47:18 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:47:18 +0200 Subject: [Buildroot] [git commit] package/spdlog: bump to version 1.14.0 Message-ID: <20240501204801.16BEB864CF@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=36841b5f37105a82fceeeda3312ec77323998f43 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Michael Nosthoff Signed-off-by: Thomas Petazzoni --- package/spdlog/spdlog.hash | 2 +- package/spdlog/spdlog.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/spdlog/spdlog.hash b/package/spdlog/spdlog.hash index 3dbe43ac2d..7a0f442ab0 100644 --- a/package/spdlog/spdlog.hash +++ b/package/spdlog/spdlog.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 534f2ee1a4dcbeb22249856edfb2be76a1cf4f708a20b0ac2ed090ee24cfdbc9 spdlog-1.13.0.tar.gz +sha256 429a6b73ade8285cb21f83bacf89e2821dd1720ea7faa3cb518ffe04b4e00efc spdlog-1.14.0.tar.gz sha256 4ccecab18d1ff0b61174fe3d6c430541625d3ddb865b0d5887db296f883c76e7 LICENSE diff --git a/package/spdlog/spdlog.mk b/package/spdlog/spdlog.mk index b45ae0a17d..c435633f41 100644 --- a/package/spdlog/spdlog.mk +++ b/package/spdlog/spdlog.mk @@ -4,7 +4,7 @@ # ################################################################################ -SPDLOG_VERSION = 1.13.0 +SPDLOG_VERSION = 1.14.0 SPDLOG_SITE = $(call github,gabime,spdlog,v$(SPDLOG_VERSION)) SPDLOG_LICENSE = MIT SPDLOG_LICENSE_FILES = LICENSE From thomas.petazzoni at bootlin.com Wed May 1 20:46:39 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:46:39 +0200 Subject: [Buildroot] [git commit] package/linux-pam: bump to version 1.6.1 Message-ID: <20240501204801.0C4A7864DF@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=0d394c39b8f26ba6e65771cd4afdcc4fac0ed0e8 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Bump to latest version, fixing couple of bugs. Remove patch already included in this release. https://github.com/linux-pam/linux-pam/releases/tag/v1.6.1 Signed-off-by: Jan ??erm??k Signed-off-by: Thomas Petazzoni --- .../0001-pam_namespace-include-stdint-h.patch | 42 ---------------------- package/linux-pam/linux-pam.hash | 4 +-- package/linux-pam/linux-pam.mk | 2 +- 3 files changed, 3 insertions(+), 45 deletions(-) diff --git a/package/linux-pam/0001-pam_namespace-include-stdint-h.patch b/package/linux-pam/0001-pam_namespace-include-stdint-h.patch deleted file mode 100644 index 5eda619505..0000000000 --- a/package/linux-pam/0001-pam_namespace-include-stdint-h.patch +++ /dev/null @@ -1,42 +0,0 @@ -From cc9d40b7cdbd3e15ccaa324a0dda1680ef9dea13 Mon Sep 17 00:00:00 2001 -From: Jacob Heider -Date: Wed, 17 Jan 2024 11:49:26 -0500 -Subject: [PATCH] pam_namespace: include stdint.h - -pam_namespace.c makes use of SIZE_MAX but doesn't include stdint.h, -resulting in the following build failures on 1.6.0: - - pam_namespace.c: In function 'process_line': - pam_namespace.c:649:41: error: 'SIZE_MAX' undeclared (first use in this function) - 649 | if (count > UINT_MAX || count > SIZE_MAX / sizeof(uid_t)) { - | ^~~~~~~~ - pam_namespace.c:41:1: note: 'SIZE_MAX' is defined in header ''; did you forget to '#include '? - 40 | #include "argv_parse.h" - +++ |+#include - 41 | - pam_namespace.c:649:41: note: each undeclared identifier is reported only once for each function it appears in - 649 | if (count > UINT_MAX || count > SIZE_MAX / sizeof(uid_t)) { - | ^~~~~~~~ - -Fixes: v1.6.0~100 ("pam_namespace: validate amount of uids in config") -Resolves: https://github.com/linux-pam/linux-pam/issues/733 - -Upstream: https://github.com/linux-pam/linux-pam/commit/cc9d40b7cdbd3e15ccaa324a0dda1680ef9dea13 -Signed-off-by: Fabrice Fontaine ---- - modules/pam_namespace/pam_namespace.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/modules/pam_namespace/pam_namespace.c b/modules/pam_namespace/pam_namespace.c -index f72d67189..b16731c22 100644 ---- a/modules/pam_namespace/pam_namespace.c -+++ b/modules/pam_namespace/pam_namespace.c -@@ -34,6 +34,8 @@ - - #define _ATFILE_SOURCE - -+#include "config.h" -+#include - #include "pam_cc_compat.h" - #include "pam_inline.h" - #include "pam_namespace.h" diff --git a/package/linux-pam/linux-pam.hash b/package/linux-pam/linux-pam.hash index cd882715cb..353613e6e6 100644 --- a/package/linux-pam/linux-pam.hash +++ b/package/linux-pam/linux-pam.hash @@ -1,6 +1,6 @@ # Locally computed hashes after checking signature at -# https://github.com/linux-pam/linux-pam/releases/download/v1.6.0/Linux-PAM-1.6.0.tar.xz.asc +# https://github.com/linux-pam/linux-pam/releases/download/v1.6.1/Linux-PAM-1.6.1.tar.xz.asc # signed with the key 8C6BFD92EE0F42EDF91A6A736D1A7F052E5924BB -sha256 fff4a34e5bbee77e2e8f1992f27631e2329bcbf8a0563ddeb5c3389b4e3169ad Linux-PAM-1.6.0.tar.xz +sha256 f8923c740159052d719dbfc2a2f81942d68dd34fcaf61c706a02c9b80feeef8e Linux-PAM-1.6.1.tar.xz # Locally computed sha256 133d98e7a2ab3ffd330b4debb0bfc10fea21e4b2b5a5b09de2e924293be5ff08 Copyright diff --git a/package/linux-pam/linux-pam.mk b/package/linux-pam/linux-pam.mk index 89a46e81df..a205d67c54 100644 --- a/package/linux-pam/linux-pam.mk +++ b/package/linux-pam/linux-pam.mk @@ -4,7 +4,7 @@ # ################################################################################ -LINUX_PAM_VERSION = 1.6.0 +LINUX_PAM_VERSION = 1.6.1 LINUX_PAM_SOURCE = Linux-PAM-$(LINUX_PAM_VERSION).tar.xz LINUX_PAM_SITE = https://github.com/linux-pam/linux-pam/releases/download/v$(LINUX_PAM_VERSION) LINUX_PAM_INSTALL_STAGING = YES From arnout at mind.be Wed May 1 20:53:46 2024 From: arnout at mind.be (Arnout Vandecappelle) Date: Wed, 1 May 2024 22:53:46 +0200 Subject: [Buildroot] [PATCH 06/15 v2] package/luajit: use the git download for known-reproducible tarball In-Reply-To: <41552f4a1dc68983bb3edfd6a2b466581f5f91e5.1714243078.git.yann.morin.1998@free.fr> References: <41552f4a1dc68983bb3edfd6a2b466581f5f91e5.1714243078.git.yann.morin.1998@free.fr> Message-ID: On 27/04/2024 20:37, Yann E. MORIN wrote: > Since version 2.1, LuaJIT follows a rolling-release scheme, which means > that any commit is as good as any other; LuaJIT uses the comitter's UNIX > timestamp as its semver patch level. It uses the git-attribute > export-subst for the .relver file that contains the %ct placeholderfor > git-archive to expand it. > > We have had various instances of GitHub changing the way it generates > archives on the fly, and although it is hard to foresee a way the UNIX > timestamp could change (it's clearly defined as the number of seconds > elapsed since 1970-01-01T00:00:00Z), it's not inconceivable that GitHub > may decide to no longer expand the export-subst attributes in the > future... Although I don't really disagree with the principle, I think we should instead stop using github-generated tarballs entirely. Or, put differently: I think the risk of a github-generated tarball to change hash for _other_ reasons is much higher than that it would stop expanding export-subst. So I will not apply this patch of the series. Regards, Arnout > > To avoid any confusion, and to be future-proof, switch over to using the > git download helper, which now has support for handling export-subst in > a reproducible way. Drop the post-extract hooks as they are not needed. > > Signed-off-by: Yann E. MORIN > Cc: Francois Perrad > Cc: Thomas Petazzoni > --- > package/luajit/luajit.hash | 2 +- > package/luajit/luajit.mk | 3 ++- > 2 files changed, 3 insertions(+), 2 deletions(-) > > diff --git a/package/luajit/luajit.hash b/package/luajit/luajit.hash > index 578bb7a3e2..da243d8c2a 100644 > --- a/package/luajit/luajit.hash > +++ b/package/luajit/luajit.hash > @@ -1,5 +1,5 @@ > # Locally calculated > -sha256 b518721280390e4cec1af30f6819d86756ce4234d82410a55a4e121855f64e08 luajit-41fb94defa8f830ce69a8122b03f6ac3216d392a.tar.gz > +sha256 df50bfe78919691ce9a630c8312386a8cb6ca49f327922a833e77656e82ef6c6 luajit-41fb94defa8f830ce69a8122b03f6ac3216d392a-br2.tar.gz > > # Locally calculated > sha256 1130331ac861a4b4520e9c8ad0814efdc6f1e79ea55ea9c460c73733d13ccb5f COPYRIGHT > diff --git a/package/luajit/luajit.mk b/package/luajit/luajit.mk > index 693e22630b..6b1c6b3386 100644 > --- a/package/luajit/luajit.mk > +++ b/package/luajit/luajit.mk > @@ -5,7 +5,8 @@ > ################################################################################ > > LUAJIT_VERSION = 41fb94defa8f830ce69a8122b03f6ac3216d392a > -LUAJIT_SITE = $(call github,LuaJIT,LuaJIT,$(LUAJIT_VERSION)) > +LUAJIT_SITE = https://github.com/LuaJIT/LuaJIT > +LUAJIT_SITE_METHOD = git > LUAJIT_LICENSE = MIT > LUAJIT_LICENSE_FILES = COPYRIGHT > LUAJIT_CPE_ID_VENDOR = luajit From thomas.petazzoni at bootlin.com Wed May 1 20:49:45 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:49:45 +0200 Subject: [Buildroot] [git commit] package/dropbear: bump to version 2024.85 Message-ID: <20240501205444.77338864E7@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=2fbffc610ef9d54b38fefd171fde93de136f7477 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Francois Perrad Signed-off-by: Thomas Petazzoni --- package/dropbear/dropbear.hash | 2 +- package/dropbear/dropbear.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/dropbear/dropbear.hash b/package/dropbear/dropbear.hash index 675715ddec..a901656e5d 100644 --- a/package/dropbear/dropbear.hash +++ b/package/dropbear/dropbear.hash @@ -1,5 +1,5 @@ # From https://matt.ucc.asn.au/dropbear/releases/SHA256SUM.asc -sha256 16e22b66b333d6b7e504c43679d04ed6ca30f2838db40a21f935c850dfc01009 dropbear-2024.84.tar.bz2 +sha256 86b036c433a69d89ce51ebae335d65c47738ccf90d13e5eb0fea832e556da502 dropbear-2024.85.tar.bz2 # License file, locally computed sha256 a99ce657d790b761c132ee7e0de18edb437ae6361e536d991c6a12f36e770445 LICENSE diff --git a/package/dropbear/dropbear.mk b/package/dropbear/dropbear.mk index 1571c5d957..d9504c5525 100644 --- a/package/dropbear/dropbear.mk +++ b/package/dropbear/dropbear.mk @@ -4,7 +4,7 @@ # ################################################################################ -DROPBEAR_VERSION = 2024.84 +DROPBEAR_VERSION = 2024.85 DROPBEAR_SITE = https://matt.ucc.asn.au/dropbear/releases DROPBEAR_SOURCE = dropbear-$(DROPBEAR_VERSION).tar.bz2 DROPBEAR_LICENSE = MIT, BSD-2-Clause, Public domain From thomas.petazzoni at bootlin.com Wed May 1 20:54:52 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:54:52 +0200 Subject: [Buildroot] [PATCH] package/dropbear: bump to version 2024.85 In-Reply-To: <20240426180217.20885-1-francois.perrad@gadz.org> References: <20240426180217.20885-1-francois.perrad@gadz.org> Message-ID: <20240501225452.790225c7@windsurf> On Fri, 26 Apr 2024 20:02:17 +0200 Francois Perrad wrote: > Signed-off-by: Francois Perrad > --- > package/dropbear/dropbear.hash | 2 +- > package/dropbear/dropbear.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Wed May 1 20:58:53 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 22:58:53 +0200 Subject: [Buildroot] [git commit] package/bats-core: bump to version 1.11.0 Message-ID: <20240501210602.CD0EB864F2@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=804abf536e5f8ab86160cc4f2066b42eeeb4ec39 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master https://github.com/bats-core/bats-core/releases/tag/v1.11.0 https://github.com/bats-core/bats-core/releases/tag/v1.10.0 https://github.com/bats-core/bats-core/releases/tag/v1.9.0 Signed-off-by: Brandon Maier Signed-off-by: Thomas Petazzoni --- package/bats-core/bats-core.hash | 2 +- package/bats-core/bats-core.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/bats-core/bats-core.hash b/package/bats-core/bats-core.hash index 81c0229af4..25b2b60339 100644 --- a/package/bats-core/bats-core.hash +++ b/package/bats-core/bats-core.hash @@ -1,5 +1,5 @@ # Locally calculated -sha256 0f2df311a536e625a72bff64c838e67c7b5032e6ea9edcdf32758303062b2f3b bats-core-1.8.2.tar.gz +sha256 aeff09fdc8b0c88b3087c99de00cf549356d7a2f6a69e3fcec5e0e861d2f9063 bats-core-1.11.0.tar.gz # License files sha256 55074b2b3b87809105034e1468e59076554d76a80c67bcc592000cc3d929852d LICENSE.md diff --git a/package/bats-core/bats-core.mk b/package/bats-core/bats-core.mk index e172445930..716b167c00 100644 --- a/package/bats-core/bats-core.mk +++ b/package/bats-core/bats-core.mk @@ -4,7 +4,7 @@ # ################################################################################ -BATS_CORE_VERSION = 1.8.2 +BATS_CORE_VERSION = 1.11.0 BATS_CORE_SITE = $(call github,bats-core,bats-core,v$(BATS_CORE_VERSION)) BATS_CORE_LICENSE = MIT BATS_CORE_LICENSE_FILES = LICENSE.md From romain.naour at smile.fr Wed May 1 21:07:30 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 23:07:30 +0200 Subject: [Buildroot] [git commit] DEVELOPERS: add myself for Armadeus boards Message-ID: <20240501210905.06691864F5@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=74c0cf2152415ab99c93d4d03acd7bfec39fd511 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: S??bastien Szymanski Signed-off-by: Romain Naour --- DEVELOPERS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index 726641b513..11ffe17f92 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2778,6 +2778,8 @@ F: support/testing/tests/package/sample_nu.nu F: support/testing/tests/package/test_nu.py N: S??bastien Szymanski +F: board/armadeus/ +F: configs/armadeus* F: package/mmc-utils/ F: package/python-flask-jsonrpc/ F: package/python-flask-login/ From romain.naour at smile.fr Wed May 1 21:09:33 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 23:09:33 +0200 Subject: [Buildroot] [PATCH 1/1] DEVELOPERS: add myself for Armadeus boards In-Reply-To: <20240418133035.30749-1-sebastien.szymanski@armadeus.com> References: <20240418133035.30749-1-sebastien.szymanski@armadeus.com> Message-ID: <2a3bb6ef-f536-4257-b5bf-382e0882f945@smile.fr> Hello S?bastien, Le 18/04/2024 ? 15:30, S?bastien Szymanski a ?crit?: > Signed-off-by: S?bastien Szymanski > --- > DEVELOPERS | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/DEVELOPERS b/DEVELOPERS > index 399b2931ff3d..7a1fa43f4b0d 100644 > --- a/DEVELOPERS > +++ b/DEVELOPERS > @@ -2777,6 +2777,8 @@ F: support/testing/tests/package/sample_nu.nu > F: support/testing/tests/package/test_nu.py > > N: S?bastien Szymanski > +F: board/armadeus/ > +F: configs/armadeus* > F: package/mmc-utils/ > F: package/python-flask-jsonrpc/ > F: package/python-flask-login/ Applied to master, thanks. Best regards, Romain From thomas.petazzoni at bootlin.com Wed May 1 21:09:35 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 23:09:35 +0200 Subject: [Buildroot] [PATCH v2 1/4] package/bats-core: bump to version 1.11.0 In-Reply-To: <20240425195816.2758964-1-brandon.maier@collins.com> References: <20240412210850.17265-1-brandon.maier@collins.com> <20240425195816.2758964-1-brandon.maier@collins.com> Message-ID: <20240501230935.360d87e6@windsurf> On Thu, 25 Apr 2024 19:58:13 +0000 Brandon Maier via buildroot wrote: > https://github.com/bats-core/bats-core/releases/tag/v1.11.0 > https://github.com/bats-core/bats-core/releases/tag/v1.10.0 > https://github.com/bats-core/bats-core/releases/tag/v1.9.0 > > Signed-off-by: Brandon Maier > --- > package/bats-core/bats-core.hash | 2 +- > package/bats-core/bats-core.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From romain.naour at smile.fr Wed May 1 21:12:43 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 23:12:43 +0200 Subject: [Buildroot] [PATCH] DEVELOPERS: remove Sebastian Weyer Message-ID: <20240501211300.1590881-1-romain.naour@smile.fr> Sebastian email address at Smile is bouncing, so drop it from the DEVELOPERS file. Signed-off-by: Romain Naour --- DEVELOPERS | 8 -------- 1 file changed, 8 deletions(-) diff --git a/DEVELOPERS b/DEVELOPERS index 11ffe17f92..5d198567d8 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2769,14 +2769,6 @@ F: support/misc/toolchainfile.cmake.in N: Sam Voss F: package/ripgrep/ -N: Sebastian Weyer -F: package/amlogic-boot-fip/ -F: package/nushell/ -F: package/rust-bindgen/ -F: package/spirv-headers/ -F: support/testing/tests/package/sample_nu.nu -F: support/testing/tests/package/test_nu.py - N: S?bastien Szymanski F: board/armadeus/ F: configs/armadeus* -- 2.44.0 From arnout at mind.be Wed May 1 21:13:38 2024 From: arnout at mind.be (Arnout Vandecappelle) Date: Wed, 1 May 2024 23:13:38 +0200 Subject: [Buildroot] [PATCH 07/15 v2] support/testing: add test for export-subst support in git-download In-Reply-To: References: Message-ID: On 27/04/2024 20:37, Yann E. MORIN wrote: > Signed-off-by: Yann E. MORIN > --- > .../package/export-subst/export-subst.hash | 1 + > .../git-hash/package/export-subst/export-subst.mk | 10 ++++++++++ > .../05/482df734b3715b849ef4a3147a9b1b1f8cca38 | Bin 0 -> 35 bytes > .../0f/db95cf4f3c5ed4003287649cabb33c5f843e26 | Bin 0 -> 197 bytes > .../68/28f88dcb0e88b8cd738ad6044ce74d7a9a13c8 | Bin 0 -> 28 bytes > .../6d/a12b257e47f6089612fe97a8746d2d9c4ca0e0 | Bin 0 -> 112 bytes Since the git repo is included as binary, we can't see what is in there. It's basically the following commit: From 0fdb95cf4f3c5ed4003287649cabb33c5f843e26 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN" Date: Tue, 12 Sep 2023 23:25:48 +0200 Subject: [PATCH] file2: test export-subst Signed-off-by: Yann E. MORIN --- .gitattributes | 1 + file2 | 1 + 2 files changed, 2 insertions(+) create mode 100644 .gitattributes create mode 100644 file2 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..05482df --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +file2 export-subst diff --git a/file2 b/file2 new file mode 100644 index 0000000..6828f88 --- /dev/null +++ b/file2 @@ -0,0 +1 @@ +$Format:%H$ -- 2.44.0 I think it would be worth to change is in order to test that no recursive expansion takes place. I.e., use this as the commit message: Subject: [PATCH] file2: test export-subst Test that strings like $Format:%H$ are expanded when the export-subst attribute is set on a file. Signed-off-by: Yann E. MORIN And in the file, put this: $Format:%B$ I haven't made this change though. (BTW, another nice change would be to generate the git repository on the fly from the test infrastructure, based on a series of patches that are git-am'ed and with GIT_COMMITTER_NAME, GIT_COMMITER_EMAIL and GIT_COMMITTER_DATE values set to fixed values.) Regards, Arnout > .../git-remote/repo.git/refs/heads/master | 2 +- > support/testing/tests/download/test_git.py | 4 ++++ > 8 files changed, 16 insertions(+), 1 deletion(-) > create mode 100644 support/testing/tests/download/br2-external/git-hash/package/export-subst/export-subst.hash > create mode 100644 support/testing/tests/download/br2-external/git-hash/package/export-subst/export-subst.mk > create mode 100644 support/testing/tests/download/git-remote/repo.git/objects/05/482df734b3715b849ef4a3147a9b1b1f8cca38 > create mode 100644 support/testing/tests/download/git-remote/repo.git/objects/0f/db95cf4f3c5ed4003287649cabb33c5f843e26 > create mode 100644 support/testing/tests/download/git-remote/repo.git/objects/68/28f88dcb0e88b8cd738ad6044ce74d7a9a13c8 > create mode 100644 support/testing/tests/download/git-remote/repo.git/objects/6d/a12b257e47f6089612fe97a8746d2d9c4ca0e0 > > diff --git a/support/testing/tests/download/br2-external/git-hash/package/export-subst/export-subst.hash b/support/testing/tests/download/br2-external/git-hash/package/export-subst/export-subst.hash > new file mode 100644 > index 0000000000..1926236993 > --- /dev/null > +++ b/support/testing/tests/download/br2-external/git-hash/package/export-subst/export-subst.hash > @@ -0,0 +1 @@ > +sha256 9d359f9ae9a9e65dd4ccfe7170aa6fda24e17dfc81238972957b4b7fe97168a7 export-subst-0fdb95cf4f3c5ed4003287649cabb33c5f843e26-br2.tar.gz > diff --git a/support/testing/tests/download/br2-external/git-hash/package/export-subst/export-subst.mk b/support/testing/tests/download/br2-external/git-hash/package/export-subst/export-subst.mk > new file mode 100644 > index 0000000000..8d7d3ff970 > --- /dev/null > +++ b/support/testing/tests/download/br2-external/git-hash/package/export-subst/export-subst.mk > @@ -0,0 +1,10 @@ > +################################################################################ > +# > +# export-subst > +# > +################################################################################ > + > +EXPORT_SUBST_VERSION = 0fdb95cf4f3c5ed4003287649cabb33c5f843e26 > +EXPORT_SUBST_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git > + > +$(eval $(generic-package)) > diff --git a/support/testing/tests/download/git-remote/repo.git/objects/05/482df734b3715b849ef4a3147a9b1b1f8cca38 b/support/testing/tests/download/git-remote/repo.git/objects/05/482df734b3715b849ef4a3147a9b1b1f8cca38 > new file mode 100644 > index 0000000000000000000000000000000000000000..404bb1397cf8ec58f5e21a86e311e3b3884a55d5 > GIT binary patch > literal 35 > rcmbjYhBdU^VQOO$iz_nm{Sb^1FsEl > > literal 0 > HcmV?d00001 > > diff --git a/support/testing/tests/download/git-remote/repo.git/objects/0f/db95cf4f3c5ed4003287649cabb33c5f843e26 b/support/testing/tests/download/git-remote/repo.git/objects/0f/db95cf4f3c5ed4003287649cabb33c5f843e26 > new file mode 100644 > index 0000000000000000000000000000000000000000..3a4cc4ead6ce5a7e90a38e025896bc66da85a242 > GIT binary patch > literal 197 > zcmV;$06PD80j18pN(3?%TWg1cK#h > z4qtBDwhqwJ-;B--j*`L!t!LwllOZ~Vg`-cw8%Ibno17#|aY~)*fP^|Mib|${mW-#M > zO)5HDL~WGM!6-#hl1S(A**birTH$eq=hwHV7r47zbKY8C>#Sl759Ml at OTP!@qOn#- > z6W~^&lp_B^2mfOs%KF84fWi9!{yw!nrv1F^Lx}hFSed3)%CuY#e^rVfqgY-S2z_Jg > > literal 0 > HcmV?d00001 > > diff --git a/support/testing/tests/download/git-remote/repo.git/objects/68/28f88dcb0e88b8cd738ad6044ce74d7a9a13c8 b/support/testing/tests/download/git-remote/repo.git/objects/68/28f88dcb0e88b8cd738ad6044ce74d7a9a13c8 > new file mode 100644 > index 0000000000000000000000000000000000000000..fdc4a37651a4ad195f8f106f3496d5df0b3bb6a5 > GIT binary patch > literal 28 > kcmb > literal 0 > HcmV?d00001 > > diff --git a/support/testing/tests/download/git-remote/repo.git/objects/6d/a12b257e47f6089612fe97a8746d2d9c4ca0e0 b/support/testing/tests/download/git-remote/repo.git/objects/6d/a12b257e47f6089612fe97a8746d2d9c4ca0e0 > new file mode 100644 > index 0000000000000000000000000000000000000000..932f73602f5927ae985829cdd301b1ed40350137 > GIT binary patch > literal 112 > zcmV-$0FVE80V^p=O;s>7FlR6{FfcPQQP4}zEJ-XWDauSLElDkAVD- at bZnC*Bx at F#% > z#UfR+rR950SwK~$W#*(ZJf9QSKh0&bCYQsEj;oGV#dUqLSCQn67&0_|^q%JH*m1VF > S>l%yCbKk02!Y2Svbu0l+hckcx > > literal 0 > HcmV?d00001 > > diff --git a/support/testing/tests/download/git-remote/repo.git/refs/heads/master b/support/testing/tests/download/git-remote/repo.git/refs/heads/master > index b6bccc1c17..b6e37260fb 100644 > --- a/support/testing/tests/download/git-remote/repo.git/refs/heads/master > +++ b/support/testing/tests/download/git-remote/repo.git/refs/heads/master > @@ -1 +1 @@ > -a238b1dfcd825d47d834af3c5223417c8411d90d > +0fdb95cf4f3c5ed4003287649cabb33c5f843e26 > diff --git a/support/testing/tests/download/test_git.py b/support/testing/tests/download/test_git.py > index ec5b8f3fdd..ba52e03ef5 100644 > --- a/support/testing/tests/download/test_git.py > +++ b/support/testing/tests/download/test_git.py > @@ -56,6 +56,10 @@ class TestGitHash(GitTestBase): > self.check_hash("bad") > self.check_hash("good") > self.check_hash("nohash") > + self.check_hash("export-subst") > + with open(os.path.join(self.builddir, "dl", "export-subst", "git", "file2"), "r") as f: > + blob = f.read() > + self.assertEqual(blob, "0fdb95cf4f3c5ed4003287649cabb33c5f843e26\n") > > > class TestGitRefs(GitTestBase): From thomas.petazzoni at bootlin.com Wed May 1 21:13:46 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 23:13:46 +0200 Subject: [Buildroot] [PATCH v2 2/4] package/bats-support: add bats support library In-Reply-To: <20240425195816.2758964-2-brandon.maier@collins.com> References: <20240412210850.17265-1-brandon.maier@collins.com> <20240425195816.2758964-2-brandon.maier@collins.com> Message-ID: <20240501231346.442f0182@windsurf> Hello Brandon, Thanks for the patch! Commit title should be: package/bats-support: new package More comments below. On Thu, 25 Apr 2024 19:58:14 +0000 Brandon Maier via buildroot wrote: > This library provides support functions needed by the bats-assert and > bats-file libraries. > > This library does not provide an installer. Manually install the files > under /usr/lib/bats/bats-support which is what the Arch Linux package > does[1]. This makes the library loadable using `bats_load_library`[2]. > > [1] https://gitlab.archlinux.org/archlinux/packaging/packages/bats-support/-/blob/main/PKGBUILD?ref_type=heads > [2] https://bats-core.readthedocs.io/en/stable/writing-tests.html#bats-load-library-load-system-wide-libraries > > Signed-off-by: Brandon Maier > --- > Changes v1 -> v2: > - fix older versions of `install` that don't support -D Hu? We use the -D option of install everywhere in Buildroot. How can your build work if you have a version of install that doesn't support -D ? > +define BATS_SUPPORT_INSTALL_TARGET_CMDS > + install -d -m 0755 $(TARGET_DIR)/usr/lib/bats/bats-support/src > + install -m 0644 $(@D)/*.bash -t "$(TARGET_DIR)/usr/lib/bats/bats-support" > + install -m 0644 $(@D)/src/*.bash -t "$(TARGET_DIR)/usr/lib/bats/bats-support/src" Use $(INSTALL) instead of install. You can skip the double quotes around the file paths. We don't double quotes the paths in any other Buildroot .mk file. Also, -m 0644 is not consistent with how the files from bats-core are installed: $ ls -l output/target/usr/lib/bats-core/ total 68 -rwxr-xr-x. 1 thomas thomas 7988 1 mai 23:03 common.bash -rwxr-xr-x. 1 thomas thomas 6058 1 mai 23:03 formatter.bash -rwxr-xr-x. 1 thomas thomas 838 1 mai 23:03 preprocessing.bash -rwxr-xr-x. 1 thomas thomas 3722 1 mai 23:03 semaphore.bash -rwxr-xr-x. 1 thomas thomas 16483 1 mai 23:03 test_functions.bash -rwxr-xr-x. 1 thomas thomas 14979 1 mai 23:03 tracing.bash -rwxr-xr-x. 1 thomas thomas 1019 1 mai 23:03 validator.bash -rwxr-xr-x. 1 thomas thomas 1900 1 mai 23:03 warnings.bash They are installed 0755. Should we try to be consistent with this? Or it doesn't make sense for a specific reason? Also, while not mandatory at all, it would be nice to have small runtime tests for these bats-* packages. Nothing fancy, just something stupid/simple that exercises a bit those packages. These comments apply in a completely identical way to the other 2 patches in this series. Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From yann.morin.1998 at free.fr Wed May 1 21:19:23 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 23:19:23 +0200 Subject: [Buildroot] [PATCH 06/15 v2] package/luajit: use the git download for known-reproducible tarball In-Reply-To: References: <41552f4a1dc68983bb3edfd6a2b466581f5f91e5.1714243078.git.yann.morin.1998@free.fr> Message-ID: Arnout, All, On 2024-05-01 22:53 +0200, Arnout Vandecappelle spake thusly: > On 27/04/2024 20:37, Yann E. MORIN wrote: > > Since version 2.1, LuaJIT follows a rolling-release scheme, which means > > that any commit is as good as any other; LuaJIT uses the comitter's UNIX > > timestamp as its semver patch level. It uses the git-attribute > > export-subst for the .relver file that contains the %ct placeholderfor > > git-archive to expand it. > > > > We have had various instances of GitHub changing the way it generates > > archives on the fly, and although it is hard to foresee a way the UNIX > > timestamp could change (it's clearly defined as the number of seconds > > elapsed since 1970-01-01T00:00:00Z), it's not inconceivable that GitHub > > may decide to no longer expand the export-subst attributes in the > > future... > > Although I don't really disagree with the principle, I think we should > instead stop using github-generated tarballs entirely. 100% agreed. I was contemplating doing a mass conversion one of those rainy days... > Or, put differently: > I think the risk of a github-generated tarball to change hash for _other_ > reasons is much higher than that it would stop expanding export-subst. Yup, export-subst makes it only slightly more likely. :-] > So I will not apply this patch of the series. This patch is mostly for correctness, and did fit with the purpose of the series. But it is not strictly needed. So ACK. Thanks! Regards, Yann E. MORIN. > Regards, > Arnout > > > > > To avoid any confusion, and to be future-proof, switch over to using the > > git download helper, which now has support for handling export-subst in > > a reproducible way. Drop the post-extract hooks as they are not needed. > > > > Signed-off-by: Yann E. MORIN > > Cc: Francois Perrad > > Cc: Thomas Petazzoni > > --- > > package/luajit/luajit.hash | 2 +- > > package/luajit/luajit.mk | 3 ++- > > 2 files changed, 3 insertions(+), 2 deletions(-) > > > > diff --git a/package/luajit/luajit.hash b/package/luajit/luajit.hash > > index 578bb7a3e2..da243d8c2a 100644 > > --- a/package/luajit/luajit.hash > > +++ b/package/luajit/luajit.hash > > @@ -1,5 +1,5 @@ > > # Locally calculated > > -sha256 b518721280390e4cec1af30f6819d86756ce4234d82410a55a4e121855f64e08 luajit-41fb94defa8f830ce69a8122b03f6ac3216d392a.tar.gz > > +sha256 df50bfe78919691ce9a630c8312386a8cb6ca49f327922a833e77656e82ef6c6 luajit-41fb94defa8f830ce69a8122b03f6ac3216d392a-br2.tar.gz > > # Locally calculated > > sha256 1130331ac861a4b4520e9c8ad0814efdc6f1e79ea55ea9c460c73733d13ccb5f COPYRIGHT > > diff --git a/package/luajit/luajit.mk b/package/luajit/luajit.mk > > index 693e22630b..6b1c6b3386 100644 > > --- a/package/luajit/luajit.mk > > +++ b/package/luajit/luajit.mk > > @@ -5,7 +5,8 @@ > > ################################################################################ > > LUAJIT_VERSION = 41fb94defa8f830ce69a8122b03f6ac3216d392a > > -LUAJIT_SITE = $(call github,LuaJIT,LuaJIT,$(LUAJIT_VERSION)) > > +LUAJIT_SITE = https://github.com/LuaJIT/LuaJIT > > +LUAJIT_SITE_METHOD = git > > LUAJIT_LICENSE = MIT > > LUAJIT_LICENSE_FILES = COPYRIGHT > > LUAJIT_CPE_ID_VENDOR = luajit -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Wed May 1 21:23:43 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 23:23:43 +0200 Subject: [Buildroot] [PATCH 07/15 v2] support/testing: add test for export-subst support in git-download In-Reply-To: References: Message-ID: Arnout, All, On 2024-05-01 23:13 +0200, Arnout Vandecappelle spake thusly: > On 27/04/2024 20:37, Yann E. MORIN wrote: > > Signed-off-by: Yann E. MORIN > > --- > > .../package/export-subst/export-subst.hash | 1 + > > .../git-hash/package/export-subst/export-subst.mk | 10 ++++++++++ > > .../05/482df734b3715b849ef4a3147a9b1b1f8cca38 | Bin 0 -> 35 bytes > > .../0f/db95cf4f3c5ed4003287649cabb33c5f843e26 | Bin 0 -> 197 bytes > > .../68/28f88dcb0e88b8cd738ad6044ce74d7a9a13c8 | Bin 0 -> 28 bytes > > .../6d/a12b257e47f6089612fe97a8746d2d9c4ca0e0 | Bin 0 -> 112 bytes > > Since the git repo is included as binary, we can't see what is in there. Yes, I did that way before the xz fiasco... :-/ See below. [--SNIP--] > I think it would be worth to change is in order to test that no recursive > expansion takes place. I.e., use this as the commit message: > > Subject: [PATCH] file2: test export-subst > > Test that strings like $Format:%H$ are expanded when the export-subst > attribute is set on a file. > > Signed-off-by: Yann E. MORIN > > > And in the file, put this: > > $Format:%B$ > > I haven't made this change though. Worth a try. Can we do that in a follow-up patch? > (BTW, another nice change would be to generate the git repository on the > fly from the test infrastructure, based on a series of patches that are > git-am'ed and with GIT_COMMITTER_NAME, GIT_COMMITER_EMAIL and > GIT_COMMITTER_DATE values set to fixed values.) Yes, this is on my todo-list, and I have alsready testedt that indeed that generates a reproducible git tree. Regards, Yann E. MORIN. -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From fontaine.fabrice at gmail.com Wed May 1 21:26:27 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Wed, 1 May 2024 23:26:27 +0200 Subject: [Buildroot] [PATCH 1/1] package/python-pillow: fix legal info Message-ID: <20240501212627.17988-1-fontaine.fabrice@gmail.com> Commit dfaa34ddd3398f22718f7361d617d98d53b51630 forgot to update hash of LICENSE file: ERROR: LICENSE has wrong sha256 hash: ERROR: expected: e706384c6f299d1b6fa782ae657740b372b4bd7938a1a318bf94ac249114758a ERROR: got : cf234c27a3f275f5a050f4df3946f8855704226fe4e7ca8b33928cbcecbced37 LICENSE file has been updated to clean up authors and contributors: https://github.com/python-pillow/Pillow/commit/4197263dff19a79f13cd86f6cdc9a0ec6c06da92 Fixes: dfaa34ddd3398f22718f7361d617d98d53b51630 - http://autobuild.buildroot.org/results/5a35d83c73367e1b20534b1bc7f2f564cf653a38 Signed-off-by: Fabrice Fontaine --- package/python-pillow/python-pillow.hash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/python-pillow/python-pillow.hash b/package/python-pillow/python-pillow.hash index 073b758dfe..352536a035 100644 --- a/package/python-pillow/python-pillow.hash +++ b/package/python-pillow/python-pillow.hash @@ -3,4 +3,4 @@ md5 6c21a12849ae42f93881f614d8f6f651 pillow-10.3.0.tar.gz sha256 9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d pillow-10.3.0.tar.gz # Locally computed sha256 checksums -sha256 e706384c6f299d1b6fa782ae657740b372b4bd7938a1a318bf94ac249114758a LICENSE +sha256 cf234c27a3f275f5a050f4df3946f8855704226fe4e7ca8b33928cbcecbced37 LICENSE -- 2.43.0 From thomas.petazzoni at bootlin.com Wed May 1 21:28:47 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 23:28:47 +0200 Subject: [Buildroot] [PATCH] package/libarchive: bump to version 3.7.3 In-Reply-To: <20240415170556.35245-1-francois.perrad@gadz.org> References: <20240415170556.35245-1-francois.perrad@gadz.org> Message-ID: <20240501232847.6558267b@windsurf> On Mon, 15 Apr 2024 19:05:56 +0200 Francois Perrad wrote: > Signed-off-by: Francois Perrad > --- > .../0002-autotools-do-not-add-iconv-for-Requires.private.patch | 2 +- > package/libarchive/libarchive.hash | 2 +- > package/libarchive/libarchive.mk | 2 +- > 3 files changed, 3 insertions(+), 3 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From romain.naour at smile.fr Wed May 1 21:29:55 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 23:29:55 +0200 Subject: [Buildroot] [PATCH 1/1] configs/ti_am62x_sk_defconfig: reorder defconfig In-Reply-To: <20240415124616.3817152-1-dario.binacchi@amarulasolutions.com> References: <20240415124616.3817152-1-dario.binacchi@amarulasolutions.com> Message-ID: Hello Dario, All, Le 15/04/2024 ? 14:46, Dario Binacchi a ?crit?: > The patch doesn't introduce any functional changes but reorganizes the > code to prevent the execution of the commands: > > make ti_am62x_sk_defconfig > make savedefconfig > > from showing a change in the defconfig. > > Signed-off-by: Dario Binacchi > --- > configs/ti_am62x_sk_defconfig | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/configs/ti_am62x_sk_defconfig b/configs/ti_am62x_sk_defconfig > index 5c7b97b3b0b1..405016818438 100644 > --- a/configs/ti_am62x_sk_defconfig > +++ b/configs/ti_am62x_sk_defconfig > @@ -3,8 +3,8 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y > BR2_GLOBAL_PATCH_DIR="board/ti/am62x-sk/patches" > BR2_DOWNLOAD_FORCE_CHECK_HASHES=y > BR2_ROOTFS_POST_BUILD_SCRIPT="board/ti/common/am6xx/post-build.sh" > -BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS="-c ttyS2,115200n8 -d k3-am625-sk.dtb -l am62x-sk-buildroot -r /dev/mmcblk1p2 -x earlycon=ns16550a,mmio32,0x02800000" > BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" > +BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS="-c ttyS2,115200n8 -d k3-am625-sk.dtb -l am62x-sk-buildroot -r /dev/mmcblk1p2 -x earlycon=ns16550a,mmio32,0x02800000" > BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS="-c board/ti/am62x-sk/genimage.cfg" > BR2_LINUX_KERNEL=y > BR2_LINUX_KERNEL_CUSTOM_VERSION=y defconfig in Buildroot are not always generated by savedefconfig, some of them contains comments. Applied to master, thanks. Best regards, Romain From romain.naour at smile.fr Wed May 1 21:25:11 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 23:25:11 +0200 Subject: [Buildroot] [git commit] configs/ti_am62x_sk_defconfig: reorder defconfig Message-ID: <20240501213000.7A432864F9@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=20a5c02235ae956ffa938968f0ee8ff39d887319 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master The patch doesn't introduce any functional changes but reorganizes the code to prevent the execution of the commands: make ti_am62x_sk_defconfig make savedefconfig from showing a change in the defconfig. Signed-off-by: Dario Binacchi Reviewed-by: Gero Schw??ricke Signed-off-by: Romain Naour --- configs/ti_am62x_sk_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/ti_am62x_sk_defconfig b/configs/ti_am62x_sk_defconfig index 5c7b97b3b0..4050168184 100644 --- a/configs/ti_am62x_sk_defconfig +++ b/configs/ti_am62x_sk_defconfig @@ -3,8 +3,8 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y BR2_GLOBAL_PATCH_DIR="board/ti/am62x-sk/patches" BR2_DOWNLOAD_FORCE_CHECK_HASHES=y BR2_ROOTFS_POST_BUILD_SCRIPT="board/ti/common/am6xx/post-build.sh" -BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS="-c ttyS2,115200n8 -d k3-am625-sk.dtb -l am62x-sk-buildroot -r /dev/mmcblk1p2 -x earlycon=ns16550a,mmio32,0x02800000" BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS="-c ttyS2,115200n8 -d k3-am625-sk.dtb -l am62x-sk-buildroot -r /dev/mmcblk1p2 -x earlycon=ns16550a,mmio32,0x02800000" BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS="-c board/ti/am62x-sk/genimage.cfg" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y From thomas.petazzoni at bootlin.com Wed May 1 21:31:27 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 23:31:27 +0200 Subject: [Buildroot] [PATCH 1/1] support/testing: fs: f2fs: bump test Kernel to 6.6.27 In-Reply-To: <20240415193522.7719-1-ju.o@free.fr> References: <20240415193522.7719-1-ju.o@free.fr> Message-ID: <20240501233127.78a845c8@windsurf> On Mon, 15 Apr 2024 21:35:22 +0200 Julien Olivain wrote: > Since the toolchain Bootlin update to 2023.11-1 [1], the arm Linux > kernel build is broken with binutils >= 2.41 with: > > arch/arm/mm/proc-v7.S: Assembler messages: > arch/arm/mm/proc-v7.S:640: Error: junk at end of line, first unrecognized character is '#' > > This commit fixes the issue by bumping the test Kernel version to the > latest LTS version 6.6.27. We bump to the 6.6.x series to refresh the > test, as the 4.19.x series is planned to be end-of-life soon, in > December 2024. > > Fixes: > https://gitlab.com/buildroot.org/buildroot/-/jobs/6623401447 > > [1] https://gitlab.com/buildroot.org/buildroot/-/commit/7e0e6e3b8618ab942f25b11ee72fbc5a4deefdf1 > > Signed-off-by: Julien Olivain > --- > support/testing/tests/fs/test_f2fs.py | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Applied to master after rebasing, and adjusting the commit message as the change is no longer fixing the build, it was already done by Romain Naour. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From yann.morin.1998 at free.fr Wed May 1 21:31:53 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 23:31:53 +0200 Subject: [Buildroot] [git commit] package/python-pillow: fix legal info Message-ID: <20240501213215.1204886505@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=b8a86f5a8fcf2930b17a165ead7274618b7aba75 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Commit dfaa34ddd3398f22718f7361d617d98d53b51630 forgot to update hash of LICENSE file: ERROR: LICENSE has wrong sha256 hash: ERROR: expected: e706384c6f299d1b6fa782ae657740b372b4bd7938a1a318bf94ac249114758a ERROR: got : cf234c27a3f275f5a050f4df3946f8855704226fe4e7ca8b33928cbcecbced37 LICENSE file has been updated to clean up authors and contributors: https://github.com/python-pillow/Pillow/commit/4197263dff19a79f13cd86f6cdc9a0ec6c06da92 Fixes: dfaa34ddd3398f22718f7361d617d98d53b51630 - http://autobuild.buildroot.org/results/5a35d83c73367e1b20534b1bc7f2f564cf653a38 Signed-off-by: Fabrice Fontaine Signed-off-by: Yann E. MORIN --- package/python-pillow/python-pillow.hash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/python-pillow/python-pillow.hash b/package/python-pillow/python-pillow.hash index 073b758dfe..352536a035 100644 --- a/package/python-pillow/python-pillow.hash +++ b/package/python-pillow/python-pillow.hash @@ -3,4 +3,4 @@ md5 6c21a12849ae42f93881f614d8f6f651 pillow-10.3.0.tar.gz sha256 9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d pillow-10.3.0.tar.gz # Locally computed sha256 checksums -sha256 e706384c6f299d1b6fa782ae657740b372b4bd7938a1a318bf94ac249114758a LICENSE +sha256 cf234c27a3f275f5a050f4df3946f8855704226fe4e7ca8b33928cbcecbced37 LICENSE From yann.morin.1998 at free.fr Wed May 1 21:31:54 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 23:31:54 +0200 Subject: [Buildroot] [git commit] DEVELOPERS: remove Sebastian Weyer Message-ID: <20240501213215.27B5186506@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=7b973daac3f24ffce0246c5bbf80541499d86189 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Sebastian email address at Smile is bouncing, so drop it from the DEVELOPERS file. Signed-off-by: Romain Naour Signed-off-by: Yann E. MORIN --- DEVELOPERS | 8 -------- 1 file changed, 8 deletions(-) diff --git a/DEVELOPERS b/DEVELOPERS index 11ffe17f92..5d198567d8 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2769,14 +2769,6 @@ F: support/misc/toolchainfile.cmake.in N: Sam Voss F: package/ripgrep/ -N: Sebastian Weyer -F: package/amlogic-boot-fip/ -F: package/nushell/ -F: package/rust-bindgen/ -F: package/spirv-headers/ -F: support/testing/tests/package/sample_nu.nu -F: support/testing/tests/package/test_nu.py - N: S??bastien Szymanski F: board/armadeus/ F: configs/armadeus* From yann.morin.1998 at free.fr Wed May 1 21:32:29 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 23:32:29 +0200 Subject: [Buildroot] [PATCH 1/1] package/python-pillow: fix legal info In-Reply-To: <20240501212627.17988-1-fontaine.fabrice@gmail.com> References: <20240501212627.17988-1-fontaine.fabrice@gmail.com> Message-ID: Fabrice, All, On 2024-05-01 23:26 +0200, Fabrice Fontaine spake thusly: > Commit dfaa34ddd3398f22718f7361d617d98d53b51630 forgot to update hash of > LICENSE file: > > ERROR: LICENSE has wrong sha256 hash: > ERROR: expected: e706384c6f299d1b6fa782ae657740b372b4bd7938a1a318bf94ac249114758a > ERROR: got : cf234c27a3f275f5a050f4df3946f8855704226fe4e7ca8b33928cbcecbced37 > > LICENSE file has been updated to clean up authors and contributors: > https://github.com/python-pillow/Pillow/commit/4197263dff19a79f13cd86f6cdc9a0ec6c06da92 > > Fixes: dfaa34ddd3398f22718f7361d617d98d53b51630 > - http://autobuild.buildroot.org/results/5a35d83c73367e1b20534b1bc7f2f564cf653a38 > > Signed-off-by: Fabrice Fontaine Applied to master, thanks. Regards, Yann E. MORIN. > --- > package/python-pillow/python-pillow.hash | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/package/python-pillow/python-pillow.hash b/package/python-pillow/python-pillow.hash > index 073b758dfe..352536a035 100644 > --- a/package/python-pillow/python-pillow.hash > +++ b/package/python-pillow/python-pillow.hash > @@ -3,4 +3,4 @@ md5 6c21a12849ae42f93881f614d8f6f651 pillow-10.3.0.tar.gz > sha256 9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d pillow-10.3.0.tar.gz > > # Locally computed sha256 checksums > -sha256 e706384c6f299d1b6fa782ae657740b372b4bd7938a1a318bf94ac249114758a LICENSE > +sha256 cf234c27a3f275f5a050f4df3946f8855704226fe4e7ca8b33928cbcecbced37 LICENSE > -- > 2.43.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From gael.portay at rtone.fr Wed May 1 21:32:34 2024 From: gael.portay at rtone.fr (=?utf-8?q?Ga=C3=ABl_PORTAY?=) Date: Wed, 01 May 2024 23:32:34 +0200 Subject: [Buildroot] [RESEND PATCH 1/1] board/raspberrypi_{3_qt5we, cm4io*}: autoprobe of bluetooth driver In-Reply-To: <20240427211939.520ab908@gmx.net> References: <20240427015517.413015-1-gael.portay@rtone.fr> <20240427211939.520ab908@gmx.net> Message-ID: Hello Peter, On Sat Apr 27, 2024 at 9:19 PM CEST, Peter Seiderer wrote: > Or remove the the krnbt parameter from all RPi defconfigs as the > default changed since linux kernel 6.1.x, see [2]... > Oh, so true. Now, I remember to have sent that patch before (or right after) the kernel was bump to 6.1; it was intended to get merged in the branch 2023.11 :/ And, I should have the change removing the krnbt dtparam somewhere... Do you make the change yourself? > Regards, > Peter > > [2] https://github.com/raspberrypi/linux/commit/ec08e93837efa2e75e5cab4d80427fdf7ea23da1 Regards, Ga?l From yann.morin.1998 at free.fr Wed May 1 21:32:51 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 23:32:51 +0200 Subject: [Buildroot] [PATCH] DEVELOPERS: remove Sebastian Weyer In-Reply-To: <20240501211300.1590881-1-romain.naour@smile.fr> References: <20240501211300.1590881-1-romain.naour@smile.fr> Message-ID: Romain, All, On 2024-05-01 23:12 +0200, Romain Naour spake thusly: > Sebastian email address at Smile is bouncing, so drop it > from the DEVELOPERS file. > > Signed-off-by: Romain Naour Applied to master, thanks. Regards, Yann E. MORIN. > --- > DEVELOPERS | 8 -------- > 1 file changed, 8 deletions(-) > > diff --git a/DEVELOPERS b/DEVELOPERS > index 11ffe17f92..5d198567d8 100644 > --- a/DEVELOPERS > +++ b/DEVELOPERS > @@ -2769,14 +2769,6 @@ F: support/misc/toolchainfile.cmake.in > N: Sam Voss > F: package/ripgrep/ > > -N: Sebastian Weyer > -F: package/amlogic-boot-fip/ > -F: package/nushell/ > -F: package/rust-bindgen/ > -F: package/spirv-headers/ > -F: support/testing/tests/package/sample_nu.nu > -F: support/testing/tests/package/test_nu.py > - > N: S?bastien Szymanski > F: board/armadeus/ > F: configs/armadeus* > -- > 2.44.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From thomas.petazzoni at bootlin.com Wed May 1 21:32:14 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 23:32:14 +0200 Subject: [Buildroot] [git commit] package/libarchive: bump to version 3.7.3 Message-ID: <20240501213325.CB68C86521@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=566eb38bdff666a11034e6543c42647d655e1e73 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Francois Perrad Signed-off-by: Thomas Petazzoni --- .../0002-autotools-do-not-add-iconv-for-Requires.private.patch | 2 +- package/libarchive/libarchive.hash | 2 +- package/libarchive/libarchive.mk | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/libarchive/0002-autotools-do-not-add-iconv-for-Requires.private.patch b/package/libarchive/0002-autotools-do-not-add-iconv-for-Requires.private.patch index 338dad46e0..3cbd304109 100644 --- a/package/libarchive/0002-autotools-do-not-add-iconv-for-Requires.private.patch +++ b/package/libarchive/0002-autotools-do-not-add-iconv-for-Requires.private.patch @@ -17,7 +17,7 @@ diff --git a/configure.ac b/configure.ac index 99bff20d1..f245d0c55 100644 --- a/configure.ac +++ b/configure.ac -@@ -378,7 +378,6 @@ if test "x$with_iconv" != "xno"; then +@@ -434,7 +434,6 @@ if test "x$with_iconv" != "xno"; then AC_CHECK_HEADERS([localcharset.h]) am_save_LIBS="$LIBS" LIBS="${LIBS} ${LIBICONV}" diff --git a/package/libarchive/libarchive.hash b/package/libarchive/libarchive.hash index 818113585e..ab6813686e 100644 --- a/package/libarchive/libarchive.hash +++ b/package/libarchive/libarchive.hash @@ -1,4 +1,4 @@ # From https://www.libarchive.de/downloads/sha256sums -sha256 04357661e6717b6941682cde02ad741ae4819c67a260593dfb2431861b251acb libarchive-3.7.2.tar.xz +sha256 63e7a7174638fc7d6b79b4c8b0ad954e0f4f45abe7239c1ecb200232aa9a43d2 libarchive-3.7.3.tar.xz # Locally computed: sha256 b2cdf763345de2de34cebf54394df3c61a105c3b71288603c251f2fa638200ba COPYING diff --git a/package/libarchive/libarchive.mk b/package/libarchive/libarchive.mk index 136f7a9c09..9c35856ff9 100644 --- a/package/libarchive/libarchive.mk +++ b/package/libarchive/libarchive.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBARCHIVE_VERSION = 3.7.2 +LIBARCHIVE_VERSION = 3.7.3 LIBARCHIVE_SOURCE = libarchive-$(LIBARCHIVE_VERSION).tar.xz LIBARCHIVE_SITE = https://www.libarchive.de/downloads LIBARCHIVE_INSTALL_STAGING = YES From thomas.petazzoni at bootlin.com Wed May 1 21:32:15 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 23:32:15 +0200 Subject: [Buildroot] [git commit] support/testing/tests/fs/test_f2fs.py: bump test k to 6.6.27 Message-ID: <20240501213325.D570486522@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=7d1aaddb2bd2f1a6636e93909fe55218e8bfd3ea branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master This commit bumps to the 6.6.x series to refresh the test, as the 4.19.x series is planned to be end-of-life soon, in December 2024. Signed-off-by: Julien Olivain Signed-off-by: Thomas Petazzoni --- support/testing/tests/fs/test_f2fs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/support/testing/tests/fs/test_f2fs.py b/support/testing/tests/fs/test_f2fs.py index 826077ac94..5918fe8ca8 100644 --- a/support/testing/tests/fs/test_f2fs.py +++ b/support/testing/tests/fs/test_f2fs.py @@ -20,7 +20,7 @@ class TestF2FS(infra.basetest.BRTest): # BR2_TARGET_ROOTFS_TAR is not set BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y - BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.310" + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.27" BR2_LINUX_KERNEL_USE_DEFCONFIG=y BR2_LINUX_KERNEL_DEFCONFIG="vexpress" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}" From thomas.petazzoni at bootlin.com Wed May 1 21:32:34 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 23:32:34 +0200 Subject: [Buildroot] [git commit] package/gnu-efi: enable on RISC-V 64-bit Message-ID: <20240501213325.DF96886525@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=1f7c58145497ed01d566e08734a62feef1696807 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master gnu-efi RISC-V 64bit support was introduced in commit [1], first included in version 3.0.14. This commit adds this architecture in _ARCH_SUPPORTS. [1] https://sourceforge.net/p/gnu-efi/code/ci/b95f138fa1550040e68ac3dd34cfce7d148d7984 Signed-off-by: Julien Olivain Signed-off-by: Thomas Petazzoni --- package/gnu-efi/Config.in | 1 + package/gnu-efi/gnu-efi.mk | 2 ++ 2 files changed, 3 insertions(+) diff --git a/package/gnu-efi/Config.in b/package/gnu-efi/Config.in index d456a23837..4f44cf9f64 100644 --- a/package/gnu-efi/Config.in +++ b/package/gnu-efi/Config.in @@ -1,6 +1,7 @@ config BR2_PACKAGE_GNU_EFI_ARCH_SUPPORTS bool default y if BR2_ARM_CPU_HAS_ARM + default y if BR2_RISCV_64 default y if BR2_aarch64 default y if BR2_aarch64_be default y if BR2_i386 diff --git a/package/gnu-efi/gnu-efi.mk b/package/gnu-efi/gnu-efi.mk index 96caaeb933..2eed4e40d2 100644 --- a/package/gnu-efi/gnu-efi.mk +++ b/package/gnu-efi/gnu-efi.mk @@ -24,6 +24,8 @@ else ifeq ($(BR2_arm)$(BR2_armeb),y) GNU_EFI_PLATFORM = arm else ifeq ($(BR2_aarch64)$(BR2_aarch64_be),y) GNU_EFI_PLATFORM = aarch64 +else ifeq ($(BR2_RISCV_64),y) +GNU_EFI_PLATFORM = riscv64 endif GNU_EFI_MAKE_OPTS = \ From thomas.petazzoni at bootlin.com Wed May 1 21:33:33 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 23:33:33 +0200 Subject: [Buildroot] [PATCH 1/1] package/gnu-efi: add BR2_RISCV_64 in _ARCH_SUPPORTS In-Reply-To: <20240415220237.333222-1-ju.o@free.fr> References: <20240415220237.333222-1-ju.o@free.fr> Message-ID: <20240501233333.7bf8f247@windsurf> On Tue, 16 Apr 2024 00:02:37 +0200 Julien Olivain wrote: > gnu-efi RISC-V 64bit support was introduced in commit [1], first > included in version 3.0.14. > > This commit adds this architecture in _ARCH_SUPPORTS. > > [1] https://sourceforge.net/p/gnu-efi/code/ci/b95f138fa1550040e68ac3dd34cfce7d148d7984 > > Signed-off-by: Julien Olivain > --- > package/gnu-efi/Config.in | 1 + > package/gnu-efi/gnu-efi.mk | 2 ++ > 2 files changed, 3 insertions(+) Applied to master after changing the commit title to "enable on RISC-V 64-bit". Indeed your title "add BR2_RISCV_64 in _ARCH_SUPPORTS" is how we do this, but really the aim of the commit is to make the package available on RISC-V 64-bit. Thanks! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Wed May 1 21:34:18 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 23:34:18 +0200 Subject: [Buildroot] [git commit] configs/mx6cubox: update U-Boot and kernel Message-ID: <20240501213429.8D62486527@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=00522a5022a11a05b21a9e3690c093e3aecb4753 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Update to U-Boot 2024.04 and kernel 6.6.27 versions. Signed-off-by: Fabio Estevam Signed-off-by: Thomas Petazzoni --- configs/mx6cubox_defconfig | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/configs/mx6cubox_defconfig b/configs/mx6cubox_defconfig index cbd9378064..46a1400d9f 100644 --- a/configs/mx6cubox_defconfig +++ b/configs/mx6cubox_defconfig @@ -6,8 +6,8 @@ BR2_ARM_ENABLE_VFP=y BR2_ARM_FPU_VFPV3=y # Toolchain -# Linux headers same as kernel, a 5.15 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y # System configuration BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" @@ -17,10 +17,10 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.71" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.27" BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-cubox-i imx6dl-cubox-i-emmc-som-v15 imx6dl-cubox-i-som-v15 imx6dl-hummingboard imx6dl-hummingboard-emmc-som-v15 imx6dl-hummingboard-som-v15 imx6q-cubox-i imx6q-cubox-i-emmc-som-v15 imx6q-cubox-i-som-v15 imx6q-hummingboard imx6q-hummingboard-emmc-som-v15 imx6q-hummingboard-som-v15" +BR2_LINUX_KERNEL_INTREE_DTS_NAME="nxp/imx/imx6dl-cubox-i nxp/imx/imx6dl-cubox-i-emmc-som-v15 nxp/imx/imx6dl-cubox-i-som-v15 nxp/imx/imx6dl-hummingboard nxp/imx/imx6dl-hummingboard-emmc-som-v15 nxp/imx/imx6dl-hummingboard-som-v15 nxp/imx/imx6q-cubox-i nxp/imx/imx6q-cubox-i-emmc-som-v15 nxp/imx/imx6q-cubox-i-som-v15 nxp/imx/imx6q-hummingboard nxp/imx/imx6q-hummingboard-emmc-som-v15 nxp/imx/imx6q-hummingboard-som-v15" BR2_LINUX_KERNEL_INSTALL_TARGET=y BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y @@ -32,7 +32,7 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.10" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="mx6cuboxi" BR2_TARGET_UBOOT_NEEDS_PYTHON3=y BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y From thomas.petazzoni at bootlin.com Wed May 1 21:34:29 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 23:34:29 +0200 Subject: [Buildroot] [PATCH] configs/mx6cubox: update U-Boot and kernel In-Reply-To: <20240416000105.95779-1-festevam@gmail.com> References: <20240416000105.95779-1-festevam@gmail.com> Message-ID: <20240501233429.055e5225@windsurf> On Mon, 15 Apr 2024 21:01:05 -0300 Fabio Estevam wrote: > Update to U-Boot 2024.04 and kernel 6.6.27 versions. > > Signed-off-by: Fabio Estevam > --- > configs/mx6cubox_defconfig | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From yann.morin.1998 at free.fr Wed May 1 21:35:15 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 23:35:15 +0200 Subject: [Buildroot] [git commit] utils/genrandconfig: remove Sourcery CodeBench Nios-II exclusion Message-ID: <20240501213539.329AD8652D@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=c6784ea0e17db4aa1505792b29587bef91f1d59d branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII has been removed by [1]. [1] 7fa0159a5055363d002089f0c451a84594732cf2 Cc: Giulio Benetti Signed-off-by: Romain Naour Signed-off-by: Yann E. MORIN --- utils/genrandconfig | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/utils/genrandconfig b/utils/genrandconfig index 5ebec415b5..df6bede158 100755 --- a/utils/genrandconfig +++ b/utils/genrandconfig @@ -294,18 +294,6 @@ def fixup_config(sysinfo, configfile): if 'BR2_PACKAGE_WESTON=y\n' in configlines and \ BR2_TOOLCHAIN_EXTERNAL_URL + 'mipsel-ctng-linux-uclibc.tar.xz"\n' in configlines: return False - # The cs nios2 2017.02 toolchain is affected by binutils PR19405 - if 'BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII=y\n' in configlines and \ - 'BR2_PACKAGE_BOOST=y\n' in configlines: - return False - # The cs nios2 2017.02 toolchain is affected by binutils PR19405 - if 'BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII=y\n' in configlines and \ - 'BR2_PACKAGE_QT5BASE_GUI=y\n' in configlines: - return False - # The cs nios2 2017.02 toolchain is affected by binutils PR19405 - if 'BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII=y\n' in configlines and \ - 'BR2_PACKAGE_FLANN=y\n' in configlines: - return False # No C library for internal toolchain if 'BR2_TOOLCHAIN_BUILDROOT_NONE=y' in configlines: return False From thomas.petazzoni at bootlin.com Wed May 1 21:35:53 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 1 May 2024 23:35:53 +0200 Subject: [Buildroot] [PATCH] package/catch2: bump to version 3.5.4 In-Reply-To: <20240415120820.465163-1-buildroot@heine.tech> References: <20240415120820.465163-1-buildroot@heine.tech> Message-ID: <20240501233553.3ee07ef3@windsurf> On Mon, 15 Apr 2024 14:08:19 +0200 Michael Nosthoff via buildroot wrote: > Signed-off-by: Michael Nosthoff > --- > package/catch2/catch2.hash | 2 +- > package/catch2/catch2.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From yann.morin.1998 at free.fr Wed May 1 21:39:12 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 23:39:12 +0200 Subject: [Buildroot] [git commit] package/libnetconf2: add libxcrypt optional dependency Message-ID: <20240501214237.D6DED8653A@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=4d57014449e6e5b32e5373aa2afd4fd8cd3a9883 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fix the following build failure raised since bump of glibc to version 2.39 in commit b5680f53d60acf8ff6010082f873438a39bd5d97: /home/buildroot/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/sparc64-buildroot-linux-gnu/12.3.0/../../../../sparc64-buildroot-linux-gnu/bin/ld: cannot find -lcrypt: No such file or directory Fixes: b5680f53d60acf8ff6010082f873438a39bd5d97 - http://autobuild.buildroot.org/results/c84e27815cc607ad78a1901cb2be591df2686ac7 Signed-off-by: Fabrice Fontaine Signed-off-by: Yann E. MORIN --- package/libnetconf2/Config.in | 1 + package/libnetconf2/libnetconf2.mk | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/package/libnetconf2/Config.in b/package/libnetconf2/Config.in index 7865f9e487..34934325fa 100644 --- a/package/libnetconf2/Config.in +++ b/package/libnetconf2/Config.in @@ -4,6 +4,7 @@ config BR2_PACKAGE_LIBNETCONF2 depends on BR2_TOOLCHAIN_HAS_THREADS depends on !BR2_STATIC_LIBS depends on BR2_USE_MMU + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC select BR2_PACKAGE_LIBYANG help libnetconf2 is a NETCONF library in C intended for building diff --git a/package/libnetconf2/libnetconf2.mk b/package/libnetconf2/libnetconf2.mk index e349c1bce4..88163926c0 100644 --- a/package/libnetconf2/libnetconf2.mk +++ b/package/libnetconf2/libnetconf2.mk @@ -30,6 +30,10 @@ else LIBNETCONF2_CONF_OPTS += -DENABLE_TLS=OFF endif +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +LIBNETCONF2_DEPENDENCIES += libxcrypt +endif + HOST_LIBNETCONF2_CONF_OPTS = \ -DENABLE_TESTS=OFF \ -DENABLE_VALGRIND_TESTS=OFF \ From yann.morin.1998 at free.fr Wed May 1 21:36:07 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 23:36:07 +0200 Subject: [Buildroot] [git commit] package/petitboot: add libxcrypt optional dependency Message-ID: <20240501214237.C937186539@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=20ddf2fe65e8ed29c661a949c5d535d2983fe561 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fix the following build failure raised since bump of glibc to version 2.39 in commit b5680f53d60acf8ff6010082f873438a39bd5d97: checking for crypt in -lcrypt... no configure: error: in `/home/arbab/src/buildroot/output/build/petitboot-1.15': configure: error: shadow/crypt libs required Signed-off-by: Reza Arbab Signed-off-by: Yann E. MORIN --- package/petitboot/Config.in | 1 + package/petitboot/petitboot.mk | 1 + 2 files changed, 2 insertions(+) diff --git a/package/petitboot/Config.in b/package/petitboot/Config.in index 533c7a9f29..66836f31ac 100644 --- a/package/petitboot/Config.in +++ b/package/petitboot/Config.in @@ -14,6 +14,7 @@ config BR2_PACKAGE_PETITBOOT # run-time dependencies select BR2_PACKAGE_KEXEC if !BR2_PACKAGE_KEXEC_LITE_ARCH_SUPPORTS select BR2_PACKAGE_KEXEC_LITE if BR2_PACKAGE_KEXEC_LITE_ARCH_SUPPORTS && !BR2_PACKAGE_KEXEC + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC select BR2_PACKAGE_NVME if ( BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le ) select BR2_PACKAGE_POWERPC_UTILS if ( BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le ) help diff --git a/package/petitboot/petitboot.mk b/package/petitboot/petitboot.mk index cd7631fa5c..2eb6461144 100644 --- a/package/petitboot/petitboot.mk +++ b/package/petitboot/petitboot.mk @@ -14,6 +14,7 @@ PETITBOOT_DEPENDENCIES = \ host-bison \ host-flex \ lvm2 \ + $(if $(BR2_PACKAGE_LIBXCRYPT),libxcrypt) \ $(TARGET_NLS_DEPENDENCIES) PETITBOOT_LICENSE = GPL-2.0 PETITBOOT_LICENSE_FILES = COPYING From yann.morin.1998 at free.fr Wed May 1 21:44:10 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 23:44:10 +0200 Subject: [Buildroot] [PATCH 1/1] package/libnetconf2: add libxcrypt optional dependency In-Reply-To: <20240408192953.194898-1-fontaine.fabrice@gmail.com> References: <20240408192953.194898-1-fontaine.fabrice@gmail.com> Message-ID: fabrice, All, On 2024-04-08 21:29 +0200, Fabrice Fontaine spake thusly: > Fix the following build failure raised since bump of glibc to version > 2.39 in commit b5680f53d60acf8ff6010082f873438a39bd5d97: > > /home/buildroot/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/sparc64-buildroot-linux-gnu/12.3.0/../../../../sparc64-buildroot-linux-gnu/bin/ld: cannot find -lcrypt: No such file or directory > > Fixes: b5680f53d60acf8ff6010082f873438a39bd5d97 > - http://autobuild.buildroot.org/results/c84e27815cc607ad78a1901cb2be591df2686ac7 > > Signed-off-by: Fabrice Fontaine Applied to master, thanks. Regards, Yann E. MORIN. > --- > package/libnetconf2/Config.in | 1 + > package/libnetconf2/libnetconf2.mk | 4 ++++ > 2 files changed, 5 insertions(+) > > diff --git a/package/libnetconf2/Config.in b/package/libnetconf2/Config.in > index 7865f9e487..34934325fa 100644 > --- a/package/libnetconf2/Config.in > +++ b/package/libnetconf2/Config.in > @@ -4,6 +4,7 @@ config BR2_PACKAGE_LIBNETCONF2 > depends on BR2_TOOLCHAIN_HAS_THREADS > depends on !BR2_STATIC_LIBS > depends on BR2_USE_MMU > + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC > select BR2_PACKAGE_LIBYANG > help > libnetconf2 is a NETCONF library in C intended for building > diff --git a/package/libnetconf2/libnetconf2.mk b/package/libnetconf2/libnetconf2.mk > index e349c1bce4..88163926c0 100644 > --- a/package/libnetconf2/libnetconf2.mk > +++ b/package/libnetconf2/libnetconf2.mk > @@ -30,6 +30,10 @@ else > LIBNETCONF2_CONF_OPTS += -DENABLE_TLS=OFF > endif > > +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) > +LIBNETCONF2_DEPENDENCIES += libxcrypt > +endif > + > HOST_LIBNETCONF2_CONF_OPTS = \ > -DENABLE_TESTS=OFF \ > -DENABLE_VALGRIND_TESTS=OFF \ > -- > 2.43.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Wed May 1 21:44:40 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Wed, 1 May 2024 23:44:40 +0200 Subject: [Buildroot] [PATCH] package/petitboot: add libxcrypt optional dependency In-Reply-To: <20240416144818.681220-1-arbab@linux.ibm.com> References: <20240416144818.681220-1-arbab@linux.ibm.com> Message-ID: Reza, All, On 2024-04-16 09:48 -0500, Reza Arbab spake thusly: > Fix the following build failure raised since bump of glibc to version > 2.39 in commit b5680f53d60acf8ff6010082f873438a39bd5d97: > > checking for crypt in -lcrypt... no > configure: error: in `/home/arbab/src/buildroot/output/build/petitboot-1.15': > configure: error: shadow/crypt libs required > > Signed-off-by: Reza Arbab Applied to master, thanks. Regards, Yann E. MORIN. > --- > package/petitboot/Config.in | 1 + > package/petitboot/petitboot.mk | 1 + > 2 files changed, 2 insertions(+) > > diff --git a/package/petitboot/Config.in b/package/petitboot/Config.in > index 533c7a9f2980..66836f31acd8 100644 > --- a/package/petitboot/Config.in > +++ b/package/petitboot/Config.in > @@ -14,6 +14,7 @@ config BR2_PACKAGE_PETITBOOT > # run-time dependencies > select BR2_PACKAGE_KEXEC if !BR2_PACKAGE_KEXEC_LITE_ARCH_SUPPORTS > select BR2_PACKAGE_KEXEC_LITE if BR2_PACKAGE_KEXEC_LITE_ARCH_SUPPORTS && !BR2_PACKAGE_KEXEC > + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC > select BR2_PACKAGE_NVME if ( BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le ) > select BR2_PACKAGE_POWERPC_UTILS if ( BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le ) > help > diff --git a/package/petitboot/petitboot.mk b/package/petitboot/petitboot.mk > index cd7631fa5cae..2eb6461144cd 100644 > --- a/package/petitboot/petitboot.mk > +++ b/package/petitboot/petitboot.mk > @@ -14,6 +14,7 @@ PETITBOOT_DEPENDENCIES = \ > host-bison \ > host-flex \ > lvm2 \ > + $(if $(BR2_PACKAGE_LIBXCRYPT),libxcrypt) \ > $(TARGET_NLS_DEPENDENCIES) > PETITBOOT_LICENSE = GPL-2.0 > PETITBOOT_LICENSE_FILES = COPYING > -- > 2.39.3 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From romain.naour at smile.fr Wed May 1 21:50:26 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 23:50:26 +0200 Subject: [Buildroot] [git commit] ti-k3-r5-loader: support devicetree customization Message-ID: <20240501215206.4C41586542@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=e4981d6756c711e2034072247912bc85d3edae02 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master This is duplicated from the U-Boot makefile & Kconfig. Similarly to U-Boot custom boards sometimes need to adjust the U-Boot devicetree. For example, the AM64x SDRAM controller supports inline ECC which needs to be enabled in the R5 loader devicetree. Please note that some versions of U-Boot have broken external devicetree support and may require manual patching to build. See commit [1] in the U-Boot tree. [1] https://source.denx.de/u-boot/u-boot/-/commit/3609e1dc5f4d4c238dcd23e045ba6223310feffa Signed-off-by: Patrick Oppenlander Signed-off-by: Gero Schw??ricke [Romain: add gitlab URL] Signed-off-by: Romain Naour --- boot/ti-k3-r5-loader/Config.in | 10 ++++++++++ boot/ti-k3-r5-loader/ti-k3-r5-loader.mk | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/boot/ti-k3-r5-loader/Config.in b/boot/ti-k3-r5-loader/Config.in index 6d1adbeac3..df885cc2af 100644 --- a/boot/ti-k3-r5-loader/Config.in +++ b/boot/ti-k3-r5-loader/Config.in @@ -95,6 +95,16 @@ config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_CONFIG_FILE help Path to the TI K3 R5 Loader configuration file. +config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_DTS_PATH + string "Device Tree Source file paths" + help + Space-separated list of paths to device tree source files + that will be copied to arch/arm/dts/ before starting the + build. + + To use this device tree source file, the U-Boot configuration + file must refer to it. + config BR2_TARGET_TI_K3_R5_LOADER_TIBOOT3_BIN string "tiboot3.bin binary name" default "tiboot3.bin" diff --git a/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk b/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk index 891783e40f..98a6d473f1 100644 --- a/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk +++ b/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk @@ -88,7 +88,12 @@ define TI_K3_R5_LOADER_INSTALL_SWSFW_ITB fi endef +TI_K3_R5_LOADER_CUSTOM_DTS_PATH = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_DTS_PATH)) + define TI_K3_R5_LOADER_BUILD_CMDS + $(if $(TI_K3_R5_LOADER_CUSTOM_DTS_PATH), + cp -f $(TI_K3_R5_LOADER_CUSTOM_DTS_PATH) $(@D)/arch/arm/dts/ + ) $(TARGET_CONFIGURE_OPTS) $(TI_K3_R5_LOADER_MAKE) -C $(@D) $(TI_K3_R5_LOADER_MAKE_OPTS) endef From romain.naour at smile.fr Wed May 1 21:53:55 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 1 May 2024 23:53:55 +0200 Subject: [Buildroot] [PATCH v2] ti-k3-r5-loader: support devicetree customization In-Reply-To: <20240430133754.1288162-1-gero.schwaericke@grandcentrix.net> References: <20230907003002.474334-1-patrick.oppenlander@gmail.com> <20240430133754.1288162-1-gero.schwaericke@grandcentrix.net> Message-ID: <7b20fc6a-04be-449f-b304-23505c32d4d2@smile.fr> Hello Gero, Le 30/04/2024 ? 15:37, Gero Schw?ricke via buildroot a ?crit?: > This is duplicated from the U-Boot makefile & Kconfig. > > Similarly to U-Boot custom boards sometimes need to adjust the U-Boot > devicetree. For example, the AM64x SDRAM controller supports inline ECC > which needs to be enabled in the R5 loader devicetree. > > Please note that some versions of U-Boot have broken external devicetree > support and may require manual patching to build. See commit > 3609e1dc5f4d4c238dcd23e045ba6223310feffa in the U-Boot tree. I added the URL to gitlab instead: https://source.denx.de/u-boot/u-boot/-/commit/3609e1dc5f4d4c238dcd23e045ba6223310feffa Applied to master, thanks. Best regards, Romain > > Signed-off-by: Patrick Oppenlander > Signed-off-by: Gero Schw?ricke > --- > v1 -> v2: > - make it apply on current master > - move the config option into if BR2_TARGET_TI_K3_R5_LOADER > - fix help string mentioning ARCH though it's fixed to arm in .mk > --- > boot/ti-k3-r5-loader/Config.in | 10 ++++++++++ > boot/ti-k3-r5-loader/ti-k3-r5-loader.mk | 5 +++++ > 2 files changed, 15 insertions(+) > > diff --git a/boot/ti-k3-r5-loader/Config.in b/boot/ti-k3-r5-loader/Config.in > index 6d1adbeac3..df885cc2af 100644 > --- a/boot/ti-k3-r5-loader/Config.in > +++ b/boot/ti-k3-r5-loader/Config.in > @@ -95,6 +95,16 @@ config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_CONFIG_FILE > help > Path to the TI K3 R5 Loader configuration file. > > +config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_DTS_PATH > + string "Device Tree Source file paths" > + help > + Space-separated list of paths to device tree source files > + that will be copied to arch/arm/dts/ before starting the > + build. > + > + To use this device tree source file, the U-Boot configuration > + file must refer to it. > + > config BR2_TARGET_TI_K3_R5_LOADER_TIBOOT3_BIN > string "tiboot3.bin binary name" > default "tiboot3.bin" > diff --git a/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk b/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk > index 891783e40f..98a6d473f1 100644 > --- a/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk > +++ b/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk > @@ -88,7 +88,12 @@ define TI_K3_R5_LOADER_INSTALL_SWSFW_ITB > fi > endef > > +TI_K3_R5_LOADER_CUSTOM_DTS_PATH = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_DTS_PATH)) > + > define TI_K3_R5_LOADER_BUILD_CMDS > + $(if $(TI_K3_R5_LOADER_CUSTOM_DTS_PATH), > + cp -f $(TI_K3_R5_LOADER_CUSTOM_DTS_PATH) $(@D)/arch/arm/dts/ > + ) > $(TARGET_CONFIGURE_OPTS) $(TI_K3_R5_LOADER_MAKE) -C $(@D) $(TI_K3_R5_LOADER_MAKE_OPTS) > endef > From romain.naour at smile.fr Wed May 1 22:01:06 2024 From: romain.naour at smile.fr (Romain Naour) Date: Thu, 2 May 2024 00:01:06 +0200 Subject: [Buildroot] [git commit] configs/visionfive2_defconfig: add hashes for linux/opensbi/u-boot Message-ID: <20240501220202.0E82186550@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=c94df402d52ef656dbe957c3ac20f656f2fb9505 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Enable BR2_DOWNLOAD_FORCE_CHECK_HASHES and set the patch directory. Signed-off-by: Lukasz Tekieli [Romain: remove .checkpackageignore entry] Signed-off-by: Romain Naour --- .checkpackageignore | 1 - board/visionfive2/patches/linux-headers/linux-headers.hash | 1 + board/visionfive2/patches/linux/linux.hash | 2 ++ board/visionfive2/patches/opensbi/opensbi.hash | 2 ++ board/visionfive2/patches/uboot/uboot.hash | 2 ++ configs/visionfive2_defconfig | 2 ++ 6 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.checkpackageignore b/.checkpackageignore index 0b169ea2f1..db23450f03 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -390,7 +390,6 @@ configs/ts5500_defconfig lib_defconfig.ForceCheckHash configs/ts7680_defconfig lib_defconfig.ForceCheckHash configs/uevm5432_defconfig lib_defconfig.ForceCheckHash configs/versal_vck190_defconfig lib_defconfig.ForceCheckHash -configs/visionfive2_defconfig lib_defconfig.ForceCheckHash configs/visionfive_defconfig lib_defconfig.ForceCheckHash configs/wandboard_defconfig lib_defconfig.ForceCheckHash configs/warp7_defconfig lib_defconfig.ForceCheckHash diff --git a/board/visionfive2/patches/linux-headers/linux-headers.hash b/board/visionfive2/patches/linux-headers/linux-headers.hash new file mode 120000 index 0000000000..5808d92afe --- /dev/null +++ b/board/visionfive2/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/visionfive2/patches/linux/linux.hash b/board/visionfive2/patches/linux/linux.hash new file mode 100644 index 0000000000..ccad8068dd --- /dev/null +++ b/board/visionfive2/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9ac322d85bcf98a04667d929f5c2666b15bd58c6c2d68dd512c72acbced07d04 linux-6.8.2.tar.xz diff --git a/board/visionfive2/patches/opensbi/opensbi.hash b/board/visionfive2/patches/opensbi/opensbi.hash new file mode 100644 index 0000000000..bc4058abe6 --- /dev/null +++ b/board/visionfive2/patches/opensbi/opensbi.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 319b62a4186fbce9b81a0c5f0ec9f003a10c808397a72138bc9745d9b87b1eb1 opensbi-1.4.tar.gz diff --git a/board/visionfive2/patches/uboot/uboot.hash b/board/visionfive2/patches/uboot/uboot.hash new file mode 100644 index 0000000000..97a2b4eaf9 --- /dev/null +++ b/board/visionfive2/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 diff --git a/configs/visionfive2_defconfig b/configs/visionfive2_defconfig index 69c44dfbdd..bb8ab082af 100644 --- a/configs/visionfive2_defconfig +++ b/configs/visionfive2_defconfig @@ -1,4 +1,6 @@ BR2_riscv=y +BR2_GLOBAL_PATCH_DIR="board/visionfive2/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y BR2_SYSTEM_DHCP="eth0" BR2_ROOTFS_OVERLAY="board/visionfive2/overlay" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/visionfive2/post-image.sh" From romain.naour at smile.fr Wed May 1 22:03:14 2024 From: romain.naour at smile.fr (Romain Naour) Date: Thu, 2 May 2024 00:03:14 +0200 Subject: [Buildroot] [PATCH 1/1] configs/visionfive2_defconfig: add hashes for linux/opensbi/u-boot In-Reply-To: <20240501190441.496683-1-tekieli.lukasz@gmail.com> References: <20240501190441.496683-1-tekieli.lukasz@gmail.com> Message-ID: Hello Lukasz, Le 01/05/2024 ? 21:04, Lukasz Tekieli a ?crit?: > Enable BR2_DOWNLOAD_FORCE_CHECK_HASHES and set the patch directory. > > Signed-off-by: Lukasz Tekieli Applied to master, thanks. Best regards, Romain > --- > board/visionfive2/patches/linux-headers/linux-headers.hash | 1 + > board/visionfive2/patches/linux/linux.hash | 2 ++ > board/visionfive2/patches/opensbi/opensbi.hash | 2 ++ > board/visionfive2/patches/uboot/uboot.hash | 2 ++ > configs/visionfive2_defconfig | 2 ++ > 5 files changed, 9 insertions(+) > create mode 120000 board/visionfive2/patches/linux-headers/linux-headers.hash > create mode 100644 board/visionfive2/patches/linux/linux.hash > create mode 100644 board/visionfive2/patches/opensbi/opensbi.hash > create mode 100644 board/visionfive2/patches/uboot/uboot.hash > > diff --git a/board/visionfive2/patches/linux-headers/linux-headers.hash b/board/visionfive2/patches/linux-headers/linux-headers.hash > new file mode 120000 > index 0000000000..5808d92afe > --- /dev/null > +++ b/board/visionfive2/patches/linux-headers/linux-headers.hash > @@ -0,0 +1 @@ > +../linux/linux.hash > \ No newline at end of file > diff --git a/board/visionfive2/patches/linux/linux.hash b/board/visionfive2/patches/linux/linux.hash > new file mode 100644 > index 0000000000..ccad8068dd > --- /dev/null > +++ b/board/visionfive2/patches/linux/linux.hash > @@ -0,0 +1,2 @@ > +# Locally calculated > +sha256 9ac322d85bcf98a04667d929f5c2666b15bd58c6c2d68dd512c72acbced07d04 linux-6.8.2.tar.xz > diff --git a/board/visionfive2/patches/opensbi/opensbi.hash b/board/visionfive2/patches/opensbi/opensbi.hash > new file mode 100644 > index 0000000000..bc4058abe6 > --- /dev/null > +++ b/board/visionfive2/patches/opensbi/opensbi.hash > @@ -0,0 +1,2 @@ > +# Locally calculated > +sha256 319b62a4186fbce9b81a0c5f0ec9f003a10c808397a72138bc9745d9b87b1eb1 opensbi-1.4.tar.gz > diff --git a/board/visionfive2/patches/uboot/uboot.hash b/board/visionfive2/patches/uboot/uboot.hash > new file mode 100644 > index 0000000000..97a2b4eaf9 > --- /dev/null > +++ b/board/visionfive2/patches/uboot/uboot.hash > @@ -0,0 +1,2 @@ > +# Locally calculated > +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 > diff --git a/configs/visionfive2_defconfig b/configs/visionfive2_defconfig > index 69c44dfbdd..bb8ab082af 100644 > --- a/configs/visionfive2_defconfig > +++ b/configs/visionfive2_defconfig > @@ -1,4 +1,6 @@ > BR2_riscv=y > +BR2_GLOBAL_PATCH_DIR="board/visionfive2/patches" > +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y > BR2_SYSTEM_DHCP="eth0" > BR2_ROOTFS_OVERLAY="board/visionfive2/overlay" > BR2_ROOTFS_POST_IMAGE_SCRIPT="board/visionfive2/post-image.sh" From romain.naour at smile.fr Wed May 1 22:15:47 2024 From: romain.naour at smile.fr (Romain Naour) Date: Thu, 2 May 2024 00:15:47 +0200 Subject: [Buildroot] [git commit] package/cmake: add BR2_HOST_CMAKE_AT_LEAST_3_28 Message-ID: <20240501221627.18B5986558@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=81d7103a10b6837bfb22c314c90b46adda78bf7d branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Buildroot commit 38d07349daece6393800619ecb3ef98299711819 forgot to add the corresponding BR2_HOST_CMAKE_AT_LEAST_X_Y option. Signed-off-by: Bernd Kuhls Signed-off-by: Romain Naour --- package/cmake/Config.in.host | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/package/cmake/Config.in.host b/package/cmake/Config.in.host index 0935e9a564..c38bb9daaa 100644 --- a/package/cmake/Config.in.host +++ b/package/cmake/Config.in.host @@ -47,10 +47,15 @@ config BR2_HOST_CMAKE_AT_LEAST_3_27 bool select BR2_HOST_CMAKE_AT_LEAST_3_26 +config BR2_HOST_CMAKE_AT_LEAST_3_28 + bool + select BR2_HOST_CMAKE_AT_LEAST_3_27 + # This order guarantees that the highest version is set, as kconfig # stops affecting a value on the first matching default. config BR2_HOST_CMAKE_AT_LEAST string + default "3.28" if BR2_HOST_CMAKE_AT_LEAST_3_28 default "3.27" if BR2_HOST_CMAKE_AT_LEAST_3_27 default "3.26" if BR2_HOST_CMAKE_AT_LEAST_3_26 default "3.25" if BR2_HOST_CMAKE_AT_LEAST_3_25 From romain.naour at smile.fr Wed May 1 22:17:08 2024 From: romain.naour at smile.fr (Romain Naour) Date: Thu, 2 May 2024 00:17:08 +0200 Subject: [Buildroot] [PATCH 1/1] package/cmake: add BR2_HOST_CMAKE_AT_LEAST_3_28 In-Reply-To: <20240413064203.53781-1-bernd@kuhls.net> References: <20240413064203.53781-1-bernd@kuhls.net> Message-ID: <680ac1d8-d61b-4f82-9b04-a24fb2d3e782@smile.fr> Hello Bernd, Le 13/04/2024 ? 08:42, Bernd Kuhls a ?crit?: > Buildroot commit 38d07349daece6393800619ecb3ef98299711819 forgot to > add the corresponding BR2_HOST_CMAKE_AT_LEAST_X_Y option. > > Signed-off-by: Bernd Kuhls > --- > package/cmake/Config.in.host | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/package/cmake/Config.in.host b/package/cmake/Config.in.host > index 0935e9a564..c38bb9daaa 100644 > --- a/package/cmake/Config.in.host > +++ b/package/cmake/Config.in.host > @@ -47,10 +47,15 @@ config BR2_HOST_CMAKE_AT_LEAST_3_27 > bool > select BR2_HOST_CMAKE_AT_LEAST_3_26 > > +config BR2_HOST_CMAKE_AT_LEAST_3_28 > + bool > + select BR2_HOST_CMAKE_AT_LEAST_3_27 > + > # This order guarantees that the highest version is set, as kconfig > # stops affecting a value on the first matching default. > config BR2_HOST_CMAKE_AT_LEAST > string > + default "3.28" if BR2_HOST_CMAKE_AT_LEAST_3_28 > default "3.27" if BR2_HOST_CMAKE_AT_LEAST_3_27 > default "3.26" if BR2_HOST_CMAKE_AT_LEAST_3_26 > default "3.25" if BR2_HOST_CMAKE_AT_LEAST_3_25 Applied to master, thanks. Best regards, Romain From wilfred.opensource at gmail.com Thu May 2 00:27:16 2024 From: wilfred.opensource at gmail.com (Wilfred Mallawa) Date: Thu, 02 May 2024 10:27:16 +1000 Subject: [Buildroot] [PATCH v2 1/1] package/spdm-utils: new package In-Reply-To: <20240402035140.71770-2-wilfred.mallawa@wdc.com> References: <20240402035140.71770-2-wilfred.mallawa@wdc.com> Message-ID: ping! On Tue, 2024-04-02 at 13:51 +1000, Wilfred Mallawa via buildroot wrote: > Signed-off-by: Alistair Francis > Signed-off-by: Wilfred Mallawa > --- > Changes in V2:?????????????????????????????????????????????????? > ??????? - Added required python3 dependencies > ??????? - Now depends on `udev` instead of selecting `eudev` > ??????? - Now depends on `libspdm` > ??????? - Hook define moved below the hook, stylistically similar to > ??????????? other packages > ??????? - Removed cargo package re-vendoring as we aren't patching > ??????? - Changed certificate/manifest installation path to be system > wide. > > ?package/Config.in????????????????? |? 1 + > ?package/spdm-utils/Config.in?????? | 24 ++++++++++++++++++++ > ?package/spdm-utils/spdm-utils.hash |? 2 ++ > ?package/spdm-utils/spdm-utils.mk?? | 36 > ++++++++++++++++++++++++++++++ > ?4 files changed, 63 insertions(+) > ?create mode 100644 package/spdm-utils/Config.in > ?create mode 100644 package/spdm-utils/spdm-utils.hash > ?create mode 100644 package/spdm-utils/spdm-utils.mk > > diff --git a/package/Config.in b/package/Config.in > index 410fe0f493..9572a884e7 100644 > --- a/package/Config.in > +++ b/package/Config.in > @@ -2698,6 +2698,7 @@ comment "Utilities" > ? source "package/screen/Config.in" > ? source "package/screenfetch/Config.in" > ? source "package/sexpect/Config.in" > + source "package/spdm-utils/Config.in" > ? source "package/sudo/Config.in" > ? source "package/terminology/Config.in" > ? source "package/time/Config.in" > diff --git a/package/spdm-utils/Config.in b/package/spdm- > utils/Config.in > new file mode 100644 > index 0000000000..b96365451f > --- /dev/null > +++ b/package/spdm-utils/Config.in > @@ -0,0 +1,24 @@ > +config BR2_PACKAGE_SPDM_UTILS > + bool "spdm-utils" > + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS > + depends on BR2_TOOLCHAIN_HAS_THREADS # python3 > + depends on BR2_USE_WCHAR # eudev > + depends on !BR2_STATIC_LIBS > + depends on BR2_USE_MMU # eudev > + depends on !BR2_STATIC_LIBS? # python3 > + depends on BR2_USE_MMU? # eudev, python3 > + depends on BR2_PACKAGE_HAS_UDEV > + depends on BR2_PACKAGE_LIBSPDM > + select BR2_PACKAGE_HOST_RUSTC > + select BR2_PACKAGE_OPENSSL > + select BR2_PACKAGE_PCIUTILS > + select BR2_PACKAGE_EUDEV > + select BR2_PACKAGE_PYTHON3 > + help > + ? SPDM-Utils is a Linux application designed to support, > + ? test and develop SPDM requesters and responders. > + ? SPDM-Utils uses libspdm as the backend to perform SPDM > + ? communication. SPDM-Utils currently supports the > + ? PCIe Data Object Exchange (DOE) Capability. > + > + ? https://github.com/westerndigitalcorporation/spdm-utils > diff --git a/package/spdm-utils/spdm-utils.hash b/package/spdm- > utils/spdm-utils.hash > new file mode 100644 > index 0000000000..aaa243315e > --- /dev/null > +++ b/package/spdm-utils/spdm-utils.hash > @@ -0,0 +1,2 @@ > +# Locally calculated > +sha256? > 3f06f087220b126262a2becf68c9e06a59d8d613816f82a168c81093de087d1a? > spdm-utils-0.3.0.tar.gz > diff --git a/package/spdm-utils/spdm-utils.mk b/package/spdm- > utils/spdm-utils.mk > new file mode 100644 > index 0000000000..4176f61871 > --- /dev/null > +++ b/package/spdm-utils/spdm-utils.mk > @@ -0,0 +1,36 @@ > +#################################################################### > ############ > +# > +# spdm-utils > +# > +#################################################################### > ############ > + > +SPDM_UTILS_VERSION = 0.3.0 > +SPDM_UTILS_SITE = $(call github,westerndigitalcorporation,spdm- > utils,v$(SPDM_UTILS_VERSION)) > +SPDM_UTILS_LICENSE = Apache-2.0 or MIT > +SPDM_UTILS_DEPENDENCIES += pciutils libspdm openssl udev > + > +# Note that we also copy `setup_certs.sh` and `generate_certs.sh`. > +# `setup_certs.sh` shall be used by a responder to regenerate it's > mutable > +# certificate chain. `generate_certs.sh` can be used to generate a > new > +# certificate chain, which maybe useful in testing and development. > +define SPDM_UTILS_INSTALL_CERTS > + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/local/spdm_certs > + cp -r $(@D)/certs/generate_certs.sh > $(TARGET_DIR)/usr/local/spdm_certs > + cp -r $(@D)/certs/openssl.cnf > $(TARGET_DIR)/usr/local/spdm_certs > + cp -r $(@D)/certs/setup_certs.sh > $(TARGET_DIR)/usr/local/spdm_certs > + > + $(INSTALL) -d -m 0755 > $(TARGET_DIR)/usr/local/spdm_certs/slot0 > + cp $(@D)/certs/slot0/immutable.der > $(TARGET_DIR)/usr/local/spdm_certs/slot0 > + cp $(@D)/certs/slot0/device.cert.der > $(TARGET_DIR)/usr/local/spdm_certs/slot0 > + cp $(@D)/certs/slot0/device.der > $(TARGET_DIR)/usr/local/spdm_certs/slot0 > + cp $(@D)/certs/slot0/device.key > $(TARGET_DIR)/usr/local/spdm_certs/slot0 > + cp $(@D)/certs/slot0/param.pem > $(TARGET_DIR)/usr/local/spdm_certs/slot0 > + cp $(@D)/certs/slot0/bundle_responder.certchain.der > $(TARGET_DIR)/usr/local/spdm_certs/slot0 > + > + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/local/spdm_manifest/ > + cp $(@D)/manifest/manifest.out.cbor > $(TARGET_DIR)/usr/local/spdm_manifest/ > +endef > + > +SPDM_UTILS_POST_INSTALL_TARGET_HOOKS += SPDM_UTILS_INSTALL_CERTS > + > +$(eval $(cargo-package)) From thomas.petazzoni at bootlin.com Thu May 2 04:01:17 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 02 May 2024 04:01:17 -0000 Subject: [Buildroot] [autobuild.buildroot.net] Daily results for 2024-05-01 Message-ID: Hello, Autobuild statistics for 2024-05-01 =================================== branch | OK | NOK | TIM | TOT | 2024.02.x | 5 | 2 | 0 | 7 | master | 20 | 30 | 1 | 51 | Classification of failures by reason for master ----------------------------------------------- unknown | 4 host-heimdal-f4faaeaba371ff... | 2 libressl-3.8.4 | 2 ncmpc-0.49 | 2 python-remi-2022.7.27 | 2 apcupsd-3.14.14 | 1 docker-cli-26.0.2 | 1 fcft-3.1.6 | 1 gnupg2-2.4.5 | 1 gobject-introspection | 1 gobject-introspection-1.76.1 | 1 gst1-plugins-base-1.22.9 | 1 libcamera-apps-1.2.1 | 1 libffi-3.4.6 | 1 libglib2-2.76.1 | 1 linux-6.8.6 | 1 mdadm-4.3 | 1 package/python-pillow/pytho... | 1 pppd-2.5.0 | 1 python-grpcio-1.60.0 | 1 python-numpy-1.25.0 | 1 python-unittest-xml-reporti... | 1 rtty-8.1.0 | 1 util-linux-2.39.3 | 1 Detail of failures for master ----------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- s390x | apcupsd-3.14.14 | NOK | http://autobuild.buildroot.net/results/840c604aa397a17c02d13d4da8d62dd2c3d0a7f3 | riscv64 | docker-cli-26.0.2 | NOK | http://autobuild.buildroot.net/results/a9810f6955c0ba1ea88dfac9d24f11ad87f9d15c | aarch64 | fcft-3.1.6 | NOK | http://autobuild.buildroot.net/results/250d49380776cb4e375697950da317a72bc0702f | mips | gnupg2-2.4.5 | NOK | http://autobuild.buildroot.net/results/c0e9d215885d72da15e4aea7cfe745e884a4eedb | microblazeel | gobject-introspection | TIM | http://autobuild.buildroot.net/results/4e9c73235235325d95195a58818829706ae2ff0a | or1k | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/6c22e40a7894535ea5a7ec1968b347281ef70099 | ORPH sparc | gst1-plugins-base-1.22.9 | NOK | http://autobuild.buildroot.net/results/904f13e64b0cc55281b2494a7358a7e024f84cfb | ORPH mipsel | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/c037a3cd55364373f04b7ab04c3811a138601543 | ORPH mipsel | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/8651ea1a2d4227c578f0bbdc29c62dd406e18850 | ORPH riscv32 | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/b2b5f248147b83235a239e4a98491534f2630e40 | arceb | libffi-3.4.6 | NOK | http://autobuild.buildroot.net/results/cdcb74b5dd38cddd3d572d7896941ea941e1bdbb | arc | libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/4b272a00a51fed049de3ca230c1d8eccad0f0f95 | sh4a | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/4af728083a74e05ec212fe7b0e9c5536888af54f | ORPH powerpc64le | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/85469717aaf9a392b6d01351c946cd9f4feb5ffa | ORPH mips64el | linux-6.8.6 | NOK | http://autobuild.buildroot.net/results/6e7489859056e2c463a6fdce922779a54b9545bc | ORPH sparc | mdadm-4.3 | NOK | http://autobuild.buildroot.net/results/1a9dfa8284c7d40600e627e199b790137e0e8b69 | ORPH sparc64 | ncmpc-0.49 | NOK | http://autobuild.buildroot.net/results/8ced1eaadf2f0791d4a41534ea7d422dd129f5fc | riscv32 | ncmpc-0.49 | NOK | http://autobuild.buildroot.net/results/9498202579ba4b5cdfb53a44b12b360a092b9222 | arm | package/python-pillow/pytho... | NOK | http://autobuild.buildroot.net/results/5a35d83c73367e1b20534b1bc7f2f564cf653a38 | i686 | pppd-2.5.0 | NOK | http://autobuild.buildroot.net/results/9c94c7ba1c647dfa5acc1b3ac119dc430a1c3323 | i686 | python-grpcio-1.60.0 | NOK | http://autobuild.buildroot.net/results/97379583f6ad5bb5f5eaba27cc5cb088c72426b0 | x86_64 | python-numpy-1.25.0 | NOK | http://autobuild.buildroot.net/results/941ca83ff4b0917a544e9504928c1c20df0af407 | mipsel | python-remi-2022.7.27 | NOK | http://autobuild.buildroot.net/results/5762af9b2135e4fc37e51af644ee8ecd2fdd6194 | powerpc64le | python-remi-2022.7.27 | NOK | http://autobuild.buildroot.net/results/e5b6f74548e30a1671f0f461831debb935b46548 | mips64el | python-unittest-xml-reporti... | NOK | http://autobuild.buildroot.net/results/b46d6a36aed395ff17146f642ba8bf204d523d0f | mips64el | rtty-8.1.0 | NOK | http://autobuild.buildroot.net/results/da46149b389d03c54b5c9fb6cfdbfe519ee76f5d | microblazeel | unknown | NOK | http://autobuild.buildroot.net/results/3549652c813380f6ae3ff12fca6a174b3cffe47f | arceb | unknown | NOK | http://autobuild.buildroot.net/results/e7ed01ce4680468eb44312ae6bfa9872b1327919 | arm | unknown | NOK | http://autobuild.buildroot.net/results/5a604753b53ac14a507415fea9645cd156fd1552 | or1k | unknown | NOK | http://autobuild.buildroot.net/results/27ddf3d79e06df38afda8501866bd3166df41290 | arm | util-linux-2.39.3 | NOK | http://autobuild.buildroot.net/results/5183fc3b834d23a2df82bb10caa518510a34d031 | ORPH Classification of failures by reason for 2024.02.x -------------------------------------------------- apcupsd-3.14.14 | 1 libcamera-apps-1.2.1 | 1 Detail of failures for 2024.02.x -------------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- x86_64 | apcupsd-3.14.14 | NOK | http://autobuild.buildroot.net/results/52aedc9f581140570aa2654717badfd49d925a4f | sparc | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/49f7edc0e43f01ea711c2fac689a6111a4d659c8 | -- http://autobuild.buildroot.net From dm.chestnykh at gmail.com Thu May 2 04:55:16 2024 From: dm.chestnykh at gmail.com (Dmitry Chestnykh) Date: Thu, 2 May 2024 07:55:16 +0300 Subject: [Buildroot] [PATCH v2 1/3] package/uclibc: Bump to 1.0.48. Message-ID: <20240502045518.4875-1-dm.chestnykh@gmail.com> - In 1.0.48 release uClibc-ng has provided the fix for SPARC related to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784 - The hash for COPYING.LIB was changed because '^L' (0x0C) characters were removed from COPYING.LIB in uClibc-ng repo. Signed-off-by: Dmitry Chestnykh --- v1 -> v2: - Describe the change of COPYING.LIB hash. --- package/uclibc/uclibc.hash | 6 +++--- package/uclibc/uclibc.mk | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/uclibc/uclibc.hash b/package/uclibc/uclibc.hash index a10ceab54c..7097bbf99a 100644 --- a/package/uclibc/uclibc.hash +++ b/package/uclibc/uclibc.hash @@ -1,4 +1,4 @@ -# From https://downloads.uclibc-ng.org/releases/1.0.47/uClibc-ng-1.0.47.tar.xz.sha256 -sha256 29a4d684a06da344ee3ee09acc2ca7649d592ae3ff848f698145c46def05efcb uClibc-ng-1.0.47.tar.xz +# From https://downloads.uclibc-ng.org/releases/1.0.47/uClibc-ng-1.0.48.tar.xz.sha256 +sha256 3bf5fc6cc5cbc454b6c478424755c6f71e7c15578a2c966f02606aa5c5596e21 uClibc-ng-1.0.48.tar.xz # Locally calculated -sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 COPYING.LIB +sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING.LIB diff --git a/package/uclibc/uclibc.mk b/package/uclibc/uclibc.mk index a7b18133ff..9593e18d45 100644 --- a/package/uclibc/uclibc.mk +++ b/package/uclibc/uclibc.mk @@ -4,7 +4,7 @@ # ################################################################################ -UCLIBC_VERSION = 1.0.47 +UCLIBC_VERSION = 1.0.48 UCLIBC_SOURCE = uClibc-ng-$(UCLIBC_VERSION).tar.xz UCLIBC_SITE = https://downloads.uclibc-ng.org/releases/$(UCLIBC_VERSION) UCLIBC_LICENSE = LGPL-2.1+ -- 2.44.0 From dm.chestnykh at gmail.com Thu May 2 04:55:17 2024 From: dm.chestnykh at gmail.com (Dmitry Chestnykh) Date: Thu, 2 May 2024 07:55:17 +0300 Subject: [Buildroot] [PATCH v2 2/3] arch/Config.in: Allow building buildroot toolchain. In-Reply-To: <20240502045518.4875-1-dm.chestnykh@gmail.com> References: <20240502045518.4875-1-dm.chestnykh@gmail.com> Message-ID: <20240502045518.4875-2-dm.chestnykh@gmail.com> With this patch series we allow it again because SPARC was fixed in uClibc-ng so SPARC systems works fine now. Signed-off-by: Dmitry Chestnykh --- v1 -> v2: - Split the patch into two parts: this part allows building buildroot toolchain for SPARC. --- arch/Config.in | 5 ----- 1 file changed, 5 deletions(-) diff --git a/arch/Config.in b/arch/Config.in index 9912f9fce6..e7349e83ae 100644 --- a/arch/Config.in +++ b/arch/Config.in @@ -216,11 +216,6 @@ config BR2_sh config BR2_sparc bool "SPARC" select BR2_USE_MMU - # uClibc-ng broken on sparc due to recent gcc changes - # that need to be reverted since gcc 8.4, 9.3 and 10.1. - # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784 - # gcc <= 10.x has been removed from Buildroot. - select BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT help SPARC (from Scalable Processor Architecture) is a RISC instruction set architecture (ISA) developed by Sun -- 2.44.0 From dm.chestnykh at gmail.com Thu May 2 04:55:18 2024 From: dm.chestnykh at gmail.com (Dmitry Chestnykh) Date: Thu, 2 May 2024 07:55:18 +0300 Subject: [Buildroot] [PATCH v2 3/3] configs/qemu_sparc_ss10_defconfig: Re-introduce. In-Reply-To: <20240502045518.4875-1-dm.chestnykh@gmail.com> References: <20240502045518.4875-1-dm.chestnykh@gmail.com> Message-ID: <20240502045518.4875-3-dm.chestnykh@gmail.com> With uClibc-ng-1.0.48 we can restore this config because uClibc-ng was provided the fix for SPARC. Signed-off-by: Dmitry Chestnykh --- v1 -> v2: - Split the patch into two parts: This part re-introduces defconfig. - Removal of GCC patch was rejected because gcc-8.4 is only used for PowerPC. --- configs/qemu_sparc_ss10_defconfig | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 configs/qemu_sparc_ss10_defconfig diff --git a/configs/qemu_sparc_ss10_defconfig b/configs/qemu_sparc_ss10_defconfig new file mode 100644 index 0000000000..a8e3df9180 --- /dev/null +++ b/configs/qemu_sparc_ss10_defconfig @@ -0,0 +1,28 @@ +# Architecture +BR2_sparc=y +BR2_sparc_v8=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_AS_KERNEL=y + +# Linux kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.6" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sparc-ss10/linux.config" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y -- 2.44.0 From arnout at mind.be Thu May 2 07:00:49 2024 From: arnout at mind.be (Arnout Vandecappelle) Date: Thu, 2 May 2024 09:00:49 +0200 Subject: [Buildroot] [PATCH 07/15 v2] support/testing: add test for export-subst support in git-download In-Reply-To: References: Message-ID: On 01/05/2024 23:23, Yann E. MORIN wrote: > Arnout, All, > > On 2024-05-01 23:13 +0200, Arnout Vandecappelle spake thusly: >> On 27/04/2024 20:37, Yann E. MORIN wrote: >>> Signed-off-by: Yann E. MORIN >>> --- >>> .../package/export-subst/export-subst.hash | 1 + >>> .../git-hash/package/export-subst/export-subst.mk | 10 ++++++++++ >>> .../05/482df734b3715b849ef4a3147a9b1b1f8cca38 | Bin 0 -> 35 bytes >>> .../0f/db95cf4f3c5ed4003287649cabb33c5f843e26 | Bin 0 -> 197 bytes >>> .../68/28f88dcb0e88b8cd738ad6044ce74d7a9a13c8 | Bin 0 -> 28 bytes >>> .../6d/a12b257e47f6089612fe97a8746d2d9c4ca0e0 | Bin 0 -> 112 bytes >> >> Since the git repo is included as binary, we can't see what is in there. > > Yes, I did that way before the xz fiasco... :-/ > See below. > > [--SNIP--] >> I think it would be worth to change is in order to test that no recursive >> expansion takes place. I.e., use this as the commit message: >> >> Subject: [PATCH] file2: test export-subst >> >> Test that strings like $Format:%H$ are expanded when the export-subst >> attribute is set on a file. >> >> Signed-off-by: Yann E. MORIN >> >> >> And in the file, put this: >> >> $Format:%B$ >> >> I haven't made this change though. > > Worth a try. Can we do that in a follow-up patch? Of course, that was the idea. I had hoped that by the time you would reply I would already have pushed the series :-) >> (BTW, another nice change would be to generate the git repository on the >> fly from the test infrastructure, based on a series of patches that are >> git-am'ed and with GIT_COMMITTER_NAME, GIT_COMMITER_EMAIL and >> GIT_COMMITTER_DATE values set to fixed values.) > > Yes, this is on my todo-list, I know, this was more for the benefit of the list :-) > and I have alsready testedt that indeed > that generates a reproducible git tree. Note that for the runtime tests, it isn't actually necessary that the git repository is exactly the same. We only need the commit hashes to be the same, so we do need the GIT_COMMITTER_NAME etc. to be set. I think it would be very hard to make sure the repository is bit-for-bit identical, because git decides pretty much autonomously when to e.g. create a pack. Regards, Arnout From dario.binacchi at amarulasolutions.com Thu May 2 07:23:26 2024 From: dario.binacchi at amarulasolutions.com (Dario Binacchi) Date: Thu, 2 May 2024 09:23:26 +0200 Subject: [Buildroot] [PATCH v2 1/2] package/qemu: fix disabling fp-bench test compilation Message-ID: <20240502072327.741463-1-dario.binacchi@amarulasolutions.com> With the bump to version 8.1.1, the patch that disabled the compilation of the fp-bench test is no longer applicable, even though the package compilation process does not report any errors in applying the patch itself. The new patch does not disable the test by default but only if the file fenv.h is not missing, with the hope that this approach will be considered acceptable by the maintainer and merged upstream. The patch is an adaptation of the one sent upstream. Link: https://lists.nongnu.org/archive/html/qemu-devel/2021-03/msg00492.html Signed-off-by: Dario Binacchi --- Changes v1 -> v2 - Replace [Upstream status: ] with Upstream: - Drop the added line to .checkpackageignore .checkpackageignore | 1 - ...fp-disable-fp-bench-build-by-default.patch | 28 ----------- ...on-t-build-fp-bench-test-if-fenv.h-i.patch | 49 +++++++++++++++++++ 3 files changed, 49 insertions(+), 29 deletions(-) delete mode 100644 package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch create mode 100644 package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch diff --git a/.checkpackageignore b/.checkpackageignore index db23450f0381..3693b770cf4d 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -1360,7 +1360,6 @@ package/python3/0028-fix-building-on-older-distributions.patch lib_patch.Upstrea package/python3/0029-configure.ac-fixup-CC-print-multiarch-output-for-mus.patch lib_patch.Upstream package/python3/0030-Add-an-option-to-disable-the-berkeleydb-module.patch lib_patch.Upstream package/python3/0031-lib-crypt-uClibc-ng-doesn-t-set-errno-when-encryptio.patch lib_patch.Upstream -package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch lib_patch.Upstream package/qemu/0002-softmmu-qemu-seccomp.c-add-missing-header-for-CLONE_.patch lib_patch.Upstream package/qextserialport/0001-Create-a-main-include-file-QExtSerialPort.patch lib_patch.Upstream package/qextserialport/0002-Tell-qmake-to-add-a-pkgconfig-file-to-ease-usage-wit.patch lib_patch.Upstream diff --git a/package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch b/package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch deleted file mode 100644 index fb7a9a69897b..000000000000 --- a/package/qemu/0001-tests-fp-disable-fp-bench-build-by-default.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 83d976d6d7f0357659d5daa0f01c52048a609e88 Mon Sep 17 00:00:00 2001 -From: Romain Naour -Date: Wed, 25 Aug 2021 21:55:53 +0200 -Subject: [PATCH] tests/fp: disable fp-bench build by default - -Fixes: -https://lists.nongnu.org/archive/html/qemu-devel/2021-03/msg00947.html - -Signed-off-by: Romain Naour ---- - tests/fp/meson.build | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/tests/fp/meson.build b/tests/fp/meson.build -index 8bd0979f67..2fe019d2c6 100644 ---- a/tests/fp/meson.build -+++ b/tests/fp/meson.build -@@ -640,6 +640,7 @@ fpbench = executable( - dependencies: [qemuutil], - include_directories: [sfinc, include_directories(tfdir)], - c_args: fpcflags, -+ build_by_default: false, - ) - - fptestlog2 = executable( --- -2.35.1 - diff --git a/package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch b/package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch new file mode 100644 index 000000000000..b7e41d6f232c --- /dev/null +++ b/package/qemu/0001-tests-fp-meson-don-t-build-fp-bench-test-if-fenv.h-i.patch @@ -0,0 +1,49 @@ +From b4a692f46135af1011bf0adbfeb19abf354ca191 Mon Sep 17 00:00:00 2001 +From: Dario Binacchi +Date: Tue, 30 Apr 2024 09:40:55 +0200 +Subject: [PATCH] tests/fp/meson: don't build fp-bench test if fenv.h is + missing + +The fp-bench test (i. e. tests/fp/fp-bench.c) use fenv.h that is not +always provided by the libc (uClibc). The patch disables its compilation +in case the header is not available. + +The patch is based on a suggestion from Paolo Bonzini, which you can +find at the following link. + +Link: https://lists.nongnu.org/archive/html/qemu-devel/2021-03/msg00492.html +Suggested-by: Paolo Bonzini +Signed-off-by: Dario Binacchi +Upstream: https://patchwork.ozlabs.org/project/qemu-devel/patch/20240430164752.645521-1-dario.binacchi at amarulasolutions.com/ +--- + tests/fp/meson.build | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +diff --git a/tests/fp/meson.build b/tests/fp/meson.build +index cbc17392d678..cd052667e940 100644 +--- a/tests/fp/meson.build ++++ b/tests/fp/meson.build +@@ -126,12 +126,14 @@ test('fp-test-mulAdd', fptest, + ['f16_mulAdd', 'f32_mulAdd', 'f64_mulAdd', 'f128_mulAdd'], + suite: ['softfloat-slow', 'softfloat-ops-slow', 'slow'], timeout: 90) + +-executable( +- 'fp-bench', +- ['fp-bench.c', '../../fpu/softfloat.c'], +- dependencies: [qemuutil, libtestfloat, libsoftfloat], +- c_args: fpcflags, +-) ++if cc.has_header('fenv.h') ++ executable( ++ 'fp-bench', ++ ['fp-bench.c', '../../fpu/softfloat.c'], ++ dependencies: [qemuutil, libtestfloat, libsoftfloat], ++ c_args: fpcflags, ++ ) ++endif + + fptestlog2 = executable( + 'fp-test-log2', +-- +2.43.0 + -- 2.43.0 From dario.binacchi at amarulasolutions.com Thu May 2 07:23:27 2024 From: dario.binacchi at amarulasolutions.com (Dario Binacchi) Date: Thu, 2 May 2024 09:23:27 +0200 Subject: [Buildroot] [PATCH v2 2/2] package/qemu: renumber patch In-Reply-To: <20240502072327.741463-1-dario.binacchi@amarulasolutions.com> References: <20240502072327.741463-1-dario.binacchi@amarulasolutions.com> Message-ID: <20240502072327.741463-2-dario.binacchi@amarulasolutions.com> Commit 3fa1ae00681ca ("package/qemu: add option to enable tracing") added a patch with a wrong number. Signed-off-by: Dario Binacchi --- Changes v1 -> v2 - Replace [Upstream status: ] with Upstream: - Drop the added line to .checkpackageignore ...003-tracing-install-trace-events-file-only-if-necessary.patch} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename package/qemu/{0004-tracing-install-trace-events-file-only-if-necessary.patch => 0003-tracing-install-trace-events-file-only-if-necessary.patch} (100%) diff --git a/package/qemu/0004-tracing-install-trace-events-file-only-if-necessary.patch b/package/qemu/0003-tracing-install-trace-events-file-only-if-necessary.patch similarity index 100% rename from package/qemu/0004-tracing-install-trace-events-file-only-if-necessary.patch rename to package/qemu/0003-tracing-install-trace-events-file-only-if-necessary.patch -- 2.43.0 From thomas.petazzoni at bootlin.com Thu May 2 07:43:37 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:43:37 +0200 Subject: [Buildroot] [git commit] package/catch2: bump to version 3.5.4 Message-ID: <20240502074354.65A5886582@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=30a88f4ab07a1ae7e9860d2f07960d994c6008dc branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Michael Nosthoff Signed-off-by: Thomas Petazzoni --- package/catch2/catch2.hash | 2 +- package/catch2/catch2.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/catch2/catch2.hash b/package/catch2/catch2.hash index 5136785513..ec3450836a 100644 --- a/package/catch2/catch2.hash +++ b/package/catch2/catch2.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 269543a49eb76f40b3f93ff231d4c24c27a7e16c90e47d2e45bcc564de470c6e catch2-3.5.2.tar.gz +sha256 b7754b711242c167d8f60b890695347f90a1ebc95949a045385114165d606dbb catch2-3.5.4.tar.gz sha256 c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566 LICENSE.txt diff --git a/package/catch2/catch2.mk b/package/catch2/catch2.mk index ee0940642f..918f1b4319 100644 --- a/package/catch2/catch2.mk +++ b/package/catch2/catch2.mk @@ -4,7 +4,7 @@ # ################################################################################ -CATCH2_VERSION = 3.5.2 +CATCH2_VERSION = 3.5.4 CATCH2_SITE = $(call github,catchorg,Catch2,v$(CATCH2_VERSION)) CATCH2_INSTALL_STAGING = YES CATCH2_INSTALL_TARGET = NO From thomas.petazzoni at bootlin.com Thu May 2 07:43:38 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:43:38 +0200 Subject: [Buildroot] [git commit] package/uuu: bump to version 1.5.179 Message-ID: <20240502074354.7581D86556@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=6c1b31ff1a0793e44a8ab6d057ff2e80c14a1e1f branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master - Provide macos arm prebuild version. Release notes: https://github.com/nxp-imx/mfgtools/releases/tag/uuu_1.5.179 Signed-off-by: Dario Binacchi Signed-off-by: Thomas Petazzoni --- package/uuu/uuu.hash | 2 +- package/uuu/uuu.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/uuu/uuu.hash b/package/uuu/uuu.hash index 0f746a7633..cc78f6785b 100644 --- a/package/uuu/uuu.hash +++ b/package/uuu/uuu.hash @@ -1,3 +1,3 @@ # locally computed -sha256 fac38e93714181fbfb0ff52b9cd29395c7eb342def5c3857da87e5429beb3927 uuu_source-uuu_1.5.177.tar.gz +sha256 6742a0c3b1e5b3b892963473f65e2770462f3bf2871424b800ffa0ed159feb84 uuu_source-uuu_1.5.179.tar.gz sha256 cc8d47f7b9260f6669ecd41c24554c552f17581d81ee8fc602c6d23edb8bf495 LICENSE diff --git a/package/uuu/uuu.mk b/package/uuu/uuu.mk index b6611dc3d4..b633bd70db 100644 --- a/package/uuu/uuu.mk +++ b/package/uuu/uuu.mk @@ -4,7 +4,7 @@ # ################################################################################ -UUU_VERSION = 1.5.177 +UUU_VERSION = 1.5.179 UUU_SOURCE = uuu_source-uuu_$(UUU_VERSION).tar.gz UUU_SITE = https://github.com/NXPmicro/mfgtools/releases/download/uuu_$(UUU_VERSION) UUU_LICENSE = BSD 3-Clause "New" or "Revised" License From thomas.petazzoni at bootlin.com Thu May 2 07:45:05 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:45:05 +0200 Subject: [Buildroot] [PATCH 1/1] package/uuu: bump to version 1.5.179 In-Reply-To: <20240415083612.3754176-1-dario.binacchi@amarulasolutions.com> References: <20240415083612.3754176-1-dario.binacchi@amarulasolutions.com> Message-ID: <20240502094505.116b8a3c@windsurf> On Mon, 15 Apr 2024 10:36:12 +0200 Dario Binacchi wrote: > - Provide macos arm prebuild version. > > Release notes: > https://github.com/nxp-imx/mfgtools/releases/tag/uuu_1.5.179 > > Signed-off-by: Dario Binacchi > --- > package/uuu/uuu.hash | 2 +- > package/uuu/uuu.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 07:45:09 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:45:09 +0200 Subject: [Buildroot] [PATCH] package/shadow: enable on uclibc In-Reply-To: References: Message-ID: <20240502094509.2ab81b47@windsurf> On Mon, 15 Apr 2024 06:36:23 +0200 Waldemar Brodkorb wrote: > Package was disabled with commit > 8035ea0a712eaa16d2ac96cd29db0e8726b0f685 because of missing features > in uClibc-ng. In uClibc-ng 1.0.47 the missing feature were added, > so enable shadow again. > > Signed-off-by: Waldemar Brodkorb > --- > package/shadow/Config.in | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 07:44:27 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:44:27 +0200 Subject: [Buildroot] [git commit] package/shadow: enable on uclibc Message-ID: <20240502074550.DFCB686587@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=7e3963cb5e0cbabacb27f763c4ad9e283ecae4fe branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Package was disabled with commit 8035ea0a712eaa16d2ac96cd29db0e8726b0f685 because of missing features in uClibc-ng. In uClibc-ng 1.0.47 the missing feature were added, so enable shadow again. Signed-off-by: Waldemar Brodkorb Signed-off-by: Thomas Petazzoni --- package/shadow/Config.in | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/package/shadow/Config.in b/package/shadow/Config.in index 987605c7fa..bbbea811ce 100644 --- a/package/shadow/Config.in +++ b/package/shadow/Config.in @@ -2,7 +2,6 @@ menuconfig BR2_PACKAGE_SHADOW bool "shadow" depends on !BR2_STATIC_LIBS depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 - depends on !BR2_TOOLCHAIN_USES_UCLIBC # reallocarray, explicit_bzero select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC help Utilities to deal with user accounts. @@ -57,6 +56,5 @@ config BR2_PACKAGE_SHADOW_YESCRYPT endif # BR2_PACKAGE_SHADOW -comment "shadow needs a glibc or musl toolchain w/ headers >= 4.14, dynamic library" - depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 || \ - BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_UCLIBC +comment "shadow needs a toolchain w/ headers >= 4.14, dynamic library" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 || BR2_STATIC_LIBS From thomas.petazzoni at bootlin.com Thu May 2 07:45:19 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:45:19 +0200 Subject: [Buildroot] [git commit] package/intel-gmmlib: bump version to 22.3.19 Message-ID: <20240502074841.81842865E2@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=d476d2e7e53a92d4e2c038875cb3255dfb11d167 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/intel-gmmlib/intel-gmmlib.hash | 2 +- package/intel-gmmlib/intel-gmmlib.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/intel-gmmlib/intel-gmmlib.hash b/package/intel-gmmlib/intel-gmmlib.hash index d9cad026c4..aadf01a169 100644 --- a/package/intel-gmmlib/intel-gmmlib.hash +++ b/package/intel-gmmlib/intel-gmmlib.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 381f7ad104e3d0d8dd6c3ec0c8304e410a479c439e72db35c83fb7e2b0ec556f intel-gmmlib-22.3.18.tar.gz +sha256 ea9c418b0fd84a982850f230cb2d783dfe2e1f9923065f54b2fcaad1e9b33417 intel-gmmlib-22.3.19.tar.gz sha256 8b7446825df3f8b0268307e272aa6aaaf78351c83161d860d02c913c22666c48 LICENSE.md diff --git a/package/intel-gmmlib/intel-gmmlib.mk b/package/intel-gmmlib/intel-gmmlib.mk index 94a07ebfb8..74e19e93fd 100644 --- a/package/intel-gmmlib/intel-gmmlib.mk +++ b/package/intel-gmmlib/intel-gmmlib.mk @@ -4,7 +4,7 @@ # ################################################################################ -INTEL_GMMLIB_VERSION = 22.3.18 +INTEL_GMMLIB_VERSION = 22.3.19 INTEL_GMMLIB_SITE = https://github.com/intel/gmmlib/archive INTEL_GMMLIB_LICENSE = MIT INTEL_GMMLIB_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Thu May 2 07:45:28 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:45:28 +0200 Subject: [Buildroot] [git commit] package/libcap-ng: bump version to 0.8.5 Message-ID: <20240502074841.9486386586@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=ce486bf62ad4e6f00a6e2bab16b55a960cbbc079 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Switched _SITE to https. Changelog: https://people.redhat.com/sgrubb/libcap-ng/ChangeLog Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/libcap-ng/Config.in | 2 +- package/libcap-ng/libcap-ng.hash | 2 +- package/libcap-ng/libcap-ng.mk | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/libcap-ng/Config.in b/package/libcap-ng/Config.in index 46f0b69ca4..bee66b3357 100644 --- a/package/libcap-ng/Config.in +++ b/package/libcap-ng/Config.in @@ -7,4 +7,4 @@ config BR2_PACKAGE_LIBCAP_NG running applications and print out any capabilities and whether or not it has an open ended bounding set. - http://people.redhat.com/sgrubb/libcap-ng/ + https://people.redhat.com/sgrubb/libcap-ng/ diff --git a/package/libcap-ng/libcap-ng.hash b/package/libcap-ng/libcap-ng.hash index bb4280368d..022dd1f895 100644 --- a/package/libcap-ng/libcap-ng.hash +++ b/package/libcap-ng/libcap-ng.hash @@ -1,4 +1,4 @@ # Locally calculated -sha256 68581d3b38e7553cb6f6ddf7813b1fc99e52856f21421f7b477ce5abd2605a8a libcap-ng-0.8.4.tar.gz +sha256 3ba5294d1cbdfa98afaacfbc00b6af9ed2b83e8a21817185dfd844cc8c7ac6ff libcap-ng-0.8.5.tar.gz sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING sha256 f18a0811fa0e220ccbc42f661545e77f0388631e209585ed582a1c693029c6aa COPYING.LIB diff --git a/package/libcap-ng/libcap-ng.mk b/package/libcap-ng/libcap-ng.mk index 2ec88810b4..9c8012b238 100644 --- a/package/libcap-ng/libcap-ng.mk +++ b/package/libcap-ng/libcap-ng.mk @@ -4,8 +4,8 @@ # ################################################################################ -LIBCAP_NG_VERSION = 0.8.4 -LIBCAP_NG_SITE = http://people.redhat.com/sgrubb/libcap-ng +LIBCAP_NG_VERSION = 0.8.5 +LIBCAP_NG_SITE = https://people.redhat.com/sgrubb/libcap-ng LIBCAP_NG_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (library) LIBCAP_NG_LICENSE_FILES = COPYING COPYING.LIB LIBCAP_NG_CPE_ID_VALID = YES From thomas.petazzoni at bootlin.com Thu May 2 07:45:44 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:45:44 +0200 Subject: [Buildroot] [git commit] package/libinput: bump version to 1.25.0 Message-ID: <20240502074841.B3CF4865E7@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=61bb21db97637b36acb4d6b874aa4a41c665cc54 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Release notes: https://lists.freedesktop.org/archives/wayland-devel/2023-August/042967.html https://lists.freedesktop.org/archives/wayland-devel/2024-January/043396.html Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/libinput/libinput.hash | 2 +- package/libinput/libinput.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/libinput/libinput.hash b/package/libinput/libinput.hash index f6a67fc1ed..643cb16213 100644 --- a/package/libinput/libinput.hash +++ b/package/libinput/libinput.hash @@ -1,5 +1,5 @@ # Locally computed -sha256 fad7011705a21f500229199f789f3e3e794b4c9826b70073745cdaec23bc1d0b libinput-1.23.0.tar.bz2 +sha256 193bd592298bd9e369c0ef3e5d83a6a9d68ddc4cd3dfc84bbe77920a8d0d57df libinput-1.25.0.tar.bz2 # License files sha256 80de50b2022a840db044c56db804ca3565600a692c0714babface587acc6d1b0 COPYING diff --git a/package/libinput/libinput.mk b/package/libinput/libinput.mk index a4d30b5910..499ed5ff4b 100644 --- a/package/libinput/libinput.mk +++ b/package/libinput/libinput.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBINPUT_VERSION = 1.23.0 +LIBINPUT_VERSION = 1.25.0 LIBINPUT_SOURCE = libinput-$(LIBINPUT_VERSION).tar.bz2 LIBINPUT_SITE = https://gitlab.freedesktop.org/libinput/libinput/-/archive/$(LIBINPUT_VERSION) LIBINPUT_DEPENDENCIES = host-pkgconf libevdev mtdev udev From thomas.petazzoni at bootlin.com Thu May 2 07:45:16 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:45:16 +0200 Subject: [Buildroot] [git commit] package/tor: bump version to 0.4.8.11 Message-ID: <20240502074841.7242B865E0@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=f1723c93b59c021f16181b3ac62397b128cb9677 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Release notes: https://gitlab.torproject.org/tpo/core/tor/-/raw/release-0.4.8/ReleaseNotes https://forum.torproject.org/t/stable-release-0-4-8-11/12265 Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/tor/tor.hash | 4 ++-- package/tor/tor.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/tor/tor.hash b/package/tor/tor.hash index 8cc8eb435f..4052f11736 100644 --- a/package/tor/tor.hash +++ b/package/tor/tor.hash @@ -1,4 +1,4 @@ -# From https://dist.torproject.org/tor-0.4.8.10.tar.gz.sha256sum -sha256 e628b4fab70edb4727715b23cf2931375a9f7685ac08f2c59ea498a178463a86 tor-0.4.8.10.tar.gz +# From https://dist.torproject.org/tor-0.4.8.11.tar.gz.sha256sum +sha256 8f2bdf90e63380781235aa7d604e159570f283ecee674670873d8bb7052c8e07 tor-0.4.8.11.tar.gz # Locally computed sha256 47b54ed17e8fdcab3c44729a1789a09b208f9a63a845a7e50def9df729eebad0 LICENSE diff --git a/package/tor/tor.mk b/package/tor/tor.mk index 12dcf3f07c..9986a5f472 100644 --- a/package/tor/tor.mk +++ b/package/tor/tor.mk @@ -4,7 +4,7 @@ # ################################################################################ -TOR_VERSION = 0.4.8.10 +TOR_VERSION = 0.4.8.11 TOR_SITE = https://dist.torproject.org TOR_LICENSE = BSD-3-Clause TOR_LICENSE_FILES = LICENSE From thomas.petazzoni at bootlin.com Thu May 2 07:45:35 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:45:35 +0200 Subject: [Buildroot] [git commit] package/libdeflate: bump version to 1.20 Message-ID: <20240502074841.9F75E865E3@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=20b4739c4e113cfd41898f2f1cf3f3c2a06ba21b branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Release notes: ttps://github.com/ebiggers/libdeflate/blob/master/NEWS.md Build-tested using this defconfig BR2_PACKAGE_LIBDEFLATE=y arm-aarch64 [ 1/42]: OK bootlin-aarch64-glibc [ 2/42]: OK bootlin-arcle-hs38-uclibc [ 3/42]: OK bootlin-armv5-uclibc [ 4/42]: OK bootlin-armv7-glibc [ 5/42]: OK bootlin-armv7m-uclibc [ 6/42]: OK bootlin-armv7-musl [ 7/42]: OK bootlin-m68k-5208-uclibc [ 8/42]: OK bootlin-m68k-68040-uclibc [ 9/42]: OK bootlin-microblazeel-uclibc [10/42]: OK bootlin-mipsel32r6-glibc [11/42]: OK bootlin-mipsel-uclibc [12/42]: OK bootlin-nios2-glibc [13/42]: OK bootlin-openrisc-uclibc [14/42]: OK bootlin-powerpc64le-power8-glibc [15/42]: OK bootlin-powerpc-e500mc-uclibc [16/42]: OK bootlin-riscv32-glibc [17/42]: OK bootlin-riscv64-glibc [18/42]: OK bootlin-riscv64-musl [19/42]: OK bootlin-s390x-z13-glibc [20/42]: OK bootlin-sh4-uclibc [21/42]: OK bootlin-sparc64-glibc [22/42]: OK bootlin-sparc-uclibc [23/42]: OK bootlin-x86-64-glibc [24/42]: OK bootlin-x86-64-musl [25/42]: OK bootlin-x86-64-uclibc [26/42]: OK bootlin-xtensa-uclibc [27/42]: OK br-arm-basic [28/42]: OK br-arm-full-nothread [29/42]: OK br-arm-full-static [30/42]: OK br-i386-pentium4-full [31/42]: OK br-i386-pentium-mmx-musl [32/42]: OK br-mips64-n64-full [33/42]: OK br-mips64r6-el-hf-glibc [34/42]: OK br-powerpc-603e-basic-cpp [35/42]: OK br-powerpc64-power7-glibc [36/42]: OK linaro-aarch64-be [37/42]: OK linaro-aarch64 [38/42]: OK linaro-arm [39/42]: OK sourcery-mips64 [40/42]: OK sourcery-mips [41/42]: OK sourcery-nios2 [42/42]: OK 42 builds, 0 skipped, 0 build failed, 0 legal-info failed, 0 show-info failed Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/libdeflate/libdeflate.hash | 2 +- package/libdeflate/libdeflate.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/libdeflate/libdeflate.hash b/package/libdeflate/libdeflate.hash index 8609f5ab02..46afa96635 100644 --- a/package/libdeflate/libdeflate.hash +++ b/package/libdeflate/libdeflate.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 27bf62d71cd64728ff43a9feb92f2ac2f2bf748986d856133cc1e51992428c25 libdeflate-1.19.tar.gz +sha256 ed1454166ced78913ff3809870a4005b7170a6fd30767dc478a09b96847b9c2a libdeflate-1.20.tar.gz sha256 5d246dd2537307b80fed9ba5fdddf5d0fe7a8f023393a071182b9daed56b40fe COPYING diff --git a/package/libdeflate/libdeflate.mk b/package/libdeflate/libdeflate.mk index 3000a58407..4597dc5a8c 100644 --- a/package/libdeflate/libdeflate.mk +++ b/package/libdeflate/libdeflate.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBDEFLATE_VERSION = 1.19 +LIBDEFLATE_VERSION = 1.20 LIBDEFLATE_SITE = $(call github,ebiggers,libdeflate,v$(LIBDEFLATE_VERSION)) LIBDEFLATE_LICENSE = MIT LIBDEFLATE_LICENSE_FILES = COPYING From thomas.petazzoni at bootlin.com Thu May 2 07:45:39 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:45:39 +0200 Subject: [Buildroot] [git commit] package/libedit: bump version to 20230828-3.1 Message-ID: <20240502074841.A9D44865E2@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=5e2e0fedc842dd43aae9c0d2b37140d5c97db51b branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Changelog: https://www.thrysoee.dk/editline/ Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/libedit/libedit.hash | 2 +- package/libedit/libedit.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/libedit/libedit.hash b/package/libedit/libedit.hash index 2e7363d828..c2ed7f773f 100644 --- a/package/libedit/libedit.hash +++ b/package/libedit/libedit.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 f0925a5adf4b1bf116ee19766b7daa766917aec198747943b1c4edf67a4be2bb libedit-20221030-3.1.tar.gz +sha256 4ee8182b6e569290e7d1f44f0f78dac8716b35f656b76528f699c69c98814dad libedit-20230828-3.1.tar.gz sha256 9da6c9c74987a36c84302982799d17d2f748ba1c1c0c471425716173c1d07649 COPYING diff --git a/package/libedit/libedit.mk b/package/libedit/libedit.mk index 576a163173..ea7f98fdbd 100644 --- a/package/libedit/libedit.mk +++ b/package/libedit/libedit.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBEDIT_VERSION = 20221030-3.1 +LIBEDIT_VERSION = 20230828-3.1 LIBEDIT_SITE = https://www.thrysoee.dk/editline LIBEDIT_INSTALL_STAGING = YES LIBEDIT_DEPENDENCIES = ncurses From thomas.petazzoni at bootlin.com Thu May 2 07:45:49 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:45:49 +0200 Subject: [Buildroot] [git commit] package/libmicrohttpd: bump version to 1.0.1 Message-ID: <20240502074841.BED8C865E0@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=0d5be689b4ecd21e2562bf90f96732a6a703ae67 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Release notes: https://lists.gnu.org/archive/html/info-gnu/2024-02/msg00000.html https://lists.gnu.org/archive/html/info-gnu/2024-02/msg00003.html Changelog: https://git.gnunet.org/libmicrohttpd.git/tree/ChangeLog Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/libmicrohttpd/libmicrohttpd.hash | 2 +- package/libmicrohttpd/libmicrohttpd.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/libmicrohttpd/libmicrohttpd.hash b/package/libmicrohttpd/libmicrohttpd.hash index a4c8fbca5b..f1b3f8b7d8 100644 --- a/package/libmicrohttpd/libmicrohttpd.hash +++ b/package/libmicrohttpd/libmicrohttpd.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 9e7023a151120060d2806a6ea4c13ca9933ece4eacfc5c9464d20edddb76b0a0 libmicrohttpd-0.9.77.tar.gz +sha256 a89e09fc9b4de34dde19f4fcb4faaa1ce10299b9908db1132bbfa1de47882b94 libmicrohttpd-1.0.1.tar.gz sha256 7399547209438c93f9b90297954698773d4846cea44cde5ca982c84c45952a3b COPYING diff --git a/package/libmicrohttpd/libmicrohttpd.mk b/package/libmicrohttpd/libmicrohttpd.mk index 72b2bbafd8..6998ffd1ae 100644 --- a/package/libmicrohttpd/libmicrohttpd.mk +++ b/package/libmicrohttpd/libmicrohttpd.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBMICROHTTPD_VERSION = 0.9.77 +LIBMICROHTTPD_VERSION = 1.0.1 LIBMICROHTTPD_SITE = $(BR2_GNU_MIRROR)/libmicrohttpd LIBMICROHTTPD_LICENSE_FILES = COPYING LIBMICROHTTPD_CPE_ID_VENDOR = gnu From thomas.petazzoni at bootlin.com Thu May 2 07:46:34 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:46:34 +0200 Subject: [Buildroot] [git commit] package/libopenssl: bump version to 3.3.0 Message-ID: <20240502074841.D3ED8865E2@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=6d5ce8609f17a3403d1148a0bbf7a2bdb5ec7f67 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Changelog: https://www.openssl.org/news/cl33.txt Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/libopenssl/libopenssl.hash | 4 ++-- package/libopenssl/libopenssl.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/libopenssl/libopenssl.hash b/package/libopenssl/libopenssl.hash index 841d4b4cfd..aca75cf9e4 100644 --- a/package/libopenssl/libopenssl.hash +++ b/package/libopenssl/libopenssl.hash @@ -1,5 +1,5 @@ -# From https://www.openssl.org/source/openssl-3.2.1.tar.gz.sha256 -sha256 83c7329fe52c850677d75e5d0b0ca245309b97e8ecbcfdc1dfdc4ab9fac35b39 openssl-3.2.1.tar.gz +# From https://www.openssl.org/source/openssl-3.3.0.tar.gz.sha256 +sha256 53e66b043322a606abf0087e7699a0e033a37fa13feb9742df35c3a33b18fb02 openssl-3.3.0.tar.gz # License files sha256 7d5450cb2d142651b8afa315b5f238efc805dad827d91ba367d8516bc9d49e7a LICENSE.txt diff --git a/package/libopenssl/libopenssl.mk b/package/libopenssl/libopenssl.mk index feb5026c02..5ac6bf9713 100644 --- a/package/libopenssl/libopenssl.mk +++ b/package/libopenssl/libopenssl.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBOPENSSL_VERSION = 3.2.1 +LIBOPENSSL_VERSION = 3.3.0 LIBOPENSSL_SITE = https://www.openssl.org/source LIBOPENSSL_SOURCE = openssl-$(LIBOPENSSL_VERSION).tar.gz LIBOPENSSL_LICENSE = Apache-2.0 From thomas.petazzoni at bootlin.com Thu May 2 07:46:26 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:46:26 +0200 Subject: [Buildroot] [git commit] package/libminiupnpc: bump version to 2.2.7 Message-ID: <20240502074841.C8C7F865E8@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=b5c2b86ccf6236b0729016e0cfa98628078a6094 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Update license hash due to copyright year bump: https://github.com/miniupnp/miniupnp/commit/e370f25e911d7e37d57c07d62ba1f3e24d1479ab Changelog: https://github.com/miniupnp/miniupnp/blob/master/miniupnpc/Changelog.txt Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/libminiupnpc/libminiupnpc.hash | 4 ++-- package/libminiupnpc/libminiupnpc.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/libminiupnpc/libminiupnpc.hash b/package/libminiupnpc/libminiupnpc.hash index 21dac02dd3..4f7e7c7aa1 100644 --- a/package/libminiupnpc/libminiupnpc.hash +++ b/package/libminiupnpc/libminiupnpc.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 37fcd91953508c3e62d6964bb8ffbc5d47f3e13481fa54e6214fcc68704c66f1 miniupnpc-2.2.6.tar.gz -sha256 e143c6e207d0bb874c4be76b57689ffa408063a37a735c6dcec3dc600cb522c5 LICENSE +sha256 b0c3a27056840fd0ec9328a5a9bac3dc5e0ec6d2e8733349cf577b0aa1e70ac1 miniupnpc-2.2.7.tar.gz +sha256 7480ae23b082c05ad9823896163d78f3a96f1beadce51f29c96cf898545c27e5 LICENSE diff --git a/package/libminiupnpc/libminiupnpc.mk b/package/libminiupnpc/libminiupnpc.mk index dddbe6f81b..3bd4ee6a9f 100644 --- a/package/libminiupnpc/libminiupnpc.mk +++ b/package/libminiupnpc/libminiupnpc.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBMINIUPNPC_VERSION = 2.2.6 +LIBMINIUPNPC_VERSION = 2.2.7 LIBMINIUPNPC_SOURCE = miniupnpc-$(LIBMINIUPNPC_VERSION).tar.gz LIBMINIUPNPC_SITE = http://miniupnp.free.fr/files LIBMINIUPNPC_INSTALL_STAGING = YES From thomas.petazzoni at bootlin.com Thu May 2 07:47:27 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:47:27 +0200 Subject: [Buildroot] [git commit] package/libpng: bump version to 1.6.43 Message-ID: <20240502074842.01AD2865E2@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=ce3ce432feda336e4476eb930353fed8e3318539 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Release notes: https://sourceforge.net/p/png-mng/mailman/message/58741099/ Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/libpng/libpng.hash | 4 ++-- package/libpng/libpng.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/libpng/libpng.hash b/package/libpng/libpng.hash index fbae14c51d..356c0e3e5d 100644 --- a/package/libpng/libpng.hash +++ b/package/libpng/libpng.hash @@ -1,4 +1,4 @@ -# From https://sourceforge.net/p/png-mng/mailman/message/58731120/ -sha256 c919dbc11f4c03b05aba3f8884d8eb7adfe3572ad228af972bb60057bdb48450 libpng-1.6.42.tar.xz +# From https://sourceforge.net/p/png-mng/mailman/message/58741099/ +sha256 6a5ca0652392a2d7c9db2ae5b40210843c0bbc081cbd410825ab00cc59f14a6c libpng-1.6.43.tar.xz # Locally computed: sha256 7317e078e2d3b5d7ba5a6159e650945153262b44b76f6700f8e9edb261c5143e LICENSE diff --git a/package/libpng/libpng.mk b/package/libpng/libpng.mk index c4da9f89c7..af38afde47 100644 --- a/package/libpng/libpng.mk +++ b/package/libpng/libpng.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBPNG_VERSION = 1.6.42 +LIBPNG_VERSION = 1.6.43 LIBPNG_SERIES = 16 LIBPNG_SOURCE = libpng-$(LIBPNG_VERSION).tar.xz LIBPNG_SITE = http://downloads.sourceforge.net/project/libpng/libpng$(LIBPNG_SERIES)/$(LIBPNG_VERSION) From thomas.petazzoni at bootlin.com Thu May 2 07:47:22 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:47:22 +0200 Subject: [Buildroot] [git commit] package/libplist: bump version to 2.4.0 Message-ID: <20240502074841.EA9B9865E3@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=ab78b51d83d5593dac5c1e0772ac298228878d9e branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Release notes: https://github.com/libimobiledevice/libplist/blob/master/NEWS Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/libplist/libplist.hash | 2 +- package/libplist/libplist.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/libplist/libplist.hash b/package/libplist/libplist.hash index 460f63516a..9bc79bf3f0 100644 --- a/package/libplist/libplist.hash +++ b/package/libplist/libplist.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 4e8580d3f39d3dfa13cefab1a13f39ea85c4b0202e9305c5c8f63818182cac61 libplist-2.3.0.tar.bz2 +sha256 3f5868ae15b117320c1ff5e71be53d29469d4696c4085f89db1975705781a7cd libplist-2.4.0.tar.bz2 sha256 7619c753cac95d4740220223bde48a032606fcaccde5e546f9bc444c81ab356d COPYING diff --git a/package/libplist/libplist.mk b/package/libplist/libplist.mk index 8f094c133d..0b8a69455b 100644 --- a/package/libplist/libplist.mk +++ b/package/libplist/libplist.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBPLIST_VERSION = 2.3.0 +LIBPLIST_VERSION = 2.4.0 LIBPLIST_SOURCE = libplist-$(LIBPLIST_VERSION).tar.bz2 LIBPLIST_SITE = https://github.com/libimobiledevice/libplist/releases/download/$(LIBPLIST_VERSION) LIBPLIST_INSTALL_STAGING = YES From thomas.petazzoni at bootlin.com Thu May 2 07:47:17 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:47:17 +0200 Subject: [Buildroot] [git commit] package/libpciaccess: bump version to 0.18.1 Message-ID: <20240502074841.DE737865E0@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=4c4bb101ba61198a55cb29764e2d35053c216228 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Removed patch which is included in upstream release. Release notes: https://lists.x.org/archives/xorg-announce/2024-March/003483.html Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- ...w-building-static-library-not-just-shared.patch | 48 ---------------------- package/libpciaccess/libpciaccess.hash | 4 +- package/libpciaccess/libpciaccess.mk | 2 +- 3 files changed, 3 insertions(+), 51 deletions(-) diff --git a/package/libpciaccess/0001-meson-allow-building-static-library-not-just-shared.patch b/package/libpciaccess/0001-meson-allow-building-static-library-not-just-shared.patch deleted file mode 100644 index df1b4b415a..0000000000 --- a/package/libpciaccess/0001-meson-allow-building-static-library-not-just-shared.patch +++ /dev/null @@ -1,48 +0,0 @@ -From ad7e9cb4b291a46812eea321f0634cfc46fb94e2 Mon Sep 17 00:00:00 2001 -From: Alan Coopersmith -Date: Thu, 14 Mar 2024 13:55:55 -0700 -Subject: [PATCH] meson: allow building static library, not just shared - -Lets builders specify -Ddefault_library={shared,static,both} -to control which types of libpciaccess library are built - -Closes: #20 -Reported-by: Maxime Gauduin (@alucryd) -Signed-off-by: Alan Coopersmith - -Upstream: https://gitlab.freedesktop.org/xorg/lib/libpciaccess/-/commit/ad7e9cb4b291a46812eea321f0634cfc46fb94e2 -Signed-off-by: Fabrice Fontaine ---- - .gitlab-ci.yml | 2 +- - src/meson.build | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml -index bcb75cf..185edc2 100644 ---- a/.gitlab-ci.yml -+++ b/.gitlab-ci.yml -@@ -91,7 +91,7 @@ meson: - - MESON_OPTIONS: ['-Dzlib=disabled', '-Dzlib=enabled'] - script: - - mkdir -p ../_inst -- - meson setup builddir --prefix="$PWD/../_inst" -Dwarning_level=3 $MESON_OPTIONS -+ - meson setup builddir --prefix="$PWD/../_inst" -Dwarning_level=3 -Ddefault_library=both $MESON_OPTIONS - - meson configure builddir - - ninja -C builddir test - - ninja -C builddir install -diff --git a/src/meson.build b/src/meson.build -index 24eee04..e319688 100644 ---- a/src/meson.build -+++ b/src/meson.build -@@ -38,7 +38,7 @@ endif - - inc_src = include_directories('.') - --libpciaccess = shared_library( -+libpciaccess = library( - 'pciaccess', - [ - 'common_bridge.c', --- -GitLab - diff --git a/package/libpciaccess/libpciaccess.hash b/package/libpciaccess/libpciaccess.hash index 4662314509..e50aacc846 100644 --- a/package/libpciaccess/libpciaccess.hash +++ b/package/libpciaccess/libpciaccess.hash @@ -1,4 +1,4 @@ -# From https://lists.x.org/archives/xorg-announce/2024-February/003453.html -sha512 54dff9a493344586d072edf8c8eb8f7960c7dfd64aa5c51a8ec8d4e341f703fd39eb606ee41c4fdd9d5aad3372b7efe6e0fe96eadc575ea91de276320ebc3fbd libpciaccess-0.18.tar.xz +# From https://lists.x.org/archives/xorg-announce/2024-March/003483.html +sha512 ef27999446e735df2331e94219ee3dafe9198a2472bb452f63ef9c9c446d5431f9e231e224cfabdeba1402974a5a0064546f9abced4d1770f994f5fc0c2b3310 libpciaccess-0.18.1.tar.xz # Hash for license file: sha256 f33f360f8905940dac01aa21597fe8a6727ca6f4ffa43b380e2116fd0666aa8a COPYING diff --git a/package/libpciaccess/libpciaccess.mk b/package/libpciaccess/libpciaccess.mk index 04f3e2083b..cd35b27015 100644 --- a/package/libpciaccess/libpciaccess.mk +++ b/package/libpciaccess/libpciaccess.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBPCIACCESS_VERSION = 0.18 +LIBPCIACCESS_VERSION = 0.18.1 LIBPCIACCESS_SOURCE = libpciaccess-$(LIBPCIACCESS_VERSION).tar.xz LIBPCIACCESS_SITE = http://xorg.freedesktop.org/releases/individual/lib LIBPCIACCESS_LICENSE = MIT From peter at korsgaard.com Thu May 2 07:48:59 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 09:48:59 +0200 Subject: [Buildroot] [git commit] package/libdrm/intel: Remove dependency to x86 In-Reply-To: <20240403203909.1AB65848D4@busybox.osuosl.org> (Yann E. MORIN's message of "Wed, 3 Apr 2024 22:38:21 +0200") References: <20240403203909.1AB65848D4@busybox.osuosl.org> Message-ID: <87frv08xhw.fsf@dell.be.48ers.dk> >>>>> "Yann" == Yann E MORIN writes: > commit: https://git.buildroot.net/buildroot/commit/?id=02e30af0d059aabb694daa54cbad4cae900af29a > branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master > BR2_PACKAGE_LIBDRM_INTEL was dependent on BR2_i386 > or BR2_x86_64, which made sense for integrated GPUs. > This is no longer valid with discrete GPUs so remove > this dependency to allow building on other CPU > architectures. > Signed-off-by: Francois Dugast > Signed-off-by: Yann E. MORIN Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From thomas.petazzoni at bootlin.com Thu May 2 07:49:03 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:49:03 +0200 Subject: [Buildroot] [PATCH] package/tor: bump version to 0.4.8.11 In-Reply-To: <20240411205941.2127766-1-bernd@kuhls.net> References: <20240411205941.2127766-1-bernd@kuhls.net> Message-ID: <20240502094903.1703669e@windsurf> On Thu, 11 Apr 2024 22:59:41 +0200 Bernd Kuhls wrote: > Release notes: > https://gitlab.torproject.org/tpo/core/tor/-/raw/release-0.4.8/ReleaseNotes > https://forum.torproject.org/t/stable-release-0-4-8-11/12265 > > Signed-off-by: Bernd Kuhls > --- > package/tor/tor.hash | 4 ++-- > package/tor/tor.mk | 2 +- > 2 files changed, 3 insertions(+), 3 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 07:49:07 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:49:07 +0200 Subject: [Buildroot] [PATCH] package/intel-gmmlib: bump version to 22.3.19 In-Reply-To: <20240411210012.2127800-1-bernd@kuhls.net> References: <20240411210012.2127800-1-bernd@kuhls.net> Message-ID: <20240502094907.403cb6ed@windsurf> On Thu, 11 Apr 2024 23:00:12 +0200 Bernd Kuhls wrote: > Signed-off-by: Bernd Kuhls > --- > package/intel-gmmlib/intel-gmmlib.hash | 2 +- > package/intel-gmmlib/intel-gmmlib.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 07:49:11 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:49:11 +0200 Subject: [Buildroot] [PATCH] package/libcap-ng: bump version to 0.8.5 In-Reply-To: <20240411210028.2127823-1-bernd@kuhls.net> References: <20240411210028.2127823-1-bernd@kuhls.net> Message-ID: <20240502094911.40e41fc3@windsurf> On Thu, 11 Apr 2024 23:00:28 +0200 Bernd Kuhls wrote: > Switched _SITE to https. > > Changelog: https://people.redhat.com/sgrubb/libcap-ng/ChangeLog > > Signed-off-by: Bernd Kuhls > --- > package/libcap-ng/Config.in | 2 +- > package/libcap-ng/libcap-ng.hash | 2 +- > package/libcap-ng/libcap-ng.mk | 4 ++-- > 3 files changed, 4 insertions(+), 4 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 07:49:15 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:49:15 +0200 Subject: [Buildroot] [PATCH] package/libdeflate: bump version to 1.20 In-Reply-To: <20240411210045.2127843-1-bernd@kuhls.net> References: <20240411210045.2127843-1-bernd@kuhls.net> Message-ID: <20240502094915.36bc9096@windsurf> On Thu, 11 Apr 2024 23:00:45 +0200 Bernd Kuhls wrote: > Release notes: > ttps://github.com/ebiggers/libdeflate/blob/master/NEWS.md > > Build-tested using this defconfig > > BR2_PACKAGE_LIBDEFLATE=y > > arm-aarch64 [ 1/42]: OK > bootlin-aarch64-glibc [ 2/42]: OK > bootlin-arcle-hs38-uclibc [ 3/42]: OK > bootlin-armv5-uclibc [ 4/42]: OK > bootlin-armv7-glibc [ 5/42]: OK > bootlin-armv7m-uclibc [ 6/42]: OK > bootlin-armv7-musl [ 7/42]: OK > bootlin-m68k-5208-uclibc [ 8/42]: OK > bootlin-m68k-68040-uclibc [ 9/42]: OK > bootlin-microblazeel-uclibc [10/42]: OK > bootlin-mipsel32r6-glibc [11/42]: OK > bootlin-mipsel-uclibc [12/42]: OK > bootlin-nios2-glibc [13/42]: OK > bootlin-openrisc-uclibc [14/42]: OK > bootlin-powerpc64le-power8-glibc [15/42]: OK > bootlin-powerpc-e500mc-uclibc [16/42]: OK > bootlin-riscv32-glibc [17/42]: OK > bootlin-riscv64-glibc [18/42]: OK > bootlin-riscv64-musl [19/42]: OK > bootlin-s390x-z13-glibc [20/42]: OK > bootlin-sh4-uclibc [21/42]: OK > bootlin-sparc64-glibc [22/42]: OK > bootlin-sparc-uclibc [23/42]: OK > bootlin-x86-64-glibc [24/42]: OK > bootlin-x86-64-musl [25/42]: OK > bootlin-x86-64-uclibc [26/42]: OK > bootlin-xtensa-uclibc [27/42]: OK > br-arm-basic [28/42]: OK > br-arm-full-nothread [29/42]: OK > br-arm-full-static [30/42]: OK > br-i386-pentium4-full [31/42]: OK > br-i386-pentium-mmx-musl [32/42]: OK > br-mips64-n64-full [33/42]: OK > br-mips64r6-el-hf-glibc [34/42]: OK > br-powerpc-603e-basic-cpp [35/42]: OK > br-powerpc64-power7-glibc [36/42]: OK > linaro-aarch64-be [37/42]: OK > linaro-aarch64 [38/42]: OK > linaro-arm [39/42]: OK > sourcery-mips64 [40/42]: OK > sourcery-mips [41/42]: OK > sourcery-nios2 [42/42]: OK > 42 builds, 0 skipped, 0 build failed, 0 legal-info failed, 0 show-info failed > > Signed-off-by: Bernd Kuhls > --- > package/libdeflate/libdeflate.hash | 2 +- > package/libdeflate/libdeflate.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 07:49:19 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:49:19 +0200 Subject: [Buildroot] [PATCH] package/libedit: bump version to 20230828-3.1 In-Reply-To: <20240411210100.2127868-1-bernd@kuhls.net> References: <20240411210100.2127868-1-bernd@kuhls.net> Message-ID: <20240502094919.0e554514@windsurf> On Thu, 11 Apr 2024 23:01:00 +0200 Bernd Kuhls wrote: > Changelog: https://www.thrysoee.dk/editline/ > > Signed-off-by: Bernd Kuhls > --- > package/libedit/libedit.hash | 2 +- > package/libedit/libedit.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 07:49:22 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:49:22 +0200 Subject: [Buildroot] [PATCH] package/libinput: bump version to 1.25.0 In-Reply-To: <20240411210114.2127887-1-bernd@kuhls.net> References: <20240411210114.2127887-1-bernd@kuhls.net> Message-ID: <20240502094922.0cc0d5ab@windsurf> On Thu, 11 Apr 2024 23:01:14 +0200 Bernd Kuhls wrote: > Release notes: > https://lists.freedesktop.org/archives/wayland-devel/2023-August/042967.html > https://lists.freedesktop.org/archives/wayland-devel/2024-January/043396.html > > Signed-off-by: Bernd Kuhls > --- > package/libinput/libinput.hash | 2 +- > package/libinput/libinput.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 07:49:26 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:49:26 +0200 Subject: [Buildroot] [PATCH] package/libmicrohttpd: bump version to 1.0.1 In-Reply-To: <20240411210134.2127917-1-bernd@kuhls.net> References: <20240411210134.2127917-1-bernd@kuhls.net> Message-ID: <20240502094926.12787759@windsurf> On Thu, 11 Apr 2024 23:01:34 +0200 Bernd Kuhls wrote: > Release notes: > https://lists.gnu.org/archive/html/info-gnu/2024-02/msg00000.html > https://lists.gnu.org/archive/html/info-gnu/2024-02/msg00003.html > > Changelog: https://git.gnunet.org/libmicrohttpd.git/tree/ChangeLog > > Signed-off-by: Bernd Kuhls > --- > package/libmicrohttpd/libmicrohttpd.hash | 2 +- > package/libmicrohttpd/libmicrohttpd.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 07:49:30 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:49:30 +0200 Subject: [Buildroot] [PATCH] package/libminiupnpc: bump version to 2.2.7 In-Reply-To: <20240411210147.2127938-1-bernd@kuhls.net> References: <20240411210147.2127938-1-bernd@kuhls.net> Message-ID: <20240502094930.798b43da@windsurf> On Thu, 11 Apr 2024 23:01:47 +0200 Bernd Kuhls wrote: > Update license hash due to copyright year bump: > https://github.com/miniupnp/miniupnp/commit/e370f25e911d7e37d57c07d62ba1f3e24d1479ab > > Changelog: > https://github.com/miniupnp/miniupnp/blob/master/miniupnpc/Changelog.txt > > Signed-off-by: Bernd Kuhls > --- > package/libminiupnpc/libminiupnpc.hash | 4 ++-- > package/libminiupnpc/libminiupnpc.mk | 2 +- > 2 files changed, 3 insertions(+), 3 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 07:49:34 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:49:34 +0200 Subject: [Buildroot] [PATCH] package/libopenssl: bump version to 3.3.0 In-Reply-To: <20240411210204.2127966-1-bernd@kuhls.net> References: <20240411210204.2127966-1-bernd@kuhls.net> Message-ID: <20240502094934.7798190c@windsurf> On Thu, 11 Apr 2024 23:02:04 +0200 Bernd Kuhls wrote: > Changelog: https://www.openssl.org/news/cl33.txt > > Signed-off-by: Bernd Kuhls > --- > run-time tested using my usual defconfig Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 07:49:37 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:49:37 +0200 Subject: [Buildroot] [PATCH] package/libpciaccess: bump version to 0.18.1 In-Reply-To: <20240411210222.2127990-1-bernd@kuhls.net> References: <20240411210222.2127990-1-bernd@kuhls.net> Message-ID: <20240502094937.679fbd09@windsurf> On Thu, 11 Apr 2024 23:02:22 +0200 Bernd Kuhls wrote: > Removed patch which is included in upstream release. > > Release notes: > https://lists.x.org/archives/xorg-announce/2024-March/003483.html > > Signed-off-by: Bernd Kuhls > --- > ...lding-static-library-not-just-shared.patch | 48 ------------------- > package/libpciaccess/libpciaccess.hash | 4 +- > package/libpciaccess/libpciaccess.mk | 2 +- > 3 files changed, 3 insertions(+), 51 deletions(-) > delete mode 100644 package/libpciaccess/0001-meson-allow-building-static-library-not-just-shared.patch Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 07:49:41 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:49:41 +0200 Subject: [Buildroot] [PATCH] package/libplist: bump version to 2.4.0 In-Reply-To: <20240411210233.2128012-1-bernd@kuhls.net> References: <20240411210233.2128012-1-bernd@kuhls.net> Message-ID: <20240502094941.7d56d50c@windsurf> On Thu, 11 Apr 2024 23:02:33 +0200 Bernd Kuhls wrote: > Release notes: > https://github.com/libimobiledevice/libplist/blob/master/NEWS > > Signed-off-by: Bernd Kuhls > --- > package/libplist/libplist.hash | 2 +- > package/libplist/libplist.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 07:49:45 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:49:45 +0200 Subject: [Buildroot] [PATCH] package/libpng: bump version to 1.6.43 In-Reply-To: <20240411210245.2128044-1-bernd@kuhls.net> References: <20240411210245.2128044-1-bernd@kuhls.net> Message-ID: <20240502094945.376cede4@windsurf> On Thu, 11 Apr 2024 23:02:45 +0200 Bernd Kuhls wrote: > Release notes: > https://sourceforge.net/p/png-mng/mailman/message/58741099/ > > Signed-off-by: Bernd Kuhls > --- > package/libpng/libpng.hash | 4 ++-- > package/libpng/libpng.mk | 2 +- > 2 files changed, 3 insertions(+), 3 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From peter at korsgaard.com Thu May 2 07:50:26 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 09:50:26 +0200 Subject: [Buildroot] [PATCH 1/1] board/freescale/common/imx: imx8-bootloader-prepare: enable error checking In-Reply-To: <20240403230810.5e8b9e21@windsurf> (Thomas Petazzoni via buildroot's message of "Wed, 3 Apr 2024 23:08:10 +0200") References: <20230914165046.3687491-1-wojciech.nizinski@grinn-global.com> <20240403230810.5e8b9e21@windsurf> Message-ID: <87bk5o8xfh.fsf@dell.be.48ers.dk> >>>>> "Thomas" == Thomas Petazzoni via buildroot writes: > On Thu, 14 Sep 2023 18:50:46 +0200 > Wojciech Nizinski wrote: >> Run script with 'errexit' bash option to detect any errors from >> subcommands. >> >> It will fix situation where 'ddr_fw.bin' was missing but successfull >> build created broken boot image. Post image script report this by: >> >> cat: /home/user/buildroot/output/images/ddr_fw.bin: No such file or >> directory >> >> and build finish with success. >> >> Signed-off-by: Wojciech Nizinski >> --- >> board/freescale/common/imx/imx8-bootloader-prepare.sh | 1 + >> 1 file changed, 1 insertion(+) > Applied to master after changing to use set -e. Thanks! Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 07:51:58 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 09:51:58 +0200 Subject: [Buildroot] [PATCH] package/psplash: fix systemd unit ordering and dependencies In-Reply-To: <9644951a-0724-4163-9a93-4f0e066ce1f7@mind.be> (Arnout Vandecappelle via buildroot's message of "Wed, 3 Apr 2024 23:02:14 +0200") References: <20240116110002.2146885-1-nolange79@gmail.com> <9644951a-0724-4163-9a93-4f0e066ce1f7@mind.be> Message-ID: <877cgc8xcx.fsf@dell.be.48ers.dk> >>>>> "Arnout" == Arnout Vandecappelle via buildroot writes: > On 16/01/2024 12:00, Norbert Lange wrote: >> Fix a typo in the dependencies, and switch the type to 'exec'. >> This ensures that the psplash-systemd service will find the >> FIFO created by psplash. > It doesn't actually ensure that: systemd considers the unit ready as > soon as it has done execve, but the pipe will only be created later. > The solution is to make the psplash-systemd service wait until the > pipe actually exists, but I'm not sure how to do that. > Anyway, this is already an improvement, so applied to master, thanks. Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From thomas.petazzoni at bootlin.com Thu May 2 07:56:05 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 09:56:05 +0200 Subject: [Buildroot] [PATCH v1 1/8] package/libsoup3: fix reference to atomic In-Reply-To: <20240420185853.4134260-1-thomas@devoogdt.com> References: <20240420185853.4134260-1-thomas@devoogdt.com> Message-ID: <20240502095605.32987057@windsurf> Hello, On Sat, 20 Apr 2024 20:58:46 +0200 Thomas Devoogdt wrote: > gthread-posix.c:(.text+0x137c): undefined reference to `__atomic_compare_exchange_4' > collect2: error: ld returned 1 exit status > > Fixes: > - http://autobuild.buildroot.net/results/4fb9f4c49777dde3abc30bb9f324816d3ed87567 > > Signed-off-by: Thomas Devoogdt I think this whole patch series is not the right way to fix the problem. Indeed, what's using libatomic here is libglib2, and with your solution, you have to chase down *all* reverse dependencies of libglib2. Instead, what I'd like to see is that the glib-2.0.pc (pkg-config) file gets updated to include -latomic in the Libs.private flags, so that it gets automatically picked up by all reverse dependencies of libglib2 when they are static linking. This also brings the advantage that you're not linking say libsoup3 directly with libatomic, like you're doing with your patch. Instead, in a dynamic linking case, we keep on having libsoup3 linked just with libglib2, and libglib2 linked with libatomic. It's only in the static linking case that when we're building a final executable that uses libsoup3, we need to also bring libatomic.a into the mix. Could you have a look at fixing glib-2.0.pc instead? Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From fontaine.fabrice at gmail.com Thu May 2 08:15:53 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Thu, 2 May 2024 10:15:53 +0200 Subject: [Buildroot] [PATCH v1 1/8] package/libsoup3: fix reference to atomic In-Reply-To: <20240502095605.32987057@windsurf> References: <20240420185853.4134260-1-thomas@devoogdt.com> <20240502095605.32987057@windsurf> Message-ID: Hello Thomas, Le jeu. 2 mai 2024 ? 09:56, Thomas Petazzoni a ?crit : > > Hello, > > On Sat, 20 Apr 2024 20:58:46 +0200 > Thomas Devoogdt wrote: > > > gthread-posix.c:(.text+0x137c): undefined reference to `__atomic_compare_exchange_4' > > collect2: error: ld returned 1 exit status > > > > Fixes: > > - http://autobuild.buildroot.net/results/4fb9f4c49777dde3abc30bb9f324816d3ed87567 > > > > Signed-off-by: Thomas Devoogdt > > I think this whole patch series is not the right way to fix the > problem. Indeed, what's using libatomic here is libglib2, and with your > solution, you have to chase down *all* reverse dependencies of libglib2. > > Instead, what I'd like to see is that the glib-2.0.pc (pkg-config) file > gets updated to include -latomic in the Libs.private flags, so that it > gets automatically picked up by all reverse dependencies of libglib2 > when they are static linking. > > This also brings the advantage that you're not linking say libsoup3 > directly with libatomic, like you're doing with your patch. Instead, in > a dynamic linking case, we keep on having libsoup3 linked just with > libglib2, and libglib2 linked with libatomic. It's only in the static > linking case that when we're building a final executable that uses > libsoup3, we need to also bring libatomic.a into the mix. > > Could you have a look at fixing glib-2.0.pc instead? This patch is available since September 2023: https://patchwork.ozlabs.org/project/buildroot/patch/20230917185116.182810-1-fontaine.fabrice at gmail.com/ > > Thanks! > > Thomas > -- > Thomas Petazzoni, co-owner and CEO, Bootlin > Embedded Linux and Kernel engineering and training > https://bootlin.com Best Regards, Fabrice From peter at korsgaard.com Thu May 2 08:29:04 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 10:29:04 +0200 Subject: [Buildroot] [PATCH 1/1] package/apache: security bump version to 2.4.59 In-Reply-To: <20240404151115.56677-1-bernd@kuhls.net> (Bernd Kuhls's message of "Thu, 4 Apr 2024 17:11:15 +0200") References: <20240404151115.56677-1-bernd@kuhls.net> Message-ID: <8734r08vn3.fsf@dell.be.48ers.dk> >>>>> "Bernd" == Bernd Kuhls writes: > Changelog: https://dlcdn.apache.org/httpd/CHANGES_2.4.59 > Fixes CVE-2023-38709, CVE-2024-27316 & CVE-2024-24795. > Removed patch which is included in this release. > Updated _SITE and hash file URLs according to > https://httpd.apache.org/download.cgi#apache24 > Signed-off-by: Bernd Kuhls Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 08:29:18 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 10:29:18 +0200 Subject: [Buildroot] Fwd: [PATCH] DEVELOPERS: remove Thomas De Schampheleire In-Reply-To: <877chdqk74.fsf@48ers.dk> (Peter Korsgaard's message of "Thu, 04 Apr 2024 16:25:03 +0200") References: <877chdqk74.fsf@48ers.dk> Message-ID: <87y18s7h29.fsf@dell.be.48ers.dk> >>>>> "Peter" == Peter Korsgaard writes: >>>>> "Thomas" == Thomas De Schampheleire writes: >> Hi Peter, >> I sent this patch to the mailing list, but since I am no longer subscribed, it's >> probably stuck in the moderation queue. > Odd, I don't see it in mailman. >> Could I bother you to apply this patch or let my mail pass through the queue? > Sure, committed. > Sorry to see you go, thanks for all your work! Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 08:30:13 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 10:30:13 +0200 Subject: [Buildroot] [PATCH 1/2] package/tiff: explicitly disable lerc support for host and target In-Reply-To: <87plv3os1b.fsf@48ers.dk> (Peter Korsgaard's message of "Sat, 06 Apr 2024 09:43:12 +0200") References: <20240404153438.3337807-1-peter@korsgaard.com> <87plv3os1b.fsf@48ers.dk> Message-ID: <87ttjg7h0q.fsf@dell.be.48ers.dk> >>>>> "Peter" == Peter Korsgaard writes: >>>>> "Peter" == Peter Korsgaard writes: >> We do not have liblerc in Buildroot and it may cause linking issues for >> host-tiff on build hosts with liblerc: >> libtool: link: /usr/bin/gcc -O2 >> -I/home/dragon/src/ft/ftcommunity-TXT/output/build/rootfs/per-package/host-tiff/host/include >> -Wall -W -Wl,-rpath >> -Wl,/home/dragon/src/ft/ftcommunity-TXT/output/build/rootfs/per-package/host-tiff/host/lib >> -o tiffcp tiffcp.o >> -L/home/dragon/src/ft/ftcommunity-TXT/output/build/rootfs/per-package/host-tiff/host/lib >> ../libtiff/.libs/libtiff.so ../port/.libs/libport.a -lLerc -ljbig -lm >> -Wl,-rpath >> -Wl,/home/dragon/src/ft/ftcommunity-TXT/output/build/rootfs/build/host-tiff-4.6.0/libtiff/.libs >> -Wl,-rpath >> -Wl,/home/dragon/src/ft/ftcommunity-TXT/output/build/rootfs/per-package/host-tiff/host/lib >> /usr/bin/ld: ../libtiff/.libs/libtiff.so: undefined reference to >> `deflateInit_' >> /usr/bin/ld: ../libtiff/.libs/libtiff.so: undefined reference to `deflate' >> /usr/bin/ld: ../libtiff/.libs/libtiff.so: undefined reference to >> `deflateEnd' >> /usr/bin/ld: ../libtiff/.libs/libtiff.so: undefined reference to `inflate' >> Signed-off-by: Peter Korsgaard > Committed, thanks. Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 08:30:18 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 10:30:18 +0200 Subject: [Buildroot] [PATCH 2/2] package/tiff: explicitly disable jbig support for host and target In-Reply-To: <87le5ros14.fsf@48ers.dk> (Peter Korsgaard's message of "Sat, 06 Apr 2024 09:43:19 +0200") References: <20240404153438.3337807-1-peter@korsgaard.com> <20240404153438.3337807-2-peter@korsgaard.com> <87le5ros14.fsf@48ers.dk> Message-ID: <87plu47h0l.fsf@dell.be.48ers.dk> >>>>> "Peter" == Peter Korsgaard writes: >>>>> "Peter" == Peter Korsgaard writes: >> BR2_PACKAGE_TIFF_JBIG did actually not do anything, as no explicit >> --enable-jbig was passed to configure and there is no libjbig in Buildroot, >> so drop it and instead explicitly disable jbig support. >> Also add --disable-jbig for the host build, which was missed when host >> support was added in commit 91b16fbbf9db (tiff: add host variant). >> As the TIFF_JBIG option was a noop, do not add legacy handling for it. >> Signed-off-by: Peter Korsgaard > Committed, thanks. Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From thomas.petazzoni at bootlin.com Thu May 2 08:30:14 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 10:30:14 +0200 Subject: [Buildroot] [git commit] package/libglib2: fix atomic handling Message-ID: <20240502083036.30822865EC@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=929bffbf4bf8fcb91bda446777f907f32c782656 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Correctly fix atomic handling to avoid the following build failure with all users of libglib2 (e.g. gdk-pixbuf) raised since bump to version 2.76.1 in commit 3f9622fe3d85b4d9f734b879abc1d485afea19b2: /usr/lib/libglib-2.0.a(gthread-posix.c.o): in function `g_mutex_trylock': gthread-posix.c:(.text+0xda8): undefined reference to `__atomic_compare_exchange_4' Fixes: - http://autobuild.buildroot.org/results/24a358869b98d83ab374c7c3a185ced450064d35 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- .../0005-link-with-latomic-when-needed.patch | 45 ++++++++++++++++++++++ package/libglib2/libglib2.mk | 5 --- 2 files changed, 45 insertions(+), 5 deletions(-) diff --git a/package/libglib2/0005-link-with-latomic-when-needed.patch b/package/libglib2/0005-link-with-latomic-when-needed.patch new file mode 100644 index 0000000000..275d86032b --- /dev/null +++ b/package/libglib2/0005-link-with-latomic-when-needed.patch @@ -0,0 +1,45 @@ +From d1814dbd3a88c95a43d4c9805bb4a523cf62d97b Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 17 Sep 2023 20:42:00 +0200 +Subject: [PATCH] link with -latomic when needed + +Some architecture such as sparc and some flavors of arm needs -latomic +to avoid the following build failure: + +gthread-posix.c:(.text+0xda8): undefined reference to `__atomic_compare_exchange_4' + +Signed-off-by: Fabrice Fontaine +Upstream: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3586 +--- + glib/meson.build | 1 + + meson.build | 2 ++ + 2 files changed, 3 insertions(+) + +diff --git a/glib/meson.build b/glib/meson.build +index c26a35e42..7a761306b 100644 +--- a/glib/meson.build ++++ b/glib/meson.build +@@ -426,6 +426,7 @@ libglib = library('glib-2.0', + pcre2, + platform_deps, + thread_dep, ++ atomic_dep + ], + c_args : glib_c_args, + objc_args : glib_c_args, +diff --git a/meson.build b/meson.build +index 25ae10fc2..5ae84b3b3 100644 +--- a/meson.build ++++ b/meson.build +@@ -2130,6 +2130,8 @@ libffi_dep = dependency('libffi', version : '>= 3.0.0') + + libz_dep = dependency('zlib') + ++atomic_dep = cc.find_library('atomic', required: false) ++ + # First check in libc, fallback to libintl, and as last chance build + # proxy-libintl subproject. + # FIXME: glib-gettext.m4 has much more checks to detect broken/uncompatible +-- +2.40.1 + diff --git a/package/libglib2/libglib2.mk b/package/libglib2/libglib2.mk index c06ded2a5b..bffc565f11 100644 --- a/package/libglib2/libglib2.mk +++ b/package/libglib2/libglib2.mk @@ -64,11 +64,6 @@ ifeq ($(BR2_PACKAGE_ELFUTILS),y) LIBGLIB2_DEPENDENCIES += elfutils endif -# Uses __atomic_compare_exchange_4 -ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) -LIBGLIB2_LDFLAGS += -latomic -endif - ifeq ($(BR2_PACKAGE_LIBICONV),y) LIBGLIB2_DEPENDENCIES += libiconv endif From thomas.petazzoni at bootlin.com Thu May 2 08:30:49 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 10:30:49 +0200 Subject: [Buildroot] [PATCH v1 1/8] package/libsoup3: fix reference to atomic In-Reply-To: References: <20240420185853.4134260-1-thomas@devoogdt.com> <20240502095605.32987057@windsurf> Message-ID: <20240502103049.3a143975@windsurf> On Thu, 2 May 2024 10:15:53 +0200 Fabrice Fontaine wrote: > > Could you have a look at fixing glib-2.0.pc instead? > > This patch is available since September 2023: > https://patchwork.ozlabs.org/project/buildroot/patch/20230917185116.182810-1-fontaine.fabrice at gmail.com/ Awesome, I went ahead and applied this patch! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Thu May 2 08:31:39 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 2 May 2024 10:31:39 +0200 Subject: [Buildroot] [PATCH 1/1] package/libglib2: fix atomic handling In-Reply-To: <20230917185116.182810-1-fontaine.fabrice@gmail.com> References: <20230917185116.182810-1-fontaine.fabrice@gmail.com> Message-ID: <20240502103139.62ca4812@windsurf> Hello Fabrice, On Sun, 17 Sep 2023 20:51:16 +0200 Fabrice Fontaine wrote: > Correctly fix atomic handling to avoid the following build failure with > all users of libglib2 (e.g. gdk-pixbuf) raised since bump to version > 2.76.1 in commit 3f9622fe3d85b4d9f734b879abc1d485afea19b2: > > /usr/lib/libglib-2.0.a(gthread-posix.c.o): in function `g_mutex_trylock': > gthread-posix.c:(.text+0xda8): undefined reference to `__atomic_compare_exchange_4' > > Fixes: > - http://autobuild.buildroot.org/results/24a358869b98d83ab374c7c3a185ced450064d35 > > Signed-off-by: Fabrice Fontaine > --- > .../0004-link-with-latomic-when-needed.patch | 45 +++++++++++++++++++ > package/libglib2/libglib2.mk | 5 --- > 2 files changed, 45 insertions(+), 5 deletions(-) > create mode 100644 package/libglib2/0004-link-with-latomic-when-needed.patch Applied to master, thanks. However, could you follow-up with upstream? They re-opened a MR at https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3606 but then had to close it because it broke the build in some situations. If you could have a look and submit a new iteration of the patch upstream, it'd be nice. Thanks! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From peter at korsgaard.com Thu May 2 08:36:31 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 10:36:31 +0200 Subject: [Buildroot] [PATCH] package/gdb: bump 14.x series from 14.1 to 14.2 In-Reply-To: <20240407093409.1273632-1-thomas.petazzoni@bootlin.com> (Thomas Petazzoni via buildroot's message of "Sun, 7 Apr 2024 11:34:07 +0200") References: <20240407093409.1273632-1-thomas.petazzoni@bootlin.com> Message-ID: <87le4s7gq8.fsf@dell.be.48ers.dk> >>>>> "Thomas" == Thomas Petazzoni via buildroot writes: > According to https://www.sourceware.org/gdb/: > This is a minor corrective release over GDB 14.1, fixing the following issues: > PR symtab/31112 (DLL export forwarding is broken) > PR c++/31128 (gdb crashes when trying to print a global variable stub without a running inferior) > PR tdep/31254 ([gdb/tdep, arm] FAIL: gdb.threads/staticthreads.exp: up 10) > PR gdb/31256 (Crash with basic 'list .') > PR python/31366 (Frame.static_link() segfaults) > Signed-off-by: Thomas Petazzoni Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 1 20:54:59 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 1 May 2024 22:54:59 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/libdrm/intel: Remove dependency to x86 Message-ID: <20240502083654.8D15C86608@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=7045d2905e67158f5fe2ae5e497bc923c114e4d5 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x BR2_PACKAGE_LIBDRM_INTEL was dependent on BR2_i386 or BR2_x86_64, which made sense for integrated GPUs. This is no longer valid with discrete GPUs so remove this dependency to allow building on other CPU architectures. Signed-off-by: Francois Dugast Signed-off-by: Yann E. MORIN (cherry picked from commit 02e30af0d059aabb694daa54cbad4cae900af29a) Signed-off-by: Peter Korsgaard --- package/libdrm/Config.in | 1 - 1 file changed, 1 deletion(-) diff --git a/package/libdrm/Config.in b/package/libdrm/Config.in index 3cb0e02a41..fab8289be6 100644 --- a/package/libdrm/Config.in +++ b/package/libdrm/Config.in @@ -20,7 +20,6 @@ config BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC config BR2_PACKAGE_LIBDRM_INTEL bool "intel" - depends on BR2_i386 || BR2_x86_64 depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC select BR2_PACKAGE_LIBPCIACCESS From peter at korsgaard.com Thu May 2 07:51:00 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 09:51:00 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/psplash: fix systemd unit ordering and dependencies Message-ID: <20240502083654.B33688660A@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=330386fef9179b169d3619818a6c692098f3f0e4 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Fix a typo in the dependencies, and switch the type to 'exec'. This ensures that the psplash-systemd service will find the FIFO created by psplash. Change the psplash-systemd dependency to BindsTo, so stopping psplash itself will also end this service and free resources. psplash-start service need to start early, otherwise it might try to compete/take away the framebuffer from the final graphical stack. Order it before sysinit.target. Signed-off-by: Norbert Lange Signed-off-by: Arnout Vandecappelle (cherry picked from commit 087115b96a6b053a333de2960aa75c6dd122f087) Signed-off-by: Peter Korsgaard --- package/psplash/psplash-start.service | 2 ++ package/psplash/psplash-systemd.service | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/package/psplash/psplash-start.service b/package/psplash/psplash-start.service index b97e883e54..74cbc33955 100644 --- a/package/psplash/psplash-start.service +++ b/package/psplash/psplash-start.service @@ -2,8 +2,10 @@ Description=Starts Psplash Boot screen DefaultDependencies=no RequiresMountsFor=/run +Before=sysinit.target [Service] +Type=exec ExecStart=/usr/bin/psplash -n [Install] diff --git a/package/psplash/psplash-systemd.service b/package/psplash/psplash-systemd.service index 249aa54039..f89bc5f4fe 100644 --- a/package/psplash/psplash-systemd.service +++ b/package/psplash/psplash-systemd.service @@ -1,8 +1,8 @@ [Unit] Description=Start psplash-systemd progress communication helper DefaultDependencies=no -After=systemd-start.service -Requires=psplash-start.service +After=psplash-start.service +BindsTo=psplash-start.service RequiresMountsFor=/run [Service] From peter at korsgaard.com Thu May 2 07:49:45 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 09:49:45 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] board/freescale/common/imx/imx8-bootloader-prepare.sh: enable error checking Message-ID: <20240502083654.97C4786609@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=99f6397a80d92bbaf64a07816a555d531655d799 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Run script with 'errexit' bash option to detect any errors from subcommands. It will fix situation where 'ddr_fw.bin' was missing but successfull build created broken boot image. Post image script report this by: cat: /home/user/buildroot/output/images/ddr_fw.bin: No such file or directory and build finish with success. Signed-off-by: Wojciech Nizinski Signed-off-by: Thomas Petazzoni (cherry picked from commit 4a1bcbe17e83c78de31a4cdf9161c1342d1021ae) Signed-off-by: Peter Korsgaard --- board/freescale/common/imx/imx8-bootloader-prepare.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/board/freescale/common/imx/imx8-bootloader-prepare.sh b/board/freescale/common/imx/imx8-bootloader-prepare.sh index 7ebf15b6ff..a9ee154e9c 100755 --- a/board/freescale/common/imx/imx8-bootloader-prepare.sh +++ b/board/freescale/common/imx/imx8-bootloader-prepare.sh @@ -73,4 +73,5 @@ main () exit $? } +set -e main $@ From peter at korsgaard.com Thu May 2 08:28:37 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 10:28:37 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/apache: security bump version to 2.4.59 Message-ID: <20240502083654.CB12F86609@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=f658e8c9f8ce715a225318fa6c58feeaace30d44 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Changelog: https://dlcdn.apache.org/httpd/CHANGES_2.4.59 Fixes CVE-2023-38709, CVE-2024-27316 & CVE-2024-24795. Removed patch which is included in this release. Updated _SITE and hash file URLs according to https://httpd.apache.org/download.cgi#apache24 Signed-off-by: Bernd Kuhls Signed-off-by: Peter Korsgaard (cherry picked from commit e0bbfaea0e983c1ce42a9c3085f3ca3dd796852f) Signed-off-by: Peter Korsgaard --- ...enc-remove-dependency-on-xmlstring-header.patch | 47 ---------------------- package/apache/apache.hash | 6 +-- package/apache/apache.mk | 4 +- 3 files changed, 5 insertions(+), 52 deletions(-) diff --git a/package/apache/0004-mod_xml2enc-remove-dependency-on-xmlstring-header.patch b/package/apache/0004-mod_xml2enc-remove-dependency-on-xmlstring-header.patch deleted file mode 100644 index 8ff7076589..0000000000 --- a/package/apache/0004-mod_xml2enc-remove-dependency-on-xmlstring-header.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 27a68e54b7c6d2ae80dca396fd2727852897dab1 Mon Sep 17 00:00:00 2001 -From: Eric Covener -Date: Tue, 21 Nov 2023 12:58:47 +0000 -Subject: [PATCH] mod_xml2enc: remove dependency on xmlstring header - -Submitted by: ttachi - -Github: closes #393 - -git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk at 1914013 13f79535-47bb-0310-9956-ffa450edef68 - -Upstream: https://github.com/apache/httpd/commit/27a68e54b7c6d2ae80dca396fd2727852897dab1 - -Signed-off-by: Bernd Kuhls ---- - changes-entries/xmlchar.txt | 2 ++ - modules/filters/mod_xml2enc.c | 6 +++--- - 2 files changed, 5 insertions(+), 3 deletions(-) - create mode 100644 changes-entries/xmlchar.txt - -diff --git a/changes-entries/xmlchar.txt b/changes-entries/xmlchar.txt -new file mode 100644 -index 00000000000..d0e06300411 ---- /dev/null -+++ b/changes-entries/xmlchar.txt -@@ -0,0 +1,2 @@ -+ *) mod_xml2enc: Tolerate libxml2 2.12.0 and later. -+ [ttachi ] -diff --git a/modules/filters/mod_xml2enc.c b/modules/filters/mod_xml2enc.c -index 34f8e8ee090..e8ee2647955 100644 ---- a/modules/filters/mod_xml2enc.c -+++ b/modules/filters/mod_xml2enc.c -@@ -206,11 +206,11 @@ static void sniff_encoding(request_rec* r, xml2ctx* ctx) - } - } - } -- -+ - /* to sniff, first we look for BOM */ - if (ctx->xml2enc == XML_CHAR_ENCODING_NONE) { -- ctx->xml2enc = xmlDetectCharEncoding((const xmlChar*)ctx->buf, -- ctx->bytes); -+ ctx->xml2enc = xmlDetectCharEncoding((const unsigned char*)ctx->buf, -+ ctx->bytes); - if (HAVE_ENCODING(ctx->xml2enc)) { - ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r, APLOGNO(01432) - "Got charset from XML rules.") ; diff --git a/package/apache/apache.hash b/package/apache/apache.hash index 854bc85dcc..84248761b9 100644 --- a/package/apache/apache.hash +++ b/package/apache/apache.hash @@ -1,5 +1,5 @@ -# From https://archive.apache.org/dist/httpd/httpd-2.4.58.tar.bz2.{sha256,sha512} -sha256 fa16d72a078210a54c47dd5bef2f8b9b8a01d94909a51453956b3ec6442ea4c5 httpd-2.4.58.tar.bz2 -sha512 d6e73bf413a507ec16b621ff635e178206207a9e9810ce3944b3dc98d39cde8f225307110167fc9da5822175796c8cb66f98be5b9f0d8b76dcd83a401d39b2c1 httpd-2.4.58.tar.bz2 +# From https://downloads.apache.org/httpd/httpd-2.4.59.tar.bz2.{sha256,sha512} +sha256 ec51501ec480284ff52f637258135d333230a7d229c3afa6f6c2f9040e321323 httpd-2.4.59.tar.bz2 +sha512 209da0bbac5e2564d4590302515b35495be6402273ff4024aa93e85e44554c95e053201d606383936425a41e1b5b97e6b40055dcbb385eb691a5029a6f3158c2 httpd-2.4.59.tar.bz2 # Locally computed sha256 47b8c2b6c3309282a99d4a3001575c790fead690cc14734628c4667d2bbffc43 LICENSE diff --git a/package/apache/apache.mk b/package/apache/apache.mk index 3efa6b0ac1..1b095c5eb1 100644 --- a/package/apache/apache.mk +++ b/package/apache/apache.mk @@ -4,9 +4,9 @@ # ################################################################################ -APACHE_VERSION = 2.4.58 +APACHE_VERSION = 2.4.59 APACHE_SOURCE = httpd-$(APACHE_VERSION).tar.bz2 -APACHE_SITE = https://downloads.apache.org/httpd +APACHE_SITE = https://dlcdn.apache.org/httpd APACHE_LICENSE = Apache-2.0 APACHE_LICENSE_FILES = LICENSE APACHE_CPE_ID_VENDOR = apache From peter at korsgaard.com Thu May 2 08:29:47 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 10:29:47 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/tiff: explicitly disable lerc support for host and target Message-ID: <20240502083654.D61CB8660A@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=b788c8cd0ae3a36d9f1cc3cd325b5e0e6d38f977 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x We do not have liblerc in Buildroot and it may cause linking issues for host-tiff on build hosts with liblerc: libtool: link: /usr/bin/gcc -O2 -I/home/dragon/src/ft/ftcommunity-TXT/output/build/rootfs/per-package/host-tiff/host/include -Wall -W -Wl,-rpath -Wl,/home/dragon/src/ft/ftcommunity-TXT/output/build/rootfs/per-package/host-tiff/host/lib -o tiffcp tiffcp.o -L/home/dragon/src/ft/ftcommunity-TXT/output/build/rootfs/per-package/host-tiff/host/lib ../libtiff/.libs/libtiff.so ../port/.libs/libport.a -lLerc -ljbig -lm -Wl,-rpath -Wl,/home/dragon/src/ft/ftcommunity-TXT/output/build/rootfs/build/host-tiff-4.6.0/libtiff/.libs -Wl,-rpath -Wl,/home/dragon/src/ft/ftcommunity-TXT/output/build/rootfs/per-package/host-tiff/host/lib /usr/bin/ld: ../libtiff/.libs/libtiff.so: undefined reference to `deflateInit_' /usr/bin/ld: ../libtiff/.libs/libtiff.so: undefined reference to `deflate' /usr/bin/ld: ../libtiff/.libs/libtiff.so: undefined reference to `deflateEnd' /usr/bin/ld: ../libtiff/.libs/libtiff.so: undefined reference to `inflate' Signed-off-by: Peter Korsgaard (cherry picked from commit a4011ec1e13baa1190a41d949ad2cd945a9ecbe2) Signed-off-by: Peter Korsgaard --- package/tiff/tiff.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package/tiff/tiff.mk b/package/tiff/tiff.mk index e384e8b814..8ec53d4fe1 100644 --- a/package/tiff/tiff.mk +++ b/package/tiff/tiff.mk @@ -16,6 +16,7 @@ TIFF_INSTALL_STAGING = YES # support in tiff, or that would create a circular dependency. TIFF_CONF_OPTS = \ --disable-contrib \ + --disable-lerc \ --disable-tests \ --disable-webp @@ -24,6 +25,7 @@ TIFF_DEPENDENCIES = host-pkgconf HOST_TIFF_CONF_OPTS = \ --disable-cxx \ --disable-zlib \ + --disable-lerc \ --disable-libdeflate \ --disable-lzma \ --disable-jpeg \ From peter at korsgaard.com Thu May 2 08:28:22 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 10:28:22 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] DEVELOPERS: remove Thomas De Schampheleire Message-ID: <20240502083654.BE55286608@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=aefc8730aaed3639692de8e0f93715d846a1100e branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x No longer active in Buildroot. Keeping my name in the list sets the wrong expectation regarding package updates or support. Signed-off-by: Thomas De Schampheleire Signed-off-by: Peter Korsgaard (cherry picked from commit 1a015540278ba742b5a77e90e80e2f858af14f04) Signed-off-by: Peter Korsgaard --- DEVELOPERS | 41 ----------------------------------------- 1 file changed, 41 deletions(-) diff --git a/DEVELOPERS b/DEVELOPERS index 8ccf6ff46c..a2a2c56a13 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2949,47 +2949,6 @@ F: package/openlayers/ F: package/vuejs/ F: package/vuejs-router/ -N: Thomas De Schampheleire -F: docs/manual/ -F: package/cereal/ -F: package/chartjs/ -F: package/datatables/ -F: package/datatables-buttons/ -F: package/datatables-fixedcolumns/ -F: package/datatables-responsive/ -F: package/jszip/ -F: package/libtelnet/ -F: package/opkg-utils/ -F: package/perl-convert-asn1/ -F: package/perl-crypt-blowfish/ -F: package/perl-crypt-cbc/ -F: package/perl-crypt-openssl-aes/ -F: package/perl-devel-cycle/ -F: package/perl-devel-size/ -F: package/perl-i18n/ -F: package/perl-locale-maketext-lexicon/ -F: package/perl-lwp-protocol-https/ -F: package/perl-math-int64/ -F: package/perl-math-prime-util/ -F: package/perl-mime-base64-urlsafe/ -F: package/perl-mojolicious-plugin-authentication/ -F: package/perl-mojolicious-plugin-authorization/ -F: package/perl-mojolicious-plugin-cspheader/ -F: package/perl-mojolicious-plugin-i18n/ -F: package/perl-mojolicious-plugin-securityheader/ -F: package/perl-mozilla-ca/ -F: package/perl-net-snmp/ -F: package/perl-net-ssh2/ -F: package/perl-net-telnet/ -F: package/perl-path-class/ -F: package/pigz/ -F: package/popperjs/ -F: package/xenomai/ -F: support/scripts/size-stats -F: support/testing/tests/package/test_perl_lwp_protocol_https.py -F: utils/size-stats-compare -F: toolchain/ - N: Thomas Devoogdt F: package/fluent-bit/ F: package/libsoup3/ From peter at korsgaard.com Thu May 2 08:29:58 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 10:29:58 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/tiff: explicitly disable jbig support for host and target Message-ID: <20240502083654.E26068660B@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=02ff38a44ac38b98ce7b15dedd7af82d1315ca90 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x BR2_PACKAGE_TIFF_JBIG did actually not do anything, as no explicit --enable-jbig was passed to configure and there is no libjbig in Buildroot, so drop it and instead explicitly disable jbig support. Also add --disable-jbig for the host build, which was missed when host support was added in commit 91b16fbbf9db (tiff: add host variant). As the TIFF_JBIG option was a noop, do not add legacy handling for it. Signed-off-by: Peter Korsgaard (cherry picked from commit a7d491b0ffc5c0876053cc94c4112e73096aa5c2) Signed-off-by: Peter Korsgaard --- package/tiff/Config.in | 4 ---- package/tiff/tiff.mk | 6 ++---- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/package/tiff/Config.in b/package/tiff/Config.in index d1004d6668..d357d08406 100644 --- a/package/tiff/Config.in +++ b/package/tiff/Config.in @@ -63,10 +63,6 @@ config BR2_PACKAGE_TIFF_OLD_JPEG bool "Old JPEG decompression" default y -config BR2_PACKAGE_TIFF_JBIG - bool "JBIG compression" - default y - config BR2_PACKAGE_TIFF_UTILITIES bool "tiff utilities" help diff --git a/package/tiff/tiff.mk b/package/tiff/tiff.mk index 8ec53d4fe1..0e5e0dd48a 100644 --- a/package/tiff/tiff.mk +++ b/package/tiff/tiff.mk @@ -17,6 +17,7 @@ TIFF_INSTALL_STAGING = YES TIFF_CONF_OPTS = \ --disable-contrib \ --disable-lerc \ + --disable-jbig \ --disable-tests \ --disable-webp @@ -28,6 +29,7 @@ HOST_TIFF_CONF_OPTS = \ --disable-lerc \ --disable-libdeflate \ --disable-lzma \ + --disable-jbig \ --disable-jpeg \ --disable-tests \ --disable-webp \ @@ -101,10 +103,6 @@ ifneq ($(BR2_PACKAGE_TIFF_OLD_JPEG),y) TIFF_CONF_OPTS += --disable-old-jpeg endif -ifneq ($(BR2_PACKAGE_TIFF_JBIG),y) -TIFF_CONF_OPTS += --disable-jbig -endif - ifeq ($(BR2_PACKAGE_TIFF_UTILITIES),y) TIFF_CONF_OPTS += --enable-tools else From peter at korsgaard.com Thu May 2 08:36:23 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 10:36:23 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/gdb: bump 14.x series from 14.1 to 14.2 Message-ID: <20240502083654.EEC1786608@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=fe8897edff7da06e71eb7abddd96aa69b30a4071 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x According to https://www.sourceware.org/gdb/: This is a minor corrective release over GDB 14.1, fixing the following issues: PR symtab/31112 (DLL export forwarding is broken) PR c++/31128 (gdb crashes when trying to print a global variable stub without a running inferior) PR tdep/31254 ([gdb/tdep, arm] FAIL: gdb.threads/staticthreads.exp: up 10) PR gdb/31256 (Crash with basic 'list .') PR python/31366 (Frame.static_link() segfaults) Signed-off-by: Thomas Petazzoni Signed-off-by: Yann E. MORIN (cherry picked from commit bfefed17a9e5a421b3217685003d3b22c99de4ab) Signed-off-by: Peter Korsgaard --- package/gdb/Config.in.host | 2 +- package/gdb/gdb.hash | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/gdb/Config.in.host b/package/gdb/Config.in.host index 891e45948e..53706cd3ee 100644 --- a/package/gdb/Config.in.host +++ b/package/gdb/Config.in.host @@ -67,5 +67,5 @@ config BR2_GDB_VERSION default "13.2" if BR2_GDB_VERSION_13 || !BR2_PACKAGE_HOST_GDB # When making 14.x the default, or 14.x becomes the oldest version, # be sure to update the target variant to properly select mpfr. - default "14.1" if BR2_GDB_VERSION_14 + default "14.2" if BR2_GDB_VERSION_14 depends on BR2_PACKAGE_GDB || BR2_PACKAGE_HOST_GDB diff --git a/package/gdb/gdb.hash b/package/gdb/gdb.hash index c62da28cbf..144f6da296 100644 --- a/package/gdb/gdb.hash +++ b/package/gdb/gdb.hash @@ -3,7 +3,7 @@ sha512 3653762ac008e065c37cd641653184c9ff7ce51ee2222ade1122bec9d6cc64dffd4fb748 sha512 07e9026423438049b11f4f784d57401ece4e940570f613bd6958b3714fe7fbc2c048470bcce3e7d7d9f93331cdf3881d30dcc964cb113a071143a02b28e5b127 gdb-11.2.tar.xz sha512 425568d2e84672177d0fb87b1ad7daafdde097648d605e30cf0656970f66adc6a82ca2d83375ea4be583e9683a340e5bfdf5819668ddf66728200141ae50ff2d gdb-12.1.tar.xz sha512 8185d3e11ab60dafff5860a5016577bfe7dd7547ef01ebc867bc247603d82b74ff74c4f29492c7d2aee57076f52be33e289f4c6b414a4b870d4b3004909f4c34 gdb-13.2.tar.xz -sha512 575e198105076fc4a88f68591aa114ab9c1196e84386a3f7b9b58fe5f30cdeed33f6a5f957b68f08c47284ec922bb60c964627e238471419673fd913575ce427 gdb-14.1.tar.xz +sha512 7e07941f1fe661288cc571b4964012ceabc1760624fce20320db2f470c01439b2386f859b5288da13204b758e2e3b22a74c68c012178db93b9529b06f1e22ede gdb-14.2.tar.xz # Locally calculated (fetched from Github) sha512 3518b47d5c11d1fb478ee152bde1719363f9391db73f3b9f5491217c17742bef8ebca6a51a40302dfaa9476c5a32a8b8f70a4bf64289422dea5f750ae53ab88d gdb-arc-2023.09-release.tar.gz From dario.binacchi at amarulasolutions.com Thu May 2 09:09:39 2024 From: dario.binacchi at amarulasolutions.com (Dario Binacchi) Date: Thu, 2 May 2024 11:09:39 +0200 Subject: [Buildroot] [RFC PATCH 1/1] support/scripts/apply-patches.sh: set the maximum fuzz factor to 1 Message-ID: <20240502090939.748610-1-dario.binacchi@amarulasolutions.com> This patch was created as a fix to a problem that occurred during the compilation of QEMU: >>> qemu 8.1.1 Patching Applying 0001-tests-fp-disable-fp-bench-build-by-default.patch using patch: patching file tests/fp/meson.build Hunk #1 succeeded at 138 with fuzz 2 (offset -502 lines). Applying 0002-softmmu-qemu-seccomp.c-add-missing-header-for-CLONE_.patch using patch: patching file softmmu/qemu-seccomp.c Applying 0004-tracing-install-trace-events-file-only-if-necessary.patch using patch: patching file trace/meson.build With the bump to version 8.1.1, the patch that disabled the compilation of the fp-bench test does not report any errors, even though the patch itself is no longer applicable. The only noticeable message is: "Hunk #1 succeeded at 138 with fuzz 2 (offset -502 lines)." As reported by the patch man page: "With context diffs, and to a lesser extent with normal diffs, patch can detect when the line numbers mentioned in the patch are incorrect, and attempts to find the correct place to apply each hunk of the patch. As a first guess, it takes the line number mentioned for the hunk, plus or minus any offset used in applying the previous hunk. If that is not the correct place, patch scans both forwards and backwards for a set of lines matching the context given in the hunk. First patch looks for a place where all lines of the context match. If no such place is found, and it's a context diff, and the maximum fuzz factor is set to 1 or more, then another scan takes place ignoring the first and last line of context. If that fails, and the maximum fuzz factor is set to 2 or more, the first two and last two lines of context are ignored, and another scan is made. The default maximum fuzz factor is 2. If the hunk is installed at a different line from the line number specified in the diff, you are told the offset. A single large offset may indicate that a hunk was installed in the wrong place. You are also told if a fuzz factor was used to make the match, in which case you should also be slightly suspicious." By setting the maximum fuzz factor to 1, we reduce the possibility that patches which cannot be applied are incorrectly reported as valid. Signed-off-by: Dario Binacchi --- support/scripts/apply-patches.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/support/scripts/apply-patches.sh b/support/scripts/apply-patches.sh index 6da83f6826e9..999384cbbd5b 100755 --- a/support/scripts/apply-patches.sh +++ b/support/scripts/apply-patches.sh @@ -114,7 +114,7 @@ function apply_patch { exit 1 fi echo "${path}/${patch}" >> ${builddir}/.applied_patches_list - ${uncomp} "${path}/$patch" | patch -g0 -p1 --no-backup-if-mismatch -d "${builddir}" -t -N $silent + ${uncomp} "${path}/$patch" | patch -F1 -g0 -p1 --no-backup-if-mismatch -d "${builddir}" -t -N $silent if [ $? != 0 ] ; then echo "Patch failed! Please fix ${patch}!" exit 1 -- 2.43.0 From ju.o at free.fr Thu May 2 10:02:36 2024 From: ju.o at free.fr (Julien Olivain) Date: Thu, 02 May 2024 12:02:36 +0200 Subject: [Buildroot] [PATCH 1/1] package/fwts: disable parallel build In-Reply-To: References: <20240420132251.1349622-1-ju.o@free.fr> <20240501215523.5bc7ce23@windsurf> Message-ID: Hi again Thomas, On 01/05/2024 22:27, Julien Olivain wrote: > Hi Thomas, > > On 01/05/2024 21:55, Thomas Petazzoni wrote: >> On Sat, 20 Apr 2024 15:22:51 +0200 >> Julien Olivain wrote: >> >>> fwts randomly fail to build in parallel with error: >>> >>> mv: cannot stat 'dtcompilerparser.tab.c': No such file or >>> directory >>> mv: cannot stat 'prparser.tab.c': No such file or directory >>> >>> This is a known upstream issue. See: >>> https://github.com/fwts/fwts/issues/7 >>> >>> This commit workaround this issue by disabling parallel builds. >>> >>> Signed-off-by: Julien Olivain >>> --- >>> package/fwts/fwts.mk | 3 +++ >>> 1 file changed, 3 insertions(+) >> >> Hm, I don't see any failures in the autobuilders. Did you encounter >> this issue personally? Why don't we see it in the autobuilders? > > On my side, I see those failures on systems with with 20 cores and more > on an > idle system doing only the Buildroot build. Maybe the autobuilders have > a > different load, or less cores? After testing a bit more, it appears the build always fail with GNU make 4.4.1. Testing in the Buildroot docker reference image with the same conditions (20+ cores, idle system), and which includes GNU make 4.3 does not fail. Looking at the host load, it seems GNU make 4.3 serializes some part of the build, whereas GNU make 4.4.1 parallelize most of the build (and fail). FWTS uses the .NOTPARALLEL special target with prerequisites: https://github.com/fwts/fwts/blob/V24.03.00/src/libfwtsiasl/Makefile.am#L67 It seems the two versions of GNU make are not honoring this the same way. It also seems the .NOTPARALLEL _with_ prerequisites is a feature added in GNU make 4.4. See: https://git.savannah.gnu.org/cgit/make.git/commit/?id=f6ea899d83bf00fe9201fde0ca9cf7af8e443677 https://lists.gnu.org/archive/html/help-make/2022-10/msg00020.html Finally, the FWTS Makefile rules might also be incorrect, at: https://github.com/fwts/fwts/blob/V24.03.00/src/libfwtsiasl/Makefile.am#L67 Quoting the Make manual: https://www.gnu.org/software/make/manual/html_node/Parallel-Disable.html """ If the .NOTPARALLEL special target has prerequisites, then each of those prerequisites will be considered a target and all prerequisites of these targets will be run serially. """ Note the serialization will happen on the prerequisites of the target set as prerequisites of .NOTPARALLEL. My current understanding is that GNU Make 4.3 just ignores the prerequisites of the .NOTPARALLEL and interprets it as if there was none, which makes it serialize a bigger part of the build. With this analysis, I may have an idea of a patch in the FWTS Makefile.am. I'll do some more tests and propose a new patch. Best regards, Julien. From peter at korsgaard.com Thu May 2 11:15:40 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 13:15:40 +0200 Subject: [Buildroot] [PATCH 1/1] package/cmake: bump version to 3.28.3 In-Reply-To: <20240224115922.234596-1-bernd@kuhls.net> (Bernd Kuhls's message of "Sat, 24 Feb 2024 12:59:22 +0100") References: <20240224115922.234596-1-bernd@kuhls.net> Message-ID: <87h6fg79cz.fsf@dell.be.48ers.dk> >>>>> "Bernd" == Bernd Kuhls writes: > Release notes: > https://www.kitware.com/cmake-3-28-3-available-for-download/ > https://www.kitware.com/cmake-3-28-2-available-for-download/ > Signed-off-by: Bernd Kuhls Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 11:16:33 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 13:16:33 +0200 Subject: [Buildroot] [PATCH 1/1] package/gdal: add openssl optional dependency In-Reply-To: <548dca9c-3ca1-4d36-93cc-e15a827eefa7@mind.be> (Arnout Vandecappelle via buildroot's message of "Sun, 7 Apr 2024 16:49:29 +0200") References: <20240225092425.783094-1-fontaine.fabrice@gmail.com> <548dca9c-3ca1-4d36-93cc-e15a827eefa7@mind.be> Message-ID: <87cyq479bi.fsf@dell.be.48ers.dk> >>>>> "Arnout" == Arnout Vandecappelle via buildroot writes: > On 25/02/2024 10:24, Fabrice Fontaine wrote: >> Signed-off-by: Fabrice Fontaine > Applied to master, thanks. Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 11:19:06 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 13:19:06 +0200 Subject: [Buildroot] [PATCH v3 1/1] package/brcmfmac_sdio-firmware-rpi: bump version to 26ff205 In-Reply-To: <15c47e9c-7ab6-4bc6-afd7-6afbfb8c88d7@mind.be> (Arnout Vandecappelle via buildroot's message of "Sun, 7 Apr 2024 17:12:17 +0200") References: <20240229052236.50171-1-nisargjhaveri@gmail.com> <15c47e9c-7ab6-4bc6-afd7-6afbfb8c88d7@mind.be> Message-ID: <878r0s7979.fsf@dell.be.48ers.dk> >>>>> "Arnout" == Arnout Vandecappelle via buildroot writes: > On 31/03/2024 22:03, Nisarg Jhaveri wrote: >> This should also be backported to?2024.02.1 as the builds for >> Raspberry Pi boards are broken >> since?13ba668a2da3a0dcb386578ce15b00a444101dbe. > The proper way to indicate this is with a Fixes: tag. >> Backport to:?2024.02.1 >> On Thu, Feb 29, 2024 at 10:53?AM Nisarg Jhaveri >> > wrote: >> The current version is more than 2 years old. Update to the >> latest. >> A lot of the files are symlinked. Instead of individually restoring the >> links, using `cp --remove-destination --no-dereference` and `chmod` instead >> of `install`. > Please make sure the commit message is wrapped at 72 columns. >> Signed-off-by: Nisarg Jhaveri > > >> --- >> Changes v2 -> v3: >> ? - Attempt to fix patch formatting >> Changes v1 -> v2: >> ? - Attempt to fix patch formatting >> --- >> ?.../brcmfmac_sdio-firmware-rpi.hash? ? ? ? ? ?|? 4 +-- >> ?.../brcmfmac_sdio-firmware-rpi.mk >> ? ? ? ? ? ?| 27 >> +++++++------------ >> ?2 files changed, 12 insertions(+), 19 deletions(-) >> diff --git >> a/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.hash >> b/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.hash >> index a12e92cbac..aa1043518b 100644 >> --- a/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.hash >> +++ b/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.hash >> @@ -1,3 +1,3 @@ >> ?# Locally calculated >> -sha256? >> e51b717c2a60ca29fcdd8e04e07c00996226cb48fa56a8ad1934b5f4ddee2e3d >> brcmfmac_sdio-firmware-rpi-ea9963f3f77b4bb6cd280577eb115152bdd67e8d.tar.gz >> -sha256? >> b16056fc91b82a0e3e8de8f86c2dac98201aa9dc3cbd33e8d38f1b087fcec30d >> LICENCE.broadcom_bcm43xx >> +sha256? >> 2f0917b104739455dd488dd8f5af2ee4430801a7ac8fe8d9866e74bfbb185356 >> brcmfmac_sdio-firmware-rpi-26ff205b45dc109b498a70aaf182804ad9dbfea5.tar.gz >> +sha256? >> ea8b7b7b6cfc6fd30587ed977100f6a542734ce53218b5b63de16180acddd599 >> LICENCE > The license file changed name from LICENCE to LICENSE. >> diff --git >> a/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.mk >> >> b/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.mk >> >> index 5332bf53d7..7860de3ef7 100644 >> --- a/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.mk >> >> +++ b/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.mk >> >> @@ -4,33 +4,26 @@ >> ?# >> ?################################################################################ >> -BRCMFMAC_SDIO_FIRMWARE_RPI_VERSION = >> ea9963f3f77b4bb6cd280577eb115152bdd67e8d >> +BRCMFMAC_SDIO_FIRMWARE_RPI_VERSION = 26ff205b45dc109b498a70aaf182804ad9dbfea5 >> ?BRCMFMAC_SDIO_FIRMWARE_RPI_SITE = $(call >> github,LibreELEC,brcmfmac_sdio-firmware-rpi,$(BRCMFMAC_SDIO_FIRMWARE_RPI_VERSION)) >> ?BRCMFMAC_SDIO_FIRMWARE_RPI_LICENSE = PROPRIETARY >> -BRCMFMAC_SDIO_FIRMWARE_RPI_LICENSE_FILES = LICENCE.broadcom_bcm43xx >> +BRCMFMAC_SDIO_FIRMWARE_RPI_LICENSE_FILES = LICENCE >> ?ifeq ($(BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_BT),y) >> ?define BRCMFMAC_SDIO_FIRMWARE_RPI_INSTALL_TARGET_BT >> -? ? ? ?$(INSTALL) -d $(TARGET_DIR)/lib/firmware/brcm >> -? ? ? ?$(INSTALL) -m 0644 $(@D)/firmware/brcm/*.hcd >> $(TARGET_DIR)/lib/firmware/brcm >> +? ? ? ?$(INSTALL) -d $(TARGET_DIR)/lib/firmware/brcm >> $(TARGET_DIR)/lib/firmware/synaptics > This synaptics directory is new, that should have been mentioned in > the commit message. > I added the license file rename and modified the commit message as follows. > package/brcmfmac_sdio-firmware-rpi: bump version to 26ff205 > The current version is more than 2 years old. Update to the latest. > This fixes runtime issues with the newer kernel used in our defconfigs > since commit 13ba668a2da3a0dcb386578ce15b00a444101dbe. > License file changed name from LICENCE to LICENSE but is otherwise > unchanged. > There is a new directory "synaptics", install this one as well. > A lot of the files are symlinks. "install" creates copies for these, > which consumes a lot of unnecessary space. Instead of individually > restoring the links, using `cp --remove-destination --no-dereference` > and `chmod` instead of `install`. > Fixes: 13ba668a2da3a0dcb386578ce15b00a444101dbe > Signed-off-by: Nisarg Jhaveri > [Arnout: correct license file name] > Signed-off-by: Arnout Vandecappelle > Applied to master, thanks. Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 11:20:07 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 13:20:07 +0200 Subject: [Buildroot] [PATCH 1/1] package/google-breakpad: needs C++17 In-Reply-To: <20240303132222.151704-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sun, 3 Mar 2024 14:22:22 +0100") References: <20240303132222.151704-1-fontaine.fabrice@gmail.com> Message-ID: <874jbg795k.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > Fix the following build failure raised since commit > 32c1fbad554d4c2bfbe56a652333195c8ae67904: > configure: error: *** A compiler with support for C++17 language features is required. > Fixes: 32c1fbad554d4c2bfbe56a652333195c8ae67904 > - http://autobuild.buildroot.org/results/451bae7151a74cbcb5d199b8516e9c255a0953fe > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 11:19:46 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 13:19:46 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/google-breakpad: needs C++17 Message-ID: <20240502112239.94AD38661A@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=eb80cd6563320cde6a9f7dd2b820c80d1360d728 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Fix the following build failure raised since commit 32c1fbad554d4c2bfbe56a652333195c8ae67904: configure: error: *** A compiler with support for C++17 language features is required. Fixes: 32c1fbad554d4c2bfbe56a652333195c8ae67904 - http://autobuild.buildroot.org/results/451bae7151a74cbcb5d199b8516e9c255a0953fe Signed-off-by: Fabrice Fontaine [Arnout: also update BR2_GOOGLE_BREAKPAD_ENABLE] Signed-off-by: Arnout Vandecappelle (cherry picked from commit 109362c90418d9595e3bab0c9ab6d1c8a24f01db) Signed-off-by: Peter Korsgaard --- Config.in | 2 +- package/google-breakpad/Config.in | 6 +++--- package/sentry-native/Config.in | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Config.in b/Config.in index 113adf0755..e4f58f3f66 100644 --- a/Config.in +++ b/Config.in @@ -586,7 +586,7 @@ config BR2_ENABLE_LTO config BR2_GOOGLE_BREAKPAD_ENABLE bool "Enable google-breakpad support" depends on BR2_INSTALL_LIBSTDCPP - depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17 depends on BR2_USE_WCHAR depends on BR2_TOOLCHAIN_HAS_THREADS depends on BR2_TOOLCHAIN_USES_GLIBC diff --git a/package/google-breakpad/Config.in b/package/google-breakpad/Config.in index 5c7f4bb7ba..4e2d98eb04 100644 --- a/package/google-breakpad/Config.in +++ b/package/google-breakpad/Config.in @@ -6,7 +6,7 @@ config BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS config BR2_PACKAGE_GOOGLE_BREAKPAD bool "google-breakpad" depends on BR2_INSTALL_LIBSTDCPP - depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17 depends on BR2_USE_WCHAR depends on BR2_TOOLCHAIN_HAS_THREADS depends on BR2_TOOLCHAIN_USES_GLIBC @@ -45,10 +45,10 @@ config BR2_PACKAGE_GOOGLE_BREAKPAD_TOOLS endif -comment "google-breakpad requires a glibc toolchain w/ wchar, thread, C++, gcc >= 4.8" +comment "google-breakpad requires a glibc toolchain w/ wchar, threads, C++, gcc >= 7" depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS depends on BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ !BR2_TOOLCHAIN_HAS_THREADS || \ !BR2_TOOLCHAIN_USES_GLIBC || \ - !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + !BR2_TOOLCHAIN_GCC_AT_LEAST_7 diff --git a/package/sentry-native/Config.in b/package/sentry-native/Config.in index 7a3cbd36ad..88db2779f1 100644 --- a/package/sentry-native/Config.in +++ b/package/sentry-native/Config.in @@ -1,7 +1,7 @@ config BR2_PACKAGE_SENTRY_NATIVE bool "sentry-native" depends on BR2_INSTALL_LIBSTDCPP # google-breakpad - depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # google-breakpad + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # google-breakpad depends on BR2_USE_WCHAR # google-breakpad depends on BR2_TOOLCHAIN_HAS_THREADS # google-breakpad # google-breakpad is restricted to glibc or uClibc, but @@ -19,10 +19,10 @@ config BR2_PACKAGE_SENTRY_NATIVE https://github.com/getsentry/sentry-native -comment "sentry-native needs a glibc toolchain with w/ wchar, thread, C++, gcc >= 4.8" +comment "sentry-native needs a glibc toolchain with w/ wchar, threads, C++, gcc >= 7" depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS depends on BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ !BR2_TOOLCHAIN_HAS_THREADS || \ !BR2_TOOLCHAIN_USES_GLIBC || \ - !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + !BR2_TOOLCHAIN_GCC_AT_LEAST_7 From peter at korsgaard.com Thu May 2 11:16:09 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 13:16:09 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/gdal: add openssl optional dependency Message-ID: <20240502112239.7C54E86618@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=a22a40a1dc7a459e0f8a503aae182f2c50791f05 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: Fabrice Fontaine Signed-off-by: Arnout Vandecappelle (cherry picked from commit d2f59ef0c4ae67827f62933a8db51eb0e2043b24) Signed-off-by: Peter Korsgaard --- package/gdal/gdal.mk | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/package/gdal/gdal.mk b/package/gdal/gdal.mk index 247e13663c..77ffb514c2 100644 --- a/package/gdal/gdal.mk +++ b/package/gdal/gdal.mk @@ -46,7 +46,6 @@ GDAL_CONF_OPTS = \ -DGDAL_USE_BLOSC=OFF \ -DGDAL_USE_BRUNSLI=OFF \ -DGDAL_USE_CFITSIO=OFF \ - -DGDAL_USE_OPENSSL=OFF \ -DGDAL_USE_CRYPTOPP=OFF \ -DGDAL_USE_CRNLIB=OFF \ -DGDAL_USE_ECW=OFF \ @@ -130,6 +129,13 @@ else GDAL_CONF_OPTS += -DENABLE_DEFLATE64=OFF endif +ifeq ($(BR2_PACKAGE_OPENSSL),y) +GDAL_DEPENDENCIES += openssl +GDAL_CONF_OPTS += -DGDAL_USE_OPENSSL=ON +else +GDAL_CONF_OPTS += -DGDAL_USE_OPENSSL=OFF +endif + ifeq ($(BR2_PACKAGE_POSTGRESQL),y) GDAL_DEPENDENCIES += postgresql GDAL_CONF_OPTS += -DGDAL_USE_POSTGRESQL=ON From peter at korsgaard.com Thu May 2 11:15:22 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 13:15:22 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/cmake: bump version to 3.28.3 Message-ID: <20240502112239.70AAA86617@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=f9ea43199dfbdcf654349e5675692d1b7059f115 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Release notes: https://www.kitware.com/cmake-3-28-3-available-for-download/ https://www.kitware.com/cmake-3-28-2-available-for-download/ Signed-off-by: Bernd Kuhls Signed-off-by: Arnout Vandecappelle (cherry picked from commit 529c47862e0dfc369605824716759cbbd1f0f87b) Signed-off-by: Peter Korsgaard --- package/cmake/cmake.hash | 4 ++-- package/cmake/cmake.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/cmake/cmake.hash b/package/cmake/cmake.hash index 51fff6c3ef..74b4a0a3a8 100644 --- a/package/cmake/cmake.hash +++ b/package/cmake/cmake.hash @@ -1,5 +1,5 @@ -# From https://cmake.org/files/v3.28/cmake-3.28.1-SHA-256.txt -sha256 15e94f83e647f7d620a140a7a5da76349fc47a1bfed66d0f5cdee8e7344079ad cmake-3.28.1.tar.gz +# From https://cmake.org/files/v3.28/cmake-3.28.3-SHA-256.txt +sha256 72b7570e5c8593de6ac4ab433b73eab18c5fb328880460c86ce32608141ad5c1 cmake-3.28.3.tar.gz # Locally calculated sha256 4a01ccf2dc580ba570d02bc015bbe0ec92f1f318717aae9540ba841ba7946756 Copyright.txt diff --git a/package/cmake/cmake.mk b/package/cmake/cmake.mk index 23d00b95c5..49d1f9fea5 100644 --- a/package/cmake/cmake.mk +++ b/package/cmake/cmake.mk @@ -6,7 +6,7 @@ # When updating the version, please also update BR2_HOST_CMAKE_AT_LEAST_X_Y CMAKE_VERSION_MAJOR = 3.28 -CMAKE_VERSION = $(CMAKE_VERSION_MAJOR).1 +CMAKE_VERSION = $(CMAKE_VERSION_MAJOR).3 CMAKE_SITE = https://cmake.org/files/v$(CMAKE_VERSION_MAJOR) CMAKE_LICENSE = BSD-3-Clause CMAKE_LICENSE_FILES = Copyright.txt From peter at korsgaard.com Thu May 2 11:18:23 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 13:18:23 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/brcmfmac_sdio-firmware-rpi: bump version to 26ff205 Message-ID: <20240502112239.87EE086619@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=762717fdcfc56664f5b4ff183d2faf90006f4337 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x The current version is more than 2 years old. Update to the latest. This fixes runtime issues with the newer kernel used in our defconfigs since commit 13ba668a2da3a0dcb386578ce15b00a444101dbe. License file changed name from LICENCE to LICENSE but is otherwise unchanged. There is a new directory "synaptics", install this one as well. A lot of the files are symlinks. "install" creates copies for these, which consumes a lot of unnecessary space. Instead of individually restoring the links, using `cp --remove-destination --no-dereference` and `chmod` instead of `install`. Fixes: 13ba668a2da3a0dcb386578ce15b00a444101dbe Signed-off-by: Nisarg Jhaveri [Arnout: correct license file name] Signed-off-by: Arnout Vandecappelle (cherry picked from commit ab2410053770b92ec1ee12d9da271b432053c38c) Signed-off-by: Peter Korsgaard --- .../brcmfmac_sdio-firmware-rpi.hash | 4 ++-- .../brcmfmac_sdio-firmware-rpi.mk | 27 ++++++++-------------- 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.hash b/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.hash index a12e92cbac..c20abfc26c 100644 --- a/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.hash +++ b/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 e51b717c2a60ca29fcdd8e04e07c00996226cb48fa56a8ad1934b5f4ddee2e3d brcmfmac_sdio-firmware-rpi-ea9963f3f77b4bb6cd280577eb115152bdd67e8d.tar.gz -sha256 b16056fc91b82a0e3e8de8f86c2dac98201aa9dc3cbd33e8d38f1b087fcec30d LICENCE.broadcom_bcm43xx +sha256 2f0917b104739455dd488dd8f5af2ee4430801a7ac8fe8d9866e74bfbb185356 brcmfmac_sdio-firmware-rpi-26ff205b45dc109b498a70aaf182804ad9dbfea5.tar.gz +sha256 ea8b7b7b6cfc6fd30587ed977100f6a542734ce53218b5b63de16180acddd599 LICENSE diff --git a/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.mk b/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.mk index 5332bf53d7..95707487a9 100644 --- a/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.mk +++ b/package/brcmfmac_sdio-firmware-rpi/brcmfmac_sdio-firmware-rpi.mk @@ -4,33 +4,26 @@ # ################################################################################ -BRCMFMAC_SDIO_FIRMWARE_RPI_VERSION = ea9963f3f77b4bb6cd280577eb115152bdd67e8d +BRCMFMAC_SDIO_FIRMWARE_RPI_VERSION = 26ff205b45dc109b498a70aaf182804ad9dbfea5 BRCMFMAC_SDIO_FIRMWARE_RPI_SITE = $(call github,LibreELEC,brcmfmac_sdio-firmware-rpi,$(BRCMFMAC_SDIO_FIRMWARE_RPI_VERSION)) BRCMFMAC_SDIO_FIRMWARE_RPI_LICENSE = PROPRIETARY -BRCMFMAC_SDIO_FIRMWARE_RPI_LICENSE_FILES = LICENCE.broadcom_bcm43xx +BRCMFMAC_SDIO_FIRMWARE_RPI_LICENSE_FILES = LICENSE ifeq ($(BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_BT),y) define BRCMFMAC_SDIO_FIRMWARE_RPI_INSTALL_TARGET_BT - $(INSTALL) -d $(TARGET_DIR)/lib/firmware/brcm - $(INSTALL) -m 0644 $(@D)/firmware/brcm/*.hcd $(TARGET_DIR)/lib/firmware/brcm + $(INSTALL) -d $(TARGET_DIR)/lib/firmware/brcm $(TARGET_DIR)/lib/firmware/synaptics + cp --remove-destination --no-dereference $(@D)/firmware/brcm/*.hcd $(TARGET_DIR)/lib/firmware/brcm + cp --remove-destination --no-dereference $(@D)/firmware/synaptics/*.hcd $(TARGET_DIR)/lib/firmware/synaptics + chmod 644 $(TARGET_DIR)/lib/firmware/brcm/*.hcd $(TARGET_DIR)/lib/firmware/synaptics/*.hcd endef endif ifeq ($(BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_WIFI),y) define BRCMFMAC_SDIO_FIRMWARE_RPI_INSTALL_TARGET_WIFI - $(INSTALL) -d $(TARGET_DIR)/lib/firmware/brcm - $(INSTALL) -m 0644 $(@D)/firmware/brcm/brcmfmac* $(TARGET_DIR)/lib/firmware/brcm - ln -sf ../cypress/cyfmac43430-sdio.bin $(TARGET_DIR)/lib/firmware/brcm/brcmfmac43430-sdio.bin - ln -sf ../cypress/cyfmac43430-sdio.clm_blob $(TARGET_DIR)/lib/firmware/brcm/brcmfmac43430-sdio.clm_blob - ln -sf brcmfmac43430-sdio.txt $(TARGET_DIR)/lib/firmware/brcm/brcmfmac43430-sdio.raspberrypi,3-model-b.txt - ln -sf brcmfmac43430-sdio.txt $(TARGET_DIR)/lib/firmware/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-w.txt - ln -sf ../cypress/cyfmac43455-sdio.bin $(TARGET_DIR)/lib/firmware/brcm/brcmfmac43455-sdio.bin - ln -sf ../cypress/cyfmac43455-sdio.clm_blob $(TARGET_DIR)/lib/firmware/brcm/brcmfmac43455-sdio.clm_blob - ln -sf brcmfmac43455-sdio.txt $(TARGET_DIR)/lib/firmware/brcm/brcmfmac43455-sdio.raspberrypi,3-model-a-plus.txt - ln -sf brcmfmac43455-sdio.txt $(TARGET_DIR)/lib/firmware/brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt - ln -sf brcmfmac43455-sdio.txt $(TARGET_DIR)/lib/firmware/brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.txt - $(INSTALL) -d $(TARGET_DIR)/lib/firmware/cypress - $(INSTALL) -m 0644 $(@D)/firmware/cypress/cyfmac* $(TARGET_DIR)/lib/firmware/cypress + $(INSTALL) -d $(TARGET_DIR)/lib/firmware/brcm $(TARGET_DIR)/lib/firmware/cypress + cp --remove-destination --no-dereference $(@D)/firmware/brcm/brcmfmac* $(TARGET_DIR)/lib/firmware/brcm + cp --remove-destination --no-dereference $(@D)/firmware/cypress/cyfmac* $(TARGET_DIR)/lib/firmware/cypress + chmod 644 $(TARGET_DIR)/lib/firmware/brcm/brcmfmac* $(TARGET_DIR)/lib/firmware/cypress/cyfmac* endef endif From peter at korsgaard.com Thu May 2 11:29:15 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 13:29:15 +0200 Subject: [Buildroot] [PATCH v2,1/1] package/libtracefs: fix musl build In-Reply-To: <3b2522a2-a2ea-42c0-b7ab-f8e33eca5b6d@mind.be> (Arnout Vandecappelle via buildroot's message of "Sun, 7 Apr 2024 17:44:42 +0200") References: <20240303173851.788985-1-fontaine.fabrice@gmail.com> <3b2522a2-a2ea-42c0-b7ab-f8e33eca5b6d@mind.be> Message-ID: <87zft85u5w.fsf@dell.be.48ers.dk> >>>>> "Arnout" == Arnout Vandecappelle via buildroot writes: > On 03/03/2024 18:38, Fabrice Fontaine wrote: >> Fix the following musl build failure raised since the addition of the >> package in commit b1dbd3f679e6660325472e3fdca72127d74e6929 if cunit is >> found: >> ../utest/tracefs-utest.c: In function 'test_uprobes_instance': >> ../utest/tracefs-utest.c:2492:19: error: 'PATH_MAX' undeclared (first use in this function) >> 2492 | char self[PATH_MAX] = { 0 }; >> | ^~~~~~~~ >> Fixes: b1dbd3f679e6660325472e3fdca72127d74e6929 >> - http://autobuild.buildroot.org/results/1a01883231dbc8a7688de26db9a08751165fe8fe >> Signed-off-by: Fabrice Fontaine > Applied to master, thanks. Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 11:29:34 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 13:29:34 +0200 Subject: [Buildroot] [PATCH 1/1] package/oatpp: disable tests In-Reply-To: <20240407135951.1868714-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sun, 7 Apr 2024 15:59:51 +0200") References: <20240407135951.1868714-1-fontaine.fabrice@gmail.com> Message-ID: <87v83w5u5d.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > Fix the following build failure raised since the addition of the package > in commit d5bba26801b352f591451cf73e0b7509de0e6850: > [100%] Linking CXX executable oatppAllTests > /home/buildroot/instance-0/output-1/per-package/oatpp/host/opt/ext-toolchain/m68k-buildroot-uclinux-uclibc/bin/ld.real: > cannot find -latomic: No such file or directory > Fixes: d5bba26801b352f591451cf73e0b7509de0e6850 > - http://autobuild.buildroot.org/results/1587b391baecdbb5a24a0c0b2c33d63cb71a2f7f > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 11:28:21 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 13:28:21 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/oatpp: disable tests Message-ID: <20240502113002.D762C86621@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=3b0771d4d5834eb39af313e065efd4623ec3f338 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Fix the following build failure raised since the addition of the package in commit d5bba26801b352f591451cf73e0b7509de0e6850: [100%] Linking CXX executable oatppAllTests /home/buildroot/instance-0/output-1/per-package/oatpp/host/opt/ext-toolchain/m68k-buildroot-uclinux-uclibc/bin/ld.real: cannot find -latomic: No such file or directory Fixes: d5bba26801b352f591451cf73e0b7509de0e6850 - http://autobuild.buildroot.org/results/1587b391baecdbb5a24a0c0b2c33d63cb71a2f7f Signed-off-by: Fabrice Fontaine Signed-off-by: Yann E. MORIN (cherry picked from commit 0af98ea2d889dd63bc6934236a625732ce28b059) Signed-off-by: Peter Korsgaard --- package/oatpp/oatpp.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/oatpp/oatpp.mk b/package/oatpp/oatpp.mk index c8b0c9694a..d3f6e1a9c2 100644 --- a/package/oatpp/oatpp.mk +++ b/package/oatpp/oatpp.mk @@ -8,7 +8,7 @@ OATPP_VERSION = 1.3.0 OATPP_SITE = $(call github,oatpp,oatpp,$(OATPP_VERSION)) OATPP_LICENSE = Apache-2.0 OATPP_LICENSE_FILES = LICENSE -OATPP_CONF_OPTS = -DBUILD_SHARED_LIBS=OFF +OATPP_CONF_OPTS = -DBUILD_SHARED_LIBS=OFF -DOATPP_BUILD_TESTS=OFF OATPP_INSTALL_STAGING = YES # Only builds a static lib and headers OATPP_INSTALL_TARGET = NO From peter at korsgaard.com Thu May 2 11:28:45 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 13:28:45 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/libtracefs: fix musl build Message-ID: <20240502113002.E8BB186622@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=344bcb651b944105cea6b5c3b7c442a1f135f9f2 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Fix the following musl build failure raised since the addition of the package in commit b1dbd3f679e6660325472e3fdca72127d74e6929 if cunit is found: ../utest/tracefs-utest.c: In function 'test_uprobes_instance': ../utest/tracefs-utest.c:2492:19: error: 'PATH_MAX' undeclared (first use in this function) 2492 | char self[PATH_MAX] = { 0 }; | ^~~~~~~~ Fixes: b1dbd3f679e6660325472e3fdca72127d74e6929 - http://autobuild.buildroot.org/results/1a01883231dbc8a7688de26db9a08751165fe8fe Signed-off-by: Fabrice Fontaine Signed-off-by: Arnout Vandecappelle (cherry picked from commit dece32b6f3957320bcb689394164151dd8707f3b) Signed-off-by: Peter Korsgaard --- ...Add-PATH_MAX-if-it-is-not-already-defined.patch | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/package/libtracefs/0002-libtracefs-utest-Add-PATH_MAX-if-it-is-not-already-defined.patch b/package/libtracefs/0002-libtracefs-utest-Add-PATH_MAX-if-it-is-not-already-defined.patch new file mode 100644 index 0000000000..121fee5adf --- /dev/null +++ b/package/libtracefs/0002-libtracefs-utest-Add-PATH_MAX-if-it-is-not-already-defined.patch @@ -0,0 +1,40 @@ +From ba750812f68f0f3314494558496c23f934f8faff Mon Sep 17 00:00:00 2001 +From: "Steven Rostedt (Google)" +Date: Thu, 22 Feb 2024 11:02:46 -0500 +Subject: libtracefs utest: Add PATH_MAX if it is not already defined + +In some setups PATH_MAX may not be defined (it is usually defined in +linux/limits.h), but we just use PATH_MAX as something to hold the paths +to the tracing files. In that case, just define it to 1024 if it's not +already defined. + +Link: https://lore.kernel.org/linux-trace-devel/20240222-utest-fixes-v2-1-7b8ee8dca0b7 at gmail.com/ + +Fixes: 845f16976929 ("libtracefs: Add unit tests") +Reported-by: Miko Larsson +Signed-off-by: Steven Rostedt (Google) + +Upstream: https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/commit/?id=ba750812f68f0f3314494558496c23f934f8faff +Signed-off-by: Fabrice Fontaine +--- + utest/tracefs-utest.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/utest/tracefs-utest.c b/utest/tracefs-utest.c +index 963fac7..07ecd32 100644 +--- a/utest/tracefs-utest.c ++++ b/utest/tracefs-utest.c +@@ -26,6 +26,10 @@ + + #define gettid() syscall(__NR_gettid) + ++#ifndef PATH_MAX ++#define PATH_MAX 1024 ++#endif ++ + #define TRACEFS_SUITE "tracefs library" + #define TEST_INSTANCE_NAME "cunit_test_iter" + #define TEST_TRACE_DIR "/tmp/trace_utest.XXXXXX" +-- +cgit 1.2.3-korg + From bb at ti.com Thu May 2 12:29:35 2024 From: bb at ti.com (Bryan Brattlof) Date: Thu, 2 May 2024 07:29:35 -0500 Subject: [Buildroot] [PATCH 00/11] update bsp binaries for TI SoCs In-Reply-To: References: <20240430-optee-update-v1-0-6f73c4903ec3@ti.com> Message-ID: <20240502122935.fgvb4otspby3hjz3@bryanbrattlof.com> Hi Romain, On May 1, 2024 thus sayeth Romain Naour: > Hello Bryan, All, > > Le 01/05/2024 ? 17:27, Bryan Brattlof via buildroot a ?crit?: > > Hello everyone! > > > > This series updates all the boot binaries (U-Boot, OP-TEE, TF-A, and > > Linux) to their latest versions to pull in all bug fixes and new > > features additions in these projects. > > > > This also includes a patch I send out a while ago just to keep things > > organized. > > > > https://lore.kernel.org/buildroot/20240402153328.1859642-1-bb at ti.com/ > > > > and finally some proof I didn't completely break something ;) > > > > https://paste.sr.ht/~bryanb/b666adef7da412de76efb5e4a68e68e0651f7928 > > We received only patch [4/11] boot/ti-k3-boot-firmware: bump to latest version > > Can you try to resend the series? > > Note: It would be better to use "boot/ti-k3-boot-firmware: bump to version > 09.02.00.009" > How odd, I didn't receive an error back from my client so I assumed they would show up eventually. Oh well. And yes I'll update the wording to be more explicit about which version we are switching to. ~Bryan From thomas at devoogdt.com Thu May 2 14:15:49 2024 From: thomas at devoogdt.com (Thomas Devoogdt) Date: Thu, 2 May 2024 16:15:49 +0200 Subject: [Buildroot] [PATCH v1 1/8] package/libsoup3: fix reference to atomic In-Reply-To: <20240502103049.3a143975@windsurf> References: <20240420185853.4134260-1-thomas@devoogdt.com> <20240502095605.32987057@windsurf> <20240502103049.3a143975@windsurf> Message-ID: Ah, Thanks, Thomas for pointing that out, and Fabrice for the patch. Kr, Thomas Op do 2 mei 2024 om 10:30 schreef Thomas Petazzoni : > > On Thu, 2 May 2024 10:15:53 +0200 > Fabrice Fontaine wrote: > > > > Could you have a look at fixing glib-2.0.pc instead? > > > > This patch is available since September 2023: > > https://patchwork.ozlabs.org/project/buildroot/patch/20230917185116.182810-1-fontaine.fabrice at gmail.com/ > > Awesome, I went ahead and applied this patch! > > Thomas > -- > Thomas Petazzoni, co-owner and CEO, Bootlin > Embedded Linux and Kernel engineering and training > https://bootlin.com > From romain.naour at smile.fr Thu May 2 14:18:09 2024 From: romain.naour at smile.fr (Romain Naour) Date: Thu, 2 May 2024 16:18:09 +0200 Subject: [Buildroot] [PATCH] configs/beagleboneai64_defconfig: new defconfig Message-ID: <20240502141809.2292787-1-romain.naour@smile.fr> Adds support for BeagleBone AI-64 board by introducing the beagleboneai64_defconfig file and related support files. Retrieve BSP settings from meta-ti (may be useful for other TI boards): - This defconfig requires u-boot binman support added in u-boot since 2023.10. See FOSDEM 2024 talk by TI folks about Binman and how it simplify the overall boot-loader build flow [1]. - Set BR2_TARGET_ARM_TRUSTED_FIRMWARE_TARGET_BOARD = "generic" meta-ti]$ git grep TFA_BOARD meta-ti-bsp/conf/machine/beagleplay.conf:TFA_BOARD = "lite" meta-ti-bsp/conf/machine/include/am62axx.inc:TFA_BOARD = "lite" meta-ti-bsp/conf/machine/include/am62pxx.inc:TFA_BOARD = "lite" meta-ti-bsp/conf/machine/include/am62xx.inc:TFA_BOARD = "lite" meta-ti-bsp/conf/machine/include/am64xx.inc:TFA_BOARD = "lite" meta-ti-bsp/conf/machine/include/am65xx.inc:TFA_BOARD = "generic" meta-ti-bsp/conf/machine/include/j7200.inc:TFA_BOARD = "generic" meta-ti-bsp/conf/machine/include/j721e.inc:TFA_BOARD = "generic" meta-ti-bsp/conf/machine/include/j721s2.inc:TFA_BOARD = "generic" meta-ti-bsp/conf/machine/include/j722s.inc:TFA_BOARD = "lite" meta-ti-bsp/conf/machine/include/j784s4.inc:TFA_BOARD = "j784s4" - Set BR2_TARGET_UBOOT_NEEDS_ATF_BL31 to provide BL31 variable pointing to ATF bl31.bin to the U-Boot build process [2]. - Set BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE to OP-TEE as BL32 secure payload. meta-ti set "SPD=opteed" to build ATF [3]. - Set BR2_TARGET_OPTEE_OS_PLATFORM to "k3-j721e". meta-ti uses the OPTEEMACHINE to set optee-os platform [4]. meta-ti]$ git grep OPTEEMACHINE meta-ti-bsp/conf/machine/am437x-hs-evm.conf:OPTEEMACHINE = "ti-am43xx" meta-ti-bsp/conf/machine/am57xx-hs-evm.conf:OPTEEMACHINE = "ti-am57xx" meta-ti-bsp/conf/machine/beagleplay.conf:OPTEEMACHINE = "k3-am62x" meta-ti-bsp/conf/machine/dra7xx-hs-evm.conf:OPTEEMACHINE = "ti-dra7xx" meta-ti-bsp/conf/machine/include/am62axx.inc:OPTEEMACHINE = "k3-am62x" meta-ti-bsp/conf/machine/include/am62pxx.inc:OPTEEMACHINE = "k3-am62x" meta-ti-bsp/conf/machine/include/am62xx.inc:OPTEEMACHINE = "k3-am62x" meta-ti-bsp/conf/machine/include/am64xx.inc:OPTEEMACHINE = "k3-am64x" meta-ti-bsp/conf/machine/include/am65xx.inc:OPTEEMACHINE = "k3-am65x" meta-ti-bsp/conf/machine/include/j7200.inc:OPTEEMACHINE = "k3-j721e" meta-ti-bsp/conf/machine/include/j721e.inc:OPTEEMACHINE = "k3-j721e" meta-ti-bsp/conf/machine/include/j721s2.inc:OPTEEMACHINE = "k3-j784s4" meta-ti-bsp/conf/machine/include/j722s.inc:OPTEEMACHINE = "k3-am62x" meta-ti-bsp/conf/machine/include/j784s4.inc:OPTEEMACHINE = "k3-j784s4" - u-boot is looking at /boot/dtb/ti for devicetree. But Buildroot strips the prefixes when installing them into /boot. Set BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME to keep "ti" directory used by the kernel to organize device tree sources. TI's mmc.env [5] uses "dtb" as additional subdirectory, so we need to create a symlink to make sure /boot/dtb/ti exist. (Yocto uses KERNEL_DTBDEST = "${KERNEL_IMAGEDEST}/dtb"). Using a symlink avoid to customize too much the u-boot environment. - At least, provide a custom uEnv.txt to avoid using "Standard boot" or "distroboot" [6] to boot. - Provide a hash file for all custom package version (arm-trusted-firmware, linux, ti-k3-r5-loader, uboot) to enable BR2_DOWNLOAD_FORCE_CHECK_HASHES. Note: Texas Instuments SK-TDA4VM [7] uses the same SoC than the BeagleBone AI-64, install the k3-j721e-sk.dtb in /boot/dtb/ti to support this board from this defconfig. [1] https://fosdem.org/2024/schedule/event/fosdem-2024-3067-standardizing-the-generation-and-signing-of-boot-images/ [2] https://git.yoctoproject.org/meta-ti/commit/?id=e74b9a1746d4d04757c87c1920a0f743e55ff096 [3] https://git.yoctoproject.org/meta-ti/tree/meta-ti-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-ti.inc?h=09.02.00.004#n7 [4] https://git.yoctoproject.org/meta-arm/tree/meta-arm/recipes-security/optee/optee-os.inc?h=4.0.3#n23 [5] https://source.denx.de/u-boot/u-boot/-/blob/v2024.04/include/env/ti/mmc.env?ref_type=tags#L18 [6] https://source.denx.de/u-boot/u-boot/-/blob/v2024.04/doc/develop/distro.rst?ref_type=tags [7] https://www.ti.com/tool/SK-TDA4VM More information about the board can be found at: https://www.beagleboard.org/boards/beaglebone-ai-64 Signed-off-by: Romain Naour --- Add "beagleboneai64" directory to board/beagleboard/ since we could move all other Beagleboard's boards (beagleboardx15, beaglebone, beagleboneai and beaglev) to the same subdirectory. --- DEVELOPERS | 2 + board/beagleboard/beagleboneai64/genimage.cfg | 29 +++++++++++ .../arm-trusted-firmware.hash | 2 + .../patches/linux-headers/linux-headers.hash | 1 + .../beagleboneai64/patches/linux/linux.hash | 2 + .../ti-k3-r5-loader/ti-k3-r5-loader.hash | 1 + .../beagleboneai64/patches/uboot/uboot.hash | 1 + .../beagleboard/beagleboneai64/post-build.sh | 15 ++++++ board/beagleboard/beagleboneai64/readme.txt | 39 +++++++++++++++ board/beagleboard/beagleboneai64/uEnv.txt | 6 +++ configs/beagleboneai64_defconfig | 50 +++++++++++++++++++ 11 files changed, 148 insertions(+) create mode 100644 board/beagleboard/beagleboneai64/genimage.cfg create mode 100644 board/beagleboard/beagleboneai64/patches/arm-trusted-firmware/arm-trusted-firmware.hash create mode 120000 board/beagleboard/beagleboneai64/patches/linux-headers/linux-headers.hash create mode 100644 board/beagleboard/beagleboneai64/patches/linux/linux.hash create mode 100644 board/beagleboard/beagleboneai64/patches/ti-k3-r5-loader/ti-k3-r5-loader.hash create mode 100644 board/beagleboard/beagleboneai64/patches/uboot/uboot.hash create mode 100755 board/beagleboard/beagleboneai64/post-build.sh create mode 100644 board/beagleboard/beagleboneai64/readme.txt create mode 100644 board/beagleboard/beagleboneai64/uEnv.txt create mode 100644 configs/beagleboneai64_defconfig diff --git a/DEVELOPERS b/DEVELOPERS index 5d198567d8..6c38cbdf2d 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2681,10 +2681,12 @@ F: package/irssi/ F: package/vnstat/ N: Romain Naour +F: board/beagleboard/beagleboneai64/ F: board/qemu/ F: board/ti/am574x-idk/ F: configs/qemu_* F: configs/am574x_idk_defconfig +F: configs/beagleboneai64_defconfig F: package/alure/ F: package/aubio/ F: package/bcc/ diff --git a/board/beagleboard/beagleboneai64/genimage.cfg b/board/beagleboard/beagleboneai64/genimage.cfg new file mode 100644 index 0000000000..be5b5c2e6d --- /dev/null +++ b/board/beagleboard/beagleboneai64/genimage.cfg @@ -0,0 +1,29 @@ +image boot.vfat { + vfat { + files = { + "sysfw.itb", + "tiboot3.bin", + "tispl.bin", + "u-boot.img", + "uEnv.txt", + } + } + + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/board/beagleboard/beagleboneai64/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/beagleboard/beagleboneai64/patches/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 0000000000..02714d06a0 --- /dev/null +++ b/board/beagleboard/beagleboneai64/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 2e18b881ada9198173238cca80086c787b1fa3f698944bde1743142823fc511c arm-trusted-firmware-v2.10.tar.gz diff --git a/board/beagleboard/beagleboneai64/patches/linux-headers/linux-headers.hash b/board/beagleboard/beagleboneai64/patches/linux-headers/linux-headers.hash new file mode 120000 index 0000000000..5808d92afe --- /dev/null +++ b/board/beagleboard/beagleboneai64/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/beagleboard/beagleboneai64/patches/linux/linux.hash b/board/beagleboard/beagleboneai64/patches/linux/linux.hash new file mode 100644 index 0000000000..cedae67f33 --- /dev/null +++ b/board/beagleboard/beagleboneai64/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 4e43d8c5fba14f7c82597838011648056487b7550fd83276ad534559e8499b1d linux-6.6.18.tar.xz diff --git a/board/beagleboard/beagleboneai64/patches/ti-k3-r5-loader/ti-k3-r5-loader.hash b/board/beagleboard/beagleboneai64/patches/ti-k3-r5-loader/ti-k3-r5-loader.hash new file mode 100644 index 0000000000..18d6169143 --- /dev/null +++ b/board/beagleboard/beagleboneai64/patches/ti-k3-r5-loader/ti-k3-r5-loader.hash @@ -0,0 +1 @@ +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 diff --git a/board/beagleboard/beagleboneai64/patches/uboot/uboot.hash b/board/beagleboard/beagleboneai64/patches/uboot/uboot.hash new file mode 100644 index 0000000000..18d6169143 --- /dev/null +++ b/board/beagleboard/beagleboneai64/patches/uboot/uboot.hash @@ -0,0 +1 @@ +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 diff --git a/board/beagleboard/beagleboneai64/post-build.sh b/board/beagleboard/beagleboneai64/post-build.sh new file mode 100755 index 0000000000..025fb79eff --- /dev/null +++ b/board/beagleboard/beagleboneai64/post-build.sh @@ -0,0 +1,15 @@ +#!/bin/sh +BOARD_DIR="$(dirname $0)" + +cp $BOARD_DIR/uEnv.txt $BINARIES_DIR/uEnv.txt + +# u-boot is looking at /boot/dtb/ti for devicetree in the rootfs +# partition while Buildroot install the kernel and its devicetree +# in /boot (BR2_LINUX_KERNEL_INSTALL_TARGET enabled). +# Enabling BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME allows to keep the +# "ti" subdirectory but "dts" is still missing. +# Make sure /boot/dtb/ti exist by creating a symlink in +# ${TARGET_DIR}/boot +# https://git.yoctoproject.org/meta-ti/tree/meta-ti-bsp/recipes-kernel/linux/ti-kernel.inc?h=09.02.00.004#n13 +# https://source.denx.de/u-boot/u-boot/-/blob/v2024.01/include/env/ti/mmc.env?ref_type=tags#L18 +ln -sfn . ${TARGET_DIR}/boot/dtb diff --git a/board/beagleboard/beagleboneai64/readme.txt b/board/beagleboard/beagleboneai64/readme.txt new file mode 100644 index 0000000000..fa4e189c44 --- /dev/null +++ b/board/beagleboard/beagleboneai64/readme.txt @@ -0,0 +1,39 @@ +BeagleBoard.org BeagleBone AI-64 Development Board + +Description +=========== + +This configuration will build a basic image for the BeagleBoard.org +BeagleBone AI-64. For more details about the board, visit: + +https://www.beagleboard.org/boards/beaglebone-ai-64 + +How to Build +============ + +Select the default configuration for the target: + +$ make beagleboneai64_defconfig + +Optional: modify the configuration: + +$ make menuconfig + +Build: + +$ make + +To copy the resultimg output image file to an SD card use dd: + +$ dd if=output/images/sdcard.img of=/dev/sdX bs=1M + +How to Run +========== + +Insert the SD card into the BeagleBone AI-64 board, and power it up +through the USB Type-C connector. The system should come up (make sure +to boot from the SD card not from the eMMC). You can use a USB to +serial adapter to connect to the connector labeled UART0 (J3) to +communicate with the board. + +https://docs.beagleboard.org/latest/boards/beaglebone/ai-64/02-quick-start.html diff --git a/board/beagleboard/beagleboneai64/uEnv.txt b/board/beagleboard/beagleboneai64/uEnv.txt new file mode 100644 index 0000000000..3fbaebf7de --- /dev/null +++ b/board/beagleboard/beagleboneai64/uEnv.txt @@ -0,0 +1,6 @@ +bootpart=1:2 +bootdir=/boot +devtype=mmc +boot=mmc +# define uenvcmd with bootcmd_ti_mmc to avoid booting with "standard boot" or "distroboot" +uenvcmd=run bootcmd_ti_mmc diff --git a/configs/beagleboneai64_defconfig b/configs/beagleboneai64_defconfig new file mode 100644 index 0000000000..5ea99631ca --- /dev/null +++ b/configs/beagleboneai64_defconfig @@ -0,0 +1,50 @@ +BR2_aarch64=y +BR2_cortex_a72=y +BR2_GLOBAL_PATCH_DIR="board/beagleboard/beagleboneai64/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/beagleboard/beagleboneai64/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/beagleboard/beagleboneai64/genimage.cfg" +BR2_SYSTEM_DHCP="eth0" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.18" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="ti/k3-j721e-beagleboneai64" +BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="256M" +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.10" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="k3" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_TARGET_BOARD="generic" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE=y +BR2_TARGET_OPTEE_OS=y +BR2_TARGET_OPTEE_OS_PLATFORM="k3-j721e" +BR2_TARGET_TI_K3_BOOT_FIRMWARE=y +BR2_TARGET_TI_K3_R5_LOADER=y +BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION=y +BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE="2024.04" +BR2_TARGET_TI_K3_R5_LOADER_BOARD_DEFCONFIG="j721e_evm_r5" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="j721e_evm_a72" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_USE_BINMAN=y +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="tispl.bin" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="TEE=$(BINARIES_DIR)/tee-pager_v2.bin" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y -- 2.44.0 From bb at ti.com Thu May 2 16:26:57 2024 From: bb at ti.com (Bryan Brattlof) Date: Thu, 2 May 2024 11:26:57 -0500 Subject: [Buildroot] [PATCH RESEND v2 07/11] configs/ti_am62x_sk_defconfig: update U-Boot to v2024.04 In-Reply-To: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> Message-ID: <20240430-optee-update-v2-7-5bdc2f940db1@ti.com> Bump to the latest release from U-Boot Signed-off-by: Bryan Brattlof --- configs/ti_am62x_sk_defconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configs/ti_am62x_sk_defconfig b/configs/ti_am62x_sk_defconfig index e169b6834d89c..fbceca791161e 100644 --- a/configs/ti_am62x_sk_defconfig +++ b/configs/ti_am62x_sk_defconfig @@ -27,12 +27,12 @@ BR2_TARGET_OPTEE_OS=y BR2_TARGET_OPTEE_OS_PLATFORM="k3-am62x" BR2_TARGET_TI_K3_R5_LOADER=y BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION=y -BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE="2024.04" BR2_TARGET_TI_K3_R5_LOADER_BOARD_DEFCONFIG="am62x_evm_r5" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="am62x_evm_a53" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_NEEDS_OPENSSL=y -- 2.43.2 From bb at ti.com Thu May 2 16:26:59 2024 From: bb at ti.com (Bryan Brattlof) Date: Thu, 2 May 2024 11:26:59 -0500 Subject: [Buildroot] [PATCH RESEND v2 09/11] configs/ti_am62x_sk_defconfig: bump kernel to v6.8.8 In-Reply-To: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> Message-ID: <20240430-optee-update-v2-9-5bdc2f940db1@ti.com> Update to the latest kernel to pull in the latest bug fixes and features for TI's SoCs and reference boards Signed-off-by: Bryan Brattlof --- board/ti/am62x-sk/patches/linux/linux.hash | 2 +- configs/ti_am62x_sk_defconfig | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/board/ti/am62x-sk/patches/linux/linux.hash b/board/ti/am62x-sk/patches/linux/linux.hash index cedae67f33f1c..2e9aad399ebe3 100644 --- a/board/ti/am62x-sk/patches/linux/linux.hash +++ b/board/ti/am62x-sk/patches/linux/linux.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 4e43d8c5fba14f7c82597838011648056487b7550fd83276ad534559e8499b1d linux-6.6.18.tar.xz +sha256 1c4cdcb9d560fad1fb95db2cb8afbedc922f9ead848371fe40363b13f9f631ba linux-6.8.8.tar.xz diff --git a/configs/ti_am62x_sk_defconfig b/configs/ti_am62x_sk_defconfig index fbceca791161e..070eaa42bfa7e 100644 --- a/configs/ti_am62x_sk_defconfig +++ b/configs/ti_am62x_sk_defconfig @@ -1,5 +1,4 @@ BR2_aarch64=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y BR2_GLOBAL_PATCH_DIR="board/ti/am62x-sk/patches" BR2_DOWNLOAD_FORCE_CHECK_HASHES=y BR2_ROOTFS_POST_BUILD_SCRIPT="board/ti/common/am6xx/post-build.sh" @@ -8,7 +7,7 @@ BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS="-c ttyS2,115200n8 -d k3-am625-sk.dtb -l am62x BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS="-c board/ti/am62x-sk/genimage.cfg" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.18" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.8" BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="ti/k3-am625-sk" -- 2.43.2 From bb at ti.com Thu May 2 16:27:00 2024 From: bb at ti.com (Bryan Brattlof) Date: Thu, 2 May 2024 11:27:00 -0500 Subject: [Buildroot] [PATCH RESEND v2 10/11] configs/ti_am64x_sk_defconfig: update kernel to v6.8.8 In-Reply-To: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> Message-ID: <20240430-optee-update-v2-10-5bdc2f940db1@ti.com> Update to the latest kernel to pull in the latest bug fixes and features for TI's SoCs and reference boards Signed-off-by: Bryan Brattlof --- board/ti/am64x-sk/patches/linux/linux.hash | 2 +- configs/ti_am64x_sk_defconfig | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/board/ti/am64x-sk/patches/linux/linux.hash b/board/ti/am64x-sk/patches/linux/linux.hash index cedae67f33f1c..2e9aad399ebe3 100644 --- a/board/ti/am64x-sk/patches/linux/linux.hash +++ b/board/ti/am64x-sk/patches/linux/linux.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 4e43d8c5fba14f7c82597838011648056487b7550fd83276ad534559e8499b1d linux-6.6.18.tar.xz +sha256 1c4cdcb9d560fad1fb95db2cb8afbedc922f9ead848371fe40363b13f9f631ba linux-6.8.8.tar.xz diff --git a/configs/ti_am64x_sk_defconfig b/configs/ti_am64x_sk_defconfig index bdd85f82a60e6..42df79768d7f7 100644 --- a/configs/ti_am64x_sk_defconfig +++ b/configs/ti_am64x_sk_defconfig @@ -1,5 +1,4 @@ BR2_aarch64=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y BR2_GLOBAL_PATCH_DIR="board/ti/am64x-sk/patches" BR2_DOWNLOAD_FORCE_CHECK_HASHES=y BR2_ROOTFS_POST_BUILD_SCRIPT="board/ti/common/am6xx/post-build.sh" @@ -8,7 +7,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS="-c board/ti/am64x-sk/genimage.cfg" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.18" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.8" BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="ti/k3-am642-sk" -- 2.43.2 From bb at ti.com Thu May 2 16:26:58 2024 From: bb at ti.com (Bryan Brattlof) Date: Thu, 2 May 2024 11:26:58 -0500 Subject: [Buildroot] [PATCH RESEND v2 08/11] configs/ti_am64x_sk_defconfig: update U-Boot to v2024.04 In-Reply-To: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> Message-ID: <20240430-optee-update-v2-8-5bdc2f940db1@ti.com> Bump to the latest release from U-Boot Signed-off-by: Bryan Brattlof --- configs/ti_am64x_sk_defconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configs/ti_am64x_sk_defconfig b/configs/ti_am64x_sk_defconfig index e0f48cd5bb062..bdd85f82a60e6 100644 --- a/configs/ti_am64x_sk_defconfig +++ b/configs/ti_am64x_sk_defconfig @@ -27,12 +27,12 @@ BR2_TARGET_OPTEE_OS=y BR2_TARGET_OPTEE_OS_PLATFORM="k3-am64x" BR2_TARGET_TI_K3_R5_LOADER=y BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION=y -BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE="2024.04" BR2_TARGET_TI_K3_R5_LOADER_BOARD_DEFCONFIG="am64x_evm_r5" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="am64x_evm_a53" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_NEEDS_OPENSSL=y -- 2.43.2 From bb at ti.com Thu May 2 16:26:51 2024 From: bb at ti.com (Bryan Brattlof) Date: Thu, 2 May 2024 11:26:51 -0500 Subject: [Buildroot] [PATCH RESEND v2 01/11] boot/optee-os: bump to release v4.2.0 In-Reply-To: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> Message-ID: <20240430-optee-update-v2-1-5bdc2f940db1@ti.com> Bump OP-TEE to the latest tagged release Signed-off-by: Bryan Brattlof --- boot/optee-os/Config.in | 4 ++-- boot/optee-os/optee-os.hash | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/boot/optee-os/Config.in b/boot/optee-os/Config.in index 75bf00d450916..34ea993136754 100644 --- a/boot/optee-os/Config.in +++ b/boot/optee-os/Config.in @@ -18,7 +18,7 @@ choice Select the version of OP-TEE OS you want to use config BR2_TARGET_OPTEE_OS_LATEST - bool "4.0.0" + bool "4.2.0" depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS select BR2_TARGET_OPTEE_OS_NEEDS_PYTHON_CRYPTOGRAPHY help @@ -70,7 +70,7 @@ endif config BR2_TARGET_OPTEE_OS_VERSION string - default "4.0.0" if BR2_TARGET_OPTEE_OS_LATEST + default "4.2.0" if BR2_TARGET_OPTEE_OS_LATEST default "custom" if BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL default BR2_TARGET_OPTEE_OS_CUSTOM_REPO_VERSION \ if BR2_TARGET_OPTEE_OS_CUSTOM_GIT diff --git a/boot/optee-os/optee-os.hash b/boot/optee-os/optee-os.hash index 1f13931ca20bd..663640b2cec2b 100644 --- a/boot/optee-os/optee-os.hash +++ b/boot/optee-os/optee-os.hash @@ -1,4 +1,4 @@ -# From https://github.com/OP-TEE/optee_os/archive/4.0.0/optee-os-4.0.0.tar.gz -sha256 2c2c9525b36c96dfad6216520721b8e9663e6cacc61d0108a0c8bffc0ea175f1 optee-os-4.0.0.tar.gz +# From https://github.com/OP-TEE/optee_os/archive/4.2.0/optee-os-4.2.0.tar.gz +sha256 ce70f0d177001bf4855cd6cd6396f515af6126e4bba9b12c716a437a5cb40c7b optee-os-4.2.0.tar.gz # Locally computed sha256 1247ee90858f4037b6cac63cbffddfed435d0d73c631b37d78c1e6e6ab3e5d1a LICENSE -- 2.43.2 From bb at ti.com Thu May 2 16:27:01 2024 From: bb at ti.com (Bryan Brattlof) Date: Thu, 2 May 2024 11:27:01 -0500 Subject: [Buildroot] [PATCH RESEND v2 11/11] DEVELOPERS: add myself to TI's packages and reference boards In-Reply-To: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> Message-ID: <20240430-optee-update-v2-11-5bdc2f940db1@ti.com> Add myself to the DEVELOPERS files to help review patches related to TI's reference boards. Signed-off-by: Bryan Brattlof --- DEVELOPERS | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index 5d198567d8323..1e3b13c01310d 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -548,6 +548,13 @@ F: package/vmtouch/ N: Brock Williams F: package/pdmenu/ +N: Bryan Brattlof +F: board/ti/ +F: boot/ti-k3-boot-firmware/ +F: boot/ti-k3-r5-loader/ +F: configs/ti_am62x_sk_defconfig +F: configs/ti_am64x_sk_defconfig + N: Carlo Caione F: package/jailhouse/ F: package/sunxi-boards/ -- 2.43.2 From bb at ti.com Thu May 2 16:26:54 2024 From: bb at ti.com (Bryan Brattlof) Date: Thu, 2 May 2024 11:26:54 -0500 Subject: [Buildroot] [PATCH RESEND v2 04/11] boot/ti-k3-boot-firmware: bump to version 09.02.00.009 In-Reply-To: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> Message-ID: <20240430-optee-update-v2-4-5bdc2f940db1@ti.com> The 09.02.00.009 release of ti-linux-firmware has the latest updates to TI's TIFS, DM and DMSC firmware needed for the K3 generation of processors. Update to pull in these latest updates. Reviewed-by: Heiko Thiery Tested-by: Andreas Dannenberg Signed-off-by: Bryan Brattlof --- boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash | 2 +- boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash index 95131180ef400..2398d02da258a 100644 --- a/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash +++ b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash @@ -1,3 +1,3 @@ # Locally calculated sha256 ab20ffbe7bba7e94be246b3417d33a914b3f07c16c47ef5a7f7602349a666a61 LICENSE.ti -sha256 6032a258ce731d987576115f5de44c677a6b0cf8bddcd61a9a2852928bdfff92 ti-linux-firmware-08.06.00.006.tar.xz +sha256 ae888a0a22f8c5b8fe841236d6e40bb2f821d9a4161dab6924fd989e1467ef0e ti-linux-firmware-09.02.00.009.tar.xz diff --git a/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk index 1f8ade207c13a..9332732ad4a32 100644 --- a/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk +++ b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk @@ -4,9 +4,7 @@ # ################################################################################ -# The hash 340194800a581baf976360386dfc7b5acab8d948 defined in the -# Makefile of ti-k3-image-gen corresponds to the tag 08.06.00.006. -TI_K3_BOOT_FIRMWARE_VERSION = 08.06.00.006 +TI_K3_BOOT_FIRMWARE_VERSION = 09.02.00.009 TI_K3_BOOT_FIRMWARE_SITE = https://git.ti.com/cgit/processor-firmware/ti-linux-firmware/snapshot TI_K3_BOOT_FIRMWARE_SOURCE = ti-linux-firmware-$(TI_K3_BOOT_FIRMWARE_VERSION).tar.xz TI_K3_BOOT_FIRMWARE_INSTALL_IMAGES = YES -- 2.43.2 From bb at ti.com Thu May 2 16:26:50 2024 From: bb at ti.com (Bryan Brattlof) Date: Thu, 2 May 2024 11:26:50 -0500 Subject: [Buildroot] [PATCH RESEND v2 00/11] update bsp binaries for TI SoCs Message-ID: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> Hello everyone! My apologies to everyone I just spammed with the first v2. I dropped the mailing list (still setting up my b4 configs) :/ This series updates all the boot binaries (U-Boot, OP-TEE, TF-A, and Linux) to their latest versions to pull in all bug fixes and new features additions in these projects. This also includes a patch I send out a while ago just to keep things organized. https://lore.kernel.org/buildroot/20240402153328.1859642-1-bb at ti.com/ and finally some proof I didn't completely break something ;) https://paste.sr.ht/~bryanb/b666adef7da412de76efb5e4a68e68e0651f7928 Thanks for reviewing ~Bryan Signed-off-by: Bryan Brattlof --- Changes in v2: - most emails never made it to the mailing list - updated commit messages to be more explicit about versions picked - Link to v1: https://lore.kernel.org/r/20240430-optee-update-v1-0-6f73c4903ec3 at ti.com --- Bryan Brattlof (11): boot/optee-os: bump to release v4.2.0 boot/uboot: bump to version v2024.04 boot/ti-k3-r5-loader: bump to version v2024.04 boot/ti-k3-boot-firmware: bump to version 09.02.00.009 configs/ti_am62x_sk_defconfig: update TFA to v2.10 configs/ti_am64x_sk_defconfig: update TFA to v2.10 configs/ti_am62x_sk_defconfig: update U-Boot to v2024.04 configs/ti_am64x_sk_defconfig: update U-Boot to v2024.04 configs/ti_am62x_sk_defconfig: bump kernel to v6.8.8 configs/ti_am64x_sk_defconfig: update kernel to v6.8.8 DEVELOPERS: add myself to TI's packages and reference boards DEVELOPERS | 7 +++++++ .../patches/arm-trusted-firmware/arm-trusted-firmware.hash | 2 +- board/ti/am62x-sk/patches/linux/linux.hash | 2 +- .../patches/arm-trusted-firmware/arm-trusted-firmware.hash | 2 +- board/ti/am64x-sk/patches/linux/linux.hash | 2 +- boot/optee-os/Config.in | 4 ++-- boot/optee-os/optee-os.hash | 4 ++-- boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash | 2 +- boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk | 4 +--- boot/ti-k3-r5-loader/Config.in | 4 ++-- boot/ti-k3-r5-loader/ti-k3-r5-loader.hash | 2 +- boot/ti-k3-r5-loader/ti-k3-r5-loader.mk | 1 + boot/uboot/Config.in | 6 +++--- boot/uboot/uboot.hash | 2 +- configs/ti_am62x_sk_defconfig | 9 ++++----- configs/ti_am64x_sk_defconfig | 9 ++++----- 16 files changed, 33 insertions(+), 29 deletions(-) --- base-commit: 929bffbf4bf8fcb91bda446777f907f32c782656 change-id: 20240430-optee-update-b9c1bc4e9f29 Best regards, -- Bryan Brattlof From bb at ti.com Thu May 2 16:26:56 2024 From: bb at ti.com (Bryan Brattlof) Date: Thu, 2 May 2024 11:26:56 -0500 Subject: [Buildroot] [PATCH RESEND v2 06/11] configs/ti_am64x_sk_defconfig: update TFA to v2.10 In-Reply-To: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> Message-ID: <20240430-optee-update-v2-6-5bdc2f940db1@ti.com> Update the TFA firmware to the latest LTS tag for v2.10 release of arm-trusted-firmware Signed-off-by: Bryan Brattlof --- .../ti/am64x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash | 2 +- configs/ti_am64x_sk_defconfig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/board/ti/am64x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/ti/am64x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash index 74fe35c9bc733..8f60864fbf67f 100644 --- a/board/ti/am64x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash +++ b/board/ti/am64x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -1,2 +1,2 @@ # Locally computed: -sha256 327c65b1bc231608a7a808b068b00c1a22310e9fc86158813cd10a9711d5725e arm-trusted-firmware-v2.7.tar.gz +sha256 ba215404fe9db26e5f2cef3fdce17b7c8ed344a2a1d592dd01a5f1c5e72cfdbd arm-trusted-firmware-lts-v2.10.4.tar.gz diff --git a/configs/ti_am64x_sk_defconfig b/configs/ti_am64x_sk_defconfig index 28e97f94e2f88..e0f48cd5bb062 100644 --- a/configs/ti_am64x_sk_defconfig +++ b/configs/ti_am64x_sk_defconfig @@ -19,7 +19,7 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_ROOTFS_EXT2_SIZE="120M" BR2_TARGET_ARM_TRUSTED_FIRMWARE=y BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y -BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.7" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="lts-v2.10.4" BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="k3" BR2_TARGET_ARM_TRUSTED_FIRMWARE_TARGET_BOARD="lite" BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE=y -- 2.43.2 From bb at ti.com Thu May 2 16:26:52 2024 From: bb at ti.com (Bryan Brattlof) Date: Thu, 2 May 2024 11:26:52 -0500 Subject: [Buildroot] [PATCH RESEND v2 02/11] boot/uboot: bump to version v2024.04 In-Reply-To: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> Message-ID: <20240430-optee-update-v2-2-5bdc2f940db1@ti.com> Update to the latest tagged release of U-Boot Signed-off-by: Bryan Brattlof --- boot/uboot/Config.in | 6 +++--- boot/uboot/uboot.hash | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/boot/uboot/Config.in b/boot/uboot/Config.in index 8d2228dc7dd45..00d3f3bfbbfdd 100644 --- a/boot/uboot/Config.in +++ b/boot/uboot/Config.in @@ -41,7 +41,7 @@ choice Select the specific U-Boot version you want to use config BR2_TARGET_UBOOT_LATEST_VERSION - bool "2024.01" + bool "2024.04" config BR2_TARGET_UBOOT_CUSTOM_VERSION bool "Custom version" @@ -85,7 +85,7 @@ endif config BR2_TARGET_UBOOT_VERSION string - default "2024.01" if BR2_TARGET_UBOOT_LATEST_VERSION + default "2024.04" if BR2_TARGET_UBOOT_LATEST_VERSION default BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE \ if BR2_TARGET_UBOOT_CUSTOM_VERSION default "custom" if BR2_TARGET_UBOOT_CUSTOM_TARBALL @@ -291,7 +291,7 @@ config BR2_TARGET_UBOOT_USE_BINMAN help Use binman tool for generation and signing of boot images. - https://docs.u-boot.org/en/v2024.01/develop/package/binman.html + https://docs.u-boot.org/en/v2024.04/develop/package/binman.html menu "U-Boot binary format" diff --git a/boot/uboot/uboot.hash b/boot/uboot/uboot.hash index fbe5d215409d2..a8021fb696b1a 100644 --- a/boot/uboot/uboot.hash +++ b/boot/uboot/uboot.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 b99611f1ed237bf3541bdc8434b68c96a6e05967061f992443cb30aabebef5b3 u-boot-2024.01.tar.bz2 +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 Licenses/gpl-2.0.txt -- 2.43.2 From bb at ti.com Thu May 2 16:26:55 2024 From: bb at ti.com (Bryan Brattlof) Date: Thu, 2 May 2024 11:26:55 -0500 Subject: [Buildroot] [PATCH RESEND v2 05/11] configs/ti_am62x_sk_defconfig: update TFA to v2.10 In-Reply-To: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> Message-ID: <20240430-optee-update-v2-5-5bdc2f940db1@ti.com> Update the TFA firmware to the latest LTS tag for v2.10 release of arm-trusted-firmware Signed-off-by: Bryan Brattlof --- .../ti/am62x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash | 2 +- configs/ti_am62x_sk_defconfig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/board/ti/am62x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/ti/am62x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash index 74fe35c9bc733..8f60864fbf67f 100644 --- a/board/ti/am62x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash +++ b/board/ti/am62x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -1,2 +1,2 @@ # Locally computed: -sha256 327c65b1bc231608a7a808b068b00c1a22310e9fc86158813cd10a9711d5725e arm-trusted-firmware-v2.7.tar.gz +sha256 ba215404fe9db26e5f2cef3fdce17b7c8ed344a2a1d592dd01a5f1c5e72cfdbd arm-trusted-firmware-lts-v2.10.4.tar.gz diff --git a/configs/ti_am62x_sk_defconfig b/configs/ti_am62x_sk_defconfig index 405016818438a..e169b6834d89c 100644 --- a/configs/ti_am62x_sk_defconfig +++ b/configs/ti_am62x_sk_defconfig @@ -19,7 +19,7 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_ROOTFS_EXT2_SIZE="256M" BR2_TARGET_ARM_TRUSTED_FIRMWARE=y BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y -BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.7" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="lts-v2.10.4" BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="k3" BR2_TARGET_ARM_TRUSTED_FIRMWARE_TARGET_BOARD="lite" BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE=y -- 2.43.2 From bb at ti.com Thu May 2 16:26:53 2024 From: bb at ti.com (Bryan Brattlof) Date: Thu, 2 May 2024 11:26:53 -0500 Subject: [Buildroot] [PATCH RESEND v2 03/11] boot/ti-k3-r5-loader: bump to version v2024.04 In-Reply-To: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> Message-ID: <20240430-optee-update-v2-3-5bdc2f940db1@ti.com> The ti-k3-r5-loader is just U-Boot with a different defconfig compiled for the 32b MCU cores needed for TI's K3 generation of SoCs. Update to match the U-Boot version Signed-off-by: Bryan Brattlof --- boot/ti-k3-r5-loader/Config.in | 4 ++-- boot/ti-k3-r5-loader/ti-k3-r5-loader.hash | 2 +- boot/ti-k3-r5-loader/ti-k3-r5-loader.mk | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/boot/ti-k3-r5-loader/Config.in b/boot/ti-k3-r5-loader/Config.in index df885cc2af601..2f2434e9db2a8 100644 --- a/boot/ti-k3-r5-loader/Config.in +++ b/boot/ti-k3-r5-loader/Config.in @@ -18,7 +18,7 @@ choice here as it is used to build the main U-Boot package. config BR2_TARGET_TI_K3_R5_LOADER_LATEST_VERSION - bool "2024.01" + bool "2024.04" config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION bool "Custom version" @@ -62,7 +62,7 @@ endif config BR2_TARGET_TI_K3_R5_LOADER_VERSION string - default "2024.01" if BR2_TARGET_TI_K3_R5_LOADER_LATEST_VERSION + default "2024.04" if BR2_TARGET_TI_K3_R5_LOADER_LATEST_VERSION default BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE \ if BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION default "custom" if BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_TARBALL diff --git a/boot/ti-k3-r5-loader/ti-k3-r5-loader.hash b/boot/ti-k3-r5-loader/ti-k3-r5-loader.hash index fbe5d215409d2..a8021fb696b1a 100644 --- a/boot/ti-k3-r5-loader/ti-k3-r5-loader.hash +++ b/boot/ti-k3-r5-loader/ti-k3-r5-loader.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 b99611f1ed237bf3541bdc8434b68c96a6e05967061f992443cb30aabebef5b3 u-boot-2024.01.tar.bz2 +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 Licenses/gpl-2.0.txt diff --git a/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk b/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk index 98a6d473f17f3..2ce053461038f 100644 --- a/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk +++ b/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk @@ -5,6 +5,7 @@ ################################################################################ TI_K3_R5_LOADER_VERSION = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_VERSION)) +TI_K3_R5_LOADER_DL_DIR = $(UBOOT_DL_DIR) ifeq ($(BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_TARBALL),y) # Handle custom U-Boot tarballs as specified by the configuration -- 2.43.2 From peter at korsgaard.com Thu May 2 16:28:14 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 18:28:14 +0200 Subject: [Buildroot] [PATCH 1/1] package/tcf-agent: fix x86 build In-Reply-To: <20240301213722.91942-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Fri, 1 Mar 2024 22:37:22 +0100") References: <20240301213722.91942-1-fontaine.fabrice@gmail.com> Message-ID: <87plu45gbl.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > Fix the following x86 build failure raised since bump to version 1.8.0 > in commit 81802e263a12e173e0e1028449d1e1e11b2e5974 and > https://gitlab.eclipse.org/eclipse/tcf/tcf.agent/-/commit/8df5540c53b862d516ac25f908c2fff4a547b4a6: > /home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c: > In function 'unpack_elf_symbol_info': > /home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c:2079:27: > error: 'STT_ARM_16BIT' undeclared (first use in this function) > 2079 | if (info->type == STT_ARM_16BIT) { > | ^~~~~~~~~~~~~ > /home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c:2079:27: > note: each undeclared identifier is reported only once for each > function it appears in > /home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c: > In function 'create_symbol_addr_search_index': > /home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c:2228:78: > error: 'STT_ARM_16BIT' undeclared (first use in this function) > 2228 | if (type == STT_FUNC || type == STT_ARM_TFUNC || type == STT_ARM_16BIT) { > | ^~~~~~~~~~~~~ > Fixes: 81802e263a12e173e0e1028449d1e1e11b2e5974 > - http://autobuild.buildroot.org/results/8388acf59689ed7e621bdf158483e3df1cf9bef7 > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 16:29:59 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 18:29:59 +0200 Subject: [Buildroot] [PATCH 1/1] support/scripts/pkg-stats: fix bug when sorting by hashfile In-Reply-To: <20240225220544.754965-1-sen@hastings.org> (Sen Hastings's message of "Sun, 25 Feb 2024 14:05:44 -0800") References: <20240225220544.754965-1-sen@hastings.org> Message-ID: <87ikzw5g8o.fsf@dell.be.48ers.dk> >>>>> "Sen" == Sen Hastings writes: > Because the div_class variable was not reassigned a value, > cells in the latest_version column were still being assigned > hash_file classes and so were being picked up as elements in > the hash_file sort. This lead to execessive grid gap elements > stacking up and creating huge blank spaces at the top of the page. > This is very noticable on pages with a large number of packages, > like the ones the autobuilder creates. > original behaviour(click the "Hash file" column label twice): > http://autobuild.buildroot.org/stats/master.html > demo of fixed behaviour: > https://sen-h.codeberg.page/pkg-stats-demos/@pages/fix-bug-when-sorting-by-hash-file.html > Signed-off-by: Sen Hastings Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 16:30:58 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 18:30:58 +0200 Subject: [Buildroot] [PATCH v2 1/1] support/scripts/pkg-stats: fix/improve git hash sorting In-Reply-To: <20240305093334.2233237-1-sen@hastings.org> (Sen Hastings's message of "Tue, 5 Mar 2024 01:33:34 -0800") References: <20240305093334.2233237-1-sen@hastings.org> Message-ID: <87bk5o5g71.fsf@dell.be.48ers.dk> >>>>> "Sen" == Sen Hastings writes: > sortGrid()'s handling of git hashes and other large hex numbers > has been inconsistent, they can be detected as strings or numbers > depending on what type of character they start with. > This patch fixes the behaviour by using a regex to capture everything > that looks like a big hex number and treat it as a string. > This means when you sort by current version ascending all the version > strings with big hex numbers should show up first, sorted 0-9,a-f. > First we check for a string length >= 39, and then apply a regex > to return an array with every char from that string that matched > the regex. If the length of this array is still >= 39 we can assume > we are looking at something containing a git hash. > The reason why the length is defined as ">= 39" and not "40" or > "39 or 40" is twofold: > Firstly, 39 was chosen as a minimum to match stuff with 39 char git > hashes, like the rockchip-mali package. > Secondly, there is no max because we actually want to catch not > just explicitly git hashes, but any verson string with big gnarly > hex numbers in it. > Stuff like: "1.4.2-168-ged3039cdbeeb28fc0011c3585d8f7dfb91038292" > Why? Well, the idea is less about git hashes and sorting > and more about grouping similarly formatted version strings. > It would be impossble (or at least annoyingly complicated) and of > dubious utility to get a real sequential sort out of the > current version column, so the attempt here is to at the very > least collect all the similarly formatted things together. > This isn't perfect, but it's a (arguably) more useful sorted > output than before. > A demo is available here: > https://sen-h.codeberg.page/pkg-stats-demos/@pages/fix-improve-git-hash-sorting.html > Signed-off-by: Sen Hastings > --- > Changes v1 -> v2: > - more detailed commit log (requested by Yann E. MORIN) Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 16:32:12 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 18:32:12 +0200 Subject: [Buildroot] [PATCH 1/1] package/dmenu-wayland: fix uclibc build In-Reply-To: <20240305111134.298279-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Tue, 5 Mar 2024 12:11:34 +0100") References: <20240305111134.298279-1-fontaine.fabrice@gmail.com> Message-ID: <877cgc5g4z.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > Set -std=gnu99 to fix the following uclibc build failure raised since > the addition of the package in commit > 2f6b1b8e6893003efcc72185cd468dcb0b088b2d: > ../draw.c:37:23: error: 'CLOCK_REALTIME' undeclared (first use in this function) > 37 | clock_gettime(CLOCK_REALTIME, &ts); > | ^~~~~~~~~~~~~~ > Fixes: 2f6b1b8e6893003efcc72185cd468dcb0b088b2d > - http://autobuild.buildroot.org/results/4b9db67fb444ec35d741e5d3e74263ac0c4d4a7d > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 16:33:32 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 18:33:32 +0200 Subject: [Buildroot] [PATCH 1/1] package/dmraid: fix musl build In-Reply-To: (Arnout Vandecappelle via buildroot's message of "Sun, 7 Apr 2024 18:08:14 +0200") References: <20240306091930.32801-1-fontaine.fabrice@gmail.com> Message-ID: <8734r05g2r.fsf@dell.be.48ers.dk> >>>>> "Arnout" == Arnout Vandecappelle via buildroot writes: > On 06/03/2024 10:19, Fabrice Fontaine wrote: >> dmraid is a very old package from 2010 with an awkward configure script >> which doesn't honor CFLAGS: >> ac_cv_env_CFLAGS_set=set >> ac_cv_env_CFLAGS_value='-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -g0 ' >> [...] >> ## ----------------- ## >> ## Output variables. ## >> ## ----------------- ## >> AWK='gawk' >> CC='/home/autobuild/autobuild/instance-3/output-1/host/bin/sh4a-buildroot-linux-musl-gcc' >> CFLAGS='-O2' >> resulting in the following build failure with musl >= 1.2.4 and >> https://github.com/bminor/musl/commit/25e6fee27f4a293728dd15b659170e7b9c7db9bc >> because _LARGEFILE64_SOURCE is not set: >> /home/autobuild/autobuild/instance-3/output-1/host/lib/gcc/sh4a-buildroot-linux-musl/12.3.0/../../../../sh4a-buildroot-linux-musl/bin/ld: >> misc/file.o: in function `rw_file': >> file.c:(.text+0x150): undefined reference to `lseek64' >> To fix this issue, pass TARGET_CONFIGURE_OPTS through >> DMRAID_MAKE_OPTS >> Fixes: >> - http://autobuild.buildroot.org/results/5c7c82959ce92db908d3ca20e2c1137509c2f981 >> Signed-off-by: Fabrice Fontaine > Applied to master, thanks. Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 16:31:43 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 18:31:43 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/dmenu-wayland: fix uclibc build Message-ID: <20240502163355.544F586639@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=e5c204820dcfec70e15ae904f7c629eecc732127 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Set -std=gnu99 to fix the following uclibc build failure raised since the addition of the package in commit 2f6b1b8e6893003efcc72185cd468dcb0b088b2d: ../draw.c:37:23: error: 'CLOCK_REALTIME' undeclared (first use in this function) 37 | clock_gettime(CLOCK_REALTIME, &ts); | ^~~~~~~~~~~~~~ Fixes: 2f6b1b8e6893003efcc72185cd468dcb0b088b2d - http://autobuild.buildroot.org/results/4b9db67fb444ec35d741e5d3e74263ac0c4d4a7d Signed-off-by: Fabrice Fontaine Signed-off-by: Arnout Vandecappelle (cherry picked from commit 46bb598f1a67ed2bf7acef8b17ea09ee0f425d8e) Signed-off-by: Peter Korsgaard --- package/dmenu-wayland/dmenu-wayland.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/package/dmenu-wayland/dmenu-wayland.mk b/package/dmenu-wayland/dmenu-wayland.mk index 33a73c0153..fec984194c 100644 --- a/package/dmenu-wayland/dmenu-wayland.mk +++ b/package/dmenu-wayland/dmenu-wayland.mk @@ -8,6 +8,7 @@ DMENU_WAYLAND_VERSION = a380201dff5bfac2dace553d7eaedb6cea6855f9 DMENU_WAYLAND_SITE = $(call github,nyyManni,dmenu-wayland,$(DMENU_WAYLAND_VERSION)) DMENU_WAYLAND_LICENSE = MIT DMENU_WAYLAND_LICENSE_FILES = LICENSE +DMENU_WAYLAND_CFLAGS = $(TARGET_CFLAGS) -std=gnu99 # host-wayland is for wayland-scanner DMENU_WAYLAND_DEPENDENCIES = \ From peter at korsgaard.com Thu May 2 16:28:38 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 18:28:38 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] support/scripts/pkg-stats: fix bug when sorting by hashfile Message-ID: <20240502163355.3A7D786636@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=59c153dbcd0b47e35f65dc911ee2bfb1bca0b895 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Because the div_class variable was not reassigned a value, cells in the latest_version column were still being assigned hash_file classes and so were being picked up as elements in the hash_file sort. This lead to execessive grid gap elements stacking up and creating huge blank spaces at the top of the page. This is very noticable on pages with a large number of packages, like the ones the autobuilder creates. original behaviour(click the "Hash file" column label twice): http://autobuild.buildroot.org/stats/master.html demo of fixed behaviour: https://sen-h.codeberg.page/pkg-stats-demos/@pages/fix-bug-when-sorting-by-hash-file.html Signed-off-by: Sen Hastings Signed-off-by: Arnout Vandecappelle (cherry picked from commit 6e3d79f52ef0e1b2b6fe1e660820cabdca6179c2) Signed-off-by: Peter Korsgaard --- support/scripts/pkg-stats | 1 + 1 file changed, 1 insertion(+) diff --git a/support/scripts/pkg-stats b/support/scripts/pkg-stats index 53898a36f2..3295eb7a48 100755 --- a/support/scripts/pkg-stats +++ b/support/scripts/pkg-stats @@ -977,6 +977,7 @@ def dump_html_pkg(f, pkg): # Latest version data_field_id = f'latest_version__{pkg_css_class}' + div_class = ["centered"] div_class.append(f'_{pkg_css_class}') div_class.append("latest_version data") if pkg.latest_version['status'] == RM_API_STATUS_ERROR: From peter at korsgaard.com Thu May 2 16:27:55 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 18:27:55 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/tcf-agent: fix x86 build Message-ID: <20240502163355.2C71386635@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=81deca8719c0fd5cd707df040dee7c525106c5ed branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Fix the following x86 build failure raised since bump to version 1.8.0 in commit 81802e263a12e173e0e1028449d1e1e11b2e5974 and https://gitlab.eclipse.org/eclipse/tcf/tcf.agent/-/commit/8df5540c53b862d516ac25f908c2fff4a547b4a6: /home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c: In function 'unpack_elf_symbol_info': /home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c:2079:27: error: 'STT_ARM_16BIT' undeclared (first use in this function) 2079 | if (info->type == STT_ARM_16BIT) { | ^~~~~~~~~~~~~ /home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c:2079:27: note: each undeclared identifier is reported only once for each function it appears in /home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c: In function 'create_symbol_addr_search_index': /home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c:2228:78: error: 'STT_ARM_16BIT' undeclared (first use in this function) 2228 | if (type == STT_FUNC || type == STT_ARM_TFUNC || type == STT_ARM_16BIT) { | ^~~~~~~~~~~~~ Fixes: 81802e263a12e173e0e1028449d1e1e11b2e5974 - http://autobuild.buildroot.org/results/8388acf59689ed7e621bdf158483e3df1cf9bef7 Signed-off-by: Fabrice Fontaine Signed-off-by: Arnout Vandecappelle (cherry picked from commit dd595d3b06a355f58efcc547ff1f001dd55c99c6) Signed-off-by: Peter Korsgaard --- ...gent-tcf-services-tcf_elf.c-fix-x86-build.patch | 60 ++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/package/tcf-agent/0001-agent-tcf-services-tcf_elf.c-fix-x86-build.patch b/package/tcf-agent/0001-agent-tcf-services-tcf_elf.c-fix-x86-build.patch new file mode 100644 index 0000000000..5f08fa485e --- /dev/null +++ b/package/tcf-agent/0001-agent-tcf-services-tcf_elf.c-fix-x86-build.patch @@ -0,0 +1,60 @@ +From 0a847ca035113540ee44d17f364bf4701fe78355 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 1 Mar 2024 22:31:05 +0100 +Subject: [PATCH] agent/tcf/services/tcf_elf.c: fix x86 build + +Fix the following x86 build failure raised since version 1.8.0 and +https://gitlab.eclipse.org/eclipse/tcf/tcf.agent/-/commit/8df5540c53b862d516ac25f908c2fff4a547b4a6: + +/home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c: In function 'unpack_elf_symbol_info': +/home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c:2079:27: error: 'STT_ARM_16BIT' undeclared (first use in this function) + 2079 | if (info->type == STT_ARM_16BIT) { + | ^~~~~~~~~~~~~ +/home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c:2079:27: note: each undeclared identifier is reported only once for each function it appears in +/home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c: In function 'create_symbol_addr_search_index': +/home/buildroot/autobuild/run/instance-1/output-1/build/tcf-agent-1.8.0/agent/tcf/services/tcf_elf.c:2228:78: error: 'STT_ARM_16BIT' undeclared (first use in this function) + 2228 | if (type == STT_FUNC || type == STT_ARM_TFUNC || type == STT_ARM_16BIT) { + | ^~~~~~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/8388acf59689ed7e621bdf158483e3df1cf9bef7 + +Signed-off-by: Fabrice Fontaine +Upstream: https://gitlab.eclipse.org/eclipse/tcf/tcf.agent/-/merge_requests/1 +--- + agent/tcf/services/tcf_elf.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/agent/tcf/services/tcf_elf.c b/agent/tcf/services/tcf_elf.c +index 1b3900ec..b0b948e4 100644 +--- a/agent/tcf/services/tcf_elf.c ++++ b/agent/tcf/services/tcf_elf.c +@@ -2076,10 +2076,12 @@ void unpack_elf_symbol_info(ELF_Section * sym_sec, U4_T index, ELF_SymbolInfo * + } + + if (file->machine == EM_ARM) { ++#ifdef STT_ARM_16BIT + if (info->type == STT_ARM_16BIT) { + info->type = STT_OBJECT; + info->type16bit = 1; + } ++#endif + if (info->type == STT_ARM_TFUNC) { + info->type = STT_FUNC; + info->type16bit = 1; +@@ -2225,7 +2227,11 @@ static void create_symbol_addr_search_index(ELF_Section * sec) { + } + add = add && type != STT_GNU_IFUNC; + if (add && file->machine == EM_ARM) { +- if (type == STT_FUNC || type == STT_ARM_TFUNC || type == STT_ARM_16BIT) { ++ if (type == STT_FUNC || type == STT_ARM_TFUNC ++#ifdef STT_ARM_16BIT ++ || type == STT_ARM_16BIT ++#endif ++ ) { + addr = addr & ~(U8_T)1; + } + } +-- +2.43.0 + From peter at korsgaard.com Thu May 2 16:30:18 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 18:30:18 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] support/scripts/pkg-stats: fix/improve git hash sorting Message-ID: <20240502163355.44E2E86620@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=7a5eda5009b13bd434521436f9a3fa68d25e29b2 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x sortGrid()'s handling of git hashes and other large hex numbers has been inconsistent, they can be detected as strings or numbers depending on what type of character they start with. This patch fixes the behaviour by using a regex to capture everything that looks like a big hex number and treat it as a string. This means when you sort by current version ascending all the version strings with big hex numbers should show up first, sorted 0-9,a-f. First we check for a string length >= 39, and then apply a regex to return an array with every char from that string that matched the regex. If the length of this array is still >= 39 we can assume we are looking at something containing a git hash. The reason why the length is defined as ">= 39" and not "40" or "39 or 40" is twofold: Firstly, 39 was chosen as a minimum to match stuff with 39 char git hashes, like the rockchip-mali package. Secondly, there is no max because we actually want to catch not just explicitly git hashes, but any verson string with big gnarly hex numbers in it. Stuff like: "1.4.2-168-ged3039cdbeeb28fc0011c3585d8f7dfb91038292" Why? Well, the idea is less about git hashes and sorting and more about grouping similarly formatted version strings. It would be impossble (or at least annoyingly complicated) and of dubious utility to get a real sequential sort out of the current version column, so the attempt here is to at the very least collect all the similarly formatted things together. This isn't perfect, but it's a (arguably) more useful sorted output than before. A demo is available here: https://sen-h.codeberg.page/pkg-stats-demos/@pages/fix-improve-git-hash-sorting.html Signed-off-by: Sen Hastings Signed-off-by: Arnout Vandecappelle (cherry picked from commit ce7363524c172e65571e4b5d76ef65a36f7c3020) Signed-off-by: Peter Korsgaard --- support/scripts/pkg-stats | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/support/scripts/pkg-stats b/support/scripts/pkg-stats index 3295eb7a48..4dc1857a9e 100755 --- a/support/scripts/pkg-stats +++ b/support/scripts/pkg-stats @@ -741,6 +741,7 @@ addedCSSRules.forEach(rule => styleSheet.insertRule(rule)); function sortGrid(sortLabel){ let i = 0; let pkgSortArray = [], sortedPkgArray = [], pkgStringSortArray = [], pkgNumSortArray = []; + const git_hash_regex = /[a-f,0-9]/gi; const columnValues = Array.from(document.getElementsByClassName(sortLabel)); const columnName = document.getElementById(sortLabel); let lastStyle = document.getElementById("sort-css"); @@ -765,7 +766,9 @@ function sortGrid(sortLabel){ pkgSortArray.push(sortArr); }); pkgSortArray.forEach((listing) => { - if ( isNaN(parseInt(listing[1], 10)) ){ + if ( listing[1].length >= 39 && listing[1].match(git_hash_regex).length >= 39){ + pkgStringSortArray.push(listing); + } else if ( isNaN(parseInt(listing[1], 10)) ){ pkgStringSortArray.push(listing); } else { listing[1] = parseFloat(listing[1]); From peter at korsgaard.com Thu May 2 16:33:18 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 18:33:18 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/dmraid: fix musl build Message-ID: <20240502163355.6243186637@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=3710b671cad96d81c85d91f2384b6c6f6280a507 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x dmraid is a very old package from 2010 with an awkward configure script which doesn't honor CFLAGS: ac_cv_env_CFLAGS_set=set ac_cv_env_CFLAGS_value='-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -g0 ' [...] ## ----------------- ## ## Output variables. ## ## ----------------- ## AWK='gawk' CC='/home/autobuild/autobuild/instance-3/output-1/host/bin/sh4a-buildroot-linux-musl-gcc' CFLAGS='-O2' resulting in the following build failure with musl >= 1.2.4 and https://github.com/bminor/musl/commit/25e6fee27f4a293728dd15b659170e7b9c7db9bc because _LARGEFILE64_SOURCE is not set: /home/autobuild/autobuild/instance-3/output-1/host/lib/gcc/sh4a-buildroot-linux-musl/12.3.0/../../../../sh4a-buildroot-linux-musl/bin/ld: misc/file.o: in function `rw_file': file.c:(.text+0x150): undefined reference to `lseek64' To fix this issue, pass TARGET_CONFIGURE_OPTS through DMRAID_MAKE_OPTS Fixes: - http://autobuild.buildroot.org/results/5c7c82959ce92db908d3ca20e2c1137509c2f981 Signed-off-by: Fabrice Fontaine Signed-off-by: Arnout Vandecappelle (cherry picked from commit de6415ad9c35b2013af1f1821bcac12ba3959674) Signed-off-by: Peter Korsgaard --- package/dmraid/dmraid.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/package/dmraid/dmraid.mk b/package/dmraid/dmraid.mk index 0382cd4d99..9a78c2ae07 100644 --- a/package/dmraid/dmraid.mk +++ b/package/dmraid/dmraid.mk @@ -13,6 +13,7 @@ DMRAID_MAKE = $(MAKE1) DMRAID_INSTALL_STAGING = YES DMRAID_LICENSE = GPL-2.0 DMRAID_LICENSE_FILES = $(DMRAID_SUBDIR)/LICENSE_GPL $(DMRAID_SUBDIR)/LICENSE +DMRAID_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS) DMRAID_DEPENDENCIES = lvm2 From peter at korsgaard.com Thu May 2 16:57:48 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 18:57:48 +0200 Subject: [Buildroot] [PATCH 1/1] package/imx-gpu-viv: fix masking fb option In-Reply-To: <834828e5-042f-4588-9ed6-10fa5a5e2502@mind.be> (Arnout Vandecappelle via buildroot's message of "Sun, 7 Apr 2024 18:11:13 +0200") References: <20240306111212.1331451-1-anaumann@ultratronik.de> <834828e5-042f-4588-9ed6-10fa5a5e2502@mind.be> Message-ID: <87y18s40dv.fsf@dell.be.48ers.dk> >>>>> "Arnout" == Arnout Vandecappelle via buildroot writes: > Hi Andreas, > On 06/03/2024 12:12, Andreas Naumann wrote: >> Only the 32bit ARM blob provides the framebuffer backend. This is >> apparently independent of which imx8 derivate is used, so changed >> the condition for the config option accordingly. > You should have included some references here so other people can > double-check this information. >> Signed-off-by: Andreas Naumann >> --- >> package/freescale-imx/imx-gpu-viv/Config.in | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> diff --git a/package/freescale-imx/imx-gpu-viv/Config.in >> b/package/freescale-imx/imx-gpu-viv/Config.in >> index 3e095b730cf..b8dff8f9ab6 100644 >> --- a/package/freescale-imx/imx-gpu-viv/Config.in >> +++ b/package/freescale-imx/imx-gpu-viv/Config.in >> @@ -45,8 +45,8 @@ choice >> config BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_FB >> bool "Framebuffer" >> - # The i.MX8 blob doesn't support FB output >> - depends on !BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M >> + # The i.MX8 aarch64 blob doesn't support FB output > Or you can still add that later in a comment here. > Applied to master, thanks. Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 16:58:39 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 18:58:39 +0200 Subject: [Buildroot] [PATCH 1/1] package/fmc: enable also for aarch64 QorIQ processors In-Reply-To: (Arnout Vandecappelle via buildroot's message of "Sun, 7 Apr 2024 18:12:57 +0200") References: <20240306113724.121900-1-dgouarin@gmail.com> Message-ID: <87ttjg40cg.fsf@dell.be.48ers.dk> >>>>> "Arnout" == Arnout Vandecappelle via buildroot writes: > On 06/03/2024 12:37, David Gouarin wrote: >> QorIQ processors family also includes LS Series wich are based on aarch64 >> Signed-off-by: David Gouarin > Applied to master, thanks. Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 16:59:40 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 18:59:40 +0200 Subject: [Buildroot] [PATCH 1/1] package/perl-net-ssleay: bump to version 1.94 In-Reply-To: <20240407124550.1282517-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sun, 7 Apr 2024 14:45:50 +0200") References: <20240407124550.1282517-1-fontaine.fabrice@gmail.com> Message-ID: <87plu440ar.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > This bump will fix the following build failure with libressl raised > since commit 9d8f9c73a2fd087dd2e8d8853a80da605fa64e4b: > SSLeay.c: In function 'XS_Net__SSLeay_X509_policy_tree_free': > SSLeay.c:17730:9: error: unknown type name 'X509_POLICY_TREE' > 17730 | X509_POLICY_TREE * tree = INT2PTR(X509_POLICY_TREE *,SvIV(ST(0))) > | ^~~~~~~~~~~~~~~~ > https://metacpan.org/dist/Net-SSLeay/changes > Fixes: 9d8f9c73a2fd087dd2e8d8853a80da605fa64e4b > - http://autobuild.buildroot.org/results/974b7cdd275249c888fc6205f6ca31a3cf28b18f > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 16:58:10 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 18:58:10 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/fmc: enable also for aarch64 QorIQ processors Message-ID: <20240502165955.18EFF86647@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=6e8ae6b661355bb56368fa8dc7fd9289e6d4d226 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x QorIQ processors family also includes LS Series wich are based on aarch64 Signed-off-by: David Gouarin Signed-off-by: Arnout Vandecappelle (cherry picked from commit 2656ca8912e151e874ceb366e6eef0bfe4228ac0) Signed-off-by: Peter Korsgaard --- package/fmc/Config.in | 6 +++--- package/fmlib/Config.in | 10 ++++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/package/fmc/Config.in b/package/fmc/Config.in index c89a87c99e..1c6ae5e80a 100644 --- a/package/fmc/Config.in +++ b/package/fmc/Config.in @@ -1,14 +1,14 @@ comment "fmc needs a toolchain w/ C++" - depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 + depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 || BR2_aarch64 depends on !BR2_INSTALL_LIBSTDCPP comment "fmc needs a Linux kernel to be built" - depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 + depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 || BR2_aarch64 depends on !BR2_LINUX_KERNEL config BR2_PACKAGE_FMC bool "fmc" - depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 + depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 || BR2_aarch64 depends on BR2_INSTALL_LIBSTDCPP depends on BR2_LINUX_KERNEL # fmlib select BR2_PACKAGE_TCLAP diff --git a/package/fmlib/Config.in b/package/fmlib/Config.in index 97d55d1250..459d5bf102 100644 --- a/package/fmlib/Config.in +++ b/package/fmlib/Config.in @@ -1,10 +1,10 @@ comment "fmlib needs a Linux kernel to be built" - depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 + depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 || BR2_aarch64 depends on !BR2_LINUX_KERNEL config BR2_PACKAGE_FMLIB bool "fmlib" - depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 + depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 || BR2_aarch64 depends on BR2_LINUX_KERNEL help The Frame Manager library provides Freescale PowerPC platforms @@ -33,6 +33,10 @@ config BR2_FMLIB_QORIQ_FAMILY_T2080 bool "t208x" depends on BR2_powerpc_e6500 +config BR2_FMLIB_QORIQ_FAMILY_ARM + bool "arm" + depends on BR2_aarch64 + endchoice config BR2_PACKAGE_FMLIB_ARCHTYPE @@ -40,11 +44,13 @@ config BR2_PACKAGE_FMLIB_ARCHTYPE default "ppce500mc" if BR2_powerpc_e500mc default "ppc64e6500" if BR2_powerpc_e6500 && BR2_powerpc64 default "ppc32e6500" if BR2_powerpc_e6500 && BR2_powerpc + default "arm" if BR2_aarch64 config BR2_PACKAGE_FMLIB_PLATFORM string default "P4080" if BR2_FMLIB_QORIQ_FAMILY_P4080 default "T4240" if BR2_FMLIB_QORIQ_FAMILY_T4240 default "FMAN_V3H" if BR2_FMLIB_QORIQ_FAMILY_T2080 + default "arm" if BR2_aarch64 endif From peter at korsgaard.com Thu May 2 16:59:31 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 18:59:31 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/perl-net-ssleay: bump to version 1.94 Message-ID: <20240502165955.274B086634@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=69ab6d066b14036eb8d35db3aa57686f22898a52 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x This bump will fix the following build failure with libressl raised since commit 9d8f9c73a2fd087dd2e8d8853a80da605fa64e4b: SSLeay.c: In function 'XS_Net__SSLeay_X509_policy_tree_free': SSLeay.c:17730:9: error: unknown type name 'X509_POLICY_TREE' 17730 | X509_POLICY_TREE * tree = INT2PTR(X509_POLICY_TREE *,SvIV(ST(0))) | ^~~~~~~~~~~~~~~~ https://metacpan.org/dist/Net-SSLeay/changes Fixes: 9d8f9c73a2fd087dd2e8d8853a80da605fa64e4b - http://autobuild.buildroot.org/results/974b7cdd275249c888fc6205f6ca31a3cf28b18f Signed-off-by: Fabrice Fontaine Signed-off-by: Arnout Vandecappelle (cherry picked from commit 241b18b51e3219a06e19010ec874b3bb681ca110) Signed-off-by: Peter Korsgaard --- package/perl-net-ssleay/perl-net-ssleay.hash | 4 ++-- package/perl-net-ssleay/perl-net-ssleay.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/perl-net-ssleay/perl-net-ssleay.hash b/package/perl-net-ssleay/perl-net-ssleay.hash index 9caff68edd..219edd4e0f 100644 --- a/package/perl-net-ssleay/perl-net-ssleay.hash +++ b/package/perl-net-ssleay/perl-net-ssleay.hash @@ -1,6 +1,6 @@ # retrieved by scancpan from http://cpan.metacpan.org/ -md5 c73821e9790b3bdb3471d9b8faf48bbb Net-SSLeay-1.93_01.tar.gz -sha256 876d022fbc719631b11d6bb4b6e78db3c19bbca578093c376c8f9900a4432aa3 Net-SSLeay-1.93_01.tar.gz +md5 1b22c764e5a094c6261e37a4b1f148ce Net-SSLeay-1.94.tar.gz +sha256 9d7be8a56d1bedda05c425306cc504ba134307e0c09bda4a788c98744ebcd95d Net-SSLeay-1.94.tar.gz # computed by scancpan sha256 685e534b60d4e2b4fbb1a259a83b5a86e877a919bbb9efc95994276f706a3a71 LICENSE diff --git a/package/perl-net-ssleay/perl-net-ssleay.mk b/package/perl-net-ssleay/perl-net-ssleay.mk index 8b7b2b973b..7f58093082 100644 --- a/package/perl-net-ssleay/perl-net-ssleay.mk +++ b/package/perl-net-ssleay/perl-net-ssleay.mk @@ -4,7 +4,7 @@ # ################################################################################ -PERL_NET_SSLEAY_VERSION = 1.93_01 +PERL_NET_SSLEAY_VERSION = 1.94 PERL_NET_SSLEAY_SOURCE = Net-SSLeay-$(PERL_NET_SSLEAY_VERSION).tar.gz PERL_NET_SSLEAY_SITE = $(BR2_CPAN_MIRROR)/authors/id/C/CH/CHRISN PERL_NET_SSLEAY_DEPENDENCIES = openssl From peter at korsgaard.com Thu May 2 16:56:55 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 18:56:55 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/imx-gpu-viv: fix masking fb option Message-ID: <20240502165955.0DCC186640@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=bf3225e55137b5c565d37981b6be0348a52a2cd4 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Only the 32bit ARM blob provides the framebuffer backend. This is apparently independent of which imx8 derivate is used, so changed the condition for the config option accordingly. Signed-off-by: Andreas Naumann Signed-off-by: Arnout Vandecappelle (cherry picked from commit 47a02a5afcdf5d6a72d203c31dabd5727547057c) Signed-off-by: Peter Korsgaard --- package/freescale-imx/imx-gpu-viv/Config.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/freescale-imx/imx-gpu-viv/Config.in b/package/freescale-imx/imx-gpu-viv/Config.in index 3e095b730c..b8dff8f9ab 100644 --- a/package/freescale-imx/imx-gpu-viv/Config.in +++ b/package/freescale-imx/imx-gpu-viv/Config.in @@ -45,8 +45,8 @@ choice config BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_FB bool "Framebuffer" - # The i.MX8 blob doesn't support FB output - depends on !BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M + # The i.MX8 aarch64 blob doesn't support FB output + depends on BR2_arm config BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL bool "Wayland" From arbab at linux.ibm.com Thu May 2 19:05:15 2024 From: arbab at linux.ibm.com (Reza Arbab) Date: Thu, 2 May 2024 14:05:15 -0500 Subject: [Buildroot] [PATCH] package/petitboot: add libxcrypt optional dependency In-Reply-To: References: <20240416144818.681220-1-arbab@linux.ibm.com> Message-ID: On Wed, May 01, 2024 at 11:44:40PM +0200, Yann E. MORIN wrote: >Applied to master, thanks. Thanks Yann! Do you have any comments on the three remaining patches in this series? https://patchwork.ozlabs.org/project/buildroot/list/?series=394036 Patch 3/5 is a required fix for petitboot to work properly, and the others would be nice to have. -- Reza Arbab From fran.millocs at live.com.ar Thu May 2 19:45:19 2024 From: fran.millocs at live.com.ar (franco ariel) Date: Thu, 2 May 2024 19:45:19 +0000 Subject: [Buildroot] Error building flutter-engine Message-ID: Hi everyone! I'm trying to compile flutter-engine from the latest version of buildroot but, I'm getting this error: >>> flutter-engine 3.19.5 Building cd /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5 && PATH=/home/frank/buildroot-base/buildroot/output/host/share/depot_tools:"/home/frank/buildroot-base/buildroot/output/host/bin:/home/frank/buildroot-base/buildroot/output/host/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin" PUB_CACHE=/home/frank/buildroot-base/buildroot/dl/br-flutter-pub-cache HOME=/home/frank/buildroot-base/buildroot/output/host/share/flutter/sdk /home/frank/buildroot-base/buildroot/output/host/bin/ninja -j 33 -C /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/out/linux_release_arm64 ninja: Entering directory `/home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/out/linux_release_arm64' ninja: warning: premature end of file; recovering ninja: warning: -jN forced on command line; ignoring GNU make jobserver. [2485/8965] CXX obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o FAILED: obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/buildtools/linux-x64/clang/bin/clang++ -MD -MF obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o.d --target=aarch64-unknown-linux-gnu --sysroot /home/frank/buildroot-base/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot -DU_I18N_IMPLEMENTATION -DUSE_OPENSSL=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_LIBCPP_DISABLE_AVAILABILITY=1 -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DHAVE_DLOPEN=0 -DUCONFIG_ONLY_HTML_CONVERSION=1 -DUCONFIG_USE_ML_PHRASE_BREAKING=1 -DUCONFIG_USE_WINDOWS_LCID_MAPPING_API=0 -DU_CHARSET_IS_UTF8=1 -DU_USING_ICU_NAMESPACE=0 -DU_ENABLE_DYLOAD=0 -DUSE_CHROMIUM_ICU=1 -DU_ENABLE_TRACING=1 -DU_ENABLE_RESOURCE_TRACING=0 -DU_STATIC_IMPLEMENTATION -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE -I../.. -Igen -I../../third_party/libcxx/include -I../../third_party/libcxxabi/include -I../../flutter/build/secondary/third_party/libcxx/config -I../../third_party/icu/source/common -I../../third_party/icu/source/i18n -fno-strict-aliasing -fstack-protector --param=ssp-buffer-size=4 -fPIC -pipe -pthread --target=aarch64-linux-gnu -DBORINGSSL_CLANG_SUPPORTS_DOT_ARCH -fcolor-diagnostics -fvisibility=hidden --sysroot=/home/frank/buildroot-base/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot -Wstring-conversion -Wnewline-eof -O2 -fno-ident -fdata-sections -ffunction-sections -g0 -Wno-deprecated-non-prototype -Wno-newline-eof -Wno-typedef-redefinition -Wendif-labels -Werror -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-but-set-parameter -Wno-unused-but-set-variable -Wno-implicit-int-float-conversion -Wno-deprecated-copy -Wno-psabi -Wno-deprecated-literal-operator -Wno-unqualified-std-cast-call -Wno-non-c-typedef-for-linkage -Wno-range-loop-construct -Wno-unused-function -Wno-parentheses -Wno-unused-function -Wno-unused-variable -Wno-ambiguous-reversed-operator -Wno-deprecated-declarations -fvisibility=hidden -fvisibility-inlines-hidden -std=c++17 -nostdinc++ -nostdinc++ -fvisibility=hidden -fno-exceptions -Wno-newline-eof -c ../../third_party/icu/source/i18n/nfsubs.cpp -o obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o clang++: error: clang frontend command failed with exit code 139 (use -v to see invocation) Fuchsia clang version 18.0.0 (https://llvm.googlesource.com/llvm-project 725656bdd885483c39f482a01ea25d67acf39c46) Target: aarch64-unknown-linux-gnu Thread model: posix InstalledDir: /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/buildtools/linux-x64/clang/bin clang++: note: diagnostic msg: ******************** I'm stuck on this since I format my computer, I download everything what I need, and every time that it comes to flutter-engine, I get this error that I never seen. Thank you in advance, Franco. -------------- next part -------------- An HTML attachment was scrubbed... URL: From peter at korsgaard.com Thu May 2 20:25:18 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 22:25:18 +0200 Subject: [Buildroot] [PATCH 1/1] package/inih: bump to version 58 In-Reply-To: <20240407131649.1416942-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sun, 7 Apr 2024 15:16:49 +0200") References: <20240407131649.1416942-1-fontaine.fabrice@gmail.com> Message-ID: <87le4s3qs1.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > This bump will fix the following build failure with gcc 5 raised since > bump to version 57 in commit 65c8a9b6626de83365865dea6fff1749466a36aa > thanks to > https://github.com/benhoyt/inih/commit/4e618f77d4bae216865c5abd972d99b1ba5031e2: > In file included from /home/buildroot/autobuild/run/instance-1/output-1/host/opt/ext-toolchain/mips-linux-gnu/include/c++/5.3.0/cstdint:35:0, > from ../cpp/INIReader.h:17, > from ../cpp/INIReader.cpp:16: > /home/buildroot/autobuild/run/instance-1/output-1/host/opt/ext-toolchain/mips-linux-gnu/include/c++/5.3.0/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options. > #error This file requires compiler and library support for the \ > ^ > https://github.com/benhoyt/inih/releases/tag/r58 > Fixes: 65c8a9b6626de83365865dea6fff1749466a36aa > - http://autobuild.buildroot.org/results/7a5ba516cde536e103669a0422d336dd8a3b1dbc > Signed-off-by: Fabrice Fontaine > --- > package/inih/inih.hash | 2 +- > package/inih/inih.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > diff --git a/package/inih/inih.hash b/package/inih/inih.hash > index 476b544ce6..f20d7ac0b6 100644 > --- a/package/inih/inih.hash > +++ b/package/inih/inih.hash > @@ -1,3 +1,3 @@ > # Locally computed > -sha256 f03f98ca35c3adb56b2358573c8d3eda319ccd5287243d691e724b7eafa970b3 inih-57.tar.gz > +sha256 e79216260d5dffe809bda840be48ab0eec7737b2bb9f02d2275c1b46344ea7b7 inih-58.tar.gz > sha256 9ae3b39e83e9158e44b67733baa3bb2d84e80efdcfb14a5820210a42c7abdf7f LICENSE.txt > diff --git a/package/inih/inih.mk b/package/inih/inih.mk > index 93032f1ed5..80cde0942b 100644 > --- a/package/inih/inih.mk > +++ b/package/inih/inih.mk > @@ -4,7 +4,7 @@ > # > ################################################################################ > -INIH_VERSION = 57 > +INIH_VERSION = 58 > INIH_SITE = $(call github,benhoyt,inih,r$(INIH_VERSION)) > INIH_INSTALL_STAGING = YES > INIH_LICENSE = BSD-3-Clause > -- > 2.43.0 > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 20:25:26 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 22:25:26 +0200 Subject: [Buildroot] [PATCH 1/1] package/inih: bump to version 58 In-Reply-To: <20240407131649.1416942-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sun, 7 Apr 2024 15:16:49 +0200") References: <20240407131649.1416942-1-fontaine.fabrice@gmail.com> Message-ID: <87h6fg3qrt.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > This bump will fix the following build failure with gcc 5 raised since > bump to version 57 in commit 65c8a9b6626de83365865dea6fff1749466a36aa > thanks to > https://github.com/benhoyt/inih/commit/4e618f77d4bae216865c5abd972d99b1ba5031e2: > In file included from /home/buildroot/autobuild/run/instance-1/output-1/host/opt/ext-toolchain/mips-linux-gnu/include/c++/5.3.0/cstdint:35:0, > from ../cpp/INIReader.h:17, > from ../cpp/INIReader.cpp:16: > /home/buildroot/autobuild/run/instance-1/output-1/host/opt/ext-toolchain/mips-linux-gnu/include/c++/5.3.0/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options. > #error This file requires compiler and library support for the \ > ^ > https://github.com/benhoyt/inih/releases/tag/r58 > Fixes: 65c8a9b6626de83365865dea6fff1749466a36aa > - http://autobuild.buildroot.org/results/7a5ba516cde536e103669a0422d336dd8a3b1dbc > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 20:26:33 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 02 May 2024 22:26:33 +0200 Subject: [Buildroot] [PATCH 1/1] package/clamav: fix CLAMAV_LIBS In-Reply-To: <20240407161339.2439456-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sun, 7 Apr 2024 18:13:39 +0200") References: <20240407161339.2439456-1-fontaine.fabrice@gmail.com> Message-ID: <87cyq43qpy.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > CLAMAV_LIBS is ignored since bump to version 1.0.1 and switch to > cmake build system in commit 203725a46bc6b61ed7e4fdb3d76f62327d3e47fa > resulting in the following build failure: > /home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-musleabihf/12.3.0/../../../../arm-buildroot-linux-musleabihf/bin/ld: > CMakeFiles/clamonacc.dir/inotif/hash.c.o: in function > `onas_ht_add_hierarchy': > hash.c:(.text+0xa84): undefined reference to `fts_open' > Fixes: 203725a46bc6b61ed7e4fdb3d76f62327d3e47fa > - http://autobuild.buildroot.org/results/fe71ab29d02caeed609f1a181fccbd46b6feff65 > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 2 20:26:13 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 22:26:13 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/clamav: fix CLAMAV_LIBS Message-ID: <20240502202652.19BB386389@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=a1bb09101e283c53eb0314d6881c7483628df4d8 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x The LIBS environment variable is ignored since bump to version 1.0.1 and switch to cmake build system in commit 203725a46bc6b61ed7e4fdb3d76f62327d3e47fa resulting in the following build failure: /home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-musleabihf/12.3.0/../../../../arm-buildroot-linux-musleabihf/bin/ld: CMakeFiles/clamonacc.dir/inotif/hash.c.o: in function `onas_ht_add_hierarchy': hash.c:(.text+0xa84): undefined reference to `fts_open' Fixes: 203725a46bc6b61ed7e4fdb3d76f62327d3e47fa - http://autobuild.buildroot.org/results/fe71ab29d02caeed609f1a181fccbd46b6feff65 Signed-off-by: Fabrice Fontaine Signed-off-by: Arnout Vandecappelle (cherry picked from commit b526b2aa1546c42384ba1af21afea1a0f08073d7) Signed-off-by: Peter Korsgaard --- package/clamav/clamav.mk | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package/clamav/clamav.mk b/package/clamav/clamav.mk index 7c6dfce6f2..c548897c37 100644 --- a/package/clamav/clamav.mk +++ b/package/clamav/clamav.mk @@ -45,9 +45,8 @@ CLAMAV_DEPENDENCIES += musl-fts CLAMAV_LIBS += -lfts endif -CLAMAV_CONF_ENV += LIBS="$(CLAMAV_LIBS)" - CLAMAV_CONF_OPTS = \ + -DCMAKE_EXE_LINKER_FLAGS="$(CLAMAV_LIBS)" \ -DCMAKE_SKIP_INSTALL_RPATH=ON \ -DENABLE_JSON_SHARED=ON \ -DENABLE_MAN_PAGES=OFF \ From peter at korsgaard.com Thu May 2 20:24:44 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 2 May 2024 22:24:44 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/inih: bump to version 58 Message-ID: <20240502202652.0E21E86384@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=d3e13a40c4ba96036c59d158403ada64e47c1c68 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x This bump will fix the following build failure with gcc 5 raised since bump to version 57 in commit 65c8a9b6626de83365865dea6fff1749466a36aa thanks to https://github.com/benhoyt/inih/commit/4e618f77d4bae216865c5abd972d99b1ba5031e2: In file included from /home/buildroot/autobuild/run/instance-1/output-1/host/opt/ext-toolchain/mips-linux-gnu/include/c++/5.3.0/cstdint:35:0, from ../cpp/INIReader.h:17, from ../cpp/INIReader.cpp:16: /home/buildroot/autobuild/run/instance-1/output-1/host/opt/ext-toolchain/mips-linux-gnu/include/c++/5.3.0/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options. #error This file requires compiler and library support for the \ ^ https://github.com/benhoyt/inih/releases/tag/r58 Fixes: 65c8a9b6626de83365865dea6fff1749466a36aa - http://autobuild.buildroot.org/results/7a5ba516cde536e103669a0422d336dd8a3b1dbc Signed-off-by: Fabrice Fontaine Signed-off-by: Arnout Vandecappelle (cherry picked from commit bfa4dd299f1346d5e246a552c491b630c64a6a97) Signed-off-by: Peter Korsgaard --- package/inih/inih.hash | 2 +- package/inih/inih.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/inih/inih.hash b/package/inih/inih.hash index 476b544ce6..f20d7ac0b6 100644 --- a/package/inih/inih.hash +++ b/package/inih/inih.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 f03f98ca35c3adb56b2358573c8d3eda319ccd5287243d691e724b7eafa970b3 inih-57.tar.gz +sha256 e79216260d5dffe809bda840be48ab0eec7737b2bb9f02d2275c1b46344ea7b7 inih-58.tar.gz sha256 9ae3b39e83e9158e44b67733baa3bb2d84e80efdcfb14a5820210a42c7abdf7f LICENSE.txt diff --git a/package/inih/inih.mk b/package/inih/inih.mk index 93032f1ed5..80cde0942b 100644 --- a/package/inih/inih.mk +++ b/package/inih/inih.mk @@ -4,7 +4,7 @@ # ################################################################################ -INIH_VERSION = 57 +INIH_VERSION = 58 INIH_SITE = $(call github,benhoyt,inih,r$(INIH_VERSION)) INIH_INSTALL_STAGING = YES INIH_LICENSE = BSD-3-Clause From arnout at mind.be Thu May 2 21:04:47 2024 From: arnout at mind.be (Arnout Vandecappelle) Date: Thu, 2 May 2024 23:04:47 +0200 Subject: [Buildroot] [PATCH 00/15 v2] support/download: extend download features and reproducibility (branch yem/git-attributes) In-Reply-To: References: Message-ID: Hi Yann,all, On 27/04/2024 20:38, Yann E. MORIN wrote: > Hello All! > > This series extends the download infra in two ways: > 1. git attributes are emulated > 2- download reproducibility is enhanced As discussed privately on IRC: while applying this series, I suddenly remembered that we also wanted to update the tar version used by Buildroot to something higher than 1.34. We're currently stuck there because of changes in the generated tar format, which also changes the tarball hashes, which would imply a huge refresh of the hash files that use VCS or vendored sources. This series, however, already does such a refresh of all the hash files, so it's the ideal occasion to also update tar. Therefore, I haven't applied to master. Instead, I've pushed my modifications to branch yem/git-attributes on https://gitlab.com/arnout/buildroot and you can pick it up from there. And I've marked the series as Changes Requested. Regards, Arnout [snip] From arnout at mind.be Thu May 2 21:08:57 2024 From: arnout at mind.be (Arnout Vandecappelle) Date: Thu, 2 May 2024 23:08:57 +0200 Subject: [Buildroot] Error building flutter-engine In-Reply-To: References: Message-ID: <97928e91-8148-41a4-b7a2-0297fc72446a@mind.be> On 02/05/2024 21:45, franco ariel wrote: > Hi everyone! > > I'm trying to compile flutter-engine from the latest version of buildroot but, > I'm getting this error: > > >>> flutter-engine 3.19.5 Building > cd /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5 && > PATH=/home/frank/buildroot-base/buildroot/output/host/share/depot_tools:"/home/frank/buildroot-base/buildroot/output/host/bin:/home/frank/buildroot-base/buildroot/output/host/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin" PUB_CACHE=/home/frank/buildroot-base/buildroot/dl/br-flutter-pub-cache HOME=/home/frank/buildroot-base/buildroot/output/host/share/flutter/sdk /home/frank/buildroot-base/buildroot/output/host/bin/ninja -j 33 -C /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/out/linux_release_arm64 > ninja: Entering directory > `/home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/out/linux_release_arm64' > ninja: warning: premature end of file; recovering This looks like something went wrong in the configuring step, and the ninja file is corrupted... Perhaps a file size limit that was exceeded, or out of disk space? Regards, Arnout > ninja: warning: -jN forced on command line; ignoring GNU make jobserver. > [2485/8965] CXX obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o > > FAILED: obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o > /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/buildtools/linux-x64/clang/bin/clang++ -MD -MF obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o.d --target=aarch64-unknown-linux-gnu --sysroot /home/frank/buildroot-base/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot -DU_I18N_IMPLEMENTATION -DUSE_OPENSSL=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_LIBCPP_DISABLE_AVAILABILITY=1 -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DHAVE_DLOPEN=0 -DUCONFIG_ONLY_HTML_CONVERSION=1 -DUCONFIG_USE_ML_PHRASE_BREAKING=1 -DUCONFIG_USE_WINDOWS_LCID_MAPPING_API=0 -DU_CHARSET_IS_UTF8=1 -DU_USING_ICU_NAMESPACE=0 -DU_ENABLE_DYLOAD=0 -DUSE_CHROMIUM_ICU=1 -DU_ENABLE_TRACING=1 -DU_ENABLE_RESOURCE_TRACING=0 -DU_STATIC_IMPLEMENTATION -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE -I../.. -Igen -I../../third_party/libcxx/include -I../../third_party/libcxxabi/include -I../../flutter/build/secondary/third_party/libcxx/config -I../../third_party/icu/source/common -I../../third_party/icu/source/i18n -fno-strict-aliasing -fstack-protector --param=ssp-buffer-size=4 -fPIC -pipe -pthread --target=aarch64-linux-gnu -DBORINGSSL_CLANG_SUPPORTS_DOT_ARCH -fcolor-diagnostics -fvisibility=hidden --sysroot=/home/frank/buildroot-base/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot -Wstring-conversion -Wnewline-eof -O2 -fno-ident -fdata-sections -ffunction-sections -g0 -Wno-deprecated-non-prototype -Wno-newline-eof -Wno-typedef-redefinition -Wendif-labels -Werror -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-but-set-parameter -Wno-unused-but-set-variable -Wno-implicit-int-float-conversion -Wno-deprecated-copy -Wno-psabi -Wno-deprecated-literal-operator -Wno-unqualified-std-cast-call -Wno-non-c-typedef-for-linkage -Wno-range-loop-construct -Wno-unused-function -Wno-parentheses -Wno-unused-function -Wno-unused-variable -Wno-ambiguous-reversed-operator -Wno-deprecated-declarations -fvisibility=hidden -fvisibility-inlines-hidden -std=c++17 -nostdinc++ -nostdinc++ -fvisibility=hidden -fno-exceptions -Wno-newline-eof -c ../../third_party/icu/source/i18n/nfsubs.cpp -o obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o > clang++: error: clang frontend command failed with exit code 139 (use -v to see > invocation) > Fuchsia clang version 18.0.0 (https://llvm.googlesource.com/llvm-project > 725656bdd885483c39f482a01ea25d67acf39c46) > Target: aarch64-unknown-linux-gnu > Thread model: posix > InstalledDir: > /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/buildtools/linux-x64/clang/bin > clang++: note: diagnostic msg: > ******************** > > I'm stuck on this since I format my computer, I download everything what I need, > and every time that it comes to flutter-engine, I get this error that I never seen. > > > Thank you in advance, > Franco. > > > > > > > > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot From fran.millocs at live.com.ar Fri May 3 00:04:24 2024 From: fran.millocs at live.com.ar (franco ariel) Date: Fri, 3 May 2024 00:04:24 +0000 Subject: [Buildroot] Error building flutter-engine In-Reply-To: References: Message-ID: > Hi everyone! > > I'm trying to compile flutter-engine from the latest version of buildroot but, > I'm getting this error: > > >>> flutter-engine 3.19.5 Building > cd /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5 && > PATH=/home/frank/buildroot-base/buildroot/output/host/share/depot_tools:"/home/frank/buildroot-base/buildroot/output/host/bin:/home/frank/buildroot-base/buildroot/output/host/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin" PUB_CACHE=/home/frank/buildroot-base/buildroot/dl/br-flutter-pub-cache HOME=/home/frank/buildroot-base/buildroot/output/host/share/flutter/sdk /home/frank/buildroot-base/buildroot/output/host/bin/ninja -j 33 -C /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/out/linux_release_arm64 > ninja: Entering directory > `/home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/out/linux_release_arm64' > ninja: warning: premature end of file; recovering This looks like something went wrong in the configuring step, and the ninja file is corrupted... Perhaps a file size limit that was exceeded, or out of disk space? Regards, Arnout > ninja: warning: -jN forced on command line; ignoring GNU make jobserver. > [2485/8965] CXX obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o > > FAILED: obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o > /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/buildtools/linux-x64/clang/bin/clang++ -MD -MF obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o.d --target=aarch64-unknown-linux-gnu --sysroot /home/frank/buildroot-base/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot -DU_I18N_IMPLEMENTATION -DUSE_OPENSSL=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_LIBCPP_DISABLE_AVAILABILITY=1 -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DHAVE_DLOPEN=0 -DUCONFIG_ONLY_HTML_CONVERSION=1 -DUCONFIG_USE_ML_PHRASE_BREAKING=1 -DUCONFIG_USE_WINDOWS_LCID_MAPPING_API=0 -DU_CHARSET_IS_UTF8=1 -DU_USING_ICU_NAMESPACE=0 -DU_ENABLE_DYLOAD=0 -DUSE_CHROMIUM_ICU=1 -DU_ENABLE_TRACING=1 -DU_ENABLE_RESOURCE_TRACING=0 -DU_STATIC_IMPLEMENTATION -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE -I../.. -Igen -I../../third_party/libcxx/include -I../../third_party/lib cxxabi/include -I../../flutter/build/secondary/third_party/libcxx/config -I../../third_party/icu/source/common -I../../third_party/icu/source/i18n -fno-strict-aliasing -fstack-protector --param=ssp-buffer-size=4 -fPIC -pipe -pthread --target=aarch64-linux-gnu -DBORINGSSL_CLANG_SUPPORTS_DOT_ARCH -fcolor-diagnostics -fvisibility=hidden --sysroot=/home/frank/buildroot-base/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot -Wstring-conversion -Wnewline-eof -O2 -fno-ident -fdata-sections -ffunction-sections -g0 -Wno-deprecated-non-prototype -Wno-newline-eof -Wno-typedef-redefinition -Wendif-labels -Werror -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-but-set-parameter -Wno-unused-but-set-variable -Wno-implicit-int-float-conversion -Wno-deprecated-copy -Wno-psabi -Wno-deprecated-literal-operator -Wno-unqualified-std-cast-call -Wno-non-c-typedef-for-linkage -Wno-range-loop-construct -Wno-unused-function -Wno-parentheses -Wno-unused-function -Wno-unused-variable -Wno-ambiguous-reversed-operator -Wno-deprecated-declarations -fvisibility=hidden -fvisibility-inlines-hidden -std=c++17 -nostdinc++ -nostdinc++ -fvisibility=hidden -fno-exceptions -Wno-newline-eof -c ../../third_party/icu/source/i18n/nfsubs.cpp -o obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o > clang++: error: clang frontend command failed with exit code 139 (use -v to see > invocation) > Fuchsia clang version 18.0.0 (https://llvm.googlesource.com/llvm-project > 725656bdd885483c39f482a01ea25d67acf39c46) > Target: aarch64-unknown-linux-gnu > Thread model: posix > InstalledDir: > /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/buildtools/linux-x64/clang/bin > clang++: note: diagnostic msg: > ******************** > > I'm stuck on this since I format my computer, I download everything what I need, > and every time that it comes to flutter-engine, I get this error that I never seen. > > > Thank you in advance, > Franco. Thank you, Arnout, for your answer. I've already checked the disk space and RAM usage, and both were fine. After reviewing the code in flutter-engine.mk, I realized that the number of jobs set for the Ninja build was too high (-j 33). I reduced it to -j 12, and although it's slower, it compiles perfectly now. I have an i9 13900k, so I shouldn't have problems handling multiple jobs. I'm certain there's an issue elsewhere, but for now, it's working. Regards, Franco. ________________________________ De: buildroot en nombre de franco ariel Enviado: jueves, 2 de mayo de 2024 12:45 Para: Thomas Petazzoni via buildroot Asunto: [Buildroot] Error building flutter-engine Hi everyone! I'm trying to compile flutter-engine from the latest version of buildroot but, I'm getting this error: >>> flutter-engine 3.19.5 Building cd /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5 && PATH=/home/frank/buildroot-base/buildroot/output/host/share/depot_tools:"/home/frank/buildroot-base/buildroot/output/host/bin:/home/frank/buildroot-base/buildroot/output/host/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin" PUB_CACHE=/home/frank/buildroot-base/buildroot/dl/br-flutter-pub-cache HOME=/home/frank/buildroot-base/buildroot/output/host/share/flutter/sdk /home/frank/buildroot-base/buildroot/output/host/bin/ninja -j 33 -C /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/out/linux_release_arm64 ninja: Entering directory `/home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/out/linux_release_arm64' ninja: warning: premature end of file; recovering ninja: warning: -jN forced on command line; ignoring GNU make jobserver. [2485/8965] CXX obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o FAILED: obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/buildtools/linux-x64/clang/bin/clang++ -MD -MF obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o.d --target=aarch64-unknown-linux-gnu --sysroot /home/frank/buildroot-base/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot -DU_I18N_IMPLEMENTATION -DUSE_OPENSSL=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_LIBCPP_DISABLE_AVAILABILITY=1 -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DHAVE_DLOPEN=0 -DUCONFIG_ONLY_HTML_CONVERSION=1 -DUCONFIG_USE_ML_PHRASE_BREAKING=1 -DUCONFIG_USE_WINDOWS_LCID_MAPPING_API=0 -DU_CHARSET_IS_UTF8=1 -DU_USING_ICU_NAMESPACE=0 -DU_ENABLE_DYLOAD=0 -DUSE_CHROMIUM_ICU=1 -DU_ENABLE_TRACING=1 -DU_ENABLE_RESOURCE_TRACING=0 -DU_STATIC_IMPLEMENTATION -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE -I../.. -Igen -I../../third_party/libcxx/include -I../../third_party/libcxxabi/include -I../../flutter/build/secondary/third_party/libcxx/config -I../../third_party/icu/source/common -I../../third_party/icu/source/i18n -fno-strict-aliasing -fstack-protector --param=ssp-buffer-size=4 -fPIC -pipe -pthread --target=aarch64-linux-gnu -DBORINGSSL_CLANG_SUPPORTS_DOT_ARCH -fcolor-diagnostics -fvisibility=hidden --sysroot=/home/frank/buildroot-base/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot -Wstring-conversion -Wnewline-eof -O2 -fno-ident -fdata-sections -ffunction-sections -g0 -Wno-deprecated-non-prototype -Wno-newline-eof -Wno-typedef-redefinition -Wendif-labels -Werror -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-but-set-parameter -Wno-unused-but-set-variable -Wno-implicit-int-float-conversion -Wno-deprecated-copy -Wno-psabi -Wno-deprecated-literal-operator -Wno-unqualified-std-cast-call -Wno-non-c-typedef-for-linkage -Wno-range-loop-construct -Wno-unused-function -Wno-parentheses -Wno-unused-function -Wno-unused-variable -Wno-ambiguous-reversed-operator -Wno-deprecated-declarations -fvisibility=hidden -fvisibility-inlines-hidden -std=c++17 -nostdinc++ -nostdinc++ -fvisibility=hidden -fno-exceptions -Wno-newline-eof -c ../../third_party/icu/source/i18n/nfsubs.cpp -o obj/third_party/icu/source/i18n/icui18n_hidden_visibility.nfsubs.o clang++: error: clang frontend command failed with exit code 139 (use -v to see invocation) Fuchsia clang version 18.0.0 (https://llvm.googlesource.com/llvm-project 725656bdd885483c39f482a01ea25d67acf39c46) Target: aarch64-unknown-linux-gnu Thread model: posix InstalledDir: /home/frank/buildroot-base/buildroot/output/build/flutter-engine-3.19.5/buildtools/linux-x64/clang/bin clang++: note: diagnostic msg: ******************** I'm stuck on this since I format my computer, I download everything what I need, and every time that it comes to flutter-engine, I get this error that I never seen. Thank you in advance, Franco. -------------- next part -------------- An HTML attachment was scrubbed... URL: From brandon.maier at collins.com Fri May 3 01:59:57 2024 From: brandon.maier at collins.com (Brandon Maier) Date: Fri, 3 May 2024 01:59:57 +0000 Subject: [Buildroot] [PATCH v3 1/4] package/bats-support: new package In-Reply-To: <20240425195816.2758964-1-brandon.maier@collins.com> References: <20240425195816.2758964-1-brandon.maier@collins.com> Message-ID: <20240503020000.3168109-1-brandon.maier@collins.com> This library provides support functions needed by the bats-assert and bats-file libraries. This library does not provide an installer. Manually install the files under /usr/lib/bats/bats-support which is what the Arch Linux package does[1]. This makes the library loadable using `bats_load_library`[2]. [1] https://gitlab.archlinux.org/archlinux/packaging/packages/bats-support/-/blob/main/PKGBUILD?ref_type=heads [2] https://bats-core.readthedocs.io/en/stable/writing-tests.html#bats-load-library-load-system-wide-libraries Signed-off-by: Brandon Maier --- v2: - fix older versions of install that don't support -D with -t v3: - fix commit subject to be 'new package' - switch 'install' to '$(INSTALL)' - install with 0755 permissions - remove unneeded quotes --- DEVELOPERS | 1 + package/Config.in | 1 + package/bats-support/Config.in | 8 ++++++++ package/bats-support/bats-support.hash | 5 +++++ package/bats-support/bats-support.mk | 18 ++++++++++++++++++ 5 files changed, 33 insertions(+) create mode 100644 package/bats-support/Config.in create mode 100644 package/bats-support/bats-support.hash create mode 100644 package/bats-support/bats-support.mk diff --git a/DEVELOPERS b/DEVELOPERS index 5d198567d8..7fc46d6b43 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -540,6 +540,7 @@ F: package/ncdu/ N: Brandon Maier F: board/freescale/ls1046a-frwy/ F: configs/ls1046a-frwy_defconfig +F: package/bats-support/ F: package/python-pysensors/ F: package/qoriq-fm-ucode/ F: package/unifdef/ diff --git a/package/Config.in b/package/Config.in index 38e9c94198..f1da714418 100644 --- a/package/Config.in +++ b/package/Config.in @@ -170,6 +170,7 @@ endmenu menu "Development tools" source "package/avocado/Config.in" source "package/bats-core/Config.in" + source "package/bats-support/Config.in" source "package/binutils/Config.in" source "package/bitwise/Config.in" source "package/bsdiff/Config.in" diff --git a/package/bats-support/Config.in b/package/bats-support/Config.in new file mode 100644 index 0000000000..24b49cee1d --- /dev/null +++ b/package/bats-support/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_BATS_SUPPORT + bool "bats-support" + depends on BR2_PACKAGE_BATS_CORE # runtime + help + bats-support is a supporting library providing common + functions to test helper libraries written for Bats. + + https://github.com/bats-core/bats-support diff --git a/package/bats-support/bats-support.hash b/package/bats-support/bats-support.hash new file mode 100644 index 0000000000..847f39e7c7 --- /dev/null +++ b/package/bats-support/bats-support.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 7815237aafeb42ddcc1b8c698fc5808026d33317d8701d5ec2396e9634e2918f bats-support-0.3.0.tar.gz + +# License files +sha256 36ffd9dc085d529a7e60e1276d73ae5a030b020313e6c5408593a6ae2af39673 LICENSE diff --git a/package/bats-support/bats-support.mk b/package/bats-support/bats-support.mk new file mode 100644 index 0000000000..765e08ffce --- /dev/null +++ b/package/bats-support/bats-support.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# bats-support +# +################################################################################ + +BATS_SUPPORT_VERSION = 0.3.0 +BATS_SUPPORT_SITE = $(call github,bats-core,bats-support,v$(BATS_SUPPORT_VERSION)) +BATS_SUPPORT_LICENSE = CC0-1.0 +BATS_SUPPORT_LICENSE_FILES = LICENSE + +define BATS_SUPPORT_INSTALL_TARGET_CMDS + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/lib/bats/bats-support/src + $(INSTALL) -m 0755 $(@D)/*.bash -t $(TARGET_DIR)/usr/lib/bats/bats-support + $(INSTALL) -m 0755 $(@D)/src/*.bash -t $(TARGET_DIR)/usr/lib/bats/bats-support/src +endef + +$(eval $(generic-package)) -- 2.44.0 From brandon.maier at collins.com Fri May 3 01:59:58 2024 From: brandon.maier at collins.com (Brandon Maier) Date: Fri, 3 May 2024 01:59:58 +0000 Subject: [Buildroot] [PATCH v3 2/4] package/bats-assert: new package In-Reply-To: <20240503020000.3168109-1-brandon.maier@collins.com> References: <20240425195816.2758964-1-brandon.maier@collins.com> <20240503020000.3168109-1-brandon.maier@collins.com> Message-ID: <20240503020000.3168109-2-brandon.maier@collins.com> bats-assert is a helper library providing common assertions for Bats. This library does not provide an installer. Manually install the files under /usr/lib/bats/bats-assert which is what the Arch Linux package does[1]. This makes the library loadable using `bats_load_library`[2]. [1] https://gitlab.archlinux.org/archlinux/packaging/packages/bats-assert/-/blob/main/PKGBUILD?ref_type=heads [2] https://bats-core.readthedocs.io/en/stable/writing-tests.html#bats-load-library-load-system-wide-libraries Signed-off-by: Brandon Maier --- v2: - fix older versions of install that don't support -D with -t v3: - fix commit subject to be 'new package' - switch 'install' to '$(INSTALL)' - install with 0755 permissions - remove unneeded quotes --- DEVELOPERS | 1 + package/Config.in | 1 + package/bats-assert/Config.in | 16 ++++++++++++++++ package/bats-assert/bats-assert.hash | 5 +++++ package/bats-assert/bats-assert.mk | 18 ++++++++++++++++++ 5 files changed, 41 insertions(+) create mode 100644 package/bats-assert/Config.in create mode 100644 package/bats-assert/bats-assert.hash create mode 100644 package/bats-assert/bats-assert.mk diff --git a/DEVELOPERS b/DEVELOPERS index 7fc46d6b43..2dfd5afd34 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -540,6 +540,7 @@ F: package/ncdu/ N: Brandon Maier F: board/freescale/ls1046a-frwy/ F: configs/ls1046a-frwy_defconfig +F: package/bats-assert/ F: package/bats-support/ F: package/python-pysensors/ F: package/qoriq-fm-ucode/ diff --git a/package/Config.in b/package/Config.in index f1da714418..673fc9a811 100644 --- a/package/Config.in +++ b/package/Config.in @@ -169,6 +169,7 @@ endmenu menu "Development tools" source "package/avocado/Config.in" + source "package/bats-assert/Config.in" source "package/bats-core/Config.in" source "package/bats-support/Config.in" source "package/binutils/Config.in" diff --git a/package/bats-assert/Config.in b/package/bats-assert/Config.in new file mode 100644 index 0000000000..78fa0ac4d5 --- /dev/null +++ b/package/bats-assert/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_BATS_ASSERT + bool "bats-assert" + depends on BR2_PACKAGE_BATS_CORE # runtime + select BR2_PACKAGE_BATS_SUPPORT # runtime + help + bats-assert is a helper library providing common assertions + for Bats. + + In the context of this project, an assertion is a function + that perform a test and returns 1 on failure or 0 on success. + To make debugging easier, the assertion also outputs relevant + information on failure. The output is formatted for + readability. To make assertions usable outside of @test + blocks, the output is sent to stderr. + + https://github.com/bats-core/bats-assert diff --git a/package/bats-assert/bats-assert.hash b/package/bats-assert/bats-assert.hash new file mode 100644 index 0000000000..94c3908ab3 --- /dev/null +++ b/package/bats-assert/bats-assert.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 98ca3b685f8b8993e48ec057565e6e2abcc541034ed5b0e81f191505682037fd bats-assert-2.1.0.tar.gz + +# License files +sha256 36ffd9dc085d529a7e60e1276d73ae5a030b020313e6c5408593a6ae2af39673 LICENSE diff --git a/package/bats-assert/bats-assert.mk b/package/bats-assert/bats-assert.mk new file mode 100644 index 0000000000..c0e37e0048 --- /dev/null +++ b/package/bats-assert/bats-assert.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# bats-assert +# +################################################################################ + +BATS_ASSERT_VERSION = 2.1.0 +BATS_ASSERT_SITE = $(call github,bats-core,bats-assert,v$(BATS_ASSERT_VERSION)) +BATS_ASSERT_LICENSE = CC0-1.0 +BATS_ASSERT_LICENSE_FILES = LICENSE + +define BATS_ASSERT_INSTALL_TARGET_CMDS + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/lib/bats/bats-assert/src + $(INSTALL) -m 0755 $(@D)/*.bash -t $(TARGET_DIR)/usr/lib/bats/bats-assert + $(INSTALL) -m 0755 $(@D)/src/*.bash -t $(TARGET_DIR)/usr/lib/bats/bats-assert/src +endef + +$(eval $(generic-package)) -- 2.44.0 From brandon.maier at collins.com Fri May 3 01:59:59 2024 From: brandon.maier at collins.com (Brandon Maier) Date: Fri, 3 May 2024 01:59:59 +0000 Subject: [Buildroot] [PATCH v3 3/4] package/bats-file: new package In-Reply-To: <20240503020000.3168109-1-brandon.maier@collins.com> References: <20240425195816.2758964-1-brandon.maier@collins.com> <20240503020000.3168109-1-brandon.maier@collins.com> Message-ID: <20240503020000.3168109-3-brandon.maier@collins.com> bats-file is a helper library providing common filesystem related assertions and helpers for Bats. This library does not provide an installer. Manually install the files under /usr/lib/bats/bats-file which is what the Arch Linux package does[1]. This makes the library loadable using `bats_load_library`[2]. [1] https://gitlab.archlinux.org/archlinux/packaging/packages/bats-file/-/blob/main/PKGBUILD?ref_type=heads [2] https://bats-core.readthedocs.io/en/stable/writing-tests.html#bats-load-library-load-system-wide-libraries Signed-off-by: Brandon Maier --- v2: - fix older versions of install that don't support -D with -t v3: - fix commit subject to be 'new package' - switch 'install' to '$(INSTALL)' - install with 0755 permissions - remove unneeded quotes --- DEVELOPERS | 1 + package/Config.in | 1 + package/bats-file/Config.in | 15 +++++++++++++++ package/bats-file/bats-file.hash | 5 +++++ package/bats-file/bats-file.mk | 18 ++++++++++++++++++ 5 files changed, 40 insertions(+) create mode 100644 package/bats-file/Config.in create mode 100644 package/bats-file/bats-file.hash create mode 100644 package/bats-file/bats-file.mk diff --git a/DEVELOPERS b/DEVELOPERS index 2dfd5afd34..c2d3f52a59 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -541,6 +541,7 @@ N: Brandon Maier F: board/freescale/ls1046a-frwy/ F: configs/ls1046a-frwy_defconfig F: package/bats-assert/ +F: package/bats-file/ F: package/bats-support/ F: package/python-pysensors/ F: package/qoriq-fm-ucode/ diff --git a/package/Config.in b/package/Config.in index 673fc9a811..eac9b74ba4 100644 --- a/package/Config.in +++ b/package/Config.in @@ -171,6 +171,7 @@ menu "Development tools" source "package/avocado/Config.in" source "package/bats-assert/Config.in" source "package/bats-core/Config.in" + source "package/bats-file/Config.in" source "package/bats-support/Config.in" source "package/binutils/Config.in" source "package/bitwise/Config.in" diff --git a/package/bats-file/Config.in b/package/bats-file/Config.in new file mode 100644 index 0000000000..fa9312c9e4 --- /dev/null +++ b/package/bats-file/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_BATS_FILE + bool "bats-file" + depends on BR2_PACKAGE_BATS_CORE # runtime + select BR2_PACKAGE_BATS_SUPPORT # runtime + help + bats-file is a helper library providing common filesystem + related assertions and helpers for Bats. + + Assertions are functions that perform a test and output + relevant information on failure to help debugging. They return + 1 on failure and 0 otherwise. Output, formatted for + readability, is sent to the standard error to make assertions + usable outside of @test blocks too. + + https://github.com/bats-core/bats-file diff --git a/package/bats-file/bats-file.hash b/package/bats-file/bats-file.hash new file mode 100644 index 0000000000..9530dc6d9d --- /dev/null +++ b/package/bats-file/bats-file.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 9b69043241f3af1c2d251f89b4fcafa5df3f05e97b89db18d7c9bdf5731bb27a bats-file-0.4.0.tar.gz + +# License files +sha256 36ffd9dc085d529a7e60e1276d73ae5a030b020313e6c5408593a6ae2af39673 LICENSE diff --git a/package/bats-file/bats-file.mk b/package/bats-file/bats-file.mk new file mode 100644 index 0000000000..0499327fe0 --- /dev/null +++ b/package/bats-file/bats-file.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# bats-file +# +################################################################################ + +BATS_FILE_VERSION = 0.4.0 +BATS_FILE_SITE = $(call github,bats-core,bats-file,v$(BATS_FILE_VERSION)) +BATS_FILE_LICENSE = CC0-1.0 +BATS_FILE_LICENSE_FILES = LICENSE + +define BATS_FILE_INSTALL_TARGET_CMDS + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/lib/bats/bats-file/src + $(INSTALL) -m 0755 $(@D)/*.bash -t $(TARGET_DIR)/usr/lib/bats/bats-file + $(INSTALL) -m 0755 $(@D)/src/*.bash -t $(TARGET_DIR)/usr/lib/bats/bats-file/src +endef + +$(eval $(generic-package)) -- 2.44.0 From brandon.maier at collins.com Fri May 3 02:00:00 2024 From: brandon.maier at collins.com (Brandon Maier) Date: Fri, 3 May 2024 02:00:00 +0000 Subject: [Buildroot] [PATCH v3 4/4] support/testing: add bats runtime test In-Reply-To: <20240503020000.3168109-1-brandon.maier@collins.com> References: <20240425195816.2758964-1-brandon.maier@collins.com> <20240503020000.3168109-1-brandon.maier@collins.com> Message-ID: <20240503020000.3168109-4-brandon.maier@collins.com> Tests the bats-core, bats-support, bats-assert, and bats-file packages. Signed-off-by: Brandon Maier --- support/testing/tests/package/test_bats.py | 33 +++++++++++++++++++ .../rootfs-overlay/root/test-bats-assert.bats | 11 +++++++ .../rootfs-overlay/root/test-bats-core.bats | 11 +++++++ .../rootfs-overlay/root/test-bats-file.bats | 10 ++++++ 4 files changed, 65 insertions(+) create mode 100644 support/testing/tests/package/test_bats.py create mode 100755 support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-assert.bats create mode 100755 support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-core.bats create mode 100755 support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-file.bats diff --git a/support/testing/tests/package/test_bats.py b/support/testing/tests/package/test_bats.py new file mode 100644 index 0000000000..c75a6df294 --- /dev/null +++ b/support/testing/tests/package/test_bats.py @@ -0,0 +1,33 @@ +import os + +import infra.basetest + + +class TestBats(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_ENABLE_LOCALE_WHITELIST="" + BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y + BR2_PACKAGE_BASH=y + BR2_PACKAGE_BATS_CORE=y + BR2_PACKAGE_BATS_ASSERT=y + BR2_PACKAGE_BATS_FILE=y + BR2_ROOTFS_OVERLAY="{}" + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """.format( + # overlay to add a gnuradio python test script + infra.filepath("tests/package/test_bats/rootfs-overlay")) + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + self.assertRunOk("bats --version") + + self.assertRunOk("bats /root/test-bats-core.bats", timeout=5) + self.assertRunOk("bats /root/test-bats-assert.bats", timeout=5) + self.assertRunOk("bats /root/test-bats-file.bats", timeout=5) diff --git a/support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-assert.bats b/support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-assert.bats new file mode 100755 index 0000000000..cd0cb48290 --- /dev/null +++ b/support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-assert.bats @@ -0,0 +1,11 @@ +#!/usr/bin/env bats + +setup() { + bats_load_library bats-support + bats_load_library bats-assert +} + + at test "bats-assert assert_output" { + run echo "Hello World" + assert_output "Hello World" +} diff --git a/support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-core.bats b/support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-core.bats new file mode 100755 index 0000000000..54ec941e03 --- /dev/null +++ b/support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-core.bats @@ -0,0 +1,11 @@ +#!/usr/bin/env bats + + at test "bats-core true" { + true +} + + at test "bats-core run" { + run echo "Hello World" + [ "$status" -eq 0 ] + [ "$output" = "Hello World" ] +} diff --git a/support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-file.bats b/support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-file.bats new file mode 100755 index 0000000000..0ac2616b99 --- /dev/null +++ b/support/testing/tests/package/test_bats/rootfs-overlay/root/test-bats-file.bats @@ -0,0 +1,10 @@ +#!/usr/bin/env bats + +setup() { + bats_load_library bats-support + bats_load_library bats-file +} + + at test "bats-file assert_exists" { + assert_exists /root/test-bats-file.bats +} -- 2.44.0 From Brandon.Maier at collins.com Fri May 3 02:01:43 2024 From: Brandon.Maier at collins.com (Maier, Brandon L Collins) Date: Fri, 3 May 2024 02:01:43 +0000 Subject: [Buildroot] [External] Re: [PATCH v2 2/4] package/bats-support: add bats support library In-Reply-To: <20240501231346.442f0182@windsurf> References: <20240412210850.17265-1-brandon.maier@collins.com> <20240425195816.2758964-2-brandon.maier@collins.com> <20240501231346.442f0182@windsurf> Message-ID: Hi Thomas, > -----Original Message----- > From: Thomas Petazzoni > Sent: Wednesday, May 1, 2024 4:14 PM > To: Brandon Maier via buildroot > Cc: Maier, Brandon L Collins > Subject: [External] Re: [Buildroot] [PATCH v2 2/4] package/bats-support: add bats > support library > > Changes v1 -> v2: > > - fix older versions of `install` that don't support -D > > Hu? We use the -D option of install everywhere in Buildroot. How can > your build work if you have a version of install that doesn't support > -D ? Sorry I didn't look at this close enough. It's an issue that older versions of `install` didn't support using both `-D` and `-t ` at the same time. > > +define BATS_SUPPORT_INSTALL_TARGET_CMDS > > + install -d -m 0755 $(TARGET_DIR)/usr/lib/bats/bats-support/src > > + install -m 0644 $(@D)/*.bash -t "$(TARGET_DIR)/usr/lib/bats/bats- > support" > > + install -m 0644 $(@D)/src/*.bash -t "$(TARGET_DIR)/usr/lib/bats/bats- > support/src" > > Use $(INSTALL) instead of install. > > You can skip the double quotes around the file paths. We don't double > quotes the paths in any other Buildroot .mk file. > > Also, -m 0644 is not consistent with how the files from bats-core are > installed: > > $ ls -l output/target/usr/lib/bats-core/ > total 68 > -rwxr-xr-x. 1 thomas thomas 7988 1 mai 23:03 common.bash > -rwxr-xr-x. 1 thomas thomas 6058 1 mai 23:03 formatter.bash > -rwxr-xr-x. 1 thomas thomas 838 1 mai 23:03 preprocessing.bash > -rwxr-xr-x. 1 thomas thomas 3722 1 mai 23:03 semaphore.bash > -rwxr-xr-x. 1 thomas thomas 16483 1 mai 23:03 test_functions.bash > -rwxr-xr-x. 1 thomas thomas 14979 1 mai 23:03 tracing.bash > -rwxr-xr-x. 1 thomas thomas 1019 1 mai 23:03 validator.bash > -rwxr-xr-x. 1 thomas thomas 1900 1 mai 23:03 warnings.bash > > They are installed 0755. Should we try to be consistent with this? Or > it doesn't make sense for a specific reason? I will change to make it consistent. Both 0755 or 0644 would work as the files must be sourced, which only needs read permission. > > Also, while not mandatory at all, it would be nice to have small > runtime tests for these bats-* packages. Nothing fancy, just something > stupid/simple that exercises a bit those packages. > > These comments apply in a completely identical way to the other 2 > patches in this series. > > Thanks! > > Thomas Thanks for the review! I agree with the other comments as well. I sent a v3 with changes. Brandon From thomas.petazzoni at bootlin.com Fri May 3 03:58:20 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Fri, 03 May 2024 03:58:20 -0000 Subject: [Buildroot] [autobuild.buildroot.net] Daily results for 2024-05-02 Message-ID: Hello, Autobuild statistics for 2024-05-02 =================================== branch | OK | NOK | TIM | TOT | 2024.02.x | 5 | 4 | 0 | 9 | master | 22 | 41 | 0 | 63 | Classification of failures by reason for master ----------------------------------------------- host-libglib2-2.76.1 | 12 libressl-3.8.4 | 3 unknown | 3 bat-0.24.0 | 1 bcc-0.29.1 | 1 boost-1.83.0 | 1 check-11970a7e112dfe243a2e6... | 1 crun-1.12 | 1 dc3dd-7.2.641 | 1 fail2ban-1.0.2 | 1 fcft-3.1.6 | 1 gdk-pixbuf-2.42.10 | 1 gnu-efi-3.0.18 | 1 gobject-introspection-1.76.1 | 1 google-breakpad-f49c2f1a202... | 1 host-sentry-cli-2.20.3 | 1 ibm-sw-tpm2-5452af422edeff7... | 1 libcamera-apps-1.2.1 | 1 libnss-3.99 | 1 ltrace-82c66409c7a93ca6ad2e... | 1 mdadm-4.3 | 1 mongodb-4.2.18 | 1 ntpsec-1.2.3 | 1 openssh-9.7p1 | 1 python-remi-2022.7.27 | 1 stress-ng-0.17.07 | 1 Detail of failures for master ----------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- x86_64 | bat-0.24.0 | NOK | http://autobuild.buildroot.net/results/c61914f43c4c35831330b761de1f4c6ccf15dd97 | aarch64 | bcc-0.29.1 | NOK | http://autobuild.buildroot.net/results/75ddf0de7b35bd17ac03adca427b4e1108cc7f0e | x86_64 | boost-1.83.0 | NOK | http://autobuild.buildroot.net/results/67d80aed39c335974972c5440138964ccc1630b9 | m68k | check-11970a7e112dfe243a2e6... | NOK | http://autobuild.buildroot.net/results/283a9557ec0c9347cfa56ef00c7bf111cf3c0bac | ORPH m68k | crun-1.12 | NOK | http://autobuild.buildroot.net/results/e76667717c6b3e5b8ec3c2f71866aff3a72103a1 | microblazeel | dc3dd-7.2.641 | NOK | http://autobuild.buildroot.net/results/921b24368974d6e40093b950878bcc871b7c4d6e | ORPH arc | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/740be93840c54e198973546e2b42177ef1fbf136 | aarch64 | fcft-3.1.6 | NOK | http://autobuild.buildroot.net/results/dd40eed68c74431c96fa257f331b54bd184947fd | powerpc | gdk-pixbuf-2.42.10 | NOK | http://autobuild.buildroot.net/results/8843b80d294c5b92f91f1ff068cf1233bb157abc | ORPH riscv64 | gnu-efi-3.0.18 | NOK | http://autobuild.buildroot.net/results/ceba04a4449e40d1a97c9786d6a2d020efba95ff | or1k | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/8f05d5c46f7364254047a32958734f398948b15c | ORPH mipsel | google-breakpad-f49c2f1a202... | NOK | http://autobuild.buildroot.net/results/e7a3a4977a0ce47afdf8c984b6eb27b62f68bf82 | sparc64 | host-libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/c10229131083ecdf7cf426e0652ad4c302210fcf | sh4eb | host-libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/1dd7e9af5d2a18529a7d54fecde14f15e06a415f | aarch64 | host-libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/e474e6dc3ab01d6ead8724180e4d59942cf9ef6f | sparc64 | host-libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/58f5c1d319d5dbe4c775594870b72d4e5eeb3cea | mips64el | host-libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/280c5b6afe4343635da454447d3048e6b50d066f | nios2 | host-libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/3ab229705a686bfbbc6a83acee6089ee5ca1477e | aarch64_be | host-libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/a79de7d7f5a48a9a06fc38a4e554d1065092b48c | nios2 | host-libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/4d87b049df24d4322ff69c2e00896e94aa0ac4ae | nios2 | host-libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/4fb27d10ef4cb3894e0d9544c3fd06e87db0df30 | mips64el | host-libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/c4e0448bdbff5cd5bb634f415b7151a145e0d0f1 | powerpc64 | host-libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/34b50beeb0184a1f1aa4e417676e87d6f1340114 | aarch64_be | host-libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/a12b9c4436594818f4ce128595b429adf7d90e31 | or1k | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/fab1bd4ba915f6fb9d399e8b58763a9055c2ebf4 | x86_64 | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/2fb5e1cb792fe25ef860ff8111622cd1ff3770bf | mipsel | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/3494a7fbca136d76ce6eaa0297ae1ed8f7d83d1d | or1k | libnss-3.99 | NOK | http://autobuild.buildroot.net/results/ad7787e27339b0db164d118ba00303558aa5ffc0 | nios2 | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/30607d14944325d002394f2e53c0b0e6a83bbdea | ORPH arc | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/48d58c4fec87a03a7e8d2bc1f73c75f9ae7ac995 | ORPH mips64 | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/1f6d3b1852749a7e606373afe870a667683c9c56 | ORPH x86_64 | ltrace-82c66409c7a93ca6ad2e... | NOK | http://autobuild.buildroot.net/results/dacee0a4634088626a7c978d0fef4b0ecfbe5784 | ORPH mipsel | mdadm-4.3 | NOK | http://autobuild.buildroot.net/results/28aced8b4598e7350eb5663aebeb782c79f0f292 | ORPH arm | mongodb-4.2.18 | NOK | http://autobuild.buildroot.net/results/b0bd5e24739b17506cc7fe66fb4d1926115fdef8 | xtensa | ntpsec-1.2.3 | NOK | http://autobuild.buildroot.net/results/dd096ae316bf1310c40b0e30abaf6069c3abc446 | ORPH mips | openssh-9.7p1 | NOK | http://autobuild.buildroot.net/results/cd485488982c1e4c43ae6e1c8f6526867e81fea8 | ORPH mipsel | python-remi-2022.7.27 | NOK | http://autobuild.buildroot.net/results/01e6c6467878465e3d0f2f1de176093de6815434 | or1k | stress-ng-0.17.07 | NOK | http://autobuild.buildroot.net/results/8b4ab64405568c78488efb098cf5700cbf16a84f | armeb | unknown | NOK | http://autobuild.buildroot.net/results/781a409e64cbcdc34a75745e5be9f1d44c5c41ca | mipsel | unknown | NOK | http://autobuild.buildroot.net/results/33c8e00106bbee07dc7a5bfaab8b141104584280 | powerpc64 | unknown | NOK | http://autobuild.buildroot.net/results/77701b2a334bed0d675d692d588f41efd9ab0f0c | Classification of failures by reason for 2024.02.x -------------------------------------------------- cairo-1.17.4 | 1 libdeflate-1.19 | 1 linux-6.6.22 | 1 python-pymupdf-1.22.0 | 1 Detail of failures for 2024.02.x -------------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- powerpc | cairo-1.17.4 | NOK | http://autobuild.buildroot.net/results/afddbadc96484d54b298322cdfada7ca8e421475 | armeb | libdeflate-1.19 | NOK | http://autobuild.buildroot.net/results/7318a4450eae6a0a4a413390d92a04cb65c75ebb | mips64 | linux-6.6.22 | NOK | http://autobuild.buildroot.net/results/d48105bbeb533cfa3588ad2215936b9cfb8e6ddd | ORPH mips64el | python-pymupdf-1.22.0 | NOK | http://autobuild.buildroot.net/results/d5e7659fe262a795e24758eda4d1534a25b8cb27 | -- http://autobuild.buildroot.net From peter at korsgaard.com Fri May 3 07:09:31 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Fri, 03 May 2024 09:09:31 +0200 Subject: [Buildroot] [PATCH 1/1] package/botan: security bump to version 3.3.0 In-Reply-To: <20240407170936.2788174-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sun, 7 Apr 2024 19:09:36 +0200") References: <20240407170936.2788174-1-fontaine.fabrice@gmail.com> Message-ID: <878r0r4bis.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > - Fix a potential denial of service caused by accepting arbitrary > length primes as potential elliptic curve parameters in ASN.1 > encodings. With very large inputs the primality verification > can become computationally expensive. Now any prime field larger > than 1024 bits is rejected immediately. > https://botan.randombit.net/news.html#version-3-3-0-2024-02-20 > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Fri May 3 07:09:43 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Fri, 03 May 2024 09:09:43 +0200 Subject: [Buildroot] [PATCH 1/1] package/wolfssl: security bump to version 5.7.0 In-Reply-To: <20240407170706.2785735-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sun, 7 Apr 2024 19:07:06 +0200") References: <20240407170706.2785735-1-fontaine.fabrice@gmail.com> Message-ID: <874jbf4big.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > Vulnerabilities > - [High] CVE-2024-0901 Potential denial of service and out of bounds > read. Affects TLS 1.3 on the server side when accepting a connection > from a malicious TLS 1.3 client. If using TLS 1.3 on the server side > it is recommended to update the version of wolfSSL used. > - [Med] CVE-2024-1545 Fault Injection vulnerability in > RsaPrivateDecryption function that potentially allows an attacker > that has access to the same system with a victims process to perform > a Rowhammer fault injection. > - [Med] Fault injection attack with EdDSA signature operations. This > affects ed25519 sign operations where the system could be susceptible > to Rowhammer attacks. > No official tarball provided so switch to github and set autoreconf > https://github.com/wolfSSL/wolfssl/releases/tag/v5.7.0-stable > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Fri May 3 07:10:51 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Fri, 03 May 2024 09:10:51 +0200 Subject: [Buildroot] [PATCH 1/1] package/systemd: fix build with gcc >= 13 In-Reply-To: <20240407184152.3241588-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sun, 7 Apr 2024 20:41:52 +0200") References: <20240407184152.3241588-1-fontaine.fabrice@gmail.com> Message-ID: <87zft72ww4.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > Fix the following build failure with gcc >= 13: > In file included from ../src/basic/macro.h:446, > from ../src/basic/alloc-util.h:10, > from ../src/shared/install.c:12: > ../src/shared/install.c: In function ?install_changes_dump?: > ../src/shared/install.c:444:64: error: ?%s? directive argument is null [-Werror=format-overflow=] > 444 | err = log_error_errno(changes[i].type, "Failed to %s unit, unit %s does not exist.", > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > Fixes: > - http://autobuild.buildroot.org/results/e0d6b7d41fefec539a17a3ef5c89c192ce29fd04 > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Fri May 3 07:11:16 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Fri, 03 May 2024 09:11:16 +0200 Subject: [Buildroot] [PATCH 1/1] package/oprofile: drop unrecognized option In-Reply-To: <20240407184907.3245610-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sun, 7 Apr 2024 20:49:07 +0200") References: <20240407184907.3245610-1-fontaine.fabrice@gmail.com> Message-ID: <87v83v2wvf.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > --enable-gui is unrecognized since bump to version 1.0.0 in commit > 7f7dc71cc8545dacf23f9a25f33c184d15bed65c and > https://github.com/wcohen/oprofile/commit/0c142c3a096d3e9ec42cc9b0ddad994fea60d135: > configure: WARNING: unrecognized options: --disable-gtk-doc, > --disable-gtk-doc-html, --disable-doc, --disable-docs, > --disable-documentation, --with-xmlto, --with-fop, --enable-ipv6, > --disable-nls, --enable-gui > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Fri May 3 07:12:17 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Fri, 03 May 2024 09:12:17 +0200 Subject: [Buildroot] [PATCH 1/1] package/opensc: openssl is optional, not mandatory In-Reply-To: <20240407192944.3335886-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sun, 7 Apr 2024 21:29:44 +0200") References: <20240407192944.3335886-1-fontaine.fabrice@gmail.com> Message-ID: <87r0ej2wtq.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > openssl is optional, not mandatory since the addition of the package in > commit 8aaa7ecbce1d10cbcd880c3da5e429988f96176a > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Fri May 3 07:11:08 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Fri, 3 May 2024 09:11:08 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/oprofile: drop unrecognized option Message-ID: <20240503071321.3746E86526@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=98a1ed7ae3557ac2522f48c23b21a65708630720 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x --enable-gui is unrecognized since bump to version 1.0.0 in commit 7f7dc71cc8545dacf23f9a25f33c184d15bed65c and https://github.com/wcohen/oprofile/commit/0c142c3a096d3e9ec42cc9b0ddad994fea60d135: configure: WARNING: unrecognized options: --disable-gtk-doc, --disable-gtk-doc-html, --disable-doc, --disable-docs, --disable-documentation, --with-xmlto, --with-fop, --enable-ipv6, --disable-nls, --enable-gui Signed-off-by: Fabrice Fontaine Signed-off-by: Arnout Vandecappelle (cherry picked from commit caf3f7fb5dc289c0c25254af78dc655687ad4bec) Signed-off-by: Peter Korsgaard --- package/oprofile/oprofile.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/package/oprofile/oprofile.mk b/package/oprofile/oprofile.mk index 265d6ebd18..512fbf9ea1 100644 --- a/package/oprofile/oprofile.mk +++ b/package/oprofile/oprofile.mk @@ -11,7 +11,6 @@ OPROFILE_LICENSE_FILES = COPYING OPROFILE_CPE_ID_VENDOR = maynard_johnson OPROFILE_CONF_OPTS = \ --disable-account-check \ - --enable-gui=no \ --with-kernel=$(STAGING_DIR)/usr OPROFILE_DEPENDENCIES = popt binutils host-pkgconf From peter at korsgaard.com Fri May 3 07:12:05 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Fri, 3 May 2024 09:12:05 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/opensc: openssl is optional, not mandatory Message-ID: <20240503071321.41E238652D@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=2ebf2a85c0fe64384660def2621e37d7ee04c603 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x openssl is optional, not mandatory since the addition of the package in commit 8aaa7ecbce1d10cbcd880c3da5e429988f96176a Signed-off-by: Fabrice Fontaine Signed-off-by: Arnout Vandecappelle (cherry picked from commit b097ed3a4b32c074130c4f4c6b97ce9983fa675a) Signed-off-by: Peter Korsgaard --- package/opensc/Config.in | 1 - package/opensc/opensc.mk | 9 ++++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/package/opensc/Config.in b/package/opensc/Config.in index 8c6a95a41d..13b085f389 100644 --- a/package/opensc/Config.in +++ b/package/opensc/Config.in @@ -5,7 +5,6 @@ config BR2_PACKAGE_OPENSC depends on BR2_USE_MMU # fork() depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # pcsc-lite select BR2_PACKAGE_PCSC_LITE - select BR2_PACKAGE_OPENSSL select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL select BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160 if BR2_PACKAGE_LIBOPENSSL help diff --git a/package/opensc/opensc.mk b/package/opensc/opensc.mk index aa82bd18da..f4dc2206ea 100644 --- a/package/opensc/opensc.mk +++ b/package/opensc/opensc.mk @@ -9,8 +9,15 @@ OPENSC_SITE = https://github.com/OpenSC/OpenSC/releases/download/$(OPENSC_VERSIO OPENSC_LICENSE = LGPL-2.1+ OPENSC_LICENSE_FILES = COPYING OPENSC_CPE_ID_VALID = YES -OPENSC_DEPENDENCIES = openssl pcsc-lite +OPENSC_DEPENDENCIES = pcsc-lite OPENSC_INSTALL_STAGING = YES OPENSC_CONF_OPTS = --disable-cmocka --disable-strict --disable-tests +ifeq ($(BR2_PACKAGE_OPENSSL),y) +OPENSC_DEPENDENCIES += openssl +OPENSC_CONF_OPTS += --enable-openssl +else +OPENSC_CONF_OPTS += --disable-openssl +endif + $(eval $(autotools-package)) From peter at korsgaard.com Fri May 3 07:08:21 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Fri, 3 May 2024 09:08:21 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/botan: security bump to version 3.3.0 Message-ID: <20240503071321.1C5A08637F@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=8c2144727c93b8dc209c95825b36fdbfaf3b641d branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x - Fix a potential denial of service caused by accepting arbitrary length primes as potential elliptic curve parameters in ASN.1 encodings. With very large inputs the primality verification can become computationally expensive. Now any prime field larger than 1024 bits is rejected immediately. https://botan.randombit.net/news.html#version-3-3-0-2024-02-20 Signed-off-by: Fabrice Fontaine Signed-off-by: Arnout Vandecappelle (cherry picked from commit 2fcc74594c457bed7f0f2a4826ada265861be6bf) Signed-off-by: Peter Korsgaard --- package/botan/botan.hash | 2 +- package/botan/botan.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/botan/botan.hash b/package/botan/botan.hash index 840191aa4b..37e00ea9cc 100644 --- a/package/botan/botan.hash +++ b/package/botan/botan.hash @@ -1,4 +1,4 @@ # From https://botan.randombit.net/releases/sha256sums.txt -sha256 049c847835fcf6ef3a9e206b33de05dd38999c325e247482772a5598d9e5ece3 Botan-3.2.0.tar.xz +sha256 368f11f426f1205aedb9e9e32368a16535dc11bd60351066e6f6664ec36b85b9 Botan-3.3.0.tar.xz # Locally computed sha256 1833cde7c7cc03296b1ef2ddc178b1cd7fd1c476840f32cf6aedb09ab0bc9004 license.txt diff --git a/package/botan/botan.mk b/package/botan/botan.mk index 95352ea41b..e0bd258f57 100644 --- a/package/botan/botan.mk +++ b/package/botan/botan.mk @@ -4,7 +4,7 @@ # ################################################################################ -BOTAN_VERSION = 3.2.0 +BOTAN_VERSION = 3.3.0 BOTAN_SOURCE = Botan-$(BOTAN_VERSION).tar.xz BOTAN_SITE = http://botan.randombit.net/releases BOTAN_LICENSE = BSD-2-Clause From peter at korsgaard.com Fri May 3 07:07:47 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Fri, 3 May 2024 09:07:47 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/wolfssl: security bump to version 5.7.0 Message-ID: <20240503071321.08325864F6@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=bb94d3d0fba4d59c43c19c3a00df909831e1a7af branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Vulnerabilities - [High] CVE-2024-0901 Potential denial of service and out of bounds read. Affects TLS 1.3 on the server side when accepting a connection from a malicious TLS 1.3 client. If using TLS 1.3 on the server side it is recommended to update the version of wolfSSL used. - [Med] CVE-2024-1545 Fault Injection vulnerability in RsaPrivateDecryption function that potentially allows an attacker that has access to the same system with a victims process to perform a Rowhammer fault injection. - [Med] Fault injection attack with EdDSA signature operations. This affects ed25519 sign operations where the system could be susceptible to Rowhammer attacks. No official tarball provided so switch to github and set autoreconf https://github.com/wolfSSL/wolfssl/releases/tag/v5.7.0-stable Signed-off-by: Fabrice Fontaine Signed-off-by: Arnout Vandecappelle (cherry picked from commit 3a2891621c35fea394b135256c7a0846ece442aa) Signed-off-by: Peter Korsgaard --- package/wolfssl/wolfssl.hash | 2 +- package/wolfssl/wolfssl.mk | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/package/wolfssl/wolfssl.hash b/package/wolfssl/wolfssl.hash index 59e42e98b9..e705bba9fd 100644 --- a/package/wolfssl/wolfssl.hash +++ b/package/wolfssl/wolfssl.hash @@ -1,5 +1,5 @@ # Locally computed: -sha256 75aaafe3b8c776d1ac417288116c8d444115f9fac5acb382a39a7d163dfd618d wolfssl-5.6.6.tar.gz +sha256 2de93e8af588ee856fe67a6d7fce23fc1b226b74d710b0e3946bc8061f6aa18f wolfssl-5.7.0.tar.gz # Hash for license files: sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/wolfssl/wolfssl.mk b/package/wolfssl/wolfssl.mk index 68c69afd59..893408eca4 100644 --- a/package/wolfssl/wolfssl.mk +++ b/package/wolfssl/wolfssl.mk @@ -4,14 +4,16 @@ # ################################################################################ -WOLFSSL_VERSION = 5.6.6 -WOLFSSL_SITE = https://github.com/wolfSSL/wolfssl/releases/download/v$(WOLFSSL_VERSION)-stable +WOLFSSL_VERSION = 5.7.0 +WOLFSSL_SITE = $(call github,wolfSSL,wolfssl,v$(WOLFSSL_VERSION)-stable) WOLFSSL_INSTALL_STAGING = YES WOLFSSL_LICENSE = GPL-2.0+ WOLFSSL_LICENSE_FILES = COPYING LICENSING WOLFSSL_CPE_ID_VENDOR = wolfssl WOLFSSL_CONFIG_SCRIPTS = wolfssl-config +# From git +WOLFSSL_AUTORECONF = YES WOLFSSL_DEPENDENCIES = host-pkgconf WOLFSSL_CONF_OPTS = --disable-examples --disable-crypttests From peter at korsgaard.com Fri May 3 07:10:15 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Fri, 3 May 2024 09:10:15 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/systemd: fix build with gcc >= 13 Message-ID: <20240503071321.2BC03864FA@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=04b72604bc0c96b2a78fe90b46c165d1808ab460 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Fix the following build failure with gcc >= 13: In file included from ../src/basic/macro.h:446, from ../src/basic/alloc-util.h:10, from ../src/shared/install.c:12: ../src/shared/install.c: In function ???install_changes_dump???: ../src/shared/install.c:444:64: error: ???%s??? directive argument is null [-Werror=format-overflow=] 444 | err = log_error_errno(changes[i].type, "Failed to %s unit, unit %s does not exist.", | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Fixes: - http://autobuild.buildroot.org/results/e0d6b7d41fefec539a17a3ef5c89c192ce29fd04 Signed-off-by: Fabrice Fontaine Signed-off-by: Arnout Vandecappelle (cherry picked from commit 066c3e67d7f117f7810597e1ab36e2346fe8f7c2) Signed-off-by: Peter Korsgaard --- ...er-warning-about-empty-directive-argument.patch | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/package/systemd/0001-install-fix-compiler-warning-about-empty-directive-argument.patch b/package/systemd/0001-install-fix-compiler-warning-about-empty-directive-argument.patch new file mode 100644 index 0000000000..9408a6da0e --- /dev/null +++ b/package/systemd/0001-install-fix-compiler-warning-about-empty-directive-argument.patch @@ -0,0 +1,45 @@ +From 8040fa55a1cbc34dede3205a902095ecd26c21e3 Mon Sep 17 00:00:00 2001 +From: Luca Boccassi +Date: Sat, 24 Feb 2024 12:05:44 +0000 +Subject: [PATCH] install: fix compiler warning about empty directive argument +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +On ppc64el with gcc 13.2 on Ubuntu 24.04: + +3s In file included from ../src/basic/macro.h:386, +483s from ../src/basic/alloc-util.h:10, +483s from ../src/shared/install.c:12: +483s ../src/shared/install.c: In function ???install_changes_dump???: +483s ../src/shared/install.c:432:64: error: ???%s??? directive argument is null [-Werror=format-overflow=] +483s 432 | err = log_error_errno(changes[i].type, "Failed to %s unit, unit %s does not exist.", +483s | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +483s ../src/shared/install.c:432:75: note: format string is defined here +483s 432 | err = log_error_errno(changes[i].type, "Failed to %s unit, unit %s does not exist.", + +Upstream: https://github.com/systemd/systemd/commit/8040fa55a1cbc34dede3205a902095ecd26c21e3 +Signed-off-by: Fabrice Fontaine +--- + src/shared/install.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/src/shared/install.c b/src/shared/install.c +index fabf5db7ed2e1..c3a94d1912165 100644 +--- a/src/shared/install.c ++++ b/src/shared/install.c +@@ -340,9 +340,12 @@ void install_changes_dump(int r, const char *verb, const InstallChange *changes, + assert(verb || r >= 0); + + for (size_t i = 0; i < n_changes; i++) { +- if (changes[i].type < 0) +- assert(verb); + assert(changes[i].path); ++ /* This tries to tell the compiler that it's safe to use 'verb' in a string format if there ++ * was an error, but the compiler doesn't care and fails anyway, so strna(verb) is used ++ * too. */ ++ assert(verb || changes[i].type >= 0); ++ verb = strna(verb); + + /* When making changes here, make sure to also change install_error() in dbus-manager.c. */ + From stefan.mueller at rey-technology.com Fri May 3 07:42:42 2024 From: stefan.mueller at rey-technology.com (=?iso-8859-1?Q?Stefan_M=FCller?=) Date: Fri, 3 May 2024 07:42:42 +0000 Subject: [Buildroot] question: used wrong librarys to build packages Message-ID: Hi guys how is it possible that buildroot builds packages and links them against libraries that do not exist in buildroot (only on the host system, not below the buildroot directory)? - i am a bit confused now. i downloaded buildroot 2024.02.01 and just copied my configs into it. many of the built packages are now linked against libssl.so.1.1 (but buidroot uses openssl 3): example: build at build:~/buildroot/output/target/usr/sbin$ ldd NetworkManager ./NetworkManager: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by ./NetworkManager) ./NetworkManager: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./NetworkManager) ./NetworkManager: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by ./NetworkManager) ./NetworkManager: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by ./NetworkManager) linux-vdso.so.1 (0x00007ffe9f755000) libgio-2.0.so.0 => /lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x00007f2b90e93000) ... libssh.so.4 => /lib/x86_64-linux-gnu/libssh.so.4 (0x00007f2b9040d000) libpsl.so.5 => /lib/x86_64-linux-gnu/libpsl.so.5 (0x00007f2b903fa000) libssl.so.1.1 => /lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007f2b90367000) libcrypto.so.1.1 => /lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007f2b90090000) but: build at build:~/buildroot/output/target/usr/sbin$ find ../../../host/ -name libssl* ../../../host/x86_64-buildroot-linux-gnu/sysroot/usr/lib/pkgconfig/libssl.pc ../../../host/x86_64-buildroot-linux-gnu/sysroot/usr/lib/libssl.so.3 ../../../host/x86_64-buildroot-linux-gnu/sysroot/usr/lib/libssl.so ../../../host/x86_64-buildroot-linux-gnu/sysroot/usr/lib/libssl.a ../../../host/lib/pkgconfig/libssl.pc ../../../host/lib/libssl.so.3 ../../../host/lib/libssl.so ../../../host/lib/libssl.a build at build:~/buildroot/output/target/usr/sbin$ and (host system that runs buildroot): build at build:~/buildroot/output/target/usr/sbin$ find /usr -name libssl* /usr/lib/x86_64-linux-gnu/pkgconfig/libssl.pc /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/x86_64-linux-gnu/libssl.so.1.1 /usr/lib/x86_64-linux-gnu/libssl.a /usr/lib/x86_64-linux-gnu/libssl3.so /usr/share/doc/libssl1.1 /usr/share/doc/libssl-dev build at build:~/buildroot/output/target/usr/sbin$ shouldn't buildroot use the libraries that are inside the buildroot directory? Can anyone help me find out what is wrong? thanks -------------- next part -------------- An HTML attachment was scrubbed... URL: From bagasdotme at gmail.com Fri May 3 09:55:13 2024 From: bagasdotme at gmail.com (Bagas Sanjaya) Date: Fri, 3 May 2024 16:55:13 +0700 Subject: [Buildroot] [PATCH] package/git: bump to version 2.45.0 Message-ID: <20240503095512.346271-2-bagasdotme@gmail.com> Bump the package version to 2.45.0. Release notes: https://lore.kernel.org/git/xmqq8r0ww0sj.fsf at gitster.g/ Signed-off-by: Bagas Sanjaya --- package/git/git.hash | 2 +- package/git/git.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/git/git.hash b/package/git/git.hash index f609a4aaa4..2e54945a40 100644 --- a/package/git/git.hash +++ b/package/git/git.hash @@ -1,5 +1,5 @@ # From: https://www.kernel.org/pub/software/scm/git/sha256sums.asc -sha256 e358738dcb5b5ea340ce900a0015c03ae86e804e7ff64e47aa4631ddee681de3 git-2.44.0.tar.xz +sha256 0aac200bd06476e7df1ff026eb123c6827bc10fe69d2823b4bf2ebebe5953429 git-2.45.0.tar.xz # Locally calculated sha256 5b2198d1645f767585e8a88ac0499b04472164c0d2da22e75ecf97ef443ab32e COPYING sha256 1922f45d2c49e390032c9c0ba6d7cac904087f7cec51af30c2b2ad022ce0e76a LGPL-2.1 diff --git a/package/git/git.mk b/package/git/git.mk index a9cc3c30a7..b6a7ec0cbb 100644 --- a/package/git/git.mk +++ b/package/git/git.mk @@ -4,7 +4,7 @@ # ################################################################################ -GIT_VERSION = 2.44.0 +GIT_VERSION = 2.45.0 GIT_SOURCE = git-$(GIT_VERSION).tar.xz GIT_SITE = $(BR2_KERNEL_MIRROR)/software/scm/git GIT_LICENSE = GPL-2.0, LGPL-2.1+ base-commit: 929bffbf4bf8fcb91bda446777f907f32c782656 -- An old man doll... just what I always wanted! - Clara From mail-server at busybox.net Fri May 3 11:01:20 2024 From: mail-server at busybox.net (busybox.net) Date: 3 May 2024 04:01:20 -0700 Subject: [Buildroot] Sheduled Maintenance and Upgrading Notification for buildroot@busybox.net Message-ID: <20240503040120.7C0D9CF8249EFD57@busybox.net> test -------------- next part -------------- An HTML attachment was scrubbed... URL: From mail-server at uclibc.org Fri May 3 11:01:20 2024 From: mail-server at uclibc.org (uclibc.org) Date: 3 May 2024 04:01:20 -0700 Subject: [Buildroot] Sheduled Maintenance and Upgrading Notification for buildroot@uclibc.org Message-ID: <20240503040120.147333C8AD0E9DC1@uclibc.org> test -------------- next part -------------- An HTML attachment was scrubbed... URL: From yann.morin.1998 at free.fr Fri May 3 15:32:14 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 3 May 2024 17:32:14 +0200 Subject: [Buildroot] question: used wrong librarys to build packages In-Reply-To: References: Message-ID: Stefan, All, On 2024-05-03 07:42 +0000, Stefan M?ller via buildroot spake thusly: > how is it possible that buildroot builds packages and links them against > libraries that do not exist in buildroot (only on the host system, not below > the buildroot directory)? - i am a bit confused now. > > i downloaded buildroot 2024.02.01 and just copied my configs into it. > > many of the built packages are now linked against libssl.so.1.1 (but buidroot > uses openssl 3): > > example: > > build at build:~/buildroot/output/target/usr/sbin$ ldd NetworkManager Using the host 'ldd' does not work on target binaries, becasue it does not know that they are not meant for the current machine. In fact, 'ldd' is just a glorified wrapper that basically is equivlanet to actually running the file with LD_TRACE_LOADED_OBJECTS=1 in the environment: $ ldd /usr/bin/ls linux-vdso.so.1 (0x00007fff02d31000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f5f9564b000) libcap.so.2 => /lib64/libcap.so.2 (0x00007f5f95641000) libc.so.6 => /lib64/libc.so.6 (0x00007f5f9545f000) libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007f5f953c4000) /lib64/ld-linux-x86-64.so.2 (0x00007f5f956b6000) $ LD_TRACE_LOADED_OBJECTS=1 /usr/bin/ls linux-vdso.so.1 (0x00007fff0c345000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f7dc1b2c000) libcap.so.2 => /lib64/libcap.so.2 (0x00007f7dc1b22000) libc.so.6 => /lib64/libc.so.6 (0x00007f7dc1940000) libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007f7dc18a5000) /lib64/ld-linux-x86-64.so.2 (0x00007f7dc1b71000) So you can't use ldd on target executables: it won't work. Also, using ldd is really a bad idea, as it is basically equivalent to actually running the program you're inspecting; don't do it. Instead use readelf to inspect a program: $ readelf -d /usr/bin/ls Dynamic section at offset 0x229d8 contains 29 entries: Tag Type Name/Value 0x0000000000000001 (NEEDED) Shared library: [libselinux.so.1] 0x0000000000000001 (NEEDED) Shared library: [libcap.so.2] 0x0000000000000001 (NEEDED) Shared library: [libc.so.6] [...] $ readelf -p .interp /usr/bin/ls String dump of section '.interp': [ 0] /lib64/ld-linux-x86-64.so.2 > ./NetworkManager: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not > found (required by ./NetworkManager) As you can see: 1. it uses your host system interpreter, /lib/x86_64-linux-gnu/libc.so.6 2. it reports unknown versioned symbols, presumably because your system uses an older glibc than your target system. > shouldn't buildroot use the libraries that are inside the buildroot directory? It does, but you are using the wrong tools to check. > Can anyone help me find out what is wrong? I hope the above is providing enough hints at how to look. Regards, Yann E. MORIN. -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From julien.boibessot at armadeus.com Fri May 3 15:48:54 2024 From: julien.boibessot at armadeus.com (Julien BOIBESSOT) Date: Fri, 3 May 2024 17:48:54 +0200 Subject: [Buildroot] [PATCH 1/3] configs/armadeus_apf27: add hashes for Linux/U-Boot Message-ID: <20240503154856.763551-1-julien.boibessot@armadeus.com> And enable BR2_DOWNLOAD_FORCE_CHECK_HASHES. As asked By Romain. Signed-off-by: Julien BOIBESSOT --- board/armadeus/patches/linux-headers/linux-headers.hash | 1 + board/armadeus/patches/linux/linux.hash | 2 ++ board/armadeus/patches/uboot/uboot.hash | 2 ++ configs/armadeus_apf27_defconfig | 4 ++++ 4 files changed, 9 insertions(+) create mode 120000 board/armadeus/patches/linux-headers/linux-headers.hash create mode 100644 board/armadeus/patches/linux/linux.hash create mode 100644 board/armadeus/patches/uboot/uboot.hash diff --git a/board/armadeus/patches/linux-headers/linux-headers.hash b/board/armadeus/patches/linux-headers/linux-headers.hash new file mode 120000 index 0000000000..5808d92afe --- /dev/null +++ b/board/armadeus/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/armadeus/patches/linux/linux.hash b/board/armadeus/patches/linux/linux.hash new file mode 100644 index 0000000000..804920c10d --- /dev/null +++ b/board/armadeus/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 879ca159c34ea9d3a6775f292cc59c2d3931d57dca00f0bebe2675ea0c82c6a9 linux-5.10.215.tar.xz diff --git a/board/armadeus/patches/uboot/uboot.hash b/board/armadeus/patches/uboot/uboot.hash new file mode 100644 index 0000000000..777e0adab2 --- /dev/null +++ b/board/armadeus/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 839bf23cfe8ce613a77e583a60375179d0ad324e92c82fbdd07bebf0fd142268 u-boot-2018.09.tar.bz2 diff --git a/configs/armadeus_apf27_defconfig b/configs/armadeus_apf27_defconfig index a87d319729..782587e410 100644 --- a/configs/armadeus_apf27_defconfig +++ b/configs/armadeus_apf27_defconfig @@ -5,6 +5,10 @@ BR2_arm926t=y # Linux headers same as kernel, a 5.10 series BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +# Build +BR2_GLOBAL_PATCH_DIR="board/armadeus/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + # System BR2_TARGET_GENERIC_HOSTNAME="apf27" BR2_TARGET_GENERIC_ISSUE="Welcome to Armadeus development platform !" -- 2.25.1 From julien.boibessot at armadeus.com Fri May 3 15:48:55 2024 From: julien.boibessot at armadeus.com (Julien BOIBESSOT) Date: Fri, 3 May 2024 17:48:55 +0200 Subject: [Buildroot] [PATCH 2/3] configs/armadeus_apf28: activates BR2_DOWNLOAD_FORCE_CHECK_HASHES In-Reply-To: <20240503154856.763551-1-julien.boibessot@armadeus.com> References: <20240503154856.763551-1-julien.boibessot@armadeus.com> Message-ID: <20240503154856.763551-2-julien.boibessot@armadeus.com> As asked by Romain. Armadeus boards share same Linux hashes. Signed-off-by: Julien BOIBESSOT --- configs/armadeus_apf28_defconfig | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/configs/armadeus_apf28_defconfig b/configs/armadeus_apf28_defconfig index 5207cf674c..4ff79dd012 100644 --- a/configs/armadeus_apf28_defconfig +++ b/configs/armadeus_apf28_defconfig @@ -5,6 +5,10 @@ BR2_arm926t=y # Linux headers same as kernel, a 5.10 series BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +# Build +BR2_GLOBAL_PATCH_DIR="board/armadeus/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + # System BR2_TARGET_GENERIC_HOSTNAME="apf28" BR2_TARGET_GENERIC_ISSUE="Welcome to Armadeus development platform !" -- 2.25.1 From julien.boibessot at armadeus.com Fri May 3 15:48:56 2024 From: julien.boibessot at armadeus.com (Julien BOIBESSOT) Date: Fri, 3 May 2024 17:48:56 +0200 Subject: [Buildroot] [PATCH 3/3] configs/armadeus_apf51: activates BR2_DOWNLOAD_FORCE_CHECK_HASHES In-Reply-To: <20240503154856.763551-1-julien.boibessot@armadeus.com> References: <20240503154856.763551-1-julien.boibessot@armadeus.com> Message-ID: <20240503154856.763551-3-julien.boibessot@armadeus.com> As asked by Romain. Armadeus boards share Linux hashes. Signed-off-by: Julien BOIBESSOT --- configs/armadeus_apf51_defconfig | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/configs/armadeus_apf51_defconfig b/configs/armadeus_apf51_defconfig index af4562ce0f..8317dd7b8b 100644 --- a/configs/armadeus_apf51_defconfig +++ b/configs/armadeus_apf51_defconfig @@ -5,6 +5,10 @@ BR2_cortex_a8=y # Linux headers same as kernel, a 5.10 series BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +# Build +BR2_GLOBAL_PATCH_DIR="board/armadeus/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + # System BR2_TARGET_GENERIC_HOSTNAME="apf51" BR2_TARGET_GENERIC_ISSUE="Welcome to Armadeus development platform !" -- 2.25.1 From account-security-noreply at busybox.net Fri May 3 16:47:00 2024 From: account-security-noreply at busybox.net (Mail account team) Date: 3 May 2024 19:47:00 +0300 Subject: [Buildroot] Mail account password change Message-ID: <20240503194659.C64A92651DC9B218@busybox.net> An HTML attachment was scrubbed... URL: From fontaine.fabrice at gmail.com Fri May 3 18:31:32 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Fri, 3 May 2024 20:31:32 +0200 Subject: [Buildroot] [PATCH 1/1] package/libglib2: update atomic patch Message-ID: <20240503183132.915691-1-fontaine.fabrice@gmail.com> Commit 929bffbf4bf8fcb91bda446777f907f32c782656 forgot to update patch number Moreover, replace it with a new iteration to follow upstream request [1] and avoid the following build host build failure with br-autobuild-1: /usr/bin/ld: cannot find /usr/lib64/libatomic.so.1.2.0: No such file or directory Fixes: 929bffbf4bf8fcb91bda446777f907f32c782656 - http://autobuild.buildroot.org/results/a12b9c4436594818f4ce128595b429adf7d90e31 [1]: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3606 Signed-off-by: Fabrice Fontaine --- .../0005-link-with-latomic-when-needed.patch | 45 ---------------- .../0006-link-with-latomic-when-needed.patch | 52 +++++++++++++++++++ 2 files changed, 52 insertions(+), 45 deletions(-) delete mode 100644 package/libglib2/0005-link-with-latomic-when-needed.patch create mode 100644 package/libglib2/0006-link-with-latomic-when-needed.patch diff --git a/package/libglib2/0005-link-with-latomic-when-needed.patch b/package/libglib2/0005-link-with-latomic-when-needed.patch deleted file mode 100644 index 275d86032b..0000000000 --- a/package/libglib2/0005-link-with-latomic-when-needed.patch +++ /dev/null @@ -1,45 +0,0 @@ -From d1814dbd3a88c95a43d4c9805bb4a523cf62d97b Mon Sep 17 00:00:00 2001 -From: Fabrice Fontaine -Date: Sun, 17 Sep 2023 20:42:00 +0200 -Subject: [PATCH] link with -latomic when needed - -Some architecture such as sparc and some flavors of arm needs -latomic -to avoid the following build failure: - -gthread-posix.c:(.text+0xda8): undefined reference to `__atomic_compare_exchange_4' - -Signed-off-by: Fabrice Fontaine -Upstream: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3586 ---- - glib/meson.build | 1 + - meson.build | 2 ++ - 2 files changed, 3 insertions(+) - -diff --git a/glib/meson.build b/glib/meson.build -index c26a35e42..7a761306b 100644 ---- a/glib/meson.build -+++ b/glib/meson.build -@@ -426,6 +426,7 @@ libglib = library('glib-2.0', - pcre2, - platform_deps, - thread_dep, -+ atomic_dep - ], - c_args : glib_c_args, - objc_args : glib_c_args, -diff --git a/meson.build b/meson.build -index 25ae10fc2..5ae84b3b3 100644 ---- a/meson.build -+++ b/meson.build -@@ -2130,6 +2130,8 @@ libffi_dep = dependency('libffi', version : '>= 3.0.0') - - libz_dep = dependency('zlib') - -+atomic_dep = cc.find_library('atomic', required: false) -+ - # First check in libc, fallback to libintl, and as last chance build - # proxy-libintl subproject. - # FIXME: glib-gettext.m4 has much more checks to detect broken/uncompatible --- -2.40.1 - diff --git a/package/libglib2/0006-link-with-latomic-when-needed.patch b/package/libglib2/0006-link-with-latomic-when-needed.patch new file mode 100644 index 0000000000..5ac0744cbf --- /dev/null +++ b/package/libglib2/0006-link-with-latomic-when-needed.patch @@ -0,0 +1,52 @@ +From 4e6dc4dee0e1c6407113597180d9616b4f275f94 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 2 May 2024 14:02:17 +0200 +Subject: [PATCH] link with -latomic when needed + +Some architecture such as sparc and some flavors of arm needs -latomic +to avoid the following build failure: + +gthread-posix.c:(.text+0xda8): undefined reference to `__atomic_compare_exchange_4' + +Signed-off-by: Fabrice Fontaine +Upstream: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/4034 +--- + glib/meson.build | 1 + + meson.build | 9 +++++++++ + 2 files changed, 10 insertions(+) + +diff --git a/glib/meson.build b/glib/meson.build +index 24cbb664d..b2dd569e1 100644 +--- a/glib/meson.build ++++ b/glib/meson.build +@@ -419,6 +419,7 @@ libglib = library('glib-2.0', + include_directories : configinc, + link_with: [charset_lib, gnulib_lib], + dependencies : [ ++ atomic_dep, + gnulib_libm_dependency, + libiconv, + libintl_deps, +diff --git a/meson.build b/meson.build +index 46c5aa200..8b4294055 100644 +--- a/meson.build ++++ b/meson.build +@@ -2233,6 +2233,15 @@ libffi_dep = dependency('libffi', version : '>= 3.0.0') + + libz_dep = dependency('zlib') + ++libatomic_test_code = ''' ++ int main (int argc, char ** argv) { ++ return 0; ++ }''' ++atomic_dep = [] ++if cc.links(libatomic_test_code, args : '-latomic', name : 'check for -latomic') ++ atomic_dep = cc.find_library('atomic') ++endif ++ + # First check in libc, fallback to libintl, and as last chance build + # proxy-libintl subproject. + # FIXME: glib-gettext.m4 has much more checks to detect broken/uncompatible +-- +2.43.0 + -- 2.43.0 From fontaine.fabrice at gmail.com Fri May 3 18:50:08 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Fri, 3 May 2024 20:50:08 +0200 Subject: [Buildroot] [PATCH 1/1] package/gptfdisk: bump to version 1.0.10 Message-ID: <20240503185008.930881-1-fontaine.fabrice@gmail.com> Drop second to fourth patches (already in version) https://sourceforge.net/p/gptfdisk/code/ci/53ac725a88a616b9f3395500d6e520aa04742fa5/tree/NEWS Signed-off-by: Fabrice Fontaine --- .checkpackageignore | 1 - ...h-of-sgdisk-when-compiled-with-lates.patch | 60 ------------------- ...ence-when-duplicating-string-argumen.patch | 44 -------------- ...to-deal-with-minor-change-in-libuuid.patch | 41 ------------- package/gptfdisk/gptfdisk.hash | 6 +- package/gptfdisk/gptfdisk.mk | 2 +- 6 files changed, 4 insertions(+), 150 deletions(-) delete mode 100644 package/gptfdisk/0002-Fix-failure-crash-of-sgdisk-when-compiled-with-lates.patch delete mode 100644 package/gptfdisk/0003-Fix-NULL-dereference-when-duplicating-string-argumen.patch delete mode 100644 package/gptfdisk/0004-Updated-guid.cc-to-deal-with-minor-change-in-libuuid.patch diff --git a/.checkpackageignore b/.checkpackageignore index c600978cf2..d809f3396b 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -765,7 +765,6 @@ package/gpm/0005-fix-building-w-newer-glibc.patch lib_patch.Upstream package/gpm/0006-src-headers-daemon.h-avoid-redefinition-of-last_sele.patch lib_patch.Upstream package/gpsd/S50gpsd Shellcheck lib_sysv.Indent lib_sysv.Variables package/gptfdisk/0001-gptcurses-partially-revert-Tweaks-for-building-on-th.patch lib_patch.Upstream -package/gptfdisk/0002-Fix-failure-crash-of-sgdisk-when-compiled-with-lates.patch lib_patch.Upstream package/graphite2/0001-don-t-install-a-libtool-file-with-static-library.patch lib_patch.Upstream package/grpc/0002-wrap_memcpy.cc-add-GPR_DISABLE_WRAPPED_MEMCPY.patch lib_patch.Upstream package/grpc/0003-host-grpc-only-cpp-plugin.patch lib_patch.Upstream diff --git a/package/gptfdisk/0002-Fix-failure-crash-of-sgdisk-when-compiled-with-lates.patch b/package/gptfdisk/0002-Fix-failure-crash-of-sgdisk-when-compiled-with-lates.patch deleted file mode 100644 index bdeedd95cc..0000000000 --- a/package/gptfdisk/0002-Fix-failure-crash-of-sgdisk-when-compiled-with-lates.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 5d5e76d369a412bfb3d2cebb5fc0a7509cef878d Mon Sep 17 00:00:00 2001 -From: Rod Smith -Date: Fri, 15 Apr 2022 18:10:14 -0400 -Subject: [PATCH] Fix failure & crash of sgdisk when compiled with latest - popt (commit 740; presumably eventually release 1.19) - -[Retrieved from: -https://sourceforge.net/p/gptfdisk/code/ci/5d5e76d369a412bfb3d2cebb5fc0a7509cef878d/] -Signed-off-by: Fabrice Fontaine ---- - NEWS | 8 ++++++++ - gptcl.cc | 2 +- - support.h | 2 +- - 3 files changed, 10 insertions(+), 2 deletions(-) - -diff --git a/NEWS b/NEWS -index c7add56..9e153fd 100644 ---- a/NEWS -+++ b/NEWS -@@ -1,3 +1,11 @@ -+1.0.10 (?/??/2022): -+------------------- -+ -+- Fixed problem that caused sgdisk to crash with errors about being unable -+ to read the disk's partition table when compiled with the latest popt -+ (commit 740, which is pre-release as I type; presumably version 1.19 and -+ later once released). -+ - 1.0.9 (4/14/2022): - ------------------ - -diff --git a/gptcl.cc b/gptcl.cc -index 34c9421..0d578eb 100644 ---- a/gptcl.cc -+++ b/gptcl.cc -@@ -155,7 +155,7 @@ int GPTDataCL::DoOptions(int argc, char* argv[]) { - } // while - - // Assume first non-option argument is the device filename.... -- device = (char*) poptGetArg(poptCon); -+ device = strdup((char*) poptGetArg(poptCon)); - poptResetContext(poptCon); - - if (device != NULL) { -diff --git a/support.h b/support.h -index 8ba9ad1..f91f1bc 100644 ---- a/support.h -+++ b/support.h -@@ -8,7 +8,7 @@ - #include - #include - --#define GPTFDISK_VERSION "1.0.9" -+#define GPTFDISK_VERSION "1.0.9.1" - - #if defined (__FreeBSD__) || defined (__FreeBSD_kernel__) || defined (__APPLE__) - // Darwin (Mac OS) & FreeBSD: disk IOCTLs are different, and there is no lseek64 --- -2.35.1 - diff --git a/package/gptfdisk/0003-Fix-NULL-dereference-when-duplicating-string-argumen.patch b/package/gptfdisk/0003-Fix-NULL-dereference-when-duplicating-string-argumen.patch deleted file mode 100644 index 250c071582..0000000000 --- a/package/gptfdisk/0003-Fix-NULL-dereference-when-duplicating-string-argumen.patch +++ /dev/null @@ -1,44 +0,0 @@ -From f5de3401b974ce103ffd93af8f9d43505a04aaf9 Mon Sep 17 00:00:00 2001 -Message-Id: -From: Damian Kurek -Date: Thu, 7 Jul 2022 03:39:16 +0000 -Subject: [PATCH] Fix NULL dereference when duplicating string argument - -poptGetArg can return NULL if there are no additional arguments, which -makes strdup dereference NULL on strlen - -Signed-off-by: Stefan Agner -Upstream: https://sourceforge.net/p/gptfdisk/code/ci/f5de3401b974ce103ffd93af8f9d43505a04aaf9 ---- - gptcl.cc | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/gptcl.cc b/gptcl.cc -index 0d578eb..ab95239 100644 ---- a/gptcl.cc -+++ b/gptcl.cc -@@ -155,10 +155,11 @@ int GPTDataCL::DoOptions(int argc, char* argv[]) { - } // while - - // Assume first non-option argument is the device filename.... -- device = strdup((char*) poptGetArg(poptCon)); -- poptResetContext(poptCon); -+ device = (char*) poptGetArg(poptCon); - - if (device != NULL) { -+ device = strdup(device); -+ poptResetContext(poptCon); - JustLooking(); // reset as necessary - BeQuiet(); // Tell called functions to be less verbose & interactive - if (LoadPartitions((string) device)) { -@@ -498,6 +499,7 @@ int GPTDataCL::DoOptions(int argc, char* argv[]) { - cerr << "Error encountered; not saving changes.\n"; - retval = 4; - } // if -+ free(device); - } // if (device != NULL) - poptFreeContext(poptCon); - return retval; --- -2.40.0 - diff --git a/package/gptfdisk/0004-Updated-guid.cc-to-deal-with-minor-change-in-libuuid.patch b/package/gptfdisk/0004-Updated-guid.cc-to-deal-with-minor-change-in-libuuid.patch deleted file mode 100644 index 22c34ced6f..0000000000 --- a/package/gptfdisk/0004-Updated-guid.cc-to-deal-with-minor-change-in-libuuid.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 6a8416cbd12d55f882bb751993b94f72d338d96f Mon Sep 17 00:00:00 2001 -From: Rod Smith -Date: Sat, 16 Apr 2022 09:32:04 -0400 -Subject: [PATCH] Updated guid.cc to deal with minor change in libuuid - -Upstream: https://sourceforge.net/p/gptfdisk/code/ci/6a8416cbd12d55f882bb751993b94f72d338d96f -Signed-off-by: Ben Wolsieffer ---- - NEWS | 2 ++ - guid.cc | 2 +- - 2 files changed, 3 insertions(+), 1 deletion(-) - -diff --git a/NEWS b/NEWS -index 9e153fd..9ec7e63 100644 ---- a/NEWS -+++ b/NEWS -@@ -6,6 +6,8 @@ - (commit 740, which is pre-release as I type; presumably version 1.19 and - later once released). - -+- Updated guid.cc to deal with minor change in libuuid. -+ - 1.0.9 (4/14/2022): - ------------------ - -diff --git a/guid.cc b/guid.cc -index 1e73ab7..d3e4fd5 100644 ---- a/guid.cc -+++ b/guid.cc -@@ -141,7 +141,7 @@ void GUIDData::Zero(void) { - void GUIDData::Randomize(void) { - int i, uuidGenerated = 0; - --#ifdef _UUID_UUID_H -+#if defined (_UUID_UUID_H) || defined (_UL_LIBUUID_UUID_H) - uuid_generate(uuidData); - ReverseBytes(&uuidData[0], 4); - ReverseBytes(&uuidData[4], 2); --- -2.42.0 - diff --git a/package/gptfdisk/gptfdisk.hash b/package/gptfdisk/gptfdisk.hash index 0b98677afb..14a8d59a08 100644 --- a/package/gptfdisk/gptfdisk.hash +++ b/package/gptfdisk/gptfdisk.hash @@ -1,5 +1,5 @@ -# From http://sourceforge.net/projects/gptfdisk/files/gptfdisk/1.0.9/ -sha1 284bd000edaf7874b472bd01719c6a71a8030e13 gptfdisk-1.0.9.tar.gz +# From http://sourceforge.net/projects/gptfdisk/files/gptfdisk/1.0.10/ +sha1 70c0bfe4290c2893fc957ef7f6156c5e74e469fc gptfdisk-1.0.10.tar.gz # Locally computed -sha256 dafead2693faeb8e8b97832b23407f6ed5b3219bc1784f482dd855774e2d50c2 gptfdisk-1.0.9.tar.gz +sha256 2abed61bc6d2b9ec498973c0440b8b804b7a72d7144069b5a9209b2ad693a282 gptfdisk-1.0.10.tar.gz sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING diff --git a/package/gptfdisk/gptfdisk.mk b/package/gptfdisk/gptfdisk.mk index 393ea9469a..b35899bf9b 100644 --- a/package/gptfdisk/gptfdisk.mk +++ b/package/gptfdisk/gptfdisk.mk @@ -4,7 +4,7 @@ # ################################################################################ -GPTFDISK_VERSION = 1.0.9 +GPTFDISK_VERSION = 1.0.10 GPTFDISK_SITE = http://downloads.sourceforge.net/sourceforge/gptfdisk GPTFDISK_LICENSE = GPL-2.0+ GPTFDISK_LICENSE_FILES = COPYING -- 2.43.0 From fontaine.fabrice at gmail.com Fri May 3 19:28:39 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Fri, 3 May 2024 21:28:39 +0200 Subject: [Buildroot] [PATCH 1/1] package/ledmon: bump to version 1.0.0 Message-ID: <20240503192840.1240802-1-fontaine.fabrice@gmail.com> - Add host-autoconf-archive mandatory dependency - Drop patches (already in version) https://github.com/intel/ledmon/releases/tag/v1.0.0 Signed-off-by: Fabrice Fontaine --- ...nstandard-on_exit-function-by-atexit.patch | 223 ------------------ ...-Fix-unknown-type-name-ssize_t-error.patch | 44 ---- .../ledmon/0003-Add-disable-doc-option.patch | 63 ----- package/ledmon/ledmon.hash | 2 +- package/ledmon/ledmon.mk | 7 +- 5 files changed, 5 insertions(+), 334 deletions(-) delete mode 100644 package/ledmon/0001-Replace-nonstandard-on_exit-function-by-atexit.patch delete mode 100644 package/ledmon/0002-Fix-unknown-type-name-ssize_t-error.patch delete mode 100644 package/ledmon/0003-Add-disable-doc-option.patch diff --git a/package/ledmon/0001-Replace-nonstandard-on_exit-function-by-atexit.patch b/package/ledmon/0001-Replace-nonstandard-on_exit-function-by-atexit.patch deleted file mode 100644 index 7a89c3f1a4..0000000000 --- a/package/ledmon/0001-Replace-nonstandard-on_exit-function-by-atexit.patch +++ /dev/null @@ -1,223 +0,0 @@ -From e57ad4c71cce734de7f8aa75e84fce97bc148c2b Mon Sep 17 00:00:00 2001 -From: Maksim Kiselev -Date: Mon, 15 May 2023 14:46:56 +0300 -Subject: [PATCH] Replace nonstandard on_exit() function by atexit() - -on_exit() is not portable and not available on the C libraries musl -and uClibc. - -So let's replace it with standard atexit() function. - -Upstream: https://github.com/intel/ledmon/pull/139 - -Signed-off-by: Maksim Kiselev ---- - src/ledctl.c | 12 ++++------- - src/ledmon.c | 59 +++++++++++++++++++++++++++------------------------- - 2 files changed, 35 insertions(+), 36 deletions(-) - -diff --git a/src/ledctl.c b/src/ledctl.c -index 7a89a24..10fd57a 100644 ---- a/src/ledctl.c -+++ b/src/ledctl.c -@@ -214,15 +214,11 @@ static void ibpi_state_fini(struct ibpi_state *p) - * - * This is internal function of ledctl utility. The function cleans up a memory - * allocated for the application and closes all opened handles. This function is -- * design to be registered as on_exit() handler function. -- * -- * @param[in] status exit status of the ledctl application. -- * @param[in] ignored function ignores this argument. -+ * design to be registered as atexit() handler function. - * - * @return The function does not return a value. - */ --static void _ledctl_fini(int status __attribute__ ((unused)), -- void *ignore __attribute__ ((unused))) -+static void _ledctl_fini(void) - { - sysfs_reset(); - list_erase(&ibpi_list); -@@ -948,7 +944,7 @@ static char *ledctl_strstatus(ledctl_status_code_t s) - * @brief Application's entry point. - * - * This is the entry point of ledctl utility. This function does all the work. -- * It allocates and initializes all used structures. Registers on_exit() -+ * It allocates and initializes all used structures. Registers atexit() - * handlers. - * Then the function parses command line options and commands given and scans - * sysfs tree for controllers, block devices and RAID devices. If no error is -@@ -983,7 +979,7 @@ int main(int argc, char *argv[]) - status = _init_ledctl_conf(); - if (status != LEDCTL_STATUS_SUCCESS) - return status; -- if (on_exit(_ledctl_fini, progname)) -+ if (atexit(_ledctl_fini)) - exit(LEDCTL_STATUS_ONEXIT_ERROR); - slot_request_init(&slot_req); - status = _cmdline_parse(argc, argv, &slot_req); -diff --git a/src/ledmon.c b/src/ledmon.c -index 6f52fd6..1329295 100644 ---- a/src/ledmon.c -+++ b/src/ledmon.c -@@ -57,6 +57,19 @@ - #include "utils.h" - #include "vmdssd.h" - -+/** -+ * This macro is the alternative way to get exit status -+ * in atexit() callback function -+ */ -+#define EXIT(x) ((exit)(exit_status = (x))) -+ -+static int exit_status; -+ -+/** -+ * Flag to print exit status -+ */ -+static int ignore; -+ - /** - * @brief List of active block devices. - * -@@ -151,20 +164,16 @@ static int possible_params_size = ARRAY_SIZE(possible_params); - * - * This is internal function of monitor service. It is used to finalize daemon - * process i.e. free allocated memory, unlock and remove pidfile and close log -- * file and syslog. The function is registered as on_exit() handler. -- * -- * @param[in] status The function ignores this parameter. -- * @param[in] program_name The name of the binary file. This argument -- * is passed via on_exit() function. -+ * file and syslog. The function is registered as atexit() handler. - * - * @return The function does not return a value. - */ --static void _ledmon_fini(int __attribute__ ((unused)) status, void *program_name) -+static void _ledmon_fini(void) - { - sysfs_reset(); - list_erase(&ledmon_block_list); - log_close(); -- pidfile_remove(program_name); -+ pidfile_remove(progname); - } - - typedef enum { -@@ -207,30 +216,25 @@ static char *ledmon_strstatus(ledmon_status_code_t s) - * - * This is internal function of monitor service. It is used to report an exit - * status of the monitor service. The message is logged in to syslog and to log -- * file. The function is registered as on_exit() hander. -- * -- * @param[in] status Status given in the last call to exit() -- * function. -- * @param[in] arg Argument passed to on_exit(). -+ * file. The function is registered as atexit() handler. - * - * @return The function does not return a value. - */ --static void _ledmon_status(int status, void *arg) -+static void _ledmon_status(void) - { - int log_level; - char message[4096]; -- int ignore = *((int *)arg); - - if (ignore) - return; - -- if (status == LEDMON_STATUS_SUCCESS) -+ if (exit_status == LEDMON_STATUS_SUCCESS) - log_level = LOG_LEVEL_INFO; - else - log_level = LOG_LEVEL_ERROR; - - snprintf(message, sizeof(message), "exit status is %s.", -- ledmon_strstatus(status)); -+ ledmon_strstatus(exit_status)); - - if (get_log_fd() >= 0) - _log(log_level, message); -@@ -364,10 +368,10 @@ static ledmon_status_code_t _cmdline_parse_non_daemonise(int argc, char *argv[]) - break; - case 'h': - _ledmon_help(); -- exit(EXIT_SUCCESS); -+ EXIT(EXIT_SUCCESS); - case 'v': - _ledmon_version(); -- exit(EXIT_SUCCESS); -+ EXIT(EXIT_SUCCESS); - case ':': - case '?': - return LEDMON_STATUS_CMDLINE_ERROR; -@@ -890,14 +894,13 @@ static void _close_parent_fds(void) - int main(int argc, char *argv[]) - { - ledmon_status_code_t status = LEDMON_STATUS_SUCCESS; -- static int ignore; - - setup_options(&longopt, &shortopt, possible_params, - possible_params_size); - set_invocation_name(argv[0]); - openlog(progname, LOG_PID | LOG_PERROR, LOG_DAEMON); - -- if (on_exit(_ledmon_status, &ignore)) -+ if (atexit(_ledmon_status)) - return LEDMON_STATUS_ONEXIT_ERROR; - - if (_cmdline_parse_non_daemonise(argc, argv) != LEDMON_STATUS_SUCCESS) -@@ -935,18 +938,18 @@ int main(int argc, char *argv[]) - - if (pid < 0) { - log_debug("main(): fork() failed (errno=%d).", errno); -- exit(EXIT_FAILURE); -+ EXIT(EXIT_FAILURE); - } - if (pid > 0) { - ignore = 1; /* parent: don't print exit status */ -- exit(EXIT_SUCCESS); -+ EXIT(EXIT_SUCCESS); - } - - pid_t sid = setsid(); - - if (sid < 0) { - log_debug("main(): setsid() failed (errno=%d).", errno); -- exit(EXIT_FAILURE); -+ EXIT(EXIT_FAILURE); - } - - _close_parent_fds(); -@@ -960,16 +963,16 @@ int main(int argc, char *argv[]) - - if (chdir("/") < 0) { - log_debug("main(): chdir() failed (errno=%d).", errno); -- exit(EXIT_FAILURE); -+ EXIT(EXIT_FAILURE); - } - if (pidfile_create(progname)) { - log_debug("main(): pidfile_creat() failed."); -- exit(EXIT_FAILURE); -+ EXIT(EXIT_FAILURE); - } - _ledmon_setup_signals(); - -- if (on_exit(_ledmon_fini, progname)) -- exit(LEDMON_STATUS_ONEXIT_ERROR); -+ if (atexit(_ledmon_fini)) -+ EXIT(LEDMON_STATUS_ONEXIT_ERROR); - list_init(&ledmon_block_list, (item_free_t)block_device_fini); - sysfs_init(); - log_info("monitor service has been started..."); -@@ -987,5 +990,5 @@ int main(int argc, char *argv[]) - } - ledmon_remove_shared_conf(); - stop_udev_monitor(); -- exit(EXIT_SUCCESS); -+ EXIT(EXIT_SUCCESS); - } --- -2.39.2 - diff --git a/package/ledmon/0002-Fix-unknown-type-name-ssize_t-error.patch b/package/ledmon/0002-Fix-unknown-type-name-ssize_t-error.patch deleted file mode 100644 index 4aeadbbbf8..0000000000 --- a/package/ledmon/0002-Fix-unknown-type-name-ssize_t-error.patch +++ /dev/null @@ -1,44 +0,0 @@ -From b9f454cd29b6b5a0927b3c1e98807d54ffacd73e Mon Sep 17 00:00:00 2001 -From: Maksim Kiselev -Date: Mon, 15 May 2023 19:29:45 +0300 -Subject: [PATCH] Fix unknown type name ?ssize_t? error - -This error occurs for builds with musl libc. -Move include to utils header to -resolve this issue. - -Upstream: https://github.com/intel/ledmon/pull/139 - -Signed-off-by: Maksim Kiselev ---- - src/utils.c | 1 - - src/utils.h | 1 + - 2 files changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/utils.c b/src/utils.c -index 86b9593..0b83d5a 100644 ---- a/src/utils.c -+++ b/src/utils.c -@@ -33,7 +33,6 @@ - #include - #include - #include --#include - #include - #include - #include -diff --git a/src/utils.h b/src/utils.h -index 5d590b9..d02da8f 100644 ---- a/src/utils.h -+++ b/src/utils.h -@@ -22,6 +22,7 @@ - #define _UTILS_H_INCLUDED_ - - #include -+#include - #include "config_file.h" - #include "stdlib.h" - #include "stdint.h" --- -2.39.2 - diff --git a/package/ledmon/0003-Add-disable-doc-option.patch b/package/ledmon/0003-Add-disable-doc-option.patch deleted file mode 100644 index ab7a242289..0000000000 --- a/package/ledmon/0003-Add-disable-doc-option.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 141628519d227b59be3977b16ebaab0feb22b295 Mon Sep 17 00:00:00 2001 -From: Maksim Kiselev -Date: Sun, 20 Aug 2023 11:35:57 +0300 -Subject: [PATCH] Add '--disable-doc' option - -Introduce a configure option to disable documentation installation -in case if it is not required. - -Upstream: https://github.com/intel/ledmon/pull/154 - -Signed-off-by: Maksim Kiselev ---- - Makefile.am | 8 ++++++-- - configure.ac | 11 ++++++++++- - 2 files changed, 16 insertions(+), 3 deletions(-) - -diff --git a/Makefile.am b/Makefile.am -index ddcd200..644a8d2 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -20,6 +20,10 @@ if SYSTEMD_CONDITION - OPTIONAL_SUBDIR = systemd - endif - --SUBDIRS = doc src $(OPTIONAL_SUBDIR) -+if WITH_DOC -+ DOC_SUBDIR = doc -+ dist_doc_DATA = README.md -+endif -+ -+SUBDIRS = src $(DOC_SUBDIR) $(OPTIONAL_SUBDIR) - EXTRA_DIST = config/config.h systemd/ledmon.service.in --dist_doc_DATA = README.md -diff --git a/configure.ac b/configure.ac -index 05baa62..114957f 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -74,6 +74,15 @@ AM_CONDITIONAL([SYSTEMD_CONDITION], [test "$SYSTEMD_STR" = yes]) - # target directory for ledmon service file - AC_SUBST([SYSTEMD_PATH], "$(pkg-config systemd --variable=systemdsystemunitdir)") - -+# Add configure option to disable documentation building -+AC_ARG_ENABLE([doc], -+ [AS_HELP_STRING([--disable-doc], -+ [do not install ledmon documentaion])], -+ [with_doc=${enableval}], -+ [with_doc=yes]) -+ -+AM_CONDITIONAL([WITH_DOC], [test "x$with_doc" = "xyes"]) -+ - AC_CONFIG_FILES([Makefile - doc/Makefile - src/Makefile -@@ -86,5 +95,5 @@ $PACKAGE_NAME $VERSION configuration: - Preprocessor flags: ${AM_CPPFLAGS} ${CPPFLAGS} - C compiler flags: ${AM_CFLAGS} ${CFLAGS} - Common install location: ${prefix} -- configure parameters: --enable-systemd=${SYSTEMD_STR} -+ configure parameters: --enable-systemd=${SYSTEMD_STR} --enable-doc=${with_doc} - ]) --- -2.39.2 - diff --git a/package/ledmon/ledmon.hash b/package/ledmon/ledmon.hash index dfc5d74242..e9cfcc63cb 100644 --- a/package/ledmon/ledmon.hash +++ b/package/ledmon/ledmon.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 40ee7e462b78c77468cc2ef356a06c5b6db44747d596dc11532f7b6f378d2d4b ledmon-0.97.tar.gz +sha256 2826786cd5e7fe7d32d22e9d209b23124801fec9c3220dcd7fb45706f3818dc5 ledmon-1.0.0.tar.gz sha256 dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa COPYING diff --git a/package/ledmon/ledmon.mk b/package/ledmon/ledmon.mk index 473d0de7a3..71150ad1e4 100644 --- a/package/ledmon/ledmon.mk +++ b/package/ledmon/ledmon.mk @@ -4,16 +4,17 @@ # ################################################################################ -LEDMON_VERSION = 0.97 +LEDMON_VERSION = 1.0.0 LEDMON_SITE = $(call github,intel,ledmon,v$(LEDMON_VERSION)) -LEDMON_DEPENDENCIES = host-pkgconf pciutils sg3_utils udev +LEDMON_DEPENDENCIES = host-autoconf-archive host-pkgconf pciutils sg3_utils udev # The code base also include a COPYING.LIB file with the LGPL-2.1 text, # and some source files are published under LGPL-2.1, but all of them are # at some point linked with GPL-2.0 code, making the resulting binaries # GPL-2.0 licensed LEDMON_LICENSE = GPL-2.0 LEDMON_LICENSE_FILES = COPYING -# 0002-Fix-unknown-type-name-ssize_t-error.patch +# From git LEDMON_AUTORECONF = YES +LEDMON_AUTORECONF_OPTS = --include=$(HOST_DIR)/share/autoconf-archive $(eval $(autotools-package)) -- 2.43.0 From fontaine.fabrice at gmail.com Fri May 3 19:53:04 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Fri, 3 May 2024 21:53:04 +0200 Subject: [Buildroot] [PATCH 1/1] package/zziplib: bump to version 0.13.74 Message-ID: <20240503195304.1277312-1-fontaine.fabrice@gmail.com> - Drop patches (already in version) - docs/copying.htm renamed to docs/copying.htm.md with https://github.com/gdraheim/zziplib/commit/b8138ba56ecb9d5d27c22d85fae37bdd594d2edb https://github.com/gdraheim/zziplib/blob/v0.13.74/ChangeLog Signed-off-by: Fabrice Fontaine --- .checkpackageignore | 1 - ...-implant-ZZIP_LIBLATEST-for-zzip_lib.patch | 75 ------------------- ...reate-symlinks-only-if-target-is-mis.patch | 72 ------------------ package/zziplib/zziplib.hash | 4 +- package/zziplib/zziplib.mk | 4 +- 5 files changed, 4 insertions(+), 152 deletions(-) delete mode 100644 package/zziplib/0001-implant-ZZIP_LIBLATEST-for-zzip_lib.patch delete mode 100644 package/zziplib/0002-ZZIP_LIBLATEST-create-symlinks-only-if-target-is-mis.patch diff --git a/.checkpackageignore b/.checkpackageignore index d809f3396b..9332d72ac4 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -1697,7 +1697,6 @@ package/zip/0006-unix-configure-borrow-the-LFS-test-from-autotools.patch lib_pat package/zip/0007-timezone.c-needs-time.h-fixes-musl-compile.patch lib_patch.Upstream package/zip/0008-fix-musl-static-build.patch lib_patch.Upstream package/zmqpp/0001-Allow-building-shared-or-static-library-only.patch lib_patch.Upstream -package/zziplib/0001-implant-ZZIP_LIBLATEST-for-zzip_lib.patch lib_patch.Upstream support/dependencies/check-host-asciidoc.sh Shellcheck support/dependencies/check-host-cmake.sh Shellcheck support/dependencies/check-host-gzip.sh Shellcheck diff --git a/package/zziplib/0001-implant-ZZIP_LIBLATEST-for-zzip_lib.patch b/package/zziplib/0001-implant-ZZIP_LIBLATEST-for-zzip_lib.patch deleted file mode 100644 index 780d990ab7..0000000000 --- a/package/zziplib/0001-implant-ZZIP_LIBLATEST-for-zzip_lib.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 0e8d35f92efb680c81f6ec1fca9f11d173dce389 Mon Sep 17 00:00:00 2001 -From: Guido Draheim -Date: Sat, 22 May 2021 15:13:28 +0200 -Subject: [PATCH] #117 implant ZZIP_LIBLATEST for zzip.lib - -[Andreas: Extract link creation for versioned libraries from commit -0e8d35f92efb680c81f6ec1fca9f11d173dce389.] -Signed-off-by: Andreas Ziegler ---- - zzip/CMakeLists.txt | 57 +++++++++++++++++++++++++++++++++++---------- - 1 file changed, 45 insertions(+), 12 deletions(-) - -diff --git a/zzip/CMakeLists.txt b/zzip/CMakeLists.txt -index a966d5f..ccd08b6 100644 ---- a/zzip/CMakeLists.txt -+++ b/zzip/CMakeLists.txt -@@ -28,6 +28,12 @@ option(ZZIP_LIBTOOL "Ensure binary compatibility with libtool" OFF) - option(ZZIP_PKGCONFIG "Generate pkg-config files for linking" OFF) - endif() - -+if(ZZIP_LIBTOOL OR ZZIP_PKGCONFIG) -+option(ZZIP_LIBLATEST "Ensure libname.lib links to libname-REL.lib" ON) -+else() -+option(ZZIP_LIBLATEST "Ensure libname.lib links to libname-REL.lib" OFF) -+endif() -+ - # used in zzip/_config.h - set(ZZIP_PACKAGE "${PROJECT_NAME}lib") - set(ZZIP_VERSION "${PROJECT_VERSION}") -@@ -346,6 +340,45 @@ if(ZZIP_LIBTOOL) - endif(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG) - endif(ZZIP_LIBTOOL) - -+if(ZZIP_LIBLATEST) -+ if(BUILD_SHARED_LIBS) -+ set(lib ${CMAKE_SHARED_LIBRARY_PREFIX}) -+ set(dll ${CMAKE_SHARED_LIBRARY_SUFFIX}) -+ else() -+ set(lib ${CMAKE_STATIC_LIBRARY_PREFIX}) -+ set(dll ${CMAKE_STATIC_LIBRARY_SUFFIX}) -+ endif() -+ get_target_property(libname libzzip OUTPUT_NAME) -+ get_target_property(librelease libzzip RELEASE_POSTFIX) -+ add_custom_target(libzzip_latest ALL -+ COMMAND ${CMAKE_COMMAND} -E create_symlink $ ${lib}${libname}${dll} -+ ) -+ install(FILES -+ ${outdir}/${lib}${libname}${dll} -+ DESTINATION ${CMAKE_INSTALL_LIBDIR}) -+ if(ZZIPFSEEKO) -+ get_target_property(libname libzzipfseeko OUTPUT_NAME) -+ get_target_property(librelease libzzipfseeko RELEASE_POSTFIX) -+ add_custom_target(libzzipfseeko_latest ALL -+ COMMAND ${CMAKE_COMMAND} -E create_symlink $ ${lib}${libname}${dll} -+ ) -+ install(FILES -+ ${outdir}/${lib}${libname}${dll} -+ DESTINATION ${CMAKE_INSTALL_LIBDIR}) -+ endif(ZZIPFSEEKO) -+ if(ZZIPMMAPPED) -+ get_target_property(libname libzzipmmapped OUTPUT_NAME) -+ get_target_property(librelease libzzipmmapped RELEASE_POSTFIX) -+ add_custom_target(libzzipmmaped_latest ALL -+ COMMAND ${CMAKE_COMMAND} -E create_symlink $ ${lib}${libname}${dll} -+ ) -+ install(FILES -+ ${outdir}/${lib}${libname}${dll} -+ DESTINATION ${CMAKE_INSTALL_LIBDIR}) -+ endif(ZZIPMMAPPED) -+endif(ZZIP_LIBLATEST) -+ -+ - ## messages ############################################## - - message(STATUS "lib zzipfseeko to be compiled: ${ZZIPFSEEKO}") diff --git a/package/zziplib/0002-ZZIP_LIBLATEST-create-symlinks-only-if-target-is-mis.patch b/package/zziplib/0002-ZZIP_LIBLATEST-create-symlinks-only-if-target-is-mis.patch deleted file mode 100644 index c8ccd48dba..0000000000 --- a/package/zziplib/0002-ZZIP_LIBLATEST-create-symlinks-only-if-target-is-mis.patch +++ /dev/null @@ -1,72 +0,0 @@ -From 5977725ecea038f32a86938703ca1ed2b080b31c Mon Sep 17 00:00:00 2001 -From: Andreas Ziegler -Date: Fri, 29 Jul 2022 12:32:27 +0200 -Subject: [PATCH] ZZIP_LIBLATEST: create symlinks only if target is missing - -zzip/CMakeList.txt uses custom build targets to create symlinks to the -(normally versioned) build results from unversioned file names. These -targets are executed unconditionally, every time a build is started, -regardless of the existence of the symlink. - -Debug builds, however, generate unversioned libraries. The build targets -therefore overwrite existing files with recursive links. - -Create custom targets depending on the target file plus custom build -commands containing the symlink creation, thereby ensuring that symlinks -are only created if the link target is missing. - -Signed-off-by: Andreas Ziegler -Upstream: https://github.com/gdraheim/zziplib/pull/138 ---- - zzip/CMakeLists.txt | 18 +++++++++++++++--- - 1 file changed, 15 insertions(+), 3 deletions(-) - -diff --git a/zzip/CMakeLists.txt b/zzip/CMakeLists.txt -index 4fa6b9c..dd1e56a 100644 ---- a/zzip/CMakeLists.txt -+++ b/zzip/CMakeLists.txt -@@ -350,8 +350,12 @@ if(ZZIP_LIBLATEST) - endif() - get_target_property(libname libzzip OUTPUT_NAME) - get_target_property(librelease libzzip RELEASE_POSTFIX) -+ set(libzzip_target "${lib}${libname}${dll}") -+ add_custom_command(OUTPUT ${libzzip_target} -+ COMMAND ${CMAKE_COMMAND} -E create_symlink $ ${libzzip_target} -+ ) - add_custom_target(libzzip_latest ALL -- COMMAND ${CMAKE_COMMAND} -E create_symlink $ ${lib}${libname}${dll} -+ DEPENDS ${libzzip_target} - ) - install(FILES - ${outdir}/${lib}${libname}${dll} -@@ -359,8 +363,12 @@ if(ZZIP_LIBLATEST) - if(ZZIPFSEEKO) - get_target_property(libname libzzipfseeko OUTPUT_NAME) - get_target_property(librelease libzzipfseeko RELEASE_POSTFIX) -+ set(libzzipfseeko_target "${lib}${libname}${dll}") -+ add_custom_command(OUTPUT ${libzzipfseeko_target} -+ COMMAND ${CMAKE_COMMAND} -E create_symlink $ ${libzzipfseeko_target} -+ ) - add_custom_target(libzzipfseeko_latest ALL -- COMMAND ${CMAKE_COMMAND} -E create_symlink $ ${lib}${libname}${dll} -+ DEPENDS ${libzzipfseeko_target} - ) - install(FILES - ${outdir}/${lib}${libname}${dll} -@@ -369,8 +377,12 @@ if(ZZIP_LIBLATEST) - if(ZZIPMMAPPED) - get_target_property(libname libzzipmmapped OUTPUT_NAME) - get_target_property(librelease libzzipmmapped RELEASE_POSTFIX) -+ set(libzzipmmapped_target "${lib}${libname}${dll}") -+ add_custom_command(OUTPUT ${libzzipmmapped_target} -+ COMMAND ${CMAKE_COMMAND} -E create_symlink $ ${libzzipmmapped_target} -+ ) - add_custom_target(libzzipmmaped_latest ALL -- COMMAND ${CMAKE_COMMAND} -E create_symlink $ ${lib}${libname}${dll} -+ DEPENDS ${libzzipmmapped_target} - ) - install(FILES - ${outdir}/${lib}${libname}${dll} --- -2.34.1 - diff --git a/package/zziplib/zziplib.hash b/package/zziplib/zziplib.hash index b6a75ae0cb..3bff51f07f 100644 --- a/package/zziplib/zziplib.hash +++ b/package/zziplib/zziplib.hash @@ -1,5 +1,5 @@ # sha256 locally computed -sha256 93ef44bf1f1ea24fc66080426a469df82fa631d13ca3b2e4abaeab89538518dc zziplib-0.13.72.tar.gz +sha256 319093aa98d39453f3ea2486a86d8a2fab2d5632f6633a2665318723a908eecf zziplib-0.13.74.tar.gz sha256 94b03f1a60a7fd5007149530626a895a6ef5a8b9342abfd56860c5f3956f5d23 docs/COPYING.LIB sha256 c2aa7d58cebd24cb877bbf11d6b13a4bb7cd08b9d7db5d3037ca06c46bf4cfd8 docs/COPYING.MPL -sha256 1c6da11efe8c43ee853fe5b21501dd72b81831ae84d58ea376bddc0620a5c361 docs/copying.htm +sha256 9418aca218090f0bebfa91298c8145c7342de095eced3d72ea241c178df59368 docs/copying.htm.md diff --git a/package/zziplib/zziplib.mk b/package/zziplib/zziplib.mk index 6cb9dedce8..0ef53436d2 100644 --- a/package/zziplib/zziplib.mk +++ b/package/zziplib/zziplib.mk @@ -4,10 +4,10 @@ # ################################################################################ -ZZIPLIB_VERSION = 0.13.72 +ZZIPLIB_VERSION = 0.13.74 ZZIPLIB_SITE = $(call github,gdraheim,zziplib,v$(ZZIPLIB_VERSION)) ZZIPLIB_LICENSE = LGPL-2.0+ or MPL-1.1 -ZZIPLIB_LICENSE_FILES = docs/COPYING.LIB docs/COPYING.MPL docs/copying.htm +ZZIPLIB_LICENSE_FILES = docs/COPYING.LIB docs/COPYING.MPL docs/copying.htm.md ZZIPLIB_CPE_ID_VALID = YES ZZIPLIB_INSTALL_STAGING = YES ZZIPLIB_CONF_OPTS += \ -- 2.43.0 From peter at korsgaard.com Mon May 6 16:16:26 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 06 May 2024 18:16:26 +0200 Subject: [Buildroot] [PATCH] configs/mangopi_mq1rdw1_defconfig: fix build failure due to undefined linux headers In-Reply-To: <20240330092902.834778-1-giulio.benetti@benettiengineering.com> (Giulio Benetti's message of "Sat, 30 Mar 2024 10:29:02 +0100") References: <20240330092902.834778-1-giulio.benetti@benettiengineering.com> Message-ID: <87wmo6zzj9.fsf@dell.be.48ers.dk> >>>>> "Giulio" == Giulio Benetti writes: > Add BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6 to prevent error: > Incorrect selection of kernel headers: expected 6.8.x, got 6.6.x > Fixes: > https://gitlab.com/buildroot.org/buildroot/-/jobs/6498278078 > Signed-off-by: Giulio Benetti Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Mon May 6 16:16:07 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 6 May 2024 18:16:07 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] configs/mangopi_mq1rdw1_defconfig: fix build failure due to undefined linux headers Message-ID: <20240506161658.3D6D386736@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=e11b804443d4e3bf5cbe447096a888fa825681a4 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Add BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6 to prevent error: Incorrect selection of kernel headers: expected 6.8.x, got 6.6.x Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6498278078 Signed-off-by: Giulio Benetti Signed-off-by: Thomas Petazzoni (cherry picked from commit c245b37190f18d1f0551dd95027b2b65fa63e704) Signed-off-by: Peter Korsgaard --- configs/mangopi_mq1rdw2_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/mangopi_mq1rdw2_defconfig b/configs/mangopi_mq1rdw2_defconfig index a2f8a1299b..2249fa4be5 100644 --- a/configs/mangopi_mq1rdw2_defconfig +++ b/configs/mangopi_mq1rdw2_defconfig @@ -1,6 +1,7 @@ BR2_arm=y BR2_cortex_a7=y BR2_ARM_FPU_VFPV4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y BR2_TARGET_GENERIC_HOSTNAME="mangopi-mq1rdw2" BR2_TARGET_GENERIC_ISSUE="Welcome to MangoPI MQ1RDW2" BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y From fiona.klute at gmx.de Mon May 6 16:20:45 2024 From: fiona.klute at gmx.de (Fiona Klute) Date: Mon, 6 May 2024 18:20:45 +0200 Subject: [Buildroot] [PATCH 1/1] package/raspberrypi-usbboot: bump version to 20221215-105525 In-Reply-To: <20240426213551.1106068-1-fiona.klute@gmx.de> References: <20240426213551.1106068-1-fiona.klute@gmx.de> Message-ID: Hi, I still didn't get any response (merge/comment/rejection) on this and the "package/kmod: fix build with musl" patch I sent the same day. Is there anything else I can do to get them to the right person? They're necessary to get the board I'm working on working, and for musl-based builds with compressed kernel modules in general. Best regards, Fiona Am 26.04.24 um 23:35 schrieb Fiona Klute via buildroot: > From: Fiona Klute > > The "msd" (mass storage device) firmware files in 2021.07.01 don't > work with some newer CM4 based devices, the one I had issues with is a > RevPi Connect 4. Updating fixes the issue. Mass storage device mode is > required to flash the eMMC of CM4 devices. > > Signed-off-by: Fiona Klute > --- > ...001-Makefile-allow-passing-CFLAGS-LDFLAGS.patch | 14 +++++++++----- > .../raspberrypi-usbboot/raspberrypi-usbboot.hash | 2 +- > package/raspberrypi-usbboot/raspberrypi-usbboot.mk | 4 ++-- > 3 files changed, 12 insertions(+), 8 deletions(-) > > diff --git a/package/raspberrypi-usbboot/0001-Makefile-allow-passing-CFLAGS-LDFLAGS.patch b/package/raspberrypi-usbboot/0001-Makefile-allow-passing-CFLAGS-LDFLAGS.patch > index d482b0b9d4..776f6d3476 100644 > --- a/package/raspberrypi-usbboot/0001-Makefile-allow-passing-CFLAGS-LDFLAGS.patch > +++ b/package/raspberrypi-usbboot/0001-Makefile-allow-passing-CFLAGS-LDFLAGS.patch > @@ -10,21 +10,25 @@ Submitted-upstream: https://github.com/raspberrypi/usbboot/pull/2 > Signed-off-by: Thomas Petazzoni > [Rebased on 9324fd7] > Signed-off-by: Peter Seiderer > +[Rebased on 20221215-105525-0-g1afa26c5] > +Signed-off-by: Fiona Klute > --- > Makefile | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/Makefile b/Makefile > -index 822e714..875e717 100755 > +index dc78cfe..5ada5be 100755 > --- a/Makefile > +++ b/Makefile > -@@ -1,5 +1,5 @@ > +@@ -1,7 +1,7 @@ > + PKG_VER=$(shell grep rpiboot debian/changelog | head -n1 | sed 's/.*(\(.*\)).*/\1/g') > + GIT_VER=$(shell git rev-parse HEAD 2>/dev/null | cut -c1-8 || echo "") > rpiboot: main.c msd/bootcode.h msd/start.h msd/bootcode4.h msd/start4.h > -- $(CC) -Wall -Wextra -g -o $@ $< -lusb-1.0 > -+ $(CC) -Wall -Wextra -g $(CFLAGS) -o $@ $< -lusb-1.0 $(LDFLAGS) > +- $(CC) -Wall -Wextra -g -o $@ $< `pkg-config --cflags --libs libusb-1.0` -DGIT_VER="\"$(GIT_VER)\"" -DPKG_VER="\"$(PKG_VER)\"" > ++ $(CC) -Wall -Wextra -g $(CFLAGS) -o $@ $< `pkg-config --cflags --libs libusb-1.0` -DGIT_VER="\"$(GIT_VER)\"" -DPKG_VER="\"$(PKG_VER)\"" $(LDFLAGS) > > %.h: %.bin ./bin2c > ./bin2c $< $@ > -- > -2.31.1 > +2.43.0 > > diff --git a/package/raspberrypi-usbboot/raspberrypi-usbboot.hash b/package/raspberrypi-usbboot/raspberrypi-usbboot.hash > index cedc5fb7e1..830ead8243 100644 > --- a/package/raspberrypi-usbboot/raspberrypi-usbboot.hash > +++ b/package/raspberrypi-usbboot/raspberrypi-usbboot.hash > @@ -1,5 +1,5 @@ > # Locally calculated > -sha256 4565314b38e7c7505b7d32a3b51b49f79c7dd5767d45b86d38e5255ae7489a43 raspberrypi-usbboot-2021.07.01.tar.gz > +sha256 2f02dbe9a88e9dfad5f05e513e1f30afd47b1575820f7c3b09665dfefc45bbaa raspberrypi-usbboot-20221215-105525.tar.gz > > # License files > sha256 b40930bbcf80744c86c46a12bc9da056641d722716c378f5659b9e555ef833e1 LICENSE > diff --git a/package/raspberrypi-usbboot/raspberrypi-usbboot.mk b/package/raspberrypi-usbboot/raspberrypi-usbboot.mk > index 2e4194da0b..24a1f6d906 100644 > --- a/package/raspberrypi-usbboot/raspberrypi-usbboot.mk > +++ b/package/raspberrypi-usbboot/raspberrypi-usbboot.mk > @@ -4,9 +4,9 @@ > # > ################################################################################ > > -RASPBERRYPI_USBBOOT_VERSION = 2021.07.01 > +RASPBERRYPI_USBBOOT_VERSION = 20221215-105525 > RASPBERRYPI_USBBOOT_SITE = \ > - $(call github,raspberrypi,usbboot,v$(RASPBERRYPI_USBBOOT_VERSION)) > + $(call github,raspberrypi,usbboot,$(RASPBERRYPI_USBBOOT_VERSION)) > RASPBERRYPI_USBBOOT_LICENSE = Apache-2.0 > RASPBERRYPI_USBBOOT_LICENSE_FILES = LICENSE > > -- > 2.43.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot From dannenberg at ti.com Mon May 6 18:01:10 2024 From: dannenberg at ti.com (Andreas Dannenberg) Date: Mon, 6 May 2024 13:01:10 -0500 Subject: [Buildroot] [RFC, 1/1] configs/am62x-sk: Add fragment for TI tree integration In-Reply-To: <20240430145448.yhg6r64ohsfofeqv@bryanbrattlof.com> References: <20240429092326.3247116-1-p-bhagat@ti.com> <20240430145448.yhg6r64ohsfofeqv@bryanbrattlof.com> Message-ID: <20240506180110.c2fz34ezrvzuzf6z@dasso> On Tue, Apr 30, 2024 at 09:54:48AM -0500, Bryan Brattlof via buildroot wrote: > On April 29, 2024 thus sayeth Paresh Bhagat via buildroot: > > This commit introduces a new fragment config aimed at integration of TI trees > > into the existing configuration for am62x-sk. The fragment config is designed > > to be merged with the current ti_am62x_sk_defconfig, enabling transition from > > mainline to TI versions for U-boot and kernel. > > > > The fragment config will be merged with existing ti_my_am62x_sk_defconfig > > using merge-config.sh script present in support/kconfig using following > > command. > > > > ./support/kconfig/merge-config.sh configs/ti_am62x_sk_defconfig configs/ti_am62x_sk.config This should be "merge_config.sh". > > It effectively changes uboot and kernel source from mainline version to TI > > version hosted here > > > > https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/?h=ti-linux-6.1.y > > https://git.ti.com/cgit/ti-u-boot/ti-u-boot/?h=ti-u-boot-2023.04 > > > > Furthermore, as ti-uboot 2023.04 is used, kernel Image and dtb is expected > > in rootfs/boot/ and rootfs/boot/dtb/ti respectively. So add a new post-build > > script to copy these files to desired location. > > > > Signed-off-by: Paresh Bhagat > > Thanks for the patch. My worry is these changes will only be needed for > the brief time the 9.2 SDK is relevant. The 10.X SDK is just around the > corner and will break all of this with its new baseline. > > It may be easier to keep these configs all in a custom BR2_EXTERNAL > overlay and keep buildroot pointed to pure sources of these packages Yes Paresh also from my side thanks for the effort you put into this. After spending some more time on this I tend to agree with Brian that this should probably not be directly in the official tree to minimize churn, plus keeping the official Buildroot upstream-only will motivate us even more to make sure all our device support goes upstream... All this being said, there is a very common "real world" customer need/ request for a Buildroot-based solution more closely aligned with TI's official Yocto SDKs. Ideally I'd like to see us providing something via BR2_EXTERNAL that is well maintained (like other vendors provide), but until we can close on the best path forward I've updated my already- existing E2E FAQ [1] to help customers today setting up such a TI Yocto SDK v9.2 Baseline Equivalent by adding a simple patch to the tree by themselves. I plan on maintaining this as needed to accommodate for new SDK releases (and also so people don't always have to resolve merge conflicts when applying that patch). -- Andreas Dannenberg Texas Instruments Inc [1] https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1226815/faq-buildroot-support-for-sitara-am62x-am62ax-am62px-am64x-devices > > ~Bryan > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot From Brandon.Maier at collins.com Mon May 6 18:15:55 2024 From: Brandon.Maier at collins.com (Maier, Brandon L Collins) Date: Mon, 6 May 2024 18:15:55 +0000 Subject: [Buildroot] [External] Re: [PATCH 1/1] boot/arm-trusted-firmware: enable verbose output In-Reply-To: <20240505153959.14f8ef6b@windsurf> References: <20240412211222.26585-1-brandon.maier@collins.com> <20240505153959.14f8ef6b@windsurf> Message-ID: Hi Thomas, > -----Original Message----- > From: Thomas Petazzoni > Sent: Sunday, May 5, 2024 8:40 AM > To: Brandon Maier via buildroot > Cc: Maier, Brandon L Collins ; Sergey Matyukevich > > Subject: [External] Re: [Buildroot] [PATCH 1/1] boot/arm-trusted-firmware: > enable verbose output > > On Fri, 12 Apr 2024 21:12:22 +0000 > Brandon Maier via buildroot wrote: > > > Signed-off-by: Brandon Maier > > --- > > boot/arm-trusted-firmware/arm-trusted-firmware.mk | 1 + > > 1 file changed, 1 insertion(+) > > I am confused as to why this patch is needed: for both Linux and > U-Boot, we don't need to do anything special, just doing "make V=1" at > the top-level, the V=1 gets passed down to Linux/U-Boot, and they > exhibit a verbose build. However, that doesn't work with > arm-trusted-firmware indeed, so I have applied your patch which makes > the build verbose also for arm-trusted-firmware. Still a bit unclear as > to why it doesn't work "by default". The Arm Trusted Firmware sets "V := 0". So, it only sees verbosity when passed as an argument. https://github.com/ARM-software/arm-trusted-firmware/blob/master/make_helpers/defaults.mk#L291-L292 > > Best regards, > > Thomas > -- > Thomas Petazzoni, CTO, Bootlin > Embedded Linux and Kernel engineering > https://urldefense.com/v3/__https://bootlin.com__;!!MvWE!HlXPBqUpYdxO9EBr > 6F_8rB0yD3ldsb16EmjTfAQs5jbjY99L7ck- > fAeJmn2djFv43hmR8m6SR0VDEhCl9Sam9LQt0ZSPgxQ$ From yann.morin.1998 at free.fr Mon May 6 18:32:01 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Mon, 6 May 2024 20:32:01 +0200 Subject: [Buildroot] Buildroot: incorrect permissons on /dev/shm In-Reply-To: References: <20240411152016.1185109-1-ben.hutchings@mind.be> Message-ID: Ben, All, On 2024-05-06 12:24 +0200, Ben Hutchings via buildroot spake thusly: > On Thu, Apr 11, 2024 at 05:31:02PM +0200, Ben Hutchings wrote: > > Buildroot is a Linux distribution and system builder for embedded > > systems. Starting in Buildroot 2011.08, its default /etc/fstab > > included an entry for /dev/shm with incorrect permissons (sticky bit > > not set). (CWE-276) > > > > Buildroot 2017.08 removed this entry for systems using systemd, and it > > has never been included for systems using OpenRC. So this only > > affects Buildroot-built systems that use sysvinit, and some older > > systems that use systemd. > [...] > > This has been assigned CVE-2024-34455. Thanks for th efeedback. The fix has already been committed, with commit 0b2967e158 (package/skeleton-init-sysv: Set sticky bit on /dev/shm) that I applied on 2024-04-11. Regards, Yann E. MORIN. -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From thomas.petazzoni at bootlin.com Mon May 6 18:52:21 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 20:52:21 +0200 Subject: [Buildroot] [External] Re: [PATCH 1/1] boot/arm-trusted-firmware: enable verbose output In-Reply-To: References: <20240412211222.26585-1-brandon.maier@collins.com> <20240505153959.14f8ef6b@windsurf> Message-ID: <20240506205221.3768e4f0@windsurf> On Mon, 6 May 2024 18:15:55 +0000 "Maier, Brandon L Collins" wrote: > > I am confused as to why this patch is needed: for both Linux and > > U-Boot, we don't need to do anything special, just doing "make V=1" at > > the top-level, the V=1 gets passed down to Linux/U-Boot, and they > > exhibit a verbose build. However, that doesn't work with > > arm-trusted-firmware indeed, so I have applied your patch which makes > > the build verbose also for arm-trusted-firmware. Still a bit unclear as > > to why it doesn't work "by default". > > The Arm Trusted Firmware sets "V := 0". So, it only sees verbosity when passed as an argument. > https://github.com/ARM-software/arm-trusted-firmware/blob/master/make_helpers/defaults.mk#L291-L292 Aaah, that explains it! I'm not sure how I missed this when looking at the TF-A Makefile (but I looked quickly). Thanks for following up on this! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From james.hilliard1 at gmail.com Mon May 6 18:52:30 2024 From: james.hilliard1 at gmail.com (James Hilliard) Date: Mon, 6 May 2024 12:52:30 -0600 Subject: [Buildroot] [PATCH 1/2] package/ell: bump to version 0.65 Message-ID: <20240506185231.3470040-1-james.hilliard1@gmail.com> Signed-off-by: James Hilliard --- package/ell/ell.hash | 2 +- package/ell/ell.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/ell/ell.hash b/package/ell/ell.hash index f5ded676c3..3adca75140 100644 --- a/package/ell/ell.hash +++ b/package/ell/ell.hash @@ -1,5 +1,5 @@ # From https://mirrors.edge.kernel.org/pub/linux/libs/ell/sha256sums.asc -sha256 7397c76996d7646b9917ebf016cd67586b10166295af2e0e18cdb5b8f6659965 ell-0.63.tar.xz +sha256 9ee7ac57b188d391cead705d3596a6d3240341786475149db297782a52269aa5 ell-0.65.tar.xz # License files sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING diff --git a/package/ell/ell.mk b/package/ell/ell.mk index f43dbdb5f7..a682635539 100644 --- a/package/ell/ell.mk +++ b/package/ell/ell.mk @@ -4,7 +4,7 @@ # ################################################################################ -ELL_VERSION = 0.63 +ELL_VERSION = 0.65 ELL_SOURCE = ell-$(ELL_VERSION).tar.xz ELL_SITE = $(BR2_KERNEL_MIRROR)/linux/libs/ell ELL_LICENSE = LGPL-2.1+ -- 2.34.1 From james.hilliard1 at gmail.com Mon May 6 18:52:31 2024 From: james.hilliard1 at gmail.com (James Hilliard) Date: Mon, 6 May 2024 12:52:31 -0600 Subject: [Buildroot] [PATCH 2/2] package/iwd: bump to version 2.17 In-Reply-To: <20240506185231.3470040-1-james.hilliard1@gmail.com> References: <20240506185231.3470040-1-james.hilliard1@gmail.com> Message-ID: <20240506185231.3470040-2-james.hilliard1@gmail.com> Signed-off-by: James Hilliard --- package/iwd/iwd.hash | 2 +- package/iwd/iwd.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/iwd/iwd.hash b/package/iwd/iwd.hash index 3f18146e13..9f88b2d6f1 100644 --- a/package/iwd/iwd.hash +++ b/package/iwd/iwd.hash @@ -1,5 +1,5 @@ # From https://mirrors.edge.kernel.org/pub/linux/network/wireless/sha256sums.asc -sha256 c1a82032e994861e794cf3b5a16d07ae1aa03a6674f716c73408ffeae2a233ba iwd-2.16.tar.xz +sha256 5901ab3fbb74bb75ec9adda35daeff595e4d238882fee7fc8c805b30ca79d943 iwd-2.17.tar.xz # License files sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING diff --git a/package/iwd/iwd.mk b/package/iwd/iwd.mk index af6b2f849a..c516bab471 100644 --- a/package/iwd/iwd.mk +++ b/package/iwd/iwd.mk @@ -4,7 +4,7 @@ # ################################################################################ -IWD_VERSION = 2.16 +IWD_VERSION = 2.17 IWD_SOURCE = iwd-$(IWD_VERSION).tar.xz IWD_SITE = $(BR2_KERNEL_MIRROR)/linux/network/wireless IWD_LICENSE = LGPL-2.1+ -- 2.34.1 From thomas.petazzoni at bootlin.com Mon May 6 18:58:38 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 20:58:38 +0200 Subject: [Buildroot] [git commit] configs/acmesystems_acqua_a5_*: add hashes for Linux/at91bootstrap3 Message-ID: <20240506185913.AA7C98676E@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=7f5cd99dd7ee82d4b977a04b0809a77f89c853c1 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master And enable BR2_DOWNLOAD_FORCE_CHECK_HASHES. Signed-off-by: Edgar Bonet Signed-off-by: Thomas Petazzoni --- .checkpackageignore | 2 -- board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash | 2 ++ board/acmesystems/acqua-a5/patches/linux-headers/linux-headers.hash | 1 + board/acmesystems/acqua-a5/patches/linux/linux.hash | 2 ++ configs/acmesystems_acqua_a5_256mb_defconfig | 2 ++ configs/acmesystems_acqua_a5_512mb_defconfig | 2 ++ 6 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.checkpackageignore b/.checkpackageignore index 870c286bcd..1135fa7175 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -117,8 +117,6 @@ boot/syslinux/0014-Fix-build-with-binutils-note-gnu-property-section.patch lib_p boot/syslinux/0016-Workaround-multiple-definition-of-symbol-errors.patch lib_patch.Upstream boot/syslinux/0017-Replace-builtin-strlen-that-appears-to-get-optimized.patch lib_patch.Upstream configs/aarch64_efi_defconfig lib_defconfig.ForceCheckHash -configs/acmesystems_acqua_a5_256mb_defconfig lib_defconfig.ForceCheckHash -configs/acmesystems_acqua_a5_512mb_defconfig lib_defconfig.ForceCheckHash configs/acmesystems_aria_g25_128mb_defconfig lib_defconfig.ForceCheckHash configs/acmesystems_aria_g25_256mb_defconfig lib_defconfig.ForceCheckHash configs/acmesystems_arietta_g25_128mb_defconfig lib_defconfig.ForceCheckHash diff --git a/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash b/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash new file mode 100644 index 0000000000..06a63d449d --- /dev/null +++ b/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 cdc04cca9e811043efdea43ad203d70d897e23a8bd46f01896ba45c8df50f6ec at91bootstrap3-v3.10.3-br1.tar.gz diff --git a/board/acmesystems/acqua-a5/patches/linux-headers/linux-headers.hash b/board/acmesystems/acqua-a5/patches/linux-headers/linux-headers.hash new file mode 120000 index 0000000000..5808d92afe --- /dev/null +++ b/board/acmesystems/acqua-a5/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/acmesystems/acqua-a5/patches/linux/linux.hash b/board/acmesystems/acqua-a5/patches/linux/linux.hash new file mode 100644 index 0000000000..6dbbeca57f --- /dev/null +++ b/board/acmesystems/acqua-a5/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 1fd7ec8c3d9c4e4b3a41d11e2c6d151e5fbf875dd08b3577f73afd6ee6674605 linux-6.6.12.tar.xz diff --git a/configs/acmesystems_acqua_a5_256mb_defconfig b/configs/acmesystems_acqua_a5_256mb_defconfig index ef57734194..359b356cb4 100644 --- a/configs/acmesystems_acqua_a5_256mb_defconfig +++ b/configs/acmesystems_acqua_a5_256mb_defconfig @@ -3,6 +3,8 @@ BR2_cortex_a5=y BR2_ARM_ENABLE_VFP=y BR2_ARM_INSTRUCTIONS_THUMB2=y BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/acmesystems/acqua-a5/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y BR2_SYSTEM_DHCP="eth0" BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/acmesystems/acqua-a5/genimage.cfg" diff --git a/configs/acmesystems_acqua_a5_512mb_defconfig b/configs/acmesystems_acqua_a5_512mb_defconfig index a69e2a2251..194de0b530 100644 --- a/configs/acmesystems_acqua_a5_512mb_defconfig +++ b/configs/acmesystems_acqua_a5_512mb_defconfig @@ -3,6 +3,8 @@ BR2_cortex_a5=y BR2_ARM_ENABLE_VFP=y BR2_ARM_INSTRUCTIONS_THUMB2=y BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/acmesystems/acqua-a5/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y BR2_SYSTEM_DHCP="eth0" BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/acmesystems/acqua-a5/genimage.cfg" From thomas.petazzoni at bootlin.com Mon May 6 18:58:41 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 20:58:41 +0200 Subject: [Buildroot] [git commit] configs/acmesystems_acqua_a5_*: bump to Linux 6.6.30 Message-ID: <20240506185913.BAF6E86773@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=74787fdd10543d482786fef582702bc24c1da626 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Edgar Bonet Signed-off-by: Thomas Petazzoni --- board/acmesystems/acqua-a5/patches/linux/linux.hash | 2 +- configs/acmesystems_acqua_a5_256mb_defconfig | 2 +- configs/acmesystems_acqua_a5_512mb_defconfig | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/board/acmesystems/acqua-a5/patches/linux/linux.hash b/board/acmesystems/acqua-a5/patches/linux/linux.hash index 6dbbeca57f..4b20a009a7 100644 --- a/board/acmesystems/acqua-a5/patches/linux/linux.hash +++ b/board/acmesystems/acqua-a5/patches/linux/linux.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 1fd7ec8c3d9c4e4b3a41d11e2c6d151e5fbf875dd08b3577f73afd6ee6674605 linux-6.6.12.tar.xz +sha256 b66a5b863b0f8669448b74ca83bd641a856f164b29956e539bbcb5fdeeab9cc6 linux-6.6.30.tar.xz diff --git a/configs/acmesystems_acqua_a5_256mb_defconfig b/configs/acmesystems_acqua_a5_256mb_defconfig index 359b356cb4..b102dde0ba 100644 --- a/configs/acmesystems_acqua_a5_256mb_defconfig +++ b/configs/acmesystems_acqua_a5_256mb_defconfig @@ -10,7 +10,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/acmesystems/acqua-a5/genimage.cfg" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.12" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.30" BR2_LINUX_KERNEL_DEFCONFIG="sama5" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="board/acmesystems/acqua-a5/at91-sama5d3_acqua.dts" diff --git a/configs/acmesystems_acqua_a5_512mb_defconfig b/configs/acmesystems_acqua_a5_512mb_defconfig index 194de0b530..da54eaf620 100644 --- a/configs/acmesystems_acqua_a5_512mb_defconfig +++ b/configs/acmesystems_acqua_a5_512mb_defconfig @@ -10,7 +10,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/acmesystems/acqua-a5/genimage.cfg" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.12" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.30" BR2_LINUX_KERNEL_DEFCONFIG="sama5" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="board/acmesystems/acqua-a5/at91-sama5d3_acqua.dts" From thomas.petazzoni at bootlin.com Mon May 6 18:59:38 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 20:59:38 +0200 Subject: [Buildroot] [git commit] package/python-pydal/Config.in: bool argument needs quotation marks Message-ID: <20240506190223.8909C8679D@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=9f8d3f47d7caa395aa7c528891455389b0f0109e branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fixes the following error/warnings with kconfig from linux-6.9-rc5: package/python-pydal/Config.in:2: syntax error package/python-pydal/Config.in:2: invalid statement package/python-pydal/Config.in:3: invalid statement [...] Signed-off-by: Peter Seiderer Signed-off-by: Thomas Petazzoni --- package/python-pydal/Config.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/python-pydal/Config.in b/package/python-pydal/Config.in index f1c97f91a0..204b47a09a 100644 --- a/package/python-pydal/Config.in +++ b/package/python-pydal/Config.in @@ -1,5 +1,5 @@ config BR2_PACKAGE_PYTHON_PYDAL - bool python-pydal + bool "python-pydal" help pyDAL is a pure Python Database Abstraction Layer. It dynamically generates the SQL in real time using the From thomas.petazzoni at bootlin.com Mon May 6 18:59:30 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 20:59:30 +0200 Subject: [Buildroot] [git commit] package/cmocka/Config.in: bool argument needs quotation marks Message-ID: <20240506190223.7094B8679E@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=4abda655e6148cc3607101cb24933706fb2b6801 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fixes the following error/warnings with kconfig from linux-6.9-rc5: package/cmocka/Config.in:2: syntax error package/cmocka/Config.in:2: invalid statement package/cmocka/Config.in:3: invalid statement package/cmocka/Config.in:4: invalid statement [...] Signed-off-by: Peter Seiderer Signed-off-by: Thomas Petazzoni --- package/cmocka/Config.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/cmocka/Config.in b/package/cmocka/Config.in index cf49d0f6be..80e29778d3 100644 --- a/package/cmocka/Config.in +++ b/package/cmocka/Config.in @@ -1,5 +1,5 @@ config BR2_PACKAGE_CMOCKA - bool cmocka + bool "cmocka" depends on !BR2_STATIC_LIBS help cmocka is an elegant unit testing framework for C with support From thomas.petazzoni at bootlin.com Mon May 6 18:59:26 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 20:59:26 +0200 Subject: [Buildroot] [git commit] boot/barebox/Config.in: source argument needs quotation marks Message-ID: <20240506190223.64E468679D@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=e86aec1663357a9f1f7de56129dfd1ab1c5d2cda branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fixes the following error/warnings with kconfig from linux-6.9-rc5: boot/barebox/Config.in:79: syntax error boot/barebox/Config.in:79:warning: ignoring unsupported character '/' boot/barebox/Config.in:79:warning: ignoring unsupported character '/' boot/barebox/Config.in:79:warning: ignoring unsupported character '/' boot/barebox/Config.in:79:warning: ignoring unsupported character '.' boot/barebox/Config.in:79: invalid statement boot/barebox/Config.in:93: syntax error boot/barebox/Config.in:93:warning: ignoring unsupported character '/' boot/barebox/Config.in:93:warning: ignoring unsupported character '/' boot/barebox/Config.in:93:warning: ignoring unsupported character '/' boot/barebox/Config.in:93:warning: ignoring unsupported character '.' boot/barebox/Config.in:93: invalid statement Signed-off-by: Peter Seiderer Signed-off-by: Thomas Petazzoni --- boot/barebox/Config.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/boot/barebox/Config.in b/boot/barebox/Config.in index dba4a1a8d6..0bd3386795 100644 --- a/boot/barebox/Config.in +++ b/boot/barebox/Config.in @@ -76,7 +76,7 @@ config BR2_TARGET_BAREBOX_CUSTOM_GIT_VERSION endif -source boot/barebox/barebox/Config.in +source "boot/barebox/barebox/Config.in" menuconfig BR2_TARGET_BAREBOX_AUX bool "Build barebox with an auxiliary config" @@ -90,7 +90,7 @@ menuconfig BR2_TARGET_BAREBOX_AUX if BR2_TARGET_BAREBOX_AUX -source boot/barebox/barebox-aux/Config.in +source "boot/barebox/barebox-aux/Config.in" endif From thomas.petazzoni at bootlin.com Mon May 6 18:59:34 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 20:59:34 +0200 Subject: [Buildroot] [git commit] package/dovecot/Config.in: source argument needs quotation marks Message-ID: <20240506190223.7CA768679F@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=ff70f9ee4c7ea08471ce6aca948f5ae83e4e011d branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fixes the following error/warnings with kconfig from linux-6.9-rc5: package/dovecot/Config.in:36: syntax error package/dovecot/Config.in:36:warning: ignoring unsupported character '/' package/dovecot/Config.in:36:warning: ignoring unsupported character '/' package/dovecot/Config.in:36:warning: ignoring unsupported character '.' package/dovecot/Config.in:36: invalid statement Signed-off-by: Peter Seiderer Signed-off-by: Thomas Petazzoni --- package/dovecot/Config.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/dovecot/Config.in b/package/dovecot/Config.in index c94421526f..034dcc175f 100644 --- a/package/dovecot/Config.in +++ b/package/dovecot/Config.in @@ -33,7 +33,7 @@ config BR2_PACKAGE_DOVECOT_SQLITE help Enable SQLite support. -source package/dovecot-pigeonhole/Config.in +source "package/dovecot-pigeonhole/Config.in" endif # BR2_PACKAGE_DOVECOT From thomas.petazzoni at bootlin.com Mon May 6 18:59:48 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 20:59:48 +0200 Subject: [Buildroot] [git commit] package/x11r7/Config.in: source argument needs quotation marks Message-ID: <20240506190223.9C14F8679E@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=a214c4568b2b93984be39ff8d3f9f4acb6af898c branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fixes the following error/warnings with kconfig from linux-6.9-rc5: package/x11r7/Config.in:14: syntax error package/x11r7/Config.in:14:warning: ignoring unsupported character '/' package/x11r7/Config.in:14:warning: ignoring unsupported character '/' package/x11r7/Config.in:14:warning: ignoring unsupported character '/' package/x11r7/Config.in:14:warning: ignoring unsupported character '.' package/x11r7/Config.in:14: invalid statement [...] Signed-off-by: Peter Seiderer Signed-off-by: Thomas Petazzoni --- package/x11r7/Config.in | 420 ++++++++++++++++++++++++------------------------ 1 file changed, 210 insertions(+), 210 deletions(-) diff --git a/package/x11r7/Config.in b/package/x11r7/Config.in index b91f97bb34..0002dfe598 100644 --- a/package/x11r7/Config.in +++ b/package/x11r7/Config.in @@ -11,232 +11,232 @@ menuconfig BR2_PACKAGE_XORG7 if BR2_PACKAGE_XORG7 menu "X11R7 Servers" - source package/x11r7/xserver_xorg-server/Config.in - source package/x11r7/xwayland/Config.in + source "package/x11r7/xserver_xorg-server/Config.in" + source "package/x11r7/xwayland/Config.in" endmenu menu "X11R7 Libraries" - source package/x11r7/libxcb/Config.in - source package/x11r7/xcb-util/Config.in - source package/x11r7/xcb-util-cursor/Config.in - source package/x11r7/xcb-util-image/Config.in - source package/x11r7/xcb-util-keysyms/Config.in - source package/x11r7/xcb-util-renderutil/Config.in - source package/x11r7/xcb-util-wm/Config.in - source package/x11r7/xlib_libFS/Config.in - source package/x11r7/xlib_libICE/Config.in - source package/x11r7/xlib_libSM/Config.in - source package/x11r7/xlib_libX11/Config.in - source package/x11r7/xlib_libXScrnSaver/Config.in - source package/x11r7/xlib_libXau/Config.in - source package/x11r7/xlib_libXaw/Config.in - source package/x11r7/xlib_libXcomposite/Config.in - source package/x11r7/xlib_libXcursor/Config.in - source package/x11r7/xlib_libXdamage/Config.in - source package/x11r7/xlib_libXdmcp/Config.in - source package/x11r7/xlib_libXext/Config.in - source package/x11r7/xlib_libXfixes/Config.in - source package/x11r7/xlib_libXfont/Config.in - source package/x11r7/xlib_libXfont2/Config.in - source package/x11r7/xlib_libXft/Config.in - source package/x11r7/xlib_libXi/Config.in - source package/x11r7/xlib_libXinerama/Config.in - source package/x11r7/xlib_libXmu/Config.in - source package/x11r7/xlib_libXpm/Config.in - source package/x11r7/xlib_libXpresent/Config.in - source package/x11r7/xlib_libXrandr/Config.in - source package/x11r7/xlib_libXrender/Config.in - source package/x11r7/xlib_libXres/Config.in - source package/x11r7/xlib_libXt/Config.in - source package/x11r7/xlib_libXtst/Config.in - source package/x11r7/xlib_libXv/Config.in - source package/x11r7/xlib_libXvMC/Config.in - source package/x11r7/xlib_libXxf86dga/Config.in - source package/x11r7/xlib_libXxf86vm/Config.in - source package/x11r7/xlib_libdmx/Config.in - source package/x11r7/xlib_libfontenc/Config.in - source package/x11r7/xlib_libxcvt/Config.in - source package/x11r7/xlib_libxkbfile/Config.in - source package/x11r7/xlib_libxshmfence/Config.in - source package/x11r7/xlib_xtrans/Config.in + source "package/x11r7/libxcb/Config.in" + source "package/x11r7/xcb-util/Config.in" + source "package/x11r7/xcb-util-cursor/Config.in" + source "package/x11r7/xcb-util-image/Config.in" + source "package/x11r7/xcb-util-keysyms/Config.in" + source "package/x11r7/xcb-util-renderutil/Config.in" + source "package/x11r7/xcb-util-wm/Config.in" + source "package/x11r7/xlib_libFS/Config.in" + source "package/x11r7/xlib_libICE/Config.in" + source "package/x11r7/xlib_libSM/Config.in" + source "package/x11r7/xlib_libX11/Config.in" + source "package/x11r7/xlib_libXScrnSaver/Config.in" + source "package/x11r7/xlib_libXau/Config.in" + source "package/x11r7/xlib_libXaw/Config.in" + source "package/x11r7/xlib_libXcomposite/Config.in" + source "package/x11r7/xlib_libXcursor/Config.in" + source "package/x11r7/xlib_libXdamage/Config.in" + source "package/x11r7/xlib_libXdmcp/Config.in" + source "package/x11r7/xlib_libXext/Config.in" + source "package/x11r7/xlib_libXfixes/Config.in" + source "package/x11r7/xlib_libXfont/Config.in" + source "package/x11r7/xlib_libXfont2/Config.in" + source "package/x11r7/xlib_libXft/Config.in" + source "package/x11r7/xlib_libXi/Config.in" + source "package/x11r7/xlib_libXinerama/Config.in" + source "package/x11r7/xlib_libXmu/Config.in" + source "package/x11r7/xlib_libXpm/Config.in" + source "package/x11r7/xlib_libXpresent/Config.in" + source "package/x11r7/xlib_libXrandr/Config.in" + source "package/x11r7/xlib_libXrender/Config.in" + source "package/x11r7/xlib_libXres/Config.in" + source "package/x11r7/xlib_libXt/Config.in" + source "package/x11r7/xlib_libXtst/Config.in" + source "package/x11r7/xlib_libXv/Config.in" + source "package/x11r7/xlib_libXvMC/Config.in" + source "package/x11r7/xlib_libXxf86dga/Config.in" + source "package/x11r7/xlib_libXxf86vm/Config.in" + source "package/x11r7/xlib_libdmx/Config.in" + source "package/x11r7/xlib_libfontenc/Config.in" + source "package/x11r7/xlib_libxcvt/Config.in" + source "package/x11r7/xlib_libxkbfile/Config.in" + source "package/x11r7/xlib_libxshmfence/Config.in" + source "package/x11r7/xlib_xtrans/Config.in" endmenu menu "X11R7 Applications" - source package/x11r7/xapp_appres/Config.in - source package/x11r7/xapp_bdftopcf/Config.in - source package/x11r7/xapp_beforelight/Config.in - source package/x11r7/xapp_bitmap/Config.in - source package/x11r7/xapp_editres/Config.in - source package/x11r7/xapp_fonttosfnt/Config.in - source package/x11r7/xapp_fslsfonts/Config.in - source package/x11r7/xapp_fstobdf/Config.in - source package/x11r7/xapp_iceauth/Config.in - source package/x11r7/xapp_ico/Config.in - source package/x11r7/xapp_listres/Config.in - source package/x11r7/xapp_luit/Config.in - source package/x11r7/xapp_mkfontscale/Config.in - source package/x11r7/xapp_oclock/Config.in - source package/x11r7/xapp_rgb/Config.in - source package/x11r7/xapp_rstart/Config.in - source package/x11r7/xapp_scripts/Config.in - source package/x11r7/xapp_sessreg/Config.in - source package/x11r7/xapp_setxkbmap/Config.in - source package/x11r7/xapp_showfont/Config.in - source package/x11r7/xapp_smproxy/Config.in - source package/x11r7/xapp_twm/Config.in - source package/x11r7/xapp_viewres/Config.in - source package/x11r7/xapp_x11perf/Config.in - source package/x11r7/xapp_xauth/Config.in - source package/x11r7/xapp_xbacklight/Config.in - source package/x11r7/xapp_xbiff/Config.in - source package/x11r7/xapp_xcalc/Config.in - source package/x11r7/xapp_xclipboard/Config.in - source package/x11r7/xapp_xclock/Config.in - source package/x11r7/xapp_xcmsdb/Config.in - source package/x11r7/xapp_xcompmgr/Config.in - source package/x11r7/xapp_xconsole/Config.in - source package/x11r7/xapp_xcursorgen/Config.in - source package/x11r7/xapp_xdbedizzy/Config.in - source package/x11r7/xapp_xditview/Config.in - source package/x11r7/xapp_xdm/Config.in - source package/x11r7/xapp_xdpyinfo/Config.in - source package/x11r7/xapp_xdriinfo/Config.in - source package/x11r7/xapp_xedit/Config.in - source package/x11r7/xapp_xev/Config.in - source package/x11r7/xapp_xeyes/Config.in - source package/x11r7/xapp_xf86dga/Config.in - source package/x11r7/xapp_xfd/Config.in - source package/x11r7/xapp_xfindproxy/Config.in - source package/x11r7/xapp_xfontsel/Config.in - source package/x11r7/xapp_xfs/Config.in - source package/x11r7/xapp_xfsinfo/Config.in - source package/x11r7/xapp_xgamma/Config.in - source package/x11r7/xapp_xgc/Config.in - source package/x11r7/xapp_xhost/Config.in - source package/x11r7/xapp_xinit/Config.in - source package/x11r7/xapp_xinput/Config.in - source package/x11r7/xapp_xinput-calibrator/Config.in - source package/x11r7/xapp_xkbcomp/Config.in - source package/x11r7/xapp_xkbevd/Config.in - source package/x11r7/xapp_xkbprint/Config.in - source package/x11r7/xapp_xkbutils/Config.in - source package/x11r7/xapp_xkill/Config.in - source package/x11r7/xapp_xload/Config.in - source package/x11r7/xapp_xlogo/Config.in - source package/x11r7/xapp_xlsatoms/Config.in - source package/x11r7/xapp_xlsclients/Config.in - source package/x11r7/xapp_xlsfonts/Config.in - source package/x11r7/xapp_xmag/Config.in - source package/x11r7/xapp_xman/Config.in - source package/x11r7/xapp_xmessage/Config.in - source package/x11r7/xapp_xmh/Config.in - source package/x11r7/xapp_xmodmap/Config.in - source package/x11r7/xapp_xmore/Config.in - source package/x11r7/xapp_xpr/Config.in - source package/x11r7/xapp_xprop/Config.in - source package/x11r7/xapp_xrandr/Config.in - source package/x11r7/xapp_xrdb/Config.in - source package/x11r7/xapp_xrefresh/Config.in - source package/x11r7/xapp_xset/Config.in - source package/x11r7/xapp_xsetmode/Config.in - source package/x11r7/xapp_xsetpointer/Config.in - source package/x11r7/xapp_xsetroot/Config.in - source package/x11r7/xapp_xsm/Config.in - source package/x11r7/xapp_xstdcmap/Config.in - source package/x11r7/xapp_xvidtune/Config.in - source package/x11r7/xapp_xvinfo/Config.in - source package/x11r7/xapp_xwd/Config.in - source package/x11r7/xapp_xwininfo/Config.in - source package/x11r7/xapp_xwud/Config.in + source "package/x11r7/xapp_appres/Config.in" + source "package/x11r7/xapp_bdftopcf/Config.in" + source "package/x11r7/xapp_beforelight/Config.in" + source "package/x11r7/xapp_bitmap/Config.in" + source "package/x11r7/xapp_editres/Config.in" + source "package/x11r7/xapp_fonttosfnt/Config.in" + source "package/x11r7/xapp_fslsfonts/Config.in" + source "package/x11r7/xapp_fstobdf/Config.in" + source "package/x11r7/xapp_iceauth/Config.in" + source "package/x11r7/xapp_ico/Config.in" + source "package/x11r7/xapp_listres/Config.in" + source "package/x11r7/xapp_luit/Config.in" + source "package/x11r7/xapp_mkfontscale/Config.in" + source "package/x11r7/xapp_oclock/Config.in" + source "package/x11r7/xapp_rgb/Config.in" + source "package/x11r7/xapp_rstart/Config.in" + source "package/x11r7/xapp_scripts/Config.in" + source "package/x11r7/xapp_sessreg/Config.in" + source "package/x11r7/xapp_setxkbmap/Config.in" + source "package/x11r7/xapp_showfont/Config.in" + source "package/x11r7/xapp_smproxy/Config.in" + source "package/x11r7/xapp_twm/Config.in" + source "package/x11r7/xapp_viewres/Config.in" + source "package/x11r7/xapp_x11perf/Config.in" + source "package/x11r7/xapp_xauth/Config.in" + source "package/x11r7/xapp_xbacklight/Config.in" + source "package/x11r7/xapp_xbiff/Config.in" + source "package/x11r7/xapp_xcalc/Config.in" + source "package/x11r7/xapp_xclipboard/Config.in" + source "package/x11r7/xapp_xclock/Config.in" + source "package/x11r7/xapp_xcmsdb/Config.in" + source "package/x11r7/xapp_xcompmgr/Config.in" + source "package/x11r7/xapp_xconsole/Config.in" + source "package/x11r7/xapp_xcursorgen/Config.in" + source "package/x11r7/xapp_xdbedizzy/Config.in" + source "package/x11r7/xapp_xditview/Config.in" + source "package/x11r7/xapp_xdm/Config.in" + source "package/x11r7/xapp_xdpyinfo/Config.in" + source "package/x11r7/xapp_xdriinfo/Config.in" + source "package/x11r7/xapp_xedit/Config.in" + source "package/x11r7/xapp_xev/Config.in" + source "package/x11r7/xapp_xeyes/Config.in" + source "package/x11r7/xapp_xf86dga/Config.in" + source "package/x11r7/xapp_xfd/Config.in" + source "package/x11r7/xapp_xfindproxy/Config.in" + source "package/x11r7/xapp_xfontsel/Config.in" + source "package/x11r7/xapp_xfs/Config.in" + source "package/x11r7/xapp_xfsinfo/Config.in" + source "package/x11r7/xapp_xgamma/Config.in" + source "package/x11r7/xapp_xgc/Config.in" + source "package/x11r7/xapp_xhost/Config.in" + source "package/x11r7/xapp_xinit/Config.in" + source "package/x11r7/xapp_xinput/Config.in" + source "package/x11r7/xapp_xinput-calibrator/Config.in" + source "package/x11r7/xapp_xkbcomp/Config.in" + source "package/x11r7/xapp_xkbevd/Config.in" + source "package/x11r7/xapp_xkbprint/Config.in" + source "package/x11r7/xapp_xkbutils/Config.in" + source "package/x11r7/xapp_xkill/Config.in" + source "package/x11r7/xapp_xload/Config.in" + source "package/x11r7/xapp_xlogo/Config.in" + source "package/x11r7/xapp_xlsatoms/Config.in" + source "package/x11r7/xapp_xlsclients/Config.in" + source "package/x11r7/xapp_xlsfonts/Config.in" + source "package/x11r7/xapp_xmag/Config.in" + source "package/x11r7/xapp_xman/Config.in" + source "package/x11r7/xapp_xmessage/Config.in" + source "package/x11r7/xapp_xmh/Config.in" + source "package/x11r7/xapp_xmodmap/Config.in" + source "package/x11r7/xapp_xmore/Config.in" + source "package/x11r7/xapp_xpr/Config.in" + source "package/x11r7/xapp_xprop/Config.in" + source "package/x11r7/xapp_xrandr/Config.in" + source "package/x11r7/xapp_xrdb/Config.in" + source "package/x11r7/xapp_xrefresh/Config.in" + source "package/x11r7/xapp_xset/Config.in" + source "package/x11r7/xapp_xsetmode/Config.in" + source "package/x11r7/xapp_xsetpointer/Config.in" + source "package/x11r7/xapp_xsetroot/Config.in" + source "package/x11r7/xapp_xsm/Config.in" + source "package/x11r7/xapp_xstdcmap/Config.in" + source "package/x11r7/xapp_xvidtune/Config.in" + source "package/x11r7/xapp_xvinfo/Config.in" + source "package/x11r7/xapp_xwd/Config.in" + source "package/x11r7/xapp_xwininfo/Config.in" + source "package/x11r7/xapp_xwud/Config.in" endmenu if BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR menu "X11R7 Drivers" - source package/x11r7/xdriver_xf86-input-evdev/Config.in - source package/x11r7/xdriver_xf86-input-joystick/Config.in - source package/x11r7/xdriver_xf86-input-libinput/Config.in - source package/x11r7/xdriver_xf86-input-mouse/Config.in - source package/x11r7/xdriver_xf86-input-synaptics/Config.in - source package/x11r7/xdriver_xf86-input-tslib/Config.in - source package/x11r7/xdriver_xf86-input-vmmouse/Config.in - source package/x11r7/xdriver_xf86-video-amdgpu/Config.in - source package/x11r7/xdriver_xf86-video-ark/Config.in - source package/x11r7/xdriver_xf86-video-ast/Config.in - source package/x11r7/xdriver_xf86-video-ati/Config.in - source package/x11r7/xdriver_xf86-video-cirrus/Config.in - source package/x11r7/xdriver_xf86-video-dummy/Config.in - source package/x11r7/xdriver_xf86-video-fbdev/Config.in - source package/x11r7/xdriver_xf86-video-fbturbo/Config.in - source package/x11r7/xdriver_xf86-video-geode/Config.in - source package/x11r7/xdriver_xf86-video-i128/Config.in - source package/x11r7/xdriver_xf86-video-imx/Config.in - source package/x11r7/xdriver_xf86-video-intel/Config.in - source package/x11r7/xdriver_xf86-video-mach64/Config.in - source package/x11r7/xdriver_xf86-video-mga/Config.in - source package/x11r7/xdriver_xf86-video-neomagic/Config.in - source package/x11r7/xdriver_xf86-video-nouveau/Config.in - source package/x11r7/xdriver_xf86-video-nv/Config.in - source package/x11r7/xdriver_xf86-video-openchrome/Config.in - source package/x11r7/xdriver_xf86-video-qxl/Config.in - source package/x11r7/xdriver_xf86-video-r128/Config.in - source package/x11r7/xdriver_xf86-video-savage/Config.in - source package/x11r7/xdriver_xf86-video-siliconmotion/Config.in - source package/x11r7/xdriver_xf86-video-sis/Config.in - source package/x11r7/xdriver_xf86-video-tdfx/Config.in - source package/x11r7/xdriver_xf86-video-trident/Config.in - source package/x11r7/xdriver_xf86-video-vesa/Config.in - source package/x11r7/xdriver_xf86-video-vmware/Config.in - source package/x11r7/xdriver_xf86-video-voodoo/Config.in + source "package/x11r7/xdriver_xf86-input-evdev/Config.in" + source "package/x11r7/xdriver_xf86-input-joystick/Config.in" + source "package/x11r7/xdriver_xf86-input-libinput/Config.in" + source "package/x11r7/xdriver_xf86-input-mouse/Config.in" + source "package/x11r7/xdriver_xf86-input-synaptics/Config.in" + source "package/x11r7/xdriver_xf86-input-tslib/Config.in" + source "package/x11r7/xdriver_xf86-input-vmmouse/Config.in" + source "package/x11r7/xdriver_xf86-video-amdgpu/Config.in" + source "package/x11r7/xdriver_xf86-video-ark/Config.in" + source "package/x11r7/xdriver_xf86-video-ast/Config.in" + source "package/x11r7/xdriver_xf86-video-ati/Config.in" + source "package/x11r7/xdriver_xf86-video-cirrus/Config.in" + source "package/x11r7/xdriver_xf86-video-dummy/Config.in" + source "package/x11r7/xdriver_xf86-video-fbdev/Config.in" + source "package/x11r7/xdriver_xf86-video-fbturbo/Config.in" + source "package/x11r7/xdriver_xf86-video-geode/Config.in" + source "package/x11r7/xdriver_xf86-video-i128/Config.in" + source "package/x11r7/xdriver_xf86-video-imx/Config.in" + source "package/x11r7/xdriver_xf86-video-intel/Config.in" + source "package/x11r7/xdriver_xf86-video-mach64/Config.in" + source "package/x11r7/xdriver_xf86-video-mga/Config.in" + source "package/x11r7/xdriver_xf86-video-neomagic/Config.in" + source "package/x11r7/xdriver_xf86-video-nouveau/Config.in" + source "package/x11r7/xdriver_xf86-video-nv/Config.in" + source "package/x11r7/xdriver_xf86-video-openchrome/Config.in" + source "package/x11r7/xdriver_xf86-video-qxl/Config.in" + source "package/x11r7/xdriver_xf86-video-r128/Config.in" + source "package/x11r7/xdriver_xf86-video-savage/Config.in" + source "package/x11r7/xdriver_xf86-video-siliconmotion/Config.in" + source "package/x11r7/xdriver_xf86-video-sis/Config.in" + source "package/x11r7/xdriver_xf86-video-tdfx/Config.in" + source "package/x11r7/xdriver_xf86-video-trident/Config.in" + source "package/x11r7/xdriver_xf86-video-vesa/Config.in" + source "package/x11r7/xdriver_xf86-video-vmware/Config.in" + source "package/x11r7/xdriver_xf86-video-voodoo/Config.in" endmenu endif menu "X11R7 Fonts" - source package/x11r7/xfont_font-util/Config.in - source package/x11r7/xfont_encodings/Config.in - source package/x11r7/xfont_font-adobe-100dpi/Config.in - source package/x11r7/xfont_font-adobe-75dpi/Config.in - source package/x11r7/xfont_font-adobe-utopia-100dpi/Config.in - source package/x11r7/xfont_font-adobe-utopia-75dpi/Config.in - source package/x11r7/xfont_font-adobe-utopia-type1/Config.in - source package/x11r7/xfont_font-alias/Config.in - source package/x11r7/xfont_font-arabic-misc/Config.in - source package/x11r7/xfont_font-bh-100dpi/Config.in - source package/x11r7/xfont_font-bh-75dpi/Config.in - source package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/Config.in - source package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/Config.in - source package/x11r7/xfont_font-bh-ttf/Config.in - source package/x11r7/xfont_font-bh-type1/Config.in - source package/x11r7/xfont_font-bitstream-100dpi/Config.in - source package/x11r7/xfont_font-bitstream-75dpi/Config.in - source package/x11r7/xfont_font-bitstream-type1/Config.in - source package/x11r7/xfont_font-cronyx-cyrillic/Config.in - source package/x11r7/xfont_font-cursor-misc/Config.in - source package/x11r7/xfont_font-daewoo-misc/Config.in - source package/x11r7/xfont_font-dec-misc/Config.in - source package/x11r7/xfont_font-ibm-type1/Config.in - source package/x11r7/xfont_font-isas-misc/Config.in - source package/x11r7/xfont_font-jis-misc/Config.in - source package/x11r7/xfont_font-micro-misc/Config.in - source package/x11r7/xfont_font-misc-cyrillic/Config.in - source package/x11r7/xfont_font-misc-ethiopic/Config.in - source package/x11r7/xfont_font-misc-meltho/Config.in - source package/x11r7/xfont_font-misc-misc/Config.in - source package/x11r7/xfont_font-mutt-misc/Config.in - source package/x11r7/xfont_font-schumacher-misc/Config.in - source package/x11r7/xfont_font-screen-cyrillic/Config.in - source package/x11r7/xfont_font-sony-misc/Config.in - source package/x11r7/xfont_font-sun-misc/Config.in - source package/x11r7/xfont_font-winitzki-cyrillic/Config.in - source package/x11r7/xfont_font-xfree86-type1/Config.in + source "package/x11r7/xfont_font-util/Config.in" + source "package/x11r7/xfont_encodings/Config.in" + source "package/x11r7/xfont_font-adobe-100dpi/Config.in" + source "package/x11r7/xfont_font-adobe-75dpi/Config.in" + source "package/x11r7/xfont_font-adobe-utopia-100dpi/Config.in" + source "package/x11r7/xfont_font-adobe-utopia-75dpi/Config.in" + source "package/x11r7/xfont_font-adobe-utopia-type1/Config.in" + source "package/x11r7/xfont_font-alias/Config.in" + source "package/x11r7/xfont_font-arabic-misc/Config.in" + source "package/x11r7/xfont_font-bh-100dpi/Config.in" + source "package/x11r7/xfont_font-bh-75dpi/Config.in" + source "package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/Config.in" + source "package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/Config.in" + source "package/x11r7/xfont_font-bh-ttf/Config.in" + source "package/x11r7/xfont_font-bh-type1/Config.in" + source "package/x11r7/xfont_font-bitstream-100dpi/Config.in" + source "package/x11r7/xfont_font-bitstream-75dpi/Config.in" + source "package/x11r7/xfont_font-bitstream-type1/Config.in" + source "package/x11r7/xfont_font-cronyx-cyrillic/Config.in" + source "package/x11r7/xfont_font-cursor-misc/Config.in" + source "package/x11r7/xfont_font-daewoo-misc/Config.in" + source "package/x11r7/xfont_font-dec-misc/Config.in" + source "package/x11r7/xfont_font-ibm-type1/Config.in" + source "package/x11r7/xfont_font-isas-misc/Config.in" + source "package/x11r7/xfont_font-jis-misc/Config.in" + source "package/x11r7/xfont_font-micro-misc/Config.in" + source "package/x11r7/xfont_font-misc-cyrillic/Config.in" + source "package/x11r7/xfont_font-misc-ethiopic/Config.in" + source "package/x11r7/xfont_font-misc-meltho/Config.in" + source "package/x11r7/xfont_font-misc-misc/Config.in" + source "package/x11r7/xfont_font-mutt-misc/Config.in" + source "package/x11r7/xfont_font-schumacher-misc/Config.in" + source "package/x11r7/xfont_font-screen-cyrillic/Config.in" + source "package/x11r7/xfont_font-sony-misc/Config.in" + source "package/x11r7/xfont_font-sun-misc/Config.in" + source "package/x11r7/xfont_font-winitzki-cyrillic/Config.in" + source "package/x11r7/xfont_font-xfree86-type1/Config.in" endmenu menu "X11R7 X protocols" - source package/x11r7/xcb-proto/Config.in - source package/x11r7/xorgproto/Config.in + source "package/x11r7/xcb-proto/Config.in" + source "package/x11r7/xorgproto/Config.in" endmenu menu "X11R7 Utilities" - source package/x11r7/xutil_makedepend/Config.in - source package/x11r7/mcookie/Config.in + source "package/x11r7/xutil_makedepend/Config.in" + source "package/x11r7/mcookie/Config.in" endmenu menu "X11R7 Other data" - source package/x11r7/xdata_xbitmaps/Config.in - source package/x11r7/xdata_xcursor-themes/Config.in - source package/x11r7/xcursor-transparent-theme/Config.in + source "package/x11r7/xdata_xbitmaps/Config.in" + source "package/x11r7/xdata_xcursor-themes/Config.in" + source "package/x11r7/xcursor-transparent-theme/Config.in" endmenu endif From thomas.petazzoni at bootlin.com Mon May 6 19:02:48 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:02:48 +0200 Subject: [Buildroot] [PATCH 1/2] configs/acmesystems_acqua_a5_*: add hashes for Linux/at91bootstrap3 In-Reply-To: <51910310-86f7-43cf-8288-43c48c6ccd90@grenoble.cnrs.fr> References: <51910310-86f7-43cf-8288-43c48c6ccd90@grenoble.cnrs.fr> Message-ID: <20240506210248.5edde96a@windsurf> On Mon, 6 May 2024 17:22:49 +0200 Edgar Bonet wrote: > And enable BR2_DOWNLOAD_FORCE_CHECK_HASHES. > > Signed-off-by: Edgar Bonet > --- > .checkpackageignore | 2 -- > .../acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash | 2 ++ > .../acqua-a5/patches/linux-headers/linux-headers.hash | 1 + > board/acmesystems/acqua-a5/patches/linux/linux.hash | 2 ++ > configs/acmesystems_acqua_a5_256mb_defconfig | 2 ++ > configs/acmesystems_acqua_a5_512mb_defconfig | 2 ++ > 6 files changed, 9 insertions(+), 2 deletions(-) > create mode 100644 board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash > create mode 120000 board/acmesystems/acqua-a5/patches/linux-headers/linux-headers.hash > create mode 100644 board/acmesystems/acqua-a5/patches/linux/linux.hash Both applied, thanks! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From ps.report at gmx.net Mon May 6 14:45:49 2024 From: ps.report at gmx.net (Peter Seiderer) Date: Mon, 6 May 2024 16:45:49 +0200 Subject: [Buildroot] [PATCH v1 6/8] support/kconfig: bump to linux-v6.9-rc5 version In-Reply-To: <20240506144555.31709-1-ps.report@gmx.net> References: <20240506144555.31709-1-ps.report@gmx.net> Message-ID: <20240506144555.31709-7-ps.report@gmx.net> - update RAEDME.buildroot (add copy step for kconfig.new, update copy steps for *_shipped files - rebased 01-kconfig-kernel-to-buildroot.patch - rebased 06-br-build-system-integration.patch - updated 10-br-build-system.patch - removed 11-use-mktemp-for-lxdialog.patch (no longer applicable) - rebased 12-fix-glade-file-path.patch - rebased 14-support-out-of-tree-config.patch - rebased 16-fix-space-to-de-select-options.patch - removed 17-backport-kecho.patch (use complete Kbuild.include instead of backporting single parts) - rebased 18-merge-config.sh-create-temporary-files-in-tmp.patch - rebased 19-merge_config.sh-add-br2-external-support.patch - removed 20-merge_config.sh-Allow-to-define-config-prefix.patch (already upstream included) - removed 21-Avoid-false-positive-matches-from-comment-lines.patch (already upstream included) - removed 22-kconfig-lxdialog-fix-check-with-GCC14.patch (no longer applicable) - new 23-Revert-kconfig-allow-only-config-comment-and-if-insi.patch (revert to re-enable source statement inside of choice, as suggested by Yann E. MORIN, see [1]) [1] https://lore.kernel.org/buildroot/Zhdu7zT3FZl7sk1q at landeda/ Signed-off-by: Peter Seiderer --- support/kconfig/Kbuild.include | 273 ++ support/kconfig/Makefile | 375 +- support/kconfig/Makefile.br | 10 +- support/kconfig/POTFILES.in | 12 - support/kconfig/README.buildroot | 9 +- support/kconfig/array_size.h | 11 + support/kconfig/check.sh | 14 - support/kconfig/conf.c | 562 ++- support/kconfig/confdata.c | 1358 +++--- support/kconfig/expr.c | 29 +- support/kconfig/expr.h | 49 +- support/kconfig/foo.h | 12 - support/kconfig/gconf-cfg.sh | 33 + support/kconfig/gconf.c | 100 +- support/kconfig/hashtable.h | 48 + support/kconfig/images.c | 34 +- support/kconfig/images.h | 33 + support/kconfig/internal.h | 21 + support/kconfig/kconf_id.c | 53 - support/kconfig/kxgettext.c | 235 - support/kconfig/lexer.l | 460 ++ support/kconfig/lexer.lex.c_shipped | 4103 +++++++++++++++++ support/kconfig/list.h | 254 +- support/kconfig/list_types.h | 17 + support/kconfig/lkc.h | 117 +- support/kconfig/lkc_proto.h | 33 +- support/kconfig/lxdialog/.gitignore | 4 - support/kconfig/lxdialog/BIG.FAT.WARNING | 2 +- support/kconfig/lxdialog/check-lxdialog.sh | 93 - support/kconfig/lxdialog/checklist.c | 26 +- support/kconfig/lxdialog/dialog.h | 76 +- support/kconfig/lxdialog/inputbox.c | 24 +- support/kconfig/lxdialog/menubox.c | 35 +- support/kconfig/lxdialog/textbox.c | 330 +- support/kconfig/lxdialog/util.c | 41 +- support/kconfig/lxdialog/yesno.c | 21 +- support/kconfig/mconf-cfg.sh | 55 + support/kconfig/mconf.c | 529 +-- support/kconfig/menu.c | 345 +- support/kconfig/merge_config.sh | 91 +- support/kconfig/mnconf-common.c | 53 + support/kconfig/mnconf-common.h | 18 + support/kconfig/nconf-cfg.sh | 53 + support/kconfig/nconf.c | 297 +- support/kconfig/nconf.gui.c | 329 +- support/kconfig/nconf.h | 62 +- support/kconfig/parser.tab.c_shipped | 2189 +++++++++ support/kconfig/parser.tab.h_shipped | 134 + support/kconfig/{zconf.y => parser.y} | 467 +- .../01-kconfig-kernel-to-buildroot.patch | 115 +- .../06-br-build-system-integration.patch | 103 +- .../kconfig/patches/10-br-build-system.patch | 66 +- .../patches/11-use-mktemp-for-lxdialog.patch | 17 - .../patches/12-fix-glade-file-path.patch | 14 +- .../14-support-out-of-tree-config.patch | 202 +- .../16-fix-space-to-de-select-options.patch | 19 +- .../kconfig/patches/17-backport-kecho.patch | 26 - ...fig.sh-create-temporary-files-in-tmp.patch | 19 +- ...e_config.sh-add-br2-external-support.patch | 24 +- ...fig.sh-Allow-to-define-config-prefix.patch | 31 - ...-positive-matches-from-comment-lines.patch | 32 - ...config-lxdialog-fix-check-with-GCC14.patch | 43 - ...llow-only-config-comment-and-if-insi.patch | 956 ++++ support/kconfig/patches/series | 6 +- support/kconfig/preprocess.c | 580 +++ support/kconfig/preprocess.h | 19 + support/kconfig/qconf-cfg.sh | 40 + support/kconfig/qconf.cc | 1199 ++--- support/kconfig/qconf.h | 163 +- support/kconfig/streamline_config.pl | 104 +- support/kconfig/symbol.c | 374 +- support/kconfig/util.c | 122 +- support/kconfig/zconf.l | 372 -- support/kconfig/zconf.lex.c_shipped | 2500 ---------- support/kconfig/zconf.tab.c_shipped | 2488 ---------- 75 files changed, 12875 insertions(+), 10288 deletions(-) create mode 100644 support/kconfig/Kbuild.include delete mode 100644 support/kconfig/POTFILES.in create mode 100644 support/kconfig/array_size.h delete mode 100755 support/kconfig/check.sh delete mode 100644 support/kconfig/foo.h create mode 100755 support/kconfig/gconf-cfg.sh create mode 100644 support/kconfig/hashtable.h create mode 100644 support/kconfig/images.h create mode 100644 support/kconfig/internal.h delete mode 100644 support/kconfig/kconf_id.c delete mode 100644 support/kconfig/kxgettext.c create mode 100644 support/kconfig/lexer.l create mode 100644 support/kconfig/lexer.lex.c_shipped create mode 100644 support/kconfig/list_types.h delete mode 100644 support/kconfig/lxdialog/.gitignore delete mode 100755 support/kconfig/lxdialog/check-lxdialog.sh create mode 100755 support/kconfig/mconf-cfg.sh create mode 100644 support/kconfig/mnconf-common.c create mode 100644 support/kconfig/mnconf-common.h create mode 100755 support/kconfig/nconf-cfg.sh create mode 100644 support/kconfig/parser.tab.c_shipped create mode 100644 support/kconfig/parser.tab.h_shipped rename support/kconfig/{zconf.y => parser.y} (56%) delete mode 100644 support/kconfig/patches/11-use-mktemp-for-lxdialog.patch delete mode 100644 support/kconfig/patches/17-backport-kecho.patch delete mode 100644 support/kconfig/patches/20-merge_config.sh-Allow-to-define-config-prefix.patch delete mode 100644 support/kconfig/patches/21-Avoid-false-positive-matches-from-comment-lines.patch delete mode 100644 support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch create mode 100644 support/kconfig/patches/23-Revert-kconfig-allow-only-config-comment-and-if-insi.patch create mode 100644 support/kconfig/preprocess.c create mode 100644 support/kconfig/preprocess.h create mode 100755 support/kconfig/qconf-cfg.sh delete mode 100644 support/kconfig/zconf.l delete mode 100644 support/kconfig/zconf.lex.c_shipped delete mode 100644 support/kconfig/zconf.tab.c_shipped diff --git a/support/kconfig/Kbuild.include b/support/kconfig/Kbuild.include new file mode 100644 index 0000000000..2f33187981 --- /dev/null +++ b/support/kconfig/Kbuild.include @@ -0,0 +1,273 @@ +# SPDX-License-Identifier: GPL-2.0 +#### +# kbuild: Generic definitions + +# Convenient variables +comma := , +quote := " +squote := ' +empty := +space := $(empty) $(empty) +space_escape := _-_SPACE_-_ +pound := \# +define newline + + +endef + +### +# Comparison macros. +# Usage: $(call test-lt, $(CONFIG_LLD_VERSION), 150000) +# +# Use $(intcmp ...) if supported. (Make >= 4.4) +# Otherwise, fall back to the 'test' shell command. +ifeq ($(intcmp 1,0,,,y),y) +test-ge = $(intcmp $(strip $1)0, $(strip $2)0,,y,y) +test-gt = $(intcmp $(strip $1)0, $(strip $2)0,,,y) +else +test-ge = $(shell test $(strip $1)0 -ge $(strip $2)0 && echo y) +test-gt = $(shell test $(strip $1)0 -gt $(strip $2)0 && echo y) +endif +test-le = $(call test-ge, $2, $1) +test-lt = $(call test-gt, $2, $1) + +### +# Name of target with a '.' as filename prefix. foo/bar.o => foo/.bar.o +dot-target = $(dir $@).$(notdir $@) + +### +# Name of target with a '.tmp_' as filename prefix. foo/bar.o => foo/.tmp_bar.o +tmp-target = $(dir $@).tmp_$(notdir $@) + +### +# The temporary file to save gcc -MMD generated dependencies must not +# contain a comma +depfile = $(subst $(comma),_,$(dot-target).d) + +### +# filename of target with directory and extension stripped +basetarget = $(basename $(notdir $@)) + +### +# real prerequisites without phony targets +real-prereqs = $(filter-out $(PHONY), $^) + +### +# Escape single quote for use in echo statements +escsq = $(subst $(squote),'\$(squote)',$1) + +### +# Quote a string to pass it to C files. foo => '"foo"' +stringify = $(squote)$(quote)$1$(quote)$(squote) + +### +# The path to Kbuild or Makefile. Kbuild has precedence over Makefile. +kbuild-dir = $(if $(filter /%,$(src)),$(src),$(srctree)/$(src)) +kbuild-file = $(or $(wildcard $(kbuild-dir)/Kbuild),$(kbuild-dir)/Makefile) + +### +# Read a file, replacing newlines with spaces +# +# Make 4.2 or later can read a file by using its builtin function. +ifneq ($(filter-out 3.% 4.0 4.1, $(MAKE_VERSION)),) +read-file = $(subst $(newline),$(space),$(file < $1)) +else +read-file = $(shell cat $1 2>/dev/null) +endif + +### +# Easy method for doing a status message + kecho := : + quiet_kecho := echo +silent_kecho := : +kecho := $($(quiet)kecho) + +### +# filechk is used to check if the content of a generated file is updated. +# Sample usage: +# +# filechk_sample = echo $(KERNELRELEASE) +# version.h: FORCE +# $(call filechk,sample) +# +# The rule defined shall write to stdout the content of the new file. +# The existing file will be compared with the new one. +# - If no file exist it is created +# - If the content differ the new file is used +# - If they are equal no change, and no timestamp update +define filechk + $(check-FORCE) + $(Q)set -e; \ + mkdir -p $(dir $@); \ + trap "rm -f $(tmp-target)" EXIT; \ + { $(filechk_$(1)); } > $(tmp-target); \ + if [ ! -r $@ ] || ! cmp -s $@ $(tmp-target); then \ + $(kecho) ' UPD $@'; \ + mv -f $(tmp-target) $@; \ + fi +endef + +### +# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build obj= +# Usage: +# $(Q)$(MAKE) $(build)=dir +build := -f $(srctree)/scripts/Makefile.build obj + +### +# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj= +# Usage: +# $(Q)$(MAKE) $(clean)=dir +clean := -f $(srctree)/scripts/Makefile.clean obj + +# pring log +# +# If quiet is "silent_", print nothing and sink stdout +# If quiet is "quiet_", print short log +# If quiet is empty, print short log and whole command +silent_log_print = exec >/dev/null; + quiet_log_print = $(if $(quiet_cmd_$1), echo ' $(call escsq,$(quiet_cmd_$1)$(why))';) + log_print = echo '$(pound) $(call escsq,$(or $(quiet_cmd_$1),cmd_$1 $@)$(why))'; \ + echo ' $(call escsq,$(cmd_$1))'; + +# Delete the target on interruption +# +# GNU Make automatically deletes the target if it has already been changed by +# the interrupted recipe. So, you can safely stop the build by Ctrl-C (Make +# will delete incomplete targets), and resume it later. +# +# However, this does not work when the stderr is piped to another program, like +# $ make >&2 | tee log +# Make dies with SIGPIPE before cleaning the targets. +# +# To address it, we clean the target in signal traps. +# +# Make deletes the target when it catches SIGHUP, SIGINT, SIGQUIT, SIGTERM. +# So, we cover them, and also SIGPIPE just in case. +# +# Of course, this is unneeded for phony targets. +delete-on-interrupt = \ + $(if $(filter-out $(PHONY), $@), \ + $(foreach sig, HUP INT QUIT TERM PIPE, \ + trap 'rm -f $@; trap - $(sig); kill -s $(sig) $$$$' $(sig);)) + +# print and execute commands +cmd = @$(if $(cmd_$(1)),set -e; $($(quiet)log_print) $(delete-on-interrupt) $(cmd_$(1)),:) + +### +# if_changed - execute command if any prerequisite is newer than +# target, or command line has changed +# if_changed_dep - as if_changed, but uses fixdep to reveal dependencies +# including used config symbols +# if_changed_rule - as if_changed but execute rule instead +# See Documentation/kbuild/makefiles.rst for more info + +ifneq ($(KBUILD_NOCMDDEP),1) +# Check if both commands are the same including their order. Result is empty +# string if equal. User may override this check using make KBUILD_NOCMDDEP=1 +# If the target does not exist, the *.cmd file should not be included so +# $(savedcmd_$@) gets empty. Then, target will be built even if $(newer-prereqs) +# happens to become empty. +cmd-check = $(filter-out $(subst $(space),$(space_escape),$(strip $(savedcmd_$@))), \ + $(subst $(space),$(space_escape),$(strip $(cmd_$1)))) +else +# We still need to detect missing targets. +cmd-check = $(if $(strip $(savedcmd_$@)),,1) +endif + +# Replace >$< with >$$< to preserve $ when reloading the .cmd file +# (needed for make) +# Replace >#< with >$(pound)< to avoid starting a comment in the .cmd file +# (needed for make) +# Replace >'< with >'\''< to be able to enclose the whole string in '...' +# (needed for the shell) +make-cmd = $(call escsq,$(subst $(pound),$$(pound),$(subst $$,$$$$,$(cmd_$(1))))) + +# Find any prerequisites that are newer than target or that do not exist. +# PHONY targets skipped in both cases. +# If there is no prerequisite other than phony targets, $(newer-prereqs) becomes +# empty even if the target does not exist. cmd-check saves this corner case. +newer-prereqs = $(filter-out $(PHONY),$?) + +# It is a typical mistake to forget the FORCE prerequisite. Check it here so +# no more breakage will slip in. +check-FORCE = $(if $(filter FORCE, $^),,$(warning FORCE prerequisite is missing)) + +if-changed-cond = $(newer-prereqs)$(cmd-check)$(check-FORCE) + +# Execute command if command has changed or prerequisite(s) are updated. +if_changed = $(if $(if-changed-cond),$(cmd_and_savecmd),@:) + +cmd_and_savecmd = \ + $(cmd); \ + printf '%s\n' 'savedcmd_$@ := $(make-cmd)' > $(dot-target).cmd + +# Execute the command and also postprocess generated .d dependencies file. +if_changed_dep = $(if $(if-changed-cond),$(cmd_and_fixdep),@:) + +cmd_and_fixdep = \ + $(cmd); \ + scripts/basic/fixdep $(depfile) $@ '$(make-cmd)' > $(dot-target).cmd;\ + rm -f $(depfile) + +# Usage: $(call if_changed_rule,foo) +# Will check if $(cmd_foo) or any of the prerequisites changed, +# and if so will execute $(rule_foo). +if_changed_rule = $(if $(if-changed-cond),$(rule_$(1)),@:) + +### +# why - tell why a target got built +# enabled by make V=2 +# Output (listed in the order they are checked): +# (1) - due to target is PHONY +# (2) - due to target missing +# (3) - due to: file1.h file2.h +# (4) - due to command line change +# (5) - due to missing .cmd file +# (6) - due to target not in $(targets) +# (1) PHONY targets are always build +# (2) No target, so we better build it +# (3) Prerequisite is newer than target +# (4) The command line stored in the file named dir/.target.cmd +# differed from actual command line. This happens when compiler +# options changes +# (5) No dir/.target.cmd file (used to store command line) +# (6) No dir/.target.cmd file and target not listed in $(targets) +# This is a good hint that there is a bug in the kbuild file +ifneq ($(findstring 2, $(KBUILD_VERBOSE)),) +_why = \ + $(if $(filter $@, $(PHONY)),- due to target is PHONY, \ + $(if $(wildcard $@), \ + $(if $(newer-prereqs),- due to: $(newer-prereqs), \ + $(if $(cmd-check), \ + $(if $(savedcmd_$@),- due to command line change, \ + $(if $(filter $@, $(targets)), \ + - due to missing .cmd file, \ + - due to $(notdir $@) not in $$(targets) \ + ) \ + ) \ + ) \ + ), \ + - due to target missing \ + ) \ + ) + +why = $(space)$(strip $(_why)) +endif + +############################################################################### + +# delete partially updated (i.e. corrupted) files on error +.DELETE_ON_ERROR: + +# do not delete intermediate files automatically +# +# .NOTINTERMEDIATE is more correct, but only available on newer Make versions. +# Make 4.4 introduced .NOTINTERMEDIATE, and it appears in .FEATURES, but the +# global .NOTINTERMEDIATE does not work. We can use it on Make > 4.4. +# Use .SECONDARY for older Make versions, but "newer-prereq" cannot detect +# deleted files. +ifneq ($(and $(filter notintermediate, $(.FEATURES)),$(filter-out 4.4,$(MAKE_VERSION))),) +.NOTINTERMEDIATE: +else +.SECONDARY: +endif diff --git a/support/kconfig/Makefile b/support/kconfig/Makefile index b0bcc2627a..f5f934d644 100644 --- a/support/kconfig/Makefile +++ b/support/kconfig/Makefile @@ -3,14 +3,10 @@ # Kernel configuration targets # These targets are used from top-level makefile -PHONY += xconfig gconfig menuconfig config syncconfig update-po-config \ - localmodconfig localyesconfig +HOSTPKG_CONFIG = pkg-config +export HOSTPKG_CONFIG -# Easy method for doing a status message - kecho := : - quiet_kecho := echo -silent_kecho := : -kecho := $($(quiet)kecho) +include $(src)/Kbuild.include ifdef KBUILD_KCONFIG Kconfig := $(KBUILD_KCONFIG) @@ -18,103 +14,87 @@ else Kconfig := Kconfig endif +ifndef KBUILD_DEFCONFIG +KBUILD_DEFCONFIG := defconfig +endif + ifeq ($(quiet),silent_) silent := -s endif -# We need this, in case the user has it in its environment -unexport CONFIG_ +export KCONFIG_DEFCONFIG_LIST := +ifndef cross_compiling +kernel-release := $(shell uname -r) +KCONFIG_DEFCONFIG_LIST += \ + /lib/modules/$(kernel-release)/.config \ + /etc/kernel-config \ + /boot/config-$(kernel-release) +endif +KCONFIG_DEFCONFIG_LIST += arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) -xconfig: $(obj)/qconf - $< $(silent) $(Kconfig) +ifneq ($(findstring c, $(KBUILD_EXTRA_WARN)),) +export KCONFIG_WARN_UNKNOWN_SYMBOLS=1 +endif -gconfig: $(obj)/gconf - $< $(silent) $(Kconfig) +ifneq ($(findstring e, $(KBUILD_EXTRA_WARN)),) +export KCONFIG_WERROR=1 +endif -menuconfig: $(obj)/mconf - $< $(silent) $(Kconfig) +# We need this, in case the user has it in its environment +unexport CONFIG_ -config: $(obj)/conf - $< $(silent) --oldaskconfig $(Kconfig) +config-prog := conf +menuconfig-prog := mconf +nconfig-prog := nconf +gconfig-prog := gconf +xconfig-prog := qconf -nconfig: $(obj)/nconf - $< $(silent) $(Kconfig) +define config_rule +PHONY += $(1) +$(1): $(obj)/$($(1)-prog) + $(Q)$$< $(silent) $(Kconfig) -# This has become an internal implementation detail and is now deprecated -# for external use. -syncconfig: $(obj)/conf - $(Q)mkdir -p include/config include/generated - $< $(silent) --$@ $(Kconfig) +PHONY += build_$(1) +build_$(1): $(obj)/$($(1)-prog) +endef +$(foreach c, config menuconfig nconfig gconfig xconfig, $(eval $(call config_rule,$(c)))) + +PHONY += localmodconfig localyesconfig localyesconfig localmodconfig: $(obj)/conf - $(Q)mkdir -p include/config include/generated - $(Q)perl $(srctree)/$(src)/streamline_config.pl --$@ $(srctree) $(Kconfig) > .tmp.config - $(Q)if [ -f .config ]; then \ - cmp -s .tmp.config .config || \ - (mv -f .config .config.old.1; \ - mv -f .tmp.config .config; \ - $< $(silent) --oldconfig $(Kconfig); \ - mv -f .config.old.1 .config.old) \ - else \ - mv -f .tmp.config .config; \ - $< $(silent) --oldconfig $(Kconfig); \ + $(Q)$(PERL) $(srctree)/$(src)/streamline_config.pl --$@ $(srctree) $(Kconfig) > .tmp.config + $(Q)if [ -f .config ]; then \ + cmp -s .tmp.config .config || \ + (mv -f .config .config.old.1; \ + mv -f .tmp.config .config; \ + $< $(silent) --oldconfig $(Kconfig); \ + mv -f .config.old.1 .config.old) \ + else \ + mv -f .tmp.config .config; \ + $< $(silent) --oldconfig $(Kconfig); \ fi $(Q)rm -f .tmp.config -# Create new linux.pot file -# Adjust charset to UTF-8 in .po file to accept UTF-8 in Kconfig files -update-po-config: $(obj)/kxgettext $(obj)/gconf.glade.h - $(Q)$(kecho) " GEN config.pot" - $(Q)xgettext --default-domain=linux \ - --add-comments --keyword=_ --keyword=N_ \ - --from-code=UTF-8 \ - --files-from=$(srctree)/scripts/kconfig/POTFILES.in \ - --directory=$(srctree) --directory=$(objtree) \ - --output $(obj)/config.pot - $(Q)sed -i s/CHARSET/UTF-8/ $(obj)/config.pot - $(Q)(for i in `ls $(srctree)/arch/*/Kconfig \ - $(srctree)/arch/*/um/Kconfig`; \ - do \ - $(kecho) " GEN $$i"; \ - $(obj)/kxgettext $$i \ - >> $(obj)/config.pot; \ - done ) - $(Q)$(kecho) " GEN linux.pot" - $(Q)msguniq --sort-by-file --to-code=UTF-8 $(obj)/config.pot \ - --output $(obj)/linux.pot - $(Q)rm -f $(obj)/config.pot - # These targets map 1:1 to the commandline options of 'conf' +# +# Note: +# syncconfig has become an internal implementation detail and is now +# deprecated for external use simple-targets := oldconfig allnoconfig allyesconfig allmodconfig \ - alldefconfig randconfig listnewconfig olddefconfig + alldefconfig randconfig listnewconfig olddefconfig syncconfig \ + helpnewconfig yes2modconfig mod2yesconfig mod2noconfig + PHONY += $(simple-targets) $(simple-targets): $(obj)/conf - $< $(silent) --$@ $(Kconfig) - -PHONY += oldnoconfig silentoldconfig savedefconfig defconfig - -# oldnoconfig is an alias of olddefconfig, because people already are dependent -# on its behavior (sets new symbols to their default value but not 'n') with the -# counter-intuitive name. -oldnoconfig: olddefconfig - @echo " WARNING: \"oldnoconfig\" target will be removed after Linux 4.19" - @echo " Please use \"olddefconfig\" instead, which is an alias." + $(Q)$< $(silent) --$@ $(Kconfig) -# We do not expect manual invokcation of "silentoldcofig" (or "syncconfig"). -silentoldconfig: syncconfig - @echo " WARNING: \"silentoldconfig\" has been renamed to \"syncconfig\"" - @echo " and is now an internal implementation detail." - @echo " What you want is probably \"oldconfig\"." - @echo " \"silentoldconfig\" will be removed after Linux 4.19" +PHONY += savedefconfig defconfig savedefconfig: $(obj)/conf - $< $(silent) --$@=defconfig $(Kconfig) + $(Q)$< $(silent) --$@=defconfig $(Kconfig) defconfig: $(obj)/conf -ifeq ($(KBUILD_DEFCONFIG),) - $< $(silent) --defconfig $(Kconfig) -else ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)),) @$(kecho) "*** Default configuration is based on '$(KBUILD_DEFCONFIG)'" $(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) $(Kconfig) @@ -122,49 +102,45 @@ else @$(kecho) "*** Default configuration is based on target '$(KBUILD_DEFCONFIG)'" $(Q)$(MAKE) -f $(srctree)/Makefile $(KBUILD_DEFCONFIG) endif -endif %_defconfig: $(obj)/conf $(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig) -configfiles=$(wildcard $(srctree)/kernel/configs/$@ $(srctree)/arch/$(SRCARCH)/configs/$@) +configfiles = $(wildcard $(srctree)/kernel/configs/$(1) $(srctree)/arch/$(SRCARCH)/configs/$(1)) +all-config-fragments = $(call configfiles,*.config) +config-fragments = $(call configfiles,$@) %.config: $(obj)/conf - $(if $(call configfiles),, $(error No configuration exists for this target on this architecture)) - $(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh -m .config $(configfiles) - +$(Q)yes "" | $(MAKE) -f $(srctree)/Makefile oldconfig - -PHONY += kvmconfig -kvmconfig: kvm_guest.config - @: - -PHONY += xenconfig -xenconfig: xen.config - @: + $(if $(config-fragments),, $(error $@ fragment does not exists on this architecture)) + $(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh -m $(KCONFIG_CONFIG) $(config-fragments) + $(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig PHONY += tinyconfig tinyconfig: - $(Q)$(MAKE) -f $(srctree)/Makefile allnoconfig tiny.config + $(Q)KCONFIG_ALLCONFIG=kernel/configs/tiny-base.config $(MAKE) -f $(srctree)/Makefile allnoconfig + $(Q)$(MAKE) -f $(srctree)/Makefile tiny.config # CHECK: -o cache_dir= working? PHONY += testconfig testconfig: $(obj)/conf - $(PYTHON3) -B -m pytest $(srctree)/$(src)/tests \ + $(Q)$(PYTHON3) -B -m pytest $(srctree)/$(src)/tests \ -o cache_dir=$(abspath $(obj)/tests/.cache) \ $(if $(findstring 1,$(KBUILD_VERBOSE)),--capture=no) -clean-dirs += tests/.cache +clean-files += tests/.cache # Help text used by make help help: + @echo 'Configuration targets:' @echo ' config - Update current config utilising a line-oriented program' - @echo ' nconfig - Update current config utilising a ncurses menu based' - @echo ' program' + @echo ' nconfig - Update current config utilising a ncurses menu based program' @echo ' menuconfig - Update current config utilising a menu based program' @echo ' xconfig - Update current config utilising a Qt based front-end' @echo ' gconfig - Update current config utilising a GTK+ based front-end' @echo ' oldconfig - Update current config utilising a provided .config as base' @echo ' localmodconfig - Update current config disabling modules not loaded' + @echo ' except those preserved by LMC_KEEP environment variable' @echo ' localyesconfig - Update current config converting local mods to core' + @echo ' except those preserved by LMC_KEEP environment variable' @echo ' defconfig - New config with default from ARCH supplied defconfig' @echo ' savedefconfig - Save current config as ./defconfig (minimal config)' @echo ' allnoconfig - New config where all options are answered with no' @@ -172,171 +148,100 @@ help: @echo ' allmodconfig - New config selecting modules when possible' @echo ' alldefconfig - New config with all symbols set to default' @echo ' randconfig - New config with random answer to all options' + @echo ' yes2modconfig - Change answers from yes to mod if possible' + @echo ' mod2yesconfig - Change answers from mod to yes if possible' + @echo ' mod2noconfig - Change answers from mod to no if possible' @echo ' listnewconfig - List new options' + @echo ' helpnewconfig - List new options and help text' @echo ' olddefconfig - Same as oldconfig but sets new symbols to their' @echo ' default value without prompting' - @echo ' kvmconfig - Enable additional options for kvm guest kernel support' - @echo ' xenconfig - Enable additional options for xen dom0 and guest kernel support' @echo ' tinyconfig - Configure the tiniest possible kernel' - -# lxdialog stuff -check-lxdialog := $(srctree)/$(src)/lxdialog/check-lxdialog.sh - -# Use recursively expanded variables so we do not call gcc unless -# we really need to do so. (Do not call gcc as part of make mrproper) -HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags) \ - -DLOCALE + @echo ' testconfig - Run Kconfig unit tests (requires python3 and pytest)' + @echo '' + @echo 'Configuration topic targets:' + @$(foreach f, $(all-config-fragments), \ + if help=$$(grep -m1 '^# Help: ' $(f)); then \ + printf ' %-25s - %s\n' '$(notdir $(f))' "$${help#*: }"; \ + fi;) # =========================================================================== -# Shared Makefile for the various kconfig executables: -# conf: Used for defconfig, oldconfig and related targets -# nconf: Used for the nconfig target. -# Utilizes ncurses -# mconf: Used for the menuconfig target -# Utilizes the lxdialog package -# qconf: Used for the xconfig target -# Based on Qt which needs to be installed to compile it -# gconf: Used for the gconfig target -# Based on GTK+ which needs to be installed to compile it # object files used by all kconfig flavours +common-objs := confdata.o expr.o lexer.lex.o menu.o parser.tab.o \ + preprocess.o symbol.o util.o -lxdialog := lxdialog/checklist.o lxdialog/util.o lxdialog/inputbox.o -lxdialog += lxdialog/textbox.o lxdialog/yesno.o lxdialog/menubox.o - -conf-objs := conf.o zconf.tab.o -mconf-objs := mconf.o zconf.tab.o $(lxdialog) -nconf-objs := nconf.o zconf.tab.o nconf.gui.o -kxgettext-objs := kxgettext.o zconf.tab.o -qconf-cxxobjs := qconf.o -qconf-objs := zconf.tab.o -gconf-objs := gconf.o zconf.tab.o +$(obj)/lexer.lex.o: $(obj)/parser.tab.h +HOSTCFLAGS_lexer.lex.o := -I $(srctree)/$(src) +HOSTCFLAGS_parser.tab.o := -I $(srctree)/$(src) -hostprogs-y := conf +# conf: Used for defconfig, oldconfig and related targets +hostprogs += conf +conf-objs := conf.o $(common-objs) +# nconf: Used for the nconfig target based on ncurses ifeq ($(MAKECMDGOALS),nconf) - hostprogs-y += nconf -endif - -ifeq ($(MAKECMDGOALS),mconf) - hostprogs-y += mconf -endif +hostprogs += nconf +nconf-objs := nconf.o nconf.gui.o mnconf-common.o $(common-objs) -ifeq ($(MAKECMDGOALS),update-po-config) - hostprogs-y += kxgettext -endif +HOSTLDLIBS_nconf = $(call read-file, $(obj)/nconf-libs) +HOSTCFLAGS_nconf.o = $(call read-file, $(obj)/nconf-cflags) +HOSTCFLAGS_nconf.gui.o = $(call read-file, $(obj)/nconf-cflags) -ifeq ($(MAKECMDGOALS),qconf) - qconf-target := 1 +$(obj)/nconf: | $(obj)/nconf-libs +$(obj)/nconf.o $(obj)/nconf.gui.o: | $(obj)/nconf-cflags endif -ifeq ($(MAKECMDGOALS),gconf) - gconf-target := 1 -endif +# mconf: Used for the menuconfig target based on lxdialog +ifeq ($(MAKECMDGOALS),mconf) +hostprogs += mconf +lxdialog := $(addprefix lxdialog/, \ + checklist.o inputbox.o menubox.o textbox.o util.o yesno.o) +mconf-objs := mconf.o $(lxdialog) mnconf-common.o $(common-objs) -ifeq ($(qconf-target),1) - hostprogs-y += qconf -endif +HOSTLDLIBS_mconf = $(call read-file, $(obj)/mconf-libs) +$(foreach f, mconf.o $(lxdialog), \ + $(eval HOSTCFLAGS_$f = $$(call read-file, $(obj)/mconf-cflags))) -ifeq ($(gconf-target),1) - hostprogs-y += gconf +$(obj)/mconf: | $(obj)/mconf-libs +$(addprefix $(obj)/, mconf.o $(lxdialog)): | $(obj)/mconf-cflags endif -targets += zconf.lex.c -clean-files := qconf.moc .tmp_qtcheck .tmp_gtkcheck -clean-files += gconf.glade.h -clean-files += config.pot linux.pot - -# Check that we have the required ncurses stuff installed for lxdialog (menuconfig) -PHONY += $(obj)/dochecklxdialog -$(addprefix $(obj)/, mconf.o $(lxdialog)): $(obj)/dochecklxdialog -$(obj)/dochecklxdialog: - $(Q)$(CONFIG_SHELL) $(check-lxdialog) -check $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTLOADLIBES_mconf) - -always := dochecklxdialog - -# Add environment specific flags -HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(srctree)/$(src)/check.sh $(HOSTCC) $(HOSTCFLAGS)) -HOST_EXTRACXXFLAGS += $(shell $(CONFIG_SHELL) $(srctree)/$(src)/check.sh $(HOSTCXX) $(HOSTCXXFLAGS)) - -# generated files seem to need this to find local include files -HOSTCFLAGS_zconf.lex.o := -I$(src) -HOSTCFLAGS_zconf.tab.o := -I$(src) - -HOSTLOADLIBES_qconf = $(KC_QT_LIBS) -HOSTCXXFLAGS_qconf.o = $(KC_QT_CFLAGS) +# qconf: Used for the xconfig target based on Qt +ifeq ($(MAKECMDGOALS),qconf) +hostprogs += qconf +qconf-cxxobjs := qconf.o qconf-moc.o +qconf-objs := images.o $(common-objs) -HOSTLOADLIBES_gconf = `pkg-config --libs gtk+-2.0 gmodule-2.0 libglade-2.0` -HOSTCFLAGS_gconf.o = `pkg-config --cflags gtk+-2.0 gmodule-2.0 libglade-2.0` \ - -Wno-missing-prototypes +HOSTLDLIBS_qconf = $(call read-file, $(obj)/qconf-libs) +HOSTCXXFLAGS_qconf.o = -std=c++11 -fPIC $(call read-file, $(obj)/qconf-cflags) +HOSTCXXFLAGS_qconf-moc.o = -std=c++11 -fPIC $(call read-file, $(obj)/qconf-cflags) +$(obj)/qconf: | $(obj)/qconf-libs +$(obj)/qconf.o $(obj)/qconf-moc.o: | $(obj)/qconf-cflags -HOSTLOADLIBES_mconf = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC)) +quiet_cmd_moc = MOC $@ + cmd_moc = $(call read-file, $(obj)/qconf-bin)/moc $< -o $@ -HOSTLOADLIBES_nconf = $(shell \ - pkg-config --libs menuw panelw ncursesw 2>/dev/null \ - || pkg-config --libs menu panel ncurses 2>/dev/null \ - || echo "-lmenu -lpanel -lncurses" ) -$(obj)/qconf.o: $(obj)/.tmp_qtcheck +$(obj)/qconf-moc.cc: $(src)/qconf.h FORCE | $(obj)/qconf-bin + $(call if_changed,moc) -ifeq ($(MAKECMDGOALS),qconf) -$(obj)/.tmp_qtcheck: $(src)/Makefile --include $(obj)/.tmp_qtcheck - -# Qt needs some extra effort... -$(obj)/.tmp_qtcheck: - @set -e; $(kecho) " CHECK qt"; \ - if pkg-config --exists Qt5Core; then \ - cflags="-std=c++11 -fPIC `pkg-config --cflags Qt5Core Qt5Gui Qt5Widgets`"; \ - libs=`pkg-config --libs Qt5Core Qt5Gui Qt5Widgets`; \ - moc=`pkg-config --variable=host_bins Qt5Core`/moc; \ - elif pkg-config --exists QtCore; then \ - cflags=`pkg-config --cflags QtCore QtGui`; \ - libs=`pkg-config --libs QtCore QtGui`; \ - moc=`pkg-config --variable=moc_location QtCore`; \ - else \ - echo >&2 "*"; \ - echo >&2 "* Could not find Qt via pkg-config."; \ - echo >&2 "* Please install either Qt 4.8 or 5.x. and make sure it's in PKG_CONFIG_PATH"; \ - echo >&2 "*"; \ - exit 1; \ - fi; \ - echo "KC_QT_CFLAGS=$$cflags" > $@; \ - echo "KC_QT_LIBS=$$libs" >> $@; \ - echo "KC_QT_MOC=$$moc" >> $@ +targets += qconf-moc.cc endif +# gconf: Used for the gconfig target based on GTK+ ifeq ($(MAKECMDGOALS),gconf) -$(obj)/gconf.o: $(obj)/.tmp_gtkcheck --include $(obj)/.tmp_gtkcheck - -# GTK+ needs some extra effort, too... -$(obj)/.tmp_gtkcheck: - @if `pkg-config --exists gtk+-2.0 gmodule-2.0 libglade-2.0`; then \ - if `pkg-config --atleast-version=2.0.0 gtk+-2.0`; then \ - touch $@; \ - else \ - echo >&2 "*"; \ - echo >&2 "* GTK+ is present but version >= 2.0.0 is required."; \ - echo >&2 "*"; \ - false; \ - fi \ - else \ - echo >&2 "*"; \ - echo >&2 "* Unable to find the GTK+ installation. Please make sure that"; \ - echo >&2 "* the GTK+ 2.0 development package is correctly installed..."; \ - echo >&2 "* You need gtk+-2.0, glib-2.0 and libglade-2.0."; \ - echo >&2 "*"; \ - false; \ - fi -endif +hostprogs += gconf +gconf-objs := gconf.o images.o $(common-objs) -$(obj)/zconf.tab.o: $(obj)/zconf.lex.c +HOSTLDLIBS_gconf = $(call read-file, $(obj)/gconf-libs) +HOSTCFLAGS_gconf.o = $(call read-file, $(obj)/gconf-cflags) + +$(obj)/gconf: | $(obj)/gconf-libs +$(obj)/gconf.o: | $(obj)/gconf-cflags +endif -$(obj)/qconf.o: $(obj)/qconf.moc +# check if necessary packages are available, and configure build flags +cmd_conf_cfg = $(src)/$< $(addprefix $(obj)/$*conf-, cflags libs bin); touch $(obj)/$*conf-bin -$(obj)/%.moc: $(src)/%.h $(obj)/.tmp_qtcheck - $(KC_QT_MOC) -i $< -o $@ +$(obj)/%conf-cflags $(obj)/%conf-libs $(obj)/%conf-bin: $(src)/%conf-cfg.sh + $(call cmd,conf_cfg) -# Extract gconf menu items for i18n support -$(obj)/gconf.glade.h: $(obj)/gconf.glade - $(Q)intltool-extract --type=gettext/glade --srcdir=$(srctree) \ - $(obj)/gconf.glade +clean-files += *conf-cflags *conf-libs *conf-bin diff --git a/support/kconfig/Makefile.br b/support/kconfig/Makefile.br index 41c5ce165d..d163256846 100644 --- a/support/kconfig/Makefile.br +++ b/support/kconfig/Makefile.br @@ -5,12 +5,11 @@ srctree := . obj ?= . include Makefile -#HOSTCFLAGS+=-Dinline="" -include foo.h -include $(obj)/.depend $(obj)/.depend: $(wildcard *.h *.c) $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) -MM *.c > $@ 2>/dev/null || : -__hostprogs := $(sort $(hostprogs-y) $(hostprogs-m)) +__hostprogs := $(sort $(hostprogs)) host-csingle := $(foreach m,$(__hostprogs),$(if $($(m)-objs),,$(m))) host-cmulti := $(foreach m,$(__hostprogs),\ $(if $($(m)-cxxobjs),,$(if $($(m)-objs),$(m)))) @@ -25,10 +24,10 @@ $(host-csingle): %: %.c $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< -o $(obj)/$@ $(host-cmulti): %: $(host-cobjs) $(host-cshlib) - $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLDLIBS_$(@F)) -o $(obj)/$@ $(host-cxxmulti): %: $(host-cxxobjs) $(host-cobjs) $(host-cshlib) - $(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ + $(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLDLIBS_$(@F)) -o $(obj)/$@ $(obj)/%.o: %.c $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) -c $< -o $@ @@ -39,6 +38,9 @@ $(obj)/%.o: $(obj)/%.c $(obj)/%.o: %.cc $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$(@F)) -c $< -o $@ +$(obj)/%.o: $(obj)/%.cc + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$(@F)) -c $< -o $@ + $(obj)/%:: $(src)/%_shipped $(Q)cat $< > $@ diff --git a/support/kconfig/POTFILES.in b/support/kconfig/POTFILES.in deleted file mode 100644 index 9674573969..0000000000 --- a/support/kconfig/POTFILES.in +++ /dev/null @@ -1,12 +0,0 @@ -scripts/kconfig/lxdialog/checklist.c -scripts/kconfig/lxdialog/inputbox.c -scripts/kconfig/lxdialog/menubox.c -scripts/kconfig/lxdialog/textbox.c -scripts/kconfig/lxdialog/util.c -scripts/kconfig/lxdialog/yesno.c -scripts/kconfig/mconf.c -scripts/kconfig/conf.c -scripts/kconfig/confdata.c -scripts/kconfig/gconf.c -scripts/kconfig/gconf.glade.h -scripts/kconfig/qconf.cc diff --git a/support/kconfig/README.buildroot b/support/kconfig/README.buildroot index 76808f85b4..82bb855d01 100644 --- a/support/kconfig/README.buildroot +++ b/support/kconfig/README.buildroot @@ -3,10 +3,13 @@ to suit Buildroot. To update: cp -r /usr/src/linux/scripts/kconfig support/kconfig.new + cp /usr/src/linux/scripts/Kbuild.include support/kconfig.new cd support/kconfig.new - # zconf.lex.c and zconf.tab.c needs to be generated by 'make menuconfig' - mv zconf.lex.c zconf.lex.c_shipped - mv zconf.tab.c zconf.tab.c_shipped + # lexer.lex.c, parser.tab.c and parser.tab.h needs to be generated + # by 'make menuconfig' + mv lexer.lex.c lexer.lex.c_shipped + mv parser.tab.c parser.tab.c_shipped + mv parser.tab.h parser.tab.h_shipped rm -rf tests/ cp -a ../kconfig/patches ../kconfig/README.buildroot ../kconfig/.gitignore . quilt push -a diff --git a/support/kconfig/array_size.h b/support/kconfig/array_size.h new file mode 100644 index 0000000000..26ba78d867 --- /dev/null +++ b/support/kconfig/array_size.h @@ -0,0 +1,11 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef ARRAY_SIZE_H +#define ARRAY_SIZE_H + +/** + * ARRAY_SIZE - get the number of elements in array @arr + * @arr: array to be sized + */ +#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) + +#endif /* ARRAY_SIZE_H */ diff --git a/support/kconfig/check.sh b/support/kconfig/check.sh deleted file mode 100755 index 97f0fee7d1..0000000000 --- a/support/kconfig/check.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Needed for systems without gettext -$* -x c -o /dev/null - > /dev/null 2>&1 << EOF -#include -int main() -{ - gettext(""); - return 0; -} -EOF -if [ ! "$?" -eq "0" ]; then - echo -DKBUILD_NO_NLS; -fi diff --git a/support/kconfig/conf.c b/support/kconfig/conf.c index 2d7a7ac437..965bb40c50 100644 --- a/support/kconfig/conf.c +++ b/support/kconfig/conf.c @@ -1,9 +1,8 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ -#include #include #include #include @@ -12,10 +11,10 @@ #include #include #include -#include #include #include +#include "internal.h" #include "lkc.h" static void conf(struct menu *menu); @@ -33,10 +32,14 @@ enum input_mode { defconfig, savedefconfig, listnewconfig, + helpnewconfig, olddefconfig, + yes2modconfig, + mod2yesconfig, + mod2noconfig, }; static enum input_mode input_mode = oldaskconfig; - +static int input_mode_opt; static int indent = 1; static int tty_stdio; static int sync_kconfig; @@ -81,17 +84,245 @@ static void xfgets(char *str, int size, FILE *in) printf("%s", str); } -static int conf_askvalue(struct symbol *sym, const char *def) +static void set_randconfig_seed(void) +{ + unsigned int seed; + char *env; + bool seed_set = false; + + env = getenv("KCONFIG_SEED"); + if (env && *env) { + char *endp; + + seed = strtol(env, &endp, 0); + if (*endp == '\0') + seed_set = true; + } + + if (!seed_set) { + struct timeval now; + + /* + * Use microseconds derived seed, compensate for systems where it may + * be zero. + */ + gettimeofday(&now, NULL); + seed = (now.tv_sec + 1) * (now.tv_usec + 1); + } + + printf("KCONFIG_SEED=0x%X\n", seed); + srand(seed); +} + +static bool randomize_choice_values(struct symbol *csym) +{ + struct property *prop; + struct symbol *sym; + struct expr *e; + int cnt, def; + + /* + * If choice is mod then we may have more items selected + * and if no then no-one. + * In both cases stop. + */ + if (csym->curr.tri != yes) + return false; + + prop = sym_get_choice_prop(csym); + + /* count entries in choice block */ + cnt = 0; + expr_list_for_each_sym(prop->expr, e, sym) + cnt++; + + /* + * find a random value and set it to yes, + * set the rest to no so we have only one set + */ + def = rand() % cnt; + + cnt = 0; + expr_list_for_each_sym(prop->expr, e, sym) { + if (def == cnt++) { + sym->def[S_DEF_USER].tri = yes; + csym->def[S_DEF_USER].val = sym; + } else { + sym->def[S_DEF_USER].tri = no; + } + sym->flags |= SYMBOL_DEF_USER; + /* clear VALID to get value calculated */ + sym->flags &= ~SYMBOL_VALID; + } + csym->flags |= SYMBOL_DEF_USER; + /* clear VALID to get value calculated */ + csym->flags &= ~SYMBOL_VALID; + + return true; +} + +enum conf_def_mode { + def_default, + def_yes, + def_mod, + def_no, + def_random +}; + +static bool conf_set_all_new_symbols(enum conf_def_mode mode) +{ + struct symbol *sym, *csym; + int cnt; + /* + * can't go as the default in switch-case below, otherwise gcc whines + * about -Wmaybe-uninitialized + */ + int pby = 50; /* probability of bool = y */ + int pty = 33; /* probability of tristate = y */ + int ptm = 33; /* probability of tristate = m */ + bool has_changed = false; + + if (mode == def_random) { + int n, p[3]; + char *env = getenv("KCONFIG_PROBABILITY"); + + n = 0; + while (env && *env) { + char *endp; + int tmp = strtol(env, &endp, 10); + + if (tmp >= 0 && tmp <= 100) { + p[n++] = tmp; + } else { + errno = ERANGE; + perror("KCONFIG_PROBABILITY"); + exit(1); + } + env = (*endp == ':') ? endp + 1 : endp; + if (n >= 3) + break; + } + switch (n) { + case 1: + pby = p[0]; + ptm = pby / 2; + pty = pby - ptm; + break; + case 2: + pty = p[0]; + ptm = p[1]; + pby = pty + ptm; + break; + case 3: + pby = p[0]; + pty = p[1]; + ptm = p[2]; + break; + } + + if (pty + ptm > 100) { + errno = ERANGE; + perror("KCONFIG_PROBABILITY"); + exit(1); + } + } + + for_all_symbols(sym) { + if (sym_has_value(sym) || sym->flags & SYMBOL_VALID) + continue; + switch (sym_get_type(sym)) { + case S_BOOLEAN: + case S_TRISTATE: + has_changed = true; + switch (mode) { + case def_yes: + sym->def[S_DEF_USER].tri = yes; + break; + case def_mod: + sym->def[S_DEF_USER].tri = mod; + break; + case def_no: + sym->def[S_DEF_USER].tri = no; + break; + case def_random: + sym->def[S_DEF_USER].tri = no; + cnt = rand() % 100; + if (sym->type == S_TRISTATE) { + if (cnt < pty) + sym->def[S_DEF_USER].tri = yes; + else if (cnt < pty + ptm) + sym->def[S_DEF_USER].tri = mod; + } else if (cnt < pby) + sym->def[S_DEF_USER].tri = yes; + break; + default: + continue; + } + if (!(sym_is_choice(sym) && mode == def_random)) + sym->flags |= SYMBOL_DEF_USER; + break; + default: + break; + } + + } + + sym_clear_all_valid(); + + /* + * We have different type of choice blocks. + * If curr.tri equals to mod then we can select several + * choice symbols in one block. + * In this case we do nothing. + * If curr.tri equals yes then only one symbol can be + * selected in a choice block and we set it to yes, + * and the rest to no. + */ + if (mode != def_random) { + for_all_symbols(csym) { + if ((sym_is_choice(csym) && !sym_has_value(csym)) || + sym_is_choice_value(csym)) + csym->flags |= SYMBOL_NEED_SET_CHOICE_VALUES; + } + } + + for_all_symbols(csym) { + if (sym_has_value(csym) || !sym_is_choice(csym)) + continue; + + sym_calc_value(csym); + if (mode == def_random) + has_changed |= randomize_choice_values(csym); + else { + set_all_choice_values(csym); + has_changed = true; + } + } + + return has_changed; +} + +static void conf_rewrite_tristates(tristate old_val, tristate new_val) { - enum symbol_type type = sym_get_type(sym); + struct symbol *sym; + for_all_symbols(sym) { + if (sym_get_type(sym) == S_TRISTATE && + sym->def[S_DEF_USER].tri == old_val) + sym->def[S_DEF_USER].tri = new_val; + } + sym_clear_all_valid(); +} + +static int conf_askvalue(struct symbol *sym, const char *def) +{ if (!sym_has_value(sym)) - printf(_("(NEW) ")); + printf("(NEW) "); line[0] = '\n'; line[1] = 0; - if (!sym_is_changable(sym)) { + if (!sym_is_changeable(sym)) { printf("%s\n", def); line[0] = '\n'; line[1] = 0; @@ -106,24 +337,12 @@ static int conf_askvalue(struct symbol *sym, const char *def) return 0; } /* fall through */ - case oldaskconfig: + default: fflush(stdout); xfgets(line, sizeof(line), stdin); - return 1; - default: break; } - switch (type) { - case S_INT: - case S_HEX: - case S_STRING: - printf("%s\n", def); - return 1; - default: - ; - } - printf("%s", line); return 1; } @@ -133,10 +352,10 @@ static int conf_string(struct menu *menu) const char *def; while (1) { - printf("%*s%s ", indent - 1, "", _(menu->prompt->text)); + printf("%*s%s ", indent - 1, "", menu->prompt->text); printf("(%s) ", sym->name); def = sym_get_string_value(sym); - if (sym_get_string_value(sym)) + if (def) printf("[%s] ", def); if (!conf_askvalue(sym, def)) return 0; @@ -166,7 +385,7 @@ static int conf_sym(struct menu *menu) tristate oldval, newval; while (1) { - printf("%*s%s ", indent - 1, "", _(menu->prompt->text)); + printf("%*s%s ", indent - 1, "", menu->prompt->text); if (sym->name) printf("(%s) ", sym->name); putchar('['); @@ -235,7 +454,7 @@ static int conf_choice(struct menu *menu) sym = menu->sym; is_new = !sym_has_value(sym); - if (sym_is_changable(sym)) { + if (sym_is_changeable(sym)) { conf_sym(menu); sym_calc_value(sym); switch (sym_get_tristate_value(sym)) { @@ -251,7 +470,7 @@ static int conf_choice(struct menu *menu) case no: return 1; case mod: - printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu))); + printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu)); return 0; case yes: break; @@ -261,7 +480,7 @@ static int conf_choice(struct menu *menu) while (1) { int cnt, def; - printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu))); + printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu)); def_sym = sym_get_choice_value(sym); cnt = def = 0; line[0] = 0; @@ -269,7 +488,7 @@ static int conf_choice(struct menu *menu) if (!menu_is_visible(child)) continue; if (!child->sym) { - printf("%*c %s\n", indent, '*', _(menu_get_prompt(child))); + printf("%*c %s\n", indent, '*', menu_get_prompt(child)); continue; } cnt++; @@ -278,14 +497,14 @@ static int conf_choice(struct menu *menu) printf("%*c", indent, '>'); } else printf("%*c", indent, ' '); - printf(" %d. %s", cnt, _(menu_get_prompt(child))); + printf(" %d. %s", cnt, menu_get_prompt(child)); if (child->sym->name) printf(" (%s)", child->sym->name); if (!sym_has_value(child->sym)) - printf(_(" (NEW)")); + printf(" (NEW)"); printf("\n"); } - printf(_("%*schoice"), indent - 1, ""); + printf("%*schoice", indent - 1, ""); if (cnt == 1) { printf("[1]: 1\n"); goto conf_childs; @@ -332,12 +551,7 @@ static int conf_choice(struct menu *menu) print_help(child); continue; } - sym_set_choice_value(sym, child->sym); - for (child = child->list; child; child = child->next) { - indent += 2; - conf(child); - indent -= 2; - } + sym_set_tristate_value(child->sym, yes); return 1; } } @@ -372,7 +586,7 @@ static void conf(struct menu *menu) if (prompt) printf("%*c\n%*c %s\n%*c\n", indent, '*', - indent, '*', _(prompt), + indent, '*', prompt, indent, '*'); default: ; @@ -418,29 +632,26 @@ static void check_conf(struct menu *menu) return; sym = menu->sym; - if (sym && !sym_has_value(sym)) { - if (sym_is_changable(sym) || - (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) { - if (input_mode == listnewconfig) { - if (sym->name) { - const char *str; - - if (sym->type == S_STRING) { - str = sym_get_string_value(sym); - str = sym_escape_string_value(str); - printf("%s%s=%s\n", CONFIG_, sym->name, str); - free((void *)str); - } else { - str = sym_get_string_value(sym); - printf("%s%s=%s\n", CONFIG_, sym->name, str); - } - } - } else { - if (!conf_cnt++) - printf(_("*\n* Restart config...\n*\n")); - rootEntry = menu_get_parent_menu(menu); - conf(rootEntry); - } + if (sym && !sym_has_value(sym) && + (sym_is_changeable(sym) || + (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes))) { + + switch (input_mode) { + case listnewconfig: + if (sym->name) + print_symbol_for_listconfig(sym); + break; + case helpnewconfig: + printf("-----\n"); + print_help(menu); + printf("-----\n"); + break; + default: + if (!conf_cnt++) + printf("*\n* Restart config...\n*\n"); + rootEntry = menu_get_parent_menu(menu); + conf(rootEntry); + break; } } @@ -448,40 +659,44 @@ static void check_conf(struct menu *menu) check_conf(child); } -static struct option long_opts[] = { - {"oldaskconfig", no_argument, NULL, oldaskconfig}, - {"oldconfig", no_argument, NULL, oldconfig}, - {"syncconfig", no_argument, NULL, syncconfig}, - {"defconfig", optional_argument, NULL, defconfig}, - {"savedefconfig", required_argument, NULL, savedefconfig}, - {"allnoconfig", no_argument, NULL, allnoconfig}, - {"allyesconfig", no_argument, NULL, allyesconfig}, - {"allmodconfig", no_argument, NULL, allmodconfig}, - {"alldefconfig", no_argument, NULL, alldefconfig}, - {"randconfig", no_argument, NULL, randconfig}, - {"listnewconfig", no_argument, NULL, listnewconfig}, - {"olddefconfig", no_argument, NULL, olddefconfig}, - /* - * oldnoconfig is an alias of olddefconfig, because people already - * are dependent on its behavior(sets new symbols to their default - * value but not 'n') with the counter-intuitive name. - */ - {"oldnoconfig", no_argument, NULL, olddefconfig}, +static const struct option long_opts[] = { + {"help", no_argument, NULL, 'h'}, + {"silent", no_argument, NULL, 's'}, + {"oldaskconfig", no_argument, &input_mode_opt, oldaskconfig}, + {"oldconfig", no_argument, &input_mode_opt, oldconfig}, + {"syncconfig", no_argument, &input_mode_opt, syncconfig}, + {"defconfig", required_argument, &input_mode_opt, defconfig}, + {"savedefconfig", required_argument, &input_mode_opt, savedefconfig}, + {"allnoconfig", no_argument, &input_mode_opt, allnoconfig}, + {"allyesconfig", no_argument, &input_mode_opt, allyesconfig}, + {"allmodconfig", no_argument, &input_mode_opt, allmodconfig}, + {"alldefconfig", no_argument, &input_mode_opt, alldefconfig}, + {"randconfig", no_argument, &input_mode_opt, randconfig}, + {"listnewconfig", no_argument, &input_mode_opt, listnewconfig}, + {"helpnewconfig", no_argument, &input_mode_opt, helpnewconfig}, + {"olddefconfig", no_argument, &input_mode_opt, olddefconfig}, + {"yes2modconfig", no_argument, &input_mode_opt, yes2modconfig}, + {"mod2yesconfig", no_argument, &input_mode_opt, mod2yesconfig}, + {"mod2noconfig", no_argument, &input_mode_opt, mod2noconfig}, {NULL, 0, NULL, 0} }; static void conf_usage(const char *progname) { - - printf("Usage: %s [-s] [option] \n", progname); - printf("[option] is _one_ of the following:\n"); + printf("Usage: %s [options] \n", progname); + printf("\n"); + printf("Generic options:\n"); + printf(" -h, --help Print this message and exit.\n"); + printf(" -s, --silent Do not print log.\n"); + printf("\n"); + printf("Mode options:\n"); printf(" --listnewconfig List new options\n"); + printf(" --helpnewconfig List new options and help text\n"); printf(" --oldaskconfig Start a new configuration using a line-oriented program\n"); printf(" --oldconfig Update a configuration using a provided .config as base\n"); printf(" --syncconfig Similar to oldconfig but generates configuration in\n" " include/{generated/,config/}\n"); printf(" --olddefconfig Same as oldconfig but sets new symbols to their default value\n"); - printf(" --oldnoconfig An alias of olddefconfig\n"); printf(" --defconfig New config with default defined in \n"); printf(" --savedefconfig Save the minimal current configuration to \n"); printf(" --allnoconfig New config where all options are answered with no\n"); @@ -489,6 +704,10 @@ static void conf_usage(const char *progname) printf(" --allmodconfig New config where all options are answered with mod\n"); printf(" --alldefconfig New config with all symbols set to default\n"); printf(" --randconfig New config with random answer to all options\n"); + printf(" --yes2modconfig Change answers from yes to mod if possible\n"); + printf(" --mod2yesconfig Change answers from mod to yes if possible\n"); + printf(" --mod2noconfig Change answers from mod to no if possible\n"); + printf(" (If none of the above is given, --oldaskconfig is the default)\n"); } int main(int ac, char **av) @@ -496,97 +715,60 @@ int main(int ac, char **av) const char *progname = av[0]; int opt; const char *name, *defconfig_file = NULL /* gcc uninit */; - struct stat tmpstat; - - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + int no_conf_write = 0; tty_stdio = isatty(0) && isatty(1); - while ((opt = getopt_long(ac, av, "s", long_opts, NULL)) != -1) { - if (opt == 's') { - conf_set_message_callback(NULL); - continue; - } - input_mode = (enum input_mode)opt; + while ((opt = getopt_long(ac, av, "hs", long_opts, NULL)) != -1) { switch (opt) { - case syncconfig: - sync_kconfig = 1; + case 'h': + conf_usage(progname); + exit(1); break; - case defconfig: - case savedefconfig: - defconfig_file = optarg; + case 's': + conf_set_message_callback(NULL); break; - case randconfig: - { - struct timeval now; - unsigned int seed; - char *seed_env; - - /* - * Use microseconds derived seed, - * compensate for systems where it may be zero - */ - gettimeofday(&now, NULL); - seed = (unsigned int)((now.tv_sec + 1) * (now.tv_usec + 1)); - - seed_env = getenv("KCONFIG_SEED"); - if( seed_env && *seed_env ) { - char *endp; - int tmp = (int)strtol(seed_env, &endp, 0); - if (*endp == '\0') { - seed = tmp; - } + case 0: + input_mode = input_mode_opt; + switch (input_mode) { + case syncconfig: + /* + * syncconfig is invoked during the build stage. + * Suppress distracting + * "configuration written to ..." + */ + conf_set_message_callback(NULL); + sync_kconfig = 1; + break; + case defconfig: + case savedefconfig: + defconfig_file = optarg; + break; + case randconfig: + set_randconfig_seed(); + break; + default: + break; } - fprintf( stderr, "KCONFIG_SEED=0x%X\n", seed ); - srand(seed); - break; - } - case oldaskconfig: - case oldconfig: - case allnoconfig: - case allyesconfig: - case allmodconfig: - case alldefconfig: - case listnewconfig: - case olddefconfig: - break; - case '?': - conf_usage(progname); - exit(1); + default: break; } } if (ac == optind) { - fprintf(stderr, _("%s: Kconfig file missing\n"), av[0]); + fprintf(stderr, "%s: Kconfig file missing\n", av[0]); conf_usage(progname); exit(1); } - name = av[optind]; - conf_parse(name); - if (sync_kconfig) { - name = conf_get_configname(); - if (stat(name, &tmpstat)) { - fprintf(stderr, _("***\n" - "*** Configuration file \"%s\" not found!\n" - "***\n" - "*** Please run some configurator (e.g. \"make oldconfig\" or\n" - "*** \"make menuconfig\" or \"make xconfig\").\n" - "***\n"), name); - exit(1); - } - } + conf_parse(av[optind]); + //zconfdump(stdout); switch (input_mode) { case defconfig: - if (!defconfig_file) - defconfig_file = conf_get_default_confname(); if (conf_read(defconfig_file)) { fprintf(stderr, - _("***\n" + "***\n" "*** Can't find default configuration \"%s\"!\n" - "***\n"), + "***\n", defconfig_file); exit(1); } @@ -596,7 +778,11 @@ int main(int ac, char **av) case oldaskconfig: case oldconfig: case listnewconfig: + case helpnewconfig: case olddefconfig: + case yes2modconfig: + case mod2yesconfig: + case mod2noconfig: conf_read(NULL); break; case allnoconfig: @@ -610,7 +796,7 @@ int main(int ac, char **av) if ((strcmp(name, "") != 0) && (strcmp(name, "1") != 0)) { if (conf_read_simple(name, S_DEF_USER)) { fprintf(stderr, - _("*** Can't read seed configuration \"%s\"!\n"), + "*** Can't read seed configuration \"%s\"!\n", name); exit(1); } @@ -627,7 +813,7 @@ int main(int ac, char **av) if (conf_read_simple(name, S_DEF_USER) && conf_read_simple("all.config", S_DEF_USER)) { fprintf(stderr, - _("*** KCONFIG_ALLCONFIG set, but no \"%s\" or \"all.config\" file found\n"), + "*** KCONFIG_ALLCONFIG set, but no \"%s\" or \"all.config\" file found\n", name); exit(1); } @@ -636,14 +822,18 @@ int main(int ac, char **av) break; } + if (conf_errors()) + exit(1); + if (sync_kconfig) { - if (conf_get_changed()) { - name = getenv("KCONFIG_NOSILENTUPDATE"); - if (name && *name) { + name = getenv("KCONFIG_NOSILENTUPDATE"); + if (name && *name) { + if (conf_get_changed()) { fprintf(stderr, - _("\n*** The configuration requires explicit update.\n\n")); + "\n*** The configuration requires explicit update.\n\n"); return 1; } + no_conf_write = 1; } } @@ -669,6 +859,15 @@ int main(int ac, char **av) break; case savedefconfig: break; + case yes2modconfig: + conf_rewrite_tristates(yes, mod); + break; + case mod2yesconfig: + conf_rewrite_tristates(mod, yes); + break; + case mod2noconfig: + conf_rewrite_tristates(mod, no); + break; case oldaskconfig: rootEntry = &rootmenu; conf(&rootmenu); @@ -676,6 +875,7 @@ int main(int ac, char **av) /* fall through */ case oldconfig: case listnewconfig: + case helpnewconfig: case syncconfig: /* Update until a loop caused no more changes */ do { @@ -688,29 +888,35 @@ int main(int ac, char **av) break; } - if (sync_kconfig) { - /* syncconfig is used during the build so we shall update autoconf. - * All other commands are only used to generate a config. - */ - if (conf_get_changed() && conf_write(NULL)) { - fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n")); - exit(1); - } - if (conf_write_autoconf()) { - fprintf(stderr, _("\n*** Error during update of the configuration.\n\n")); - return 1; - } - } else if (input_mode == savedefconfig) { + if (sym_dep_errors()) + exit(1); + + if (input_mode == savedefconfig) { if (conf_write_defconfig(defconfig_file)) { - fprintf(stderr, _("n*** Error while saving defconfig to: %s\n\n"), + fprintf(stderr, "n*** Error while saving defconfig to: %s\n\n", defconfig_file); return 1; } - } else if (input_mode != listnewconfig) { - if (conf_write(NULL)) { - fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n")); + } else if (input_mode != listnewconfig && input_mode != helpnewconfig) { + if (!no_conf_write && conf_write(NULL)) { + fprintf(stderr, "\n*** Error during writing of the configuration.\n\n"); exit(1); } + + /* + * Create auto.conf if it does not exist. + * This prevents GNU Make 4.1 or older from emitting + * "include/config/auto.conf: No such file or directory" + * in the top-level Makefile + * + * syncconfig always creates or updates auto.conf because it is + * used during the build. + */ + if (conf_write_autoconf(sync_kconfig) && sync_kconfig) { + fprintf(stderr, + "\n*** Error during sync of the configuration.\n\n"); + return 1; + } } return 0; } diff --git a/support/kconfig/confdata.c b/support/kconfig/confdata.c index 9ab980edd8..eb952e89ac 100644 --- a/support/kconfig/confdata.c +++ b/support/kconfig/confdata.c @@ -1,13 +1,17 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ +#include #include +#include #include #include #include +#include #include +#include #include #include #include @@ -15,12 +19,136 @@ #include #include +#include "internal.h" #include "lkc.h" -struct conf_printer { - void (*print_symbol)(FILE *, struct symbol *, const char *, void *); - void (*print_comment)(FILE *, const char *, void *); -}; +struct gstr autoconf_cmd; + +/* return true if 'path' exists, false otherwise */ +static bool is_present(const char *path) +{ + struct stat st; + + return !stat(path, &st); +} + +/* return true if 'path' exists and it is a directory, false otherwise */ +static bool is_dir(const char *path) +{ + struct stat st; + + if (stat(path, &st)) + return false; + + return S_ISDIR(st.st_mode); +} + +/* return true if the given two files are the same, false otherwise */ +static bool is_same(const char *file1, const char *file2) +{ + int fd1, fd2; + struct stat st1, st2; + void *map1, *map2; + bool ret = false; + + fd1 = open(file1, O_RDONLY); + if (fd1 < 0) + return ret; + + fd2 = open(file2, O_RDONLY); + if (fd2 < 0) + goto close1; + + ret = fstat(fd1, &st1); + if (ret) + goto close2; + ret = fstat(fd2, &st2); + if (ret) + goto close2; + + if (st1.st_size != st2.st_size) + goto close2; + + map1 = mmap(NULL, st1.st_size, PROT_READ, MAP_PRIVATE, fd1, 0); + if (map1 == MAP_FAILED) + goto close2; + + map2 = mmap(NULL, st2.st_size, PROT_READ, MAP_PRIVATE, fd2, 0); + if (map2 == MAP_FAILED) + goto close2; + + if (bcmp(map1, map2, st1.st_size)) + goto close2; + + ret = true; +close2: + close(fd2); +close1: + close(fd1); + + return ret; +} + +/* + * Create the parent directory of the given path. + * + * For example, if 'include/config/auto.conf' is given, create 'include/config'. + */ +static int make_parent_dir(const char *path) +{ + char tmp[PATH_MAX + 1]; + char *p; + + strncpy(tmp, path, sizeof(tmp)); + tmp[sizeof(tmp) - 1] = 0; + + /* Remove the base name. Just return if nothing is left */ + p = strrchr(tmp, '/'); + if (!p) + return 0; + *(p + 1) = 0; + + /* Just in case it is an absolute path */ + p = tmp; + while (*p == '/') + p++; + + while ((p = strchr(p, '/'))) { + *p = 0; + + /* skip if the directory exists */ + if (!is_dir(tmp) && mkdir(tmp, 0755)) + return -1; + + *p = '/'; + while (*p == '/') + p++; + } + + return 0; +} + +static char depfile_path[PATH_MAX]; +static size_t depfile_prefix_len; + +/* touch depfile for symbol 'name' */ +static int conf_touch_dep(const char *name) +{ + int fd; + + /* check overflow: prefix + name + '\0' must fit in buffer. */ + if (depfile_prefix_len + strlen(name) + 1 > sizeof(depfile_path)) + return -1; + + strcpy(depfile_path + depfile_prefix_len, name); + + fd = open(depfile_path, O_WRONLY | O_CREAT | O_TRUNC, 0644); + if (fd == -1) + return -1; + close(fd); + + return 0; +} static void conf_warning(const char *fmt, ...) __attribute__ ((format (printf, 1, 2))); @@ -31,7 +159,12 @@ static void conf_message(const char *fmt, ...) static const char *conf_filename; static int conf_lineno, conf_warnings; -const char conf_defname[] = ".defconfig"; +bool conf_errors(void) +{ + if (conf_warnings) + return getenv("KCONFIG_WERROR"); + return false; +} static void conf_warning(const char *fmt, ...) { @@ -44,16 +177,16 @@ static void conf_warning(const char *fmt, ...) conf_warnings++; } -static void conf_default_message_callback(const char *fmt, va_list ap) +static void conf_default_message_callback(const char *s) { printf("#\n# "); - vprintf(fmt, ap); + printf("%s", s); printf("\n#\n"); } -static void (*conf_message_callback) (const char *fmt, va_list ap) = +static void (*conf_message_callback)(const char *s) = conf_default_message_callback; -void conf_set_message_callback(void (*fn) (const char *fmt, va_list ap)) +void conf_set_message_callback(void (*fn)(const char *s)) { conf_message_callback = fn; } @@ -61,10 +194,15 @@ void conf_set_message_callback(void (*fn) (const char *fmt, va_list ap)) static void conf_message(const char *fmt, ...) { va_list ap; + char buf[4096]; + + if (!conf_message_callback) + return; va_start(ap, fmt); - if (conf_message_callback) - conf_message_callback(fmt, ap); + + vsnprintf(buf, sizeof(buf), fmt, ap); + conf_message_callback(buf); va_end(ap); } @@ -75,51 +213,23 @@ const char *conf_get_configname(void) return name ? name : ".config"; } -const char *conf_get_autoconfig_name(void) +static const char *conf_get_autoconfig_name(void) { return getenv("KCONFIG_AUTOCONFIG"); } -static char *conf_expand_value(const char *in) +static const char *conf_get_autoheader_name(void) { - struct symbol *sym; - const char *src; - static char res_value[SYMBOL_MAXLENGTH]; - char *dst, name[SYMBOL_MAXLENGTH]; - - res_value[0] = 0; - dst = name; - while ((src = strchr(in, '$'))) { - strncat(res_value, in, src - in); - src++; - dst = name; - while (isalnum(*src) || *src == '_') - *dst++ = *src++; - *dst = 0; - sym = sym_lookup(name, 0); - sym_calc_value(sym); - strcat(res_value, sym_get_string_value(sym)); - in = src; - } - strcat(res_value, in); + char *name = getenv("KCONFIG_AUTOHEADER"); - return res_value; + return name ? name : "include/generated/autoconf.h"; } -char *conf_get_default_confname(void) +static const char *conf_get_rustccfg_name(void) { - struct stat buf; - static char fullname[PATH_MAX+1]; - char *env, *name; - - name = conf_expand_value(conf_defname); - env = getenv(SRCTREE); - if (env) { - sprintf(fullname, "%s/%s", env, name); - if (!stat(fullname, &buf)) - return fullname; - } - return name; + char *name = getenv("KCONFIG_RUSTCCFG"); + + return name ? name : "include/generated/rustc_cfg"; } static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p) @@ -149,33 +259,26 @@ static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p) conf_warning("symbol value '%s' invalid for %s", p, sym->name); return 1; - case S_OTHER: - if (*p != '"') { - for (p2 = p; *p2 && !isspace(*p2); p2++) - ; - sym->type = S_STRING; - goto done; - } - /* fall through */ case S_STRING: - if (*p++ != '"') - break; - for (p2 = p; (p2 = strpbrk(p2, "\"\\")); p2++) { - if (*p2 == '"') { - *p2 = 0; + /* No escaping for S_DEF_AUTO (include/config/auto.conf) */ + if (def != S_DEF_AUTO) { + if (*p++ != '"') break; + for (p2 = p; (p2 = strpbrk(p2, "\"\\")); p2++) { + if (*p2 == '"') { + *p2 = 0; + break; + } + memmove(p2, p2 + 1, strlen(p2)); } - memmove(p2, p2 + 1, strlen(p2)); - } - if (!p2) { - if (def != S_DEF_AUTO) + if (!p2) { conf_warning("invalid string found"); - return 1; + return 1; + } } /* fall through */ case S_INT: case S_HEX: - done: if (sym_string_valid(sym, p)) { sym->def[def].val = xstrdup(p); sym->flags |= def_flags; @@ -192,59 +295,24 @@ static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p) return 0; } -#define LINE_GROWTH 16 -static int add_byte(int c, char **lineptr, size_t slen, size_t *n) +/* like getline(), but the newline character is stripped away */ +static ssize_t getline_stripped(char **lineptr, size_t *n, FILE *stream) { - char *nline; - size_t new_size = slen + 1; - if (new_size > *n) { - new_size += LINE_GROWTH - 1; - new_size *= 2; - nline = xrealloc(*lineptr, new_size); - if (!nline) - return -1; + ssize_t len; - *lineptr = nline; - *n = new_size; - } - - (*lineptr)[slen] = c; - - return 0; -} - -static ssize_t compat_getline(char **lineptr, size_t *n, FILE *stream) -{ - char *line = *lineptr; - size_t slen = 0; + len = getline(lineptr, n, stream); - for (;;) { - int c = getc(stream); + if (len > 0 && (*lineptr)[len - 1] == '\n') { + len--; + (*lineptr)[len] = '\0'; - switch (c) { - case '\n': - if (add_byte(c, &line, slen, n) < 0) - goto e_out; - slen++; - /* fall through */ - case EOF: - if (add_byte('\0', &line, slen, n) < 0) - goto e_out; - *lineptr = line; - if (slen == 0) - return -1; - return slen; - default: - if (add_byte(c, &line, slen, n) < 0) - goto e_out; - slen++; + if (len > 0 && (*lineptr)[len - 1] == '\r') { + len--; + (*lineptr)[len] = '\0'; } } -e_out: - line[slen-1] = '\0'; - *lineptr = line; - return -1; + return len; } int conf_read_simple(const char *name, int def) @@ -252,34 +320,55 @@ int conf_read_simple(const char *name, int def) FILE *in = NULL; char *line = NULL; size_t line_asize = 0; - char *p, *p2; + char *p, *val; struct symbol *sym; - int i, def_flags; + int def_flags; + const char *warn_unknown, *sym_name; + warn_unknown = getenv("KCONFIG_WARN_UNKNOWN_SYMBOLS"); if (name) { in = zconf_fopen(name); } else { - struct property *prop; + char *env; name = conf_get_configname(); in = zconf_fopen(name); if (in) goto load; - sym_add_change_count(1); - if (!sym_defconfig_list) + conf_set_changed(true); + + env = getenv("KCONFIG_DEFCONFIG_LIST"); + if (!env) return 1; - for_all_defaults(sym_defconfig_list, prop) { - if (expr_calc_value(prop->visible.expr) == no || - prop->expr->type != E_SYMBOL) - continue; - name = conf_expand_value(prop->expr->left.sym->name); - in = zconf_fopen(name); + while (1) { + bool is_last; + + while (isspace(*env)) + env++; + + if (!*env) + break; + + p = env; + while (*p && !isspace(*p)) + p++; + + is_last = (*p == '\0'); + + *p = '\0'; + + in = zconf_fopen(env); if (in) { - conf_message(_("using defaults found in %s"), - name); + conf_message("using defaults found in %s", + env); goto load; } + + if (is_last) + break; + + env = p + 1; } } if (!in) @@ -291,7 +380,7 @@ load: conf_warnings = 0; def_flags = SYMBOL_DEF << def; - for_all_symbols(i, sym) { + for_all_symbols(sym) { sym->flags |= SYMBOL_CHANGED; sym->flags &= ~(def_flags|SYMBOL_VALID); if (sym_is_choice(sym)) @@ -300,8 +389,7 @@ load: case S_INT: case S_HEX: case S_STRING: - if (sym->def[def].val) - free(sym->def[def].val); + free(sym->def[def].val); /* fall through */ default: sym->def[def].val = NULL; @@ -309,76 +397,68 @@ load: } } - while (compat_getline(&line, &line_asize, in) != -1) { + while (getline_stripped(&line, &line_asize, in) != -1) { conf_lineno++; - sym = NULL; + + if (!line[0]) /* blank line */ + continue; + if (line[0] == '#') { - if (memcmp(line + 2, CONFIG_, strlen(CONFIG_))) + if (line[1] != ' ') continue; - p = strchr(line + 2 + strlen(CONFIG_), ' '); + p = line + 2; + if (memcmp(p, CONFIG_, strlen(CONFIG_))) + continue; + sym_name = p + strlen(CONFIG_); + p = strchr(sym_name, ' '); if (!p) continue; *p++ = 0; - if (strncmp(p, "is not set", 10)) + if (strcmp(p, "is not set")) + continue; + + val = "n"; + } else { + if (memcmp(line, CONFIG_, strlen(CONFIG_))) { + conf_warning("unexpected data: %s", line); continue; - if (def == S_DEF_USER) { - sym = sym_find(line + 2 + strlen(CONFIG_)); - if (!sym) { - sym_add_change_count(1); - goto setsym; - } - } else { - sym = sym_lookup(line + 2 + strlen(CONFIG_), 0); - if (sym->type == S_UNKNOWN) - sym->type = S_BOOLEAN; - } - if (sym->flags & def_flags) { - conf_warning("override: reassigning to symbol %s", sym->name); - } - switch (sym->type) { - case S_BOOLEAN: - case S_TRISTATE: - sym->def[def].tri = no; - sym->flags |= def_flags; - break; - default: - ; } - } else if (memcmp(line, CONFIG_, strlen(CONFIG_)) == 0) { - p = strchr(line + strlen(CONFIG_), '='); - if (!p) + + sym_name = line + strlen(CONFIG_); + p = strchr(sym_name, '='); + if (!p) { + conf_warning("unexpected data: %s", line); continue; - *p++ = 0; - p2 = strchr(p, '\n'); - if (p2) { - *p2-- = 0; - if (*p2 == '\r') - *p2 = 0; } - if (def == S_DEF_USER) { - sym = sym_find(line + strlen(CONFIG_)); - if (!sym) { - sym_add_change_count(1); - goto setsym; - } + *p = 0; + val = p + 1; + } + + sym = sym_find(sym_name); + if (!sym) { + if (def == S_DEF_AUTO) { + /* + * Reading from include/config/auto.conf. + * If CONFIG_FOO previously existed in auto.conf + * but it is missing now, include/config/FOO + * must be touched. + */ + conf_touch_dep(sym_name); } else { - sym = sym_lookup(line + strlen(CONFIG_), 0); - if (sym->type == S_UNKNOWN) - sym->type = S_OTHER; - } - if (sym->flags & def_flags) { - conf_warning("override: reassigning to symbol %s", sym->name); - } - if (conf_set_sym_val(sym, def, def_flags, p)) - continue; - } else { - if (line[0] != '\r' && line[0] != '\n') - conf_warning("unexpected data: %.*s", - (int)strcspn(line, "\r\n"), line); + if (warn_unknown) + conf_warning("unknown symbol: %s", sym_name); + conf_set_changed(true); + } continue; } -setsym: + + if (sym->flags & def_flags) + conf_warning("override: reassigning to symbol %s", sym->name); + + if (conf_set_sym_val(sym, def, def_flags, val)) + continue; + if (sym && sym_is_choice_value(sym)) { struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym)); switch (sym->def[def].tri) { @@ -401,6 +481,7 @@ setsym: } free(line); fclose(in); + return 0; } @@ -408,9 +489,8 @@ int conf_read(const char *name) { struct symbol *sym; int conf_unsaved = 0; - int i; - sym_set_change_count(0); + conf_set_changed(false); if (conf_read_simple(name, S_DEF_USER)) { sym_calc_value(modules_sym); @@ -419,20 +499,18 @@ int conf_read(const char *name) sym_calc_value(modules_sym); - for_all_symbols(i, sym) { + for_all_symbols(sym) { sym_calc_value(sym); - if (sym_is_choice(sym) || (sym->flags & SYMBOL_AUTO)) + if (sym_is_choice(sym) || (sym->flags & SYMBOL_NO_WRITE)) continue; if (sym_has_value(sym) && (sym->flags & SYMBOL_WRITE)) { /* check that calculated value agrees with saved value */ switch (sym->type) { case S_BOOLEAN: case S_TRISTATE: - if (sym->def[S_DEF_USER].tri != sym_get_tristate_value(sym)) - break; - if (!sym_is_choice(sym)) + if (sym->def[S_DEF_USER].tri == sym_get_tristate_value(sym)) continue; - /* fall through */ + break; default: if (!strcmp(sym->curr.val, sym->def[S_DEF_USER].val)) continue; @@ -445,7 +523,7 @@ int conf_read(const char *name) /* maybe print value in verbose mode... */ } - for_all_symbols(i, sym) { + for_all_symbols(sym) { if (sym_has_value(sym) && !sym_is_choice_value(sym)) { /* Reset values of generates values, so they'll appear * as new, if they should become visible, but that @@ -461,7 +539,7 @@ int conf_read(const char *name) /* Reset a string value if it's out of range */ if (sym_string_within_range(sym, sym->def[S_DEF_USER].val)) break; - sym->flags &= ~(SYMBOL_VALID|SYMBOL_DEF_USER); + sym->flags &= ~SYMBOL_VALID; conf_unsaved++; break; default: @@ -470,194 +548,232 @@ int conf_read(const char *name) } } - sym_add_change_count(conf_warnings || conf_unsaved); + if (conf_warnings || conf_unsaved) + conf_set_changed(true); return 0; } -/* - * Kconfig configuration printer - * - * This printer is used when generating the resulting configuration after - * kconfig invocation and `defconfig' files. Unset symbol might be omitted by - * passing a non-NULL argument to the printer. - * - */ -static void -kconfig_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) +struct comment_style { + const char *decoration; + const char *prefix; + const char *postfix; +}; + +static const struct comment_style comment_style_pound = { + .decoration = "#", + .prefix = "#", + .postfix = "#", +}; + +static const struct comment_style comment_style_c = { + .decoration = " *", + .prefix = "/*", + .postfix = " */", +}; + +static void conf_write_heading(FILE *fp, const struct comment_style *cs) { + if (!cs) + return; - switch (sym->type) { - case S_BOOLEAN: - case S_TRISTATE: - if (*value == 'n') { - bool skip_unset = (arg != NULL); + fprintf(fp, "%s\n", cs->prefix); - if (!skip_unset) - fprintf(fp, "# %s%s is not set\n", - CONFIG_, sym->name); - return; - } - break; - default: - break; - } + fprintf(fp, "%s Automatically generated file; DO NOT EDIT.\n", + cs->decoration); + + fprintf(fp, "%s %s\n", cs->decoration, rootmenu.prompt->text); - fprintf(fp, "%s%s=%s\n", CONFIG_, sym->name, value); + fprintf(fp, "%s\n", cs->postfix); } -static void -kconfig_print_comment(FILE *fp, const char *value, void *arg) +/* The returned pointer must be freed on the caller side */ +static char *escape_string_value(const char *in) { - const char *p = value; - size_t l; - - for (;;) { - l = strcspn(p, "\n"); - fprintf(fp, "#"); - if (l) { - fprintf(fp, " "); - xfwrite(p, l, 1, fp); - p += l; - } - fprintf(fp, "\n"); - if (*p++ == '\0') + const char *p; + char *out; + size_t len; + + len = strlen(in) + strlen("\"\"") + 1; + + p = in; + while (1) { + p += strcspn(p, "\"\\"); + + if (p[0] == '\0') + break; + + len++; + p++; + } + + out = xmalloc(len); + out[0] = '\0'; + + strcat(out, "\""); + + p = in; + while (1) { + len = strcspn(p, "\"\\"); + strncat(out, p, len); + p += len; + + if (p[0] == '\0') break; + + strcat(out, "\\"); + strncat(out, p++, 1); } + + strcat(out, "\""); + + return out; } -static struct conf_printer kconfig_printer_cb = +enum output_n { OUTPUT_N, OUTPUT_N_AS_UNSET, OUTPUT_N_NONE }; + +static void __print_symbol(FILE *fp, struct symbol *sym, enum output_n output_n, + bool escape_string) { - .print_symbol = kconfig_print_symbol, - .print_comment = kconfig_print_comment, -}; + const char *val; + char *escaped = NULL; -/* - * Header printer - * - * This printer is used when generating the `include/generated/autoconf.h' file. - */ -static void -header_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) + if (sym->type == S_UNKNOWN) + return; + + val = sym_get_string_value(sym); + + if ((sym->type == S_BOOLEAN || sym->type == S_TRISTATE) && + output_n != OUTPUT_N && *val == 'n') { + if (output_n == OUTPUT_N_AS_UNSET) + fprintf(fp, "# %s%s is not set\n", CONFIG_, sym->name); + return; + } + + if (sym->type == S_STRING && escape_string) { + escaped = escape_string_value(val); + val = escaped; + } + + fprintf(fp, "%s%s=%s\n", CONFIG_, sym->name, val); + + free(escaped); +} + +static void print_symbol_for_dotconfig(FILE *fp, struct symbol *sym) +{ + __print_symbol(fp, sym, OUTPUT_N_AS_UNSET, true); +} + +static void print_symbol_for_autoconf(FILE *fp, struct symbol *sym) +{ + __print_symbol(fp, sym, OUTPUT_N_NONE, false); +} + +void print_symbol_for_listconfig(struct symbol *sym) +{ + __print_symbol(stdout, sym, OUTPUT_N, true); +} + +static void print_symbol_for_c(FILE *fp, struct symbol *sym) { + const char *val; + const char *sym_suffix = ""; + const char *val_prefix = ""; + char *escaped = NULL; + + if (sym->type == S_UNKNOWN) + return; + + val = sym_get_string_value(sym); switch (sym->type) { case S_BOOLEAN: - case S_TRISTATE: { - const char *suffix = ""; - - switch (*value) { + case S_TRISTATE: + switch (*val) { case 'n': - break; + return; case 'm': - suffix = "_MODULE"; + sym_suffix = "_MODULE"; /* fall through */ default: - fprintf(fp, "#define %s%s%s 1\n", - CONFIG_, sym->name, suffix); + val = "1"; } break; - } - case S_HEX: { - const char *prefix = ""; - - if (value[0] != '0' || (value[1] != 'x' && value[1] != 'X')) - prefix = "0x"; - fprintf(fp, "#define %s%s %s%s\n", - CONFIG_, sym->name, prefix, value); + case S_HEX: + if (val[0] != '0' || (val[1] != 'x' && val[1] != 'X')) + val_prefix = "0x"; break; - } case S_STRING: - case S_INT: - fprintf(fp, "#define %s%s %s\n", - CONFIG_, sym->name, value); - break; + escaped = escape_string_value(val); + val = escaped; default: break; } -} + fprintf(fp, "#define %s%s%s %s%s\n", CONFIG_, sym->name, sym_suffix, + val_prefix, val); -static void -header_print_comment(FILE *fp, const char *value, void *arg) -{ - const char *p = value; - size_t l; - - fprintf(fp, "/*\n"); - for (;;) { - l = strcspn(p, "\n"); - fprintf(fp, " *"); - if (l) { - fprintf(fp, " "); - xfwrite(p, l, 1, fp); - p += l; - } - fprintf(fp, "\n"); - if (*p++ == '\0') - break; - } - fprintf(fp, " */\n"); + free(escaped); } -static struct conf_printer header_printer_cb = -{ - .print_symbol = header_print_symbol, - .print_comment = header_print_comment, -}; - -/* - * Tristate printer - * - * This printer is used when generating the `include/config/tristate.conf' file. - */ -static void -tristate_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) +static void print_symbol_for_rustccfg(FILE *fp, struct symbol *sym) { + const char *val; + const char *val_prefix = ""; + char *val_prefixed = NULL; + size_t val_prefixed_len; + char *escaped = NULL; - if (sym->type == S_TRISTATE && *value != 'n') - fprintf(fp, "%s%s=%c\n", CONFIG_, sym->name, (char)toupper(*value)); -} - -static struct conf_printer tristate_printer_cb = -{ - .print_symbol = tristate_print_symbol, - .print_comment = kconfig_print_comment, -}; + if (sym->type == S_UNKNOWN) + return; -static void conf_write_symbol(FILE *fp, struct symbol *sym, - struct conf_printer *printer, void *printer_arg) -{ - const char *str; + val = sym_get_string_value(sym); switch (sym->type) { - case S_OTHER: - case S_UNKNOWN: + case S_BOOLEAN: + case S_TRISTATE: + /* + * We do not care about disabled ones, i.e. no need for + * what otherwise are "comments" in other printers. + */ + if (*val == 'n') + return; + + /* + * To have similar functionality to the C macro `IS_ENABLED()` + * we provide an empty `--cfg CONFIG_X` here in both `y` + * and `m` cases. + * + * Then, the common `fprintf()` below will also give us + * a `--cfg CONFIG_X="y"` or `--cfg CONFIG_X="m"`, which can + * be used as the equivalent of `IS_BUILTIN()`/`IS_MODULE()`. + */ + fprintf(fp, "--cfg=%s%s\n", CONFIG_, sym->name); break; - case S_STRING: - str = sym_get_string_value(sym); - str = sym_escape_string_value(str); - printer->print_symbol(fp, sym, str, printer_arg); - free((void *)str); + case S_HEX: + if (val[0] != '0' || (val[1] != 'x' && val[1] != 'X')) + val_prefix = "0x"; break; default: - str = sym_get_string_value(sym); - printer->print_symbol(fp, sym, str, printer_arg); + break; } -} -static void -conf_write_heading(FILE *fp, struct conf_printer *printer, void *printer_arg) -{ - char buf[256]; + if (strlen(val_prefix) > 0) { + val_prefixed_len = strlen(val) + strlen(val_prefix) + 1; + val_prefixed = xmalloc(val_prefixed_len); + snprintf(val_prefixed, val_prefixed_len, "%s%s", val_prefix, val); + val = val_prefixed; + } + + /* All values get escaped: the `--cfg` option only takes strings */ + escaped = escape_string_value(val); + val = escaped; - snprintf(buf, sizeof(buf), - "\n" - "Automatically generated file; DO NOT EDIT.\n" - "%s\n", - rootmenu.prompt->text); + fprintf(fp, "--cfg=%s%s=%s\n", CONFIG_, sym->name, val); - printer->print_comment(fp, buf, printer_arg); + free(escaped); + free(val_prefixed); } /* @@ -682,16 +798,13 @@ int conf_write_defconfig(const char *filename) while (menu != NULL) { sym = menu->sym; - if (sym == NULL) { - if (!menu_is_visible(menu)) - goto next_menu; - } else if (!sym_is_choice(sym)) { + if (sym && !sym_is_choice(sym)) { sym_calc_value(sym); if (!(sym->flags & SYMBOL_WRITE)) goto next_menu; sym->flags &= ~SYMBOL_WRITE; /* If we cannot change the symbol - skip */ - if (!sym_is_changable(sym)) + if (!sym_is_changeable(sym)) goto next_menu; /* If symbol equals to default value - skip */ if (strcmp(sym_get_string_value(sym), sym_get_string_default(sym)) == 0) @@ -716,7 +829,7 @@ int conf_write_defconfig(const char *filename) goto next_menu; } } - conf_write_symbol(out, sym, &kconfig_printer_cb, NULL); + print_symbol_for_dotconfig(out, sym); } next_menu: if (menu->list != NULL) { @@ -742,49 +855,40 @@ int conf_write(const char *name) FILE *out; struct symbol *sym; struct menu *menu; - const char *basename; const char *str; - char dirname[PATH_MAX+1], tmpname[PATH_MAX+20], newname[PATH_MAX+1]; + char tmpname[PATH_MAX + 1], oldname[PATH_MAX + 1]; char *env; + bool need_newline = false; if (!name) name = conf_get_configname(); - dirname[0] = 0; - if (name && name[0]) { - struct stat st; - char *slash; - - if (!stat(name, &st) && S_ISDIR(st.st_mode)) { - strcpy(dirname, name); - strcat(dirname, "/"); - basename = conf_get_configname(); - } else if ((slash = strrchr(name, '/'))) { - int size = slash - name + 1; - memcpy(dirname, name, size); - dirname[size] = 0; - if (slash[1]) - basename = slash + 1; - else - basename = conf_get_configname(); - } else - basename = name; - } else - basename = conf_get_configname(); - - sprintf(newname, "%s%s", dirname, basename); + if (!*name) { + fprintf(stderr, "config name is empty\n"); + return -1; + } + + if (is_dir(name)) { + fprintf(stderr, "%s: Is a directory\n", name); + return -1; + } + + if (make_parent_dir(name)) + return -1; + env = getenv("KCONFIG_OVERWRITECONFIG"); - if (!env || !*env) { - sprintf(tmpname, "%s.tmpconfig.%d", dirname, (int)getpid()); - out = fopen(tmpname, "w"); - } else { + if (env && *env) { *tmpname = 0; - out = fopen(newname, "w"); + out = fopen(name, "w"); + } else { + snprintf(tmpname, sizeof(tmpname), "%s.%d.tmp", + name, (int)getpid()); + out = fopen(tmpname, "w"); } if (!out) return 1; - conf_write_heading(out, &kconfig_printer_cb, NULL); + conf_write_heading(out, &comment_style_pound); if (!conf_get_changed()) sym_clear_all_valid(); @@ -800,13 +904,18 @@ int conf_write(const char *name) "#\n" "# %s\n" "#\n", str); - } else if (!(sym->flags & SYMBOL_CHOICE)) { + need_newline = false; + } else if (!(sym->flags & SYMBOL_CHOICE) && + !(sym->flags & SYMBOL_WRITTEN)) { sym_calc_value(sym); if (!(sym->flags & SYMBOL_WRITE)) goto next; - sym->flags &= ~SYMBOL_WRITE; - - conf_write_symbol(out, sym, &kconfig_printer_cb, NULL); + if (need_newline) { + fprintf(out, "\n"); + need_newline = false; + } + sym->flags |= SYMBOL_WRITTEN; + print_symbol_for_dotconfig(out, sym); } next: @@ -814,65 +923,111 @@ next: menu = menu->list; continue; } - if (menu->next) + +end_check: + if (!menu->sym && menu_is_visible(menu) && menu != &rootmenu && + menu->prompt->type == P_MENU) { + fprintf(out, "# end of %s\n", menu_get_prompt(menu)); + need_newline = true; + } + + if (menu->next) { menu = menu->next; - else while ((menu = menu->parent)) { - if (menu->next) { - menu = menu->next; - break; - } + } else { + menu = menu->parent; + if (menu) + goto end_check; } } fclose(out); + for_all_symbols(sym) + sym->flags &= ~SYMBOL_WRITTEN; + if (*tmpname) { - strcat(dirname, basename); - strcat(dirname, ".old"); - rename(newname, dirname); - if (rename(tmpname, newname)) + if (is_same(name, tmpname)) { + conf_message("No change to %s", name); + unlink(tmpname); + conf_set_changed(false); + return 0; + } + + snprintf(oldname, sizeof(oldname), "%s.old", name); + rename(name, oldname); + if (rename(tmpname, name)) return 1; } - conf_message(_("configuration written to %s"), newname); + conf_message("configuration written to %s", name); + + conf_set_changed(false); + + return 0; +} + +/* write a dependency file as used by kbuild to track dependencies */ +static int conf_write_autoconf_cmd(const char *autoconf_name) +{ + char name[PATH_MAX], tmp[PATH_MAX]; + FILE *out; + int ret; + + ret = snprintf(name, sizeof(name), "%s.cmd", autoconf_name); + if (ret >= sizeof(name)) /* check truncation */ + return -1; + + if (make_parent_dir(name)) + return -1; + + ret = snprintf(tmp, sizeof(tmp), "%s.cmd.tmp", autoconf_name); + if (ret >= sizeof(tmp)) /* check truncation */ + return -1; + + out = fopen(tmp, "w"); + if (!out) { + perror("fopen"); + return -1; + } + + fprintf(out, "autoconfig := %s\n", autoconf_name); + + fputs(str_get(&autoconf_cmd), out); + + fflush(out); + ret = ferror(out); /* error check for all fprintf() calls */ + fclose(out); + if (ret) + return -1; - sym_set_change_count(0); + if (rename(tmp, name)) { + perror("rename"); + return -1; + } return 0; } -static int conf_split_config(void) +static int conf_touch_deps(void) { - const char *name; - char path[PATH_MAX+1]; - char *opwd, *dir, *_name; - char *s, *d, c; + const char *name, *tmp; struct symbol *sym; - struct stat sb; - int res, i, fd; + int res; name = conf_get_autoconfig_name(); + tmp = strrchr(name, '/'); + depfile_prefix_len = tmp ? tmp - name + 1 : 0; + if (depfile_prefix_len + 1 > sizeof(depfile_path)) + return -1; + + strncpy(depfile_path, name, depfile_prefix_len); + depfile_path[depfile_prefix_len] = 0; + conf_read_simple(name, S_DEF_AUTO); sym_calc_value(modules_sym); - opwd = malloc(256); - _name = strdup(name); - if (opwd == NULL || _name == NULL) - return 1; - opwd = getcwd(opwd, 256); - dir = dirname(_name); - if (dir == NULL) { - res = 1; - goto err; - } - if (chdir(dir)) { - res = 1; - goto err; - } - - res = 0; - for_all_symbols(i, sym) { + for_all_symbols(sym) { sym_calc_value(sym); - if ((sym->flags & SYMBOL_AUTO) || !sym->name) + if ((sym->flags & SYMBOL_NO_WRITE) || !sym->name) continue; if (sym->flags & SYMBOL_WRITE) { if (sym->flags & SYMBOL_DEF_AUTO) { @@ -921,163 +1076,118 @@ static int conf_split_config(void) * different from 'no'). */ - /* Replace all '_' and append ".h" */ - s = sym->name; - d = path; - while ((c = *s++)) { - c = tolower(c); - *d++ = (c == '_') ? '/' : c; - } - strcpy(d, ".h"); - - /* Assume directory path already exists. */ - fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644); - if (fd == -1) { - if (errno != ENOENT) { - res = 1; - break; - } - /* - * Create directory components, - * unless they exist already. - */ - d = path; - while ((d = strchr(d, '/'))) { - *d = 0; - if (stat(path, &sb) && mkdir(path, 0755)) { - res = 1; - goto out; - } - *d++ = '/'; - } - /* Try it again. */ - fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644); - if (fd == -1) { - res = 1; - break; - } - } - close(fd); + res = conf_touch_dep(sym->name); + if (res) + return res; } -out: - if (chdir(opwd)) - res = 1; -err: - free(opwd); - free(_name); - return res; + + return 0; } -int conf_write_autoconf(void) +static int __conf_write_autoconf(const char *filename, + void (*print_symbol)(FILE *, struct symbol *), + const struct comment_style *comment_style) { + char tmp[PATH_MAX]; + FILE *file; struct symbol *sym; - const char *name; - FILE *out, *tristate, *out_h; - int i; - char dir[PATH_MAX+1], buf[PATH_MAX+20]; - char *s; - - strcpy(dir, conf_get_configname()); - s = strrchr(dir, '/'); - if (s) - s[1] = 0; - else - dir[0] = 0; + int ret; - sym_clear_all_valid(); + if (make_parent_dir(filename)) + return -1; - sprintf(buf, "%s.config.cmd", dir); - file_write_dep(buf); + ret = snprintf(tmp, sizeof(tmp), "%s.tmp", filename); + if (ret >= sizeof(tmp)) /* check truncation */ + return -1; - if (conf_split_config()) - return 1; + file = fopen(tmp, "w"); + if (!file) { + perror("fopen"); + return -1; + } - sprintf(buf, "%s.tmpconfig", dir); - out = fopen(buf, "w"); - if (!out) - return 1; + conf_write_heading(file, comment_style); - sprintf(buf, "%s.tmpconfig_tristate", dir); - tristate = fopen(buf, "w"); - if (!tristate) { - fclose(out); - return 1; - } + for_all_symbols(sym) + if ((sym->flags & SYMBOL_WRITE) && sym->name) + print_symbol(file, sym); - sprintf(buf, "%s.tmpconfig.h", dir); - out_h = fopen(buf, "w"); - if (!out_h) { - fclose(out); - fclose(tristate); - return 1; + fflush(file); + /* check possible errors in conf_write_heading() and print_symbol() */ + ret = ferror(file); + fclose(file); + if (ret) + return -1; + + if (rename(tmp, filename)) { + perror("rename"); + return -1; } - conf_write_heading(out, &kconfig_printer_cb, NULL); + return 0; +} - conf_write_heading(tristate, &tristate_printer_cb, NULL); +int conf_write_autoconf(int overwrite) +{ + struct symbol *sym; + const char *autoconf_name = conf_get_autoconfig_name(); + int ret; - conf_write_heading(out_h, &header_printer_cb, NULL); + if (!overwrite && is_present(autoconf_name)) + return 0; - for_all_symbols(i, sym) { - sym_calc_value(sym); - if (!(sym->flags & SYMBOL_WRITE) || !sym->name) - continue; + ret = conf_write_autoconf_cmd(autoconf_name); + if (ret) + return -1; - /* write symbol to auto.conf, tristate and header files */ - conf_write_symbol(out, sym, &kconfig_printer_cb, (void *)1); + if (conf_touch_deps()) + return 1; - conf_write_symbol(tristate, sym, &tristate_printer_cb, (void *)1); + for_all_symbols(sym) + sym_calc_value(sym); - conf_write_symbol(out_h, sym, &header_printer_cb, NULL); - } - fclose(out); - fclose(tristate); - fclose(out_h); + ret = __conf_write_autoconf(conf_get_autoheader_name(), + print_symbol_for_c, + &comment_style_c); + if (ret) + return ret; + + ret = __conf_write_autoconf(conf_get_rustccfg_name(), + print_symbol_for_rustccfg, + NULL); + if (ret) + return ret; - name = getenv("KCONFIG_AUTOHEADER"); - if (!name) - name = "include/generated/autoconf.h"; - sprintf(buf, "%s.tmpconfig.h", dir); - if (rename(buf, name)) - return 1; - name = getenv("KCONFIG_TRISTATE"); - if (!name) - name = "include/config/tristate.conf"; - sprintf(buf, "%s.tmpconfig_tristate", dir); - if (rename(buf, name)) - return 1; - name = conf_get_autoconfig_name(); /* - * This must be the last step, kbuild has a dependency on auto.conf - * and this marks the successful completion of the previous steps. + * Create include/config/auto.conf. This must be the last step because + * Kbuild has a dependency on auto.conf and this marks the successful + * completion of the previous steps. */ - sprintf(buf, "%s.tmpconfig", dir); - if (rename(buf, name)) - return 1; + ret = __conf_write_autoconf(conf_get_autoconfig_name(), + print_symbol_for_autoconf, + &comment_style_pound); + if (ret) + return ret; return 0; } -static int sym_change_count; +static bool conf_changed; static void (*conf_changed_callback)(void); -void sym_set_change_count(int count) +void conf_set_changed(bool val) { - int _sym_change_count = sym_change_count; - sym_change_count = count; - if (conf_changed_callback && - (bool)_sym_change_count != (bool)count) - conf_changed_callback(); -} + bool changed = conf_changed != val; -void sym_add_change_count(int count) -{ - sym_set_change_count(count + sym_change_count); + conf_changed = val; + + if (conf_changed_callback && changed) + conf_changed_callback(); } bool conf_get_changed(void) { - return sym_change_count; + return conf_changed; } void conf_set_changed_callback(void (*fn)(void)) @@ -1085,54 +1195,6 @@ void conf_set_changed_callback(void (*fn)(void)) conf_changed_callback = fn; } -static bool randomize_choice_values(struct symbol *csym) -{ - struct property *prop; - struct symbol *sym; - struct expr *e; - int cnt, def; - - /* - * If choice is mod then we may have more items selected - * and if no then no-one. - * In both cases stop. - */ - if (csym->curr.tri != yes) - return false; - - prop = sym_get_choice_prop(csym); - - /* count entries in choice block */ - cnt = 0; - expr_list_for_each_sym(prop->expr, e, sym) - cnt++; - - /* - * find a random value and set it to yes, - * set the rest to no so we have only one set - */ - def = (rand() % cnt); - - cnt = 0; - expr_list_for_each_sym(prop->expr, e, sym) { - if (def == cnt++) { - sym->def[S_DEF_USER].tri = yes; - csym->def[S_DEF_USER].val = sym; - } - else { - sym->def[S_DEF_USER].tri = no; - } - sym->flags |= SYMBOL_DEF_USER; - /* clear VALID to get value calculated */ - sym->flags &= ~SYMBOL_VALID; - } - csym->flags |= SYMBOL_DEF_USER; - /* clear VALID to get value calculated */ - csym->flags &= ~(SYMBOL_VALID); - - return true; -} - void set_all_choice_values(struct symbol *csym) { struct property *prop; @@ -1152,131 +1214,3 @@ void set_all_choice_values(struct symbol *csym) /* clear VALID to get value calculated */ csym->flags &= ~(SYMBOL_VALID | SYMBOL_NEED_SET_CHOICE_VALUES); } - -bool conf_set_all_new_symbols(enum conf_def_mode mode) -{ - struct symbol *sym, *csym; - int i, cnt, pby, pty, ptm; /* pby: probability of bool = y - * pty: probability of tristate = y - * ptm: probability of tristate = m - */ - - pby = 50; pty = ptm = 33; /* can't go as the default in switch-case - * below, otherwise gcc whines about - * -Wmaybe-uninitialized */ - if (mode == def_random) { - int n, p[3]; - char *env = getenv("KCONFIG_PROBABILITY"); - n = 0; - while( env && *env ) { - char *endp; - int tmp = strtol( env, &endp, 10 ); - if( tmp >= 0 && tmp <= 100 ) { - p[n++] = tmp; - } else { - errno = ERANGE; - perror( "KCONFIG_PROBABILITY" ); - exit( 1 ); - } - env = (*endp == ':') ? endp+1 : endp; - if( n >=3 ) { - break; - } - } - switch( n ) { - case 1: - pby = p[0]; ptm = pby/2; pty = pby-ptm; - break; - case 2: - pty = p[0]; ptm = p[1]; pby = pty + ptm; - break; - case 3: - pby = p[0]; pty = p[1]; ptm = p[2]; - break; - } - - if( pty+ptm > 100 ) { - errno = ERANGE; - perror( "KCONFIG_PROBABILITY" ); - exit( 1 ); - } - } - bool has_changed = false; - - for_all_symbols(i, sym) { - if (sym_has_value(sym) || (sym->flags & SYMBOL_VALID)) - continue; - switch (sym_get_type(sym)) { - case S_BOOLEAN: - case S_TRISTATE: - has_changed = true; - switch (mode) { - case def_yes: - sym->def[S_DEF_USER].tri = yes; - break; - case def_mod: - sym->def[S_DEF_USER].tri = mod; - break; - case def_no: - if (sym->flags & SYMBOL_ALLNOCONFIG_Y) - sym->def[S_DEF_USER].tri = yes; - else - sym->def[S_DEF_USER].tri = no; - break; - case def_random: - sym->def[S_DEF_USER].tri = no; - cnt = rand() % 100; - if (sym->type == S_TRISTATE) { - if (cnt < pty) - sym->def[S_DEF_USER].tri = yes; - else if (cnt < (pty+ptm)) - sym->def[S_DEF_USER].tri = mod; - } else if (cnt < pby) - sym->def[S_DEF_USER].tri = yes; - break; - default: - continue; - } - if (!(sym_is_choice(sym) && mode == def_random)) - sym->flags |= SYMBOL_DEF_USER; - break; - default: - break; - } - - } - - sym_clear_all_valid(); - - /* - * We have different type of choice blocks. - * If curr.tri equals to mod then we can select several - * choice symbols in one block. - * In this case we do nothing. - * If curr.tri equals yes then only one symbol can be - * selected in a choice block and we set it to yes, - * and the rest to no. - */ - if (mode != def_random) { - for_all_symbols(i, csym) { - if ((sym_is_choice(csym) && !sym_has_value(csym)) || - sym_is_choice_value(csym)) - csym->flags |= SYMBOL_NEED_SET_CHOICE_VALUES; - } - } - - for_all_symbols(i, csym) { - if (sym_has_value(csym) || !sym_is_choice(csym)) - continue; - - sym_calc_value(csym); - if (mode == def_random) - has_changed = randomize_choice_values(csym); - else { - set_all_choice_values(csym); - has_changed = true; - } - } - - return has_changed; -} diff --git a/support/kconfig/expr.c b/support/kconfig/expr.c index e1a39e9084..a290de3630 100644 --- a/support/kconfig/expr.c +++ b/support/kconfig/expr.c @@ -1,8 +1,10 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ +#include +#include #include #include #include @@ -11,7 +13,6 @@ #define DEBUG_EXPR 0 -static int expr_eq(struct expr *e1, struct expr *e2); static struct expr *expr_eliminate_yn(struct expr *e); struct expr *expr_alloc_symbol(struct symbol *sym) @@ -248,10 +249,17 @@ void expr_eliminate_eq(struct expr **ep1, struct expr **ep2) * equals some operand in the other (operands do not need to appear in the same * order), recursively. */ -static int expr_eq(struct expr *e1, struct expr *e2) +int expr_eq(struct expr *e1, struct expr *e2) { int res, old_count; + /* + * A NULL expr is taken to be yes, but there's also a different way to + * represent yes. expr_is_yes() checks for either representation. + */ + if (!e1 || !e2) + return expr_is_yes(e1) && expr_is_yes(e2); + if (e1->type != e2->type) return 0; switch (e1->type) { @@ -980,7 +988,6 @@ enum string_value_kind { k_string, k_signed, k_unsigned, - k_invalid }; union string_value { @@ -1011,13 +1018,10 @@ static enum string_value_kind expr_parse_string(const char *str, val->u = strtoull(str, &tail, 16); kind = k_unsigned; break; - case S_STRING: - case S_UNKNOWN: + default: val->s = strtoll(str, &tail, 0); kind = k_signed; break; - default: - return k_invalid; } return !errno && !*tail && tail > str && isxdigit(tail[-1]) ? kind : k_string; @@ -1073,13 +1077,7 @@ tristate expr_calc_value(struct expr *e) if (k1 == k_string || k2 == k_string) res = strcmp(str1, str2); - else if (k1 == k_invalid || k2 == k_invalid) { - if (e->type != E_EQUAL && e->type != E_UNEQUAL) { - printf("Cannot compare \"%s\" and \"%s\"\n", str1, str2); - return no; - } - res = strcmp(str1, str2); - } else if (k1 == k_unsigned || k2 == k_unsigned) + else if (k1 == k_unsigned || k2 == k_unsigned) res = (lval.u > rval.u) - (lval.u < rval.u); else /* if (k1 == k_signed && k2 == k_signed) */ res = (lval.s > rval.s) - (lval.s < rval.s); @@ -1133,7 +1131,6 @@ static int expr_compare_type(enum expr_type t1, enum expr_type t2) default: return -1; } - printf("[%dgt%d?]", t1, t2); return 0; } diff --git a/support/kconfig/expr.h b/support/kconfig/expr.h index 94a383b21d..0158f5eac4 100644 --- a/support/kconfig/expr.h +++ b/support/kconfig/expr.h @@ -1,6 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ #ifndef EXPR_H @@ -12,17 +12,12 @@ extern "C" { #include #include -#include "list.h" +#include "list_types.h" #ifndef __cplusplus #include #endif -struct file { - struct file *next; - struct file *parent; - const char *name; - int lineno; -}; +#include "list_types.h" typedef enum tristate { no, mod, yes @@ -62,7 +57,7 @@ struct symbol_value { }; enum symbol_type { - S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING, S_OTHER + S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING }; /* enum values are used as index to symbol.def[] */ @@ -81,8 +76,8 @@ enum { * SYMBOL_CHOICE bit set in 'flags'. */ struct symbol { - /* The next symbol in the same bucket in the symbol hash table */ - struct symbol *next; + /* link node for the hash table */ + struct hlist_node node; /* The name of the symbol, e.g. "FOO" for 'config FOO' */ char *name; @@ -113,6 +108,9 @@ struct symbol { */ tristate visible; + /* config entries associated with this symbol */ + struct list_head menus; + /* SYMBOL_* flags */ int flags; @@ -131,8 +129,6 @@ struct symbol { struct expr_value implied; }; -#define for_all_symbols(i, sym) for (i = 0; i < SYMBOL_HASHSIZE; i++) for (sym = symbol_hash[i]; sym; sym = sym->next) if (sym->type != S_OTHER) - #define SYMBOL_CONST 0x0001 /* symbol is const */ #define SYMBOL_CHECK 0x0008 /* used during dependency checking */ #define SYMBOL_CHOICE 0x0010 /* start of a choice block (null name) */ @@ -141,7 +137,8 @@ struct symbol { #define SYMBOL_OPTIONAL 0x0100 /* choice is optional - values can be 'n' */ #define SYMBOL_WRITE 0x0200 /* write symbol to file (KCONFIG_CONFIG) */ #define SYMBOL_CHANGED 0x0400 /* ? */ -#define SYMBOL_AUTO 0x1000 /* value from environment variable */ +#define SYMBOL_WRITTEN 0x0800 /* track info to avoid double-write to .config */ +#define SYMBOL_NO_WRITE 0x1000 /* Symbol for internal use only; it will not be written */ #define SYMBOL_CHECKED 0x2000 /* used during dependency checking */ #define SYMBOL_WARNED 0x8000 /* warning has been issued */ @@ -155,11 +152,7 @@ struct symbol { /* choice values need to be set before calculating this symbol value */ #define SYMBOL_NEED_SET_CHOICE_VALUES 0x100000 -/* Set symbol to y if allnoconfig; used for symbols that hide others */ -#define SYMBOL_ALLNOCONFIG_Y 0x200000 - #define SYMBOL_MAXLENGTH 256 -#define SYMBOL_HASHSIZE 9973 /* A property represent the config options that can be associated * with a config "symbol". @@ -171,6 +164,9 @@ struct symbol { * config BAZ * int "BAZ Value" * range 1..255 + * + * Please, also check parser.y:print_symbol() when modifying the + * list of property types! */ enum prop_type { P_UNKNOWN, @@ -182,13 +178,11 @@ enum prop_type { P_SELECT, /* select BAR */ P_IMPLY, /* imply BAR */ P_RANGE, /* range 7..100 (for a symbol) */ - P_ENV, /* value from environment variable */ P_SYMBOL, /* where a symbol is defined */ }; struct property { struct property *next; /* next property - null if last */ - struct symbol *sym; /* the symbol for which the property is associated */ enum prop_type type; /* type of property */ const char *text; /* the prompt value - P_PROMPT, P_MENU, P_COMMENT */ struct expr_value visible; @@ -196,7 +190,7 @@ struct property { struct menu *menu; /* the menu the property are associated with * valid for: P_SELECT, P_RANGE, P_CHOICE, * P_PROMPT, P_DEFAULT, P_MENU, P_COMMENT */ - struct file *file; /* what file was this property defined */ + const char *filename; /* what file was this property defined */ int lineno; /* what lineno was this property defined */ }; @@ -231,6 +225,8 @@ struct menu { */ struct symbol *sym; + struct list_head link; /* link to symbol::menus */ + /* * The prompt associated with the node. This holds the prompt for a * symbol as well as the text for a menu or comment, along with the @@ -257,7 +253,7 @@ struct menu { char *help; /* The location where the menu node appears in the Kconfig files */ - struct file *file; + const char *filename; int lineno; /* For use by front ends that need to store auxiliary data */ @@ -276,18 +272,10 @@ struct jump_key { struct list_head entries; size_t offset; struct menu *target; - int index; }; -#define JUMP_NB 9 - -extern struct file *file_list; -extern struct file *current_file; -struct file *lookup_file(const char *name); - extern struct symbol symbol_yes, symbol_no, symbol_mod; extern struct symbol *modules_sym; -extern struct symbol *sym_defconfig_list; extern int cdebug; struct expr *expr_alloc_symbol(struct symbol *sym); struct expr *expr_alloc_one(enum expr_type type, struct expr *ce); @@ -298,6 +286,7 @@ struct expr *expr_alloc_or(struct expr *e1, struct expr *e2); struct expr *expr_copy(const struct expr *org); void expr_free(struct expr *e); void expr_eliminate_eq(struct expr **ep1, struct expr **ep2); +int expr_eq(struct expr *e1, struct expr *e2); tristate expr_calc_value(struct expr *e); struct expr *expr_trans_bool(struct expr *e); struct expr *expr_eliminate_dups(struct expr *e); diff --git a/support/kconfig/foo.h b/support/kconfig/foo.h deleted file mode 100644 index b9cfdf8312..0000000000 --- a/support/kconfig/foo.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef __KCONFIG_FOO_H -#define __KCONFIG_FOO_H - -#ifndef __APPLE__ -#include -#endif -#include - -#ifndef PATH_MAX -#define PATH_MAX 1024 -#endif -#endif /* __KCONFIG_FOO_H */ diff --git a/support/kconfig/gconf-cfg.sh b/support/kconfig/gconf-cfg.sh new file mode 100755 index 0000000000..040d8f3388 --- /dev/null +++ b/support/kconfig/gconf-cfg.sh @@ -0,0 +1,33 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +cflags=$1 +libs=$2 + +PKG="gtk+-2.0 gmodule-2.0 libglade-2.0" + +if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then + echo >&2 "*" + echo >&2 "* 'make gconfig' requires '${HOSTPKG_CONFIG}'. Please install it." + echo >&2 "*" + exit 1 +fi + +if ! ${HOSTPKG_CONFIG} --exists $PKG; then + echo >&2 "*" + echo >&2 "* Unable to find the GTK+ installation. Please make sure that" + echo >&2 "* the GTK+ 2.0 development package is correctly installed." + echo >&2 "* You need $PKG" + echo >&2 "*" + exit 1 +fi + +if ! ${HOSTPKG_CONFIG} --atleast-version=2.0.0 gtk+-2.0; then + echo >&2 "*" + echo >&2 "* GTK+ is present but version >= 2.0.0 is required." + echo >&2 "*" + exit 1 +fi + +${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags} +${HOSTPKG_CONFIG} --libs ${PKG} > ${libs} diff --git a/support/kconfig/gconf.c b/support/kconfig/gconf.c index 0c2d1c18f9..d24cebd974 100644 --- a/support/kconfig/gconf.c +++ b/support/kconfig/gconf.c @@ -1,18 +1,11 @@ -/* Hey EMACS -*- linux-c -*- */ +// SPDX-License-Identifier: GPL-2.0 /* - * * Copyright (C) 2002-2003 Romain Lievin - * Released under the terms of the GNU GPL v2.0. - * */ -#ifdef HAVE_CONFIG_H -# include -#endif - #include #include "lkc.h" -#include "images.c" +#include "images.h" #include #include @@ -21,6 +14,7 @@ #include #include +#include #include #include @@ -78,8 +72,8 @@ static gchar **fill_row(struct menu *menu); static void conf_changed(void); /* Helping/Debugging Functions */ - -const char *dbg_sym_flags(int val) +#ifdef DEBUG +static const char *dbg_sym_flags(int val) { static char buf[256]; @@ -101,16 +95,17 @@ const char *dbg_sym_flags(int val) strcat(buf, "write/"); if (val & SYMBOL_CHANGED) strcat(buf, "changed/"); - if (val & SYMBOL_AUTO) - strcat(buf, "auto/"); + if (val & SYMBOL_NO_WRITE) + strcat(buf, "no_write/"); buf[strlen(buf) - 1] = '\0'; return buf; } +#endif -void replace_button_icon(GladeXML * xml, GdkDrawable * window, - GtkStyle * style, gchar * btn_name, gchar ** xpm) +static void replace_button_icon(GladeXML *xml, GdkDrawable *window, + GtkStyle *style, gchar *btn_name, gchar **xpm) { GdkPixmap *pixmap; GdkBitmap *mask; @@ -128,7 +123,7 @@ void replace_button_icon(GladeXML * xml, GdkDrawable * window, } /* Main Window Initialization */ -void init_main_window(const gchar * glade_file) +static void init_main_window(const gchar *glade_file) { GladeXML *xml; GtkWidget *widget; @@ -137,7 +132,7 @@ void init_main_window(const gchar * glade_file) xml = glade_xml_new(glade_file, "window1", NULL); if (!xml) - g_error(_("GUI loading failed !\n")); + g_error("GUI loading failed !\n"); glade_xml_signal_autoconnect(xml); main_wnd = glade_xml_get_widget(xml, "window1"); @@ -190,7 +185,7 @@ void init_main_window(const gchar * glade_file) gtk_widget_show(main_wnd); } -void init_tree_model(void) +static void init_tree_model(void) { gint i; @@ -220,7 +215,7 @@ void init_tree_model(void) model1 = GTK_TREE_MODEL(tree1); } -void init_left_tree(void) +static void init_left_tree(void) { GtkTreeView *view = GTK_TREE_VIEW(tree1_w); GtkCellRenderer *renderer; @@ -233,7 +228,7 @@ void init_left_tree(void) column = gtk_tree_view_column_new(); gtk_tree_view_append_column(view, column); - gtk_tree_view_column_set_title(column, _("Options")); + gtk_tree_view_column_set_title(column, "Options"); renderer = gtk_cell_renderer_toggle_new(); gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), @@ -262,7 +257,7 @@ static void renderer_edited(GtkCellRendererText * cell, const gchar * path_string, const gchar * new_text, gpointer user_data); -void init_right_tree(void) +static void init_right_tree(void) { GtkTreeView *view = GTK_TREE_VIEW(tree2_w); GtkCellRenderer *renderer; @@ -276,7 +271,7 @@ void init_right_tree(void) column = gtk_tree_view_column_new(); gtk_tree_view_append_column(view, column); - gtk_tree_view_column_set_title(column, _("Options")); + gtk_tree_view_column_set_title(column, "Options"); renderer = gtk_cell_renderer_pixbuf_new(); gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), @@ -305,7 +300,7 @@ void init_right_tree(void) renderer = gtk_cell_renderer_text_new(); gtk_tree_view_insert_column_with_attributes(view, -1, - _("Name"), renderer, + "Name", renderer, "text", COL_NAME, "foreground-gdk", COL_COLOR, NULL); @@ -329,7 +324,7 @@ void init_right_tree(void) COL_COLOR, NULL); renderer = gtk_cell_renderer_text_new(); gtk_tree_view_insert_column_with_attributes(view, -1, - _("Value"), renderer, + "Value", renderer, "text", COL_VALUE, "editable", COL_EDIT, @@ -368,7 +363,7 @@ static void text_insert_help(struct menu *menu) { GtkTextBuffer *buffer; GtkTextIter start, end; - const char *prompt = _(menu_get_prompt(menu)); + const char *prompt = menu_get_prompt(menu); struct gstr help = str_new(); menu_get_ext_help(menu, &help); @@ -422,7 +417,7 @@ gboolean on_window1_delete_event(GtkWidget * widget, GdkEvent * event, if (!conf_get_changed()) return FALSE; - dialog = gtk_dialog_new_with_buttons(_("Warning !"), + dialog = gtk_dialog_new_with_buttons("Warning !", GTK_WINDOW(main_wnd), (GtkDialogFlags) (GTK_DIALOG_MODAL | @@ -436,7 +431,7 @@ gboolean on_window1_delete_event(GtkWidget * widget, GdkEvent * event, gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_CANCEL); - label = gtk_label_new(_("\nSave configuration ?\n")); + label = gtk_label_new("\nSave configuration ?\n"); gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), label); gtk_widget_show(label); @@ -496,7 +491,7 @@ load_filename(GtkFileSelection * file_selector, gpointer user_data) (user_data)); if (conf_read(fn)) - text_insert_msg(_("Error"), _("Unable to load configuration !")); + text_insert_msg("Error", "Unable to load configuration !"); else display_tree(&rootmenu); } @@ -505,7 +500,7 @@ void on_load1_activate(GtkMenuItem * menuitem, gpointer user_data) { GtkWidget *fs; - fs = gtk_file_selection_new(_("Load file...")); + fs = gtk_file_selection_new("Load file..."); g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fs)->ok_button), "clicked", G_CALLBACK(load_filename), (gpointer) fs); @@ -524,7 +519,8 @@ void on_load1_activate(GtkMenuItem * menuitem, gpointer user_data) void on_save_activate(GtkMenuItem * menuitem, gpointer user_data) { if (conf_write(NULL)) - text_insert_msg(_("Error"), _("Unable to save configuration !")); + text_insert_msg("Error", "Unable to save configuration !"); + conf_write_autoconf(0); } @@ -537,7 +533,7 @@ store_filename(GtkFileSelection * file_selector, gpointer user_data) (user_data)); if (conf_write(fn)) - text_insert_msg(_("Error"), _("Unable to save configuration !")); + text_insert_msg("Error", "Unable to save configuration !"); gtk_widget_destroy(GTK_WIDGET(user_data)); } @@ -546,7 +542,7 @@ void on_save_as1_activate(GtkMenuItem * menuitem, gpointer user_data) { GtkWidget *fs; - fs = gtk_file_selection_new(_("Save file as...")); + fs = gtk_file_selection_new("Save file as..."); g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fs)->ok_button), "clicked", G_CALLBACK(store_filename), (gpointer) fs); @@ -639,8 +635,8 @@ on_set_option_mode3_activate(GtkMenuItem *menuitem, gpointer user_data) void on_introduction1_activate(GtkMenuItem * menuitem, gpointer user_data) { GtkWidget *dialog; - const gchar *intro_text = _( - "Welcome to gkc, the GTK+ graphical configuration tool\n" + const gchar *intro_text = + "Welcome to gconfig, the GTK+ graphical configuration tool.\n" "For each option, a blank box indicates the feature is disabled, a\n" "check indicates it is enabled, and a dot indicates that it is to\n" "be compiled as a module. Clicking on the box will cycle through the three states.\n" @@ -651,10 +647,7 @@ void on_introduction1_activate(GtkMenuItem * menuitem, gpointer user_data) "Although there is no cross reference yet to help you figure out\n" "what other options must be enabled to support the option you\n" "are interested in, you can still view the help of a grayed-out\n" - "option.\n" - "\n" - "Toggling Show Debug Info under the Options menu will show \n" - "the dependencies, which you can then match by examining other options."); + "option."; dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), GTK_DIALOG_DESTROY_WITH_PARENT, @@ -671,8 +664,8 @@ void on_about1_activate(GtkMenuItem * menuitem, gpointer user_data) { GtkWidget *dialog; const gchar *about_text = - _("gkc is copyright (c) 2002 Romain Lievin .\n" - "Based on the source code from Roman Zippel.\n"); + "gconfig is copyright (c) 2002 Romain Lievin .\n" + "Based on the source code from Roman Zippel.\n"; dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), GTK_DIALOG_DESTROY_WITH_PARENT, @@ -689,9 +682,9 @@ void on_license1_activate(GtkMenuItem * menuitem, gpointer user_data) { GtkWidget *dialog; const gchar *license_text = - _("gkc is released under the terms of the GNU GPL v2.\n" + "gconfig is released under the terms of the GNU GPL v2.\n" "For more information, please see the source code or\n" - "visit http://www.fsf.org/licenses/licenses.html\n"); + "visit http://www.fsf.org/licenses/licenses.html\n"; dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), GTK_DIALOG_DESTROY_WITH_PARENT, @@ -1048,8 +1041,13 @@ static gchar **fill_row(struct menu *menu) g_free(row[i]); bzero(row, sizeof(row)); + ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; + row[COL_OPTION] = - g_strdup_printf("%s %s", _(menu_get_prompt(menu)), + g_strdup_printf("%s %s %s %s", + ptype == P_COMMENT ? "***" : "", + menu_get_prompt(menu), + ptype == P_COMMENT ? "***" : "", sym && !sym_has_value(sym) ? "(NEW)" : ""); if (opt_mode == OPT_ALL && !menu_is_visible(menu)) @@ -1060,7 +1058,6 @@ static gchar **fill_row(struct menu *menu) else row[COL_COLOR] = g_strdup("Black"); - ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; switch (ptype) { case P_MENU: row[COL_PIXBUF] = (gchar *) xpm_menu; @@ -1102,7 +1099,7 @@ static gchar **fill_row(struct menu *menu) if (def_menu) row[COL_VALUE] = - g_strdup(_(menu_get_prompt(def_menu))); + g_strdup(menu_get_prompt(def_menu)); } if (sym->flags & SYMBOL_CHOICEVAL) row[COL_BTNRAD] = GINT_TO_POINTER(TRUE); @@ -1211,8 +1208,8 @@ static GtkTreeIter found; /* * Find a menu in the GtkTree starting at parent. */ -GtkTreeIter *gtktree_iter_find_node(GtkTreeIter * parent, - struct menu *tofind) +static GtkTreeIter *gtktree_iter_find_node(GtkTreeIter *parent, + struct menu *tofind) { GtkTreeIter iter; GtkTreeIter *child = &iter; @@ -1423,7 +1420,7 @@ static void display_list(void) tree = tree2; } -void fixup_rootmenu(struct menu *menu) +static void fixup_rootmenu(struct menu *menu) { struct menu *child; static int menu_cnt = 0; @@ -1447,18 +1444,11 @@ int main(int ac, char *av[]) char *env; gchar *glade_file; - bindtextdomain(PACKAGE, LOCALEDIR); - bind_textdomain_codeset(PACKAGE, "UTF-8"); - textdomain(PACKAGE); - /* GTK stuffs */ gtk_set_locale(); gtk_init(&ac, &av); glade_init(); - //add_pixmap_directory (PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps"); - //add_pixmap_directory (PACKAGE_SOURCE_DIR "/pixmaps"); - /* Determine GUI path */ env = getenv(SRCTREE); if (env) diff --git a/support/kconfig/hashtable.h b/support/kconfig/hashtable.h new file mode 100644 index 0000000000..a0a2c8f5f6 --- /dev/null +++ b/support/kconfig/hashtable.h @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +#ifndef HASHTABLE_H +#define HASHTABLE_H + +#include "array_size.h" +#include "list.h" + +#define HASH_SIZE(name) (ARRAY_SIZE(name)) + +#define HASHTABLE_DECLARE(name, size) struct hlist_head name[size] + +#define HASHTABLE_DEFINE(name, size) \ + HASHTABLE_DECLARE(name, size) = \ + { [0 ... ((size) - 1)] = HLIST_HEAD_INIT } + +#define hash_head(table, key) (&(table)[(key) % HASH_SIZE(table)]) + +/** + * hash_add - add an object to a hashtable + * @table: hashtable to add to + * @node: the &struct hlist_node of the object to be added + * @key: the key of the object to be added + */ +#define hash_add(table, node, key) \ + hlist_add_head(node, hash_head(table, key)) + +/** + * hash_for_each - iterate over a hashtable + * @table: hashtable to iterate + * @obj: the type * to use as a loop cursor for each entry + * @member: the name of the hlist_node within the struct + */ +#define hash_for_each(table, obj, member) \ + for (int _bkt = 0; _bkt < HASH_SIZE(table); _bkt++) \ + hlist_for_each_entry(obj, &table[_bkt], member) + +/** + * hash_for_each_possible - iterate over all possible objects hashing to the + * same bucket + * @table: hashtable to iterate + * @obj: the type * to use as a loop cursor for each entry + * @member: the name of the hlist_node within the struct + * @key: the key of the objects to iterate over + */ +#define hash_for_each_possible(table, obj, member, key) \ + hlist_for_each_entry(obj, hash_head(table, key), member) + +#endif /* HASHTABLE_H */ diff --git a/support/kconfig/images.c b/support/kconfig/images.c index d4f84bd4a9..2f9afffa5d 100644 --- a/support/kconfig/images.c +++ b/support/kconfig/images.c @@ -1,9 +1,11 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ -static const char *xpm_load[] = { +#include "images.h" + +const char * const xpm_load[] = { "22 22 5 1", ". c None", "# c #000000", @@ -33,7 +35,7 @@ static const char *xpm_load[] = { "###############.......", "......................"}; -static const char *xpm_save[] = { +const char * const xpm_save[] = { "22 22 5 1", ". c None", "# c #000000", @@ -63,7 +65,7 @@ static const char *xpm_save[] = { "..##################..", "......................"}; -static const char *xpm_back[] = { +const char * const xpm_back[] = { "22 22 3 1", ". c None", "# c #000083", @@ -91,7 +93,7 @@ static const char *xpm_back[] = { "......................", "......................"}; -static const char *xpm_tree_view[] = { +const char * const xpm_tree_view[] = { "22 22 2 1", ". c None", "# c #000000", @@ -118,7 +120,7 @@ static const char *xpm_tree_view[] = { "......................", "......................"}; -static const char *xpm_single_view[] = { +const char * const xpm_single_view[] = { "22 22 2 1", ". c None", "# c #000000", @@ -145,7 +147,7 @@ static const char *xpm_single_view[] = { "......................", "......................"}; -static const char *xpm_split_view[] = { +const char * const xpm_split_view[] = { "22 22 2 1", ". c None", "# c #000000", @@ -172,7 +174,7 @@ static const char *xpm_split_view[] = { "......................", "......................"}; -static const char *xpm_symbol_no[] = { +const char * const xpm_symbol_no[] = { "12 12 2 1", " c white", ". c black", @@ -189,7 +191,7 @@ static const char *xpm_symbol_no[] = { " .......... ", " "}; -static const char *xpm_symbol_mod[] = { +const char * const xpm_symbol_mod[] = { "12 12 2 1", " c white", ". c black", @@ -206,7 +208,7 @@ static const char *xpm_symbol_mod[] = { " .......... ", " "}; -static const char *xpm_symbol_yes[] = { +const char * const xpm_symbol_yes[] = { "12 12 2 1", " c white", ". c black", @@ -223,7 +225,7 @@ static const char *xpm_symbol_yes[] = { " .......... ", " "}; -static const char *xpm_choice_no[] = { +const char * const xpm_choice_no[] = { "12 12 2 1", " c white", ". c black", @@ -240,7 +242,7 @@ static const char *xpm_choice_no[] = { " .... ", " "}; -static const char *xpm_choice_yes[] = { +const char * const xpm_choice_yes[] = { "12 12 2 1", " c white", ". c black", @@ -257,7 +259,7 @@ static const char *xpm_choice_yes[] = { " .... ", " "}; -static const char *xpm_menu[] = { +const char * const xpm_menu[] = { "12 12 2 1", " c white", ". c black", @@ -274,7 +276,7 @@ static const char *xpm_menu[] = { " .......... ", " "}; -static const char *xpm_menu_inv[] = { +const char * const xpm_menu_inv[] = { "12 12 2 1", " c white", ". c black", @@ -291,7 +293,7 @@ static const char *xpm_menu_inv[] = { " .......... ", " "}; -static const char *xpm_menuback[] = { +const char * const xpm_menuback[] = { "12 12 2 1", " c white", ". c black", @@ -308,7 +310,7 @@ static const char *xpm_menuback[] = { " .......... ", " "}; -static const char *xpm_void[] = { +const char * const xpm_void[] = { "12 12 2 1", " c white", ". c black", diff --git a/support/kconfig/images.h b/support/kconfig/images.h new file mode 100644 index 0000000000..7212dec200 --- /dev/null +++ b/support/kconfig/images.h @@ -0,0 +1,33 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2002 Roman Zippel + */ + +#ifndef IMAGES_H +#define IMAGES_H + +#ifdef __cplusplus +extern "C" { +#endif + +extern const char * const xpm_load[]; +extern const char * const xpm_save[]; +extern const char * const xpm_back[]; +extern const char * const xpm_tree_view[]; +extern const char * const xpm_single_view[]; +extern const char * const xpm_split_view[]; +extern const char * const xpm_symbol_no[]; +extern const char * const xpm_symbol_mod[]; +extern const char * const xpm_symbol_yes[]; +extern const char * const xpm_choice_no[]; +extern const char * const xpm_choice_yes[]; +extern const char * const xpm_menu[]; +extern const char * const xpm_menu_inv[]; +extern const char * const xpm_menuback[]; +extern const char * const xpm_void[]; + +#ifdef __cplusplus +} +#endif + +#endif /* IMAGES_H */ diff --git a/support/kconfig/internal.h b/support/kconfig/internal.h new file mode 100644 index 0000000000..6c721c4cfd --- /dev/null +++ b/support/kconfig/internal.h @@ -0,0 +1,21 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +#ifndef INTERNAL_H +#define INTERNAL_H + +#include "hashtable.h" + +#define SYMBOL_HASHSIZE (1U << 14) + +extern HASHTABLE_DECLARE(sym_hashtable, SYMBOL_HASHSIZE); + +#define for_all_symbols(sym) \ + hash_for_each(sym_hashtable, sym, node) + +struct menu; + +extern struct menu *current_menu, *current_entry; + +extern const char *cur_filename; +extern int cur_lineno; + +#endif /* INTERNAL_H */ diff --git a/support/kconfig/kconf_id.c b/support/kconfig/kconf_id.c deleted file mode 100644 index 3ea9c5f9f7..0000000000 --- a/support/kconfig/kconf_id.c +++ /dev/null @@ -1,53 +0,0 @@ - -static struct kconf_id kconf_id_array[] = { - { "mainmenu", T_MAINMENU, TF_COMMAND }, - { "menu", T_MENU, TF_COMMAND }, - { "endmenu", T_ENDMENU, TF_COMMAND }, - { "source", T_SOURCE, TF_COMMAND }, - { "choice", T_CHOICE, TF_COMMAND }, - { "endchoice", T_ENDCHOICE, TF_COMMAND }, - { "comment", T_COMMENT, TF_COMMAND }, - { "config", T_CONFIG, TF_COMMAND }, - { "menuconfig", T_MENUCONFIG, TF_COMMAND }, - { "help", T_HELP, TF_COMMAND }, - { "---help---", T_HELP, TF_COMMAND }, - { "if", T_IF, TF_COMMAND|TF_PARAM }, - { "endif", T_ENDIF, TF_COMMAND }, - { "depends", T_DEPENDS, TF_COMMAND }, - { "optional", T_OPTIONAL, TF_COMMAND }, - { "default", T_DEFAULT, TF_COMMAND, S_UNKNOWN }, - { "prompt", T_PROMPT, TF_COMMAND }, - { "tristate", T_TYPE, TF_COMMAND, S_TRISTATE }, - { "def_tristate", T_DEFAULT, TF_COMMAND, S_TRISTATE }, - { "bool", T_TYPE, TF_COMMAND, S_BOOLEAN }, - { "def_bool", T_DEFAULT, TF_COMMAND, S_BOOLEAN }, - { "int", T_TYPE, TF_COMMAND, S_INT }, - { "hex", T_TYPE, TF_COMMAND, S_HEX }, - { "string", T_TYPE, TF_COMMAND, S_STRING }, - { "select", T_SELECT, TF_COMMAND }, - { "imply", T_IMPLY, TF_COMMAND }, - { "range", T_RANGE, TF_COMMAND }, - { "visible", T_VISIBLE, TF_COMMAND }, - { "option", T_OPTION, TF_COMMAND }, - { "on", T_ON, TF_PARAM }, - { "modules", T_OPT_MODULES, TF_OPTION }, - { "defconfig_list", T_OPT_DEFCONFIG_LIST, TF_OPTION }, - { "env", T_OPT_ENV, TF_OPTION }, - { "allnoconfig_y", T_OPT_ALLNOCONFIG_Y, TF_OPTION }, -}; - -#define KCONF_ID_ARRAY_SIZE (sizeof(kconf_id_array)/sizeof(struct kconf_id)) - -static const struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len) -{ - int i; - - for (i = 0; i < KCONF_ID_ARRAY_SIZE; i++) { - struct kconf_id *id = kconf_id_array+i; - int l = strlen(id->name); - - if (len == l && !memcmp(str, id->name, len)) - return id; - } - return NULL; -} diff --git a/support/kconfig/kxgettext.c b/support/kconfig/kxgettext.c deleted file mode 100644 index 240880a891..0000000000 --- a/support/kconfig/kxgettext.c +++ /dev/null @@ -1,235 +0,0 @@ -/* - * Arnaldo Carvalho de Melo , 2005 - * - * Released under the terms of the GNU GPL v2.0 - */ - -#include -#include - -#include "lkc.h" - -static char *escape(const char* text, char *bf, int len) -{ - char *bfp = bf; - int multiline = strchr(text, '\n') != NULL; - int eol = 0; - int textlen = strlen(text); - - if ((textlen > 0) && (text[textlen-1] == '\n')) - eol = 1; - - *bfp++ = '"'; - --len; - - if (multiline) { - *bfp++ = '"'; - *bfp++ = '\n'; - *bfp++ = '"'; - len -= 3; - } - - while (*text != '\0' && len > 1) { - if (*text == '"') - *bfp++ = '\\'; - else if (*text == '\n') { - *bfp++ = '\\'; - *bfp++ = 'n'; - *bfp++ = '"'; - *bfp++ = '\n'; - *bfp++ = '"'; - len -= 5; - ++text; - goto next; - } - else if (*text == '\\') { - *bfp++ = '\\'; - len--; - } - *bfp++ = *text++; -next: - --len; - } - - if (multiline && eol) - bfp -= 3; - - *bfp++ = '"'; - *bfp = '\0'; - - return bf; -} - -struct file_line { - struct file_line *next; - const char *file; - int lineno; -}; - -static struct file_line *file_line__new(const char *file, int lineno) -{ - struct file_line *self = malloc(sizeof(*self)); - - if (self == NULL) - goto out; - - self->file = file; - self->lineno = lineno; - self->next = NULL; -out: - return self; -} - -struct message { - const char *msg; - const char *option; - struct message *next; - struct file_line *files; -}; - -static struct message *message__list; - -static struct message *message__new(const char *msg, char *option, - const char *file, int lineno) -{ - struct message *self = malloc(sizeof(*self)); - - if (self == NULL) - goto out; - - self->files = file_line__new(file, lineno); - if (self->files == NULL) - goto out_fail; - - self->msg = xstrdup(msg); - if (self->msg == NULL) - goto out_fail_msg; - - self->option = option; - self->next = NULL; -out: - return self; -out_fail_msg: - free(self->files); -out_fail: - free(self); - self = NULL; - goto out; -} - -static struct message *mesage__find(const char *msg) -{ - struct message *m = message__list; - - while (m != NULL) { - if (strcmp(m->msg, msg) == 0) - break; - m = m->next; - } - - return m; -} - -static int message__add_file_line(struct message *self, const char *file, - int lineno) -{ - int rc = -1; - struct file_line *fl = file_line__new(file, lineno); - - if (fl == NULL) - goto out; - - fl->next = self->files; - self->files = fl; - rc = 0; -out: - return rc; -} - -static int message__add(const char *msg, char *option, const char *file, - int lineno) -{ - int rc = 0; - char bf[16384]; - char *escaped = escape(msg, bf, sizeof(bf)); - struct message *m = mesage__find(escaped); - - if (m != NULL) - rc = message__add_file_line(m, file, lineno); - else { - m = message__new(escaped, option, file, lineno); - - if (m != NULL) { - m->next = message__list; - message__list = m; - } else - rc = -1; - } - return rc; -} - -static void menu_build_message_list(struct menu *menu) -{ - struct menu *child; - - message__add(menu_get_prompt(menu), NULL, - menu->file == NULL ? "Root Menu" : menu->file->name, - menu->lineno); - - if (menu->sym != NULL && menu_has_help(menu)) - message__add(menu_get_help(menu), menu->sym->name, - menu->file == NULL ? "Root Menu" : menu->file->name, - menu->lineno); - - for (child = menu->list; child != NULL; child = child->next) - if (child->prompt != NULL) - menu_build_message_list(child); -} - -static void message__print_file_lineno(struct message *self) -{ - struct file_line *fl = self->files; - - putchar('\n'); - if (self->option != NULL) - printf("# %s:00000\n", self->option); - - printf("#: %s:%d", fl->file, fl->lineno); - fl = fl->next; - - while (fl != NULL) { - printf(", %s:%d", fl->file, fl->lineno); - fl = fl->next; - } - - putchar('\n'); -} - -static void message__print_gettext_msgid_msgstr(struct message *self) -{ - message__print_file_lineno(self); - - printf("msgid %s\n" - "msgstr \"\"\n", self->msg); -} - -static void menu__xgettext(void) -{ - struct message *m = message__list; - - while (m != NULL) { - /* skip empty lines ("") */ - if (strlen(m->msg) > sizeof("\"\"")) - message__print_gettext_msgid_msgstr(m); - m = m->next; - } -} - -int main(int ac, char **av) -{ - conf_parse(av[1]); - - menu_build_message_list(menu_get_root_menu(NULL)); - menu__xgettext(); - return 0; -} diff --git a/support/kconfig/lexer.l b/support/kconfig/lexer.l new file mode 100644 index 0000000000..89544c3a1a --- /dev/null +++ b/support/kconfig/lexer.l @@ -0,0 +1,460 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2002 Roman Zippel + */ +%option nostdinit noyywrap never-interactive full ecs +%option 8bit nodefault yylineno +%x ASSIGN_VAL HELP STRING +%{ + +#include +#include +#include +#include +#include + +#include "lkc.h" +#include "preprocess.h" + +#include "parser.tab.h" + +#define YY_DECL static int yylex1(void) + +#define START_STRSIZE 16 + +/* The Kconfig file currently being parsed. */ +const char *cur_filename; + +/* + * The line number of the current statement. This does not match yylineno. + * yylineno is used by the lexer, while cur_lineno is used by the parser. + */ +int cur_lineno; + +static int prev_prev_token = T_EOL; +static int prev_token = T_EOL; +static char *text; +static int text_size, text_asize; + +struct buffer { + struct buffer *parent; + YY_BUFFER_STATE state; + int yylineno; + const char *filename; + int source_lineno; +}; + +static struct buffer *current_buf; + +static int last_ts, first_ts; + +static char *expand_token(const char *in, size_t n); +static void append_expanded_string(const char *in); +static void zconf_endhelp(void); +static void zconf_endfile(void); + +static void new_string(void) +{ + text = xmalloc(START_STRSIZE); + text_asize = START_STRSIZE; + text_size = 0; + *text = 0; +} + +static void append_string(const char *str, int size) +{ + int new_size = text_size + size + 1; + if (new_size > text_asize) { + new_size += START_STRSIZE - 1; + new_size &= -START_STRSIZE; + text = xrealloc(text, new_size); + text_asize = new_size; + } + memcpy(text + text_size, str, size); + text_size += size; + text[text_size] = 0; +} + +static void alloc_string(const char *str, int size) +{ + text = xmalloc(size + 1); + memcpy(text, str, size); + text[size] = 0; +} + +static void warn_ignored_character(char chr) +{ + fprintf(stderr, + "%s:%d:warning: ignoring unsupported character '%c'\n", + cur_filename, yylineno, chr); +} +%} + +n [A-Za-z0-9_-] + +%% + char open_quote = 0; + +#.* /* ignore comment */ +[ \t]* /* whitespaces */ +\\\n /* escaped new line */ +\n return T_EOL; +"bool" return T_BOOL; +"choice" return T_CHOICE; +"comment" return T_COMMENT; +"config" return T_CONFIG; +"def_bool" return T_DEF_BOOL; +"def_tristate" return T_DEF_TRISTATE; +"default" return T_DEFAULT; +"depends" return T_DEPENDS; +"endchoice" return T_ENDCHOICE; +"endif" return T_ENDIF; +"endmenu" return T_ENDMENU; +"help" return T_HELP; +"hex" return T_HEX; +"if" return T_IF; +"imply" return T_IMPLY; +"int" return T_INT; +"mainmenu" return T_MAINMENU; +"menu" return T_MENU; +"menuconfig" return T_MENUCONFIG; +"modules" return T_MODULES; +"on" return T_ON; +"optional" return T_OPTIONAL; +"prompt" return T_PROMPT; +"range" return T_RANGE; +"select" return T_SELECT; +"source" return T_SOURCE; +"string" return T_STRING; +"tristate" return T_TRISTATE; +"visible" return T_VISIBLE; +"||" return T_OR; +"&&" return T_AND; +"=" return T_EQUAL; +"!=" return T_UNEQUAL; +"<" return T_LESS; +"<=" return T_LESS_EQUAL; +">" return T_GREATER; +">=" return T_GREATER_EQUAL; +"!" return T_NOT; +"(" return T_OPEN_PAREN; +")" return T_CLOSE_PAREN; +":=" return T_COLON_EQUAL; +"+=" return T_PLUS_EQUAL; +\"|\' { + open_quote = yytext[0]; + new_string(); + BEGIN(STRING); + } +{n}+ { + alloc_string(yytext, yyleng); + yylval.string = text; + return T_WORD; + } +({n}|$)+ { + /* this token includes at least one '$' */ + yylval.string = expand_token(yytext, yyleng); + if (strlen(yylval.string)) + return T_WORD; + free(yylval.string); + } +. warn_ignored_character(*yytext); + +{ + [^[:blank:]\n]+.* { + alloc_string(yytext, yyleng); + yylval.string = text; + return T_ASSIGN_VAL; + } + \n { BEGIN(INITIAL); return T_EOL; } + . +} + +{ + "$".* append_expanded_string(yytext); + [^$'"\\\n]+ { + append_string(yytext, yyleng); + } + \\.? { + append_string(yytext + 1, yyleng - 1); + } + \'|\" { + if (open_quote == yytext[0]) { + BEGIN(INITIAL); + yylval.string = text; + return T_WORD_QUOTE; + } else + append_string(yytext, 1); + } + \n { + fprintf(stderr, + "%s:%d:warning: multi-line strings not supported\n", + cur_filename, cur_lineno); + unput('\n'); + BEGIN(INITIAL); + yylval.string = text; + return T_WORD_QUOTE; + } + <> { + BEGIN(INITIAL); + yylval.string = text; + return T_WORD_QUOTE; + } +} + +{ + [ \t]+ { + int ts, i; + + ts = 0; + for (i = 0; i < yyleng; i++) { + if (yytext[i] == '\t') + ts = (ts & ~7) + 8; + else + ts++; + } + last_ts = ts; + if (first_ts) { + if (ts < first_ts) { + zconf_endhelp(); + return T_HELPTEXT; + } + ts -= first_ts; + while (ts > 8) { + append_string(" ", 8); + ts -= 8; + } + append_string(" ", ts); + } + } + [ \t]*\n/[^ \t\n] { + zconf_endhelp(); + return T_HELPTEXT; + } + [ \t]*\n { + append_string("\n", 1); + } + [^ \t\n].* { + while (yyleng) { + if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t')) + break; + yyleng--; + } + append_string(yytext, yyleng); + if (!first_ts) + first_ts = last_ts; + } + <> { + zconf_endhelp(); + return T_HELPTEXT; + } +} + +<> { + BEGIN(INITIAL); + + if (prev_token != T_EOL && prev_token != T_HELPTEXT) + fprintf(stderr, "%s:%d:warning: no new line at end of file\n", + cur_filename, yylineno); + + if (current_buf) { + zconf_endfile(); + return T_EOL; + } + fclose(yyin); + yyterminate(); +} + +%% + +/* second stage lexer */ +int yylex(void) +{ + int token; + +repeat: + token = yylex1(); + + if (prev_token == T_EOL || prev_token == T_HELPTEXT) { + if (token == T_EOL) + /* Do not pass unneeded T_EOL to the parser. */ + goto repeat; + else + /* + * For the parser, update lineno at the first token + * of each statement. Generally, \n is a statement + * terminator in Kconfig, but it is not always true + * because \n could be escaped by a backslash. + */ + cur_lineno = yylineno; + } + + if (prev_prev_token == T_EOL && prev_token == T_WORD && + (token == T_EQUAL || token == T_COLON_EQUAL || token == T_PLUS_EQUAL)) + BEGIN(ASSIGN_VAL); + + prev_prev_token = prev_token; + prev_token = token; + + return token; +} + +static char *expand_token(const char *in, size_t n) +{ + char *out; + int c; + char c2; + const char *rest, *end; + + new_string(); + append_string(in, n); + + /* + * get the whole line because we do not know the end of token. + * input() returns 0 (not EOF!) when it reachs the end of file. + */ + while ((c = input()) != 0) { + if (c == '\n') { + unput(c); + break; + } + c2 = c; + append_string(&c2, 1); + } + + rest = text; + out = expand_one_token(&rest); + + /* push back unused characters to the input stream */ + end = rest + strlen(rest); + while (end > rest) + unput(*--end); + + free(text); + + return out; +} + +static void append_expanded_string(const char *str) +{ + const char *end; + char *res; + + str++; + + res = expand_dollar(&str); + + /* push back unused characters to the input stream */ + end = str + strlen(str); + while (end > str) + unput(*--end); + + append_string(res, strlen(res)); + + free(res); +} + +void zconf_starthelp(void) +{ + new_string(); + last_ts = first_ts = 0; + BEGIN(HELP); +} + +static void zconf_endhelp(void) +{ + yylval.string = text; + BEGIN(INITIAL); +} + + +/* + * Try to open specified file with following names: + * ./name + * $(srctree)/name + * The latter is used when srctree is separate from objtree + * when compiling the kernel. + * Return NULL if file is not found. + */ +FILE *zconf_fopen(const char *name) +{ + char *env, fullname[PATH_MAX+1]; + FILE *f; + + f = fopen(name, "r"); + if (!f && name != NULL && name[0] != '/') { + env = getenv(SRCTREE); + if (env) { + snprintf(fullname, sizeof(fullname), + "%s/%s", env, name); + f = fopen(fullname, "r"); + } + } + return f; +} + +void zconf_initscan(const char *name) +{ + yyin = zconf_fopen(name); + if (!yyin) { + fprintf(stderr, "can't find file %s\n", name); + exit(1); + } + + cur_filename = file_lookup(name); + yylineno = 1; +} + +void zconf_nextfile(const char *name) +{ + struct buffer *buf = xmalloc(sizeof(*buf)); + bool recur_include = false; + + buf->state = YY_CURRENT_BUFFER; + buf->yylineno = yylineno; + buf->filename = cur_filename; + buf->source_lineno = cur_lineno; + buf->parent = current_buf; + current_buf = buf; + yyin = zconf_fopen(name); + if (!yyin) { + fprintf(stderr, "%s:%d: can't open file \"%s\"\n", + cur_filename, cur_lineno, name); + exit(1); + } + yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); + + for (buf = current_buf; buf; buf = buf->parent) { + if (!strcmp(buf->filename, name)) + recur_include = true; + } + + if (recur_include) { + fprintf(stderr, + "Recursive inclusion detected.\n" + "Inclusion path:\n" + " current file : %s\n", name); + + for (buf = current_buf; buf; buf = buf->parent) + fprintf(stderr, " included from: %s:%d\n", + buf->filename, buf->source_lineno); + exit(1); + } + + yylineno = 1; + cur_filename = file_lookup(name); +} + +static void zconf_endfile(void) +{ + struct buffer *tmp; + + fclose(yyin); + yy_delete_buffer(YY_CURRENT_BUFFER); + yy_switch_to_buffer(current_buf->state); + yylineno = current_buf->yylineno; + cur_filename = current_buf->filename; + tmp = current_buf; + current_buf = current_buf->parent; + free(tmp); +} diff --git a/support/kconfig/lexer.lex.c_shipped b/support/kconfig/lexer.lex.c_shipped new file mode 100644 index 0000000000..8d29983b47 --- /dev/null +++ b/support/kconfig/lexer.lex.c_shipped @@ -0,0 +1,4103 @@ + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 6 +#define YY_FLEX_SUBMINOR_VERSION 4 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#ifndef SIZE_MAX +#define SIZE_MAX (~(size_t)0) +#endif + +#endif /* ! C99 */ + +#endif /* ! FLEXINT_H */ + +/* begin standard C++ headers. */ + +/* TODO: this is always defined, so inline it */ +#define yyconst const + +#if defined(__GNUC__) && __GNUC__ >= 3 +#define yynoreturn __attribute__((__noreturn__)) +#else +#define yynoreturn +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an + * integer in range [0..255] for use as an array index. + */ +#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN (yy_start) = 1 + 2 * +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START (((yy_start) - 1) / 2) +#define YYSTATE YY_START +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE yyrestart( yyin ) +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k. + * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. + * Ditto for the __ia64__ case accordingly. + */ +#define YY_BUF_SIZE 32768 +#else +#define YY_BUF_SIZE 16384 +#endif /* __ia64__ */ +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +extern int yyleng; + +extern FILE *yyin, *yyout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires + * access to the local variable yy_act. Since yyless() is a macro, it would break + * existing scanners that call yyless() from OUTSIDE yylex. + * One obvious solution it to make yy_act a global. I tried that, and saw + * a 5% performance hit in a non-yylineno scanner, because yy_act is + * normally declared as a register variable-- so it is not worth it. + */ + #define YY_LESS_LINENO(n) \ + do { \ + int yyl;\ + for ( yyl = n; yyl < yyleng; ++yyl )\ + if ( yytext[yyl] == '\n' )\ + --yylineno;\ + }while(0) + #define YY_LINENO_REWIND_TO(dst) \ + do {\ + const char *p;\ + for ( p = yy_cp-1; p >= (dst); --p)\ + if ( *p == '\n' )\ + --yylineno;\ + }while(0) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = (yy_hold_char); \ + YY_RESTORE_YY_MORE_OFFSET \ + (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) +#define unput(c) yyunput( c, (yytext_ptr) ) + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + int yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* Stack of input buffers. */ +static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ + ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ + : NULL) +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] + +/* yy_hold_char holds the character lost when yytext is formed. */ +static char yy_hold_char; +static int yy_n_chars; /* number of characters read into yy_ch_buf */ +int yyleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = NULL; +static int yy_init = 0; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow yywrap()'s to do buffer switches + * instead of setting up a fresh yyin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void yyrestart ( FILE *input_file ); +void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); +void yy_delete_buffer ( YY_BUFFER_STATE b ); +void yy_flush_buffer ( YY_BUFFER_STATE b ); +void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); +void yypop_buffer_state ( void ); + +static void yyensure_buffer_stack ( void ); +static void yy_load_buffer_state ( void ); +static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); +#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) + +YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); +YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); +YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); + +void *yyalloc ( yy_size_t ); +void *yyrealloc ( void *, yy_size_t ); +void yyfree ( void * ); + +#define yy_new_buffer yy_create_buffer +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer( yyin, YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer( yyin, YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +#define yywrap() (/*CONSTCOND*/1) +#define YY_SKIP_YYWRAP +typedef flex_uint8_t YY_CHAR; + +FILE *yyin = NULL, *yyout = NULL; + +typedef int yy_state_type; + +extern int yylineno; +int yylineno = 1; + +extern char *yytext; +#ifdef yytext_ptr +#undef yytext_ptr +#endif +#define yytext_ptr yytext + +static const flex_int16_t yy_nxt[][42] = + { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 + }, + + { + 9, 10, 11, 12, 13, 14, 15, 16, 17, 14, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 21, + 21, 27, 28, 29, 30, 21, 21, 31, 32, 21, + 33, 21, 34, 35, 36, 37, 38, 21, 39, 21, + 21, 40 + + }, + + { + 9, 10, 11, 12, 13, 14, 15, 16, 17, 14, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 21, + 21, 27, 28, 29, 30, 21, 21, 31, 32, 21, + 33, 21, 34, 35, 36, 37, 38, 21, 39, 21, + 21, 40 + }, + + { + 9, 41, 42, 43, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41 + + }, + + { + 9, 41, 42, 43, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41 + }, + + { + 9, 44, 45, 46, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44 + + }, + + { + 9, 44, 45, 46, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44 + }, + + { + 9, 47, 47, 48, 47, 49, 47, 50, 47, 49, + 47, 47, 47, 47, 47, 47, 47, 47, 51, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47 + + }, + + { + 9, 47, 47, 48, 47, 49, 47, 50, 47, 49, + 47, 47, 47, 47, 47, 47, 47, 47, 51, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47 + }, + + { + -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + -9, -9 + + }, + + { + 9, -10, -10, -10, -10, -10, -10, -10, -10, -10, + -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, + -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, + -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, + -10, -10 + }, + + { + 9, -11, 52, -11, -11, -11, -11, -11, -11, -11, + -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, + -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, + -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, + -11, -11 + + }, + + { + 9, -12, -12, -12, -12, -12, -12, -12, -12, -12, + -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, + -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, + -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, + -12, -12 + }, + + { + 9, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, 53, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13 + + }, + + { + 9, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14 + }, + + { + 9, 54, 54, -15, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54 + + }, + + { + 9, -16, -16, -16, -16, -16, -16, 55, -16, -16, + -16, -16, -16, 55, -16, -16, -16, -16, -16, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, -16 + }, + + { + 9, -17, -17, -17, -17, -17, -17, -17, 56, -17, + -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, + -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, + -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, + -17, -17 + + }, + + { + 9, -18, -18, -18, -18, -18, -18, -18, -18, -18, + -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, + -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, + -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, + -18, -18 + }, + + { + 9, -19, -19, -19, -19, -19, -19, -19, -19, -19, + -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, + -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, + -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, + -19, -19 + + }, + + { + 9, -20, -20, -20, -20, -20, -20, -20, -20, -20, + -20, -20, -20, -20, -20, -20, 57, -20, -20, -20, + -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, + -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, + -20, -20 + }, + + { + 9, -21, -21, -21, -21, -21, -21, 55, -21, -21, + -21, -21, -21, 58, -21, -21, -21, -21, -21, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -21 + + }, + + { + 9, -22, -22, -22, -22, -22, -22, -22, -22, -22, + -22, -22, -22, -22, -22, -22, 59, -22, -22, -22, + -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, + -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, + -22, -22 + }, + + { + 9, -23, -23, -23, -23, -23, -23, -23, -23, -23, + -23, -23, -23, -23, -23, -23, 60, -23, -23, -23, + -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, + -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, + -23, -23 + + }, + + { + 9, -24, -24, -24, -24, -24, -24, -24, -24, -24, + -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, + -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, + -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, + -24, -24 + }, + + { + 9, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, 61, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25 + + }, + + { + 9, -26, -26, 62, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26 + }, + + { + 9, -27, -27, -27, -27, -27, -27, 55, -27, -27, + -27, -27, -27, 58, -27, -27, -27, -27, -27, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 63, 58, 58, 58, 58, 58, 58, 58, + 58, -27 + + }, + + { + 9, -28, -28, -28, -28, -28, -28, 55, -28, -28, + -28, -28, -28, 58, -28, -28, -28, -28, -28, 58, + 58, 58, 58, 58, 58, 58, 58, 64, 58, 58, + 58, 58, 65, 58, 58, 58, 58, 58, 58, 58, + 58, -28 + }, + + { + 9, -29, -29, -29, -29, -29, -29, 55, -29, -29, + -29, -29, -29, 58, -29, -29, -29, -29, -29, 58, + 58, 58, 58, 58, 66, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -29 + + }, + + { + 9, -30, -30, -30, -30, -30, -30, 55, -30, -30, + -30, -30, -30, 58, -30, -30, -30, -30, -30, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 67, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -30 + }, + + { + 9, -31, -31, -31, -31, -31, -31, 55, -31, -31, + -31, -31, -31, 58, -31, -31, -31, -31, -31, 58, + 58, 58, 58, 58, 68, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -31 + + }, + + { + 9, -32, -32, -32, -32, -32, -32, 55, -32, -32, + -32, -32, -32, 58, -32, -32, -32, -32, -32, 58, + 58, 58, 58, 58, 58, 69, 58, 58, 58, 58, + 70, 71, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -32 + }, + + { + 9, -33, -33, -33, -33, -33, -33, 55, -33, -33, + -33, -33, -33, 58, -33, -33, -33, -33, -33, 58, + 72, 58, 58, 58, 73, 58, 58, 58, 58, 58, + 58, 58, 74, 58, 58, 58, 58, 58, 58, 58, + 58, -33 + + }, + + { + 9, -34, -34, -34, -34, -34, -34, 55, -34, -34, + -34, -34, -34, 58, -34, -34, -34, -34, -34, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 75, 58, 76, 58, 58, 58, 58, 58, 58, + 58, -34 + }, + + { + 9, -35, -35, -35, -35, -35, -35, 55, -35, -35, + -35, -35, -35, 58, -35, -35, -35, -35, -35, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 77, 58, 58, 58, 58, 58, + 58, -35 + + }, + + { + 9, -36, -36, -36, -36, -36, -36, 55, -36, -36, + -36, -36, -36, 58, -36, -36, -36, -36, -36, 58, + 78, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -36 + }, + + { + 9, -37, -37, -37, -37, -37, -37, 55, -37, -37, + -37, -37, -37, 58, -37, -37, -37, -37, -37, 58, + 58, 58, 58, 58, 79, 58, 58, 58, 58, 58, + 58, 58, 80, 58, 58, 58, 81, 58, 58, 58, + 58, -37 + + }, + + { + 9, -38, -38, -38, -38, -38, -38, 55, -38, -38, + -38, -38, -38, 58, -38, -38, -38, -38, -38, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 82, 58, 58, 58, 58, 58, + 58, -38 + }, + + { + 9, -39, -39, -39, -39, -39, -39, 55, -39, -39, + -39, -39, -39, 58, -39, -39, -39, -39, -39, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 83, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -39 + + }, + + { + 9, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, 84 + }, + + { + 9, 85, 86, -41, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85 + + }, + + { + 9, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42 + }, + + { + 9, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43 + + }, + + { + 9, 87, 87, -44, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87 + }, + + { + 9, -45, 88, 89, -45, -45, -45, -45, -45, -45, + -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, + -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, + -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, + -45, -45 + + }, + + { + 9, 90, -46, -46, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90 + }, + + { + 9, 91, 91, -47, 91, -47, 91, -47, 91, -47, + 91, 91, 91, 91, 91, 91, 91, 91, -47, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91 + + }, + + { + 9, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48 + }, + + { + 9, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49 + + }, + + { + 9, 92, 92, -50, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92 + }, + + { + 9, 93, 93, -51, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93 + + }, + + { + 9, -52, 52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52 + }, + + { + 9, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53 + + }, + + { + 9, 54, 54, -54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54 + }, + + { + 9, -55, -55, -55, -55, -55, -55, 55, -55, -55, + -55, -55, -55, 55, -55, -55, -55, -55, -55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, -55 + + }, + + { + 9, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56 + }, + + { + 9, -57, -57, -57, -57, -57, -57, -57, -57, -57, + -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, + -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, + -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, + -57, -57 + + }, + + { + 9, -58, -58, -58, -58, -58, -58, 55, -58, -58, + -58, -58, -58, 58, -58, -58, -58, -58, -58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -58 + }, + + { + 9, -59, -59, -59, -59, -59, -59, -59, -59, -59, + -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, + -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, + -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, + -59, -59 + + }, + + { + 9, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60 + }, + + { + 9, -61, -61, -61, -61, -61, -61, -61, -61, -61, + -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, + -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, + -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, + -61, -61 + + }, + + { + 9, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62 + }, + + { + 9, -63, -63, -63, -63, -63, -63, 55, -63, -63, + -63, -63, -63, 58, -63, -63, -63, -63, -63, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 94, 58, 58, 58, 58, 58, 58, 58, + 58, -63 + + }, + + { + 9, -64, -64, -64, -64, -64, -64, 55, -64, -64, + -64, -64, -64, 58, -64, -64, -64, -64, -64, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 95, 58, 58, 58, 58, 58, 58, 58, + 58, -64 + }, + + { + 9, -65, -65, -65, -65, -65, -65, 55, -65, -65, + -65, -65, -65, 58, -65, -65, -65, -65, -65, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 96, 97, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -65 + + }, + + { + 9, -66, -66, -66, -66, -66, -66, 55, -66, -66, + -66, -66, -66, 58, -66, -66, -66, -66, -66, 58, + 58, 58, 58, 58, 58, 98, 58, 58, 58, 58, + 58, 58, 58, 99, 58, 58, 58, 58, 58, 58, + 58, -66 + }, + + { + 9, -67, -67, -67, -67, -67, -67, 55, -67, -67, + -67, -67, -67, 58, -67, -67, -67, -67, -67, 58, + 58, 58, 58, 100, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -67 + + }, + + { + 9, -68, -68, -68, -68, -68, -68, 55, -68, -68, + -68, -68, -68, 58, -68, -68, -68, -68, -68, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 101, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 102, + 58, -68 + }, + + { + 9, -69, -69, -69, -69, -69, -69, 55, -69, -69, + -69, -69, -69, 58, -69, -69, -69, -69, -69, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -69 + + }, + + { + 9, -70, -70, -70, -70, -70, -70, 55, -70, -70, + -70, -70, -70, 58, -70, -70, -70, -70, -70, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 103, 58, 58, 58, 58, 58, 58, + 58, -70 + }, + + { + 9, -71, -71, -71, -71, -71, -71, 55, -71, -71, + -71, -71, -71, 58, -71, -71, -71, -71, -71, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 104, 58, 58, 58, + 58, -71 + + }, + + { + 9, -72, -72, -72, -72, -72, -72, 55, -72, -72, + -72, -72, -72, 58, -72, -72, -72, -72, -72, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 105, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -72 + }, + + { + 9, -73, -73, -73, -73, -73, -73, 55, -73, -73, + -73, -73, -73, 58, -73, -73, -73, -73, -73, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 106, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -73 + + }, + + { + 9, -74, -74, -74, -74, -74, -74, 55, -74, -74, + -74, -74, -74, 58, -74, -74, -74, -74, -74, 58, + 58, 58, 58, 107, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -74 + }, + + { + 9, -75, -75, -75, -75, -75, -75, 55, -75, -75, + -75, -75, -75, 58, -75, -75, -75, -75, -75, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -75 + + }, + + { + 9, -76, -76, -76, -76, -76, -76, 55, -76, -76, + -76, -76, -76, 58, -76, -76, -76, -76, -76, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 108, 58, 58, 58, + 58, -76 + }, + + { + 9, -77, -77, -77, -77, -77, -77, 55, -77, -77, + -77, -77, -77, 58, -77, -77, -77, -77, -77, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 109, 58, 58, 58, 58, 58, 58, 58, + 58, -77 + + }, + + { + 9, -78, -78, -78, -78, -78, -78, 55, -78, -78, + -78, -78, -78, 58, -78, -78, -78, -78, -78, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 110, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -78 + }, + + { + 9, -79, -79, -79, -79, -79, -79, 55, -79, -79, + -79, -79, -79, 58, -79, -79, -79, -79, -79, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 111, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -79 + + }, + + { + 9, -80, -80, -80, -80, -80, -80, 55, -80, -80, + -80, -80, -80, 58, -80, -80, -80, -80, -80, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 112, 58, 58, + 58, -80 + }, + + { + 9, -81, -81, -81, -81, -81, -81, 55, -81, -81, + -81, -81, -81, 58, -81, -81, -81, -81, -81, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 113, 58, 58, 58, 58, 58, + 58, -81 + + }, + + { + 9, -82, -82, -82, -82, -82, -82, 55, -82, -82, + -82, -82, -82, 58, -82, -82, -82, -82, -82, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 114, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -82 + }, + + { + 9, -83, -83, -83, -83, -83, -83, 55, -83, -83, + -83, -83, -83, 58, -83, -83, -83, -83, -83, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 115, 58, 58, 58, 58, + 58, -83 + + }, + + { + 9, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84 + }, + + { + 9, 85, 86, -85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85 + + }, + + { + 9, 86, 86, -86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86 + }, + + { + 9, 87, 87, -87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87 + + }, + + { + 9, -88, 88, 89, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88 + }, + + { + 9, 90, -89, -89, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90 + + }, + + { + 9, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90 + }, + + { + 9, 91, 91, -91, 91, -91, 91, -91, 91, -91, + 91, 91, 91, 91, 91, 91, 91, 91, -91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91 + + }, + + { + 9, 92, 92, -92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92 + }, + + { + 9, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93 + + }, + + { + 9, -94, -94, -94, -94, -94, -94, 55, -94, -94, + -94, -94, -94, 58, -94, -94, -94, -94, -94, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 116, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -94 + }, + + { + 9, -95, -95, -95, -95, -95, -95, 55, -95, -95, + -95, -95, -95, 58, -95, -95, -95, -95, -95, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 117, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -95 + + }, + + { + 9, -96, -96, -96, -96, -96, -96, 55, -96, -96, + -96, -96, -96, 58, -96, -96, -96, -96, -96, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 118, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -96 + }, + + { + 9, -97, -97, -97, -97, -97, -97, 55, -97, -97, + -97, -97, -97, 58, -97, -97, -97, -97, -97, 58, + 58, 58, 58, 58, 58, 119, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -97 + + }, + + { + 9, -98, -98, -98, -98, -98, -98, 55, -98, -98, + -98, -98, -98, 58, -98, -98, -98, -98, -98, 120, + 121, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -98 + }, + + { + 9, -99, -99, -99, -99, -99, -99, 55, -99, -99, + -99, -99, -99, 58, -99, -99, -99, -99, -99, 58, + 58, 58, 58, 58, 122, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -99 + + }, + + { + 9, -100, -100, -100, -100, -100, -100, 55, -100, -100, + -100, -100, -100, 58, -100, -100, -100, -100, -100, 58, + 58, 58, 123, 58, 58, 58, 58, 58, 124, 58, + 125, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -100 + }, + + { + 9, -101, -101, -101, -101, -101, -101, 55, -101, -101, + -101, -101, -101, 58, -101, -101, -101, -101, -101, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 126, 58, 58, 58, 58, 58, 58, + 58, -101 + + }, + + { + 9, -102, -102, -102, -102, -102, -102, 55, -102, -102, + -102, -102, -102, 58, -102, -102, -102, -102, -102, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -102 + }, + + { + 9, -103, -103, -103, -103, -103, -103, 55, -103, -103, + -103, -103, -103, 58, -103, -103, -103, -103, -103, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 127, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -103 + + }, + + { + 9, -104, -104, -104, -104, -104, -104, 55, -104, -104, + -104, -104, -104, 58, -104, -104, -104, -104, -104, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -104 + }, + + { + 9, -105, -105, -105, -105, -105, -105, 55, -105, -105, + -105, -105, -105, 58, -105, -105, -105, -105, -105, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 128, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -105 + + }, + + { + 9, -106, -106, -106, -106, -106, -106, 55, -106, -106, + -106, -106, -106, 58, -106, -106, -106, -106, -106, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 129, 58, 58, + 58, -106 + }, + + { + 9, -107, -107, -107, -107, -107, -107, 55, -107, -107, + -107, -107, -107, 58, -107, -107, -107, -107, -107, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 130, 58, 58, + 58, -107 + + }, + + { + 9, -108, -108, -108, -108, -108, -108, 55, -108, -108, + -108, -108, -108, 58, -108, -108, -108, -108, -108, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 131, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -108 + }, + + { + 9, -109, -109, -109, -109, -109, -109, 55, -109, -109, + -109, -109, -109, 58, -109, -109, -109, -109, -109, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 132, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -109 + + }, + + { + 9, -110, -110, -110, -110, -110, -110, 55, -110, -110, + -110, -110, -110, 58, -110, -110, -110, -110, -110, 58, + 58, 58, 58, 58, 58, 58, 133, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -110 + }, + + { + 9, -111, -111, -111, -111, -111, -111, 55, -111, -111, + -111, -111, -111, 58, -111, -111, -111, -111, -111, 58, + 58, 58, 58, 58, 134, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -111 + + }, + + { + 9, -112, -112, -112, -112, -112, -112, 55, -112, -112, + -112, -112, -112, 58, -112, -112, -112, -112, -112, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 135, 58, 58, 58, 58, 58, + 58, -112 + }, + + { + 9, -113, -113, -113, -113, -113, -113, 55, -113, -113, + -113, -113, -113, 58, -113, -113, -113, -113, -113, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 136, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -113 + + }, + + { + 9, -114, -114, -114, -114, -114, -114, 55, -114, -114, + -114, -114, -114, 58, -114, -114, -114, -114, -114, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 137, 58, 58, 58, 58, + 58, -114 + }, + + { + 9, -115, -115, -115, -115, -115, -115, 55, -115, -115, + -115, -115, -115, 58, -115, -115, -115, -115, -115, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 138, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -115 + + }, + + { + 9, -116, -116, -116, -116, -116, -116, 55, -116, -116, + -116, -116, -116, 58, -116, -116, -116, -116, -116, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -116 + }, + + { + 9, -117, -117, -117, -117, -117, -117, 55, -117, -117, + -117, -117, -117, 58, -117, -117, -117, -117, -117, 58, + 58, 58, 139, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -117 + + }, + + { + 9, -118, -118, -118, -118, -118, -118, 55, -118, -118, + -118, -118, -118, 58, -118, -118, -118, -118, -118, 58, + 58, 58, 58, 58, 140, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -118 + }, + + { + 9, -119, -119, -119, -119, -119, -119, 55, -119, -119, + -119, -119, -119, 58, -119, -119, -119, -119, -119, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 141, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -119 + + }, + + { + 9, -120, -120, -120, -120, -120, -120, 55, -120, -120, + -120, -120, -120, 58, -120, -120, -120, -120, -120, 58, + 58, 142, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 143, 58, 58, 58, + 58, -120 + }, + + { + 9, -121, -121, -121, -121, -121, -121, 55, -121, -121, + -121, -121, -121, 58, -121, -121, -121, -121, -121, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 144, 58, 58, + 58, -121 + + }, + + { + 9, -122, -122, -122, -122, -122, -122, 55, -122, -122, + -122, -122, -122, 58, -122, -122, -122, -122, -122, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 145, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -122 + }, + + { + 9, -123, -123, -123, -123, -123, -123, 55, -123, -123, + -123, -123, -123, 58, -123, -123, -123, -123, -123, 58, + 58, 58, 58, 58, 58, 58, 58, 146, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -123 + + }, + + { + 9, -124, -124, -124, -124, -124, -124, 55, -124, -124, + -124, -124, -124, 58, -124, -124, -124, -124, -124, 58, + 58, 58, 58, 58, 58, 147, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -124 + }, + + { + 9, -125, -125, -125, -125, -125, -125, 55, -125, -125, + -125, -125, -125, 58, -125, -125, -125, -125, -125, 58, + 58, 58, 58, 58, 148, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -125 + + }, + + { + 9, -126, -126, -126, -126, -126, -126, 55, -126, -126, + -126, -126, -126, 58, -126, -126, -126, -126, -126, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -126 + }, + + { + 9, -127, -127, -127, -127, -127, -127, 55, -127, -127, + -127, -127, -127, 58, -127, -127, -127, -127, -127, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 149, -127 + + }, + + { + 9, -128, -128, -128, -128, -128, -128, 55, -128, -128, + -128, -128, -128, 58, -128, -128, -128, -128, -128, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 150, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -128 + }, + + { + 9, -129, -129, -129, -129, -129, -129, 55, -129, -129, + -129, -129, -129, 58, -129, -129, -129, -129, -129, 58, + 58, 58, 151, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -129 + + }, + + { + 9, -130, -130, -130, -130, -130, -130, 55, -130, -130, + -130, -130, -130, 58, -130, -130, -130, -130, -130, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 152, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -130 + }, + + { + 9, -131, -131, -131, -131, -131, -131, 55, -131, -131, + -131, -131, -131, 58, -131, -131, -131, -131, -131, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 153, 58, 58, 58, 58, 58, 58, 58, + 58, -131 + + }, + + { + 9, -132, -132, -132, -132, -132, -132, 55, -132, -132, + -132, -132, -132, 58, -132, -132, -132, -132, -132, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 154, 58, 58, 58, 58, 58, 58, + 58, -132 + }, + + { + 9, -133, -133, -133, -133, -133, -133, 55, -133, -133, + -133, -133, -133, 58, -133, -133, -133, -133, -133, 58, + 58, 58, 58, 58, 155, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -133 + + }, + + { + 9, -134, -134, -134, -134, -134, -134, 55, -134, -134, + -134, -134, -134, 58, -134, -134, -134, -134, -134, 58, + 58, 58, 156, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -134 + }, + + { + 9, -135, -135, -135, -135, -135, -135, 55, -135, -135, + -135, -135, -135, 58, -135, -135, -135, -135, -135, 58, + 58, 58, 157, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -135 + + }, + + { + 9, -136, -136, -136, -136, -136, -136, 55, -136, -136, + -136, -136, -136, 58, -136, -136, -136, -136, -136, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 158, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -136 + }, + + { + 9, -137, -137, -137, -137, -137, -137, 55, -137, -137, + -137, -137, -137, 58, -137, -137, -137, -137, -137, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 159, 58, 58, 58, + 58, -137 + + }, + + { + 9, -138, -138, -138, -138, -138, -138, 55, -138, -138, + -138, -138, -138, 58, -138, -138, -138, -138, -138, 58, + 58, 160, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -138 + }, + + { + 9, -139, -139, -139, -139, -139, -139, 55, -139, -139, + -139, -139, -139, 58, -139, -139, -139, -139, -139, 58, + 58, 58, 58, 58, 161, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -139 + + }, + + { + 9, -140, -140, -140, -140, -140, -140, 55, -140, -140, + -140, -140, -140, 58, -140, -140, -140, -140, -140, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 162, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -140 + }, + + { + 9, -141, -141, -141, -141, -141, -141, 55, -141, -141, + -141, -141, -141, 58, -141, -141, -141, -141, -141, 58, + 58, 58, 58, 58, 58, 58, 163, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -141 + + }, + + { + 9, -142, -142, -142, -142, -142, -142, 55, -142, -142, + -142, -142, -142, 58, -142, -142, -142, -142, -142, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 164, 58, 58, 58, 58, 58, 58, 58, + 58, -142 + }, + + { + 9, -143, -143, -143, -143, -143, -143, 55, -143, -143, + -143, -143, -143, 58, -143, -143, -143, -143, -143, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 165, 58, 58, 58, 58, 58, + 58, -143 + + }, + + { + 9, -144, -144, -144, -144, -144, -144, 55, -144, -144, + -144, -144, -144, 58, -144, -144, -144, -144, -144, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 166, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -144 + }, + + { + 9, -145, -145, -145, -145, -145, -145, 55, -145, -145, + -145, -145, -145, 58, -145, -145, -145, -145, -145, 58, + 58, 58, 58, 167, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -145 + + }, + + { + 9, -146, -146, -146, -146, -146, -146, 55, -146, -146, + -146, -146, -146, 58, -146, -146, -146, -146, -146, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 168, 58, 58, 58, 58, 58, 58, 58, + 58, -146 + }, + + { + 9, -147, -147, -147, -147, -147, -147, 55, -147, -147, + -147, -147, -147, 58, -147, -147, -147, -147, -147, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -147 + + }, + + { + 9, -148, -148, -148, -148, -148, -148, 55, -148, -148, + -148, -148, -148, 58, -148, -148, -148, -148, -148, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 169, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -148 + }, + + { + 9, -149, -149, -149, -149, -149, -149, 55, -149, -149, + -149, -149, -149, 58, -149, -149, -149, -149, -149, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -149 + + }, + + { + 9, -150, -150, -150, -150, -150, -150, 55, -150, -150, + -150, -150, -150, 58, -150, -150, -150, -150, -150, 58, + 58, 58, 58, 58, 170, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -150 + }, + + { + 9, -151, -151, -151, -151, -151, -151, 55, -151, -151, + -151, -151, -151, 58, -151, -151, -151, -151, -151, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 171, 58, 58, 58, 58, 58, 58, 58, + 58, -151 + + }, + + { + 9, -152, -152, -152, -152, -152, -152, 55, -152, -152, + -152, -152, -152, 58, -152, -152, -152, -152, -152, 58, + 58, 58, 58, 58, 172, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -152 + }, + + { + 9, -153, -153, -153, -153, -153, -153, 55, -153, -153, + -153, -153, -153, 58, -153, -153, -153, -153, -153, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 173, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -153 + + }, + + { + 9, -154, -154, -154, -154, -154, -154, 55, -154, -154, + -154, -154, -154, 58, -154, -154, -154, -154, -154, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 174, 58, 58, 58, + 58, -154 + }, + + { + 9, -155, -155, -155, -155, -155, -155, 55, -155, -155, + -155, -155, -155, 58, -155, -155, -155, -155, -155, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -155 + + }, + + { + 9, -156, -156, -156, -156, -156, -156, 55, -156, -156, + -156, -156, -156, 58, -156, -156, -156, -156, -156, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 175, 58, 58, 58, + 58, -156 + }, + + { + 9, -157, -157, -157, -157, -157, -157, 55, -157, -157, + -157, -157, -157, 58, -157, -157, -157, -157, -157, 58, + 58, 58, 58, 58, 176, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -157 + + }, + + { + 9, -158, -158, -158, -158, -158, -158, 55, -158, -158, + -158, -158, -158, 58, -158, -158, -158, -158, -158, 58, + 58, 58, 58, 58, 58, 58, 177, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -158 + }, + + { + 9, -159, -159, -159, -159, -159, -159, 55, -159, -159, + -159, -159, -159, 58, -159, -159, -159, -159, -159, 58, + 178, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -159 + + }, + + { + 9, -160, -160, -160, -160, -160, -160, 55, -160, -160, + -160, -160, -160, 58, -160, -160, -160, -160, -160, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 179, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -160 + }, + + { + 9, -161, -161, -161, -161, -161, -161, 55, -161, -161, + -161, -161, -161, 58, -161, -161, -161, -161, -161, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -161 + + }, + + { + 9, -162, -162, -162, -162, -162, -162, 55, -162, -162, + -162, -162, -162, 58, -162, -162, -162, -162, -162, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 180, 58, 58, 58, + 58, -162 + }, + + { + 9, -163, -163, -163, -163, -163, -163, 55, -163, -163, + -163, -163, -163, 58, -163, -163, -163, -163, -163, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -163 + + }, + + { + 9, -164, -164, -164, -164, -164, -164, 55, -164, -164, + -164, -164, -164, 58, -164, -164, -164, -164, -164, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 181, 58, 58, 58, 58, 58, 58, 58, + 58, -164 + }, + + { + 9, -165, -165, -165, -165, -165, -165, 55, -165, -165, + -165, -165, -165, 58, -165, -165, -165, -165, -165, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 182, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -165 + + }, + + { + 9, -166, -166, -166, -166, -166, -166, 55, -166, -166, + -166, -166, -166, 58, -166, -166, -166, -166, -166, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 183, 58, 58, 58, + 58, -166 + }, + + { + 9, -167, -167, -167, -167, -167, -167, 55, -167, -167, + -167, -167, -167, 58, -167, -167, -167, -167, -167, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 184, 58, 58, 58, 58, + 58, -167 + + }, + + { + 9, -168, -168, -168, -168, -168, -168, 55, -168, -168, + -168, -168, -168, 58, -168, -168, -168, -168, -168, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 185, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -168 + }, + + { + 9, -169, -169, -169, -169, -169, -169, 55, -169, -169, + -169, -169, -169, 58, -169, -169, -169, -169, -169, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 186, 58, 58, + 58, -169 + + }, + + { + 9, -170, -170, -170, -170, -170, -170, 55, -170, -170, + -170, -170, -170, 58, -170, -170, -170, -170, -170, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 187, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -170 + }, + + { + 9, -171, -171, -171, -171, -171, -171, 55, -171, -171, + -171, -171, -171, 58, -171, -171, -171, -171, -171, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 188, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -171 + + }, + + { + 9, -172, -172, -172, -172, -172, -172, 55, -172, -172, + -172, -172, -172, 58, -172, -172, -172, -172, -172, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 189, 58, 58, 58, 58, + 58, -172 + }, + + { + 9, -173, -173, -173, -173, -173, -173, 55, -173, -173, + -173, -173, -173, 58, -173, -173, -173, -173, -173, 58, + 190, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -173 + + }, + + { + 9, -174, -174, -174, -174, -174, -174, 55, -174, -174, + -174, -174, -174, 58, -174, -174, -174, -174, -174, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -174 + }, + + { + 9, -175, -175, -175, -175, -175, -175, 55, -175, -175, + -175, -175, -175, 58, -175, -175, -175, -175, -175, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -175 + + }, + + { + 9, -176, -176, -176, -176, -176, -176, 55, -176, -176, + -176, -176, -176, 58, -176, -176, -176, -176, -176, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -176 + }, + + { + 9, -177, -177, -177, -177, -177, -177, 55, -177, -177, + -177, -177, -177, 58, -177, -177, -177, -177, -177, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -177 + + }, + + { + 9, -178, -178, -178, -178, -178, -178, 55, -178, -178, + -178, -178, -178, 58, -178, -178, -178, -178, -178, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 191, 58, 58, 58, + 58, -178 + }, + + { + 9, -179, -179, -179, -179, -179, -179, 55, -179, -179, + -179, -179, -179, 58, -179, -179, -179, -179, -179, 58, + 58, 58, 58, 58, 192, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -179 + + }, + + { + 9, -180, -180, -180, -180, -180, -180, 55, -180, -180, + -180, -180, -180, 58, -180, -180, -180, -180, -180, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -180 + }, + + { + 9, -181, -181, -181, -181, -181, -181, 55, -181, -181, + -181, -181, -181, 58, -181, -181, -181, -181, -181, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 193, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -181 + + }, + + { + 9, -182, -182, -182, -182, -182, -182, 55, -182, -182, + -182, -182, -182, 58, -182, -182, -182, -182, -182, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 194, 58, 58, 58, 58, + 58, -182 + }, + + { + 9, -183, -183, -183, -183, -183, -183, 55, -183, -183, + -183, -183, -183, 58, -183, -183, -183, -183, -183, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -183 + + }, + + { + 9, -184, -184, -184, -184, -184, -184, 55, -184, -184, + -184, -184, -184, 58, -184, -184, -184, -184, -184, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -184 + }, + + { + 9, -185, -185, -185, -185, -185, -185, 55, -185, -185, + -185, -185, -185, 58, -185, -185, -185, -185, -185, 58, + 58, 58, 195, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -185 + + }, + + { + 9, -186, -186, -186, -186, -186, -186, 55, -186, -186, + -186, -186, -186, 58, -186, -186, -186, -186, -186, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -186 + }, + + { + 9, -187, -187, -187, -187, -187, -187, 55, -187, -187, + -187, -187, -187, 58, -187, -187, -187, -187, -187, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 196, 58, 58, + 58, -187 + + }, + + { + 9, -188, -188, -188, -188, -188, -188, 55, -188, -188, + -188, -188, -188, 58, -188, -188, -188, -188, -188, 58, + 58, 58, 58, 58, 58, 197, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -188 + }, + + { + 9, -189, -189, -189, -189, -189, -189, 55, -189, -189, + -189, -189, -189, 58, -189, -189, -189, -189, -189, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -189 + + }, + + { + 9, -190, -190, -190, -190, -190, -190, 55, -190, -190, + -190, -190, -190, 58, -190, -190, -190, -190, -190, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 198, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -190 + }, + + { + 9, -191, -191, -191, -191, -191, -191, 55, -191, -191, + -191, -191, -191, 58, -191, -191, -191, -191, -191, 58, + 58, 58, 58, 58, 199, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -191 + + }, + + { + 9, -192, -192, -192, -192, -192, -192, 55, -192, -192, + -192, -192, -192, 58, -192, -192, -192, -192, -192, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -192 + }, + + { + 9, -193, -193, -193, -193, -193, -193, 55, -193, -193, + -193, -193, -193, 58, -193, -193, -193, -193, -193, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -193 + + }, + + { + 9, -194, -194, -194, -194, -194, -194, 55, -194, -194, + -194, -194, -194, 58, -194, -194, -194, -194, -194, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 200, 58, 58, 58, + 58, -194 + }, + + { + 9, -195, -195, -195, -195, -195, -195, 55, -195, -195, + -195, -195, -195, 58, -195, -195, -195, -195, -195, 58, + 58, 58, 58, 58, 201, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -195 + + }, + + { + 9, -196, -196, -196, -196, -196, -196, 55, -196, -196, + -196, -196, -196, 58, -196, -196, -196, -196, -196, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -196 + }, + + { + 9, -197, -197, -197, -197, -197, -197, 55, -197, -197, + -197, -197, -197, 58, -197, -197, -197, -197, -197, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 202, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -197 + + }, + + { + 9, -198, -198, -198, -198, -198, -198, 55, -198, -198, + -198, -198, -198, 58, -198, -198, -198, -198, -198, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -198 + }, + + { + 9, -199, -199, -199, -199, -199, -199, 55, -199, -199, + -199, -199, -199, 58, -199, -199, -199, -199, -199, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -199 + + }, + + { + 9, -200, -200, -200, -200, -200, -200, 55, -200, -200, + -200, -200, -200, 58, -200, -200, -200, -200, -200, 58, + 203, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -200 + }, + + { + 9, -201, -201, -201, -201, -201, -201, 55, -201, -201, + -201, -201, -201, 58, -201, -201, -201, -201, -201, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -201 + + }, + + { + 9, -202, -202, -202, -202, -202, -202, 55, -202, -202, + -202, -202, -202, 58, -202, -202, -202, -202, -202, 58, + 58, 58, 58, 58, 58, 58, 204, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -202 + }, + + { + 9, -203, -203, -203, -203, -203, -203, 55, -203, -203, + -203, -203, -203, 58, -203, -203, -203, -203, -203, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 205, 58, 58, 58, + 58, -203 + + }, + + { + 9, -204, -204, -204, -204, -204, -204, 55, -204, -204, + -204, -204, -204, 58, -204, -204, -204, -204, -204, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -204 + }, + + { + 9, -205, -205, -205, -205, -205, -205, 55, -205, -205, + -205, -205, -205, 58, -205, -205, -205, -205, -205, 58, + 58, 58, 58, 58, 206, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -205 + + }, + + { + 9, -206, -206, -206, -206, -206, -206, 55, -206, -206, + -206, -206, -206, 58, -206, -206, -206, -206, -206, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -206 + }, + + } ; + +static yy_state_type yy_get_previous_state ( void ); +static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); +static int yy_get_next_buffer ( void ); +static void yynoreturn yy_fatal_error ( const char* msg ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + (yytext_ptr) = yy_bp; \ + yyleng = (int) (yy_cp - yy_bp); \ + (yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; +#define YY_NUM_RULES 63 +#define YY_END_OF_BUFFER 64 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static const flex_int16_t yy_accept[207] = + { 0, + 2, 2, 0, 0, 0, 0, 0, 0, 64, 50, + 2, 4, 42, 47, 1, 49, 50, 43, 44, 50, + 48, 50, 38, 36, 40, 50, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, + 51, 53, 52, 62, 59, 61, 55, 58, 57, 54, + 56, 2, 37, 1, 49, 35, 46, 48, 45, 39, + 41, 3, 48, 48, 48, 48, 48, 48, 18, 48, + 48, 48, 48, 48, 25, 48, 48, 48, 48, 48, + 48, 48, 48, 34, 51, 51, 62, 59, 61, 60, + 55, 54, 56, 48, 48, 48, 48, 48, 48, 48, + + 48, 17, 48, 20, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 5, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 16, 48, 48, 22, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 14, 48, 19, 48, + 48, 48, 48, 48, 28, 48, 48, 48, 48, 48, + 6, 48, 8, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 27, 29, 30, 31, 48, 48, 7, + 48, 48, 11, 12, 48, 15, 48, 48, 24, 48, + 48, 33, 9, 48, 48, 21, 48, 26, 32, 48, + + 13, 48, 48, 23, 48, 10 + } ; + +static const YY_CHAR yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 4, 5, 6, 7, 1, 8, 9, 10, + 11, 1, 12, 1, 13, 1, 1, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 14, 1, 15, + 16, 17, 1, 1, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 1, 18, 1, 1, 19, 1, 20, 21, 22, 23, + + 24, 25, 26, 27, 28, 13, 13, 29, 30, 31, + 32, 33, 13, 34, 35, 36, 37, 38, 13, 39, + 40, 13, 1, 41, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +/* Table of booleans, true if rule could match eol. */ +static const flex_int32_t yy_rule_can_match_eol[64] = + { 0, +0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, + 1, 1, 0, 0, }; + +extern int yy_flex_debug; +int yy_flex_debug = 0; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +char *yytext; +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2002 Roman Zippel + */ + +#include +#include +#include +#include +#include + +#include "lkc.h" +#include "preprocess.h" + +#include "parser.tab.h" + +#define YY_DECL static int yylex1(void) + +#define START_STRSIZE 16 + +/* The Kconfig file currently being parsed. */ +const char *cur_filename; + +/* + * The line number of the current statement. This does not match yylineno. + * yylineno is used by the lexer, while cur_lineno is used by the parser. + */ +int cur_lineno; + +static int prev_prev_token = T_EOL; +static int prev_token = T_EOL; +static char *text; +static int text_size, text_asize; + +struct buffer { + struct buffer *parent; + YY_BUFFER_STATE state; + int yylineno; + const char *filename; + int source_lineno; +}; + +static struct buffer *current_buf; + +static int last_ts, first_ts; + +static char *expand_token(const char *in, size_t n); +static void append_expanded_string(const char *in); +static void zconf_endhelp(void); +static void zconf_endfile(void); + +static void new_string(void) +{ + text = xmalloc(START_STRSIZE); + text_asize = START_STRSIZE; + text_size = 0; + *text = 0; +} + +static void append_string(const char *str, int size) +{ + int new_size = text_size + size + 1; + if (new_size > text_asize) { + new_size += START_STRSIZE - 1; + new_size &= -START_STRSIZE; + text = xrealloc(text, new_size); + text_asize = new_size; + } + memcpy(text + text_size, str, size); + text_size += size; + text[text_size] = 0; +} + +static void alloc_string(const char *str, int size) +{ + text = xmalloc(size + 1); + memcpy(text, str, size); + text[size] = 0; +} + +static void warn_ignored_character(char chr) +{ + fprintf(stderr, + "%s:%d:warning: ignoring unsupported character '%c'\n", + cur_filename, yylineno, chr); +} + +#define INITIAL 0 +#define ASSIGN_VAL 1 +#define HELP 2 +#define STRING 3 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +static int yy_init_globals ( void ); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int yylex_destroy ( void ); + +int yyget_debug ( void ); + +void yyset_debug ( int debug_flag ); + +YY_EXTRA_TYPE yyget_extra ( void ); + +void yyset_extra ( YY_EXTRA_TYPE user_defined ); + +FILE *yyget_in ( void ); + +void yyset_in ( FILE * _in_str ); + +FILE *yyget_out ( void ); + +void yyset_out ( FILE * _out_str ); + + int yyget_leng ( void ); + +char *yyget_text ( void ); + +int yyget_lineno ( void ); + +void yyset_lineno ( int _line_number ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap ( void ); +#else +extern int yywrap ( void ); +#endif +#endif + +#ifndef YY_NO_UNPUT + + static void yyunput ( int c, char *buf_ptr ); + +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy ( char *, const char *, int ); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen ( const char * ); +#endif + +#ifndef YY_NO_INPUT +#ifdef __cplusplus +static int yyinput ( void ); +#else +static int input ( void ); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k */ +#define YY_READ_BUF_SIZE 16384 +#else +#define YY_READ_BUF_SIZE 8192 +#endif /* __ia64__ */ +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + errno=0; \ + while ( (result = (int) read( fileno(yyin), buf, (yy_size_t) max_size )) < 0 ) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int yylex (void); + +#define YY_DECL int yylex (void) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK /*LINTED*/break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + yy_state_type yy_current_state; + char *yy_cp, *yy_bp; + int yy_act; + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! yyin ) + yyin = stdin; + + if ( ! yyout ) + yyout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer( yyin, YY_BUF_SIZE ); + } + + yy_load_buffer_state( ); + } + + { + + char open_quote = 0; + + while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ + { + yy_cp = (yy_c_buf_p); + + /* Support of yytext. */ + *yy_cp = (yy_hold_char); + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = (yy_start); +yy_match: + while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 ) + ++yy_cp; + + yy_current_state = -yy_current_state; + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + + YY_DO_BEFORE_ACTION; + + if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) + { + int yyl; + for ( yyl = 0; yyl < yyleng; ++yyl ) + if ( yytext[yyl] == '\n' ) + + yylineno++; +; + } + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ +case 1: +YY_RULE_SETUP +/* ignore comment */ + YY_BREAK +case 2: +YY_RULE_SETUP +/* whitespaces */ + YY_BREAK +case 3: +/* rule 3 can match eol */ +YY_RULE_SETUP +/* escaped new line */ + YY_BREAK +case 4: +/* rule 4 can match eol */ +YY_RULE_SETUP +return T_EOL; + YY_BREAK +case 5: +YY_RULE_SETUP +return T_BOOL; + YY_BREAK +case 6: +YY_RULE_SETUP +return T_CHOICE; + YY_BREAK +case 7: +YY_RULE_SETUP +return T_COMMENT; + YY_BREAK +case 8: +YY_RULE_SETUP +return T_CONFIG; + YY_BREAK +case 9: +YY_RULE_SETUP +return T_DEF_BOOL; + YY_BREAK +case 10: +YY_RULE_SETUP +return T_DEF_TRISTATE; + YY_BREAK +case 11: +YY_RULE_SETUP +return T_DEFAULT; + YY_BREAK +case 12: +YY_RULE_SETUP +return T_DEPENDS; + YY_BREAK +case 13: +YY_RULE_SETUP +return T_ENDCHOICE; + YY_BREAK +case 14: +YY_RULE_SETUP +return T_ENDIF; + YY_BREAK +case 15: +YY_RULE_SETUP +return T_ENDMENU; + YY_BREAK +case 16: +YY_RULE_SETUP +return T_HELP; + YY_BREAK +case 17: +YY_RULE_SETUP +return T_HEX; + YY_BREAK +case 18: +YY_RULE_SETUP +return T_IF; + YY_BREAK +case 19: +YY_RULE_SETUP +return T_IMPLY; + YY_BREAK +case 20: +YY_RULE_SETUP +return T_INT; + YY_BREAK +case 21: +YY_RULE_SETUP +return T_MAINMENU; + YY_BREAK +case 22: +YY_RULE_SETUP +return T_MENU; + YY_BREAK +case 23: +YY_RULE_SETUP +return T_MENUCONFIG; + YY_BREAK +case 24: +YY_RULE_SETUP +return T_MODULES; + YY_BREAK +case 25: +YY_RULE_SETUP +return T_ON; + YY_BREAK +case 26: +YY_RULE_SETUP +return T_OPTIONAL; + YY_BREAK +case 27: +YY_RULE_SETUP +return T_PROMPT; + YY_BREAK +case 28: +YY_RULE_SETUP +return T_RANGE; + YY_BREAK +case 29: +YY_RULE_SETUP +return T_SELECT; + YY_BREAK +case 30: +YY_RULE_SETUP +return T_SOURCE; + YY_BREAK +case 31: +YY_RULE_SETUP +return T_STRING; + YY_BREAK +case 32: +YY_RULE_SETUP +return T_TRISTATE; + YY_BREAK +case 33: +YY_RULE_SETUP +return T_VISIBLE; + YY_BREAK +case 34: +YY_RULE_SETUP +return T_OR; + YY_BREAK +case 35: +YY_RULE_SETUP +return T_AND; + YY_BREAK +case 36: +YY_RULE_SETUP +return T_EQUAL; + YY_BREAK +case 37: +YY_RULE_SETUP +return T_UNEQUAL; + YY_BREAK +case 38: +YY_RULE_SETUP +return T_LESS; + YY_BREAK +case 39: +YY_RULE_SETUP +return T_LESS_EQUAL; + YY_BREAK +case 40: +YY_RULE_SETUP +return T_GREATER; + YY_BREAK +case 41: +YY_RULE_SETUP +return T_GREATER_EQUAL; + YY_BREAK +case 42: +YY_RULE_SETUP +return T_NOT; + YY_BREAK +case 43: +YY_RULE_SETUP +return T_OPEN_PAREN; + YY_BREAK +case 44: +YY_RULE_SETUP +return T_CLOSE_PAREN; + YY_BREAK +case 45: +YY_RULE_SETUP +return T_COLON_EQUAL; + YY_BREAK +case 46: +YY_RULE_SETUP +return T_PLUS_EQUAL; + YY_BREAK +case 47: +YY_RULE_SETUP +{ + open_quote = yytext[0]; + new_string(); + BEGIN(STRING); + } + YY_BREAK +case 48: +YY_RULE_SETUP +{ + alloc_string(yytext, yyleng); + yylval.string = text; + return T_WORD; + } + YY_BREAK +case 49: +YY_RULE_SETUP +{ + /* this token includes at least one '$' */ + yylval.string = expand_token(yytext, yyleng); + if (strlen(yylval.string)) + return T_WORD; + free(yylval.string); + } + YY_BREAK +case 50: +YY_RULE_SETUP +warn_ignored_character(*yytext); + YY_BREAK + +case 51: +YY_RULE_SETUP +{ + alloc_string(yytext, yyleng); + yylval.string = text; + return T_ASSIGN_VAL; + } + YY_BREAK +case 52: +/* rule 52 can match eol */ +YY_RULE_SETUP +{ BEGIN(INITIAL); return T_EOL; } + YY_BREAK +case 53: +YY_RULE_SETUP + + YY_BREAK + +case 54: +YY_RULE_SETUP +append_expanded_string(yytext); + YY_BREAK +case 55: +YY_RULE_SETUP +{ + append_string(yytext, yyleng); + } + YY_BREAK +case 56: +YY_RULE_SETUP +{ + append_string(yytext + 1, yyleng - 1); + } + YY_BREAK +case 57: +YY_RULE_SETUP +{ + if (open_quote == yytext[0]) { + BEGIN(INITIAL); + yylval.string = text; + return T_WORD_QUOTE; + } else + append_string(yytext, 1); + } + YY_BREAK +case 58: +/* rule 58 can match eol */ +YY_RULE_SETUP +{ + fprintf(stderr, + "%s:%d:warning: multi-line strings not supported\n", + cur_filename, cur_lineno); + unput('\n'); + BEGIN(INITIAL); + yylval.string = text; + return T_WORD_QUOTE; + } + YY_BREAK +case YY_STATE_EOF(STRING): +{ + BEGIN(INITIAL); + yylval.string = text; + return T_WORD_QUOTE; + } + YY_BREAK + +case 59: +YY_RULE_SETUP +{ + int ts, i; + + ts = 0; + for (i = 0; i < yyleng; i++) { + if (yytext[i] == '\t') + ts = (ts & ~7) + 8; + else + ts++; + } + last_ts = ts; + if (first_ts) { + if (ts < first_ts) { + zconf_endhelp(); + return T_HELPTEXT; + } + ts -= first_ts; + while (ts > 8) { + append_string(" ", 8); + ts -= 8; + } + append_string(" ", ts); + } + } + YY_BREAK +case 60: +/* rule 60 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ +YY_LINENO_REWIND_TO(yy_cp - 1); +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up yytext again */ +YY_RULE_SETUP +{ + zconf_endhelp(); + return T_HELPTEXT; + } + YY_BREAK +case 61: +/* rule 61 can match eol */ +YY_RULE_SETUP +{ + append_string("\n", 1); + } + YY_BREAK +case 62: +YY_RULE_SETUP +{ + while (yyleng) { + if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t')) + break; + yyleng--; + } + append_string(yytext, yyleng); + if (!first_ts) + first_ts = last_ts; + } + YY_BREAK +case YY_STATE_EOF(HELP): +{ + zconf_endhelp(); + return T_HELPTEXT; + } + YY_BREAK + +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(ASSIGN_VAL): +{ + BEGIN(INITIAL); + + if (prev_token != T_EOL && prev_token != T_HELPTEXT) + fprintf(stderr, "%s:%d:warning: no new line at end of file\n", + cur_filename, yylineno); + + if (current_buf) { + zconf_endfile(); + return T_EOL; + } + fclose(yyin); + yyterminate(); +} + YY_BREAK +case 63: +YY_RULE_SETUP +YY_FATAL_ERROR( "flex scanner jammed" ); + YY_BREAK + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = (yy_hold_char); + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++(yy_c_buf_p); + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = (yy_c_buf_p); + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_END_OF_FILE: + { + (yy_did_buffer_switch_on_eof) = 0; + + if ( yywrap( ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = + (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + (yy_c_buf_p) = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ + } /* end of user's declarations */ +} /* end of yylex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (void) +{ + char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + char *source = (yytext_ptr); + int number_to_move, i; + int ret_val; + + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; + + else + { + int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; + + int yy_c_buf_p_offset = + (int) ((yy_c_buf_p) - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + yyrealloc( (void *) b->yy_ch_buf, + (yy_size_t) (b->yy_buf_size + 2) ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = NULL; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + (yy_n_chars), num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + if ( (yy_n_chars) == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart( yyin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( + (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + /* "- 2" to take care of EOB's */ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); + } + + (yy_n_chars) += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; + + (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (void) +{ + yy_state_type yy_current_state; + char *yy_cp; + + yy_current_state = (yy_start); + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { + yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +{ + int yy_is_jam; + + yy_current_state = yy_nxt[yy_current_state][1]; + yy_is_jam = (yy_current_state <= 0); + + return yy_is_jam ? 0 : yy_current_state; +} + +#ifndef YY_NO_UNPUT + + static void yyunput (int c, char * yy_bp ) +{ + char *yy_cp; + + yy_cp = (yy_c_buf_p); + + /* undo effects of setting up yytext */ + *yy_cp = (yy_hold_char); + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + int number_to_move = (yy_n_chars) + 2; + char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; + char *source = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; + + while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = + (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (char) c; + + if ( c == '\n' ){ + --yylineno; + } + + (yytext_ptr) = yy_bp; + (yy_hold_char) = *yy_cp; + (yy_c_buf_p) = yy_cp; +} + +#endif + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (void) +#else + static int input (void) +#endif + +{ + int c; + + *(yy_c_buf_p) = (yy_hold_char); + + if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + /* This was really a NUL. */ + *(yy_c_buf_p) = '\0'; + + else + { /* need more input */ + int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); + ++(yy_c_buf_p); + + switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart( yyin ); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( yywrap( ) ) + return 0; + + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = (yytext_ptr) + offset; + break; + } + } + } + + c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ + *(yy_c_buf_p) = '\0'; /* preserve yytext */ + (yy_hold_char) = *++(yy_c_buf_p); + + if ( c == '\n' ) + + yylineno++; +; + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * + * @note This function does not reset the start condition to @c INITIAL . + */ + void yyrestart (FILE * input_file ) +{ + + if ( ! YY_CURRENT_BUFFER ){ + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer( yyin, YY_BUF_SIZE ); + } + + yy_init_buffer( YY_CURRENT_BUFFER, input_file ); + yy_load_buffer_state( ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * + */ + void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +{ + + /* TODO. We should be able to replace this entire function body + * with + * yypop_buffer_state(); + * yypush_buffer_state(new_buffer); + */ + yyensure_buffer_stack (); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + yy_load_buffer_state( ); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe + * to go ahead and always set it. + */ + (yy_did_buffer_switch_on_eof) = 1; +} + +static void yy_load_buffer_state (void) +{ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + (yy_hold_char) = *(yy_c_buf_p); +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * + * @return the allocated buffer state. + */ + YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + yy_init_buffer( b, file ); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with yy_create_buffer() + * + */ + void yy_delete_buffer (YY_BUFFER_STATE b ) +{ + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + yyfree( (void *) b->yy_ch_buf ); + + yyfree( (void *) b ); +} + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a yyrestart() or at EOF. + */ + static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) + +{ + int oerrno = errno; + + yy_flush_buffer( b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then yy_init_buffer was _probably_ + * called from yyrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * + */ + void yy_flush_buffer (YY_BUFFER_STATE b ) +{ + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + yy_load_buffer_state( ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * + */ +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) +{ + if (new_buffer == NULL) + return; + + yyensure_buffer_stack(); + + /* This block is copied from yy_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + (yy_buffer_stack_top)++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from yy_switch_to_buffer. */ + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * + */ +void yypop_buffer_state (void) +{ + if (!YY_CURRENT_BUFFER) + return; + + yy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + if ((yy_buffer_stack_top) > 0) + --(yy_buffer_stack_top); + + if (YY_CURRENT_BUFFER) { + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void yyensure_buffer_stack (void) +{ + yy_size_t num_to_alloc; + + if (!(yy_buffer_stack)) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ + (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + (yy_buffer_stack_max) = num_to_alloc; + (yy_buffer_stack_top) = 0; + return; + } + + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + yy_size_t grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = (yy_buffer_stack_max) + grow_size; + (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc + ((yy_buffer_stack), + num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + /* zero only the new slots.*/ + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); + (yy_buffer_stack_max) = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return NULL; + + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + + b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = NULL; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer( b ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to yylex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * yy_scan_bytes() instead. + */ +YY_BUFFER_STATE yy_scan_string (const char * yystr ) +{ + + return yy_scan_bytes( yystr, (int) strlen(yystr) ); +} + +/** Setup the input buffer state to scan the given bytes. The next call to yylex() will + * scan from a @e copy of @a bytes. + * @param yybytes the byte buffer to scan + * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = (yy_size_t) (_yybytes_len + 2); + buf = (char *) yyalloc( n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer( buf, n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yynoreturn yy_fatal_error (const char* msg ) +{ + fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = (yy_hold_char); \ + (yy_c_buf_p) = yytext + yyless_macro_arg; \ + (yy_hold_char) = *(yy_c_buf_p); \ + *(yy_c_buf_p) = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the current line number. + * + */ +int yyget_lineno (void) +{ + + return yylineno; +} + +/** Get the input stream. + * + */ +FILE *yyget_in (void) +{ + return yyin; +} + +/** Get the output stream. + * + */ +FILE *yyget_out (void) +{ + return yyout; +} + +/** Get the length of the current token. + * + */ +int yyget_leng (void) +{ + return yyleng; +} + +/** Get the current token. + * + */ + +char *yyget_text (void) +{ + return yytext; +} + +/** Set the current line number. + * @param _line_number line number + * + */ +void yyset_lineno (int _line_number ) +{ + + yylineno = _line_number; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param _in_str A readable stream. + * + * @see yy_switch_to_buffer + */ +void yyset_in (FILE * _in_str ) +{ + yyin = _in_str ; +} + +void yyset_out (FILE * _out_str ) +{ + yyout = _out_str ; +} + +int yyget_debug (void) +{ + return yy_flex_debug; +} + +void yyset_debug (int _bdebug ) +{ + yy_flex_debug = _bdebug ; +} + +static int yy_init_globals (void) +{ + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from yylex_destroy(), so don't allocate here. + */ + + /* We do not touch yylineno unless the option is enabled. */ + yylineno = 1; + + (yy_buffer_stack) = NULL; + (yy_buffer_stack_top) = 0; + (yy_buffer_stack_max) = 0; + (yy_c_buf_p) = NULL; + (yy_init) = 0; + (yy_start) = 0; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = NULL; + yyout = NULL; +#endif + + /* For future reference: Set errno on error, since we are called by + * yylex_init() + */ + return 0; +} + +/* yylex_destroy is for both reentrant and non-reentrant scanners. */ +int yylex_destroy (void) +{ + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + yy_delete_buffer( YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + yypop_buffer_state(); + } + + /* Destroy the stack itself. */ + yyfree((yy_buffer_stack) ); + (yy_buffer_stack) = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * yylex() is called, initialization will occur. */ + yy_init_globals( ); + + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, const char * s2, int n ) +{ + + int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (const char * s ) +{ + int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *yyalloc (yy_size_t size ) +{ + return malloc(size); +} + +void *yyrealloc (void * ptr, yy_size_t size ) +{ + + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return realloc(ptr, size); +} + +void yyfree (void * ptr ) +{ + free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +/* second stage lexer */ +int yylex(void) +{ + int token; + +repeat: + token = yylex1(); + + if (prev_token == T_EOL || prev_token == T_HELPTEXT) { + if (token == T_EOL) + /* Do not pass unneeded T_EOL to the parser. */ + goto repeat; + else + /* + * For the parser, update lineno at the first token + * of each statement. Generally, \n is a statement + * terminator in Kconfig, but it is not always true + * because \n could be escaped by a backslash. + */ + cur_lineno = yylineno; + } + + if (prev_prev_token == T_EOL && prev_token == T_WORD && + (token == T_EQUAL || token == T_COLON_EQUAL || token == T_PLUS_EQUAL)) + BEGIN(ASSIGN_VAL); + + prev_prev_token = prev_token; + prev_token = token; + + return token; +} + +static char *expand_token(const char *in, size_t n) +{ + char *out; + int c; + char c2; + const char *rest, *end; + + new_string(); + append_string(in, n); + + /* + * get the whole line because we do not know the end of token. + * input() returns 0 (not EOF!) when it reachs the end of file. + */ + while ((c = input()) != 0) { + if (c == '\n') { + unput(c); + break; + } + c2 = c; + append_string(&c2, 1); + } + + rest = text; + out = expand_one_token(&rest); + + /* push back unused characters to the input stream */ + end = rest + strlen(rest); + while (end > rest) + unput(*--end); + + free(text); + + return out; +} + +static void append_expanded_string(const char *str) +{ + const char *end; + char *res; + + str++; + + res = expand_dollar(&str); + + /* push back unused characters to the input stream */ + end = str + strlen(str); + while (end > str) + unput(*--end); + + append_string(res, strlen(res)); + + free(res); +} + +void zconf_starthelp(void) +{ + new_string(); + last_ts = first_ts = 0; + BEGIN(HELP); +} + +static void zconf_endhelp(void) +{ + yylval.string = text; + BEGIN(INITIAL); +} + +/* + * Try to open specified file with following names: + * ./name + * $(srctree)/name + * The latter is used when srctree is separate from objtree + * when compiling the kernel. + * Return NULL if file is not found. + */ +FILE *zconf_fopen(const char *name) +{ + char *env, fullname[PATH_MAX+1]; + FILE *f; + + f = fopen(name, "r"); + if (!f && name != NULL && name[0] != '/') { + env = getenv(SRCTREE); + if (env) { + snprintf(fullname, sizeof(fullname), + "%s/%s", env, name); + f = fopen(fullname, "r"); + } + } + return f; +} + +void zconf_initscan(const char *name) +{ + yyin = zconf_fopen(name); + if (!yyin) { + fprintf(stderr, "can't find file %s\n", name); + exit(1); + } + + cur_filename = file_lookup(name); + yylineno = 1; +} + +void zconf_nextfile(const char *name) +{ + struct buffer *buf = xmalloc(sizeof(*buf)); + bool recur_include = false; + + buf->state = YY_CURRENT_BUFFER; + buf->yylineno = yylineno; + buf->filename = cur_filename; + buf->source_lineno = cur_lineno; + buf->parent = current_buf; + current_buf = buf; + yyin = zconf_fopen(name); + if (!yyin) { + fprintf(stderr, "%s:%d: can't open file \"%s\"\n", + cur_filename, cur_lineno, name); + exit(1); + } + yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); + + for (buf = current_buf; buf; buf = buf->parent) { + if (!strcmp(buf->filename, name)) + recur_include = true; + } + + if (recur_include) { + fprintf(stderr, + "Recursive inclusion detected.\n" + "Inclusion path:\n" + " current file : %s\n", name); + + for (buf = current_buf; buf; buf = buf->parent) + fprintf(stderr, " included from: %s:%d\n", + buf->filename, buf->source_lineno); + exit(1); + } + + yylineno = 1; + cur_filename = file_lookup(name); +} + +static void zconf_endfile(void) +{ + struct buffer *tmp; + + fclose(yyin); + yy_delete_buffer(YY_CURRENT_BUFFER); + yy_switch_to_buffer(current_buf->state); + yylineno = current_buf->yylineno; + cur_filename = current_buf->filename; + tmp = current_buf; + current_buf = current_buf->parent; + free(tmp); +} + diff --git a/support/kconfig/list.h b/support/kconfig/list.h index 45cb237ab7..882859ddf9 100644 --- a/support/kconfig/list.h +++ b/support/kconfig/list.h @@ -2,29 +2,39 @@ #ifndef LIST_H #define LIST_H -/* - * Copied from include/linux/... - */ +#include -#undef offsetof -#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) +#include "list_types.h" + +/* Are two types/vars the same type (ignoring qualifiers)? */ +#define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b)) /** * container_of - cast a member of a structure out to the containing structure - * @ptr: the pointer to the member. - * @type: the type of the container struct this is embedded in. - * @member: the name of the member within the struct. + * @ptr: the pointer to the member. + * @type: the type of the container struct this is embedded in. + * @member: the name of the member within the struct. * */ -#define container_of(ptr, type, member) ({ \ - const typeof( ((type *)0)->member ) *__mptr = (ptr); \ - (type *)( (char *)__mptr - offsetof(type,member) );}) - +#define container_of(ptr, type, member) ({ \ + void *__mptr = (void *)(ptr); \ + _Static_assert(__same_type(*(ptr), ((type *)0)->member) || \ + __same_type(*(ptr), void), \ + "pointer type mismatch in container_of()"); \ + ((type *)(__mptr - offsetof(type, member))); }) -struct list_head { - struct list_head *next, *prev; -}; +#define LIST_POISON1 ((void *) 0x100) +#define LIST_POISON2 ((void *) 0x122) +/* + * Circular doubly linked list implementation. + * + * Some of the internal functions ("__xxx") are useful when + * manipulating whole lists rather than single entries, as + * sometimes we already know the next/prev entries and we can + * generate better code by using them directly rather than + * using the generic single-entry routines. + */ #define LIST_HEAD_INIT(name) { &(name), &(name) } @@ -32,45 +42,16 @@ struct list_head { struct list_head name = LIST_HEAD_INIT(name) /** - * list_entry - get the struct for this entry - * @ptr: the &struct list_head pointer. - * @type: the type of the struct this is embedded in. - * @member: the name of the list_head within the struct. - */ -#define list_entry(ptr, type, member) \ - container_of(ptr, type, member) - -/** - * list_for_each_entry - iterate over list of given type - * @pos: the type * to use as a loop cursor. - * @head: the head for your list. - * @member: the name of the list_head within the struct. - */ -#define list_for_each_entry(pos, head, member) \ - for (pos = list_entry((head)->next, typeof(*pos), member); \ - &pos->member != (head); \ - pos = list_entry(pos->member.next, typeof(*pos), member)) - -/** - * list_for_each_entry_safe - iterate over list of given type safe against removal of list entry - * @pos: the type * to use as a loop cursor. - * @n: another type * to use as temporary storage - * @head: the head for your list. - * @member: the name of the list_head within the struct. - */ -#define list_for_each_entry_safe(pos, n, head, member) \ - for (pos = list_entry((head)->next, typeof(*pos), member), \ - n = list_entry(pos->member.next, typeof(*pos), member); \ - &pos->member != (head); \ - pos = n, n = list_entry(n->member.next, typeof(*n), member)) - -/** - * list_empty - tests whether a list is empty - * @head: the list to test. + * INIT_LIST_HEAD - Initialize a list_head structure + * @list: list_head structure to be initialized. + * + * Initializes the list_head to point to itself. If it is a list header, + * the result is an empty list. */ -static inline int list_empty(const struct list_head *head) +static inline void INIT_LIST_HEAD(struct list_head *list) { - return head->next == head; + list->next = list; + list->prev = list; } /* @@ -79,14 +60,27 @@ static inline int list_empty(const struct list_head *head) * This is only for internal list manipulation where we know * the prev/next entries already! */ -static inline void __list_add(struct list_head *_new, +static inline void __list_add(struct list_head *new, struct list_head *prev, struct list_head *next) { - next->prev = _new; - _new->next = next; - _new->prev = prev; - prev->next = _new; + next->prev = new; + new->next = next; + new->prev = prev; + prev->next = new; +} + +/** + * list_add - add a new entry + * @new: new entry to be added + * @head: list head to add it after + * + * Insert a new entry after the specified head. + * This is good for implementing stacks. + */ +static inline void list_add(struct list_head *new, struct list_head *head) +{ + __list_add(new, head, head->next); } /** @@ -97,9 +91,9 @@ static inline void __list_add(struct list_head *_new, * Insert a new entry before the specified head. * This is useful for implementing queues. */ -static inline void list_add_tail(struct list_head *_new, struct list_head *head) +static inline void list_add_tail(struct list_head *new, struct list_head *head) { - __list_add(_new, head->prev, head); + __list_add(new, head->prev, head); } /* @@ -115,8 +109,11 @@ static inline void __list_del(struct list_head *prev, struct list_head *next) prev->next = next; } -#define LIST_POISON1 ((void *) 0x00100100) -#define LIST_POISON2 ((void *) 0x00200200) +static inline void __list_del_entry(struct list_head *entry) +{ + __list_del(entry->prev, entry->next); +} + /** * list_del - deletes entry from list. * @entry: the element to delete from the list. @@ -125,8 +122,135 @@ static inline void __list_del(struct list_head *prev, struct list_head *next) */ static inline void list_del(struct list_head *entry) { - __list_del(entry->prev, entry->next); - entry->next = (struct list_head*)LIST_POISON1; - entry->prev = (struct list_head*)LIST_POISON2; + __list_del_entry(entry); + entry->next = LIST_POISON1; + entry->prev = LIST_POISON2; +} + +/** + * list_is_head - tests whether @list is the list @head + * @list: the entry to test + * @head: the head of the list + */ +static inline int list_is_head(const struct list_head *list, const struct list_head *head) +{ + return list == head; +} + +/** + * list_empty - tests whether a list is empty + * @head: the list to test. + */ +static inline int list_empty(const struct list_head *head) +{ + return head->next == head; +} + +/** + * list_entry - get the struct for this entry + * @ptr: the &struct list_head pointer. + * @type: the type of the struct this is embedded in. + * @member: the name of the list_head within the struct. + */ +#define list_entry(ptr, type, member) \ + container_of(ptr, type, member) + +/** + * list_first_entry - get the first element from a list + * @ptr: the list head to take the element from. + * @type: the type of the struct this is embedded in. + * @member: the name of the list_head within the struct. + * + * Note, that list is expected to be not empty. + */ +#define list_first_entry(ptr, type, member) \ + list_entry((ptr)->next, type, member) + +/** + * list_next_entry - get the next element in list + * @pos: the type * to cursor + * @member: the name of the list_head within the struct. + */ +#define list_next_entry(pos, member) \ + list_entry((pos)->member.next, typeof(*(pos)), member) + +/** + * list_entry_is_head - test if the entry points to the head of the list + * @pos: the type * to cursor + * @head: the head for your list. + * @member: the name of the list_head within the struct. + */ +#define list_entry_is_head(pos, head, member) \ + (&pos->member == (head)) + +/** + * list_for_each_entry - iterate over list of given type + * @pos: the type * to use as a loop cursor. + * @head: the head for your list. + * @member: the name of the list_head within the struct. + */ +#define list_for_each_entry(pos, head, member) \ + for (pos = list_first_entry(head, typeof(*pos), member); \ + !list_entry_is_head(pos, head, member); \ + pos = list_next_entry(pos, member)) + +/** + * list_for_each_entry_safe - iterate over list of given type. Safe against removal of list entry + * @pos: the type * to use as a loop cursor. + * @n: another type * to use as temporary storage + * @head: the head for your list. + * @member: the name of the list_head within the struct. + */ +#define list_for_each_entry_safe(pos, n, head, member) \ + for (pos = list_first_entry(head, typeof(*pos), member), \ + n = list_next_entry(pos, member); \ + !list_entry_is_head(pos, head, member); \ + pos = n, n = list_next_entry(n, member)) + +/* + * Double linked lists with a single pointer list head. + * Mostly useful for hash tables where the two pointer list head is + * too wasteful. + * You lose the ability to access the tail in O(1). + */ + +#define HLIST_HEAD_INIT { .first = NULL } + +/** + * hlist_add_head - add a new entry at the beginning of the hlist + * @n: new entry to be added + * @h: hlist head to add it after + * + * Insert a new entry after the specified head. + * This is good for implementing stacks. + */ +static inline void hlist_add_head(struct hlist_node *n, struct hlist_head *h) +{ + struct hlist_node *first = h->first; + + n->next = first; + if (first) + first->pprev = &n->next; + h->first = n; + n->pprev = &h->first; } -#endif + +#define hlist_entry(ptr, type, member) container_of(ptr, type, member) + +#define hlist_entry_safe(ptr, type, member) \ + ({ typeof(ptr) ____ptr = (ptr); \ + ____ptr ? hlist_entry(____ptr, type, member) : NULL; \ + }) + +/** + * hlist_for_each_entry - iterate over list of given type + * @pos: the type * to use as a loop cursor. + * @head: the head for your list. + * @member: the name of the hlist_node within the struct. + */ +#define hlist_for_each_entry(pos, head, member) \ + for (pos = hlist_entry_safe((head)->first, typeof(*(pos)), member);\ + pos; \ + pos = hlist_entry_safe((pos)->member.next, typeof(*(pos)), member)) + +#endif /* LIST_H */ diff --git a/support/kconfig/list_types.h b/support/kconfig/list_types.h new file mode 100644 index 0000000000..d935b7c5aa --- /dev/null +++ b/support/kconfig/list_types.h @@ -0,0 +1,17 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef LIST_TYPES_H +#define LIST_TYPES_H + +struct list_head { + struct list_head *next, *prev; +}; + +struct hlist_head { + struct hlist_node *first; +}; + +struct hlist_node { + struct hlist_node *next, **pprev; +}; + +#endif /* LIST_TYPES_H */ diff --git a/support/kconfig/lkc.h b/support/kconfig/lkc.h index f4394af6e4..e7cc9e985c 100644 --- a/support/kconfig/lkc.h +++ b/support/kconfig/lkc.h @@ -1,21 +1,16 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ #ifndef LKC_H #define LKC_H -#include "expr.h" +#include +#include +#include -#ifndef KBUILD_NO_NLS -# include -#else -static inline const char *gettext(const char *txt) { return txt; } -static inline void textdomain(const char *domainname) {} -static inline void bindtextdomain(const char *name, const char *dir) {} -static inline char *bind_textdomain_codeset(const char *dn, char *c) { return c; } -#endif +#include "expr.h" #ifdef __cplusplus extern "C" { @@ -25,15 +20,6 @@ extern "C" { #define SRCTREE "srctree" -#ifndef PACKAGE -#define PACKAGE "linux" -#endif - -#define LOCALEDIR "/usr/share/locale" - -#define _(text) gettext(text) -#define N_(text) (text) - #ifndef CONFIG_ #define CONFIG_ "CONFIG_" #endif @@ -44,46 +30,16 @@ static inline const char *CONFIG_prefix(void) #undef CONFIG_ #define CONFIG_ CONFIG_prefix() -#define TF_COMMAND 0x0001 -#define TF_PARAM 0x0002 -#define TF_OPTION 0x0004 - -enum conf_def_mode { - def_default, - def_yes, - def_mod, - def_no, - def_random -}; - -#define T_OPT_MODULES 1 -#define T_OPT_DEFCONFIG_LIST 2 -#define T_OPT_ENV 3 -#define T_OPT_ALLNOCONFIG_Y 4 - -struct kconf_id { - const char *name; - int token; - unsigned int flags; - enum symbol_type stype; -}; - extern int yylineno; void zconfdump(FILE *out); void zconf_starthelp(void); FILE *zconf_fopen(const char *name); void zconf_initscan(const char *name); void zconf_nextfile(const char *name); -int zconf_lineno(void); -const char *zconf_curname(void); /* confdata.c */ +extern struct gstr autoconf_cmd; const char *conf_get_configname(void); -const char *conf_get_autoconfig_name(void); -char *conf_get_default_confname(void); -void sym_set_change_count(int count); -void sym_add_change_count(int count); -bool conf_set_all_new_symbols(enum conf_def_mode mode); void set_all_choice_values(struct symbol *csym); /* confdata.c and expr.c */ @@ -95,28 +51,17 @@ static inline void xfwrite(const void *str, size_t len, size_t count, FILE *out) fprintf(stderr, "Error in writing or end of file.\n"); } -/* menu.c */ -void _menu_init(void); -void menu_warn(struct menu *menu, const char *fmt, ...); -struct menu *menu_add_menu(void); -void menu_end_menu(void); -void menu_add_entry(struct symbol *sym); -void menu_add_dep(struct expr *dep); -void menu_add_visibility(struct expr *dep); -struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep); -void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep); -void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep); -void menu_add_option(int token, char *arg); -void menu_finalize(struct menu *parent); -void menu_set_type(int type); - /* util.c */ -struct file *file_lookup(const char *name); -int file_write_dep(const char *name); +unsigned int strhash(const char *s); +const char *file_lookup(const char *name); void *xmalloc(size_t size); void *xcalloc(size_t nmemb, size_t size); void *xrealloc(void *p, size_t size); char *xstrdup(const char *s); +char *xstrndup(const char *s, size_t n); + +/* lexer.l */ +int yylex(void); struct gstr { size_t len; @@ -131,19 +76,40 @@ struct gstr str_new(void); void str_free(struct gstr *gs); void str_append(struct gstr *gs, const char *s); void str_printf(struct gstr *gs, const char *fmt, ...); -const char *str_get(struct gstr *gs); +char *str_get(struct gstr *gs); -/* symbol.c */ -extern struct expr *sym_env_list; +/* menu.c */ +void _menu_init(void); +void menu_warn(struct menu *menu, const char *fmt, ...); +struct menu *menu_add_menu(void); +void menu_end_menu(void); +void menu_add_entry(struct symbol *sym); +void menu_add_dep(struct expr *dep); +void menu_add_visibility(struct expr *dep); +struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep); +void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep); +void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep); +void menu_finalize(void); +void menu_set_type(int type); + +extern struct menu rootmenu; -void sym_init(void); +bool menu_is_empty(struct menu *menu); +bool menu_is_visible(struct menu *menu); +bool menu_has_prompt(struct menu *menu); +const char *menu_get_prompt(struct menu *menu); +struct menu *menu_get_parent_menu(struct menu *menu); +int get_jump_key_char(void); +struct gstr get_relations_str(struct symbol **sym_arr, struct list_head *head); +void menu_get_ext_help(struct menu *menu, struct gstr *help); + +/* symbol.c */ void sym_clear_all_valid(void); struct symbol *sym_choice_default(struct symbol *sym); +struct property *sym_get_range_prop(struct symbol *sym); const char *sym_get_string_default(struct symbol *sym); struct symbol *sym_check_deps(struct symbol *sym); -struct property *prop_alloc(enum prop_type type, struct symbol *sym); struct symbol *prop_get_symbol(struct property *prop); -struct property *sym_get_env_prop(struct symbol *sym); static inline tristate sym_get_tristate_value(struct symbol *sym) { @@ -156,11 +122,6 @@ static inline struct symbol *sym_get_choice_value(struct symbol *sym) return (struct symbol *)sym->curr.val; } -static inline bool sym_set_choice_value(struct symbol *ch, struct symbol *chval) -{ - return sym_set_tristate_value(chval, yes); -} - static inline bool sym_is_choice(struct symbol *sym) { return sym->flags & SYMBOL_CHOICE ? true : false; diff --git a/support/kconfig/lkc_proto.h b/support/kconfig/lkc_proto.h index 9dc8abfb1d..2807fa584c 100644 --- a/support/kconfig/lkc_proto.h +++ b/support/kconfig/lkc_proto.h @@ -1,4 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0 */ +#ifndef LKC_PROTO_H +#define LKC_PROTO_H + #include /* confdata.c */ @@ -7,35 +10,21 @@ int conf_read(const char *name); int conf_read_simple(const char *name, int); int conf_write_defconfig(const char *name); int conf_write(const char *name); -int conf_write_autoconf(void); +int conf_write_autoconf(int overwrite); +void conf_set_changed(bool val); bool conf_get_changed(void); void conf_set_changed_callback(void (*fn)(void)); -void conf_set_message_callback(void (*fn)(const char *fmt, va_list ap)); - -/* menu.c */ -extern struct menu rootmenu; - -bool menu_is_empty(struct menu *menu); -bool menu_is_visible(struct menu *menu); -bool menu_has_prompt(struct menu *menu); -const char * menu_get_prompt(struct menu *menu); -struct menu * menu_get_root_menu(struct menu *menu); -struct menu * menu_get_parent_menu(struct menu *menu); -bool menu_has_help(struct menu *menu); -const char * menu_get_help(struct menu *menu); -struct gstr get_relations_str(struct symbol **sym_arr, struct list_head *head); -void menu_get_ext_help(struct menu *menu, struct gstr *help); +void conf_set_message_callback(void (*fn)(const char *s)); +bool conf_errors(void); /* symbol.c */ -extern struct symbol * symbol_hash[SYMBOL_HASHSIZE]; - struct symbol * sym_lookup(const char *name, int flags); struct symbol * sym_find(const char *name); -char *sym_expand_string_value(const char *in); -const char * sym_escape_string_value(const char *in); +void print_symbol_for_listconfig(struct symbol *sym); struct symbol ** sym_re_search(const char *pattern); const char * sym_type_name(enum symbol_type type); void sym_calc_value(struct symbol *sym); +bool sym_dep_errors(void); enum symbol_type sym_get_type(struct symbol *sym); bool sym_tristate_within_range(struct symbol *sym,tristate tri); bool sym_set_tristate_value(struct symbol *sym,tristate tri); @@ -43,7 +32,7 @@ tristate sym_toggle_tristate_value(struct symbol *sym); bool sym_string_valid(struct symbol *sym, const char *newval); bool sym_string_within_range(struct symbol *sym, const char *str); bool sym_set_string_value(struct symbol *sym, const char *newval); -bool sym_is_changable(struct symbol *sym); +bool sym_is_changeable(struct symbol *sym); struct property * sym_get_choice_prop(struct symbol *sym); const char * sym_get_string_value(struct symbol *sym); @@ -51,3 +40,5 @@ const char * prop_get_type_name(enum prop_type type); /* expr.c */ void expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char *), void *data, int prevtoken); + +#endif /* LKC_PROTO_H */ diff --git a/support/kconfig/lxdialog/.gitignore b/support/kconfig/lxdialog/.gitignore deleted file mode 100644 index 90b08ff025..0000000000 --- a/support/kconfig/lxdialog/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# -# Generated files -# -lxdialog diff --git a/support/kconfig/lxdialog/BIG.FAT.WARNING b/support/kconfig/lxdialog/BIG.FAT.WARNING index a8999d82bd..7cb5a7ec93 100644 --- a/support/kconfig/lxdialog/BIG.FAT.WARNING +++ b/support/kconfig/lxdialog/BIG.FAT.WARNING @@ -1,4 +1,4 @@ This is NOT the official version of dialog. This version has been significantly modified from the original. It is for use by the Linux -kernel configuration script. Please do not bother Savio Lam with +kernel configuration script. Please do not bother Savio Lam with questions about this program. diff --git a/support/kconfig/lxdialog/check-lxdialog.sh b/support/kconfig/lxdialog/check-lxdialog.sh deleted file mode 100755 index 27d6c30a57..0000000000 --- a/support/kconfig/lxdialog/check-lxdialog.sh +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Check ncurses compatibility - -# What library to link -ldflags() -{ - pkg-config --libs ncursesw 2>/dev/null && exit - pkg-config --libs ncurses 2>/dev/null && exit - for ext in so a dll.a dylib ; do - for lib in ncursesw ncurses curses ; do - $cc -print-file-name=lib${lib}.${ext} | grep -q / - if [ $? -eq 0 ]; then - echo "-l${lib}" - exit - fi - done - done - exit 1 -} - -# Where is ncurses.h? -ccflags() -{ - if pkg-config --cflags ncursesw 2>/dev/null; then - echo '-DCURSES_LOC="" -DNCURSES_WIDECHAR=1' - elif pkg-config --cflags ncurses 2>/dev/null; then - echo '-DCURSES_LOC=""' - elif [ -f /usr/include/ncursesw/curses.h ]; then - echo '-I/usr/include/ncursesw -DCURSES_LOC=""' - echo ' -DNCURSES_WIDECHAR=1' - elif [ -f /usr/include/ncurses/ncurses.h ]; then - echo '-I/usr/include/ncurses -DCURSES_LOC=""' - elif [ -f /usr/include/ncurses/curses.h ]; then - echo '-I/usr/include/ncurses -DCURSES_LOC=""' - elif [ -f /usr/include/ncurses.h ]; then - echo '-DCURSES_LOC=""' - else - echo '-DCURSES_LOC=""' - fi -} - -# Temp file, try to clean up after us -tmp=$(mktemp) -trap "rm -f $tmp" 0 1 2 3 15 - -# Check if we can link to ncurses -check() { - $cc -x c - -o $tmp 2>/dev/null <<'EOF' -#include CURSES_LOC -int main() {} -EOF - if [ $? != 0 ]; then - echo " *** Unable to find the ncurses libraries or the" 1>&2 - echo " *** required header files." 1>&2 - echo " *** 'make menuconfig' requires the ncurses libraries." 1>&2 - echo " *** " 1>&2 - echo " *** Install ncurses (ncurses-devel or libncurses-dev " 1>&2 - echo " *** depending on your distribution) and try again." 1>&2 - echo " *** " 1>&2 - exit 1 - fi -} - -usage() { - printf "Usage: $0 [-check compiler options|-ccflags|-ldflags compiler options]\n" -} - -if [ $# -eq 0 ]; then - usage - exit 1 -fi - -cc="" -case "$1" in - "-check") - shift - cc="$@" - check - ;; - "-ccflags") - ccflags - ;; - "-ldflags") - shift - cc="$@" - ldflags - ;; - "*") - usage - exit 1 - ;; -esac diff --git a/support/kconfig/lxdialog/checklist.c b/support/kconfig/lxdialog/checklist.c index 8d016faa28..75493302fb 100644 --- a/support/kconfig/lxdialog/checklist.c +++ b/support/kconfig/lxdialog/checklist.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * checklist.c -- implements the checklist box * @@ -5,20 +6,6 @@ * Stuart Herbert - S.Herbert at sheffield.ac.uk: radiolist extension * Alessandro Rubini - rubini at ipvvis.unipv.it: merged the two * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap at cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "dialog.h" @@ -103,8 +90,8 @@ static void print_buttons(WINDOW * dialog, int height, int width, int selected) int x = width / 2 - 11; int y = height - 2; - print_button(dialog, gettext("Select"), y, x, selected == 0); - print_button(dialog, gettext(" Help "), y, x + 14, selected == 1); + print_button(dialog, "Select", y, x, selected == 0); + print_button(dialog, " Help ", y, x + 14, selected == 1); wmove(dialog, y, x + 1 + 14 * selected); wrefresh(dialog); @@ -132,7 +119,7 @@ int dialog_checklist(const char *title, const char *prompt, int height, } do_resize: - if (getmaxy(stdscr) < (height + CHECKLIST_HEIGTH_MIN)) + if (getmaxy(stdscr) < (height + CHECKLIST_HEIGHT_MIN)) return -ERRDISPLAYTOOSMALL; if (getmaxx(stdscr) < (width + CHECKLIST_WIDTH_MIN)) return -ERRDISPLAYTOOSMALL; @@ -201,9 +188,8 @@ do_resize: print_buttons(dialog, height, width, 0); - wnoutrefresh(dialog); - wnoutrefresh(list); - doupdate(); + wmove(list, choice, check_x + 1); + wrefresh(list); while (key != KEY_ESC) { key = wgetch(dialog); diff --git a/support/kconfig/lxdialog/dialog.h b/support/kconfig/lxdialog/dialog.h index fcffd5b41f..f6c2ebe6d1 100644 --- a/support/kconfig/lxdialog/dialog.h +++ b/support/kconfig/lxdialog/dialog.h @@ -1,21 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ /* * dialog.h -- common declarations for all dialog modules * * AUTHOR: Savio Lam (lam836 at cs.cuhk.hk) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include @@ -26,32 +13,10 @@ #include #include -#ifndef KBUILD_NO_NLS -# include -#else -# define gettext(Msgid) ((const char *) (Msgid)) -#endif - #ifdef __sun__ #define CURS_MACROS #endif -#include CURSES_LOC - -/* - * Colors in ncurses 1.9.9e do not work properly since foreground and - * background colors are OR'd rather than separately masked. This version - * of dialog was hacked to work with ncurses 1.9.9e, making it incompatible - * with standard curses. The simplest fix (to make this work with standard - * curses) uses the wbkgdset() function, not used in the original hack. - * Turn it off if we're building with 1.9.9e, since it just confuses things. - */ -#if defined(NCURSES_VERSION) && defined(_NEED_WRAP) && !defined(GCC_PRINTFLIKE) -#define OLD_NCURSES 1 -#undef wbkgdset -#define wbkgdset(w,p) /*nothing */ -#else -#define OLD_NCURSES 0 -#endif +#include #define TR(params) _tracef params @@ -126,10 +91,6 @@ struct dialog_info { struct dialog_color button_label_active; struct dialog_color button_label_inactive; struct dialog_color inputbox; - struct dialog_color inputbox_border; - struct dialog_color searchbox; - struct dialog_color searchbox_title; - struct dialog_color searchbox_border; struct dialog_color position_indicator; struct dialog_color menubox; struct dialog_color menubox_border; @@ -201,17 +162,17 @@ int on_key_esc(WINDOW *win); int on_key_resize(void); /* minimum (re)size values */ -#define CHECKLIST_HEIGTH_MIN 6 /* For dialog_checklist() */ +#define CHECKLIST_HEIGHT_MIN 6 /* For dialog_checklist() */ #define CHECKLIST_WIDTH_MIN 6 -#define INPUTBOX_HEIGTH_MIN 2 /* For dialog_inputbox() */ +#define INPUTBOX_HEIGHT_MIN 2 /* For dialog_inputbox() */ #define INPUTBOX_WIDTH_MIN 2 -#define MENUBOX_HEIGTH_MIN 15 /* For dialog_menu() */ +#define MENUBOX_HEIGHT_MIN 15 /* For dialog_menu() */ #define MENUBOX_WIDTH_MIN 65 -#define TEXTBOX_HEIGTH_MIN 8 /* For dialog_textbox() */ +#define TEXTBOX_HEIGHT_MIN 8 /* For dialog_textbox() */ #define TEXTBOX_WIDTH_MIN 8 -#define YESNO_HEIGTH_MIN 4 /* For dialog_yesno() */ +#define YESNO_HEIGHT_MIN 4 /* For dialog_yesno() */ #define YESNO_WIDTH_MIN 4 -#define WINDOW_HEIGTH_MIN 19 /* For init_dialog() */ +#define WINDOW_HEIGHT_MIN 19 /* For init_dialog() */ #define WINDOW_WIDTH_MIN 80 int init_dialog(const char *backtitle); @@ -231,27 +192,12 @@ int first_alpha(const char *string, const char *exempt); int dialog_yesno(const char *title, const char *prompt, int height, int width); int dialog_msgbox(const char *title, const char *prompt, int height, int width, int pause); - - -typedef void (*update_text_fn)(char *buf, size_t start, size_t end, void - *_data); -int dialog_textbox(const char *title, char *tbuf, int initial_height, - int initial_width, int *keys, int *_vscroll, int *_hscroll, - update_text_fn update_text, void *data); +int dialog_textbox(const char *title, const char *tbuf, int initial_height, + int initial_width, int *_vscroll, int *_hscroll, + int (*extra_key_cb)(int, size_t, size_t, void *), void *data); int dialog_menu(const char *title, const char *prompt, const void *selected, int *s_scroll); int dialog_checklist(const char *title, const char *prompt, int height, int width, int list_height); int dialog_inputbox(const char *title, const char *prompt, int height, int width, const char *init); - -/* - * This is the base for fictitious keys, which activate - * the buttons. - * - * Mouse-generated keys are the following: - * -- the first 32 are used as numbers, in addition to '0'-'9' - * -- the lowercase are used to signal mouse-enter events (M_EVENT + 'o') - * -- uppercase chars are used to invoke the button (M_EVENT + 'O') - */ -#define M_EVENT (KEY_MAX+1) diff --git a/support/kconfig/lxdialog/inputbox.c b/support/kconfig/lxdialog/inputbox.c index d58de1dc53..3c6e24b20f 100644 --- a/support/kconfig/lxdialog/inputbox.c +++ b/support/kconfig/lxdialog/inputbox.c @@ -1,22 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * inputbox.c -- implements the input box * * ORIGINAL AUTHOR: Savio Lam (lam836 at cs.cuhk.hk) * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap at cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "dialog.h" @@ -31,8 +18,8 @@ static void print_buttons(WINDOW * dialog, int height, int width, int selected) int x = width / 2 - 11; int y = height - 2; - print_button(dialog, gettext(" Ok "), y, x, selected == 0); - print_button(dialog, gettext(" Help "), y, x + 14, selected == 1); + print_button(dialog, " Ok ", y, x, selected == 0); + print_button(dialog, " Help ", y, x + 14, selected == 1); wmove(dialog, y, x + 1 + 14 * selected); wrefresh(dialog); @@ -56,7 +43,7 @@ int dialog_inputbox(const char *title, const char *prompt, int height, int width strcpy(instr, init); do_resize: - if (getmaxy(stdscr) <= (height - INPUTBOX_HEIGTH_MIN)) + if (getmaxy(stdscr) <= (height - INPUTBOX_HEIGHT_MIN)) return -ERRDISPLAYTOOSMALL; if (getmaxx(stdscr) <= (width - INPUTBOX_WIDTH_MIN)) return -ERRDISPLAYTOOSMALL; @@ -126,7 +113,8 @@ do_resize: case KEY_DOWN: break; case KEY_BACKSPACE: - case 127: + case 8: /* ^H */ + case 127: /* ^? */ if (pos) { wattrset(dialog, dlg.inputbox.atr); if (input_x == 0) { diff --git a/support/kconfig/lxdialog/menubox.c b/support/kconfig/lxdialog/menubox.c index 185524901d..d4c19b7bee 100644 --- a/support/kconfig/lxdialog/menubox.c +++ b/support/kconfig/lxdialog/menubox.c @@ -1,22 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * menubox.c -- implements the menu box * * ORIGINAL AUTHOR: Savio Lam (lam836 at cs.cuhk.hk) * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcapw at cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* @@ -76,15 +63,7 @@ static void do_print_item(WINDOW * win, const char *item, int line_y, /* Clear 'residue' of last item */ wattrset(win, dlg.menubox.atr); wmove(win, line_y, 0); -#if OLD_NCURSES - { - int i; - for (i = 0; i < menu_width; i++) - waddch(win, ' '); - } -#else wclrtoeol(win); -#endif wattrset(win, selected ? dlg.item_selected.atr : dlg.item.atr); mvwaddstr(win, line_y, item_x, menu_item); if (hotkey) { @@ -157,11 +136,11 @@ static void print_buttons(WINDOW * win, int height, int width, int selected) int x = width / 2 - 28; int y = height - 2; - print_button(win, gettext("Select"), y, x, selected == 0); - print_button(win, gettext(" Exit "), y, x + 12, selected == 1); - print_button(win, gettext(" Help "), y, x + 24, selected == 2); - print_button(win, gettext(" Save "), y, x + 36, selected == 3); - print_button(win, gettext(" Load "), y, x + 48, selected == 4); + print_button(win, "Select", y, x, selected == 0); + print_button(win, " Exit ", y, x + 12, selected == 1); + print_button(win, " Help ", y, x + 24, selected == 2); + print_button(win, " Save ", y, x + 36, selected == 3); + print_button(win, " Load ", y, x + 48, selected == 4); wmove(win, y, x + 1 + 12 * selected); wrefresh(win); @@ -193,7 +172,7 @@ int dialog_menu(const char *title, const char *prompt, do_resize: height = getmaxy(stdscr); width = getmaxx(stdscr); - if (height < MENUBOX_HEIGTH_MIN || width < MENUBOX_WIDTH_MIN) + if (height < MENUBOX_HEIGHT_MIN || width < MENUBOX_WIDTH_MIN) return -ERRDISPLAYTOOSMALL; height -= 4; diff --git a/support/kconfig/lxdialog/textbox.c b/support/kconfig/lxdialog/textbox.c index 1773319b95..0abaf63597 100644 --- a/support/kconfig/lxdialog/textbox.c +++ b/support/kconfig/lxdialog/textbox.c @@ -1,61 +1,156 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * textbox.c -- implements the text box * * ORIGINAL AUTHOR: Savio Lam (lam836 at cs.cuhk.hk) * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap at cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "dialog.h" -static void back_lines(int n); -static void print_page(WINDOW *win, int height, int width, update_text_fn - update_text, void *data); -static void print_line(WINDOW *win, int row, int width); -static char *get_line(void); -static void print_position(WINDOW * win); - static int hscroll; static int begin_reached, end_reached, page_length; -static char *buf; -static char *page; +static const char *buf, *page; +static size_t start, end; + +/* + * Go back 'n' lines in text. Called by dialog_textbox(). + * 'page' will be updated to point to the desired line in 'buf'. + */ +static void back_lines(int n) +{ + int i; + + begin_reached = 0; + /* Go back 'n' lines */ + for (i = 0; i < n; i++) { + if (*page == '\0') { + if (end_reached) { + end_reached = 0; + continue; + } + } + if (page == buf) { + begin_reached = 1; + return; + } + page--; + do { + if (page == buf) { + begin_reached = 1; + return; + } + page--; + } while (*page != '\n'); + page++; + } +} + +/* + * Return current line of text. Called by dialog_textbox() and print_line(). + * 'page' should point to start of current line before calling, and will be + * updated to point to start of next line. + */ +static char *get_line(void) +{ + int i = 0; + static char line[MAX_LEN + 1]; + + end_reached = 0; + while (*page != '\n') { + if (*page == '\0') { + end_reached = 1; + break; + } else if (i < MAX_LEN) + line[i++] = *(page++); + else { + /* Truncate lines longer than MAX_LEN characters */ + if (i == MAX_LEN) + line[i++] = '\0'; + page++; + } + } + if (i <= MAX_LEN) + line[i] = '\0'; + if (!end_reached) + page++; /* move past '\n' */ + + return line; +} + +/* + * Print a new line of text. + */ +static void print_line(WINDOW *win, int row, int width) +{ + char *line; + + line = get_line(); + line += MIN(strlen(line), hscroll); /* Scroll horizontally */ + wmove(win, row, 0); /* move cursor to correct line */ + waddch(win, ' '); + waddnstr(win, line, MIN(strlen(line), width - 2)); + + /* Clear 'residue' of previous line */ + wclrtoeol(win); +} + +/* + * Print a new page of text. + */ +static void print_page(WINDOW *win, int height, int width) +{ + int i, passed_end = 0; + + page_length = 0; + for (i = 0; i < height; i++) { + print_line(win, i, width); + if (!passed_end) + page_length++; + if (end_reached && !passed_end) + passed_end = 1; + } + wnoutrefresh(win); +} + +/* + * Print current position + */ +static void print_position(WINDOW *win) +{ + int percent; + + wattrset(win, dlg.position_indicator.atr); + wbkgdset(win, dlg.position_indicator.atr & A_COLOR); + percent = (page - buf) * 100 / strlen(buf); + wmove(win, getmaxy(win) - 3, getmaxx(win) - 9); + wprintw(win, "(%3d%%)", percent); +} /* * refresh window content */ static void refresh_text_box(WINDOW *dialog, WINDOW *box, int boxh, int boxw, - int cur_y, int cur_x, update_text_fn update_text, - void *data) + int cur_y, int cur_x) { - print_page(box, boxh, boxw, update_text, data); + start = page - buf; + + print_page(box, boxh, boxw); print_position(dialog); wmove(dialog, cur_y, cur_x); /* Restore cursor position */ wrefresh(dialog); -} + end = page - buf; +} /* * Display text from a file in a dialog box. * * keys is a null-terminated array - * update_text() may not add or remove any '\n' or '\0' in tbuf */ -int dialog_textbox(const char *title, char *tbuf, int initial_height, - int initial_width, int *keys, int *_vscroll, int *_hscroll, - update_text_fn update_text, void *data) +int dialog_textbox(const char *title, const char *tbuf, int initial_height, + int initial_width, int *_vscroll, int *_hscroll, + int (*extra_key_cb)(int, size_t, size_t, void *), void *data) { int i, x, y, cur_x, cur_y, key = 0; int height, width, boxh, boxw; @@ -80,7 +175,7 @@ int dialog_textbox(const char *title, char *tbuf, int initial_height, do_resize: getmaxyx(stdscr, height, width); - if (height < TEXTBOX_HEIGTH_MIN || width < TEXTBOX_WIDTH_MIN) + if (height < TEXTBOX_HEIGHT_MIN || width < TEXTBOX_WIDTH_MIN) return -ERRDISPLAYTOOSMALL; if (initial_height != 0) height = initial_height; @@ -129,14 +224,13 @@ do_resize: print_title(dialog, title, width); - print_button(dialog, gettext(" Exit "), height - 2, width / 2 - 4, TRUE); + print_button(dialog, " Exit ", height - 2, width / 2 - 4, TRUE); wnoutrefresh(dialog); getyx(dialog, cur_y, cur_x); /* Save cursor position */ /* Print first page of text */ attr_clear(box, boxh, boxw, dlg.dialog.atr); - refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x, update_text, - data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); while (!done) { key = wgetch(dialog); @@ -155,8 +249,7 @@ do_resize: begin_reached = 1; page = buf; refresh_text_box(dialog, box, boxh, boxw, - cur_y, cur_x, update_text, - data); + cur_y, cur_x); } break; case 'G': /* Last page */ @@ -166,8 +259,7 @@ do_resize: /* point to last char in buf */ page = buf + strlen(buf); back_lines(boxh); - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case 'K': /* Previous line */ case 'k': @@ -176,8 +268,7 @@ do_resize: break; back_lines(page_length + 1); - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case 'B': /* Previous page */ case 'b': @@ -186,8 +277,7 @@ do_resize: if (begin_reached) break; back_lines(page_length + boxh); - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case 'J': /* Next line */ case 'j': @@ -196,8 +286,7 @@ do_resize: break; back_lines(page_length - 1); - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case KEY_NPAGE: /* Next page */ case ' ': @@ -206,8 +295,7 @@ do_resize: break; begin_reached = 0; - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case '0': /* Beginning of line */ case 'H': /* Scroll left */ @@ -222,8 +310,7 @@ do_resize: hscroll--; /* Reprint current page to scroll horizontally */ back_lines(page_length); - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case 'L': /* Scroll right */ case 'l': @@ -233,8 +320,7 @@ do_resize: hscroll++; /* Reprint current page to scroll horizontally */ back_lines(page_length); - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case KEY_ESC: if (on_key_esc(dialog) == KEY_ESC) @@ -247,11 +333,9 @@ do_resize: on_key_resize(); goto do_resize; default: - for (i = 0; keys[i]; i++) { - if (key == keys[i]) { - done = true; - break; - } + if (extra_key_cb && extra_key_cb(key, start, end, data)) { + done = true; + break; } } } @@ -272,137 +356,3 @@ do_resize: *_hscroll = hscroll; return key; } - -/* - * Go back 'n' lines in text. Called by dialog_textbox(). - * 'page' will be updated to point to the desired line in 'buf'. - */ -static void back_lines(int n) -{ - int i; - - begin_reached = 0; - /* Go back 'n' lines */ - for (i = 0; i < n; i++) { - if (*page == '\0') { - if (end_reached) { - end_reached = 0; - continue; - } - } - if (page == buf) { - begin_reached = 1; - return; - } - page--; - do { - if (page == buf) { - begin_reached = 1; - return; - } - page--; - } while (*page != '\n'); - page++; - } -} - -/* - * Print a new page of text. - */ -static void print_page(WINDOW *win, int height, int width, update_text_fn - update_text, void *data) -{ - int i, passed_end = 0; - - if (update_text) { - char *end; - - for (i = 0; i < height; i++) - get_line(); - end = page; - back_lines(height); - update_text(buf, page - buf, end - buf, data); - } - - page_length = 0; - for (i = 0; i < height; i++) { - print_line(win, i, width); - if (!passed_end) - page_length++; - if (end_reached && !passed_end) - passed_end = 1; - } - wnoutrefresh(win); -} - -/* - * Print a new line of text. - */ -static void print_line(WINDOW * win, int row, int width) -{ - char *line; - - line = get_line(); - line += MIN(strlen(line), hscroll); /* Scroll horizontally */ - wmove(win, row, 0); /* move cursor to correct line */ - waddch(win, ' '); - waddnstr(win, line, MIN(strlen(line), width - 2)); - - /* Clear 'residue' of previous line */ -#if OLD_NCURSES - { - int x = getcurx(win); - int i; - for (i = 0; i < width - x; i++) - waddch(win, ' '); - } -#else - wclrtoeol(win); -#endif -} - -/* - * Return current line of text. Called by dialog_textbox() and print_line(). - * 'page' should point to start of current line before calling, and will be - * updated to point to start of next line. - */ -static char *get_line(void) -{ - int i = 0; - static char line[MAX_LEN + 1]; - - end_reached = 0; - while (*page != '\n') { - if (*page == '\0') { - end_reached = 1; - break; - } else if (i < MAX_LEN) - line[i++] = *(page++); - else { - /* Truncate lines longer than MAX_LEN characters */ - if (i == MAX_LEN) - line[i++] = '\0'; - page++; - } - } - if (i <= MAX_LEN) - line[i] = '\0'; - if (!end_reached) - page++; /* move past '\n' */ - - return line; -} - -/* - * Print current position - */ -static void print_position(WINDOW * win) -{ - int percent; - - wattrset(win, dlg.position_indicator.atr); - wbkgdset(win, dlg.position_indicator.atr & A_COLOR); - percent = (page - buf) * 100 / strlen(buf); - wmove(win, getmaxy(win) - 3, getmaxx(win) - 9); - wprintw(win, "(%3d%%)", percent); -} diff --git a/support/kconfig/lxdialog/util.c b/support/kconfig/lxdialog/util.c index f7abdeb92a..f18e2a89f6 100644 --- a/support/kconfig/lxdialog/util.c +++ b/support/kconfig/lxdialog/util.c @@ -1,22 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * util.c * * ORIGINAL AUTHOR: Savio Lam (lam836 at cs.cuhk.hk) * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap at cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include @@ -42,10 +29,6 @@ static void set_mono_theme(void) dlg.button_label_active.atr = A_REVERSE; dlg.button_label_inactive.atr = A_NORMAL; dlg.inputbox.atr = A_NORMAL; - dlg.inputbox_border.atr = A_NORMAL; - dlg.searchbox.atr = A_NORMAL; - dlg.searchbox_title.atr = A_BOLD; - dlg.searchbox_border.atr = A_NORMAL; dlg.position_indicator.atr = A_BOLD; dlg.menubox.atr = A_NORMAL; dlg.menubox_border.atr = A_NORMAL; @@ -82,10 +65,6 @@ static void set_classic_theme(void) DLG_COLOR(button_label_active, COLOR_YELLOW, COLOR_BLUE, true); DLG_COLOR(button_label_inactive, COLOR_BLACK, COLOR_WHITE, true); DLG_COLOR(inputbox, COLOR_BLACK, COLOR_WHITE, false); - DLG_COLOR(inputbox_border, COLOR_BLACK, COLOR_WHITE, false); - DLG_COLOR(searchbox, COLOR_BLACK, COLOR_WHITE, false); - DLG_COLOR(searchbox_title, COLOR_YELLOW, COLOR_WHITE, true); - DLG_COLOR(searchbox_border, COLOR_WHITE, COLOR_WHITE, true); DLG_COLOR(position_indicator, COLOR_YELLOW, COLOR_WHITE, true); DLG_COLOR(menubox, COLOR_BLACK, COLOR_WHITE, false); DLG_COLOR(menubox_border, COLOR_WHITE, COLOR_WHITE, true); @@ -114,14 +93,9 @@ static void set_blackbg_theme(void) DLG_COLOR(button_key_active, COLOR_YELLOW, COLOR_RED, true); DLG_COLOR(button_key_inactive, COLOR_RED, COLOR_BLACK, false); DLG_COLOR(button_label_active, COLOR_WHITE, COLOR_RED, false); - DLG_COLOR(button_label_inactive, COLOR_BLACK, COLOR_BLACK, true); + DLG_COLOR(button_label_inactive, COLOR_WHITE, COLOR_BLACK, false); DLG_COLOR(inputbox, COLOR_YELLOW, COLOR_BLACK, false); - DLG_COLOR(inputbox_border, COLOR_YELLOW, COLOR_BLACK, false); - - DLG_COLOR(searchbox, COLOR_YELLOW, COLOR_BLACK, false); - DLG_COLOR(searchbox_title, COLOR_YELLOW, COLOR_BLACK, true); - DLG_COLOR(searchbox_border, COLOR_BLACK, COLOR_BLACK, true); DLG_COLOR(position_indicator, COLOR_RED, COLOR_BLACK, false); @@ -149,7 +123,6 @@ static void set_bluetitle_theme(void) DLG_COLOR(title, COLOR_BLUE, COLOR_WHITE, true); DLG_COLOR(button_key_active, COLOR_YELLOW, COLOR_BLUE, true); DLG_COLOR(button_label_active, COLOR_WHITE, COLOR_BLUE, true); - DLG_COLOR(searchbox_title, COLOR_BLUE, COLOR_WHITE, true); DLG_COLOR(position_indicator, COLOR_BLUE, COLOR_WHITE, true); DLG_COLOR(tag, COLOR_BLUE, COLOR_WHITE, true); DLG_COLOR(tag_key, COLOR_BLUE, COLOR_WHITE, true); @@ -202,10 +175,6 @@ static void init_dialog_colors(void) init_one_color(&dlg.button_label_active); init_one_color(&dlg.button_label_inactive); init_one_color(&dlg.inputbox); - init_one_color(&dlg.inputbox_border); - init_one_color(&dlg.searchbox); - init_one_color(&dlg.searchbox_title); - init_one_color(&dlg.searchbox_border); init_one_color(&dlg.position_indicator); init_one_color(&dlg.menubox); init_one_color(&dlg.menubox_border); @@ -322,7 +291,7 @@ int init_dialog(const char *backtitle) getyx(stdscr, saved_y, saved_x); getmaxyx(stdscr, height, width); - if (height < WINDOW_HEIGTH_MIN || width < WINDOW_WIDTH_MIN) { + if (height < WINDOW_HEIGHT_MIN || width < WINDOW_WIDTH_MIN) { endwin(); return -ERRDISPLAYTOOSMALL; } @@ -376,7 +345,7 @@ void print_title(WINDOW *dialog, const char *title, int width) /* * Print a string of text in a window, automatically wrap around to the * next line if the string is too long to fit on one line. Newline - * characters '\n' are propperly processed. We start on a new line + * characters '\n' are properly processed. We start on a new line * if there is no room for at least 4 nonblanks following a double-space. */ void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x) @@ -554,7 +523,7 @@ int first_alpha(const char *string, const char *exempt) * lxdialog suggest which is correctly translated to two * times esc. But then we need to ignore the second esc to avoid stepping * out one menu too much. Filter away all escaped key sequences since - * keypad(FALSE) turn off ncurses support for escape sequences - and thats + * keypad(FALSE) turn off ncurses support for escape sequences - and that's * needed to make notimeout() do as expected. */ int on_key_esc(WINDOW *win) diff --git a/support/kconfig/lxdialog/yesno.c b/support/kconfig/lxdialog/yesno.c index 676fb2f824..b57d25e154 100644 --- a/support/kconfig/lxdialog/yesno.c +++ b/support/kconfig/lxdialog/yesno.c @@ -1,22 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * yesno.c -- implements the yes/no box * * ORIGINAL AUTHOR: Savio Lam (lam836 at cs.cuhk.hk) * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap at cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "dialog.h" @@ -29,8 +16,8 @@ static void print_buttons(WINDOW * dialog, int height, int width, int selected) int x = width / 2 - 10; int y = height - 2; - print_button(dialog, gettext(" Yes "), y, x, selected == 0); - print_button(dialog, gettext(" No "), y, x + 13, selected == 1); + print_button(dialog, " Yes ", y, x, selected == 0); + print_button(dialog, " No ", y, x + 13, selected == 1); wmove(dialog, y, x + 1 + 13 * selected); wrefresh(dialog); @@ -45,7 +32,7 @@ int dialog_yesno(const char *title, const char *prompt, int height, int width) WINDOW *dialog; do_resize: - if (getmaxy(stdscr) < (height + YESNO_HEIGTH_MIN)) + if (getmaxy(stdscr) < (height + YESNO_HEIGHT_MIN)) return -ERRDISPLAYTOOSMALL; if (getmaxx(stdscr) < (width + YESNO_WIDTH_MIN)) return -ERRDISPLAYTOOSMALL; diff --git a/support/kconfig/mconf-cfg.sh b/support/kconfig/mconf-cfg.sh new file mode 100755 index 0000000000..1e61f50a59 --- /dev/null +++ b/support/kconfig/mconf-cfg.sh @@ -0,0 +1,55 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +cflags=$1 +libs=$2 + +PKG="ncursesw" +PKG2="ncurses" + +if [ -n "$(command -v ${HOSTPKG_CONFIG})" ]; then + if ${HOSTPKG_CONFIG} --exists $PKG; then + ${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG} > ${libs} + exit 0 + fi + + if ${HOSTPKG_CONFIG} --exists ${PKG2}; then + ${HOSTPKG_CONFIG} --cflags ${PKG2} > ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG2} > ${libs} + exit 0 + fi +fi + +# Check the default paths in case pkg-config is not installed. +# (Even if it is installed, some distributions such as openSUSE cannot +# find ncurses by pkg-config.) +if [ -f /usr/include/ncursesw/ncurses.h ]; then + echo -D_GNU_SOURCE -I/usr/include/ncursesw > ${cflags} + echo -lncursesw > ${libs} + exit 0 +fi + +if [ -f /usr/include/ncurses/ncurses.h ]; then + echo -D_GNU_SOURCE -I/usr/include/ncurses > ${cflags} + echo -lncurses > ${libs} + exit 0 +fi + +# As a final fallback before giving up, check if $HOSTCC knows of a default +# ncurses installation (e.g. from a vendor-specific sysroot). +if echo '#include ' | ${HOSTCC} -E - >/dev/null 2>&1; then + echo -D_GNU_SOURCE > ${cflags} + echo -lncurses > ${libs} + exit 0 +fi + +echo >&2 "*" +echo >&2 "* Unable to find the ncurses package." +echo >&2 "* Install ncurses (ncurses-devel or libncurses-dev" +echo >&2 "* depending on your distribution)." +echo >&2 "*" +echo >&2 "* You may also need to install ${HOSTPKG_CONFIG} to find the" +echo >&2 "* ncurses installed in a non-default location." +echo >&2 "*" +exit 1 diff --git a/support/kconfig/mconf.c b/support/kconfig/mconf.c index 279f4552a1..420e173e4f 100644 --- a/support/kconfig/mconf.c +++ b/support/kconfig/mconf.c @@ -1,6 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. * * Introduced single menu mode (show all sub-menus in one large tree). * 2002-11-06 Petr Baudis @@ -15,14 +15,16 @@ #include #include #include +#include #include #include -#include +#include "list.h" #include "lkc.h" #include "lxdialog/dialog.h" +#include "mnconf-common.h" -static const char mconf_readme[] = N_( +static const char mconf_readme[] = "Overview\n" "--------\n" "This interface lets you select features and parameters for the build.\n" @@ -159,6 +161,12 @@ static const char mconf_readme[] = N_( "(especially with a larger number of unrolled categories) than the\n" "default mode.\n" "\n" + +"Search\n" +"-------\n" +"Pressing the forward-slash (/) anywhere brings up a search dialog box.\n" +"\n" + "Different color themes available\n" "--------------------------------\n" "It is possible to select different color themes using the variable\n" @@ -171,37 +179,37 @@ static const char mconf_readme[] = N_( " blackbg => selects a color scheme with black background\n" " classic => theme with blue background. The classic look\n" " bluetitle => an LCD friendly version of classic. (default)\n" -"\n"), -menu_instructions[] = N_( +"\n", +menu_instructions[] = "Arrow keys navigate the menu. " " selects submenus ---> (or empty submenus ----). " "Highlighted letters are hotkeys. " - "Pressing selects a feature, while excludes a feature. " + "Pressing selects a feature, while excludes a features. " "Press to exit, for Help, for Search. " - "Legend: [*] feature is selected [ ] feature is excluded"), -radiolist_instructions[] = N_( + "Legend: [*] feature is selected [ ] feature is excluded", +radiolist_instructions[] = "Use the arrow keys to navigate this window or " "press the hotkey of the item you wish to select " "followed by the . " - "Press for additional information about this option."), -inputbox_instructions_int[] = N_( + "Press for additional information about this option.", +inputbox_instructions_int[] = "Please enter a decimal value. " "Fractions will not be accepted. " - "Use the key to move from the input field to the buttons below it."), -inputbox_instructions_hex[] = N_( + "Use the key to move from the input field to the buttons below it.", +inputbox_instructions_hex[] = "Please enter a hexadecimal value. " - "Use the key to move from the input field to the buttons below it."), -inputbox_instructions_string[] = N_( + "Use the key to move from the input field to the buttons below it.", +inputbox_instructions_string[] = "Please enter a string value. " - "Use the key to move from the input field to the buttons below it."), -setmod_text[] = N_( + "Use the key to move from the input field to the buttons below it.", +setmod_text[] = "This feature depends on another which has been configured as a module.\n" - "As a result, this feature will be built as a module."), -load_config_text[] = N_( + "As a result, this feature will be built as a module.", +load_config_text[] = "Enter the name of the configuration file you wish to load. " "Accept the name shown to restore the configuration you " - "last retrieved. Leave blank to abort."), -load_config_help[] = N_( + "last retrieved. Leave blank to abort.", +load_config_help[] = "\n" "For various reasons, one may wish to keep several different\n" "configurations available on a single machine.\n" @@ -211,11 +219,11 @@ load_config_help[] = N_( "configuration.\n" "\n" "If you are uncertain, then you have probably never used alternate\n" - "configuration files. You should therefore leave this blank to abort.\n"), -save_config_text[] = N_( + "configuration files. You should therefore leave this blank to abort.\n", +save_config_text[] = "Enter a filename to which this configuration should be saved " - "as an alternate. Leave blank to abort."), -save_config_help[] = N_( + "as an alternate. Leave blank to abort.", +save_config_help[] = "\n" "For various reasons, one may wish to keep different configurations\n" "available on a single machine.\n" @@ -225,8 +233,8 @@ save_config_help[] = N_( "configuration options you have selected at that time.\n" "\n" "If you are uncertain what all this means then you should probably\n" - "leave this blank.\n"), -search_help[] = N_( + "leave this blank.\n", +search_help[] = "\n" "Search for symbols and display their relations.\n" "Regular expressions are allowed.\n" @@ -241,7 +249,7 @@ search_help[] = N_( " -> PCI support (PCI [=y])\n" "(1) -> PCI access mode ( [=y])\n" " Defined at drivers/pci/Kconfig:47\n" - " Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\n" + " Depends on: X86_LOCAL_APIC && X86_IO_APIC\n" " Selects: LIBCRC32\n" " Selected by: BAR [=n]\n" "-----------------------------------------------------------------\n" @@ -271,7 +279,7 @@ search_help[] = N_( "Examples: USB => find all symbols containing USB\n" " ^USB => find all symbols starting with USB\n" " USB$ => find all symbols ending with USB\n" - "\n"); + "\n"; static int indent; static struct menu *current_menu; @@ -282,32 +290,17 @@ static int save_and_exit; static int silent; static void conf(struct menu *menu, struct menu *active_menu); -static void conf_choice(struct menu *menu); -static void conf_string(struct menu *menu); -static void conf_load(void); -static void conf_save(void); -static int show_textbox_ext(const char *title, char *text, int r, int c, - int *keys, int *vscroll, int *hscroll, - update_text_fn update_text, void *data); -static void show_textbox(const char *title, const char *text, int r, int c); -static void show_helptext(const char *title, const char *text); -static void show_help(struct menu *menu); static char filename[PATH_MAX+1]; static void set_config_filename(const char *config_filename) { static char menu_backtitle[PATH_MAX+128]; - int size; - size = snprintf(menu_backtitle, sizeof(menu_backtitle), - "%s - %s", config_filename, rootmenu.prompt->text); - if (size >= sizeof(menu_backtitle)) - menu_backtitle[sizeof(menu_backtitle)-1] = '\0'; + snprintf(menu_backtitle, sizeof(menu_backtitle), "%s - %s", + config_filename, rootmenu.prompt->text); set_dialog_backtitle(menu_backtitle); - size = snprintf(filename, sizeof(filename), "%s", config_filename); - if (size >= sizeof(filename)) - filename[sizeof(filename)-1] = '\0'; + snprintf(filename, sizeof(filename), "%s", config_filename); } struct subtitle_part { @@ -355,37 +348,35 @@ static void reset_subtitle(void) set_dialog_subtitles(subtitles); } -struct search_data { - struct list_head *head; - struct menu **targets; - int *keys; -}; +static int show_textbox_ext(const char *title, const char *text, int r, int c, + int *vscroll, int *hscroll, + int (*extra_key_cb)(int, size_t, size_t, void *), + void *data) +{ + dialog_clear(); + return dialog_textbox(title, text, r, c, vscroll, hscroll, + extra_key_cb, data); +} -static void update_text(char *buf, size_t start, size_t end, void *_data) +static void show_textbox(const char *title, const char *text, int r, int c) { - struct search_data *data = _data; - struct jump_key *pos; - int k = 0; + show_textbox_ext(title, text, r, c, NULL, NULL, NULL, NULL); +} - list_for_each_entry(pos, data->head, entries) { - if (pos->offset >= start && pos->offset < end) { - char header[4]; +static void show_helptext(const char *title, const char *text) +{ + show_textbox(title, text, 0, 0); +} - if (k < JUMP_NB) { - int key = '0' + (pos->index % JUMP_NB) + 1; +static void show_help(struct menu *menu) +{ + struct gstr help = str_new(); - sprintf(header, "(%c)", key); - data->keys[k] = key; - data->targets[k] = pos->target; - k++; - } else { - sprintf(header, " "); - } + help.max_width = getmaxx(stdscr) - 10; + menu_get_ext_help(menu, &help); - memcpy(buf + pos->offset, header, sizeof(header) - 1); - } - } - data->keys[k] = 0; + show_helptext(menu_get_prompt(menu), str_get(&help)); + str_free(&help); } static void search_conf(void) @@ -400,19 +391,19 @@ static void search_conf(void) struct subtitle_part stpart; title = str_new(); - str_printf( &title, _("Enter (sub)string or regexp to search for " - "(with or without \"%s\")"), CONFIG_); + str_printf( &title, "Enter (sub)string or regexp to search for " + "(with or without \"%s\")", CONFIG_); again: dialog_clear(); - dres = dialog_inputbox(_("Search Configuration Parameter"), + dres = dialog_inputbox("Search Configuration Parameter", str_get(&title), 10, 75, ""); switch (dres) { case 0: break; case 1: - show_helptext(_("Search Configuration"), search_help); + show_helptext("Search Configuration", search_help); goto again; default: str_free(&title); @@ -432,27 +423,23 @@ again: sym_arr = sym_re_search(dialog_input); do { LIST_HEAD(head); - struct menu *targets[JUMP_NB]; - int keys[JUMP_NB + 1], i; struct search_data data = { .head = &head, - .targets = targets, - .keys = keys, }; struct jump_key *pos, *tmp; + jump_key_char = 0; res = get_relations_str(sym_arr, &head); set_subtitle(); - dres = show_textbox_ext(_("Search Results"), (char *) - str_get(&res), 0, 0, keys, &vscroll, - &hscroll, &update_text, (void *) - &data); + dres = show_textbox_ext("Search Results", str_get(&res), 0, 0, + &vscroll, &hscroll, + handle_search_keys, &data); again = false; - for (i = 0; i < JUMP_NB && keys[i]; i++) - if (dres == keys[i]) { - conf(targets[i]->parent, targets[i]); - again = true; - } + if (dres >= '1' && dres <= '9') { + assert(data.target != NULL); + conf(data.target->parent, data.target); + again = true; + } str_free(&res); list_for_each_entry_safe(pos, tmp, &head, entries) free(pos); @@ -491,7 +478,6 @@ static void build_conf(struct menu *menu) switch (prop->type) { case P_MENU: child_count++; - prompt = _(prompt); if (single_menu_mode) { item_make("%s%*c%s", menu->data ? "-->" : "++>", @@ -508,7 +494,7 @@ static void build_conf(struct menu *menu) case P_COMMENT: if (prompt) { child_count++; - item_make(" %*c*** %s ***", indent + 1, ' ', _(prompt)); + item_make(" %*c*** %s ***", indent + 1, ' ', prompt); item_set_tag(':'); item_set_data(menu); } @@ -516,7 +502,7 @@ static void build_conf(struct menu *menu) default: if (prompt) { child_count++; - item_make("---%*c%s", indent + 1, ' ', _(prompt)); + item_make("---%*c%s", indent + 1, ' ', prompt); item_set_tag(':'); item_set_data(menu); } @@ -538,7 +524,7 @@ static void build_conf(struct menu *menu) } val = sym_get_tristate_value(sym); - if (sym_is_changable(sym)) { + if (sym_is_changeable(sym)) { switch (type) { case S_BOOLEAN: item_make("[%c]", val == no ? ' ' : '*'); @@ -560,10 +546,10 @@ static void build_conf(struct menu *menu) item_set_data(menu); } - item_add_str("%*c%s", indent + 1, ' ', _(menu_get_prompt(menu))); + item_add_str("%*c%s", indent + 1, ' ', menu_get_prompt(menu)); if (val == yes) { if (def_menu) { - item_add_str(" (%s)", _(menu_get_prompt(def_menu))); + item_add_str(" (%s)", menu_get_prompt(def_menu)); item_add_str(" --->"); if (def_menu->list) { indent += 2; @@ -575,7 +561,7 @@ static void build_conf(struct menu *menu) } } else { if (menu == current_menu) { - item_make("---%*c%s", indent + 1, ' ', _(menu_get_prompt(menu))); + item_make("---%*c%s", indent + 1, ' ', menu_get_prompt(menu)); item_set_tag(':'); item_set_data(menu); goto conf_childs; @@ -589,7 +575,7 @@ static void build_conf(struct menu *menu) } else { switch (type) { case S_BOOLEAN: - if (sym_is_changable(sym)) + if (sym_is_changeable(sym)) item_make("[%c]", val == no ? ' ' : '*'); else item_make("-%c-", val == no ? ' ' : '*'); @@ -602,7 +588,7 @@ static void build_conf(struct menu *menu) case mod: ch = 'M'; break; default: ch = ' '; break; } - if (sym_is_changable(sym)) { + if (sym_is_changeable(sym)) { if (sym->rev_dep.tri == mod) item_make("{%c}", ch); else @@ -618,17 +604,17 @@ static void build_conf(struct menu *menu) tmp = indent - tmp + 4; if (tmp < 0) tmp = 0; - item_add_str("%*c%s%s", tmp, ' ', _(menu_get_prompt(menu)), - (sym_has_value(sym) || !sym_is_changable(sym)) ? - "" : _(" (NEW)")); + item_add_str("%*c%s%s", tmp, ' ', menu_get_prompt(menu), + (sym_has_value(sym) || !sym_is_changeable(sym)) ? + "" : " (NEW)"); item_set_tag('s'); item_set_data(menu); goto conf_childs; } } - item_add_str("%*c%s%s", indent + 1, ' ', _(menu_get_prompt(menu)), - (sym_has_value(sym) || !sym_is_changable(sym)) ? - "" : _(" (NEW)")); + item_add_str("%*c%s%s", indent + 1, ' ', menu_get_prompt(menu), + (sym_has_value(sym) || !sym_is_changeable(sym)) ? + "" : " (NEW)"); if (menu->prompt->type == P_MENU) { item_add_str(" %s", menu_is_empty(menu) ? "----" : "--->"); return; @@ -642,164 +628,9 @@ conf_childs: indent -= doint; } -static void conf(struct menu *menu, struct menu *active_menu) -{ - struct menu *submenu; - const char *prompt = menu_get_prompt(menu); - struct subtitle_part stpart; - struct symbol *sym; - int res; - int s_scroll = 0; - - if (menu != &rootmenu) - stpart.text = menu_get_prompt(menu); - else - stpart.text = NULL; - list_add_tail(&stpart.entries, &trail); - - while (1) { - item_reset(); - current_menu = menu; - build_conf(menu); - if (!child_count) - break; - set_subtitle(); - dialog_clear(); - res = dialog_menu(prompt ? _(prompt) : _("Main Menu"), - _(menu_instructions), - active_menu, &s_scroll); - if (res == 1 || res == KEY_ESC || res == -ERRDISPLAYTOOSMALL) - break; - if (item_count() != 0) { - if (!item_activate_selected()) - continue; - if (!item_tag()) - continue; - } - submenu = item_data(); - active_menu = item_data(); - if (submenu) - sym = submenu->sym; - else - sym = NULL; - - switch (res) { - case 0: - switch (item_tag()) { - case 'm': - if (single_menu_mode) - submenu->data = (void *) (long) !submenu->data; - else - conf(submenu, NULL); - break; - case 't': - if (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes) - conf_choice(submenu); - else if (submenu->prompt->type == P_MENU) - conf(submenu, NULL); - break; - case 's': - conf_string(submenu); - break; - } - break; - case 2: - if (sym) - show_help(submenu); - else { - reset_subtitle(); - show_helptext(_("README"), _(mconf_readme)); - } - break; - case 3: - reset_subtitle(); - conf_save(); - break; - case 4: - reset_subtitle(); - conf_load(); - break; - case 5: - if (item_is_tag('t')) { - if (sym_set_tristate_value(sym, yes)) - break; - if (sym_set_tristate_value(sym, mod)) - show_textbox(NULL, setmod_text, 6, 74); - } - break; - case 6: - if (item_is_tag('t')) - sym_set_tristate_value(sym, no); - break; - case 7: - if (item_is_tag('t')) - sym_set_tristate_value(sym, mod); - break; - case 8: - if (item_is_tag('t')) - sym_toggle_tristate_value(sym); - else if (item_is_tag('m')) - conf(submenu, NULL); - break; - case 9: - search_conf(); - break; - case 10: - show_all_options = !show_all_options; - break; - } - } - - list_del(trail.prev); -} - -static int show_textbox_ext(const char *title, char *text, int r, int c, int - *keys, int *vscroll, int *hscroll, update_text_fn - update_text, void *data) -{ - dialog_clear(); - return dialog_textbox(title, text, r, c, keys, vscroll, hscroll, - update_text, data); -} - -static void show_textbox(const char *title, const char *text, int r, int c) -{ - show_textbox_ext(title, (char *) text, r, c, (int []) {0}, NULL, NULL, - NULL, NULL); -} - -static void show_helptext(const char *title, const char *text) -{ - show_textbox(title, text, 0, 0); -} - -static void conf_message_callback(const char *fmt, va_list ap) -{ - char buf[PATH_MAX+1]; - - vsnprintf(buf, sizeof(buf), fmt, ap); - if (save_and_exit) { - if (!silent) - printf("%s", buf); - } else { - show_textbox(NULL, buf, 6, 60); - } -} - -static void show_help(struct menu *menu) -{ - struct gstr help = str_new(); - - help.max_width = getmaxx(stdscr) - 10; - menu_get_ext_help(menu, &help); - - show_helptext(_(menu_get_prompt(menu)), str_get(&help)); - str_free(&help); -} - static void conf_choice(struct menu *menu) { - const char *prompt = _(menu_get_prompt(menu)); + const char *prompt = menu_get_prompt(menu); struct menu *child; struct symbol *active; @@ -814,9 +645,9 @@ static void conf_choice(struct menu *menu) if (!menu_is_visible(child)) continue; if (child->sym) - item_make("%s", _(menu_get_prompt(child))); + item_make("%s", menu_get_prompt(child)); else { - item_make("*** %s ***", _(menu_get_prompt(child))); + item_make("*** %s ***", menu_get_prompt(child)); item_set_tag(':'); } item_set_data(child); @@ -826,11 +657,11 @@ static void conf_choice(struct menu *menu) item_set_tag('X'); } dialog_clear(); - res = dialog_checklist(prompt ? _(prompt) : _("Main Menu"), - _(radiolist_instructions), - MENUBOX_HEIGTH_MIN, + res = dialog_checklist(prompt ? prompt : "Main Menu", + radiolist_instructions, + MENUBOX_HEIGHT_MIN, MENUBOX_WIDTH_MIN, - CHECKLIST_HEIGTH_MIN); + CHECKLIST_HEIGHT_MIN); selected = item_activate_selected(); switch (res) { case 0: @@ -868,26 +699,26 @@ static void conf_string(struct menu *menu) switch (sym_get_type(menu->sym)) { case S_INT: - heading = _(inputbox_instructions_int); + heading = inputbox_instructions_int; break; case S_HEX: - heading = _(inputbox_instructions_hex); + heading = inputbox_instructions_hex; break; case S_STRING: - heading = _(inputbox_instructions_string); + heading = inputbox_instructions_string; break; default: - heading = _("Internal mconf error!"); + heading = "Internal mconf error!"; } dialog_clear(); - res = dialog_inputbox(prompt ? _(prompt) : _("Main Menu"), + res = dialog_inputbox(prompt ? prompt : "Main Menu", heading, 10, 75, sym_get_string_value(menu->sym)); switch (res) { case 0: if (sym_set_string_value(menu->sym, dialog_input_result)) return; - show_textbox(NULL, _("You have made an invalid entry."), 5, 43); + show_textbox(NULL, "You have made an invalid entry.", 5, 43); break; case 1: show_help(menu); @@ -912,13 +743,13 @@ static void conf_load(void) return; if (!conf_read(dialog_input_result)) { set_config_filename(dialog_input_result); - sym_set_change_count(1); + conf_set_changed(true); return; } - show_textbox(NULL, _("File does not exist!"), 5, 38); + show_textbox(NULL, "File does not exist!", 5, 38); break; case 1: - show_helptext(_("Load Alternate Configuration"), load_config_help); + show_helptext("Load Alternate Configuration", load_config_help); break; case KEY_ESC: return; @@ -941,10 +772,10 @@ static void conf_save(void) set_config_filename(dialog_input_result); return; } - show_textbox(NULL, _("Can't create file! Probably a nonexistent directory."), 5, 60); + show_textbox(NULL, "Can't create file!", 5, 60); break; case 1: - show_helptext(_("Save Alternate Configuration"), save_config_help); + show_helptext("Save Alternate Configuration", save_config_help); break; case KEY_ESC: return; @@ -952,6 +783,127 @@ static void conf_save(void) } } +static void conf(struct menu *menu, struct menu *active_menu) +{ + struct menu *submenu; + const char *prompt = menu_get_prompt(menu); + struct subtitle_part stpart; + struct symbol *sym; + int res; + int s_scroll = 0; + + if (menu != &rootmenu) + stpart.text = menu_get_prompt(menu); + else + stpart.text = NULL; + list_add_tail(&stpart.entries, &trail); + + while (1) { + item_reset(); + current_menu = menu; + build_conf(menu); + if (!child_count) + break; + set_subtitle(); + dialog_clear(); + res = dialog_menu(prompt ? prompt : "Main Menu", + menu_instructions, + active_menu, &s_scroll); + if (res == 1 || res == KEY_ESC || res == -ERRDISPLAYTOOSMALL) + break; + if (item_count() != 0) { + if (!item_activate_selected()) + continue; + if (!item_tag()) + continue; + } + submenu = item_data(); + active_menu = item_data(); + if (submenu) + sym = submenu->sym; + else + sym = NULL; + + switch (res) { + case 0: + switch (item_tag()) { + case 'm': + if (single_menu_mode) + submenu->data = (void *) (long) !submenu->data; + else + conf(submenu, NULL); + break; + case 't': + if (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes) + conf_choice(submenu); + else if (submenu->prompt->type == P_MENU) + conf(submenu, NULL); + break; + case 's': + conf_string(submenu); + break; + } + break; + case 2: + if (sym) + show_help(submenu); + else { + reset_subtitle(); + show_helptext("README", mconf_readme); + } + break; + case 3: + reset_subtitle(); + conf_save(); + break; + case 4: + reset_subtitle(); + conf_load(); + break; + case 5: + if (item_is_tag('t')) { + if (sym_set_tristate_value(sym, yes)) + break; + if (sym_set_tristate_value(sym, mod)) + show_textbox(NULL, setmod_text, 6, 74); + } + break; + case 6: + if (item_is_tag('t')) + sym_set_tristate_value(sym, no); + break; + case 7: + if (item_is_tag('t')) + sym_set_tristate_value(sym, mod); + break; + case 8: + if (item_is_tag('t')) + sym_toggle_tristate_value(sym); + else if (item_is_tag('m')) + conf(submenu, NULL); + break; + case 9: + search_conf(); + break; + case 10: + show_all_options = !show_all_options; + break; + } + } + + list_del(trail.prev); +} + +static void conf_message_callback(const char *s) +{ + if (save_and_exit) { + if (!silent) + printf("%s", s); + } else { + show_textbox(NULL, s, 6, 60); + } +} + static int handle_exit(void) { int res; @@ -961,8 +913,8 @@ static int handle_exit(void) dialog_clear(); if (conf_get_changed()) res = dialog_yesno(NULL, - _("Do you wish to save your new configuration?\n" - "(Press to continue Buildroot configuration.)"), + "Do you wish to save your new configuration?\n" + "(Press to continue Buildroot configuration.)", 6, 60); else res = -1; @@ -972,26 +924,27 @@ static int handle_exit(void) switch (res) { case 0: if (conf_write(filename)) { - fprintf(stderr, _("\n\n" + fprintf(stderr, "\n\n" "Error while writing of the configuration.\n" "Your configuration changes were NOT saved." - "\n\n")); + "\n\n"); return 1; } + conf_write_autoconf(0); /* fall through */ case -1: if (!silent) - printf(_("\n\n" + printf("\n\n" "*** End of the configuration.\n" "*** Execute 'make' to start the build or try 'make help'." - "\n\n")); + "\n\n"); res = 0; break; default: if (!silent) - fprintf(stderr, _("\n\n" + fprintf(stderr, "\n\n" "Your configuration changes were NOT saved." - "\n\n")); + "\n\n"); if (res != KEY_ESC) res = 0; } @@ -1009,10 +962,6 @@ int main(int ac, char **av) char *mode; int res; - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); - signal(SIGINT, sig_handler); if (ac > 1 && strcmp(av[1], "-s") == 0) { @@ -1031,8 +980,8 @@ int main(int ac, char **av) } if (init_dialog(NULL)) { - fprintf(stderr, N_("Your display is too small to run Menuconfig!\n")); - fprintf(stderr, N_("It must be at least 19 lines by 80 columns.\n")); + fprintf(stderr, "Your display is too small to run Menuconfig!\n"); + fprintf(stderr, "It must be at least 19 lines by 80 columns.\n"); return 1; } diff --git a/support/kconfig/menu.c b/support/kconfig/menu.c index 5c5c1374b1..3b822cd110 100644 --- a/support/kconfig/menu.c +++ b/support/kconfig/menu.c @@ -1,6 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ #include @@ -9,20 +9,19 @@ #include #include "lkc.h" +#include "internal.h" +#include "list.h" static const char nohelp_text[] = "There is no help available for this option."; struct menu rootmenu; static struct menu **last_entry_ptr; -struct file *file_list; -struct file *current_file; - void menu_warn(struct menu *menu, const char *fmt, ...) { va_list ap; va_start(ap, fmt); - fprintf(stderr, "%s:%d:warning: ", menu->file->name, menu->lineno); + fprintf(stderr, "%s:%d:warning: ", menu->filename, menu->lineno); vfprintf(stderr, fmt, ap); fprintf(stderr, "\n"); va_end(ap); @@ -32,7 +31,7 @@ static void prop_warn(struct property *prop, const char *fmt, ...) { va_list ap; va_start(ap, fmt); - fprintf(stderr, "%s:%d:warning: ", prop->file->name, prop->lineno); + fprintf(stderr, "%s:%d:warning: ", prop->filename, prop->lineno); vfprintf(stderr, fmt, ap); fprintf(stderr, "\n"); va_end(ap); @@ -52,20 +51,23 @@ void menu_add_entry(struct symbol *sym) memset(menu, 0, sizeof(*menu)); menu->sym = sym; menu->parent = current_menu; - menu->file = current_file; - menu->lineno = zconf_lineno(); + menu->filename = cur_filename; + menu->lineno = cur_lineno; *last_entry_ptr = menu; last_entry_ptr = &menu->next; current_entry = menu; - if (sym) + if (sym) { menu_add_symbol(P_SYMBOL, sym, NULL); + list_add_tail(&menu->link, &sym->menus); + } } struct menu *menu_add_menu(void) { last_entry_ptr = ¤t_entry->list; - return current_menu = current_entry; + current_menu = current_entry; + return current_menu; } void menu_end_menu(void) @@ -124,61 +126,76 @@ void menu_set_type(int type) sym_type_name(sym->type), sym_type_name(type)); } -static struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep) +static struct property *menu_add_prop(enum prop_type type, struct expr *expr, + struct expr *dep) { - struct property *prop = prop_alloc(type, current_entry->sym); + struct property *prop; + prop = xmalloc(sizeof(*prop)); + memset(prop, 0, sizeof(*prop)); + prop->type = type; + prop->filename = cur_filename; + prop->lineno = cur_lineno; prop->menu = current_entry; prop->expr = expr; prop->visible.expr = dep; - if (prompt) { - if (isspace(*prompt)) { - prop_warn(prop, "leading whitespace ignored"); - while (isspace(*prompt)) - prompt++; - } - if (current_entry->prompt && current_entry != &rootmenu) - prop_warn(prop, "prompt redefined"); + /* append property to the prop list of symbol */ + if (current_entry->sym) { + struct property **propp; - /* Apply all upper menus' visibilities to actual prompts. */ - if(type == P_PROMPT) { - struct menu *menu = current_entry; + for (propp = ¤t_entry->sym->prop; + *propp; + propp = &(*propp)->next) + ; + *propp = prop; + } - while ((menu = menu->parent) != NULL) { - struct expr *dup_expr; + return prop; +} - if (!menu->visibility) - continue; - /* - * Do not add a reference to the - * menu's visibility expression but - * use a copy of it. Otherwise the - * expression reduction functions - * will modify expressions that have - * multiple references which can - * cause unwanted side effects. - */ - dup_expr = expr_copy(menu->visibility); +struct property *menu_add_prompt(enum prop_type type, char *prompt, + struct expr *dep) +{ + struct property *prop = menu_add_prop(type, NULL, dep); - prop->visible.expr - = expr_alloc_and(prop->visible.expr, - dup_expr); - } - } + if (isspace(*prompt)) { + prop_warn(prop, "leading whitespace ignored"); + while (isspace(*prompt)) + prompt++; + } + if (current_entry->prompt) + prop_warn(prop, "prompt redefined"); + + /* Apply all upper menus' visibilities to actual prompts. */ + if (type == P_PROMPT) { + struct menu *menu = current_entry; + + while ((menu = menu->parent) != NULL) { + struct expr *dup_expr; - current_entry->prompt = prop; + if (!menu->visibility) + continue; + /* + * Do not add a reference to the menu's visibility + * expression but use a copy of it. Otherwise the + * expression reduction functions will modify + * expressions that have multiple references which + * can cause unwanted side effects. + */ + dup_expr = expr_copy(menu->visibility); + + prop->visible.expr = expr_alloc_and(prop->visible.expr, + dup_expr); + } } + + current_entry->prompt = prop; prop->text = prompt; return prop; } -struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep) -{ - return menu_add_prop(type, prompt, NULL, dep); -} - void menu_add_visibility(struct expr *expr) { current_entry->visibility = expr_alloc_and(current_entry->visibility, @@ -187,40 +204,12 @@ void menu_add_visibility(struct expr *expr) void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep) { - menu_add_prop(type, NULL, expr, dep); + menu_add_prop(type, expr, dep); } void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep) { - menu_add_prop(type, NULL, expr_alloc_symbol(sym), dep); -} - -void menu_add_option(int token, char *arg) -{ - switch (token) { - case T_OPT_MODULES: - if (modules_sym) - zconf_error("symbol '%s' redefines option 'modules'" - " already defined by symbol '%s'", - current_entry->sym->name, - modules_sym->name - ); - modules_sym = current_entry->sym; - break; - case T_OPT_DEFCONFIG_LIST: - if (!sym_defconfig_list) - sym_defconfig_list = current_entry->sym; - else if (sym_defconfig_list != current_entry->sym) - zconf_error("trying to redefine defconfig symbol"); - sym_defconfig_list->flags |= SYMBOL_AUTO; - break; - case T_OPT_ENV: - prop_add_env(arg); - break; - case T_OPT_ALLNOCONFIG_Y: - current_entry->sym->flags |= SYMBOL_ALLNOCONFIG_Y; - break; - } + menu_add_prop(type, expr_alloc_symbol(sym), dep); } static int menu_validate_number(struct symbol *sym, struct symbol *sym2) @@ -293,7 +282,7 @@ static void sym_check_prop(struct symbol *sym) } } -void menu_finalize(struct menu *parent) +static void _menu_finalize(struct menu *parent, bool inside_choice) { struct menu *menu, *last_menu; struct symbol *sym; @@ -307,7 +296,12 @@ void menu_finalize(struct menu *parent) * and propagate parent dependencies before moving on. */ - if (sym && sym_is_choice(sym)) { + bool is_choice = false; + + if (sym && sym_is_choice(sym)) + is_choice = true; + + if (is_choice) { if (sym->type == S_UNKNOWN) { /* find the first choice value to find out choice type */ current_entry = parent; @@ -318,12 +312,6 @@ void menu_finalize(struct menu *parent) } } } - /* set the type of the remaining choice values */ - for (menu = parent->list; menu; menu = menu->next) { - current_entry = menu; - if (menu->sym && menu->sym->type == S_UNKNOWN) - menu_set_type(sym->type); - } /* * Use the choice itself as the parent dependency of @@ -332,12 +320,10 @@ void menu_finalize(struct menu *parent) * choice value symbols. */ parentdep = expr_alloc_symbol(sym); - } else if (parent->prompt) - /* Menu node for 'menu' */ - parentdep = parent->prompt->visible.expr; - else - /* Menu node for 'if' */ + } else { + /* Menu node for 'menu', 'if' */ parentdep = parent->dep; + } /* For each child menu node... */ for (menu = parent->list; menu; menu = menu->next) { @@ -413,7 +399,7 @@ void menu_finalize(struct menu *parent) } } - if (sym && sym_is_choice(sym)) + if (is_choice) expr_free(parentdep); /* @@ -421,8 +407,8 @@ void menu_finalize(struct menu *parent) * moving on */ for (menu = parent->list; menu; menu = menu->next) - menu_finalize(menu); - } else if (sym) { + _menu_finalize(menu, is_choice); + } else if (!inside_choice && sym) { /* * Automatic submenu creation. If sym is a symbol and A, B, C, * ... are consecutive items (symbols, menus, ifs, etc.) that @@ -482,7 +468,7 @@ void menu_finalize(struct menu *parent) /* Superset, put in submenu */ expr_free(dep2); next: - menu_finalize(menu); + _menu_finalize(menu, false); menu->parent = parent; last_menu = menu; } @@ -580,9 +566,6 @@ void menu_finalize(struct menu *parent) if (sym->type == S_UNKNOWN) menu_warn(parent, "config symbol defined without type"); - if (sym_is_choice(sym) && !parent->prompt) - menu_warn(parent, "choice must have a prompt"); - /* Check properties connected to this symbol */ sym_check_prop(sym); sym->flags |= SYMBOL_WARNED; @@ -604,6 +587,11 @@ void menu_finalize(struct menu *parent) } } +void menu_finalize(void) +{ + _menu_finalize(&rootmenu, false); +} + bool menu_has_prompt(struct menu *menu) { if (!menu->prompt) @@ -674,11 +662,6 @@ const char *menu_get_prompt(struct menu *menu) return NULL; } -struct menu *menu_get_root_menu(struct menu *menu) -{ - return &rootmenu; -} - struct menu *menu_get_parent_menu(struct menu *menu) { enum prop_type type; @@ -691,17 +674,24 @@ struct menu *menu_get_parent_menu(struct menu *menu) return menu; } -bool menu_has_help(struct menu *menu) +static void get_def_str(struct gstr *r, struct menu *menu) { - return menu->help != NULL; + str_printf(r, "Defined at %s:%d\n", + menu->filename, menu->lineno); } -const char *menu_get_help(struct menu *menu) +static void get_dep_str(struct gstr *r, struct expr *expr, const char *prefix) { - if (menu->help) - return menu->help; - else - return ""; + if (!expr_is_yes(expr)) { + str_append(r, prefix); + expr_gstr_print(expr, r); + str_append(r, "\n"); + } +} + +int __attribute__((weak)) get_jump_key_char(void) +{ + return -1; } static void get_prompt_str(struct gstr *r, struct property *prop, @@ -711,66 +701,56 @@ static void get_prompt_str(struct gstr *r, struct property *prop, struct menu *submenu[8], *menu, *location = NULL; struct jump_key *jump = NULL; - str_printf(r, _("Prompt: %s\n"), _(prop->text)); - menu = prop->menu->parent; - for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent) { - bool accessible = menu_is_visible(menu); + str_printf(r, " Prompt: %s\n", prop->text); + + get_dep_str(r, prop->menu->dep, " Depends on: "); + /* + * Most prompts in Linux have visibility that exactly matches their + * dependencies. For these, we print only the dependencies to improve + * readability. However, prompts with inline "if" expressions and + * prompts with a parent that has a "visible if" expression have + * differing dependencies and visibility. In these rare cases, we + * print both. + */ + if (!expr_eq(prop->menu->dep, prop->visible.expr)) + get_dep_str(r, prop->visible.expr, " Visible if: "); + menu = prop->menu; + for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent) { submenu[i++] = menu; - if (location == NULL && accessible) + if (location == NULL && menu_is_visible(menu)) location = menu; } if (head && location) { jump = xmalloc(sizeof(struct jump_key)); - - if (menu_is_visible(prop->menu)) { - /* - * There is not enough room to put the hint at the - * beginning of the "Prompt" line. Put the hint on the - * last "Location" line even when it would belong on - * the former. - */ - jump->target = prop->menu; - } else - jump->target = location; - - if (list_empty(head)) - jump->index = 0; - else - jump->index = list_entry(head->prev, struct jump_key, - entries)->index + 1; - + jump->target = location; list_add_tail(&jump->entries, head); } - if (i > 0) { - str_printf(r, _(" Location:\n")); - for (j = 4; --i >= 0; j += 2) { - menu = submenu[i]; - if (jump && menu == location) - jump->offset = strlen(r->s); - str_printf(r, "%*c-> %s", j, ' ', - _(menu_get_prompt(menu))); - if (menu->sym) { - str_printf(r, " (%s [=%s])", menu->sym->name ? - menu->sym->name : _(""), - sym_get_string_value(menu->sym)); - } - str_append(r, "\n"); + str_printf(r, " Location:\n"); + for (j = 0; --i >= 0; j++) { + int jk = -1; + int indent = 2 * j + 4; + + menu = submenu[i]; + if (jump && menu == location) { + jump->offset = strlen(r->s); + jk = get_jump_key_char(); } - } -} -/* - * get property of type P_SYMBOL - */ -static struct property *get_symbol_prop(struct symbol *sym) -{ - struct property *prop = NULL; + if (jk >= 0) { + str_printf(r, "(%c)", jk); + indent -= 3; + } - for_all_properties(sym, prop, P_SYMBOL) - break; - return prop; + str_printf(r, "%*c-> %s", indent, ' ', menu_get_prompt(menu)); + if (menu->sym) { + str_printf(r, " (%s [=%s])", menu->sym->name ? + menu->sym->name : "", + sym_get_string_value(menu->sym)); + } + str_append(r, "\n"); + } } static void get_symbol_props_str(struct gstr *r, struct symbol *sym, @@ -798,6 +778,7 @@ static void get_symbol_str(struct gstr *r, struct symbol *sym, struct list_head *head) { struct property *prop; + struct menu *menu; if (sym && sym->name) { str_printf(r, "Symbol: %s [=%s]\n", sym->name, @@ -812,32 +793,34 @@ static void get_symbol_str(struct gstr *r, struct symbol *sym, } } } - for_all_prompts(sym, prop) - get_prompt_str(r, prop, head); - - prop = get_symbol_prop(sym); - if (prop) { - str_printf(r, _(" Defined at %s:%d\n"), prop->menu->file->name, - prop->menu->lineno); - if (!expr_is_yes(prop->visible.expr)) { - str_append(r, _(" Depends on: ")); - expr_gstr_print(prop->visible.expr, r); - str_append(r, "\n"); + + /* Print the definitions with prompts before the ones without */ + list_for_each_entry(menu, &sym->menus, link) { + if (menu->prompt) { + get_def_str(r, menu); + get_prompt_str(r, menu->prompt, head); + } + } + + list_for_each_entry(menu, &sym->menus, link) { + if (!menu->prompt) { + get_def_str(r, menu); + get_dep_str(r, menu->dep, " Depends on: "); } } - get_symbol_props_str(r, sym, P_SELECT, _(" Selects: ")); + get_symbol_props_str(r, sym, P_SELECT, "Selects: "); if (sym->rev_dep.expr) { - expr_gstr_print_revdep(sym->rev_dep.expr, r, yes, " Selected by [y]:\n"); - expr_gstr_print_revdep(sym->rev_dep.expr, r, mod, " Selected by [m]:\n"); - expr_gstr_print_revdep(sym->rev_dep.expr, r, no, " Selected by [n]:\n"); + expr_gstr_print_revdep(sym->rev_dep.expr, r, yes, "Selected by [y]:\n"); + expr_gstr_print_revdep(sym->rev_dep.expr, r, mod, "Selected by [m]:\n"); + expr_gstr_print_revdep(sym->rev_dep.expr, r, no, "Selected by [n]:\n"); } - get_symbol_props_str(r, sym, P_IMPLY, _(" Implies: ")); + get_symbol_props_str(r, sym, P_IMPLY, "Implies: "); if (sym->implied.expr) { - expr_gstr_print_revdep(sym->implied.expr, r, yes, " Implied by [y]:\n"); - expr_gstr_print_revdep(sym->implied.expr, r, mod, " Implied by [m]:\n"); - expr_gstr_print_revdep(sym->implied.expr, r, no, " Implied by [n]:\n"); + expr_gstr_print_revdep(sym->implied.expr, r, yes, "Implied by [y]:\n"); + expr_gstr_print_revdep(sym->implied.expr, r, mod, "Implied by [m]:\n"); + expr_gstr_print_revdep(sym->implied.expr, r, no, "Implied by [n]:\n"); } str_append(r, "\n\n"); @@ -852,7 +835,7 @@ struct gstr get_relations_str(struct symbol **sym_arr, struct list_head *head) for (i = 0; sym_arr && (sym = sym_arr[i]); i++) get_symbol_str(&res, sym, head); if (!i) - str_append(&res, _("No matches found.\n")); + str_append(&res, "No matches found.\n"); return res; } @@ -862,12 +845,12 @@ void menu_get_ext_help(struct menu *menu, struct gstr *help) struct symbol *sym = menu->sym; const char *help_text = nohelp_text; - if (menu_has_help(menu)) { + if (menu->help) { if (sym->name) str_printf(help, "%s%s:\n\n", CONFIG_, sym->name); - help_text = menu_get_help(menu); + help_text = menu->help; } - str_printf(help, "%s\n", _(help_text)); + str_printf(help, "%s\n", help_text); if (sym) get_symbol_str(help, sym, NULL); } diff --git a/support/kconfig/merge_config.sh b/support/kconfig/merge_config.sh index 14917806a3..a5c03487c3 100755 --- a/support/kconfig/merge_config.sh +++ b/support/kconfig/merge_config.sh @@ -1,4 +1,6 @@ #!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# # merge_config.sh - Takes a list of config fragment values, and merges # them one by one. Provides warnings on overridden values, and specified # values that did not make it to the resulting .config file (due to missed @@ -10,21 +12,13 @@ # # Copyright (c) 2009-2010 Wind River Systems, Inc. # Copyright 2011 Linaro -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2 as -# published by the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. + +set -e clean_up() { rm -f $TMP_FILE - exit + rm -f $MERGE_FILE } -trap clean_up HUP INT TERM usage() { echo "Usage: $0 [OPTIONS] [CONFIG [...]]" @@ -32,18 +26,23 @@ usage() { echo " -m only merge the fragments, do not execute the make command" echo " -n use allnoconfig instead of alldefconfig" echo " -r list redundant entries when merging fragments" + echo " -y make builtin have precedence over modules" echo " -O dir to put generated output files. Consider setting \$KCONFIG_CONFIG instead." + echo " -s strict mode. Fail if the fragment redefines any value." + echo " -Q disable warning messages for overridden options." echo " -e colon-separated list of br2-external trees to use (optional)" echo - echo "Used prefix: '$CONFIG_PREFIX'. You can redefine it with \$CONFIG_ - environment variable." + echo "Used prefix: '$CONFIG_PREFIX'. You can redefine it with \$CONFIG_ environment variable." } RUNMAKE=true ALLTARGET=alldefconfig WARNREDUN=false +BUILTIN=false OUTPUT=. +STRICT=false CONFIG_PREFIX=${CONFIG_-CONFIG_} +WARNOVERRIDE=echo while true; do case $1 in @@ -66,6 +65,11 @@ while true; do shift continue ;; + "-y") + BUILTIN=true + shift + continue + ;; "-O") if [ -d $2 ];then OUTPUT=$(echo $2 | sed 's/\/*$//') @@ -76,6 +80,16 @@ while true; do shift 2 continue ;; + "-s") + STRICT=true + shift + continue + ;; + "-Q") + WARNOVERRIDE=true + shift + continue + ;; "-e") EXTERNAL_ARG="BR2_EXTERNAL=$2" shift 2 @@ -113,42 +127,65 @@ SED_CONFIG_EXP1="s/^\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\)=.*/\1/p" SED_CONFIG_EXP2="s/^# \(${CONFIG_PREFIX}[a-zA-Z0-9_]*\) is not set$/\1/p" TMP_FILE=$(mktemp -t .tmp.config.XXXXXXXXXX) +MERGE_FILE=$(mktemp -t .merge_tmp.config.XXXXXXXXXX) echo "Using $INITFILE as base" + +trap clean_up EXIT + cat $INITFILE > $TMP_FILE # Merge files, printing warnings on overridden values -for MERGE_FILE in $MERGE_LIST ; do - echo "Merging $MERGE_FILE" - if [ ! -r "$MERGE_FILE" ]; then - echo "The merge file '$MERGE_FILE' does not exist. Exit." >&2 +for ORIG_MERGE_FILE in $MERGE_LIST ; do + echo "Merging $ORIG_MERGE_FILE" + if [ ! -r "$ORIG_MERGE_FILE" ]; then + echo "The merge file '$ORIG_MERGE_FILE' does not exist. Exit." >&2 exit 1 fi + cat $ORIG_MERGE_FILE > $MERGE_FILE CFG_LIST=$(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $MERGE_FILE) for CFG in $CFG_LIST ; do grep -q -w $CFG $TMP_FILE || continue PREV_VAL=$(grep -w $CFG $TMP_FILE) NEW_VAL=$(grep -w $CFG $MERGE_FILE) - if [ "x$PREV_VAL" != "x$NEW_VAL" ] ; then - echo Value of $CFG is redefined by fragment $MERGE_FILE: - echo Previous value: $PREV_VAL - echo New value: $NEW_VAL - echo + BUILTIN_FLAG=false + if [ "$BUILTIN" = "true" ] && [ "${NEW_VAL#CONFIG_*=}" = "m" ] && [ "${PREV_VAL#CONFIG_*=}" = "y" ]; then + ${WARNOVERRIDE} Previous value: $PREV_VAL + ${WARNOVERRIDE} New value: $NEW_VAL + ${WARNOVERRIDE} -y passed, will not demote y to m + ${WARNOVERRIDE} + BUILTIN_FLAG=true + elif [ "x$PREV_VAL" != "x$NEW_VAL" ] ; then + ${WARNOVERRIDE} Value of $CFG is redefined by fragment $ORIG_MERGE_FILE: + ${WARNOVERRIDE} Previous value: $PREV_VAL + ${WARNOVERRIDE} New value: $NEW_VAL + ${WARNOVERRIDE} + if [ "$STRICT" = "true" ]; then + STRICT_MODE_VIOLATED=true + fi elif [ "$WARNREDUN" = "true" ]; then - echo Value of $CFG is redundant by fragment $MERGE_FILE: + ${WARNOVERRIDE} Value of $CFG is redundant by fragment $ORIG_MERGE_FILE: + fi + if [ "$BUILTIN_FLAG" = "false" ]; then + sed -i "/$CFG[ =]/d" $TMP_FILE + else + sed -i "/$CFG[ =]/d" $MERGE_FILE fi - sed -i "/$CFG[ =]/d" $TMP_FILE done cat $MERGE_FILE >> $TMP_FILE done +if [ "$STRICT_MODE_VIOLATED" = "true" ]; then + echo "The fragment redefined a value and strict mode had been passed." + exit 1 +fi + if [ "$RUNMAKE" = "false" ]; then cp -T -- "$TMP_FILE" "$KCONFIG_CONFIG" echo "#" echo "# merged configuration written to $KCONFIG_CONFIG (needs make)" echo "#" - clean_up exit fi @@ -170,7 +207,7 @@ make KCONFIG_ALLCONFIG=$TMP_FILE $EXTERNAL_ARG $OUTPUT_ARG $ALLTARGET for CFG in $(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $TMP_FILE); do REQUESTED_VAL=$(grep -w -e "$CFG" $TMP_FILE) - ACTUAL_VAL=$(grep -w -e "$CFG" "$KCONFIG_CONFIG") + ACTUAL_VAL=$(grep -w -e "$CFG" "$KCONFIG_CONFIG" || true) if [ "x$REQUESTED_VAL" != "x$ACTUAL_VAL" ] ; then echo "Value requested for $CFG not in final .config" echo "Requested value: $REQUESTED_VAL" @@ -178,5 +215,3 @@ for CFG in $(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $TMP_FILE); do echo "" fi done - -clean_up diff --git a/support/kconfig/mnconf-common.c b/support/kconfig/mnconf-common.c new file mode 100644 index 0000000000..18cb9a6c5a --- /dev/null +++ b/support/kconfig/mnconf-common.c @@ -0,0 +1,53 @@ +// SPDX-License-Identifier: GPL-2.0-only +#include "expr.h" +#include "list.h" +#include "mnconf-common.h" + +int jump_key_char; + +int next_jump_key(int key) +{ + if (key < '1' || key > '9') + return '1'; + + key++; + + if (key > '9') + key = '1'; + + return key; +} + +int handle_search_keys(int key, size_t start, size_t end, void *_data) +{ + struct search_data *data = _data; + struct jump_key *pos; + int index = 0; + + if (key < '1' || key > '9') + return 0; + + list_for_each_entry(pos, data->head, entries) { + index = next_jump_key(index); + + if (pos->offset < start) + continue; + + if (pos->offset >= end) + break; + + if (key == index) { + data->target = pos->target; + return 1; + } + } + + return 0; +} + +int get_jump_key_char(void) +{ + jump_key_char = next_jump_key(jump_key_char); + + return jump_key_char; +} diff --git a/support/kconfig/mnconf-common.h b/support/kconfig/mnconf-common.h new file mode 100644 index 0000000000..ab6292cc4b --- /dev/null +++ b/support/kconfig/mnconf-common.h @@ -0,0 +1,18 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +#ifndef MNCONF_COMMON_H +#define MNCONF_COMMON_H + +#include + +struct search_data { + struct list_head *head; + struct menu *target; +}; + +extern int jump_key_char; + +int next_jump_key(int key); +int handle_search_keys(int key, size_t start, size_t end, void *_data); +int get_jump_key_char(void); + +#endif /* MNCONF_COMMON_H */ diff --git a/support/kconfig/nconf-cfg.sh b/support/kconfig/nconf-cfg.sh new file mode 100755 index 0000000000..f871a2160e --- /dev/null +++ b/support/kconfig/nconf-cfg.sh @@ -0,0 +1,53 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +cflags=$1 +libs=$2 + +PKG="ncursesw menuw panelw" +PKG2="ncurses menu panel" + +if [ -n "$(command -v ${HOSTPKG_CONFIG})" ]; then + if ${HOSTPKG_CONFIG} --exists $PKG; then + ${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG} > ${libs} + exit 0 + fi + + if ${HOSTPKG_CONFIG} --exists $PKG2; then + ${HOSTPKG_CONFIG} --cflags ${PKG2} > ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG2} > ${libs} + exit 0 + fi +fi + +# Check the default paths in case pkg-config is not installed. +# (Even if it is installed, some distributions such as openSUSE cannot +# find ncurses by pkg-config.) +if [ -f /usr/include/ncursesw/ncurses.h ]; then + echo -D_GNU_SOURCE -I/usr/include/ncursesw > ${cflags} + echo -lncursesw -lmenuw -lpanelw > ${libs} + exit 0 +fi + +if [ -f /usr/include/ncurses/ncurses.h ]; then + echo -D_GNU_SOURCE -I/usr/include/ncurses > ${cflags} + echo -lncurses -lmenu -lpanel > ${libs} + exit 0 +fi + +if [ -f /usr/include/ncurses.h ]; then + echo -D_GNU_SOURCE > ${cflags} + echo -lncurses -lmenu -lpanel > ${libs} + exit 0 +fi + +echo >&2 "*" +echo >&2 "* Unable to find the ncurses package." +echo >&2 "* Install ncurses (ncurses-devel or libncurses-dev" +echo >&2 "* depending on your distribution)." +echo >&2 "*" +echo >&2 "* You may also need to install ${HOSTPKG_CONFIG} to find the" +echo >&2 "* ncurses installed in a non-default location." +echo >&2 "*" +exit 1 diff --git a/support/kconfig/nconf.c b/support/kconfig/nconf.c index 0031147798..9d22b0f319 100644 --- a/support/kconfig/nconf.c +++ b/support/kconfig/nconf.c @@ -1,21 +1,23 @@ +// SPDX-License-Identifier: GPL-2.0 /* - * Copyright (C) 2008 Nir Tzachar * * Derived from menuconfig. - * */ #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif #include +#include #include +#include "list.h" #include "lkc.h" +#include "mnconf-common.h" #include "nconf.h" #include -static const char nconf_global_help[] = N_( +static const char nconf_global_help[] = "Help windows\n" "------------\n" "o Global help: Unless in a data entry window, pressing will give \n" @@ -52,8 +54,8 @@ static const char nconf_global_help[] = N_( "\n" "Menu navigation keys\n" "----------------------------------------------------------------------\n" -"Linewise up \n" -"Linewise down \n" +"Linewise up \n" +"Linewise down \n" "Pagewise up \n" "Pagewise down \n" "First entry \n" @@ -130,8 +132,8 @@ static const char nconf_global_help[] = N_( "\n" "Note that this mode can eventually be a little more CPU expensive than\n" "the default mode, especially with a larger number of unfolded submenus.\n" -"\n"), -menu_no_f_instructions[] = N_( +"\n", +menu_no_f_instructions[] = "Legend: [*] built-in [ ] excluded module < > module capable.\n" "Submenus are designated by a trailing \"--->\", empty ones by \"----\".\n" "\n" @@ -147,8 +149,8 @@ menu_no_f_instructions[] = N_( "You do not have function keys support.\n" "Press <1> instead of , <2> instead of , etc.\n" "For verbose global help use key <1>.\n" -"For help related to the current menu entry press or .\n"), -menu_instructions[] = N_( +"For help related to the current menu entry press or .\n", +menu_instructions[] = "Legend: [*] built-in [ ] excluded module < > module capable.\n" "Submenus are designated by a trailing \"--->\", empty ones by \"----\".\n" "\n" @@ -163,30 +165,30 @@ menu_instructions[] = N_( "\n" "Pressing <1> may be used instead of , <2> instead of , etc.\n" "For verbose global help press .\n" -"For help related to the current menu entry press or .\n"), -radiolist_instructions[] = N_( +"For help related to the current menu entry press or .\n", +radiolist_instructions[] = "Press , , or to navigate a radiolist, select\n" "with .\n" "For help related to the current entry press or .\n" -"For global help press .\n"), -inputbox_instructions_int[] = N_( +"For global help press .\n", +inputbox_instructions_int[] = "Please enter a decimal value.\n" "Fractions will not be accepted.\n" -"Press to apply, to cancel."), -inputbox_instructions_hex[] = N_( +"Press to apply, to cancel.", +inputbox_instructions_hex[] = "Please enter a hexadecimal value.\n" -"Press to apply, to cancel."), -inputbox_instructions_string[] = N_( +"Press to apply, to cancel.", +inputbox_instructions_string[] = "Please enter a string value.\n" -"Press to apply, to cancel."), -setmod_text[] = N_( +"Press to apply, to cancel.", +setmod_text[] = "This feature depends on another feature which has been configured as a\n" -"module. As a result, the current feature will be built as a module too."), -load_config_text[] = N_( +"module. As a result, the current feature will be built as a module too.", +load_config_text[] = "Enter the name of the configuration file you wish to load.\n" "Accept the name shown to restore the configuration you last\n" -"retrieved. Leave empty to abort."), -load_config_help[] = N_( +"retrieved. Leave empty to abort.", +load_config_help[] = "For various reasons, one may wish to keep several different\n" "configurations available on a single machine.\n" "\n" @@ -194,11 +196,11 @@ load_config_help[] = N_( "default one, entering its name here will allow you to load and modify\n" "that configuration.\n" "\n" -"Leave empty to abort.\n"), -save_config_text[] = N_( +"Leave empty to abort.\n", +save_config_text[] = "Enter a filename to which this configuration should be saved\n" -"as an alternate. Leave empty to abort."), -save_config_help[] = N_( +"as an alternate. Leave empty to abort.", +save_config_help[] = "For various reasons, one may wish to keep several different\n" "configurations available on a single machine.\n" "\n" @@ -206,8 +208,8 @@ save_config_help[] = N_( "and use the current configuration as an alternate to whatever\n" "configuration options you have selected at that time.\n" "\n" -"Leave empty to abort.\n"), -search_help[] = N_( +"Leave empty to abort.\n", +search_help[] = "Search for symbols (configuration variable names CONFIG_*) and display\n" "their relations. Regular expressions are supported.\n" "Example: Search for \"^FOO\".\n" @@ -216,11 +218,11 @@ search_help[] = N_( "Symbol: FOO [ = m]\n" "Prompt: Foo bus is used to drive the bar HW\n" "Defined at drivers/pci/Kconfig:47\n" -"Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\n" +"Depends on: X86_LOCAL_APIC && X86_IO_APIC\n" "Location:\n" " -> Bus options (PCI, PCMCIA, EISA, ISA)\n" " -> PCI support (PCI [ = y])\n" -" -> PCI access mode ( [ = y])\n" +"(1) -> PCI access mode ( [ = y])\n" "Selects: LIBCRC32\n" "Selected by: BAR\n" "-----------------------------------------------------------------\n" @@ -231,9 +233,13 @@ search_help[] = N_( "o The 'Depends on:' line lists symbols that need to be defined for\n" " this symbol to be visible and selectable in the menu.\n" "o The 'Location:' lines tell, where in the menu structure this symbol\n" -" is located. A location followed by a [ = y] indicates that this is\n" -" a selectable menu item, and the current value is displayed inside\n" -" brackets.\n" +" is located.\n" +" A location followed by a [ = y] indicates that this is\n" +" a selectable menu item, and the current value is displayed inside\n" +" brackets.\n" +" Press the key in the (#) prefix to jump directly to that\n" +" location. You will be returned to the current search results\n" +" after exiting this new menu.\n" "o The 'Selects:' line tells, what symbol will be automatically selected\n" " if this symbol is selected (y or m).\n" "o The 'Selected by' line tells what symbol has selected this symbol.\n" @@ -244,7 +250,7 @@ search_help[] = N_( "USB => find all symbols containing USB\n" "^USB => find all symbols starting with USB\n" "USB$ => find all symbols ending with USB\n" -"\n"); +"\n"; struct mitem { char str[256]; @@ -268,7 +274,7 @@ static int mwin_max_cols; static MENU *curses_menu; static ITEM *curses_menu_items[MAX_MENU_ITEMS]; static struct mitem k_menu_items[MAX_MENU_ITEMS]; -static int items_num; +static unsigned int items_num; static int global_exit; /* the currently selected button */ static const char *current_instructions = menu_instructions; @@ -276,6 +282,7 @@ static const char *current_instructions = menu_instructions; static char *dialog_input_result; static int dialog_input_result_len; +static void selected_conf(struct menu *menu, struct menu *active_menu); static void conf(struct menu *menu); static void conf_choice(struct menu *menu); static void conf_string(struct menu *menu); @@ -370,25 +377,25 @@ static void print_function_line(void) int lines = getmaxy(stdscr); for (i = 0; i < function_keys_num; i++) { - (void) wattrset(main_window, attributes[FUNCTION_HIGHLIGHT]); + wattrset(main_window, attr_function_highlight); mvwprintw(main_window, lines-3, offset, "%s", function_keys[i].key_str); - (void) wattrset(main_window, attributes[FUNCTION_TEXT]); + wattrset(main_window, attr_function_text); offset += strlen(function_keys[i].key_str); mvwprintw(main_window, lines-3, offset, "%s", function_keys[i].func); offset += strlen(function_keys[i].func) + skip; } - (void) wattrset(main_window, attributes[NORMAL]); + wattrset(main_window, attr_normal); } /* help */ static void handle_f1(int *key, struct menu *current_item) { show_scroll_win(main_window, - _("Global help"), _(nconf_global_help)); + "Global help", nconf_global_help); return; } @@ -403,8 +410,8 @@ static void handle_f2(int *key, struct menu *current_item) static void handle_f3(int *key, struct menu *current_item) { show_scroll_win(main_window, - _("Short help"), - _(current_instructions)); + "Short help", + current_instructions); return; } @@ -412,7 +419,7 @@ static void handle_f3(int *key, struct menu *current_item) static void handle_f4(int *key, struct menu *current_item) { int res = btn_dialog(main_window, - _("Show all symbols?"), + "Show all symbols?", 2, " ", ""); @@ -496,16 +503,20 @@ typedef enum {MATCH_TINKER_PATTERN_UP, MATCH_TINKER_PATTERN_DOWN, /* return the index of the matched item, or -1 if no such item exists */ static int get_mext_match(const char *match_str, match_f flag) { - int match_start = item_index(current_item(curses_menu)); - int index; + int match_start, index; + + /* Do not search if the menu is empty (i.e. items_num == 0) */ + match_start = item_index(current_item(curses_menu)); + if (match_start == ERR) + return -1; if (flag == FIND_NEXT_MATCH_DOWN) ++match_start; else if (flag == FIND_NEXT_MATCH_UP) --match_start; + match_start = (match_start + items_num) % items_num; index = match_start; - index = (index + items_num) % items_num; while (true) { char *str = k_menu_items[index].str; if (strcasestr(str, match_str) != NULL) @@ -627,19 +638,12 @@ static int item_is_tag(char tag) static char filename[PATH_MAX+1]; static char menu_backtitle[PATH_MAX+128]; -static const char *set_config_filename(const char *config_filename) +static void set_config_filename(const char *config_filename) { - int size; + snprintf(menu_backtitle, sizeof(menu_backtitle), "%s - %s", + config_filename, rootmenu.prompt->text); - size = snprintf(menu_backtitle, sizeof(menu_backtitle), - "%s - %s", config_filename, rootmenu.prompt->text); - if (size >= sizeof(menu_backtitle)) - menu_backtitle[sizeof(menu_backtitle)-1] = '\0'; - - size = snprintf(filename, sizeof(filename), "%s", config_filename); - if (size >= sizeof(filename)) - filename[sizeof(filename)-1] = '\0'; - return menu_backtitle; + snprintf(filename, sizeof(filename), "%s", config_filename); } /* return = 0 means we are successful. @@ -653,8 +657,8 @@ static int do_exit(void) return 0; } res = btn_dialog(main_window, - _("Do you wish to save your new configuration?\n" - " to cancel and resume nconfig."), + "Do you wish to save your new configuration?\n" + " to cancel and resume nconfig.", 2, " ", ""); @@ -670,15 +674,16 @@ static int do_exit(void) if (res) btn_dialog( main_window, - _("Error during writing of configuration.\n" - "Your configuration changes were NOT saved."), + "Error during writing of configuration.\n" + "Your configuration changes were NOT saved.", 1, ""); + conf_write_autoconf(0); break; default: btn_dialog( main_window, - _("Your configuration changes were NOT saved."), + "Your configuration changes were NOT saved.", 1, ""); break; @@ -694,15 +699,16 @@ static void search_conf(void) struct gstr res; struct gstr title; char *dialog_input; - int dres; + int dres, vscroll = 0, hscroll = 0; + bool again; title = str_new(); - str_printf( &title, _("Enter (sub)string or regexp to search for " - "(with or without \"%s\")"), CONFIG_); + str_printf( &title, "Enter (sub)string or regexp to search for " + "(with or without \"%s\")", CONFIG_); again: dres = dialog_inputbox(main_window, - _("Search Configuration Parameter"), + "Search Configuration Parameter", str_get(&title), "", &dialog_input_result, &dialog_input_result_len); switch (dres) { @@ -710,7 +716,7 @@ again: break; case 1: show_scroll_win(main_window, - _("Search Configuration"), search_help); + "Search Configuration", search_help); goto again; default: str_free(&title); @@ -723,11 +729,28 @@ again: dialog_input += strlen(CONFIG_); sym_arr = sym_re_search(dialog_input); - res = get_relations_str(sym_arr, NULL); + + do { + LIST_HEAD(head); + struct search_data data = { + .head = &head, + .target = NULL, + }; + jump_key_char = 0; + res = get_relations_str(sym_arr, &head); + dres = show_scroll_win_ext(main_window, + "Search Results", str_get(&res), + &vscroll, &hscroll, + handle_search_keys, &data); + again = false; + if (dres >= '1' && dres <= '9') { + assert(data.target != NULL); + selected_conf(data.target->parent, data.target); + again = true; + } + str_free(&res); + } while (again); free(sym_arr); - show_scroll_win(main_window, - _("Search Results"), str_get(&res)); - str_free(&res); str_free(&title); } @@ -754,7 +777,6 @@ static void build_conf(struct menu *menu) switch (ptype) { case P_MENU: child_count++; - prompt = _(prompt); if (single_menu_mode) { item_make(menu, 'm', "%s%*c%s", @@ -775,7 +797,7 @@ static void build_conf(struct menu *menu) item_make(menu, ':', " %*c*** %s ***", indent + 1, ' ', - _(prompt)); + prompt); } break; default: @@ -783,7 +805,7 @@ static void build_conf(struct menu *menu) child_count++; item_make(menu, ':', "---%*c%s", indent + 1, ' ', - _(prompt)); + prompt); } } } else @@ -803,7 +825,7 @@ static void build_conf(struct menu *menu) } val = sym_get_tristate_value(sym); - if (sym_is_changable(sym)) { + if (sym_is_changeable(sym)) { switch (type) { case S_BOOLEAN: item_make(menu, 't', "[%c]", @@ -829,11 +851,11 @@ static void build_conf(struct menu *menu) } item_add_str("%*c%s", indent + 1, - ' ', _(menu_get_prompt(menu))); + ' ', menu_get_prompt(menu)); if (val == yes) { if (def_menu) { item_add_str(" (%s)", - _(menu_get_prompt(def_menu))); + menu_get_prompt(def_menu)); item_add_str(" --->"); if (def_menu->list) { indent += 2; @@ -847,7 +869,7 @@ static void build_conf(struct menu *menu) if (menu == current_menu) { item_make(menu, ':', "---%*c%s", indent + 1, - ' ', _(menu_get_prompt(menu))); + ' ', menu_get_prompt(menu)); goto conf_childs; } child_count++; @@ -857,7 +879,7 @@ static void build_conf(struct menu *menu) } else { switch (type) { case S_BOOLEAN: - if (sym_is_changable(sym)) + if (sym_is_changeable(sym)) item_make(menu, 't', "[%c]", val == no ? ' ' : '*'); else @@ -876,7 +898,7 @@ static void build_conf(struct menu *menu) ch = ' '; break; } - if (sym_is_changable(sym)) { + if (sym_is_changeable(sym)) { if (sym->rev_dep.tri == mod) item_make(menu, 't', "{%c}", ch); @@ -894,17 +916,17 @@ static void build_conf(struct menu *menu) if (tmp < 0) tmp = 0; item_add_str("%*c%s%s", tmp, ' ', - _(menu_get_prompt(menu)), + menu_get_prompt(menu), (sym_has_value(sym) || - !sym_is_changable(sym)) ? "" : - _(" (NEW)")); + !sym_is_changeable(sym)) ? "" : + " (NEW)"); goto conf_childs; } } item_add_str("%*c%s%s", indent + 1, ' ', - _(menu_get_prompt(menu)), - (sym_has_value(sym) || !sym_is_changable(sym)) ? - "" : _(" (NEW)")); + menu_get_prompt(menu), + (sym_has_value(sym) || !sym_is_changeable(sym)) ? + "" : " (NEW)"); if (menu->prompt && menu->prompt->type == P_MENU) { item_add_str(" %s", menu_is_empty(menu) ? "----" : "--->"); return; @@ -956,16 +978,15 @@ static void show_menu(const char *prompt, const char *instructions, current_instructions = instructions; clear(); - (void) wattrset(main_window, attributes[NORMAL]); - print_in_middle(stdscr, 1, 0, getmaxx(stdscr), + print_in_middle(stdscr, 1, getmaxx(stdscr), menu_backtitle, - attributes[MAIN_HEADING]); + attr_main_heading); - (void) wattrset(main_window, attributes[MAIN_MENU_BOX]); + wattrset(main_window, attr_main_menu_box); box(main_window, 0, 0); - (void) wattrset(main_window, attributes[MAIN_MENU_HEADING]); + wattrset(main_window, attr_main_menu_heading); mvwprintw(main_window, 0, 3, " %s ", prompt); - (void) wattrset(main_window, attributes[NORMAL]); + wattrset(main_window, attr_normal); set_menu_items(curses_menu, curses_menu_items); @@ -1048,7 +1069,7 @@ static int do_match(int key, struct match_state *state, int *ans) state->match_direction = FIND_NEXT_MATCH_UP; *ans = get_mext_match(state->pattern, state->match_direction); - } else if (key == KEY_BACKSPACE || key == 127) { + } else if (key == KEY_BACKSPACE || key == 8 || key == 127) { state->pattern[strlen(state->pattern)-1] = '\0'; adj_match_dir(&state->match_direction); } else @@ -1066,11 +1087,15 @@ static int do_match(int key, struct match_state *state, int *ans) } static void conf(struct menu *menu) +{ + selected_conf(menu, NULL); +} + +static void selected_conf(struct menu *menu, struct menu *active_menu) { struct menu *submenu = NULL; - const char *prompt = menu_get_prompt(menu); struct symbol *sym; - int res; + int i, res; int current_index = 0; int last_top_row = 0; struct match_state match_state = { @@ -1086,9 +1111,21 @@ static void conf(struct menu *menu) if (!child_count) break; - show_menu(prompt ? _(prompt) : _("Main Menu"), - _(menu_instructions), - current_index, &last_top_row); + if (active_menu != NULL) { + for (i = 0; i < items_num; i++) { + struct mitem *mcur; + + mcur = (struct mitem *) item_userptr(curses_menu_items[i]); + if ((struct menu *) mcur->usrptr == active_menu) { + current_index = i; + break; + } + } + active_menu = NULL; + } + + show_menu(menu_get_prompt(menu), menu_instructions, + current_index, &last_top_row); keypad((menu_win(curses_menu)), TRUE); while (!global_exit) { if (match_state.in_search) { @@ -1111,9 +1148,11 @@ static void conf(struct menu *menu) break; switch (res) { case KEY_DOWN: + case 'j': menu_driver(curses_menu, REQ_DOWN_ITEM); break; case KEY_UP: + case 'k': menu_driver(curses_menu, REQ_UP_ITEM); break; case KEY_NPAGE: @@ -1210,12 +1249,9 @@ static void conf(struct menu *menu) } } -static void conf_message_callback(const char *fmt, va_list ap) +static void conf_message_callback(const char *s) { - char buf[1024]; - - vsnprintf(buf, sizeof(buf), fmt, ap); - btn_dialog(main_window, buf, 1, ""); + btn_dialog(main_window, s, 1, ""); } static void show_help(struct menu *menu) @@ -1227,13 +1263,13 @@ static void show_help(struct menu *menu) help = str_new(); menu_get_ext_help(menu, &help); - show_scroll_win(main_window, _(menu_get_prompt(menu)), str_get(&help)); + show_scroll_win(main_window, menu_get_prompt(menu), str_get(&help)); str_free(&help); } static void conf_choice(struct menu *menu) { - const char *prompt = _(menu_get_prompt(menu)); + const char *prompt = menu_get_prompt(menu); struct menu *child = NULL; struct symbol *active; int selected_index = 0; @@ -1256,13 +1292,13 @@ static void conf_choice(struct menu *menu) if (child->sym == sym_get_choice_value(menu->sym)) item_make(child, ':', " %s", - _(menu_get_prompt(child))); + menu_get_prompt(child)); else if (child->sym) item_make(child, ':', " %s", - _(menu_get_prompt(child))); + menu_get_prompt(child)); else item_make(child, ':', "*** %s ***", - _(menu_get_prompt(child))); + menu_get_prompt(child)); if (child->sym == active){ last_top_row = top_row(curses_menu); @@ -1270,8 +1306,8 @@ static void conf_choice(struct menu *menu) } i++; } - show_menu(prompt ? _(prompt) : _("Choice Menu"), - _(radiolist_instructions), + show_menu(prompt ? prompt : "Choice Menu", + radiolist_instructions, selected_index, &last_top_row); while (!global_exit) { @@ -1296,9 +1332,11 @@ static void conf_choice(struct menu *menu) break; switch (res) { case KEY_DOWN: + case 'j': menu_driver(curses_menu, REQ_DOWN_ITEM); break; case KEY_UP: + case 'k': menu_driver(curses_menu, REQ_UP_ITEM); break; case KEY_NPAGE: @@ -1358,19 +1396,19 @@ static void conf_string(struct menu *menu) switch (sym_get_type(menu->sym)) { case S_INT: - heading = _(inputbox_instructions_int); + heading = inputbox_instructions_int; break; case S_HEX: - heading = _(inputbox_instructions_hex); + heading = inputbox_instructions_hex; break; case S_STRING: - heading = _(inputbox_instructions_string); + heading = inputbox_instructions_string; break; default: - heading = _("Internal nconf error!"); + heading = "Internal nconf error!"; } res = dialog_inputbox(main_window, - prompt ? _(prompt) : _("Main Menu"), + prompt ? prompt : "Main Menu", heading, sym_get_string_value(menu->sym), &dialog_input_result, @@ -1381,7 +1419,7 @@ static void conf_string(struct menu *menu) dialog_input_result)) return; btn_dialog(main_window, - _("You have made an invalid entry."), 0); + "You have made an invalid entry.", 0); break; case 1: show_help(menu); @@ -1407,14 +1445,14 @@ static void conf_load(void) return; if (!conf_read(dialog_input_result)) { set_config_filename(dialog_input_result); - sym_set_change_count(1); + conf_set_changed(true); return; } - btn_dialog(main_window, _("File does not exist!"), 0); + btn_dialog(main_window, "File does not exist!", 0); break; case 1: show_scroll_win(main_window, - _("Load Alternate Configuration"), + "Load Alternate Configuration", load_config_help); break; case KEY_EXIT: @@ -1441,13 +1479,12 @@ static void conf_save(void) set_config_filename(dialog_input_result); return; } - btn_dialog(main_window, _("Can't create file! " - "Probably a nonexistent directory."), + btn_dialog(main_window, "Can't create file!", 1, ""); break; case 1: show_scroll_win(main_window, - _("Save Alternate Configuration"), + "Save Alternate Configuration", save_config_help); break; case KEY_EXIT: @@ -1480,10 +1517,6 @@ int main(int ac, char **av) int lines, columns; char *mode; - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); - if (ac > 1 && strcmp(av[1], "-s") == 0) { /* Silence conf_read() until the real callback is set up */ conf_set_message_callback(NULL); @@ -1531,9 +1564,9 @@ int main(int ac, char **av) menu_opts_on(curses_menu, O_NONCYCLIC); menu_opts_on(curses_menu, O_IGNORECASE); set_menu_mark(curses_menu, " "); - set_menu_fore(curses_menu, attributes[MAIN_MENU_FORE]); - set_menu_back(curses_menu, attributes[MAIN_MENU_BACK]); - set_menu_grey(curses_menu, attributes[MAIN_MENU_GREY]); + set_menu_fore(curses_menu, attr_main_menu_fore); + set_menu_back(curses_menu, attr_main_menu_back); + set_menu_grey(curses_menu, attr_main_menu_grey); set_config_filename(conf_get_configname()); setup_windows(); @@ -1541,8 +1574,8 @@ int main(int ac, char **av) /* check for KEY_FUNC(1) */ if (has_key(KEY_F(1)) == FALSE) { show_scroll_win(main_window, - _("Instructions"), - _(menu_no_f_instructions)); + "Instructions", + menu_no_f_instructions); } conf_set_message_callback(conf_message_callback); diff --git a/support/kconfig/nconf.gui.c b/support/kconfig/nconf.gui.c index 88874acfda..25a7263ef3 100644 --- a/support/kconfig/nconf.gui.c +++ b/support/kconfig/nconf.gui.c @@ -1,176 +1,126 @@ +// SPDX-License-Identifier: GPL-2.0 /* - * Copyright (C) 2008 Nir Tzachar * * Derived from menuconfig. - * */ #include "nconf.h" #include "lkc.h" -/* a list of all the different widgets we use */ -attributes_t attributes[ATTR_MAX+1] = {0}; - -/* available colors: - COLOR_BLACK 0 - COLOR_RED 1 - COLOR_GREEN 2 - COLOR_YELLOW 3 - COLOR_BLUE 4 - COLOR_MAGENTA 5 - COLOR_CYAN 6 - COLOR_WHITE 7 - */ -static void set_normal_colors(void) -{ - init_pair(NORMAL, -1, -1); - init_pair(MAIN_HEADING, COLOR_MAGENTA, -1); - - /* FORE is for the selected item */ - init_pair(MAIN_MENU_FORE, -1, -1); - /* BACK for all the rest */ - init_pair(MAIN_MENU_BACK, -1, -1); - init_pair(MAIN_MENU_GREY, -1, -1); - init_pair(MAIN_MENU_HEADING, COLOR_GREEN, -1); - init_pair(MAIN_MENU_BOX, COLOR_YELLOW, -1); - - init_pair(SCROLLWIN_TEXT, -1, -1); - init_pair(SCROLLWIN_HEADING, COLOR_GREEN, -1); - init_pair(SCROLLWIN_BOX, COLOR_YELLOW, -1); - - init_pair(DIALOG_TEXT, -1, -1); - init_pair(DIALOG_BOX, COLOR_YELLOW, -1); - init_pair(DIALOG_MENU_BACK, COLOR_YELLOW, -1); - init_pair(DIALOG_MENU_FORE, COLOR_RED, -1); - - init_pair(INPUT_BOX, COLOR_YELLOW, -1); - init_pair(INPUT_HEADING, COLOR_GREEN, -1); - init_pair(INPUT_TEXT, -1, -1); - init_pair(INPUT_FIELD, -1, -1); - - init_pair(FUNCTION_HIGHLIGHT, -1, -1); - init_pair(FUNCTION_TEXT, COLOR_YELLOW, -1); -} - -/* available attributes: - A_NORMAL Normal display (no highlight) - A_STANDOUT Best highlighting mode of the terminal. - A_UNDERLINE Underlining - A_REVERSE Reverse video - A_BLINK Blinking - A_DIM Half bright - A_BOLD Extra bright or bold - A_PROTECT Protected mode - A_INVIS Invisible or blank mode - A_ALTCHARSET Alternate character set - A_CHARTEXT Bit-mask to extract a character - COLOR_PAIR(n) Color-pair number n - */ -static void normal_color_theme(void) -{ - /* automatically add color... */ -#define mkattr(name, attr) do { \ -attributes[name] = attr | COLOR_PAIR(name); } while (0) - mkattr(NORMAL, NORMAL); - mkattr(MAIN_HEADING, A_BOLD | A_UNDERLINE); - - mkattr(MAIN_MENU_FORE, A_REVERSE); - mkattr(MAIN_MENU_BACK, A_NORMAL); - mkattr(MAIN_MENU_GREY, A_NORMAL); - mkattr(MAIN_MENU_HEADING, A_BOLD); - mkattr(MAIN_MENU_BOX, A_NORMAL); - - mkattr(SCROLLWIN_TEXT, A_NORMAL); - mkattr(SCROLLWIN_HEADING, A_BOLD); - mkattr(SCROLLWIN_BOX, A_BOLD); - - mkattr(DIALOG_TEXT, A_BOLD); - mkattr(DIALOG_BOX, A_BOLD); - mkattr(DIALOG_MENU_FORE, A_STANDOUT); - mkattr(DIALOG_MENU_BACK, A_NORMAL); - - mkattr(INPUT_BOX, A_NORMAL); - mkattr(INPUT_HEADING, A_BOLD); - mkattr(INPUT_TEXT, A_NORMAL); - mkattr(INPUT_FIELD, A_UNDERLINE); - - mkattr(FUNCTION_HIGHLIGHT, A_BOLD); - mkattr(FUNCTION_TEXT, A_REVERSE); -} - -static void no_colors_theme(void) -{ - /* automatically add highlight, no color */ -#define mkattrn(name, attr) { attributes[name] = attr; } - - mkattrn(NORMAL, NORMAL); - mkattrn(MAIN_HEADING, A_BOLD | A_UNDERLINE); - - mkattrn(MAIN_MENU_FORE, A_STANDOUT); - mkattrn(MAIN_MENU_BACK, A_NORMAL); - mkattrn(MAIN_MENU_GREY, A_NORMAL); - mkattrn(MAIN_MENU_HEADING, A_BOLD); - mkattrn(MAIN_MENU_BOX, A_NORMAL); - - mkattrn(SCROLLWIN_TEXT, A_NORMAL); - mkattrn(SCROLLWIN_HEADING, A_BOLD); - mkattrn(SCROLLWIN_BOX, A_BOLD); - - mkattrn(DIALOG_TEXT, A_NORMAL); - mkattrn(DIALOG_BOX, A_BOLD); - mkattrn(DIALOG_MENU_FORE, A_STANDOUT); - mkattrn(DIALOG_MENU_BACK, A_NORMAL); - - mkattrn(INPUT_BOX, A_BOLD); - mkattrn(INPUT_HEADING, A_BOLD); - mkattrn(INPUT_TEXT, A_NORMAL); - mkattrn(INPUT_FIELD, A_UNDERLINE); - - mkattrn(FUNCTION_HIGHLIGHT, A_BOLD); - mkattrn(FUNCTION_TEXT, A_REVERSE); -} +int attr_normal; +int attr_main_heading; +int attr_main_menu_box; +int attr_main_menu_fore; +int attr_main_menu_back; +int attr_main_menu_grey; +int attr_main_menu_heading; +int attr_scrollwin_text; +int attr_scrollwin_heading; +int attr_scrollwin_box; +int attr_dialog_text; +int attr_dialog_menu_fore; +int attr_dialog_menu_back; +int attr_dialog_box; +int attr_input_box; +int attr_input_heading; +int attr_input_text; +int attr_input_field; +int attr_function_text; +int attr_function_highlight; + +#define COLOR_ATTR(_at, _fg, _bg, _hl) \ + { .attr = &(_at), .has_color = true, .color_fg = _fg, .color_bg = _bg, .highlight = _hl } +#define NO_COLOR_ATTR(_at, _hl) \ + { .attr = &(_at), .has_color = false, .highlight = _hl } +#define COLOR_DEFAULT -1 + +struct nconf_attr_param { + int *attr; + bool has_color; + int color_fg; + int color_bg; + int highlight; +}; + +static const struct nconf_attr_param color_theme_params[] = { + COLOR_ATTR(attr_normal, COLOR_DEFAULT, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_main_heading, COLOR_MAGENTA, COLOR_DEFAULT, A_BOLD | A_UNDERLINE), + COLOR_ATTR(attr_main_menu_box, COLOR_YELLOW, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_main_menu_fore, COLOR_DEFAULT, COLOR_DEFAULT, A_REVERSE), + COLOR_ATTR(attr_main_menu_back, COLOR_DEFAULT, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_main_menu_grey, COLOR_DEFAULT, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_main_menu_heading, COLOR_GREEN, COLOR_DEFAULT, A_BOLD), + COLOR_ATTR(attr_scrollwin_text, COLOR_DEFAULT, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_scrollwin_heading, COLOR_GREEN, COLOR_DEFAULT, A_BOLD), + COLOR_ATTR(attr_scrollwin_box, COLOR_YELLOW, COLOR_DEFAULT, A_BOLD), + COLOR_ATTR(attr_dialog_text, COLOR_DEFAULT, COLOR_DEFAULT, A_BOLD), + COLOR_ATTR(attr_dialog_menu_fore, COLOR_RED, COLOR_DEFAULT, A_STANDOUT), + COLOR_ATTR(attr_dialog_menu_back, COLOR_YELLOW, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_dialog_box, COLOR_YELLOW, COLOR_DEFAULT, A_BOLD), + COLOR_ATTR(attr_input_box, COLOR_YELLOW, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_input_heading, COLOR_GREEN, COLOR_DEFAULT, A_BOLD), + COLOR_ATTR(attr_input_text, COLOR_DEFAULT, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_input_field, COLOR_DEFAULT, COLOR_DEFAULT, A_UNDERLINE), + COLOR_ATTR(attr_function_text, COLOR_YELLOW, COLOR_DEFAULT, A_REVERSE), + COLOR_ATTR(attr_function_highlight, COLOR_DEFAULT, COLOR_DEFAULT, A_BOLD), + { /* sentinel */ } +}; + +static const struct nconf_attr_param no_color_theme_params[] = { + NO_COLOR_ATTR(attr_normal, A_NORMAL), + NO_COLOR_ATTR(attr_main_heading, A_BOLD | A_UNDERLINE), + NO_COLOR_ATTR(attr_main_menu_box, A_NORMAL), + NO_COLOR_ATTR(attr_main_menu_fore, A_STANDOUT), + NO_COLOR_ATTR(attr_main_menu_back, A_NORMAL), + NO_COLOR_ATTR(attr_main_menu_grey, A_NORMAL), + NO_COLOR_ATTR(attr_main_menu_heading, A_BOLD), + NO_COLOR_ATTR(attr_scrollwin_text, A_NORMAL), + NO_COLOR_ATTR(attr_scrollwin_heading, A_BOLD), + NO_COLOR_ATTR(attr_scrollwin_box, A_BOLD), + NO_COLOR_ATTR(attr_dialog_text, A_NORMAL), + NO_COLOR_ATTR(attr_dialog_menu_fore, A_STANDOUT), + NO_COLOR_ATTR(attr_dialog_menu_back, A_NORMAL), + NO_COLOR_ATTR(attr_dialog_box, A_BOLD), + NO_COLOR_ATTR(attr_input_box, A_BOLD), + NO_COLOR_ATTR(attr_input_heading, A_BOLD), + NO_COLOR_ATTR(attr_input_text, A_NORMAL), + NO_COLOR_ATTR(attr_input_field, A_UNDERLINE), + NO_COLOR_ATTR(attr_function_text, A_REVERSE), + NO_COLOR_ATTR(attr_function_highlight, A_BOLD), + { /* sentinel */ } +}; void set_colors(void) { - start_color(); - use_default_colors(); - set_normal_colors(); + const struct nconf_attr_param *p; + int pair = 0; + if (has_colors()) { - normal_color_theme(); + start_color(); + use_default_colors(); + p = color_theme_params; } else { - /* give defaults */ - no_colors_theme(); + p = no_color_theme_params; } -} + for (; p->attr; p++) { + int attr = p->highlight; + + if (p->has_color) { + pair++; + init_pair(pair, p->color_fg, p->color_bg); + attr |= COLOR_PAIR(pair); + } + + *p->attr = attr; + } +} /* this changes the windows attributes !!! */ -void print_in_middle(WINDOW *win, - int starty, - int startx, - int width, - const char *string, - chtype color) -{ int length, x, y; - float temp; - - - if (win == NULL) - win = stdscr; - getyx(win, y, x); - if (startx != 0) - x = startx; - if (starty != 0) - y = starty; - if (width == 0) - width = 80; - - length = strlen(string); - temp = (width - length) / 2; - x = startx + (int)temp; - (void) wattrset(win, color); - mvwprintw(win, y, x, "%s", string); - refresh(); +void print_in_middle(WINDOW *win, int y, int width, const char *str, int attrs) +{ + wattrset(win, attrs); + mvwprintw(win, y, (width - strlen(str)) / 2, "%s", str); } int get_line_no(const char *text) @@ -295,14 +245,14 @@ int btn_dialog(WINDOW *main_window, const char *msg, int btn_num, ...) msg_win = derwin(win, win_rows-2, msg_width, 1, 1+(total_width+2-msg_width)/2); - set_menu_fore(menu, attributes[DIALOG_MENU_FORE]); - set_menu_back(menu, attributes[DIALOG_MENU_BACK]); + set_menu_fore(menu, attr_dialog_menu_fore); + set_menu_back(menu, attr_dialog_menu_back); - (void) wattrset(win, attributes[DIALOG_BOX]); + wattrset(win, attr_dialog_box); box(win, 0, 0); /* print message */ - (void) wattrset(msg_win, attributes[DIALOG_TEXT]); + wattrset(msg_win, attr_dialog_text); fill_window(msg_win, msg); set_menu_win(menu, win); @@ -406,16 +356,16 @@ int dialog_inputbox(WINDOW *main_window, form_win = derwin(win, 1, prompt_width, prompt_lines+3, 2); keypad(form_win, TRUE); - (void) wattrset(form_win, attributes[INPUT_FIELD]); + wattrset(form_win, attr_input_field); - (void) wattrset(win, attributes[INPUT_BOX]); + wattrset(win, attr_input_box); box(win, 0, 0); - (void) wattrset(win, attributes[INPUT_HEADING]); + wattrset(win, attr_input_heading); if (title) mvwprintw(win, 0, 3, "%s", title); /* print message */ - (void) wattrset(prompt_win, attributes[INPUT_TEXT]); + wattrset(prompt_win, attr_input_text); fill_window(prompt_win, prompt); mvwprintw(form_win, 0, 0, "%*s", prompt_width, " "); @@ -440,7 +390,8 @@ int dialog_inputbox(WINDOW *main_window, case KEY_F(F_EXIT): case KEY_F(F_BACK): break; - case 127: + case 8: /* ^H */ + case 127: /* ^? */ case KEY_BACKSPACE: if (cursor_position > 0) { memmove(&result[cursor_position-1], @@ -546,10 +497,17 @@ void refresh_all_windows(WINDOW *main_window) refresh(); } -/* layman's scrollable window... */ void show_scroll_win(WINDOW *main_window, const char *title, const char *text) +{ + (void)show_scroll_win_ext(main_window, title, (char *)text, NULL, NULL, NULL, NULL); +} + +/* layman's scrollable window... */ +int show_scroll_win_ext(WINDOW *main_window, const char *title, char *text, + int *vscroll, int *hscroll, + extra_key_cb_fn extra_key_cb, void *data) { int res; int total_lines = get_line_no(text); @@ -563,6 +521,12 @@ void show_scroll_win(WINDOW *main_window, WINDOW *win; WINDOW *pad; PANEL *panel; + bool done = false; + + if (hscroll) + start_x = *hscroll; + if (vscroll) + start_y = *vscroll; getmaxyx(stdscr, lines, columns); @@ -576,7 +540,7 @@ void show_scroll_win(WINDOW *main_window, /* create the pad */ pad = newpad(total_lines+10, total_cols+10); - (void) wattrset(pad, attributes[SCROLLWIN_TEXT]); + wattrset(pad, attr_scrollwin_text); fill_window(pad, text); win_lines = min(total_lines+4, lines-2); @@ -591,23 +555,21 @@ void show_scroll_win(WINDOW *main_window, win = newwin(win_lines, win_cols, y, x); keypad(win, TRUE); /* show the help in the help window, and show the help panel */ - (void) wattrset(win, attributes[SCROLLWIN_BOX]); + wattrset(win, attr_scrollwin_box); box(win, 0, 0); - (void) wattrset(win, attributes[SCROLLWIN_HEADING]); + wattrset(win, attr_scrollwin_heading); mvwprintw(win, 0, 3, " %s ", title); panel = new_panel(win); /* handle scrolling */ - do { - + while (!done) { copywin(pad, win, start_y, start_x, 2, 2, text_lines, text_cols, 0); print_in_middle(win, text_lines+2, - 0, text_cols, "", - attributes[DIALOG_MENU_FORE]); + attr_dialog_menu_fore); wrefresh(win); res = wgetch(win); @@ -643,8 +605,18 @@ void show_scroll_win(WINDOW *main_window, case 'l': start_x++; break; + default: + if (extra_key_cb) { + size_t start = (get_line(text, start_y) - text); + size_t end = (get_line(text, start_y + text_lines) - text); + + if (extra_key_cb(res, start, end, data)) { + done = true; + break; + } + } } - if (res == 10 || res == 27 || res == 'q' || + if (res == 0 || res == 10 || res == 27 || res == 'q' || res == KEY_F(F_HELP) || res == KEY_F(F_BACK) || res == KEY_F(F_EXIT)) break; @@ -656,9 +628,14 @@ void show_scroll_win(WINDOW *main_window, start_x = 0; if (start_x >= total_cols-text_cols) start_x = total_cols-text_cols; - } while (res); + } + if (hscroll) + *hscroll = start_x; + if (vscroll) + *vscroll = start_y; del_panel(panel); delwin(win); refresh_all_windows(main_window); + return res; } diff --git a/support/kconfig/nconf.h b/support/kconfig/nconf.h index 9f6f21d3b0..ab836d5826 100644 --- a/support/kconfig/nconf.h +++ b/support/kconfig/nconf.h @@ -1,9 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* - * Copyright (C) 2008 Nir Tzachar * * Derived from menuconfig. - * */ #include @@ -14,7 +13,6 @@ #include #include #include -#include #include #include #include @@ -34,30 +32,26 @@ typeof(b) _b = b;\ _a < _b ? _a : _b; }) -typedef enum { - NORMAL = 1, - MAIN_HEADING, - MAIN_MENU_BOX, - MAIN_MENU_FORE, - MAIN_MENU_BACK, - MAIN_MENU_GREY, - MAIN_MENU_HEADING, - SCROLLWIN_TEXT, - SCROLLWIN_HEADING, - SCROLLWIN_BOX, - DIALOG_TEXT, - DIALOG_MENU_FORE, - DIALOG_MENU_BACK, - DIALOG_BOX, - INPUT_BOX, - INPUT_HEADING, - INPUT_TEXT, - INPUT_FIELD, - FUNCTION_TEXT, - FUNCTION_HIGHLIGHT, - ATTR_MAX -} attributes_t; -extern attributes_t attributes[]; +extern int attr_normal; +extern int attr_main_heading; +extern int attr_main_menu_box; +extern int attr_main_menu_fore; +extern int attr_main_menu_back; +extern int attr_main_menu_grey; +extern int attr_main_menu_heading; +extern int attr_scrollwin_text; +extern int attr_scrollwin_heading; +extern int attr_scrollwin_box; +extern int attr_dialog_text; +extern int attr_dialog_menu_fore; +extern int attr_dialog_menu_back; +extern int attr_dialog_box; +extern int attr_input_box; +extern int attr_input_heading; +extern int attr_input_text; +extern int attr_input_field; +extern int attr_function_text; +extern int attr_function_highlight; typedef enum { F_HELP = 1, @@ -73,13 +67,10 @@ typedef enum { void set_colors(void); +typedef int (*extra_key_cb_fn)(int, size_t, size_t, void *); + /* this changes the windows attributes !!! */ -void print_in_middle(WINDOW *win, - int starty, - int startx, - int width, - const char *string, - chtype color); +void print_in_middle(WINDOW *win, int y, int width, const char *str, int attrs); int get_line_length(const char *line); int get_line_no(const char *text); const char *get_line(const char *text, int line_no); @@ -89,6 +80,9 @@ int dialog_inputbox(WINDOW *main_window, const char *title, const char *prompt, const char *init, char **resultp, int *result_len); void refresh_all_windows(WINDOW *main_window); +int show_scroll_win_ext(WINDOW *main_window, const char *title, char *text, + int *vscroll, int *hscroll, + extra_key_cb_fn extra_key_cb, void *data); void show_scroll_win(WINDOW *main_window, const char *title, const char *text); diff --git a/support/kconfig/parser.tab.c_shipped b/support/kconfig/parser.tab.c_shipped new file mode 100644 index 0000000000..092da33306 --- /dev/null +++ b/support/kconfig/parser.tab.c_shipped @@ -0,0 +1,2189 @@ +/* A Bison parser, made by GNU Bison 3.8.2. */ + +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, + Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output, and Bison version. */ +#define YYBISON 30802 + +/* Bison version string. */ +#define YYBISON_VERSION "3.8.2" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + + + + +/* First part of user prologue. */ + + +#include +#include +#include +#include +#include +#include + +#include "lkc.h" +#include "internal.h" +#include "preprocess.h" + +#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) + +#define PRINTD 0x0001 +#define DEBUG_PARSE 0x0002 + +int cdebug = PRINTD; + +static void yyerror(const char *err); +static void zconfprint(const char *err, ...); +static void zconf_error(const char *err, ...); +static bool zconf_endtoken(const char *tokenname, + const char *expected_tokenname); + +struct menu *current_menu, *current_entry; + + + +# ifndef YY_CAST +# ifdef __cplusplus +# define YY_CAST(Type, Val) static_cast (Val) +# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) +# else +# define YY_CAST(Type, Val) ((Type) (Val)) +# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) +# endif +# endif +# ifndef YY_NULLPTR +# if defined __cplusplus +# if 201103L <= __cplusplus +# define YY_NULLPTR nullptr +# else +# define YY_NULLPTR 0 +# endif +# else +# define YY_NULLPTR ((void*)0) +# endif +# endif + +#include "parser.tab.h" +/* Symbol kind. */ +enum yysymbol_kind_t +{ + YYSYMBOL_YYEMPTY = -2, + YYSYMBOL_YYEOF = 0, /* "end of file" */ + YYSYMBOL_YYerror = 1, /* error */ + YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ + YYSYMBOL_T_HELPTEXT = 3, /* T_HELPTEXT */ + YYSYMBOL_T_WORD = 4, /* T_WORD */ + YYSYMBOL_T_WORD_QUOTE = 5, /* T_WORD_QUOTE */ + YYSYMBOL_T_BOOL = 6, /* T_BOOL */ + YYSYMBOL_T_CHOICE = 7, /* T_CHOICE */ + YYSYMBOL_T_CLOSE_PAREN = 8, /* T_CLOSE_PAREN */ + YYSYMBOL_T_COLON_EQUAL = 9, /* T_COLON_EQUAL */ + YYSYMBOL_T_COMMENT = 10, /* T_COMMENT */ + YYSYMBOL_T_CONFIG = 11, /* T_CONFIG */ + YYSYMBOL_T_DEFAULT = 12, /* T_DEFAULT */ + YYSYMBOL_T_DEF_BOOL = 13, /* T_DEF_BOOL */ + YYSYMBOL_T_DEF_TRISTATE = 14, /* T_DEF_TRISTATE */ + YYSYMBOL_T_DEPENDS = 15, /* T_DEPENDS */ + YYSYMBOL_T_ENDCHOICE = 16, /* T_ENDCHOICE */ + YYSYMBOL_T_ENDIF = 17, /* T_ENDIF */ + YYSYMBOL_T_ENDMENU = 18, /* T_ENDMENU */ + YYSYMBOL_T_HELP = 19, /* T_HELP */ + YYSYMBOL_T_HEX = 20, /* T_HEX */ + YYSYMBOL_T_IF = 21, /* T_IF */ + YYSYMBOL_T_IMPLY = 22, /* T_IMPLY */ + YYSYMBOL_T_INT = 23, /* T_INT */ + YYSYMBOL_T_MAINMENU = 24, /* T_MAINMENU */ + YYSYMBOL_T_MENU = 25, /* T_MENU */ + YYSYMBOL_T_MENUCONFIG = 26, /* T_MENUCONFIG */ + YYSYMBOL_T_MODULES = 27, /* T_MODULES */ + YYSYMBOL_T_ON = 28, /* T_ON */ + YYSYMBOL_T_OPEN_PAREN = 29, /* T_OPEN_PAREN */ + YYSYMBOL_T_OPTIONAL = 30, /* T_OPTIONAL */ + YYSYMBOL_T_PLUS_EQUAL = 31, /* T_PLUS_EQUAL */ + YYSYMBOL_T_PROMPT = 32, /* T_PROMPT */ + YYSYMBOL_T_RANGE = 33, /* T_RANGE */ + YYSYMBOL_T_SELECT = 34, /* T_SELECT */ + YYSYMBOL_T_SOURCE = 35, /* T_SOURCE */ + YYSYMBOL_T_STRING = 36, /* T_STRING */ + YYSYMBOL_T_TRISTATE = 37, /* T_TRISTATE */ + YYSYMBOL_T_VISIBLE = 38, /* T_VISIBLE */ + YYSYMBOL_T_EOL = 39, /* T_EOL */ + YYSYMBOL_T_ASSIGN_VAL = 40, /* T_ASSIGN_VAL */ + YYSYMBOL_T_OR = 41, /* T_OR */ + YYSYMBOL_T_AND = 42, /* T_AND */ + YYSYMBOL_T_EQUAL = 43, /* T_EQUAL */ + YYSYMBOL_T_UNEQUAL = 44, /* T_UNEQUAL */ + YYSYMBOL_T_LESS = 45, /* T_LESS */ + YYSYMBOL_T_LESS_EQUAL = 46, /* T_LESS_EQUAL */ + YYSYMBOL_T_GREATER = 47, /* T_GREATER */ + YYSYMBOL_T_GREATER_EQUAL = 48, /* T_GREATER_EQUAL */ + YYSYMBOL_T_NOT = 49, /* T_NOT */ + YYSYMBOL_YYACCEPT = 50, /* $accept */ + YYSYMBOL_input = 51, /* input */ + YYSYMBOL_mainmenu_stmt = 52, /* mainmenu_stmt */ + YYSYMBOL_stmt_list = 53, /* stmt_list */ + YYSYMBOL_common_stmt = 54, /* common_stmt */ + YYSYMBOL_config_entry_start = 55, /* config_entry_start */ + YYSYMBOL_config_stmt = 56, /* config_stmt */ + YYSYMBOL_menuconfig_entry_start = 57, /* menuconfig_entry_start */ + YYSYMBOL_menuconfig_stmt = 58, /* menuconfig_stmt */ + YYSYMBOL_config_option_list = 59, /* config_option_list */ + YYSYMBOL_config_option = 60, /* config_option */ + YYSYMBOL_choice = 61, /* choice */ + YYSYMBOL_choice_entry = 62, /* choice_entry */ + YYSYMBOL_choice_end = 63, /* choice_end */ + YYSYMBOL_choice_stmt = 64, /* choice_stmt */ + YYSYMBOL_choice_option_list = 65, /* choice_option_list */ + YYSYMBOL_choice_option = 66, /* choice_option */ + YYSYMBOL_type = 67, /* type */ + YYSYMBOL_logic_type = 68, /* logic_type */ + YYSYMBOL_default = 69, /* default */ + YYSYMBOL_choice_block = 70, /* choice_block */ + YYSYMBOL_if_entry = 71, /* if_entry */ + YYSYMBOL_if_end = 72, /* if_end */ + YYSYMBOL_if_stmt = 73, /* if_stmt */ + YYSYMBOL_menu = 74, /* menu */ + YYSYMBOL_menu_entry = 75, /* menu_entry */ + YYSYMBOL_menu_end = 76, /* menu_end */ + YYSYMBOL_menu_stmt = 77, /* menu_stmt */ + YYSYMBOL_menu_option_list = 78, /* menu_option_list */ + YYSYMBOL_source_stmt = 79, /* source_stmt */ + YYSYMBOL_comment = 80, /* comment */ + YYSYMBOL_comment_stmt = 81, /* comment_stmt */ + YYSYMBOL_comment_option_list = 82, /* comment_option_list */ + YYSYMBOL_help_start = 83, /* help_start */ + YYSYMBOL_help = 84, /* help */ + YYSYMBOL_depends = 85, /* depends */ + YYSYMBOL_visible = 86, /* visible */ + YYSYMBOL_prompt_stmt_opt = 87, /* prompt_stmt_opt */ + YYSYMBOL_end = 88, /* end */ + YYSYMBOL_if_expr = 89, /* if_expr */ + YYSYMBOL_expr = 90, /* expr */ + YYSYMBOL_nonconst_symbol = 91, /* nonconst_symbol */ + YYSYMBOL_symbol = 92, /* symbol */ + YYSYMBOL_assignment_stmt = 93, /* assignment_stmt */ + YYSYMBOL_assign_op = 94, /* assign_op */ + YYSYMBOL_assign_val = 95 /* assign_val */ +}; +typedef enum yysymbol_kind_t yysymbol_kind_t; + + + + +#ifdef short +# undef short +#endif + +/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure + and (if available) are included + so that the code can choose integer types of a good width. */ + +#ifndef __PTRDIFF_MAX__ +# include /* INFRINGES ON USER NAME SPACE */ +# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_STDINT_H +# endif +#endif + +/* Narrow types that promote to a signed type and that can represent a + signed or unsigned integer of at least N bits. In tables they can + save space and decrease cache pressure. Promoting to a signed type + helps avoid bugs in integer arithmetic. */ + +#ifdef __INT_LEAST8_MAX__ +typedef __INT_LEAST8_TYPE__ yytype_int8; +#elif defined YY_STDINT_H +typedef int_least8_t yytype_int8; +#else +typedef signed char yytype_int8; +#endif + +#ifdef __INT_LEAST16_MAX__ +typedef __INT_LEAST16_TYPE__ yytype_int16; +#elif defined YY_STDINT_H +typedef int_least16_t yytype_int16; +#else +typedef short yytype_int16; +#endif + +/* Work around bug in HP-UX 11.23, which defines these macros + incorrectly for preprocessor constants. This workaround can likely + be removed in 2023, as HPE has promised support for HP-UX 11.23 + (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of + . */ +#ifdef __hpux +# undef UINT_LEAST8_MAX +# undef UINT_LEAST16_MAX +# define UINT_LEAST8_MAX 255 +# define UINT_LEAST16_MAX 65535 +#endif + +#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST8_TYPE__ yytype_uint8; +#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST8_MAX <= INT_MAX) +typedef uint_least8_t yytype_uint8; +#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX +typedef unsigned char yytype_uint8; +#else +typedef short yytype_uint8; +#endif + +#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST16_TYPE__ yytype_uint16; +#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST16_MAX <= INT_MAX) +typedef uint_least16_t yytype_uint16; +#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX +typedef unsigned short yytype_uint16; +#else +typedef int yytype_uint16; +#endif + +#ifndef YYPTRDIFF_T +# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ +# define YYPTRDIFF_T __PTRDIFF_TYPE__ +# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ +# elif defined PTRDIFF_MAX +# ifndef ptrdiff_t +# include /* INFRINGES ON USER NAME SPACE */ +# endif +# define YYPTRDIFF_T ptrdiff_t +# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX +# else +# define YYPTRDIFF_T long +# define YYPTRDIFF_MAXIMUM LONG_MAX +# endif +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned +# endif +#endif + +#define YYSIZE_MAXIMUM \ + YY_CAST (YYPTRDIFF_T, \ + (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ + ? YYPTRDIFF_MAXIMUM \ + : YY_CAST (YYSIZE_T, -1))) + +#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) + + +/* Stored state numbers (used for stacks). */ +typedef yytype_uint8 yy_state_t; + +/* State numbers in computations. */ +typedef int yy_state_fast_t; + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(Msgid) dgettext ("bison-runtime", Msgid) +# endif +# endif +# ifndef YY_ +# define YY_(Msgid) Msgid +# endif +#endif + + +#ifndef YY_ATTRIBUTE_PURE +# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define YY_ATTRIBUTE_PURE +# endif +#endif + +#ifndef YY_ATTRIBUTE_UNUSED +# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# else +# define YY_ATTRIBUTE_UNUSED +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YY_USE(E) ((void) (E)) +#else +# define YY_USE(E) /* empty */ +#endif + +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__ +# if __GNUC__ * 100 + __GNUC_MINOR__ < 407 +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") +# else +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# endif +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") +#else +# define YY_INITIAL_VALUE(Value) Value +#endif +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#endif + +#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ +# define YY_IGNORE_USELESS_CAST_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") +# define YY_IGNORE_USELESS_CAST_END \ + _Pragma ("GCC diagnostic pop") +#endif +#ifndef YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_END +#endif + + +#define YY_ASSERT(E) ((void) (0 && (E))) + +#if !defined yyoverflow + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS +# include /* INFRINGES ON USER NAME SPACE */ + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined EXIT_SUCCESS \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined EXIT_SUCCESS +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined EXIT_SUCCESS +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* !defined yyoverflow */ + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yy_state_t yyss_alloc; + YYSTYPE yyvs_alloc; +}; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +# define YYCOPY_NEEDED 1 + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYPTRDIFF_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / YYSIZEOF (*yyptr); \ + } \ + while (0) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYPTRDIFF_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (0) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 6 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 189 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 50 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 46 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 100 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 177 + +/* YYMAXUTOK -- Last valid token kind. */ +#define YYMAXUTOK 304 + + +/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, with out-of-bounds checking. */ +#define YYTRANSLATE(YYX) \ + (0 <= (YYX) && (YYX) <= YYMAXUTOK \ + ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ + : YYSYMBOL_YYUNDEF) + +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex. */ +static const yytype_int8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49 +}; + +#if YYDEBUG +/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +static const yytype_int16 yyrline[] = +{ + 0, 108, 108, 108, 112, 117, 119, 120, 121, 122, + 123, 127, 128, 129, 130, 131, 132, 137, 144, 149, + 156, 165, 167, 168, 169, 172, 178, 184, 193, 199, + 205, 211, 221, 230, 241, 249, 252, 254, 255, 256, + 259, 265, 271, 277, 284, 285, 286, 287, 290, 291, + 294, 295, 296, 298, 300, 305, 313, 321, 326, 333, + 338, 346, 349, 351, 352, 355, 364, 371, 374, 376, + 381, 387, 405, 412, 419, 421, 426, 427, 428, 431, + 432, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 449, 451, 452, 457, 460, 461, 462, 466, + 467 +}; +#endif + +/** Accessing symbol of state STATE. */ +#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) + +#if YYDEBUG || 0 +/* The user-facing name of the symbol whose (internal) number is + YYSYMBOL. No bounds checking. */ +static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; + +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "\"end of file\"", "error", "\"invalid token\"", "T_HELPTEXT", "T_WORD", + "T_WORD_QUOTE", "T_BOOL", "T_CHOICE", "T_CLOSE_PAREN", "T_COLON_EQUAL", + "T_COMMENT", "T_CONFIG", "T_DEFAULT", "T_DEF_BOOL", "T_DEF_TRISTATE", + "T_DEPENDS", "T_ENDCHOICE", "T_ENDIF", "T_ENDMENU", "T_HELP", "T_HEX", + "T_IF", "T_IMPLY", "T_INT", "T_MAINMENU", "T_MENU", "T_MENUCONFIG", + "T_MODULES", "T_ON", "T_OPEN_PAREN", "T_OPTIONAL", "T_PLUS_EQUAL", + "T_PROMPT", "T_RANGE", "T_SELECT", "T_SOURCE", "T_STRING", "T_TRISTATE", + "T_VISIBLE", "T_EOL", "T_ASSIGN_VAL", "T_OR", "T_AND", "T_EQUAL", + "T_UNEQUAL", "T_LESS", "T_LESS_EQUAL", "T_GREATER", "T_GREATER_EQUAL", + "T_NOT", "$accept", "input", "mainmenu_stmt", "stmt_list", "common_stmt", + "config_entry_start", "config_stmt", "menuconfig_entry_start", + "menuconfig_stmt", "config_option_list", "config_option", "choice", + "choice_entry", "choice_end", "choice_stmt", "choice_option_list", + "choice_option", "type", "logic_type", "default", "choice_block", + "if_entry", "if_end", "if_stmt", "menu", "menu_entry", "menu_end", + "menu_stmt", "menu_option_list", "source_stmt", "comment", + "comment_stmt", "comment_option_list", "help_start", "help", "depends", + "visible", "prompt_stmt_opt", "end", "if_expr", "expr", + "nonconst_symbol", "symbol", "assignment_stmt", "assign_op", + "assign_val", YY_NULLPTR +}; + +static const char * +yysymbol_name (yysymbol_kind_t yysymbol) +{ + return yytname[yysymbol]; +} +#endif + +#define YYPACT_NINF (-67) + +#define yypact_value_is_default(Yyn) \ + ((Yyn) == YYPACT_NINF) + +#define YYTABLE_NINF (-4) + +#define yytable_value_is_error(Yyn) \ + 0 + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +static const yytype_int16 yypact[] = +{ + 15, 13, 29, -67, 30, 19, -67, 59, 22, 11, + 23, 52, 60, -1, 62, 60, 63, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, 32, -67, -67, -67, + 37, -67, 33, -67, 47, -67, -1, -1, 34, -67, + 141, 48, 49, 53, 111, 111, 84, 142, 94, 6, + 94, 76, -67, -67, 58, -67, -67, 5, -67, -67, + -1, -1, 18, 18, 18, 18, 18, 18, -67, -67, + -67, -67, -67, -67, -67, 72, 67, -67, 60, -67, + 69, 97, 18, 60, -67, -67, -67, 104, -67, -1, + 110, -67, -67, 60, 79, 117, -67, 104, -67, -67, + 7, 88, 89, 93, -67, -67, -67, -67, -67, 114, + -67, -67, -67, -67, -67, -67, -67, 95, -67, -67, + -67, -67, -67, -67, -67, -1, -67, 114, -67, 114, + 18, 114, 114, 100, -6, -67, 114, -67, 114, 101, + -67, -67, -67, -1, 102, 40, 103, 112, 114, 115, + -67, -67, 116, 118, 122, -67, -9, -67, -67, -67, + -67, 126, -67, -67, -67, -67, -67 +}; + +/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ +static const yytype_int8 yydefact[] = +{ + 5, 0, 0, 5, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 6, 21, 13, + 21, 14, 36, 53, 7, 5, 11, 62, 5, 8, + 15, 68, 12, 16, 4, 10, 0, 97, 98, 96, + 99, 32, 0, 92, 0, 94, 0, 0, 0, 93, + 81, 0, 0, 0, 18, 20, 33, 0, 0, 59, + 0, 67, 9, 100, 0, 66, 17, 0, 89, 55, + 0, 0, 0, 0, 0, 0, 0, 0, 58, 19, + 65, 48, 50, 51, 52, 0, 0, 46, 0, 45, + 0, 0, 0, 0, 47, 49, 22, 74, 44, 0, + 0, 24, 23, 0, 0, 0, 37, 74, 39, 38, + 0, 0, 0, 0, 54, 35, 34, 57, 56, 79, + 64, 63, 61, 60, 69, 95, 88, 90, 91, 86, + 87, 82, 83, 84, 85, 0, 70, 79, 31, 79, + 0, 79, 79, 0, 79, 71, 79, 42, 79, 0, + 77, 78, 76, 0, 0, 0, 0, 0, 79, 0, + 75, 25, 0, 0, 0, 41, 80, 73, 72, 29, + 26, 0, 28, 27, 43, 40, 30 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -67, -67, -67, 24, 92, -67, -67, -67, -67, 130, + -67, -67, -67, -67, -67, -67, -67, -67, 80, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, 119, -42, -67, 65, -15, 25, + -46, -10, -66, -67, -67, -67 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_uint8 yydefgoto[] = +{ + 0, 2, 3, 4, 17, 18, 19, 20, 21, 54, + 96, 22, 23, 115, 24, 56, 106, 97, 98, 99, + 57, 25, 117, 26, 27, 28, 122, 29, 59, 30, + 31, 32, 61, 100, 101, 102, 121, 143, 116, 154, + 48, 49, 50, 33, 40, 64 +}; + +/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ +static const yytype_int16 yytable[] = +{ + 67, 68, 44, 43, 45, 52, 129, 130, 131, 132, + 133, 134, 36, 126, 109, 153, 37, 120, 5, 124, + 37, 85, 43, 45, 127, 128, 140, 7, 46, 6, + -3, 8, 70, 71, 9, 70, 71, 10, 38, 1, + 11, 12, 38, 118, 119, 123, 70, 71, 47, 58, + 39, 13, 60, 144, 39, 14, 15, 42, 34, -2, + 8, 35, 41, 9, 43, 16, 10, 51, 53, 11, + 12, 62, 65, 69, 158, 70, 71, 63, 137, 168, + 13, 70, 71, 141, 14, 15, 66, 78, 79, 155, + 81, 85, 80, 146, 16, 8, 103, 125, 9, 85, + 135, 10, 139, 86, 11, 12, 136, 166, 138, 142, + 111, 112, 113, 145, 104, 13, 105, 81, 147, 14, + 15, 95, 148, 82, 83, 84, 85, 150, 151, 16, + 86, 87, 152, 88, 89, 153, 107, 71, 90, 161, + 165, 167, 169, 91, 92, 93, 110, 94, 95, 114, + 55, 170, 11, 12, 172, 173, 0, 174, 111, 112, + 113, 175, 156, 13, 157, 176, 159, 160, 15, 162, + 0, 163, 149, 164, 0, 108, 0, 16, 0, 0, + 0, 0, 0, 171, 72, 73, 74, 75, 76, 77 +}; + +static const yytype_int16 yycheck[] = +{ + 46, 47, 12, 4, 5, 15, 72, 73, 74, 75, + 76, 77, 1, 8, 56, 21, 9, 59, 5, 61, + 9, 15, 4, 5, 70, 71, 92, 3, 29, 0, + 0, 1, 41, 42, 4, 41, 42, 7, 31, 24, + 10, 11, 31, 58, 38, 60, 41, 42, 49, 25, + 43, 21, 28, 99, 43, 25, 26, 5, 39, 0, + 1, 39, 39, 4, 4, 35, 7, 5, 5, 10, + 11, 39, 39, 39, 140, 41, 42, 40, 88, 39, + 21, 41, 42, 93, 25, 26, 39, 39, 39, 135, + 6, 15, 39, 103, 35, 1, 12, 39, 4, 15, + 28, 7, 5, 19, 10, 11, 39, 153, 39, 5, + 16, 17, 18, 3, 30, 21, 32, 6, 39, 25, + 26, 37, 5, 12, 13, 14, 15, 39, 39, 35, + 19, 20, 39, 22, 23, 21, 56, 42, 27, 39, + 39, 39, 39, 32, 33, 34, 4, 36, 37, 57, + 20, 39, 10, 11, 39, 39, -1, 39, 16, 17, + 18, 39, 137, 21, 139, 39, 141, 142, 26, 144, + -1, 146, 107, 148, -1, 56, -1, 35, -1, -1, + -1, -1, -1, 158, 43, 44, 45, 46, 47, 48 +}; + +/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of + state STATE-NUM. */ +static const yytype_int8 yystos[] = +{ + 0, 24, 51, 52, 53, 5, 0, 53, 1, 4, + 7, 10, 11, 21, 25, 26, 35, 54, 55, 56, + 57, 58, 61, 62, 64, 71, 73, 74, 75, 77, + 79, 80, 81, 93, 39, 39, 1, 9, 31, 43, + 94, 39, 5, 4, 91, 5, 29, 49, 90, 91, + 92, 5, 91, 5, 59, 59, 65, 70, 53, 78, + 53, 82, 39, 40, 95, 39, 39, 90, 90, 39, + 41, 42, 43, 44, 45, 46, 47, 48, 39, 39, + 39, 6, 12, 13, 14, 15, 19, 20, 22, 23, + 27, 32, 33, 34, 36, 37, 60, 67, 68, 69, + 83, 84, 85, 12, 30, 32, 66, 68, 84, 85, + 4, 16, 17, 18, 54, 63, 88, 72, 88, 38, + 85, 86, 76, 88, 85, 39, 8, 90, 90, 92, + 92, 92, 92, 92, 92, 28, 39, 91, 39, 5, + 92, 91, 5, 87, 90, 3, 91, 39, 5, 87, + 39, 39, 39, 21, 89, 90, 89, 89, 92, 89, + 89, 39, 89, 89, 89, 39, 90, 39, 39, 39, + 39, 89, 39, 39, 39, 39, 39 +}; + +/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ +static const yytype_int8 yyr1[] = +{ + 0, 50, 51, 51, 52, 53, 53, 53, 53, 53, + 53, 54, 54, 54, 54, 54, 54, 55, 56, 57, + 58, 59, 59, 59, 59, 60, 60, 60, 60, 60, + 60, 60, 61, 62, 63, 64, 65, 65, 65, 65, + 66, 66, 66, 66, 67, 67, 67, 67, 68, 68, + 69, 69, 69, 70, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 78, 78, 79, 80, 81, 82, 82, + 83, 84, 85, 86, 87, 87, 88, 88, 88, 89, + 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 91, 92, 92, 93, 94, 94, 94, 95, + 95 +}; + +/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ +static const yytype_int8 yyr2[] = +{ + 0, 2, 2, 1, 3, 0, 2, 2, 2, 4, + 3, 1, 1, 1, 1, 1, 1, 3, 2, 3, + 2, 0, 2, 2, 2, 3, 4, 4, 4, 4, + 5, 2, 2, 2, 1, 3, 0, 2, 2, 2, + 4, 3, 2, 4, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 2, 3, 1, 3, 3, 2, + 1, 3, 0, 2, 2, 3, 3, 2, 0, 2, + 2, 2, 4, 3, 0, 2, 2, 2, 2, 0, + 2, 1, 3, 3, 3, 3, 3, 3, 3, 2, + 3, 3, 1, 1, 1, 4, 1, 1, 1, 0, + 1 +}; + + +enum { YYENOMEM = -2 }; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab +#define YYNOMEM goto yyexhaustedlab + + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ + do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ + while (0) + +/* Backward compatibility with an undocumented macro. + Use YYerror or YYUNDEF. */ +#define YYERRCODE YYUNDEF + + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) + + + + +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Kind, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) + + +/*-----------------------------------. +| Print this symbol's value on YYO. | +`-----------------------------------*/ + +static void +yy_symbol_value_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) +{ + FILE *yyoutput = yyo; + YY_USE (yyoutput); + if (!yyvaluep) + return; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YY_USE (yykind); + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + +/*---------------------------. +| Print this symbol on YYO. | +`---------------------------*/ + +static void +yy_symbol_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) +{ + YYFPRINTF (yyo, "%s %s (", + yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); + + yy_symbol_value_print (yyo, yykind, yyvaluep); + YYFPRINTF (yyo, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +static void +yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +static void +yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, + int yyrule) +{ + int yylno = yyrline[yyrule]; + int yynrhs = yyr2[yyrule]; + int yyi; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, + YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), + &yyvsp[(yyi + 1) - (yynrhs)]); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule); \ +} while (0) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) ((void) 0) +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + + + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +static void +yydestruct (const char *yymsg, + yysymbol_kind_t yykind, YYSTYPE *yyvaluep) +{ + YY_USE (yyvaluep); + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + switch (yykind) + { + case YYSYMBOL_choice_entry: /* choice_entry */ + { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + ((*yyvaluep).menu)->filename, ((*yyvaluep).menu)->lineno); + if (current_menu == ((*yyvaluep).menu)) + menu_end_menu(); +} + break; + + case YYSYMBOL_if_entry: /* if_entry */ + { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + ((*yyvaluep).menu)->filename, ((*yyvaluep).menu)->lineno); + if (current_menu == ((*yyvaluep).menu)) + menu_end_menu(); +} + break; + + case YYSYMBOL_menu_entry: /* menu_entry */ + { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + ((*yyvaluep).menu)->filename, ((*yyvaluep).menu)->lineno); + if (current_menu == ((*yyvaluep).menu)) + menu_end_menu(); +} + break; + + default: + break; + } + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + +/* Lookahead token kind. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; +/* Number of syntax errors so far. */ +int yynerrs; + + + + +/*----------. +| yyparse. | +`----------*/ + +int +yyparse (void) +{ + yy_state_fast_t yystate = 0; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus = 0; + + /* Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* Their size. */ + YYPTRDIFF_T yystacksize = YYINITDEPTH; + + /* The state stack: array, bottom, top. */ + yy_state_t yyssa[YYINITDEPTH]; + yy_state_t *yyss = yyssa; + yy_state_t *yyssp = yyss; + + /* The semantic value stack: array, bottom, top. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp = yyvs; + + int yyn; + /* The return value of yyparse. */ + int yyresult; + /* Lookahead symbol kind. */ + yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yychar = YYEMPTY; /* Cause a token to be read. */ + + goto yysetstate; + + +/*------------------------------------------------------------. +| yynewstate -- push a new state, which is found in yystate. | +`------------------------------------------------------------*/ +yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + +/*--------------------------------------------------------------------. +| yysetstate -- set current state (the top of the stack) to yystate. | +`--------------------------------------------------------------------*/ +yysetstate: + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + YY_ASSERT (0 <= yystate && yystate < YYNSTATES); + YY_IGNORE_USELESS_CAST_BEGIN + *yyssp = YY_CAST (yy_state_t, yystate); + YY_IGNORE_USELESS_CAST_END + YY_STACK_PRINT (yyss, yyssp); + + if (yyss + yystacksize - 1 <= yyssp) +#if !defined yyoverflow && !defined YYSTACK_RELOCATE + YYNOMEM; +#else + { + /* Get the current used size of the three stacks, in elements. */ + YYPTRDIFF_T yysize = yyssp - yyss + 1; + +# if defined yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + yy_state_t *yyss1 = yyss; + YYSTYPE *yyvs1 = yyvs; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * YYSIZEOF (*yyssp), + &yyvs1, yysize * YYSIZEOF (*yyvsp), + &yystacksize); + yyss = yyss1; + yyvs = yyvs1; + } +# else /* defined YYSTACK_RELOCATE */ + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + YYNOMEM; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yy_state_t *yyss1 = yyss; + union yyalloc *yyptr = + YY_CAST (union yyalloc *, + YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); + if (! yyptr) + YYNOMEM; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + YY_IGNORE_USELESS_CAST_BEGIN + YYDPRINTF ((stderr, "Stack size increased to %ld\n", + YY_CAST (long, yystacksize))); + YY_IGNORE_USELESS_CAST_END + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } +#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ + + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token\n")); + yychar = yylex (); + } + + if (yychar <= YYEOF) + { + yychar = YYEOF; + yytoken = YYSYMBOL_YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else if (yychar == YYerror) + { + /* The scanner already issued an error message, process directly + to error recovery. But do not keep the error token as + lookahead, it is too special and may lead us to an endless + loop in error recovery. */ + yychar = YYUNDEF; + yytoken = YYSYMBOL_YYerror; + goto yyerrlab1; + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + /* Discard the shifted token. */ + yychar = YYEMPTY; + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + '$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 4: /* mainmenu_stmt: T_MAINMENU T_WORD_QUOTE T_EOL */ +{ + menu_add_prompt(P_MENU, (yyvsp[-1].string), NULL); +} + break; + + case 9: /* stmt_list: stmt_list T_WORD error T_EOL */ + { zconf_error("unknown statement \"%s\"", (yyvsp[-2].string)); } + break; + + case 10: /* stmt_list: stmt_list error T_EOL */ + { zconf_error("invalid statement"); } + break; + + case 17: /* config_entry_start: T_CONFIG nonconst_symbol T_EOL */ +{ + (yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL; + menu_add_entry((yyvsp[-1].symbol)); + printd(DEBUG_PARSE, "%s:%d:config %s\n", cur_filename, cur_lineno, (yyvsp[-1].symbol)->name); +} + break; + + case 18: /* config_stmt: config_entry_start config_option_list */ +{ + printd(DEBUG_PARSE, "%s:%d:endconfig\n", cur_filename, cur_lineno); +} + break; + + case 19: /* menuconfig_entry_start: T_MENUCONFIG nonconst_symbol T_EOL */ +{ + (yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL; + menu_add_entry((yyvsp[-1].symbol)); + printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", cur_filename, cur_lineno, (yyvsp[-1].symbol)->name); +} + break; + + case 20: /* menuconfig_stmt: menuconfig_entry_start config_option_list */ +{ + if (current_entry->prompt) + current_entry->prompt->type = P_MENU; + else + zconfprint("warning: menuconfig statement without prompt"); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", cur_filename, cur_lineno); +} + break; + + case 25: /* config_option: type prompt_stmt_opt T_EOL */ +{ + menu_set_type((yyvsp[-2].type)); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", cur_filename, cur_lineno, (yyvsp[-2].type)); +} + break; + + case 26: /* config_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL */ +{ + menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:prompt\n", cur_filename, cur_lineno); +} + break; + + case 27: /* config_option: default expr if_expr T_EOL */ +{ + menu_add_expr(P_DEFAULT, (yyvsp[-2].expr), (yyvsp[-1].expr)); + if ((yyvsp[-3].type) != S_UNKNOWN) + menu_set_type((yyvsp[-3].type)); + printd(DEBUG_PARSE, "%s:%d:default(%u)\n", cur_filename, cur_lineno, + (yyvsp[-3].type)); +} + break; + + case 28: /* config_option: T_SELECT nonconst_symbol if_expr T_EOL */ +{ + menu_add_symbol(P_SELECT, (yyvsp[-2].symbol), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:select\n", cur_filename, cur_lineno); +} + break; + + case 29: /* config_option: T_IMPLY nonconst_symbol if_expr T_EOL */ +{ + menu_add_symbol(P_IMPLY, (yyvsp[-2].symbol), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:imply\n", cur_filename, cur_lineno); +} + break; + + case 30: /* config_option: T_RANGE symbol symbol if_expr T_EOL */ +{ + menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[-3].symbol), (yyvsp[-2].symbol)), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:range\n", cur_filename, cur_lineno); +} + break; + + case 31: /* config_option: T_MODULES T_EOL */ +{ + if (modules_sym) + zconf_error("symbol '%s' redefines option 'modules' already defined by symbol '%s'", + current_entry->sym->name, modules_sym->name); + modules_sym = current_entry->sym; +} + break; + + case 32: /* choice: T_CHOICE T_EOL */ +{ + struct symbol *sym = sym_lookup(NULL, SYMBOL_CHOICE); + sym->flags |= SYMBOL_NO_WRITE; + menu_add_entry(sym); + menu_add_expr(P_CHOICE, NULL, NULL); + printd(DEBUG_PARSE, "%s:%d:choice\n", cur_filename, cur_lineno); +} + break; + + case 33: /* choice_entry: choice choice_option_list */ +{ + if (!current_entry->prompt) { + fprintf(stderr, "%s:%d: error: choice must have a prompt\n", + current_entry->filename, current_entry->lineno); + yynerrs++; + } + + (yyval.menu) = menu_add_menu(); +} + break; + + case 34: /* choice_end: end */ +{ + if (zconf_endtoken((yyvsp[0].string), "choice")) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endchoice\n", cur_filename, cur_lineno); + } +} + break; + + case 40: /* choice_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL */ +{ + menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:prompt\n", cur_filename, cur_lineno); +} + break; + + case 41: /* choice_option: logic_type prompt_stmt_opt T_EOL */ +{ + menu_set_type((yyvsp[-2].type)); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", cur_filename, cur_lineno, (yyvsp[-2].type)); +} + break; + + case 42: /* choice_option: T_OPTIONAL T_EOL */ +{ + current_entry->sym->flags |= SYMBOL_OPTIONAL; + printd(DEBUG_PARSE, "%s:%d:optional\n", cur_filename, cur_lineno); +} + break; + + case 43: /* choice_option: T_DEFAULT nonconst_symbol if_expr T_EOL */ +{ + menu_add_symbol(P_DEFAULT, (yyvsp[-2].symbol), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:default\n", cur_filename, cur_lineno); +} + break; + + case 45: /* type: T_INT */ + { (yyval.type) = S_INT; } + break; + + case 46: /* type: T_HEX */ + { (yyval.type) = S_HEX; } + break; + + case 47: /* type: T_STRING */ + { (yyval.type) = S_STRING; } + break; + + case 48: /* logic_type: T_BOOL */ + { (yyval.type) = S_BOOLEAN; } + break; + + case 49: /* logic_type: T_TRISTATE */ + { (yyval.type) = S_TRISTATE; } + break; + + case 50: /* default: T_DEFAULT */ + { (yyval.type) = S_UNKNOWN; } + break; + + case 51: /* default: T_DEF_BOOL */ + { (yyval.type) = S_BOOLEAN; } + break; + + case 52: /* default: T_DEF_TRISTATE */ + { (yyval.type) = S_TRISTATE; } + break; + + case 55: /* if_entry: T_IF expr T_EOL */ +{ + printd(DEBUG_PARSE, "%s:%d:if\n", cur_filename, cur_lineno); + menu_add_entry(NULL); + menu_add_dep((yyvsp[-1].expr)); + (yyval.menu) = menu_add_menu(); +} + break; + + case 56: /* if_end: end */ +{ + if (zconf_endtoken((yyvsp[0].string), "if")) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endif\n", cur_filename, cur_lineno); + } +} + break; + + case 58: /* menu: T_MENU T_WORD_QUOTE T_EOL */ +{ + menu_add_entry(NULL); + menu_add_prompt(P_MENU, (yyvsp[-1].string), NULL); + printd(DEBUG_PARSE, "%s:%d:menu\n", cur_filename, cur_lineno); +} + break; + + case 59: /* menu_entry: menu menu_option_list */ +{ + (yyval.menu) = menu_add_menu(); +} + break; + + case 60: /* menu_end: end */ +{ + if (zconf_endtoken((yyvsp[0].string), "menu")) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endmenu\n", cur_filename, cur_lineno); + } +} + break; + + case 65: /* source_stmt: T_SOURCE T_WORD_QUOTE T_EOL */ +{ + printd(DEBUG_PARSE, "%s:%d:source %s\n", cur_filename, cur_lineno, (yyvsp[-1].string)); + zconf_nextfile((yyvsp[-1].string)); + free((yyvsp[-1].string)); +} + break; + + case 66: /* comment: T_COMMENT T_WORD_QUOTE T_EOL */ +{ + menu_add_entry(NULL); + menu_add_prompt(P_COMMENT, (yyvsp[-1].string), NULL); + printd(DEBUG_PARSE, "%s:%d:comment\n", cur_filename, cur_lineno); +} + break; + + case 70: /* help_start: T_HELP T_EOL */ +{ + printd(DEBUG_PARSE, "%s:%d:help\n", cur_filename, cur_lineno); + zconf_starthelp(); +} + break; + + case 71: /* help: help_start T_HELPTEXT */ +{ + if (current_entry->help) { + free(current_entry->help); + zconfprint("warning: '%s' defined with more than one help text -- only the last one will be used", + current_entry->sym->name ?: ""); + } + + /* Is the help text empty or all whitespace? */ + if ((yyvsp[0].string)[strspn((yyvsp[0].string), " \f\n\r\t\v")] == '\0') + zconfprint("warning: '%s' defined with blank help text", + current_entry->sym->name ?: ""); + + current_entry->help = (yyvsp[0].string); +} + break; + + case 72: /* depends: T_DEPENDS T_ON expr T_EOL */ +{ + menu_add_dep((yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:depends on\n", cur_filename, cur_lineno); +} + break; + + case 73: /* visible: T_VISIBLE if_expr T_EOL */ +{ + menu_add_visibility((yyvsp[-1].expr)); +} + break; + + case 75: /* prompt_stmt_opt: T_WORD_QUOTE if_expr */ +{ + menu_add_prompt(P_PROMPT, (yyvsp[-1].string), (yyvsp[0].expr)); +} + break; + + case 76: /* end: T_ENDMENU T_EOL */ + { (yyval.string) = "menu"; } + break; + + case 77: /* end: T_ENDCHOICE T_EOL */ + { (yyval.string) = "choice"; } + break; + + case 78: /* end: T_ENDIF T_EOL */ + { (yyval.string) = "if"; } + break; + + case 79: /* if_expr: %empty */ + { (yyval.expr) = NULL; } + break; + + case 80: /* if_expr: T_IF expr */ + { (yyval.expr) = (yyvsp[0].expr); } + break; + + case 81: /* expr: symbol */ + { (yyval.expr) = expr_alloc_symbol((yyvsp[0].symbol)); } + break; + + case 82: /* expr: symbol T_LESS symbol */ + { (yyval.expr) = expr_alloc_comp(E_LTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + + case 83: /* expr: symbol T_LESS_EQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_LEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + + case 84: /* expr: symbol T_GREATER symbol */ + { (yyval.expr) = expr_alloc_comp(E_GTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + + case 85: /* expr: symbol T_GREATER_EQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_GEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + + case 86: /* expr: symbol T_EQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + + case 87: /* expr: symbol T_UNEQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + + case 88: /* expr: T_OPEN_PAREN expr T_CLOSE_PAREN */ + { (yyval.expr) = (yyvsp[-1].expr); } + break; + + case 89: /* expr: T_NOT expr */ + { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[0].expr)); } + break; + + case 90: /* expr: expr T_OR expr */ + { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[-2].expr), (yyvsp[0].expr)); } + break; + + case 91: /* expr: expr T_AND expr */ + { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); } + break; + + case 92: /* nonconst_symbol: T_WORD */ + { (yyval.symbol) = sym_lookup((yyvsp[0].string), 0); free((yyvsp[0].string)); } + break; + + case 94: /* symbol: T_WORD_QUOTE */ + { (yyval.symbol) = sym_lookup((yyvsp[0].string), SYMBOL_CONST); free((yyvsp[0].string)); } + break; + + case 95: /* assignment_stmt: T_WORD assign_op assign_val T_EOL */ + { variable_add((yyvsp[-3].string), (yyvsp[-1].string), (yyvsp[-2].flavor)); free((yyvsp[-3].string)); free((yyvsp[-1].string)); } + break; + + case 96: /* assign_op: T_EQUAL */ + { (yyval.flavor) = VAR_RECURSIVE; } + break; + + case 97: /* assign_op: T_COLON_EQUAL */ + { (yyval.flavor) = VAR_SIMPLE; } + break; + + case 98: /* assign_op: T_PLUS_EQUAL */ + { (yyval.flavor) = VAR_APPEND; } + break; + + case 99: /* assign_val: %empty */ + { (yyval.string) = xstrdup(""); } + break; + + + + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + + *++yyvsp = yyval; + + /* Now 'shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + { + const int yylhs = yyr1[yyn] - YYNTOKENS; + const int yyi = yypgoto[yylhs] + *yyssp; + yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp + ? yytable[yyi] + : yydefgoto[yylhs]); + } + + goto yynewstate; + + +/*--------------------------------------. +| yyerrlab -- here on detecting error. | +`--------------------------------------*/ +yyerrlab: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; + yyerror (YY_("syntax error")); + } + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse lookahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + /* Pacify compilers when the user code never invokes YYERROR and the + label yyerrorlab therefore never appears in user code. */ + if (0) + YYERROR; + ++yynerrs; + + /* Do not reclaim the symbols of the rule whose action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + /* Pop stack until we find a state that shifts the error token. */ + for (;;) + { + yyn = yypact[yystate]; + if (!yypact_value_is_default (yyn)) + { + yyn += YYSYMBOL_YYerror; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + YY_ACCESSING_SYMBOL (yystate), yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturnlab; + + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturnlab; + + +/*-----------------------------------------------------------. +| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. | +`-----------------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + goto yyreturnlab; + + +/*----------------------------------------------------------. +| yyreturnlab -- parsing is finished, clean up and return. | +`----------------------------------------------------------*/ +yyreturnlab: + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } + /* Do not reclaim the symbols of the rule whose action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + YY_ACCESSING_SYMBOL (+*yyssp), yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif + + return yyresult; +} + + + +void conf_parse(const char *name) +{ + struct menu *menu; + + autoconf_cmd = str_new(); + + str_printf(&autoconf_cmd, "\ndeps_config := \\\n"); + + zconf_initscan(name); + + _menu_init(); + + if (getenv("ZCONF_DEBUG")) + yydebug = 1; + yyparse(); + + /* + * FIXME: + * cur_filename and cur_lineno are used even after yyparse(); + * menu_finalize() calls menu_add_symbol(). This should be fixed. + */ + cur_filename = ""; + cur_lineno = 0; + + str_printf(&autoconf_cmd, + "\n" + "$(autoconfig): $(deps_config)\n" + "$(deps_config): ;\n"); + + env_write_dep(&autoconf_cmd); + + /* Variables are expanded in the parse phase. We can free them here. */ + variable_all_del(); + + if (yynerrs) + exit(1); + if (!modules_sym) + modules_sym = &symbol_no; + + if (!menu_has_prompt(&rootmenu)) { + current_entry = &rootmenu; + menu_add_prompt(P_MENU, "Main menu", NULL); + } + + menu_finalize(); + + menu = &rootmenu; + while (menu) { + if (menu->sym && sym_check_deps(menu->sym)) + yynerrs++; + + if (menu->list) { + menu = menu->list; + continue; + } + + while (!menu->next && menu->parent) + menu = menu->parent; + + menu = menu->next; + } + + if (yynerrs) + exit(1); + conf_set_changed(true); +} + +static bool zconf_endtoken(const char *tokenname, + const char *expected_tokenname) +{ + if (strcmp(tokenname, expected_tokenname)) { + zconf_error("unexpected '%s' within %s block", + tokenname, expected_tokenname); + yynerrs++; + return false; + } + if (strcmp(current_menu->filename, cur_filename)) { + zconf_error("'%s' in different file than '%s'", + tokenname, expected_tokenname); + fprintf(stderr, "%s:%d: location of the '%s'\n", + current_menu->filename, current_menu->lineno, + expected_tokenname); + yynerrs++; + return false; + } + return true; +} + +static void zconfprint(const char *err, ...) +{ + va_list ap; + + fprintf(stderr, "%s:%d: ", cur_filename, cur_lineno); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void zconf_error(const char *err, ...) +{ + va_list ap; + + yynerrs++; + fprintf(stderr, "%s:%d: ", cur_filename, cur_lineno); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void yyerror(const char *err) +{ + fprintf(stderr, "%s:%d: %s\n", cur_filename, cur_lineno, err); +} + +static void print_quoted_string(FILE *out, const char *str) +{ + const char *p; + int len; + + putc('"', out); + while ((p = strchr(str, '"'))) { + len = p - str; + if (len) + fprintf(out, "%.*s", len, str); + fputs("\\\"", out); + str = p + 1; + } + fputs(str, out); + putc('"', out); +} + +static void print_symbol(FILE *out, struct menu *menu) +{ + struct symbol *sym = menu->sym; + struct property *prop; + + if (sym_is_choice(sym)) + fprintf(out, "\nchoice\n"); + else + fprintf(out, "\nconfig %s\n", sym->name); + switch (sym->type) { + case S_BOOLEAN: + fputs(" bool\n", out); + break; + case S_TRISTATE: + fputs(" tristate\n", out); + break; + case S_STRING: + fputs(" string\n", out); + break; + case S_INT: + fputs(" integer\n", out); + break; + case S_HEX: + fputs(" hex\n", out); + break; + default: + fputs(" ???\n", out); + break; + } + for (prop = sym->prop; prop; prop = prop->next) { + if (prop->menu != menu) + continue; + switch (prop->type) { + case P_PROMPT: + fputs(" prompt ", out); + print_quoted_string(out, prop->text); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_DEFAULT: + fputs( " default ", out); + expr_fprint(prop->expr, out); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_CHOICE: + fputs(" #choice value\n", out); + break; + case P_SELECT: + fputs( " select ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_IMPLY: + fputs( " imply ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_RANGE: + fputs( " range ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_MENU: + fputs( " menu ", out); + print_quoted_string(out, prop->text); + fputc('\n', out); + break; + case P_SYMBOL: + fputs( " symbol ", out); + fprintf(out, "%s\n", prop->menu->sym->name); + break; + default: + fprintf(out, " unknown prop %d!\n", prop->type); + break; + } + } + if (menu->help) { + int len = strlen(menu->help); + while (menu->help[--len] == '\n') + menu->help[len] = 0; + fprintf(out, " help\n%s\n", menu->help); + } +} + +void zconfdump(FILE *out) +{ + struct property *prop; + struct symbol *sym; + struct menu *menu; + + menu = rootmenu.list; + while (menu) { + if ((sym = menu->sym)) + print_symbol(out, menu); + else if ((prop = menu->prompt)) { + switch (prop->type) { + case P_COMMENT: + fputs("\ncomment ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + case P_MENU: + fputs("\nmenu ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + default: + ; + } + if (!expr_is_yes(prop->visible.expr)) { + fputs(" depends ", out); + expr_fprint(prop->visible.expr, out); + fputc('\n', out); + } + } + + if (menu->list) + menu = menu->list; + else if (menu->next) + menu = menu->next; + else while ((menu = menu->parent)) { + if (menu->prompt && menu->prompt->type == P_MENU) + fputs("\nendmenu\n", out); + if (menu->next) { + menu = menu->next; + break; + } + } + } +} diff --git a/support/kconfig/parser.tab.h_shipped b/support/kconfig/parser.tab.h_shipped new file mode 100644 index 0000000000..6459d79928 --- /dev/null +++ b/support/kconfig/parser.tab.h_shipped @@ -0,0 +1,134 @@ +/* A Bison parser, made by GNU Bison 3.8.2. */ + +/* Bison interface for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, + Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ + +#ifndef YY_YY_SCRIPTS_KCONFIG_PARSER_TAB_H_INCLUDED +# define YY_YY_SCRIPTS_KCONFIG_PARSER_TAB_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 1 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token kinds. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + enum yytokentype + { + YYEMPTY = -2, + YYEOF = 0, /* "end of file" */ + YYerror = 256, /* error */ + YYUNDEF = 257, /* "invalid token" */ + T_HELPTEXT = 258, /* T_HELPTEXT */ + T_WORD = 259, /* T_WORD */ + T_WORD_QUOTE = 260, /* T_WORD_QUOTE */ + T_BOOL = 261, /* T_BOOL */ + T_CHOICE = 262, /* T_CHOICE */ + T_CLOSE_PAREN = 263, /* T_CLOSE_PAREN */ + T_COLON_EQUAL = 264, /* T_COLON_EQUAL */ + T_COMMENT = 265, /* T_COMMENT */ + T_CONFIG = 266, /* T_CONFIG */ + T_DEFAULT = 267, /* T_DEFAULT */ + T_DEF_BOOL = 268, /* T_DEF_BOOL */ + T_DEF_TRISTATE = 269, /* T_DEF_TRISTATE */ + T_DEPENDS = 270, /* T_DEPENDS */ + T_ENDCHOICE = 271, /* T_ENDCHOICE */ + T_ENDIF = 272, /* T_ENDIF */ + T_ENDMENU = 273, /* T_ENDMENU */ + T_HELP = 274, /* T_HELP */ + T_HEX = 275, /* T_HEX */ + T_IF = 276, /* T_IF */ + T_IMPLY = 277, /* T_IMPLY */ + T_INT = 278, /* T_INT */ + T_MAINMENU = 279, /* T_MAINMENU */ + T_MENU = 280, /* T_MENU */ + T_MENUCONFIG = 281, /* T_MENUCONFIG */ + T_MODULES = 282, /* T_MODULES */ + T_ON = 283, /* T_ON */ + T_OPEN_PAREN = 284, /* T_OPEN_PAREN */ + T_OPTIONAL = 285, /* T_OPTIONAL */ + T_PLUS_EQUAL = 286, /* T_PLUS_EQUAL */ + T_PROMPT = 287, /* T_PROMPT */ + T_RANGE = 288, /* T_RANGE */ + T_SELECT = 289, /* T_SELECT */ + T_SOURCE = 290, /* T_SOURCE */ + T_STRING = 291, /* T_STRING */ + T_TRISTATE = 292, /* T_TRISTATE */ + T_VISIBLE = 293, /* T_VISIBLE */ + T_EOL = 294, /* T_EOL */ + T_ASSIGN_VAL = 295, /* T_ASSIGN_VAL */ + T_OR = 296, /* T_OR */ + T_AND = 297, /* T_AND */ + T_EQUAL = 298, /* T_EQUAL */ + T_UNEQUAL = 299, /* T_UNEQUAL */ + T_LESS = 300, /* T_LESS */ + T_LESS_EQUAL = 301, /* T_LESS_EQUAL */ + T_GREATER = 302, /* T_GREATER */ + T_GREATER_EQUAL = 303, /* T_GREATER_EQUAL */ + T_NOT = 304 /* T_NOT */ + }; + typedef enum yytokentype yytoken_kind_t; +#endif + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +union YYSTYPE +{ + + char *string; + struct symbol *symbol; + struct expr *expr; + struct menu *menu; + enum symbol_type type; + enum variable_flavor flavor; + + +}; +typedef union YYSTYPE YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + + +int yyparse (void); + + +#endif /* !YY_YY_SCRIPTS_KCONFIG_PARSER_TAB_H_INCLUDED */ diff --git a/support/kconfig/zconf.y b/support/kconfig/parser.y similarity index 56% rename from support/kconfig/zconf.y rename to support/kconfig/parser.y index 7b34de28a6..9873e84b1b 100644 --- a/support/kconfig/zconf.y +++ b/support/kconfig/parser.y @@ -1,8 +1,8 @@ -%{ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ +%{ #include #include @@ -12,6 +12,8 @@ #include #include "lkc.h" +#include "internal.h" +#include "preprocess.h" #define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) @@ -20,63 +22,64 @@ int cdebug = PRINTD; -int yylex(void); static void yyerror(const char *err); static void zconfprint(const char *err, ...); static void zconf_error(const char *err, ...); -static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken); - -struct symbol *symbol_hash[SYMBOL_HASHSIZE]; +static bool zconf_endtoken(const char *tokenname, + const char *expected_tokenname); -static struct menu *current_menu, *current_entry; +struct menu *current_menu, *current_entry; %} -%expect 32 %union { char *string; - struct file *file; struct symbol *symbol; struct expr *expr; struct menu *menu; - const struct kconf_id *id; + enum symbol_type type; + enum variable_flavor flavor; } -%token T_MAINMENU -%token T_MENU -%token T_ENDMENU -%token T_SOURCE -%token T_CHOICE -%token T_ENDCHOICE -%token T_COMMENT -%token T_CONFIG -%token T_MENUCONFIG -%token T_HELP %token T_HELPTEXT -%token T_IF -%token T_ENDIF -%token T_DEPENDS -%token T_OPTIONAL -%token T_PROMPT -%token T_TYPE -%token T_DEFAULT -%token T_SELECT -%token T_IMPLY -%token T_RANGE -%token T_VISIBLE -%token T_OPTION -%token T_ON %token T_WORD %token T_WORD_QUOTE -%token T_UNEQUAL -%token T_LESS -%token T_LESS_EQUAL -%token T_GREATER -%token T_GREATER_EQUAL +%token T_BOOL +%token T_CHOICE %token T_CLOSE_PAREN +%token T_COLON_EQUAL +%token T_COMMENT +%token T_CONFIG +%token T_DEFAULT +%token T_DEF_BOOL +%token T_DEF_TRISTATE +%token T_DEPENDS +%token T_ENDCHOICE +%token T_ENDIF +%token T_ENDMENU +%token T_HELP +%token T_HEX +%token T_IF +%token T_IMPLY +%token T_INT +%token T_MAINMENU +%token T_MENU +%token T_MENUCONFIG +%token T_MODULES +%token T_ON %token T_OPEN_PAREN +%token T_OPTIONAL +%token T_PLUS_EQUAL +%token T_PROMPT +%token T_RANGE +%token T_SELECT +%token T_SOURCE +%token T_STRING +%token T_TRISTATE +%token T_VISIBLE %token T_EOL +%token T_ASSIGN_VAL %left T_OR %left T_AND @@ -84,105 +87,70 @@ static struct menu *current_menu, *current_entry; %left T_LESS T_LESS_EQUAL T_GREATER T_GREATER_EQUAL %nonassoc T_NOT -%type prompt %type nonconst_symbol %type symbol +%type type logic_type default %type expr %type if_expr -%type end -%type option_name +%type end %type if_entry menu_entry choice_entry -%type symbol_option_arg word_opt +%type assign_val +%type assign_op %destructor { fprintf(stderr, "%s:%d: missing end statement for this entry\n", - $$->file->name, $$->lineno); + $$->filename, $$->lineno); if (current_menu == $$) menu_end_menu(); } if_entry menu_entry choice_entry -%{ -/* Include kconf_id.c here so it can see the token constants. */ -#include "kconf_id.c" -%} - %% -input: nl start | start; - -start: mainmenu_stmt stmt_list | no_mainmenu_stmt stmt_list; +input: mainmenu_stmt stmt_list | stmt_list; /* mainmenu entry */ -mainmenu_stmt: T_MAINMENU prompt nl +mainmenu_stmt: T_MAINMENU T_WORD_QUOTE T_EOL { menu_add_prompt(P_MENU, $2, NULL); }; -/* Default main menu, if there's no mainmenu entry */ - -no_mainmenu_stmt: /* empty */ -{ - /* - * Hack: Keep the main menu title on the heap so we can safely free it - * later regardless of whether it comes from the 'prompt' in - * mainmenu_stmt or here - */ - menu_add_prompt(P_MENU, xstrdup("Buildroot Configuration"), NULL); -}; - - stmt_list: /* empty */ | stmt_list common_stmt | stmt_list choice_stmt | stmt_list menu_stmt - | stmt_list end { zconf_error("unexpected end statement"); } | stmt_list T_WORD error T_EOL { zconf_error("unknown statement \"%s\"", $2); } - | stmt_list option_name error T_EOL -{ - zconf_error("unexpected option \"%s\"", $2->name); -} | stmt_list error T_EOL { zconf_error("invalid statement"); } ; -option_name: - T_DEPENDS | T_PROMPT | T_TYPE | T_SELECT | T_IMPLY | T_OPTIONAL | T_RANGE | T_DEFAULT | T_VISIBLE -; - common_stmt: - T_EOL - | if_stmt + if_stmt | comment_stmt | config_stmt | menuconfig_stmt | source_stmt + | assignment_stmt ; -option_error: - T_WORD error T_EOL { zconf_error("unknown option \"%s\"", $1); } - | error T_EOL { zconf_error("invalid option"); } -; - - /* config/menuconfig entry */ config_entry_start: T_CONFIG nonconst_symbol T_EOL { $2->flags |= SYMBOL_OPTIONAL; menu_add_entry($2); - printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), $2->name); + printd(DEBUG_PARSE, "%s:%d:config %s\n", cur_filename, cur_lineno, $2->name); }; config_stmt: config_entry_start config_option_list { - printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", cur_filename, cur_lineno); }; menuconfig_entry_start: T_MENUCONFIG nonconst_symbol T_EOL { $2->flags |= SYMBOL_OPTIONAL; menu_add_entry($2); - printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), $2->name); + printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", cur_filename, cur_lineno, $2->name); }; menuconfig_stmt: menuconfig_entry_start config_option_list @@ -191,105 +159,90 @@ menuconfig_stmt: menuconfig_entry_start config_option_list current_entry->prompt->type = P_MENU; else zconfprint("warning: menuconfig statement without prompt"); - printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", cur_filename, cur_lineno); }; config_option_list: /* empty */ | config_option_list config_option - | config_option_list symbol_option | config_option_list depends | config_option_list help - | config_option_list option_error - | config_option_list T_EOL ; -config_option: T_TYPE prompt_stmt_opt T_EOL +config_option: type prompt_stmt_opt T_EOL { - menu_set_type($1->stype); - printd(DEBUG_PARSE, "%s:%d:type(%u)\n", - zconf_curname(), zconf_lineno(), - $1->stype); + menu_set_type($1); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", cur_filename, cur_lineno, $1); }; -config_option: T_PROMPT prompt if_expr T_EOL +config_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL { menu_add_prompt(P_PROMPT, $2, $3); - printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:prompt\n", cur_filename, cur_lineno); }; -config_option: T_DEFAULT expr if_expr T_EOL +config_option: default expr if_expr T_EOL { menu_add_expr(P_DEFAULT, $2, $3); - if ($1->stype != S_UNKNOWN) - menu_set_type($1->stype); - printd(DEBUG_PARSE, "%s:%d:default(%u)\n", - zconf_curname(), zconf_lineno(), - $1->stype); + if ($1 != S_UNKNOWN) + menu_set_type($1); + printd(DEBUG_PARSE, "%s:%d:default(%u)\n", cur_filename, cur_lineno, + $1); }; config_option: T_SELECT nonconst_symbol if_expr T_EOL { menu_add_symbol(P_SELECT, $2, $3); - printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:select\n", cur_filename, cur_lineno); }; config_option: T_IMPLY nonconst_symbol if_expr T_EOL { menu_add_symbol(P_IMPLY, $2, $3); - printd(DEBUG_PARSE, "%s:%d:imply\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:imply\n", cur_filename, cur_lineno); }; config_option: T_RANGE symbol symbol if_expr T_EOL { menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,$2, $3), $4); - printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:range\n", cur_filename, cur_lineno); }; -symbol_option: T_OPTION symbol_option_list T_EOL -; - -symbol_option_list: - /* empty */ - | symbol_option_list T_WORD symbol_option_arg +config_option: T_MODULES T_EOL { - const struct kconf_id *id = kconf_id_lookup($2, strlen($2)); - if (id && id->flags & TF_OPTION) { - menu_add_option(id->token, $3); - free($3); - } - else - zconfprint("warning: ignoring unknown option %s", $2); - free($2); + if (modules_sym) + zconf_error("symbol '%s' redefines option 'modules' already defined by symbol '%s'", + current_entry->sym->name, modules_sym->name); + modules_sym = current_entry->sym; }; -symbol_option_arg: - /* empty */ { $$ = NULL; } - | T_EQUAL prompt { $$ = $2; } -; - /* choice entry */ -choice: T_CHOICE word_opt T_EOL +choice: T_CHOICE T_EOL { - struct symbol *sym = sym_lookup($2, SYMBOL_CHOICE); - sym->flags |= SYMBOL_AUTO; + struct symbol *sym = sym_lookup(NULL, SYMBOL_CHOICE); + sym->flags |= SYMBOL_NO_WRITE; menu_add_entry(sym); menu_add_expr(P_CHOICE, NULL, NULL); - free($2); - printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:choice\n", cur_filename, cur_lineno); }; choice_entry: choice choice_option_list { + if (!current_entry->prompt) { + fprintf(stderr, "%s:%d: error: choice must have a prompt\n", + current_entry->filename, current_entry->lineno); + yynerrs++; + } + $$ = menu_add_menu(); }; choice_end: end { - if (zconf_endtoken($1, T_CHOICE, T_ENDCHOICE)) { + if (zconf_endtoken($1, "choice")) { menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:endchoice\n", cur_filename, cur_lineno); } }; @@ -301,43 +254,47 @@ choice_option_list: | choice_option_list choice_option | choice_option_list depends | choice_option_list help - | choice_option_list T_EOL - | choice_option_list option_error ; -choice_option: T_PROMPT prompt if_expr T_EOL +choice_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL { menu_add_prompt(P_PROMPT, $2, $3); - printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:prompt\n", cur_filename, cur_lineno); }; -choice_option: T_TYPE prompt_stmt_opt T_EOL +choice_option: logic_type prompt_stmt_opt T_EOL { - if ($1->stype == S_BOOLEAN || $1->stype == S_TRISTATE) { - menu_set_type($1->stype); - printd(DEBUG_PARSE, "%s:%d:type(%u)\n", - zconf_curname(), zconf_lineno(), - $1->stype); - } else - YYERROR; + menu_set_type($1); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", cur_filename, cur_lineno, $1); }; choice_option: T_OPTIONAL T_EOL { current_entry->sym->flags |= SYMBOL_OPTIONAL; - printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:optional\n", cur_filename, cur_lineno); }; choice_option: T_DEFAULT nonconst_symbol if_expr T_EOL { - if ($1->stype == S_UNKNOWN) { - menu_add_symbol(P_DEFAULT, $2, $3); - printd(DEBUG_PARSE, "%s:%d:default\n", - zconf_curname(), zconf_lineno()); - } else - YYERROR; + menu_add_symbol(P_DEFAULT, $2, $3); + printd(DEBUG_PARSE, "%s:%d:default\n", cur_filename, cur_lineno); }; +type: + logic_type + | T_INT { $$ = S_INT; } + | T_HEX { $$ = S_HEX; } + | T_STRING { $$ = S_STRING; } + +logic_type: + T_BOOL { $$ = S_BOOLEAN; } + | T_TRISTATE { $$ = S_TRISTATE; } + +default: + T_DEFAULT { $$ = S_UNKNOWN; } + | T_DEF_BOOL { $$ = S_BOOLEAN; } + | T_DEF_TRISTATE { $$ = S_TRISTATE; } + choice_block: /* empty */ | choice_block common_stmt @@ -345,9 +302,9 @@ choice_block: /* if entry */ -if_entry: T_IF expr nl +if_entry: T_IF expr T_EOL { - printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:if\n", cur_filename, cur_lineno); menu_add_entry(NULL); menu_add_dep($2); $$ = menu_add_menu(); @@ -355,78 +312,75 @@ if_entry: T_IF expr nl if_end: end { - if (zconf_endtoken($1, T_IF, T_ENDIF)) { + if (zconf_endtoken($1, "if")) { menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:endif\n", cur_filename, cur_lineno); } }; -if_stmt: if_entry if_block if_end -; - -if_block: - /* empty */ - | if_block common_stmt - | if_block menu_stmt - | if_block choice_stmt +if_stmt: if_entry stmt_list if_end ; /* menu entry */ -menu: T_MENU prompt T_EOL +menu: T_MENU T_WORD_QUOTE T_EOL { menu_add_entry(NULL); menu_add_prompt(P_MENU, $2, NULL); - printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:menu\n", cur_filename, cur_lineno); }; -menu_entry: menu visibility_list depends_list +menu_entry: menu menu_option_list { $$ = menu_add_menu(); }; menu_end: end { - if (zconf_endtoken($1, T_MENU, T_ENDMENU)) { + if (zconf_endtoken($1, "menu")) { menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:endmenu\n", cur_filename, cur_lineno); } }; -menu_stmt: menu_entry menu_block menu_end +menu_stmt: menu_entry stmt_list menu_end ; -menu_block: +menu_option_list: /* empty */ - | menu_block common_stmt - | menu_block menu_stmt - | menu_block choice_stmt + | menu_option_list visible + | menu_option_list depends ; -source_stmt: T_SOURCE prompt T_EOL +source_stmt: T_SOURCE T_WORD_QUOTE T_EOL { - printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), $2); + printd(DEBUG_PARSE, "%s:%d:source %s\n", cur_filename, cur_lineno, $2); zconf_nextfile($2); free($2); }; /* comment entry */ -comment: T_COMMENT prompt T_EOL +comment: T_COMMENT T_WORD_QUOTE T_EOL { menu_add_entry(NULL); menu_add_prompt(P_COMMENT, $2, NULL); - printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:comment\n", cur_filename, cur_lineno); }; -comment_stmt: comment depends_list +comment_stmt: comment comment_option_list +; + +comment_option_list: + /* empty */ + | comment_option_list depends ; /* help option */ help_start: T_HELP T_EOL { - printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:help\n", cur_filename, cur_lineno); zconf_starthelp(); }; @@ -448,28 +402,14 @@ help: help_start T_HELPTEXT /* depends option */ -depends_list: - /* empty */ - | depends_list depends - | depends_list T_EOL - | depends_list option_error -; - depends: T_DEPENDS T_ON expr T_EOL { menu_add_dep($3); - printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:depends on\n", cur_filename, cur_lineno); }; /* visibility option */ - -visibility_list: - /* empty */ - | visibility_list visible - | visibility_list T_EOL -; - -visible: T_VISIBLE if_expr +visible: T_VISIBLE if_expr T_EOL { menu_add_visibility($2); }; @@ -478,23 +418,14 @@ visible: T_VISIBLE if_expr prompt_stmt_opt: /* empty */ - | prompt if_expr + | T_WORD_QUOTE if_expr { menu_add_prompt(P_PROMPT, $1, $2); }; -prompt: T_WORD - | T_WORD_QUOTE -; - -end: T_ENDMENU T_EOL { $$ = $1; } - | T_ENDCHOICE T_EOL { $$ = $1; } - | T_ENDIF T_EOL { $$ = $1; } -; - -nl: - T_EOL - | nl T_EOL +end: T_ENDMENU T_EOL { $$ = "menu"; } + | T_ENDCHOICE T_EOL { $$ = "choice"; } + | T_ENDIF T_EOL { $$ = "if"; } ; if_expr: /* empty */ { $$ = NULL; } @@ -521,74 +452,105 @@ symbol: nonconst_symbol | T_WORD_QUOTE { $$ = sym_lookup($1, SYMBOL_CONST); free($1); } ; -word_opt: /* empty */ { $$ = NULL; } - | T_WORD +/* assignment statement */ + +assignment_stmt: T_WORD assign_op assign_val T_EOL { variable_add($1, $3, $2); free($1); free($3); } + +assign_op: + T_EQUAL { $$ = VAR_RECURSIVE; } + | T_COLON_EQUAL { $$ = VAR_SIMPLE; } + | T_PLUS_EQUAL { $$ = VAR_APPEND; } +; + +assign_val: + /* empty */ { $$ = xstrdup(""); }; + | T_ASSIGN_VAL +; %% void conf_parse(const char *name) { - const char *tmp; - struct symbol *sym; - int i; + struct menu *menu; + + autoconf_cmd = str_new(); + + str_printf(&autoconf_cmd, "\ndeps_config := \\\n"); zconf_initscan(name); - sym_init(); _menu_init(); if (getenv("ZCONF_DEBUG")) yydebug = 1; yyparse(); + + /* + * FIXME: + * cur_filename and cur_lineno are used even after yyparse(); + * menu_finalize() calls menu_add_symbol(). This should be fixed. + */ + cur_filename = ""; + cur_lineno = 0; + + str_printf(&autoconf_cmd, + "\n" + "$(autoconfig): $(deps_config)\n" + "$(deps_config): ;\n"); + + env_write_dep(&autoconf_cmd); + + /* Variables are expanded in the parse phase. We can free them here. */ + variable_all_del(); + if (yynerrs) exit(1); if (!modules_sym) - modules_sym = sym_find( "n" ); + modules_sym = &symbol_no; - tmp = rootmenu.prompt->text; - rootmenu.prompt->text = _(rootmenu.prompt->text); - rootmenu.prompt->text = sym_expand_string_value(rootmenu.prompt->text); - free((char*)tmp); + if (!menu_has_prompt(&rootmenu)) { + current_entry = &rootmenu; + menu_add_prompt(P_MENU, "Main menu", NULL); + } + + menu_finalize(); - menu_finalize(&rootmenu); - for_all_symbols(i, sym) { - if (sym_check_deps(sym)) + menu = &rootmenu; + while (menu) { + if (menu->sym && sym_check_deps(menu->sym)) yynerrs++; + + if (menu->list) { + menu = menu->list; + continue; + } + + while (!menu->next && menu->parent) + menu = menu->parent; + + menu = menu->next; } + if (yynerrs) exit(1); - sym_set_change_count(1); + conf_set_changed(true); } -static const char *zconf_tokenname(int token) -{ - switch (token) { - case T_MENU: return "menu"; - case T_ENDMENU: return "endmenu"; - case T_CHOICE: return "choice"; - case T_ENDCHOICE: return "endchoice"; - case T_IF: return "if"; - case T_ENDIF: return "endif"; - case T_DEPENDS: return "depends"; - case T_VISIBLE: return "visible"; - } - return ""; -} - -static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken) +static bool zconf_endtoken(const char *tokenname, + const char *expected_tokenname) { - if (id->token != endtoken) { + if (strcmp(tokenname, expected_tokenname)) { zconf_error("unexpected '%s' within %s block", - id->name, zconf_tokenname(starttoken)); + tokenname, expected_tokenname); yynerrs++; return false; } - if (current_menu->file != current_file) { + if (strcmp(current_menu->filename, cur_filename)) { zconf_error("'%s' in different file than '%s'", - id->name, zconf_tokenname(starttoken)); + tokenname, expected_tokenname); fprintf(stderr, "%s:%d: location of the '%s'\n", - current_menu->file->name, current_menu->lineno, - zconf_tokenname(starttoken)); + current_menu->filename, current_menu->lineno, + expected_tokenname); yynerrs++; return false; } @@ -599,7 +561,7 @@ static void zconfprint(const char *err, ...) { va_list ap; - fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + fprintf(stderr, "%s:%d: ", cur_filename, cur_lineno); va_start(ap, err); vfprintf(stderr, err, ap); va_end(ap); @@ -611,7 +573,7 @@ static void zconf_error(const char *err, ...) va_list ap; yynerrs++; - fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + fprintf(stderr, "%s:%d: ", cur_filename, cur_lineno); va_start(ap, err); vfprintf(stderr, err, ap); va_end(ap); @@ -620,7 +582,7 @@ static void zconf_error(const char *err, ...) static void yyerror(const char *err) { - fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err); + fprintf(stderr, "%s:%d: %s\n", cur_filename, cur_lineno, err); } static void print_quoted_string(FILE *out, const char *str) @@ -714,6 +676,10 @@ static void print_symbol(FILE *out, struct menu *menu) print_quoted_string(out, prop->text); fputc('\n', out); break; + case P_SYMBOL: + fputs( " symbol ", out); + fprintf(out, "%s\n", prop->menu->sym->name); + break; default: fprintf(out, " unknown prop %d!\n", prop->type); break; @@ -773,10 +739,3 @@ void zconfdump(FILE *out) } } } - -#include "zconf.lex.c" -#include "util.c" -#include "confdata.c" -#include "expr.c" -#include "symbol.c" -#include "menu.c" diff --git a/support/kconfig/patches/01-kconfig-kernel-to-buildroot.patch b/support/kconfig/patches/01-kconfig-kernel-to-buildroot.patch index 43ae61a9c7..57d2488f9a 100644 --- a/support/kconfig/patches/01-kconfig-kernel-to-buildroot.patch +++ b/support/kconfig/patches/01-kconfig-kernel-to-buildroot.patch @@ -1,15 +1,20 @@ ---- - confdata.c | 4 ++-- - gconf.glade | 2 +- - mconf.c | 4 ++-- - zconf.tab.c_shipped | 2 +- - zconf.y | 2 +- - 5 files changed, 7 insertions(+), 7 deletions(-) - -Index: kconfig/gconf.glade -=================================================================== ---- kconfig.orig/gconf.glade -+++ kconfig/gconf.glade +diff --git a/confdata.c b/confdata.c +index 0e35c48..00a629b 100644 +--- a/confdata.c ++++ b/confdata.c +@@ -207,7 +207,7 @@ static void conf_message(const char *fmt, ...) + + const char *conf_get_configname(void) + { +- char *name = getenv("KCONFIG_CONFIG"); ++ char *name = getenv("BR2_CONFIG"); + + return name ? name : ".config"; + } +diff --git a/gconf.glade b/gconf.glade +index aa483cb..6cbc1bb 100644 +--- a/gconf.glade ++++ b/gconf.glade @@ -4,7 +4,7 @@ @@ -19,85 +24,37 @@ Index: kconfig/gconf.glade GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False -Index: kconfig/mconf.c -=================================================================== ---- kconfig.orig/mconf.c -+++ kconfig/mconf.c -@@ -176,9 +176,9 @@ menu_instructions[] = N_( +diff --git a/mconf.c b/mconf.c +index c096909..420e173 100644 +--- a/mconf.c ++++ b/mconf.c +@@ -184,9 +184,9 @@ menu_instructions[] = "Arrow keys navigate the menu. " " selects submenus ---> (or empty submenus ----). " "Highlighted letters are hotkeys. " - "Pressing includes, excludes, modularizes features. " -+ "Pressing selects a feature, while excludes a feature. " ++ "Pressing selects a feature, while excludes a features. " "Press to exit, for Help, for Search. " -- "Legend: [*] built-in [ ] excluded module < > module capable"), -+ "Legend: [*] feature is selected [ ] feature is excluded"), - radiolist_instructions[] = N_( +- "Legend: [*] built-in [ ] excluded module < > module capable", ++ "Legend: [*] feature is selected [ ] feature is excluded", + radiolist_instructions[] = "Use the arrow keys to navigate this window or " "press the hotkey of the item you wish to select " -@@ -962,7 +962,7 @@ static int handle_exit(void) +@@ -914,7 +914,7 @@ static int handle_exit(void) if (conf_get_changed()) res = dialog_yesno(NULL, - _("Do you wish to save your new configuration?\n" -- "(Press to continue kernel configuration.)"), -+ "(Press to continue Buildroot configuration.)"), + "Do you wish to save your new configuration?\n" +- "(Press to continue kernel configuration.)", ++ "(Press to continue Buildroot configuration.)", 6, 60); else res = -1; -Index: kconfig/zconf.tab.c_shipped -=================================================================== ---- kconfig.orig/zconf.tab.c_shipped -+++ kconfig/zconf.tab.c_shipped -@@ -1515,7 +1515,7 @@ yyreduce: - * later regardless of whether it comes from the 'prompt' in - * mainmenu_stmt or here - */ -- menu_add_prompt(P_MENU, xstrdup("Linux Kernel Configuration"), NULL); -+ menu_add_prompt(P_MENU, xstrdup("Buildroot Configuration"), NULL); - } - - break; -Index: kconfig/zconf.y -=================================================================== ---- kconfig.orig/zconf.y -+++ kconfig/zconf.y -@@ -127,7 +127,7 @@ no_mainmenu_stmt: /* empty */ - * later regardless of whether it comes from the 'prompt' in - * mainmenu_stmt or here - */ -- menu_add_prompt(P_MENU, xstrdup("Linux Kernel Configuration"), NULL); -+ menu_add_prompt(P_MENU, xstrdup("Buildroot Configuration"), NULL); - }; - - -Index: kconfig/confdata.c -=================================================================== ---- kconfig.orig/confdata.c -+++ kconfig/confdata.c -@@ -30,7 +30,7 @@ static void conf_message(const char *fmt - static const char *conf_filename; - static int conf_lineno, conf_warnings; - --const char conf_defname[] = "arch/$ARCH/defconfig"; -+const char conf_defname[] = ".defconfig"; - - static void conf_warning(const char *fmt, ...) - { -@@ -69,7 +69,7 @@ static void conf_message(const char *fmt - - const char *conf_get_configname(void) - { -- char *name = getenv("KCONFIG_CONFIG"); -+ char *name = getenv("BR2_CONFIG"); - - return name ? name : ".config"; - } -Index: kconfig/qconf.cc -=================================================================== ---- kconfig.orig/qconf.cc -+++ kconfig/qconf.cc -@@ -55,7 +55,7 @@ static inline QString qgettext(const QSt - } +diff --git a/qconf.cc b/qconf.cc +index c6c42c0..50c3ccd 100644 +--- a/qconf.cc ++++ b/qconf.cc +@@ -34,7 +34,7 @@ static ConfigSettings *configSettings; + QAction *ConfigMainWindow::saveAction; ConfigSettings::ConfigSettings() - : QSettings("kernel.org", "qconf") diff --git a/support/kconfig/patches/06-br-build-system-integration.patch b/support/kconfig/patches/06-br-build-system-integration.patch index 35420cbb15..b021ebf5c9 100644 --- a/support/kconfig/patches/06-br-build-system-integration.patch +++ b/support/kconfig/patches/06-br-build-system-integration.patch @@ -1,74 +1,53 @@ -Index: kconfig/Makefile -=================================================================== ---- kconfig.orig/Makefile -+++ kconfig/Makefile -@@ -205,7 +205,35 @@ qconf-cxxobjs := qconf.o - qconf-objs := zconf.tab.o - gconf-objs := gconf.o zconf.tab.o - --hostprogs-y := conf nconf mconf kxgettext qconf gconf -+hostprogs-y := conf -+ +diff --git a/Makefile b/Makefile +index ea1bf3b..5697d38 100644 +--- a/Makefile ++++ b/Makefile +@@ -173,6 +173,7 @@ hostprogs += conf + conf-objs := conf.o $(common-objs) + + # nconf: Used for the nconfig target based on ncurses +ifeq ($(MAKECMDGOALS),nconf) -+ hostprogs-y += nconf + hostprogs += nconf + nconf-objs := nconf.o nconf.gui.o mnconf-common.o $(common-objs) + +@@ -182,8 +183,10 @@ HOSTCFLAGS_nconf.gui.o = $(call read-file, $(obj)/nconf-cflags) + + $(obj)/nconf: | $(obj)/nconf-libs + $(obj)/nconf.o $(obj)/nconf.gui.o: | $(obj)/nconf-cflags +endif -+ + + # mconf: Used for the menuconfig target based on lxdialog +ifeq ($(MAKECMDGOALS),mconf) -+ hostprogs-y += mconf -+endif -+ -+ifeq ($(MAKECMDGOALS),update-po-config) -+ hostprogs-y += kxgettext -+endif -+ -+ifeq ($(MAKECMDGOALS),qconf) -+ qconf-target := 1 -+endif -+ -+ifeq ($(MAKECMDGOALS),gconf) -+ gconf-target := 1 -+endif -+ -+ifeq ($(qconf-target),1) -+ hostprogs-y += qconf -+endif -+ -+ifeq ($(gconf-target),1) -+ hostprogs-y += gconf -+endif + hostprogs += mconf + lxdialog := $(addprefix lxdialog/, \ + checklist.o inputbox.o menubox.o textbox.o util.o yesno.o) +@@ -195,8 +198,10 @@ $(foreach f, mconf.o $(lxdialog), \ - targets += zconf.lex.c - clean-files := qconf.moc .tmp_qtcheck .tmp_gtkcheck -@@ -243,7 +271,7 @@ HOSTLOADLIBES_nconf = $(shell \ - || echo "-lmenu -lpanel -lncurses" ) - $(obj)/qconf.o: $(obj)/.tmp_qtcheck + $(obj)/mconf: | $(obj)/mconf-libs + $(addprefix $(obj)/, mconf.o $(lxdialog)): | $(obj)/mconf-cflags ++endif --ifeq ($(MAKECMDGOALS),xconfig) + # qconf: Used for the xconfig target based on Qt +ifeq ($(MAKECMDGOALS),qconf) - $(obj)/.tmp_qtcheck: $(src)/Makefile - -include $(obj)/.tmp_qtcheck + hostprogs += qconf + qconf-cxxobjs := qconf.o qconf-moc.o + qconf-objs := images.o $(common-objs) +@@ -214,8 +219,10 @@ $(obj)/qconf-moc.cc: $(src)/qconf.h FORCE | $(obj)/qconf-bin + $(call if_changed,moc) -@@ -270,9 +298,8 @@ $(obj)/.tmp_qtcheck: - echo "KC_QT_MOC=$$moc" >> $@ - endif + targets += qconf-moc.cc ++endif + # gconf: Used for the gconfig target based on GTK+ +ifeq ($(MAKECMDGOALS),gconf) - $(obj)/gconf.o: $(obj)/.tmp_gtkcheck -- --ifeq ($(MAKECMDGOALS),gconfig) - -include $(obj)/.tmp_gtkcheck + hostprogs += gconf + gconf-objs := gconf.o images.o $(common-objs) - # GTK+ needs some extra effort, too... -@@ -300,11 +327,8 @@ $(obj)/zconf.tab.o: $(obj)/zconf.lex.c +@@ -224,6 +231,7 @@ HOSTCFLAGS_gconf.o = $(call read-file, $(obj)/gconf-cflags) - $(obj)/qconf.o: $(obj)/qconf.moc - --quiet_cmd_moc = MOC $@ -- cmd_moc = $(KC_QT_MOC) -i $< -o $@ -- - $(obj)/%.moc: $(src)/%.h $(obj)/.tmp_qtcheck -- $(call cmd,moc) -+ $(KC_QT_MOC) -i $< -o $@ + $(obj)/gconf: | $(obj)/gconf-libs + $(obj)/gconf.o: | $(obj)/gconf-cflags ++endif - # Extract gconf menu items for i18n support - $(obj)/gconf.glade.h: $(obj)/gconf.glade + # check if necessary packages are available, and configure build flags + cmd_conf_cfg = $< $(addprefix $(obj)/$*conf-, cflags libs bin); touch $(obj)/$*conf-bin diff --git a/support/kconfig/patches/10-br-build-system.patch b/support/kconfig/patches/10-br-build-system.patch index abf2463691..b40e5e9160 100644 --- a/support/kconfig/patches/10-br-build-system.patch +++ b/support/kconfig/patches/10-br-build-system.patch @@ -1,13 +1,34 @@ ---- - Makefile.br | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - foo.h | 12 ++++++++++++ - 2 files changed, 65 insertions(+) - -Index: kconfig/Makefile.br -=================================================================== +diff --git a/Makefile b/Makefile +index 5697d38..f5f934d 100644 +--- a/Makefile ++++ b/Makefile +@@ -3,6 +3,11 @@ + # Kernel configuration targets + # These targets are used from top-level makefile + ++HOSTPKG_CONFIG = pkg-config ++export HOSTPKG_CONFIG ++ ++include $(src)/Kbuild.include ++ + ifdef KBUILD_KCONFIG + Kconfig := $(KBUILD_KCONFIG) + else +@@ -234,7 +239,7 @@ $(obj)/gconf.o: | $(obj)/gconf-cflags + endif + + # check if necessary packages are available, and configure build flags +-cmd_conf_cfg = $< $(addprefix $(obj)/$*conf-, cflags libs bin); touch $(obj)/$*conf-bin ++cmd_conf_cfg = $(src)/$< $(addprefix $(obj)/$*conf-, cflags libs bin); touch $(obj)/$*conf-bin + + $(obj)/%conf-cflags $(obj)/%conf-libs $(obj)/%conf-bin: $(src)/%conf-cfg.sh + $(call cmd,conf_cfg) +diff --git a/Makefile.br b/Makefile.br +new file mode 100644 +index 0000000..d163256 --- /dev/null -+++ kconfig/Makefile.br -@@ -0,0 +1,53 @@ ++++ b/Makefile.br +@@ -0,0 +1,55 @@ +src := . +top_srcdir=../../ +top_builddir=../../ @@ -15,12 +36,11 @@ Index: kconfig/Makefile.br +obj ?= . + +include Makefile -+#HOSTCFLAGS+=-Dinline="" -include foo.h +-include $(obj)/.depend +$(obj)/.depend: $(wildcard *.h *.c) + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) -MM *.c > $@ 2>/dev/null || : + -+__hostprogs := $(sort $(hostprogs-y) $(hostprogs-m)) ++__hostprogs := $(sort $(hostprogs)) +host-csingle := $(foreach m,$(__hostprogs),$(if $($(m)-objs),,$(m))) +host-cmulti := $(foreach m,$(__hostprogs),\ + $(if $($(m)-cxxobjs),,$(if $($(m)-objs),$(m)))) @@ -35,10 +55,10 @@ Index: kconfig/Makefile.br + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< -o $(obj)/$@ + +$(host-cmulti): %: $(host-cobjs) $(host-cshlib) -+ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ ++ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLDLIBS_$(@F)) -o $(obj)/$@ + +$(host-cxxmulti): %: $(host-cxxobjs) $(host-cobjs) $(host-cshlib) -+ $(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ ++ $(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLDLIBS_$(@F)) -o $(obj)/$@ + +$(obj)/%.o: %.c + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) -c $< -o $@ @@ -49,6 +69,9 @@ Index: kconfig/Makefile.br +$(obj)/%.o: %.cc + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$(@F)) -c $< -o $@ + ++$(obj)/%.o: $(obj)/%.cc ++ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$(@F)) -c $< -o $@ ++ +$(obj)/%:: $(src)/%_shipped + $(Q)cat $< > $@ + @@ -61,20 +84,3 @@ Index: kconfig/Makefile.br + +FORCE: +.PHONY: FORCE clean distclean -Index: kconfig/foo.h -=================================================================== ---- /dev/null -+++ kconfig/foo.h -@@ -0,0 +1,12 @@ -+#ifndef __KCONFIG_FOO_H -+#define __KCONFIG_FOO_H -+ -+#ifndef __APPLE__ -+#include -+#endif -+#include -+ -+#ifndef PATH_MAX -+#define PATH_MAX 1024 -+#endif -+#endif /* __KCONFIG_FOO_H */ diff --git a/support/kconfig/patches/11-use-mktemp-for-lxdialog.patch b/support/kconfig/patches/11-use-mktemp-for-lxdialog.patch deleted file mode 100644 index 387c633ae2..0000000000 --- a/support/kconfig/patches/11-use-mktemp-for-lxdialog.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- - lxdialog/check-lxdialog.sh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -Index: kconfig/lxdialog/check-lxdialog.sh -=================================================================== ---- kconfig.orig/lxdialog/check-lxdialog.sh -+++ kconfig/lxdialog/check-lxdialog.sh -@@ -41,7 +41,7 @@ ccflags() - } - - # Temp file, try to clean up after us --tmp=.lxdialog.tmp -+tmp=$(mktemp) - trap "rm -f $tmp" 0 1 2 3 15 - - # Check if we can link to ncurses diff --git a/support/kconfig/patches/12-fix-glade-file-path.patch b/support/kconfig/patches/12-fix-glade-file-path.patch index 7d5941fc9e..0bcb04e62d 100644 --- a/support/kconfig/patches/12-fix-glade-file-path.patch +++ b/support/kconfig/patches/12-fix-glade-file-path.patch @@ -1,12 +1,8 @@ ---- - gconf.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -Index: kconfig/gconf.c -=================================================================== ---- kconfig.orig/gconf.c -+++ kconfig/gconf.c -@@ -1462,7 +1462,7 @@ int main(int ac, char *av[]) +diff --git a/gconf.c b/gconf.c +index 9709aca..d24cebd 100644 +--- a/gconf.c ++++ b/gconf.c +@@ -1452,7 +1452,7 @@ int main(int ac, char *av[]) /* Determine GUI path */ env = getenv(SRCTREE); if (env) diff --git a/support/kconfig/patches/14-support-out-of-tree-config.patch b/support/kconfig/patches/14-support-out-of-tree-config.patch index a3b33ba688..02d438429e 100644 --- a/support/kconfig/patches/14-support-out-of-tree-config.patch +++ b/support/kconfig/patches/14-support-out-of-tree-config.patch @@ -1,36 +1,18 @@ ---- - conf.c | 1 - confdata.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++--------------- - util.c | 16 +++++++++++++-- - 3 files changed, 61 insertions(+), 18 deletions(-) - -Index: kconfig/conf.c -=================================================================== ---- kconfig.orig/conf.c -+++ kconfig/conf.c -@@ -565,7 +565,6 @@ int main(int ac, char **av) - } - name = av[optind]; - conf_parse(name); -- //zconfdump(stdout); - if (sync_kconfig) { - name = conf_get_configname(); - if (stat(name, &tmpstat)) { -Index: kconfig/confdata.c -=================================================================== ---- kconfig.orig/confdata.c -+++ kconfig/confdata.c -@@ -13,6 +13,7 @@ +diff --git a/confdata.c b/confdata.c +index 00a629b..eb952e8 100644 +--- a/confdata.c ++++ b/confdata.c +@@ -17,6 +17,7 @@ #include #include #include +#include + #include "internal.h" #include "lkc.h" +@@ -214,9 +215,7 @@ const char *conf_get_configname(void) -@@ -76,9 +77,7 @@ const char *conf_get_configname(void) - - const char *conf_get_autoconfig_name(void) + static const char *conf_get_autoconfig_name(void) { - char *name = getenv("KCONFIG_AUTOCONFIG"); - @@ -38,170 +20,4 @@ Index: kconfig/confdata.c + return getenv("KCONFIG_AUTOCONFIG"); } - static char *conf_expand_value(const char *in) -@@ -748,6 +747,9 @@ int conf_write(const char *name) - char dirname[PATH_MAX+1], tmpname[PATH_MAX+1], newname[PATH_MAX+1]; - char *env; - -+ if (!name) -+ name = conf_get_configname(); -+ - dirname[0] = 0; - if (name && name[0]) { - struct stat st; -@@ -842,6 +844,7 @@ static int conf_split_config(void) - { - const char *name; - char path[PATH_MAX+1]; -+ char *opwd, *dir, *_name; - char *s, *d, c; - struct symbol *sym; - struct stat sb; -@@ -851,8 +854,20 @@ static int conf_split_config(void) - conf_read_simple(name, S_DEF_AUTO); - sym_calc_value(modules_sym); - -- if (chdir("include/config")) -- return 1; -+ opwd = malloc(256); -+ _name = strdup(name); -+ if (opwd == NULL || _name == NULL) -+ return 1; -+ opwd = getcwd(opwd, 256); -+ dir = dirname(_name); -+ if (dir == NULL) { -+ res = 1; -+ goto err; -+ } -+ if (chdir(dir)) { -+ res = 1; -+ goto err; -+ } - - res = 0; - for_all_symbols(i, sym) { -@@ -945,9 +960,11 @@ static int conf_split_config(void) - close(fd); - } - out: -- if (chdir("../..")) -- return 1; -- -+ if (chdir(opwd)) -+ res = 1; -+err: -+ free(opwd); -+ free(_name); - return res; - } - -@@ -957,25 +974,38 @@ int conf_write_autoconf(void) - const char *name; - FILE *out, *tristate, *out_h; - int i; -+ char dir[PATH_MAX+1], buf[PATH_MAX+1]; -+ char *s; -+ -+ strcpy(dir, conf_get_configname()); -+ s = strrchr(dir, '/'); -+ if (s) -+ s[1] = 0; -+ else -+ dir[0] = 0; - - sym_clear_all_valid(); - -- file_write_dep("include/config/auto.conf.cmd"); -+ sprintf(buf, "%s.config.cmd", dir); -+ file_write_dep(buf); - - if (conf_split_config()) - return 1; - -- out = fopen(".tmpconfig", "w"); -+ sprintf(buf, "%s.tmpconfig", dir); -+ out = fopen(buf, "w"); - if (!out) - return 1; - -- tristate = fopen(".tmpconfig_tristate", "w"); -+ sprintf(buf, "%s.tmpconfig_tristate", dir); -+ tristate = fopen(buf, "w"); - if (!tristate) { - fclose(out); - return 1; - } - -- out_h = fopen(".tmpconfig.h", "w"); -+ sprintf(buf, "%s.tmpconfig.h", dir); -+ out_h = fopen(buf, "w"); - if (!out_h) { - fclose(out); - fclose(tristate); -@@ -1007,19 +1037,22 @@ int conf_write_autoconf(void) - name = getenv("KCONFIG_AUTOHEADER"); - if (!name) - name = "include/generated/autoconf.h"; -- if (rename(".tmpconfig.h", name)) -+ sprintf(buf, "%s.tmpconfig.h", dir); -+ if (rename(buf, name)) - return 1; - name = getenv("KCONFIG_TRISTATE"); - if (!name) - name = "include/config/tristate.conf"; -- if (rename(".tmpconfig_tristate", name)) -+ sprintf(buf, "%s.tmpconfig_tristate", dir); -+ if (rename(buf, name)) - return 1; - name = conf_get_autoconfig_name(); - /* - * This must be the last step, kbuild has a dependency on auto.conf - * and this marks the successful completion of the previous steps. - */ -- if (rename(".tmpconfig", name)) -+ sprintf(buf, "%s.tmpconfig", dir); -+ if (rename(buf, name)) - return 1; - - return 0; -Index: kconfig/util.c -=================================================================== ---- kconfig.orig/util.c -+++ kconfig/util.c -@@ -34,6 +34,8 @@ struct file *file_lookup(const char *nam - /* write a dependency file as used by kbuild to track dependencies */ - int file_write_dep(const char *name) - { -+ char *str; -+ char buf[PATH_MAX+1], buf2[PATH_MAX+1], dir[PATH_MAX+1]; - struct symbol *sym, *env_sym; - struct expr *e; - struct file *file; -@@ -41,7 +43,16 @@ int file_write_dep(const char *name) - - if (!name) - name = ".kconfig.d"; -- out = fopen("..config.tmp", "w"); -+ -+ strcpy(dir, conf_get_configname()); -+ str = strrchr(dir, '/'); -+ if (str) -+ str[1] = 0; -+ else -+ dir[0] = 0; -+ -+ sprintf(buf, "%s..config.tmp", dir); -+ out = fopen(buf, "w"); - if (!out) - return 1; - fprintf(out, "deps_config := \\\n"); -@@ -72,7 +83,8 @@ int file_write_dep(const char *name) - - fprintf(out, "\n$(deps_config): ;\n"); - fclose(out); -- rename("..config.tmp", name); -+ sprintf(buf2, "%s%s", dir, name); -+ rename(buf, buf2); - return 0; - } - + static const char *conf_get_autoheader_name(void) diff --git a/support/kconfig/patches/16-fix-space-to-de-select-options.patch b/support/kconfig/patches/16-fix-space-to-de-select-options.patch index 08f7ec5d95..2b7a4f5655 100644 --- a/support/kconfig/patches/16-fix-space-to-de-select-options.patch +++ b/support/kconfig/patches/16-fix-space-to-de-select-options.patch @@ -3,21 +3,21 @@ Author: Yann E. MORIN Date: Wed Nov 13 22:45:02 2013 +0100 support/kconfig: fix 'space' to (de)select options - + In case a menu has comment without letters/numbers (eg. characters matching the regexp '^[^[:alpha:][:digit:]]+$', for example - or *), hitting space will cycle through those comments, rather than selecting/deselecting the currently-highlighted option. - + This is the behaviour of hitting any letter/digit: jump to the next option which prompt starts with that letter. The only letters that do not behave as such are 'y' 'm' and 'n'. Prompts that start with one of those three letters are instead matched on the first letter that is not 'y', 'm' or 'n'. - + Fix that by treating 'space' as we treat y/m/n, ie. as an action key, not as shortcut to jump to prompt. - + Signed-off-by: "Yann E. MORIN" Cc: Thomas Petazzoni Cc: Peter Korsgaard @@ -25,12 +25,11 @@ Date: Wed Nov 13 22:45:02 2013 +0100 Cc: Thomas De Schampheleire --- Note: I'll be running this upstream soonish. - -Index: kconfig/lxdialog/menubox.c -=================================================================== ---- kconfig.orig/lxdialog/menubox.c -+++ kconfig/lxdialog/menubox.c -@@ -285,7 +285,7 @@ do_resize: +diff --git a/lxdialog/menubox.c b/lxdialog/menubox.c +index 6e6244d..d4c19b7 100644 +--- a/lxdialog/menubox.c ++++ b/lxdialog/menubox.c +@@ -264,7 +264,7 @@ do_resize: if (key < 256 && isalpha(key)) key = tolower(key); diff --git a/support/kconfig/patches/17-backport-kecho.patch b/support/kconfig/patches/17-backport-kecho.patch deleted file mode 100644 index 9d13876616..0000000000 --- a/support/kconfig/patches/17-backport-kecho.patch +++ /dev/null @@ -1,26 +0,0 @@ -This commit added kecho to scripts/Kbuild.include (and doc). -Backported just Kbuild.include part to Makefile - -commit 5410ecc0def8955ab99810c5626cc7e156991896 -Author: Mike Frysinger -Date: Thu Nov 6 03:31:34 2008 -0500 - - kbuild: introduce $(kecho) convenience echo - -Index: kconfig/Makefile -=================================================================== ---- kconfig.orig/Makefile -+++ kconfig/Makefile -@@ -6,6 +6,12 @@ - PHONY += xconfig gconfig menuconfig config syncconfig update-po-config \ - localmodconfig localyesconfig - -+# Easy method for doing a status message -+ kecho := : -+ quiet_kecho := echo -+silent_kecho := : -+kecho := $($(quiet)kecho) -+ - ifdef KBUILD_KCONFIG - Kconfig := $(KBUILD_KCONFIG) - else diff --git a/support/kconfig/patches/18-merge-config.sh-create-temporary-files-in-tmp.patch b/support/kconfig/patches/18-merge-config.sh-create-temporary-files-in-tmp.patch index f2a261f308..342d6359f6 100644 --- a/support/kconfig/patches/18-merge-config.sh-create-temporary-files-in-tmp.patch +++ b/support/kconfig/patches/18-merge-config.sh-create-temporary-files-in-tmp.patch @@ -11,17 +11,18 @@ Date: Mon, 7 Dec 2015 12:08:45 -0200 Signed-off-by: Henrique Marks Signed-off-by: Carlos Santos Signed-off-by: Peter Korsgaard - -Index: kconfig/merge_config.sh -=================================================================== ---- kconfig.orig/merge_config.sh -+++ kconfig/merge_config.sh -@@ -100,7 +100,7 @@ fi +diff --git a/merge_config.sh b/merge_config.sh +index 902eb42..05737ba 100755 +--- a/merge_config.sh ++++ b/merge_config.sh +@@ -120,8 +120,8 @@ MERGE_LIST=$* + SED_CONFIG_EXP1="s/^\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\)=.*/\1/p" + SED_CONFIG_EXP2="s/^# \(${CONFIG_PREFIX}[a-zA-Z0-9_]*\) is not set$/\1/p" - MERGE_LIST=$* - SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(CONFIG_[a-zA-Z0-9_]*\)[= ].*/\2/p" -TMP_FILE=$(mktemp ./.tmp.config.XXXXXXXXXX) +-MERGE_FILE=$(mktemp ./.merge_tmp.config.XXXXXXXXXX) +TMP_FILE=$(mktemp -t .tmp.config.XXXXXXXXXX) ++MERGE_FILE=$(mktemp -t .merge_tmp.config.XXXXXXXXXX) echo "Using $INITFILE as base" - cat $INITFILE > $TMP_FILE + diff --git a/support/kconfig/patches/19-merge_config.sh-add-br2-external-support.patch b/support/kconfig/patches/19-merge_config.sh-add-br2-external-support.patch index 1d0ef323bd..0b4814da1e 100644 --- a/support/kconfig/patches/19-merge_config.sh-add-br2-external-support.patch +++ b/support/kconfig/patches/19-merge_config.sh-add-br2-external-support.patch @@ -12,20 +12,20 @@ Date: Tue, 9 Jan 2018 14:37:43 +0300 Acked-by: "Yann E. MORIN" Signed-off-by: Peter Korsgaard -Index: kconfig/merge_config.sh -=================================================================== ---- kconfig.orig/merge_config.sh -+++ kconfig/merge_config.sh -@@ -33,6 +33,7 @@ usage() { - echo " -n use allnoconfig instead of alldefconfig" - echo " -r list redundant entries when merging fragments" +diff --git a/merge_config.sh b/merge_config.sh +index 05737ba..a5c0348 100755 +--- a/merge_config.sh ++++ b/merge_config.sh +@@ -30,6 +30,7 @@ usage() { echo " -O dir to put generated output files. Consider setting \$KCONFIG_CONFIG instead." + echo " -s strict mode. Fail if the fragment redefines any value." + echo " -Q disable warning messages for overridden options." + echo " -e colon-separated list of br2-external trees to use (optional)" + echo + echo "Used prefix: '$CONFIG_PREFIX'. You can redefine it with \$CONFIG_ environment variable." } - - RUNMAKE=true -@@ -71,6 +72,11 @@ while true; do - shift 2 +@@ -89,6 +90,11 @@ while true; do + shift continue ;; + "-e") @@ -36,7 +36,7 @@ Index: kconfig/merge_config.sh *) break ;; -@@ -151,7 +157,7 @@ fi +@@ -194,7 +200,7 @@ fi # Use the merged file as the starting point for: # alldefconfig: Fills in any missing symbols with Kconfig default # allnoconfig: Fills in any missing symbols with # CONFIG_* is not set diff --git a/support/kconfig/patches/20-merge_config.sh-Allow-to-define-config-prefix.patch b/support/kconfig/patches/20-merge_config.sh-Allow-to-define-config-prefix.patch deleted file mode 100644 index 645043b163..0000000000 --- a/support/kconfig/patches/20-merge_config.sh-Allow-to-define-config-prefix.patch +++ /dev/null @@ -1,31 +0,0 @@ -Index: kconfig/merge_config.sh -=================================================================== ---- kconfig.orig/merge_config.sh -+++ kconfig/merge_config.sh -@@ -34,12 +34,16 @@ usage() { - echo " -r list redundant entries when merging fragments" - echo " -O dir to put generated output files. Consider setting \$KCONFIG_CONFIG instead." - echo " -e colon-separated list of br2-external trees to use (optional)" -+ echo -+ echo "Used prefix: '$CONFIG_PREFIX'. You can redefine it with \$CONFIG_ -+ environment variable." - } - - RUNMAKE=true - ALLTARGET=alldefconfig - WARNREDUN=false - OUTPUT=. -+CONFIG_PREFIX=${CONFIG_-CONFIG_} - - while true; do - case $1 in -@@ -105,7 +109,8 @@ if [ ! -r "$INITFILE" ]; then - fi - - MERGE_LIST=$* --SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(CONFIG_[a-zA-Z0-9_]*\)[= ].*/\2/p" -+SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\)[= ].*/\2/p" -+ - TMP_FILE=$(mktemp -t .tmp.config.XXXXXXXXXX) - - echo "Using $INITFILE as base" diff --git a/support/kconfig/patches/21-Avoid-false-positive-matches-from-comment-lines.patch b/support/kconfig/patches/21-Avoid-false-positive-matches-from-comment-lines.patch deleted file mode 100644 index c11144e47e..0000000000 --- a/support/kconfig/patches/21-Avoid-false-positive-matches-from-comment-lines.patch +++ /dev/null @@ -1,32 +0,0 @@ -Index: kconfig/merge_config.sh -=================================================================== ---- kconfig.orig/merge_config.sh -+++ kconfig/merge_config.sh -@@ -109,7 +109,8 @@ if [ ! -r "$INITFILE" ]; then - fi - - MERGE_LIST=$* --SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\)[= ].*/\2/p" -+SED_CONFIG_EXP1="s/^\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\)=.*/\1/p" -+SED_CONFIG_EXP2="s/^# \(${CONFIG_PREFIX}[a-zA-Z0-9_]*\) is not set$/\1/p" - - TMP_FILE=$(mktemp -t .tmp.config.XXXXXXXXXX) - -@@ -123,7 +124,7 @@ for MERGE_FILE in $MERGE_LIST ; do - echo "The merge file '$MERGE_FILE' does not exist. Exit." >&2 - exit 1 - fi -- CFG_LIST=$(sed -n "$SED_CONFIG_EXP" $MERGE_FILE) -+ CFG_LIST=$(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $MERGE_FILE) - - for CFG in $CFG_LIST ; do - grep -q -w $CFG $TMP_FILE || continue -@@ -166,7 +167,7 @@ make KCONFIG_ALLCONFIG=$TMP_FILE $EXTERN - - - # Check all specified config values took (might have missed-dependency issues) --for CFG in $(sed -n "$SED_CONFIG_EXP" $TMP_FILE); do -+for CFG in $(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $TMP_FILE); do - - REQUESTED_VAL=$(grep -w -e "$CFG" $TMP_FILE) - ACTUAL_VAL=$(grep -w -e "$CFG" "$KCONFIG_CONFIG") diff --git a/support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch b/support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch deleted file mode 100644 index 41081bb45d..0000000000 --- a/support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 3ae91337b53fa3ccf0bad7f181fcaf483fab22ee Mon Sep 17 00:00:00 2001 -From: Robert Marko -Date: Wed, 3 Apr 2024 14:18:07 +0200 -Subject: [PATCH] kconfig/lxdialog: fix check() with GCC14 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -GCC14 now treats implicit int types as error so when check() from -check-lxdialog.sh is called to check whether we can link against ncurses -it will fail silently and the help text indicating to install ncurses is -printed. - -However, this is not due to missing ncurses but once the stderr redirect -to /dev/null is removed we can see the root cause: -:2:1: error: return type defaults to ?int? [-Wimplicit-int] - -So, in order for menuconfig to work with GCC14 lets just specify the -return type of main() as int. - -Signed-off-by: Robert Marko -Reviewed-by: Petr Vorel -Tested-by: Petr Vorel ---- - kconfig/lxdialog/check-lxdialog.sh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/kconfig/lxdialog/check-lxdialog.sh b/kconfig/lxdialog/check-lxdialog.sh -index 16cd9a3186..27d6c30a57 100755 ---- a/kconfig/lxdialog/check-lxdialog.sh -+++ b/kconfig/lxdialog/check-lxdialog.sh -@@ -48,7 +48,7 @@ trap "rm -f $tmp" 0 1 2 3 15 - check() { - $cc -x c - -o $tmp 2>/dev/null <<'EOF' - #include CURSES_LOC --main() {} -+int main() {} - EOF - if [ $? != 0 ]; then - echo " *** Unable to find the ncurses libraries or the" 1>&2 --- -2.44.0 - diff --git a/support/kconfig/patches/23-Revert-kconfig-allow-only-config-comment-and-if-insi.patch b/support/kconfig/patches/23-Revert-kconfig-allow-only-config-comment-and-if-insi.patch new file mode 100644 index 0000000000..d5a011bb6e --- /dev/null +++ b/support/kconfig/patches/23-Revert-kconfig-allow-only-config-comment-and-if-insi.patch @@ -0,0 +1,956 @@ +Revert "kconfig: allow only 'config', 'comment', and 'if' inside 'choice'" + +This reverts linux mainline commit 09d5873e4d1f70202314b5fe40160f9b14b9d2d0 +as applied to buildroot support/kconfig (additional update imported +parser.tab.c_shipped). + +Original patch header: + +The code block surrounded by 'if' ... 'endif' is reduced into if_stmt, +which is accepted in the 'choice' context. Therefore, you can write any +statements within a choice block by wrapping 'if y' ... 'end'. + +For example, you can create a menu inside a choice, like follows: + +---------------->8---------------- + choice + prompt "choice" + + config A + bool "A" + + config B + bool "B" + + if y + + menu "strange menu" + + config C + bool "C" + + endmenu + + endif + + endchoice +---------------->8---------------- + +I want to change such a weird structure into a syntax error. + +In fact, the USB gadget Kconfig had used nested 'choice' for no good +reason until commit df8df5e4bc37 ("usb: get rid of 'choice' for +legacy gadget drivers") killed it. + +I think the 'source' inside 'choice' is on the fence. It is at least +gramatically sensible as long as the included file contains only +bool/tristate configs. However, it makes the code unreadable, and people +tend to forget the fact that the file is included from the choice +block. Commit 10e5e6c24963 ("usb: gadget: move choice ... endchoice to +legacy/Kconfig") got rid of the only usecase. + +Going forward, you can only use 'config', 'comment', and 'if' inside +'choice'. This also recursively applies to 'if' blocks inside 'choice'. + +Signed-off-by: Masahiro Yamada +[Revert and applied to buildroot support/kconfig] +Signed-off-by: Peter Seiderer +diff --git a/parser.tab.c_shipped b/parser.tab.c_shipped +index 85234d0..092da33 100644 +--- a/parser.tab.c_shipped ++++ b/parser.tab.c_shipped +@@ -177,7 +177,7 @@ enum yysymbol_kind_t + YYSYMBOL_input = 51, /* input */ + YYSYMBOL_mainmenu_stmt = 52, /* mainmenu_stmt */ + YYSYMBOL_stmt_list = 53, /* stmt_list */ +- YYSYMBOL_stmt_list_in_choice = 54, /* stmt_list_in_choice */ ++ YYSYMBOL_common_stmt = 54, /* common_stmt */ + YYSYMBOL_config_entry_start = 55, /* config_entry_start */ + YYSYMBOL_config_stmt = 56, /* config_stmt */ + YYSYMBOL_menuconfig_entry_start = 57, /* menuconfig_entry_start */ +@@ -193,10 +193,10 @@ enum yysymbol_kind_t + YYSYMBOL_type = 67, /* type */ + YYSYMBOL_logic_type = 68, /* logic_type */ + YYSYMBOL_default = 69, /* default */ +- YYSYMBOL_if_entry = 70, /* if_entry */ +- YYSYMBOL_if_end = 71, /* if_end */ +- YYSYMBOL_if_stmt = 72, /* if_stmt */ +- YYSYMBOL_if_stmt_in_choice = 73, /* if_stmt_in_choice */ ++ YYSYMBOL_choice_block = 70, /* choice_block */ ++ YYSYMBOL_if_entry = 71, /* if_entry */ ++ YYSYMBOL_if_end = 72, /* if_end */ ++ YYSYMBOL_if_stmt = 73, /* if_stmt */ + YYSYMBOL_menu = 74, /* menu */ + YYSYMBOL_menu_entry = 75, /* menu_entry */ + YYSYMBOL_menu_end = 76, /* menu_end */ +@@ -546,16 +546,16 @@ union yyalloc + /* YYFINAL -- State number of the termination state. */ + #define YYFINAL 6 + /* YYLAST -- Last index in YYTABLE. */ +-#define YYLAST 186 ++#define YYLAST 189 + + /* YYNTOKENS -- Number of terminals. */ + #define YYNTOKENS 50 + /* YYNNTS -- Number of nonterminals. */ + #define YYNNTS 46 + /* YYNRULES -- Number of rules. */ +-#define YYNRULES 103 ++#define YYNRULES 100 + /* YYNSTATES -- Number of states. */ +-#define YYNSTATES 182 ++#define YYNSTATES 177 + + /* YYMAXUTOK -- Last valid token kind. */ + #define YYMAXUTOK 304 +@@ -610,16 +610,16 @@ static const yytype_int8 yytranslate[] = + static const yytype_int16 yyrline[] = + { + 0, 108, 108, 108, 112, 117, 119, 120, 121, 122, +- 123, 124, 125, 126, 127, 128, 131, 133, 134, 135, +- 136, 141, 148, 153, 160, 169, 171, 172, 173, 176, +- 182, 188, 197, 203, 209, 215, 225, 234, 245, 253, +- 256, 258, 259, 260, 263, 269, 275, 281, 288, 289, +- 290, 291, 294, 295, 298, 299, 300, 304, 312, 320, +- 323, 328, 335, 340, 348, 351, 353, 354, 357, 366, +- 373, 376, 378, 383, 389, 407, 414, 421, 423, 428, +- 429, 430, 433, 434, 437, 438, 439, 440, 441, 442, +- 443, 444, 445, 446, 447, 451, 453, 454, 459, 462, +- 463, 464, 468, 469 ++ 123, 127, 128, 129, 130, 131, 132, 137, 144, 149, ++ 156, 165, 167, 168, 169, 172, 178, 184, 193, 199, ++ 205, 211, 221, 230, 241, 249, 252, 254, 255, 256, ++ 259, 265, 271, 277, 284, 285, 286, 287, 290, 291, ++ 294, 295, 296, 298, 300, 305, 313, 321, 326, 333, ++ 338, 346, 349, 351, 352, 355, 364, 371, 374, 376, ++ 381, 387, 405, 412, 419, 421, 426, 427, 428, 431, ++ 432, 435, 436, 437, 438, 439, 440, 441, 442, 443, ++ 444, 445, 449, 451, 452, 457, 460, 461, 462, 466, ++ 467 + }; + #endif + +@@ -644,15 +644,15 @@ static const char *const yytname[] = + "T_PROMPT", "T_RANGE", "T_SELECT", "T_SOURCE", "T_STRING", "T_TRISTATE", + "T_VISIBLE", "T_EOL", "T_ASSIGN_VAL", "T_OR", "T_AND", "T_EQUAL", + "T_UNEQUAL", "T_LESS", "T_LESS_EQUAL", "T_GREATER", "T_GREATER_EQUAL", +- "T_NOT", "$accept", "input", "mainmenu_stmt", "stmt_list", +- "stmt_list_in_choice", "config_entry_start", "config_stmt", +- "menuconfig_entry_start", "menuconfig_stmt", "config_option_list", +- "config_option", "choice", "choice_entry", "choice_end", "choice_stmt", +- "choice_option_list", "choice_option", "type", "logic_type", "default", +- "if_entry", "if_end", "if_stmt", "if_stmt_in_choice", "menu", +- "menu_entry", "menu_end", "menu_stmt", "menu_option_list", "source_stmt", +- "comment", "comment_stmt", "comment_option_list", "help_start", "help", +- "depends", "visible", "prompt_stmt_opt", "end", "if_expr", "expr", ++ "T_NOT", "$accept", "input", "mainmenu_stmt", "stmt_list", "common_stmt", ++ "config_entry_start", "config_stmt", "menuconfig_entry_start", ++ "menuconfig_stmt", "config_option_list", "config_option", "choice", ++ "choice_entry", "choice_end", "choice_stmt", "choice_option_list", ++ "choice_option", "type", "logic_type", "default", "choice_block", ++ "if_entry", "if_end", "if_stmt", "menu", "menu_entry", "menu_end", ++ "menu_stmt", "menu_option_list", "source_stmt", "comment", ++ "comment_stmt", "comment_option_list", "help_start", "help", "depends", ++ "visible", "prompt_stmt_opt", "end", "if_expr", "expr", + "nonconst_symbol", "symbol", "assignment_stmt", "assign_op", + "assign_val", YY_NULLPTR + }; +@@ -664,7 +664,7 @@ yysymbol_name (yysymbol_kind_t yysymbol) + } + #endif + +-#define YYPACT_NINF (-62) ++#define YYPACT_NINF (-67) + + #define yypact_value_is_default(Yyn) \ + ((Yyn) == YYPACT_NINF) +@@ -678,25 +678,24 @@ yysymbol_name (yysymbol_kind_t yysymbol) + STATE-NUM. */ + static const yytype_int16 yypact[] = + { +- 5, 30, 39, -62, 33, 13, -62, 62, 16, 17, +- 22, 41, 60, 2, 77, 60, 79, -62, -62, -62, +- -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, +- -62, -62, -62, -62, -62, 26, -62, -62, -62, 27, +- -62, 47, -62, 50, -62, 2, 2, -20, -62, 31, +- 52, 55, 59, 107, 107, 130, 155, 89, -6, 89, +- 86, -62, -62, 69, -62, -62, 8, -62, -62, 2, +- 2, 23, 23, 23, 23, 23, 23, -62, -62, -62, +- -62, -62, -62, -62, 81, 72, -62, 60, -62, 78, +- 111, 23, 60, -62, -62, -62, 113, -62, 2, 120, +- -62, -62, 60, 92, 123, -62, 113, -62, -62, 93, +- 94, 108, 115, -62, -62, -62, -62, -62, -62, -62, +- -62, 104, -62, -62, -62, -62, -62, -62, -62, 110, +- -62, -62, -62, -62, -62, -62, -62, 2, -62, 104, +- -62, 104, 23, 104, 104, 119, 15, -62, 104, -62, +- 104, 122, -62, -62, -62, -62, 155, 2, 124, 96, +- 125, 129, 104, 131, -62, -62, 135, 136, 138, -62, +- -62, 29, -62, -62, -62, -62, 139, -62, -62, -62, +- -62, -62 ++ 15, 13, 29, -67, 30, 19, -67, 59, 22, 11, ++ 23, 52, 60, -1, 62, 60, 63, -67, -67, -67, ++ -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, ++ -67, -67, -67, -67, -67, -67, 32, -67, -67, -67, ++ 37, -67, 33, -67, 47, -67, -1, -1, 34, -67, ++ 141, 48, 49, 53, 111, 111, 84, 142, 94, 6, ++ 94, 76, -67, -67, 58, -67, -67, 5, -67, -67, ++ -1, -1, 18, 18, 18, 18, 18, 18, -67, -67, ++ -67, -67, -67, -67, -67, 72, 67, -67, 60, -67, ++ 69, 97, 18, 60, -67, -67, -67, 104, -67, -1, ++ 110, -67, -67, 60, 79, 117, -67, 104, -67, -67, ++ 7, 88, 89, 93, -67, -67, -67, -67, -67, 114, ++ -67, -67, -67, -67, -67, -67, -67, 95, -67, -67, ++ -67, -67, -67, -67, -67, -1, -67, 114, -67, 114, ++ 18, 114, 114, 100, -6, -67, 114, -67, 114, 101, ++ -67, -67, -67, -1, 102, 40, 103, 112, 114, 115, ++ -67, -67, 116, 118, 122, -67, -9, -67, -67, -67, ++ -67, 126, -67, -67, -67, -67, -67 + }; + + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. +@@ -705,44 +704,43 @@ static const yytype_int16 yypact[] = + static const yytype_int8 yydefact[] = + { + 5, 0, 0, 5, 0, 0, 1, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 25, 9, 25, +- 12, 40, 16, 7, 5, 10, 65, 5, 11, 13, +- 71, 8, 6, 4, 15, 0, 100, 101, 99, 102, +- 36, 0, 95, 0, 97, 0, 0, 0, 96, 84, +- 0, 0, 0, 22, 24, 37, 0, 0, 62, 0, +- 70, 14, 103, 0, 69, 21, 0, 92, 57, 0, +- 0, 0, 0, 0, 0, 0, 0, 61, 23, 68, +- 52, 54, 55, 56, 0, 0, 50, 0, 49, 0, +- 0, 0, 0, 51, 53, 26, 77, 48, 0, 0, +- 28, 27, 0, 0, 0, 41, 77, 43, 42, 0, +- 0, 0, 0, 18, 39, 16, 19, 17, 38, 59, +- 58, 82, 67, 66, 64, 63, 72, 98, 91, 93, +- 94, 89, 90, 85, 86, 87, 88, 0, 73, 82, +- 35, 82, 0, 82, 82, 0, 82, 74, 82, 46, +- 82, 0, 20, 80, 81, 79, 0, 0, 0, 0, +- 0, 0, 82, 0, 78, 29, 0, 0, 0, 45, +- 60, 83, 76, 75, 33, 30, 0, 32, 31, 47, +- 44, 34 ++ 0, 0, 0, 0, 0, 0, 0, 6, 21, 13, ++ 21, 14, 36, 53, 7, 5, 11, 62, 5, 8, ++ 15, 68, 12, 16, 4, 10, 0, 97, 98, 96, ++ 99, 32, 0, 92, 0, 94, 0, 0, 0, 93, ++ 81, 0, 0, 0, 18, 20, 33, 0, 0, 59, ++ 0, 67, 9, 100, 0, 66, 17, 0, 89, 55, ++ 0, 0, 0, 0, 0, 0, 0, 0, 58, 19, ++ 65, 48, 50, 51, 52, 0, 0, 46, 0, 45, ++ 0, 0, 0, 0, 47, 49, 22, 74, 44, 0, ++ 0, 24, 23, 0, 0, 0, 37, 74, 39, 38, ++ 0, 0, 0, 0, 54, 35, 34, 57, 56, 79, ++ 64, 63, 61, 60, 69, 95, 88, 90, 91, 86, ++ 87, 82, 83, 84, 85, 0, 70, 79, 31, 79, ++ 0, 79, 79, 0, 79, 71, 79, 42, 79, 0, ++ 77, 78, 76, 0, 0, 0, 0, 0, 79, 0, ++ 75, 25, 0, 0, 0, 41, 80, 73, 72, 29, ++ 26, 0, 28, 27, 43, 40, 30 + }; + + /* YYPGOTO[NTERM-NUM]. */ + static const yytype_int16 yypgoto[] = + { +- -62, -62, -62, 14, 44, -62, -54, -62, -62, 160, +- -62, -62, -62, -62, -62, -62, -62, -62, 126, -62, +- -53, 24, -62, -62, -62, -62, -62, -62, -62, -62, +- -62, -52, -62, -62, 127, -13, -62, 80, -36, 7, +- -45, -7, -61, -62, -62, -62 ++ -67, -67, -67, 24, 92, -67, -67, -67, -67, 130, ++ -67, -67, -67, -67, -67, -67, -67, -67, 80, -67, ++ -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, ++ -67, -67, -67, -67, 119, -42, -67, 65, -15, 25, ++ -46, -10, -66, -67, -67, -67 + }; + + /* YYDEFGOTO[NTERM-NUM]. */ + static const yytype_uint8 yydefgoto[] = + { +- 0, 2, 3, 4, 56, 17, 18, 19, 20, 53, +- 95, 21, 22, 114, 23, 55, 105, 96, 97, 98, +- 24, 119, 25, 116, 26, 27, 124, 28, 58, 29, +- 30, 31, 60, 99, 100, 101, 123, 145, 120, 158, +- 47, 48, 49, 32, 39, 63 ++ 0, 2, 3, 4, 17, 18, 19, 20, 21, 54, ++ 96, 22, 23, 115, 24, 56, 106, 97, 98, 99, ++ 57, 25, 117, 26, 27, 28, 122, 29, 59, 30, ++ 31, 32, 61, 100, 101, 102, 121, 143, 116, 154, ++ 48, 49, 50, 33, 40, 64 + }; + + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If +@@ -750,48 +748,48 @@ static const yytype_uint8 yydefgoto[] = + number is the opposite. If YYTABLE_NINF, syntax error. */ + static const yytype_int16 yytable[] = + { +- 66, 67, 113, 115, 117, 43, 42, 44, 51, 84, +- 131, 132, 133, 134, 135, 136, 128, 7, 35, 68, +- 118, 69, 70, 125, 129, 130, 36, 42, 44, 1, +- 142, 45, 121, -3, 8, 5, 157, 9, 57, 6, +- 10, 59, 108, 11, 12, 122, 41, 126, 37, 69, +- 70, 46, 33, 146, 13, 34, 69, 70, 14, 15, +- 38, 40, -2, 8, 42, 61, 9, 62, 16, 10, +- 69, 70, 11, 12, 71, 72, 73, 74, 75, 76, +- 139, 162, 50, 13, 52, 143, 64, 14, 15, 65, +- 8, 77, 159, 9, 78, 148, 10, 16, 79, 11, +- 12, 84, 113, 115, 117, 110, 111, 112, 127, 137, +- 13, 138, 171, 80, 14, 15, 141, 140, 144, 81, +- 82, 83, 84, 147, 16, 157, 85, 86, 150, 87, +- 88, 149, 152, 153, 89, 173, 80, 69, 70, 90, +- 91, 92, 102, 93, 94, 84, 160, 154, 161, 85, +- 163, 164, 70, 166, 155, 167, 109, 168, 165, 156, +- 103, 169, 104, 172, 174, 11, 12, 94, 175, 176, +- 177, 110, 111, 112, 178, 179, 13, 180, 181, 54, +- 170, 106, 107, 0, 0, 0, 151 ++ 67, 68, 44, 43, 45, 52, 129, 130, 131, 132, ++ 133, 134, 36, 126, 109, 153, 37, 120, 5, 124, ++ 37, 85, 43, 45, 127, 128, 140, 7, 46, 6, ++ -3, 8, 70, 71, 9, 70, 71, 10, 38, 1, ++ 11, 12, 38, 118, 119, 123, 70, 71, 47, 58, ++ 39, 13, 60, 144, 39, 14, 15, 42, 34, -2, ++ 8, 35, 41, 9, 43, 16, 10, 51, 53, 11, ++ 12, 62, 65, 69, 158, 70, 71, 63, 137, 168, ++ 13, 70, 71, 141, 14, 15, 66, 78, 79, 155, ++ 81, 85, 80, 146, 16, 8, 103, 125, 9, 85, ++ 135, 10, 139, 86, 11, 12, 136, 166, 138, 142, ++ 111, 112, 113, 145, 104, 13, 105, 81, 147, 14, ++ 15, 95, 148, 82, 83, 84, 85, 150, 151, 16, ++ 86, 87, 152, 88, 89, 153, 107, 71, 90, 161, ++ 165, 167, 169, 91, 92, 93, 110, 94, 95, 114, ++ 55, 170, 11, 12, 172, 173, 0, 174, 111, 112, ++ 113, 175, 156, 13, 157, 176, 159, 160, 15, 162, ++ 0, 163, 149, 164, 0, 108, 0, 16, 0, 0, ++ 0, 0, 0, 171, 72, 73, 74, 75, 76, 77 + }; + + static const yytype_int16 yycheck[] = + { +- 45, 46, 56, 56, 56, 12, 4, 5, 15, 15, +- 71, 72, 73, 74, 75, 76, 8, 3, 1, 39, +- 56, 41, 42, 59, 69, 70, 9, 4, 5, 24, +- 91, 29, 38, 0, 1, 5, 21, 4, 24, 0, +- 7, 27, 55, 10, 11, 58, 5, 60, 31, 41, +- 42, 49, 39, 98, 21, 39, 41, 42, 25, 26, +- 43, 39, 0, 1, 4, 39, 4, 40, 35, 7, +- 41, 42, 10, 11, 43, 44, 45, 46, 47, 48, +- 87, 142, 5, 21, 5, 92, 39, 25, 26, 39, +- 1, 39, 137, 4, 39, 102, 7, 35, 39, 10, +- 11, 15, 156, 156, 156, 16, 17, 18, 39, 28, +- 21, 39, 157, 6, 25, 26, 5, 39, 5, 12, +- 13, 14, 15, 3, 35, 21, 19, 20, 5, 22, +- 23, 39, 39, 39, 27, 39, 6, 41, 42, 32, +- 33, 34, 12, 36, 37, 15, 139, 39, 141, 19, +- 143, 144, 42, 146, 39, 148, 1, 150, 39, 115, +- 30, 39, 32, 39, 39, 10, 11, 37, 39, 162, +- 39, 16, 17, 18, 39, 39, 21, 39, 39, 19, +- 156, 55, 55, -1, -1, -1, 106 ++ 46, 47, 12, 4, 5, 15, 72, 73, 74, 75, ++ 76, 77, 1, 8, 56, 21, 9, 59, 5, 61, ++ 9, 15, 4, 5, 70, 71, 92, 3, 29, 0, ++ 0, 1, 41, 42, 4, 41, 42, 7, 31, 24, ++ 10, 11, 31, 58, 38, 60, 41, 42, 49, 25, ++ 43, 21, 28, 99, 43, 25, 26, 5, 39, 0, ++ 1, 39, 39, 4, 4, 35, 7, 5, 5, 10, ++ 11, 39, 39, 39, 140, 41, 42, 40, 88, 39, ++ 21, 41, 42, 93, 25, 26, 39, 39, 39, 135, ++ 6, 15, 39, 103, 35, 1, 12, 39, 4, 15, ++ 28, 7, 5, 19, 10, 11, 39, 153, 39, 5, ++ 16, 17, 18, 3, 30, 21, 32, 6, 39, 25, ++ 26, 37, 5, 12, 13, 14, 15, 39, 39, 35, ++ 19, 20, 39, 22, 23, 21, 56, 42, 27, 39, ++ 39, 39, 39, 32, 33, 34, 4, 36, 37, 57, ++ 20, 39, 10, 11, 39, 39, -1, 39, 16, 17, ++ 18, 39, 137, 21, 139, 39, 141, 142, 26, 144, ++ -1, 146, 107, 148, -1, 56, -1, 35, -1, -1, ++ -1, -1, -1, 158, 43, 44, 45, 46, 47, 48 + }; + + /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of +@@ -799,56 +797,55 @@ static const yytype_int16 yycheck[] = + static const yytype_int8 yystos[] = + { + 0, 24, 51, 52, 53, 5, 0, 53, 1, 4, +- 7, 10, 11, 21, 25, 26, 35, 55, 56, 57, +- 58, 61, 62, 64, 70, 72, 74, 75, 77, 79, +- 80, 81, 93, 39, 39, 1, 9, 31, 43, 94, +- 39, 5, 4, 91, 5, 29, 49, 90, 91, 92, +- 5, 91, 5, 59, 59, 65, 54, 53, 78, 53, +- 82, 39, 40, 95, 39, 39, 90, 90, 39, 41, +- 42, 43, 44, 45, 46, 47, 48, 39, 39, 39, +- 6, 12, 13, 14, 15, 19, 20, 22, 23, 27, +- 32, 33, 34, 36, 37, 60, 67, 68, 69, 83, +- 84, 85, 12, 30, 32, 66, 68, 84, 85, 1, +- 16, 17, 18, 56, 63, 70, 73, 81, 88, 71, +- 88, 38, 85, 86, 76, 88, 85, 39, 8, 90, +- 90, 92, 92, 92, 92, 92, 92, 28, 39, 91, +- 39, 5, 92, 91, 5, 87, 90, 3, 91, 39, +- 5, 87, 39, 39, 39, 39, 54, 21, 89, 90, +- 89, 89, 92, 89, 89, 39, 89, 89, 89, 39, +- 71, 90, 39, 39, 39, 39, 89, 39, 39, 39, +- 39, 39 ++ 7, 10, 11, 21, 25, 26, 35, 54, 55, 56, ++ 57, 58, 61, 62, 64, 71, 73, 74, 75, 77, ++ 79, 80, 81, 93, 39, 39, 1, 9, 31, 43, ++ 94, 39, 5, 4, 91, 5, 29, 49, 90, 91, ++ 92, 5, 91, 5, 59, 59, 65, 70, 53, 78, ++ 53, 82, 39, 40, 95, 39, 39, 90, 90, 39, ++ 41, 42, 43, 44, 45, 46, 47, 48, 39, 39, ++ 39, 6, 12, 13, 14, 15, 19, 20, 22, 23, ++ 27, 32, 33, 34, 36, 37, 60, 67, 68, 69, ++ 83, 84, 85, 12, 30, 32, 66, 68, 84, 85, ++ 4, 16, 17, 18, 54, 63, 88, 72, 88, 38, ++ 85, 86, 76, 88, 85, 39, 8, 90, 90, 92, ++ 92, 92, 92, 92, 92, 28, 39, 91, 39, 5, ++ 92, 91, 5, 87, 90, 3, 91, 39, 5, 87, ++ 39, 39, 39, 21, 89, 90, 89, 89, 92, 89, ++ 89, 39, 89, 89, 89, 39, 90, 39, 39, 39, ++ 39, 89, 39, 39, 39, 39, 39 + }; + + /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ + static const yytype_int8 yyr1[] = + { + 0, 50, 51, 51, 52, 53, 53, 53, 53, 53, +- 53, 53, 53, 53, 53, 53, 54, 54, 54, 54, +- 54, 55, 56, 57, 58, 59, 59, 59, 59, 60, +- 60, 60, 60, 60, 60, 60, 61, 62, 63, 64, +- 65, 65, 65, 65, 66, 66, 66, 66, 67, 67, +- 67, 67, 68, 68, 69, 69, 69, 70, 71, 72, +- 73, 74, 75, 76, 77, 78, 78, 78, 79, 80, +- 81, 82, 82, 83, 84, 85, 86, 87, 87, 88, +- 88, 88, 89, 89, 90, 90, 90, 90, 90, 90, +- 90, 90, 90, 90, 90, 91, 92, 92, 93, 94, +- 94, 94, 95, 95 ++ 53, 54, 54, 54, 54, 54, 54, 55, 56, 57, ++ 58, 59, 59, 59, 59, 60, 60, 60, 60, 60, ++ 60, 60, 61, 62, 63, 64, 65, 65, 65, 65, ++ 66, 66, 66, 66, 67, 67, 67, 67, 68, 68, ++ 69, 69, 69, 70, 70, 71, 72, 73, 74, 75, ++ 76, 77, 78, 78, 78, 79, 80, 81, 82, 82, ++ 83, 84, 85, 86, 87, 87, 88, 88, 88, 89, ++ 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, ++ 90, 90, 91, 92, 92, 93, 94, 94, 94, 95, ++ 95 + }; + + /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ + static const yytype_int8 yyr2[] = + { +- 0, 2, 2, 1, 3, 0, 2, 2, 2, 2, +- 2, 2, 2, 2, 4, 3, 0, 2, 2, 2, +- 3, 3, 2, 3, 2, 0, 2, 2, 2, 3, +- 4, 4, 4, 4, 5, 2, 2, 2, 1, 3, +- 0, 2, 2, 2, 4, 3, 2, 4, 1, 1, +- 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, +- 3, 3, 2, 1, 3, 0, 2, 2, 3, 3, +- 2, 0, 2, 2, 2, 4, 3, 0, 2, 2, +- 2, 2, 0, 2, 1, 3, 3, 3, 3, 3, +- 3, 3, 2, 3, 3, 1, 1, 1, 4, 1, +- 1, 1, 0, 1 ++ 0, 2, 2, 1, 3, 0, 2, 2, 2, 4, ++ 3, 1, 1, 1, 1, 1, 1, 3, 2, 3, ++ 2, 0, 2, 2, 2, 3, 4, 4, 4, 4, ++ 5, 2, 2, 2, 1, 3, 0, 2, 2, 2, ++ 4, 3, 2, 4, 1, 1, 1, 1, 1, 1, ++ 1, 1, 1, 0, 2, 3, 1, 3, 3, 2, ++ 1, 3, 0, 2, 2, 3, 3, 2, 0, 2, ++ 2, 2, 4, 3, 0, 2, 2, 2, 2, 0, ++ 2, 1, 3, 3, 3, 3, 3, 3, 3, 2, ++ 3, 3, 1, 1, 1, 4, 1, 1, 1, 0, ++ 1 + }; + + +@@ -1348,19 +1345,15 @@ yyreduce: + } + break; + +- case 14: /* stmt_list: stmt_list T_WORD error T_EOL */ ++ case 9: /* stmt_list: stmt_list T_WORD error T_EOL */ + { zconf_error("unknown statement \"%s\"", (yyvsp[-2].string)); } + break; + +- case 15: /* stmt_list: stmt_list error T_EOL */ ++ case 10: /* stmt_list: stmt_list error T_EOL */ + { zconf_error("invalid statement"); } + break; + +- case 20: /* stmt_list_in_choice: stmt_list_in_choice error T_EOL */ +- { zconf_error("invalid statement"); } +- break; +- +- case 21: /* config_entry_start: T_CONFIG nonconst_symbol T_EOL */ ++ case 17: /* config_entry_start: T_CONFIG nonconst_symbol T_EOL */ + { + (yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL; + menu_add_entry((yyvsp[-1].symbol)); +@@ -1368,13 +1361,13 @@ yyreduce: + } + break; + +- case 22: /* config_stmt: config_entry_start config_option_list */ ++ case 18: /* config_stmt: config_entry_start config_option_list */ + { + printd(DEBUG_PARSE, "%s:%d:endconfig\n", cur_filename, cur_lineno); + } + break; + +- case 23: /* menuconfig_entry_start: T_MENUCONFIG nonconst_symbol T_EOL */ ++ case 19: /* menuconfig_entry_start: T_MENUCONFIG nonconst_symbol T_EOL */ + { + (yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL; + menu_add_entry((yyvsp[-1].symbol)); +@@ -1382,7 +1375,7 @@ yyreduce: + } + break; + +- case 24: /* menuconfig_stmt: menuconfig_entry_start config_option_list */ ++ case 20: /* menuconfig_stmt: menuconfig_entry_start config_option_list */ + { + if (current_entry->prompt) + current_entry->prompt->type = P_MENU; +@@ -1392,21 +1385,21 @@ yyreduce: + } + break; + +- case 29: /* config_option: type prompt_stmt_opt T_EOL */ ++ case 25: /* config_option: type prompt_stmt_opt T_EOL */ + { + menu_set_type((yyvsp[-2].type)); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", cur_filename, cur_lineno, (yyvsp[-2].type)); + } + break; + +- case 30: /* config_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL */ ++ case 26: /* config_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL */ + { + menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:prompt\n", cur_filename, cur_lineno); + } + break; + +- case 31: /* config_option: default expr if_expr T_EOL */ ++ case 27: /* config_option: default expr if_expr T_EOL */ + { + menu_add_expr(P_DEFAULT, (yyvsp[-2].expr), (yyvsp[-1].expr)); + if ((yyvsp[-3].type) != S_UNKNOWN) +@@ -1416,28 +1409,28 @@ yyreduce: + } + break; + +- case 32: /* config_option: T_SELECT nonconst_symbol if_expr T_EOL */ ++ case 28: /* config_option: T_SELECT nonconst_symbol if_expr T_EOL */ + { + menu_add_symbol(P_SELECT, (yyvsp[-2].symbol), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:select\n", cur_filename, cur_lineno); + } + break; + +- case 33: /* config_option: T_IMPLY nonconst_symbol if_expr T_EOL */ ++ case 29: /* config_option: T_IMPLY nonconst_symbol if_expr T_EOL */ + { + menu_add_symbol(P_IMPLY, (yyvsp[-2].symbol), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:imply\n", cur_filename, cur_lineno); + } + break; + +- case 34: /* config_option: T_RANGE symbol symbol if_expr T_EOL */ ++ case 30: /* config_option: T_RANGE symbol symbol if_expr T_EOL */ + { + menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[-3].symbol), (yyvsp[-2].symbol)), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:range\n", cur_filename, cur_lineno); + } + break; + +- case 35: /* config_option: T_MODULES T_EOL */ ++ case 31: /* config_option: T_MODULES T_EOL */ + { + if (modules_sym) + zconf_error("symbol '%s' redefines option 'modules' already defined by symbol '%s'", +@@ -1446,7 +1439,7 @@ yyreduce: + } + break; + +- case 36: /* choice: T_CHOICE T_EOL */ ++ case 32: /* choice: T_CHOICE T_EOL */ + { + struct symbol *sym = sym_lookup(NULL, SYMBOL_CHOICE); + sym->flags |= SYMBOL_NO_WRITE; +@@ -1456,7 +1449,7 @@ yyreduce: + } + break; + +- case 37: /* choice_entry: choice choice_option_list */ ++ case 33: /* choice_entry: choice choice_option_list */ + { + if (!current_entry->prompt) { + fprintf(stderr, "%s:%d: error: choice must have a prompt\n", +@@ -1468,7 +1461,7 @@ yyreduce: + } + break; + +- case 38: /* choice_end: end */ ++ case 34: /* choice_end: end */ + { + if (zconf_endtoken((yyvsp[0].string), "choice")) { + menu_end_menu(); +@@ -1477,67 +1470,67 @@ yyreduce: + } + break; + +- case 44: /* choice_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL */ ++ case 40: /* choice_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL */ + { + menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:prompt\n", cur_filename, cur_lineno); + } + break; + +- case 45: /* choice_option: logic_type prompt_stmt_opt T_EOL */ ++ case 41: /* choice_option: logic_type prompt_stmt_opt T_EOL */ + { + menu_set_type((yyvsp[-2].type)); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", cur_filename, cur_lineno, (yyvsp[-2].type)); + } + break; + +- case 46: /* choice_option: T_OPTIONAL T_EOL */ ++ case 42: /* choice_option: T_OPTIONAL T_EOL */ + { + current_entry->sym->flags |= SYMBOL_OPTIONAL; + printd(DEBUG_PARSE, "%s:%d:optional\n", cur_filename, cur_lineno); + } + break; + +- case 47: /* choice_option: T_DEFAULT nonconst_symbol if_expr T_EOL */ ++ case 43: /* choice_option: T_DEFAULT nonconst_symbol if_expr T_EOL */ + { + menu_add_symbol(P_DEFAULT, (yyvsp[-2].symbol), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:default\n", cur_filename, cur_lineno); + } + break; + +- case 49: /* type: T_INT */ ++ case 45: /* type: T_INT */ + { (yyval.type) = S_INT; } + break; + +- case 50: /* type: T_HEX */ ++ case 46: /* type: T_HEX */ + { (yyval.type) = S_HEX; } + break; + +- case 51: /* type: T_STRING */ ++ case 47: /* type: T_STRING */ + { (yyval.type) = S_STRING; } + break; + +- case 52: /* logic_type: T_BOOL */ ++ case 48: /* logic_type: T_BOOL */ + { (yyval.type) = S_BOOLEAN; } + break; + +- case 53: /* logic_type: T_TRISTATE */ ++ case 49: /* logic_type: T_TRISTATE */ + { (yyval.type) = S_TRISTATE; } + break; + +- case 54: /* default: T_DEFAULT */ ++ case 50: /* default: T_DEFAULT */ + { (yyval.type) = S_UNKNOWN; } + break; + +- case 55: /* default: T_DEF_BOOL */ ++ case 51: /* default: T_DEF_BOOL */ + { (yyval.type) = S_BOOLEAN; } + break; + +- case 56: /* default: T_DEF_TRISTATE */ ++ case 52: /* default: T_DEF_TRISTATE */ + { (yyval.type) = S_TRISTATE; } + break; + +- case 57: /* if_entry: T_IF expr T_EOL */ ++ case 55: /* if_entry: T_IF expr T_EOL */ + { + printd(DEBUG_PARSE, "%s:%d:if\n", cur_filename, cur_lineno); + menu_add_entry(NULL); +@@ -1546,7 +1539,7 @@ yyreduce: + } + break; + +- case 58: /* if_end: end */ ++ case 56: /* if_end: end */ + { + if (zconf_endtoken((yyvsp[0].string), "if")) { + menu_end_menu(); +@@ -1555,7 +1548,7 @@ yyreduce: + } + break; + +- case 61: /* menu: T_MENU T_WORD_QUOTE T_EOL */ ++ case 58: /* menu: T_MENU T_WORD_QUOTE T_EOL */ + { + menu_add_entry(NULL); + menu_add_prompt(P_MENU, (yyvsp[-1].string), NULL); +@@ -1563,13 +1556,13 @@ yyreduce: + } + break; + +- case 62: /* menu_entry: menu menu_option_list */ ++ case 59: /* menu_entry: menu menu_option_list */ + { + (yyval.menu) = menu_add_menu(); + } + break; + +- case 63: /* menu_end: end */ ++ case 60: /* menu_end: end */ + { + if (zconf_endtoken((yyvsp[0].string), "menu")) { + menu_end_menu(); +@@ -1578,7 +1571,7 @@ yyreduce: + } + break; + +- case 68: /* source_stmt: T_SOURCE T_WORD_QUOTE T_EOL */ ++ case 65: /* source_stmt: T_SOURCE T_WORD_QUOTE T_EOL */ + { + printd(DEBUG_PARSE, "%s:%d:source %s\n", cur_filename, cur_lineno, (yyvsp[-1].string)); + zconf_nextfile((yyvsp[-1].string)); +@@ -1586,7 +1579,7 @@ yyreduce: + } + break; + +- case 69: /* comment: T_COMMENT T_WORD_QUOTE T_EOL */ ++ case 66: /* comment: T_COMMENT T_WORD_QUOTE T_EOL */ + { + menu_add_entry(NULL); + menu_add_prompt(P_COMMENT, (yyvsp[-1].string), NULL); +@@ -1594,14 +1587,14 @@ yyreduce: + } + break; + +- case 73: /* help_start: T_HELP T_EOL */ ++ case 70: /* help_start: T_HELP T_EOL */ + { + printd(DEBUG_PARSE, "%s:%d:help\n", cur_filename, cur_lineno); + zconf_starthelp(); + } + break; + +- case 74: /* help: help_start T_HELPTEXT */ ++ case 71: /* help: help_start T_HELPTEXT */ + { + if (current_entry->help) { + free(current_entry->help); +@@ -1618,114 +1611,114 @@ yyreduce: + } + break; + +- case 75: /* depends: T_DEPENDS T_ON expr T_EOL */ ++ case 72: /* depends: T_DEPENDS T_ON expr T_EOL */ + { + menu_add_dep((yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:depends on\n", cur_filename, cur_lineno); + } + break; + +- case 76: /* visible: T_VISIBLE if_expr T_EOL */ ++ case 73: /* visible: T_VISIBLE if_expr T_EOL */ + { + menu_add_visibility((yyvsp[-1].expr)); + } + break; + +- case 78: /* prompt_stmt_opt: T_WORD_QUOTE if_expr */ ++ case 75: /* prompt_stmt_opt: T_WORD_QUOTE if_expr */ + { + menu_add_prompt(P_PROMPT, (yyvsp[-1].string), (yyvsp[0].expr)); + } + break; + +- case 79: /* end: T_ENDMENU T_EOL */ ++ case 76: /* end: T_ENDMENU T_EOL */ + { (yyval.string) = "menu"; } + break; + +- case 80: /* end: T_ENDCHOICE T_EOL */ ++ case 77: /* end: T_ENDCHOICE T_EOL */ + { (yyval.string) = "choice"; } + break; + +- case 81: /* end: T_ENDIF T_EOL */ ++ case 78: /* end: T_ENDIF T_EOL */ + { (yyval.string) = "if"; } + break; + +- case 82: /* if_expr: %empty */ ++ case 79: /* if_expr: %empty */ + { (yyval.expr) = NULL; } + break; + +- case 83: /* if_expr: T_IF expr */ ++ case 80: /* if_expr: T_IF expr */ + { (yyval.expr) = (yyvsp[0].expr); } + break; + +- case 84: /* expr: symbol */ ++ case 81: /* expr: symbol */ + { (yyval.expr) = expr_alloc_symbol((yyvsp[0].symbol)); } + break; + +- case 85: /* expr: symbol T_LESS symbol */ ++ case 82: /* expr: symbol T_LESS symbol */ + { (yyval.expr) = expr_alloc_comp(E_LTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + +- case 86: /* expr: symbol T_LESS_EQUAL symbol */ ++ case 83: /* expr: symbol T_LESS_EQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_LEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + +- case 87: /* expr: symbol T_GREATER symbol */ ++ case 84: /* expr: symbol T_GREATER symbol */ + { (yyval.expr) = expr_alloc_comp(E_GTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + +- case 88: /* expr: symbol T_GREATER_EQUAL symbol */ ++ case 85: /* expr: symbol T_GREATER_EQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_GEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + +- case 89: /* expr: symbol T_EQUAL symbol */ ++ case 86: /* expr: symbol T_EQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + +- case 90: /* expr: symbol T_UNEQUAL symbol */ ++ case 87: /* expr: symbol T_UNEQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + +- case 91: /* expr: T_OPEN_PAREN expr T_CLOSE_PAREN */ ++ case 88: /* expr: T_OPEN_PAREN expr T_CLOSE_PAREN */ + { (yyval.expr) = (yyvsp[-1].expr); } + break; + +- case 92: /* expr: T_NOT expr */ ++ case 89: /* expr: T_NOT expr */ + { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[0].expr)); } + break; + +- case 93: /* expr: expr T_OR expr */ ++ case 90: /* expr: expr T_OR expr */ + { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[-2].expr), (yyvsp[0].expr)); } + break; + +- case 94: /* expr: expr T_AND expr */ ++ case 91: /* expr: expr T_AND expr */ + { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); } + break; + +- case 95: /* nonconst_symbol: T_WORD */ ++ case 92: /* nonconst_symbol: T_WORD */ + { (yyval.symbol) = sym_lookup((yyvsp[0].string), 0); free((yyvsp[0].string)); } + break; + +- case 97: /* symbol: T_WORD_QUOTE */ ++ case 94: /* symbol: T_WORD_QUOTE */ + { (yyval.symbol) = sym_lookup((yyvsp[0].string), SYMBOL_CONST); free((yyvsp[0].string)); } + break; + +- case 98: /* assignment_stmt: T_WORD assign_op assign_val T_EOL */ ++ case 95: /* assignment_stmt: T_WORD assign_op assign_val T_EOL */ + { variable_add((yyvsp[-3].string), (yyvsp[-1].string), (yyvsp[-2].flavor)); free((yyvsp[-3].string)); free((yyvsp[-1].string)); } + break; + +- case 99: /* assign_op: T_EQUAL */ ++ case 96: /* assign_op: T_EQUAL */ + { (yyval.flavor) = VAR_RECURSIVE; } + break; + +- case 100: /* assign_op: T_COLON_EQUAL */ ++ case 97: /* assign_op: T_COLON_EQUAL */ + { (yyval.flavor) = VAR_SIMPLE; } + break; + +- case 101: /* assign_op: T_PLUS_EQUAL */ ++ case 98: /* assign_op: T_PLUS_EQUAL */ + { (yyval.flavor) = VAR_APPEND; } + break; + +- case 102: /* assign_val: %empty */ ++ case 99: /* assign_val: %empty */ + { (yyval.string) = xstrdup(""); } + break; + +diff --git a/parser.y b/parser.y +index 7fb9966..9873e84 100644 +--- a/parser.y ++++ b/parser.y +@@ -116,24 +116,20 @@ mainmenu_stmt: T_MAINMENU T_WORD_QUOTE T_EOL + + stmt_list: + /* empty */ +- | stmt_list assignment_stmt ++ | stmt_list common_stmt + | stmt_list choice_stmt +- | stmt_list comment_stmt +- | stmt_list config_stmt +- | stmt_list if_stmt + | stmt_list menu_stmt +- | stmt_list menuconfig_stmt +- | stmt_list source_stmt + | stmt_list T_WORD error T_EOL { zconf_error("unknown statement \"%s\"", $2); } + | stmt_list error T_EOL { zconf_error("invalid statement"); } + ; + +-stmt_list_in_choice: +- /* empty */ +- | stmt_list_in_choice comment_stmt +- | stmt_list_in_choice config_stmt +- | stmt_list_in_choice if_stmt_in_choice +- | stmt_list_in_choice error T_EOL { zconf_error("invalid statement"); } ++common_stmt: ++ if_stmt ++ | comment_stmt ++ | config_stmt ++ | menuconfig_stmt ++ | source_stmt ++ | assignment_stmt + ; + + /* config/menuconfig entry */ +@@ -250,7 +246,7 @@ choice_end: end + } + }; + +-choice_stmt: choice_entry stmt_list_in_choice choice_end ++choice_stmt: choice_entry choice_block choice_end + ; + + choice_option_list: +@@ -299,6 +295,11 @@ default: + | T_DEF_BOOL { $$ = S_BOOLEAN; } + | T_DEF_TRISTATE { $$ = S_TRISTATE; } + ++choice_block: ++ /* empty */ ++ | choice_block common_stmt ++; ++ + /* if entry */ + + if_entry: T_IF expr T_EOL +@@ -320,9 +321,6 @@ if_end: end + if_stmt: if_entry stmt_list if_end + ; + +-if_stmt_in_choice: if_entry stmt_list_in_choice if_end +-; +- + /* menu entry */ + + menu: T_MENU T_WORD_QUOTE T_EOL diff --git a/support/kconfig/patches/series b/support/kconfig/patches/series index f120e323b7..e68a83a550 100644 --- a/support/kconfig/patches/series +++ b/support/kconfig/patches/series @@ -1,13 +1,9 @@ 01-kconfig-kernel-to-buildroot.patch 06-br-build-system-integration.patch 10-br-build-system.patch -11-use-mktemp-for-lxdialog.patch 12-fix-glade-file-path.patch 14-support-out-of-tree-config.patch 16-fix-space-to-de-select-options.patch -17-backport-kecho.patch 18-merge-config.sh-create-temporary-files-in-tmp.patch 19-merge_config.sh-add-br2-external-support.patch -20-merge_config.sh-Allow-to-define-config-prefix.patch -21-Avoid-false-positive-matches-from-comment-lines.patch -22-kconfig-lxdialog-fix-check-with-GCC14.patch +23-Revert-kconfig-allow-only-config-comment-and-if-insi.patch diff --git a/support/kconfig/preprocess.c b/support/kconfig/preprocess.c new file mode 100644 index 0000000000..f0a4a218c4 --- /dev/null +++ b/support/kconfig/preprocess.c @@ -0,0 +1,580 @@ +// SPDX-License-Identifier: GPL-2.0 +// +// Copyright (C) 2018 Masahiro Yamada + +#include +#include +#include +#include +#include +#include + +#include "array_size.h" +#include "internal.h" +#include "list.h" +#include "lkc.h" +#include "preprocess.h" + +static char *expand_string_with_args(const char *in, int argc, char *argv[]); +static char *expand_string(const char *in); + +static void __attribute__((noreturn)) pperror(const char *format, ...) +{ + va_list ap; + + fprintf(stderr, "%s:%d: ", cur_filename, yylineno); + va_start(ap, format); + vfprintf(stderr, format, ap); + va_end(ap); + fprintf(stderr, "\n"); + + exit(1); +} + +/* + * Environment variables + */ +static LIST_HEAD(env_list); + +struct env { + char *name; + char *value; + struct list_head node; +}; + +static void env_add(const char *name, const char *value) +{ + struct env *e; + + e = xmalloc(sizeof(*e)); + e->name = xstrdup(name); + e->value = xstrdup(value); + + list_add_tail(&e->node, &env_list); +} + +static void env_del(struct env *e) +{ + list_del(&e->node); + free(e->name); + free(e->value); + free(e); +} + +/* The returned pointer must be freed when done */ +static char *env_expand(const char *name) +{ + struct env *e; + const char *value; + + if (!*name) + return NULL; + + list_for_each_entry(e, &env_list, node) { + if (!strcmp(name, e->name)) + return xstrdup(e->value); + } + + value = getenv(name); + if (!value) + return NULL; + + /* + * We need to remember all referenced environment variables. + * They will be written out to include/config/auto.conf.cmd + */ + env_add(name, value); + + return xstrdup(value); +} + +void env_write_dep(struct gstr *s) +{ + struct env *e, *tmp; + + list_for_each_entry_safe(e, tmp, &env_list, node) { + str_printf(s, + "\n" + "ifneq \"$(%s)\" \"%s\"\n" + "$(autoconfig): FORCE\n" + "endif\n", + e->name, e->value); + env_del(e); + } +} + +/* + * Built-in functions + */ +struct function { + const char *name; + unsigned int min_args; + unsigned int max_args; + char *(*func)(int argc, char *argv[]); +}; + +static char *do_error_if(int argc, char *argv[]) +{ + if (!strcmp(argv[0], "y")) + pperror("%s", argv[1]); + + return xstrdup(""); +} + +static char *do_filename(int argc, char *argv[]) +{ + return xstrdup(cur_filename); +} + +static char *do_info(int argc, char *argv[]) +{ + printf("%s\n", argv[0]); + + return xstrdup(""); +} + +static char *do_lineno(int argc, char *argv[]) +{ + char buf[16]; + + sprintf(buf, "%d", yylineno); + + return xstrdup(buf); +} + +static char *do_shell(int argc, char *argv[]) +{ + FILE *p; + char buf[4096]; + char *cmd; + size_t nread; + int i; + + cmd = argv[0]; + + p = popen(cmd, "r"); + if (!p) { + perror(cmd); + exit(1); + } + + nread = fread(buf, 1, sizeof(buf), p); + if (nread == sizeof(buf)) + nread--; + + /* remove trailing new lines */ + while (nread > 0 && buf[nread - 1] == '\n') + nread--; + + buf[nread] = 0; + + /* replace a new line with a space */ + for (i = 0; i < nread; i++) { + if (buf[i] == '\n') + buf[i] = ' '; + } + + if (pclose(p) == -1) { + perror(cmd); + exit(1); + } + + return xstrdup(buf); +} + +static char *do_warning_if(int argc, char *argv[]) +{ + if (!strcmp(argv[0], "y")) + fprintf(stderr, "%s:%d: %s\n", cur_filename, yylineno, argv[1]); + + return xstrdup(""); +} + +static const struct function function_table[] = { + /* Name MIN MAX Function */ + { "error-if", 2, 2, do_error_if }, + { "filename", 0, 0, do_filename }, + { "info", 1, 1, do_info }, + { "lineno", 0, 0, do_lineno }, + { "shell", 1, 1, do_shell }, + { "warning-if", 2, 2, do_warning_if }, +}; + +#define FUNCTION_MAX_ARGS 16 + +static char *function_expand(const char *name, int argc, char *argv[]) +{ + const struct function *f; + int i; + + for (i = 0; i < ARRAY_SIZE(function_table); i++) { + f = &function_table[i]; + if (strcmp(f->name, name)) + continue; + + if (argc < f->min_args) + pperror("too few function arguments passed to '%s'", + name); + + if (argc > f->max_args) + pperror("too many function arguments passed to '%s'", + name); + + return f->func(argc, argv); + } + + return NULL; +} + +/* + * Variables (and user-defined functions) + */ +static LIST_HEAD(variable_list); + +struct variable { + char *name; + char *value; + enum variable_flavor flavor; + int exp_count; + struct list_head node; +}; + +static struct variable *variable_lookup(const char *name) +{ + struct variable *v; + + list_for_each_entry(v, &variable_list, node) { + if (!strcmp(name, v->name)) + return v; + } + + return NULL; +} + +static char *variable_expand(const char *name, int argc, char *argv[]) +{ + struct variable *v; + char *res; + + v = variable_lookup(name); + if (!v) + return NULL; + + if (argc == 0 && v->exp_count) + pperror("Recursive variable '%s' references itself (eventually)", + name); + + if (v->exp_count > 1000) + pperror("Too deep recursive expansion"); + + v->exp_count++; + + if (v->flavor == VAR_RECURSIVE) + res = expand_string_with_args(v->value, argc, argv); + else + res = xstrdup(v->value); + + v->exp_count--; + + return res; +} + +void variable_add(const char *name, const char *value, + enum variable_flavor flavor) +{ + struct variable *v; + char *new_value; + bool append = false; + + v = variable_lookup(name); + if (v) { + /* For defined variables, += inherits the existing flavor */ + if (flavor == VAR_APPEND) { + flavor = v->flavor; + append = true; + } else { + free(v->value); + } + } else { + /* For undefined variables, += assumes the recursive flavor */ + if (flavor == VAR_APPEND) + flavor = VAR_RECURSIVE; + + v = xmalloc(sizeof(*v)); + v->name = xstrdup(name); + v->exp_count = 0; + list_add_tail(&v->node, &variable_list); + } + + v->flavor = flavor; + + if (flavor == VAR_SIMPLE) + new_value = expand_string(value); + else + new_value = xstrdup(value); + + if (append) { + v->value = xrealloc(v->value, + strlen(v->value) + strlen(new_value) + 2); + strcat(v->value, " "); + strcat(v->value, new_value); + free(new_value); + } else { + v->value = new_value; + } +} + +static void variable_del(struct variable *v) +{ + list_del(&v->node); + free(v->name); + free(v->value); + free(v); +} + +void variable_all_del(void) +{ + struct variable *v, *tmp; + + list_for_each_entry_safe(v, tmp, &variable_list, node) + variable_del(v); +} + +/* + * Evaluate a clause with arguments. argc/argv are arguments from the upper + * function call. + * + * Returned string must be freed when done + */ +static char *eval_clause(const char *str, size_t len, int argc, char *argv[]) +{ + char *tmp, *name, *res, *endptr, *prev, *p; + int new_argc = 0; + char *new_argv[FUNCTION_MAX_ARGS]; + int nest = 0; + int i; + unsigned long n; + + tmp = xstrndup(str, len); + + /* + * If variable name is '1', '2', etc. It is generally an argument + * from a user-function call (i.e. local-scope variable). If not + * available, then look-up global-scope variables. + */ + n = strtoul(tmp, &endptr, 10); + if (!*endptr && n > 0 && n <= argc) { + res = xstrdup(argv[n - 1]); + goto free_tmp; + } + + prev = p = tmp; + + /* + * Split into tokens + * The function name and arguments are separated by a comma. + * For example, if the function call is like this: + * $(foo,$(x),$(y)) + * + * The input string for this helper should be: + * foo,$(x),$(y) + * + * and split into: + * new_argv[0] = 'foo' + * new_argv[1] = '$(x)' + * new_argv[2] = '$(y)' + */ + while (*p) { + if (nest == 0 && *p == ',') { + *p = 0; + if (new_argc >= FUNCTION_MAX_ARGS) + pperror("too many function arguments"); + new_argv[new_argc++] = prev; + prev = p + 1; + } else if (*p == '(') { + nest++; + } else if (*p == ')') { + nest--; + } + + p++; + } + + if (new_argc >= FUNCTION_MAX_ARGS) + pperror("too many function arguments"); + new_argv[new_argc++] = prev; + + /* + * Shift arguments + * new_argv[0] represents a function name or a variable name. Put it + * into 'name', then shift the rest of the arguments. This simplifies + * 'const' handling. + */ + name = expand_string_with_args(new_argv[0], argc, argv); + new_argc--; + for (i = 0; i < new_argc; i++) + new_argv[i] = expand_string_with_args(new_argv[i + 1], + argc, argv); + + /* Search for variables */ + res = variable_expand(name, new_argc, new_argv); + if (res) + goto free; + + /* Look for built-in functions */ + res = function_expand(name, new_argc, new_argv); + if (res) + goto free; + + /* Last, try environment variable */ + if (new_argc == 0) { + res = env_expand(name); + if (res) + goto free; + } + + res = xstrdup(""); +free: + for (i = 0; i < new_argc; i++) + free(new_argv[i]); + free(name); +free_tmp: + free(tmp); + + return res; +} + +/* + * Expand a string that follows '$' + * + * For example, if the input string is + * ($(FOO)$($(BAR)))$(BAZ) + * this helper evaluates + * $($(FOO)$($(BAR))) + * and returns a new string containing the expansion (note that the string is + * recursively expanded), also advancing 'str' to point to the next character + * after the corresponding closing parenthesis, in this case, *str will be + * $(BAR) + */ +static char *expand_dollar_with_args(const char **str, int argc, char *argv[]) +{ + const char *p = *str; + const char *q; + int nest = 0; + + /* + * In Kconfig, variable/function references always start with "$(". + * Neither single-letter variables as in $A nor curly braces as in ${CC} + * are supported. '$' not followed by '(' loses its special meaning. + */ + if (*p != '(') { + *str = p; + return xstrdup("$"); + } + + p++; + q = p; + while (*q) { + if (*q == '(') { + nest++; + } else if (*q == ')') { + if (nest-- == 0) + break; + } + q++; + } + + if (!*q) + pperror("unterminated reference to '%s': missing ')'", p); + + /* Advance 'str' to after the expanded initial portion of the string */ + *str = q + 1; + + return eval_clause(p, q - p, argc, argv); +} + +char *expand_dollar(const char **str) +{ + return expand_dollar_with_args(str, 0, NULL); +} + +static char *__expand_string(const char **str, bool (*is_end)(char c), + int argc, char *argv[]) +{ + const char *in, *p; + char *expansion, *out; + size_t in_len, out_len; + + out = xmalloc(1); + *out = 0; + out_len = 1; + + p = in = *str; + + while (1) { + if (*p == '$') { + in_len = p - in; + p++; + expansion = expand_dollar_with_args(&p, argc, argv); + out_len += in_len + strlen(expansion); + out = xrealloc(out, out_len); + strncat(out, in, in_len); + strcat(out, expansion); + free(expansion); + in = p; + continue; + } + + if (is_end(*p)) + break; + + p++; + } + + in_len = p - in; + out_len += in_len; + out = xrealloc(out, out_len); + strncat(out, in, in_len); + + /* Advance 'str' to the end character */ + *str = p; + + return out; +} + +static bool is_end_of_str(char c) +{ + return !c; +} + +/* + * Expand variables and functions in the given string. Undefined variables + * expand to an empty string. + * The returned string must be freed when done. + */ +static char *expand_string_with_args(const char *in, int argc, char *argv[]) +{ + return __expand_string(&in, is_end_of_str, argc, argv); +} + +static char *expand_string(const char *in) +{ + return expand_string_with_args(in, 0, NULL); +} + +static bool is_end_of_token(char c) +{ + return !(isalnum(c) || c == '_' || c == '-'); +} + +/* + * Expand variables in a token. The parsing stops when a token separater + * (in most cases, it is a whitespace) is encountered. 'str' is updated to + * point to the next character. + * + * The returned string must be freed when done. + */ +char *expand_one_token(const char **str) +{ + return __expand_string(str, is_end_of_token, 0, NULL); +} diff --git a/support/kconfig/preprocess.h b/support/kconfig/preprocess.h new file mode 100644 index 0000000000..a7e4a55063 --- /dev/null +++ b/support/kconfig/preprocess.h @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +#ifndef PREPROCESS_H +#define PREPROCESS_H + +enum variable_flavor { + VAR_SIMPLE, + VAR_RECURSIVE, + VAR_APPEND, +}; + +struct gstr; +void env_write_dep(struct gstr *gs); +void variable_add(const char *name, const char *value, + enum variable_flavor flavor); +void variable_all_del(void); +char *expand_dollar(const char **str); +char *expand_one_token(const char **str); + +#endif /* PREPROCESS_H */ diff --git a/support/kconfig/qconf-cfg.sh b/support/kconfig/qconf-cfg.sh new file mode 100755 index 0000000000..0e113b0f24 --- /dev/null +++ b/support/kconfig/qconf-cfg.sh @@ -0,0 +1,40 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +cflags=$1 +libs=$2 +bin=$3 + +PKG5="Qt5Core Qt5Gui Qt5Widgets" +PKG6="Qt6Core Qt6Gui Qt6Widgets" + +if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then + echo >&2 "*" + echo >&2 "* 'make xconfig' requires '${HOSTPKG_CONFIG}'. Please install it." + echo >&2 "*" + exit 1 +fi + +if ${HOSTPKG_CONFIG} --exists $PKG6; then + ${HOSTPKG_CONFIG} --cflags ${PKG6} > ${cflags} + # Qt6 requires C++17. + echo -std=c++17 >> ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG6} > ${libs} + ${HOSTPKG_CONFIG} --variable=libexecdir Qt6Core > ${bin} + exit 0 +fi + +if ${HOSTPKG_CONFIG} --exists $PKG5; then + ${HOSTPKG_CONFIG} --cflags ${PKG5} > ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG5} > ${libs} + ${HOSTPKG_CONFIG} --variable=host_bins Qt5Core > ${bin} + exit 0 +fi + +echo >&2 "*" +echo >&2 "* Could not find Qt6 or Qt5 via ${HOSTPKG_CONFIG}." +echo >&2 "* Please install Qt6 or Qt5 and make sure it's in PKG_CONFIG_PATH" +echo >&2 "* You need $PKG6 for Qt6" +echo >&2 "* You need $PKG5 for Qt5" +echo >&2 "*" +exit 1 diff --git a/support/kconfig/qconf.cc b/support/kconfig/qconf.cc index 7896b584c8..50c3ccd027 100644 --- a/support/kconfig/qconf.cc +++ b/support/kconfig/qconf.cc @@ -1,59 +1,38 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel * Copyright (C) 2015 Boris Barbulovski - * Released under the terms of the GNU GPL v2.0. */ -#include - -#include -#include -#include #include +#include +#include +#include +#include #include +#include +#include +#include #include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include "lkc.h" #include "qconf.h" -#include "qconf.moc" -#include "images.c" +#include "images.h" -#ifdef _ -# undef _ -# define _ qgettext -#endif static QApplication *configApp; static ConfigSettings *configSettings; QAction *ConfigMainWindow::saveAction; -static inline QString qgettext(const char* str) -{ - return QString::fromLocal8Bit(gettext(str)); -} - -static inline QString qgettext(const QString& str) -{ - return QString::fromLocal8Bit(gettext(str.toLatin1())); -} - ConfigSettings::ConfigSettings() : QSettings("buildroot.org", "qconf") { @@ -97,14 +76,13 @@ bool ConfigSettings::writeSizes(const QString& key, const QList& value) return true; } - -/* - * set the new data - * TODO check the value - */ -void ConfigItem::okRename(int col) -{ -} +QIcon ConfigItem::symbolYesIcon; +QIcon ConfigItem::symbolModIcon; +QIcon ConfigItem::symbolNoIcon; +QIcon ConfigItem::choiceYesIcon; +QIcon ConfigItem::choiceNoIcon; +QIcon ConfigItem::menuIcon; +QIcon ConfigItem::menubackIcon; /* * update the displayed of a menu entry @@ -120,14 +98,14 @@ void ConfigItem::updateMenu(void) list = listView(); if (goParent) { - setPixmap(promptColIdx, list->menuBackPix); + setIcon(promptColIdx, menubackIcon); prompt = ".."; goto set_prompt; } sym = menu->sym; prop = menu->prompt; - prompt = _(menu_get_prompt(menu)); + prompt = menu_get_prompt(menu); if (prop) switch (prop->type) { case P_MENU: @@ -137,15 +115,16 @@ void ConfigItem::updateMenu(void) */ if (sym && list->rootEntry == menu) break; - setPixmap(promptColIdx, list->menuPix); + setIcon(promptColIdx, menuIcon); } else { if (sym) break; - setPixmap(promptColIdx, QIcon()); + setIcon(promptColIdx, QIcon()); } goto set_prompt; case P_COMMENT: - setPixmap(promptColIdx, QIcon()); + setIcon(promptColIdx, QIcon()); + prompt = "*** " + prompt + " ***"; goto set_prompt; default: ; @@ -153,7 +132,7 @@ void ConfigItem::updateMenu(void) if (!sym) goto set_prompt; - setText(nameColIdx, QString::fromLocal8Bit(sym->name)); + setText(nameColIdx, sym->name); type = sym_get_type(sym); switch (type) { @@ -161,62 +140,42 @@ void ConfigItem::updateMenu(void) case S_TRISTATE: char ch; - if (!sym_is_changable(sym) && list->optMode == normalOpt) { - setPixmap(promptColIdx, QIcon()); - setText(noColIdx, QString::null); - setText(modColIdx, QString::null); - setText(yesColIdx, QString::null); + if (!sym_is_changeable(sym) && list->optMode == normalOpt) { + setIcon(promptColIdx, QIcon()); break; } expr = sym_get_tristate_value(sym); switch (expr) { case yes: if (sym_is_choice_value(sym) && type == S_BOOLEAN) - setPixmap(promptColIdx, list->choiceYesPix); + setIcon(promptColIdx, choiceYesIcon); else - setPixmap(promptColIdx, list->symbolYesPix); - setText(yesColIdx, "Y"); + setIcon(promptColIdx, symbolYesIcon); ch = 'Y'; break; case mod: - setPixmap(promptColIdx, list->symbolModPix); - setText(modColIdx, "M"); + setIcon(promptColIdx, symbolModIcon); ch = 'M'; break; default: if (sym_is_choice_value(sym) && type == S_BOOLEAN) - setPixmap(promptColIdx, list->choiceNoPix); + setIcon(promptColIdx, choiceNoIcon); else - setPixmap(promptColIdx, list->symbolNoPix); - setText(noColIdx, "N"); + setIcon(promptColIdx, symbolNoIcon); ch = 'N'; break; } - if (expr != no) - setText(noColIdx, sym_tristate_within_range(sym, no) ? "_" : 0); - if (expr != mod) - setText(modColIdx, sym_tristate_within_range(sym, mod) ? "_" : 0); - if (expr != yes) - setText(yesColIdx, sym_tristate_within_range(sym, yes) ? "_" : 0); setText(dataColIdx, QChar(ch)); break; case S_INT: case S_HEX: case S_STRING: - const char* data; - - data = sym_get_string_value(sym); - - setText(dataColIdx, data); - if (type == S_STRING) - prompt = QString("%1: %2").arg(prompt).arg(data); - else - prompt = QString("(%2) %1").arg(prompt).arg(data); + setText(dataColIdx, sym_get_string_value(sym)); break; } if (!sym_has_value(sym) && visible) - prompt += _(" (NEW)"); + prompt += " (NEW)"; set_prompt: setText(promptColIdx, prompt); } @@ -253,6 +212,17 @@ void ConfigItem::init(void) if (list->mode != fullMode) setExpanded(true); sym_calc_value(menu->sym); + + if (menu->sym) { + enum symbol_type type = menu->sym->type; + + // Allow to edit "int", "hex", and "string" in-place in + // the data column. Unfortunately, you cannot specify + // the flags per column. Set ItemIsEditable for all + // columns here, and check the column in createEditor(). + if (type == S_INT || type == S_HEX || type == S_STRING) + setFlags(flags() | Qt::ItemIsEditable); + } } updateMenu(); } @@ -273,53 +243,67 @@ ConfigItem::~ConfigItem(void) } } -ConfigLineEdit::ConfigLineEdit(ConfigView* parent) - : Parent(parent) +QWidget *ConfigItemDelegate::createEditor(QWidget *parent, + const QStyleOptionViewItem &option, + const QModelIndex &index) const { - connect(this, SIGNAL(editingFinished()), SLOT(hide())); -} + ConfigItem *item; -void ConfigLineEdit::show(ConfigItem* i) -{ - item = i; - if (sym_get_string_value(item->menu->sym)) - setText(QString::fromLocal8Bit(sym_get_string_value(item->menu->sym))); - else - setText(QString::null); - Parent::show(); - setFocus(); + // Only the data column is editable + if (index.column() != dataColIdx) + return nullptr; + + // You cannot edit invisible menus + item = static_cast(index.internalPointer()); + if (!item || !item->menu || !menu_is_visible(item->menu)) + return nullptr; + + return QStyledItemDelegate::createEditor(parent, option, index); } -void ConfigLineEdit::keyPressEvent(QKeyEvent* e) +void ConfigItemDelegate::setModelData(QWidget *editor, + QAbstractItemModel *model, + const QModelIndex &index) const { - switch (e->key()) { - case Qt::Key_Escape: - break; - case Qt::Key_Return: - case Qt::Key_Enter: - sym_set_string_value(item->menu->sym, text().toLatin1()); - parent()->updateList(item); - break; - default: - Parent::keyPressEvent(e); - return; + QLineEdit *lineEdit; + ConfigItem *item; + struct symbol *sym; + bool success; + + lineEdit = qobject_cast(editor); + // If this is not a QLineEdit, use the parent's default. + // (does this happen?) + if (!lineEdit) + goto parent; + + item = static_cast(index.internalPointer()); + if (!item || !item->menu) + goto parent; + + sym = item->menu->sym; + if (!sym) + goto parent; + + success = sym_set_string_value(sym, lineEdit->text().toUtf8().data()); + if (success) { + ConfigList::updateListForAll(); + } else { + QMessageBox::information(editor, "qconf", + "Cannot set the data (maybe due to out of range).\n" + "Setting the old value."); + lineEdit->setText(sym_get_string_value(sym)); } - e->accept(); - parent()->list->setFocus(); - hide(); + +parent: + QStyledItemDelegate::setModelData(editor, model, index); } -ConfigList::ConfigList(ConfigView* p, const char *name) - : Parent(p), +ConfigList::ConfigList(QWidget *parent, const char *name) + : QTreeWidget(parent), updateAll(false), - symbolYesPix(xpm_symbol_yes), symbolModPix(xpm_symbol_mod), symbolNoPix(xpm_symbol_no), - choiceYesPix(xpm_choice_yes), choiceNoPix(xpm_choice_no), - menuPix(xpm_menu), menuInvPix(xpm_menu_inv), menuBackPix(xpm_menuback), voidPix(xpm_void), - showName(false), showRange(false), showData(false), mode(singleMode), optMode(normalOpt), + showName(false), mode(singleMode), optMode(normalOpt), rootEntry(0), headerPopup(0) { - int i; - setObjectName(name); setSortingEnabled(false); setRootIsDecorated(true); @@ -327,26 +311,34 @@ ConfigList::ConfigList(ConfigView* p, const char *name) setVerticalScrollMode(ScrollPerPixel); setHorizontalScrollMode(ScrollPerPixel); - setHeaderLabels(QStringList() << _("Option") << _("Name") << "N" << "M" << "Y" << _("Value")); + setHeaderLabels(QStringList() << "Option" << "Name" << "Value"); - connect(this, SIGNAL(itemSelectionChanged(void)), - SLOT(updateSelection(void))); + connect(this, &ConfigList::itemSelectionChanged, + this, &ConfigList::updateSelection); if (name) { configSettings->beginGroup(name); showName = configSettings->value("/showName", false).toBool(); - showRange = configSettings->value("/showRange", false).toBool(); - showData = configSettings->value("/showData", false).toBool(); optMode = (enum optionMode)configSettings->value("/optionMode", 0).toInt(); configSettings->endGroup(); - connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); + connect(configApp, &QApplication::aboutToQuit, + this, &ConfigList::saveSettings); } - addColumn(promptColIdx); + showColumn(promptColIdx); + + setItemDelegate(new ConfigItemDelegate(this)); + + allLists.append(this); reinit(); } +ConfigList::~ConfigList() +{ + allLists.removeOne(this); +} + bool ConfigList::menuSkip(struct menu *menu) { if (optMode == normalOpt && menu_is_visible(menu)) @@ -360,21 +352,22 @@ bool ConfigList::menuSkip(struct menu *menu) void ConfigList::reinit(void) { - removeColumn(dataColIdx); - removeColumn(yesColIdx); - removeColumn(modColIdx); - removeColumn(noColIdx); - removeColumn(nameColIdx); + hideColumn(nameColIdx); if (showName) - addColumn(nameColIdx); - if (showRange) { - addColumn(noColIdx); - addColumn(modColIdx); - addColumn(yesColIdx); - } - if (showData) - addColumn(dataColIdx); + showColumn(nameColIdx); + + updateListAll(); +} + +void ConfigList::setOptionMode(QAction *action) +{ + if (action == showNormalAction) + optMode = normalOpt; + else if (action == showAllAction) + optMode = allOpt; + else + optMode = promptOpt; updateListAll(); } @@ -384,8 +377,6 @@ void ConfigList::saveSettings(void) if (!objectName().isEmpty()) { configSettings->beginGroup(objectName()); configSettings->setValue("/showName", showName); - configSettings->setValue("/showRange", showRange); - configSettings->setValue("/showData", showData); configSettings->setValue("/optionMode", (int)optMode); configSettings->endGroup(); } @@ -424,15 +415,15 @@ void ConfigList::updateSelection(void) emit menuSelected(menu); } -void ConfigList::updateList(ConfigItem* item) +void ConfigList::updateList() { ConfigItem* last = 0; + ConfigItem *item; if (!rootEntry) { if (mode != listMode) goto update; QTreeWidgetItemIterator it(this); - ConfigItem* item; while (*it) { item = (ConfigItem*)(*it); @@ -454,7 +445,7 @@ void ConfigList::updateList(ConfigItem* item) } if ((mode == singleMode || (mode == symbolMode && !(rootEntry->flags & MENU_ROOT))) && rootEntry->sym && rootEntry->prompt) { - item = last ? last->nextSibling() : firstChild(); + item = last ? last->nextSibling() : nullptr; if (!item) item = new ConfigItem(this, last, rootEntry, true); else @@ -466,11 +457,33 @@ void ConfigList::updateList(ConfigItem* item) return; } update: - updateMenuList(this, rootEntry); + updateMenuList(rootEntry); update(); resizeColumnToContents(0); } +void ConfigList::updateListForAll() +{ + QListIterator it(allLists); + + while (it.hasNext()) { + ConfigList *list = it.next(); + + list->updateList(); + } +} + +void ConfigList::updateListAllForAll() +{ + QListIterator it(allLists); + + while (it.hasNext()) { + ConfigList *list = it.next(); + + list->updateList(); + } +} + void ConfigList::setValue(ConfigItem* item, tristate val) { struct symbol* sym; @@ -491,7 +504,7 @@ void ConfigList::setValue(ConfigItem* item, tristate val) return; if (oldval == no && item->menu->list) item->setExpanded(true); - parent()->updateList(item); + ConfigList::updateListForAll(); break; } } @@ -525,12 +538,9 @@ void ConfigList::changeValue(ConfigItem* item) item->setExpanded(true); } if (oldexpr != newexpr) - parent()->updateList(item); + ConfigList::updateListForAll(); break; - case S_INT: - case S_HEX: - case S_STRING: - parent()->lineEdit->show(item); + default: break; } } @@ -544,11 +554,11 @@ void ConfigList::setRootMenu(struct menu *menu) type = menu && menu->prompt ? menu->prompt->type : P_UNKNOWN; if (type != P_MENU) return; - updateMenuList(this, 0); + updateMenuList(0); rootEntry = menu; updateListAll(); if (currentItem()) { - currentItem()->setSelected(hasFocus()); + setSelected(currentItem(), hasFocus()); scrollToItem(currentItem()); } } @@ -636,7 +646,7 @@ void ConfigList::updateMenuList(ConfigItem *parent, struct menu* menu) last = item; continue; } - hide: +hide: if (item && item->menu == child) { last = parent->firstChild(); if (last == item) @@ -648,7 +658,7 @@ void ConfigList::updateMenuList(ConfigItem *parent, struct menu* menu) } } -void ConfigList::updateMenuList(ConfigList *parent, struct menu* menu) +void ConfigList::updateMenuList(struct menu *menu) { struct menu* child; ConfigItem* item; @@ -657,19 +667,19 @@ void ConfigList::updateMenuList(ConfigList *parent, struct menu* menu) enum prop_type type; if (!menu) { - while (parent->topLevelItemCount() > 0) + while (topLevelItemCount() > 0) { - delete parent->takeTopLevelItem(0); + delete takeTopLevelItem(0); } return; } - last = (ConfigItem*)parent->topLevelItem(0); + last = (ConfigItem *)topLevelItem(0); if (last && !last->goParent) last = 0; for (child = menu->list; child; child = child->next) { - item = last ? last->nextSibling() : (ConfigItem*)parent->topLevelItem(0); + item = last ? last->nextSibling() : (ConfigItem *)topLevelItem(0); type = child->prompt ? child->prompt->type : P_UNKNOWN; switch (mode) { @@ -690,7 +700,7 @@ void ConfigList::updateMenuList(ConfigList *parent, struct menu* menu) if (!child->sym && !child->list && !child->prompt) continue; if (!item || item->menu != child) - item = new ConfigItem(parent, last, child, visible); + item = new ConfigItem(this, last, child, visible); else item->testUpdateMenu(visible); @@ -701,9 +711,9 @@ void ConfigList::updateMenuList(ConfigList *parent, struct menu* menu) last = item; continue; } - hide: +hide: if (item && item->menu == child) { - last = (ConfigItem*)parent->topLevelItem(0); + last = (ConfigItem *)topLevelItem(0); if (last == item) last = 0; else while (last->nextSibling() != item) @@ -745,7 +755,10 @@ void ConfigList::keyPressEvent(QKeyEvent* ev) type = menu->prompt ? menu->prompt->type : P_UNKNOWN; if (type == P_MENU && rootEntry != menu && mode != fullMode && mode != menuMode) { - emit menuSelected(menu); + if (mode == menuMode) + emit menuSelected(menu); + else + emit itemSelected(menu); break; } case Qt::Key_Space: @@ -791,7 +804,7 @@ void ConfigList::mouseReleaseEvent(QMouseEvent* e) idx = header()->logicalIndexAt(x); switch (idx) { case promptColIdx: - icon = item->pixmap(promptColIdx); + icon = item->icon(promptColIdx); if (!icon.isNull()) { int off = header()->sectionPosition(0) + visualRect(indexAt(p)).x() + 4; // 4 is Hardcoded image offset. There might be a way to do it properly. if (x >= off && x < off + icon.availableSizes().first().width()) { @@ -802,22 +815,14 @@ void ConfigList::mouseReleaseEvent(QMouseEvent* e) break; ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; if (ptype == P_MENU && rootEntry != menu && - mode != fullMode && mode != menuMode) + mode != fullMode && mode != menuMode && + mode != listMode) emit menuSelected(menu); else changeValue(item); } } break; - case noColIdx: - setValue(item, no); - break; - case modColIdx: - setValue(item, mod); - break; - case yesColIdx: - setValue(item, yes); - break; case dataColIdx: changeValue(item); break; @@ -837,7 +842,7 @@ void ConfigList::mouseMoveEvent(QMouseEvent* e) void ConfigList::mouseDoubleClickEvent(QMouseEvent* e) { - QPoint p = e->pos(); // TODO: Check if this works(was contentsToViewport). + QPoint p = e->pos(); ConfigItem* item = (ConfigItem*)itemAt(p); struct menu *menu; enum prop_type ptype; @@ -852,9 +857,12 @@ void ConfigList::mouseDoubleClickEvent(QMouseEvent* e) if (!menu) goto skip; ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; - if (ptype == P_MENU && (mode == singleMode || mode == symbolMode)) - emit menuSelected(menu); - else if (menu->sym) + if (ptype == P_MENU && mode != listMode) { + if (mode == singleMode) + emit itemSelected(menu); + else if (mode == symbolMode) + emit menuSelected(menu); + } else if (menu->sym) changeValue(item); skip: @@ -870,7 +878,7 @@ void ConfigList::focusInEvent(QFocusEvent *e) ConfigItem* item = (ConfigItem *)currentItem(); if (item) { - item->setSelected(true); + setSelected(item, true); menu = item->menu; } emit gotFocus(menu); @@ -878,114 +886,38 @@ void ConfigList::focusInEvent(QFocusEvent *e) void ConfigList::contextMenuEvent(QContextMenuEvent *e) { - if (e->y() <= header()->geometry().bottom()) { - if (!headerPopup) { - QAction *action; - - headerPopup = new QMenu(this); - action = new QAction(_("Show Name"), this); - action->setCheckable(true); - connect(action, SIGNAL(toggled(bool)), - parent(), SLOT(setShowName(bool))); - connect(parent(), SIGNAL(showNameChanged(bool)), - action, SLOT(setOn(bool))); - action->setChecked(showName); - headerPopup->addAction(action); - action = new QAction(_("Show Range"), this); - action->setCheckable(true); - connect(action, SIGNAL(toggled(bool)), - parent(), SLOT(setShowRange(bool))); - connect(parent(), SIGNAL(showRangeChanged(bool)), - action, SLOT(setOn(bool))); - action->setChecked(showRange); - headerPopup->addAction(action); - action = new QAction(_("Show Data"), this); - action->setCheckable(true); - connect(action, SIGNAL(toggled(bool)), - parent(), SLOT(setShowData(bool))); - connect(parent(), SIGNAL(showDataChanged(bool)), - action, SLOT(setOn(bool))); - action->setChecked(showData); - headerPopup->addAction(action); - } - headerPopup->exec(e->globalPos()); - e->accept(); - } else - e->ignore(); -} - -ConfigView*ConfigView::viewList; -QAction *ConfigView::showNormalAction; -QAction *ConfigView::showAllAction; -QAction *ConfigView::showPromptAction; - -ConfigView::ConfigView(QWidget* parent, const char *name) - : Parent(parent) -{ - setObjectName(name); - QVBoxLayout *verticalLayout = new QVBoxLayout(this); - verticalLayout->setContentsMargins(0, 0, 0, 0); - - list = new ConfigList(this); - verticalLayout->addWidget(list); - lineEdit = new ConfigLineEdit(this); - lineEdit->hide(); - verticalLayout->addWidget(lineEdit); - - this->nextView = viewList; - viewList = this; -} - -ConfigView::~ConfigView(void) -{ - ConfigView** vp; - - for (vp = &viewList; *vp; vp = &(*vp)->nextView) { - if (*vp == this) { - *vp = nextView; - break; - } + if (!headerPopup) { + QAction *action; + + headerPopup = new QMenu(this); + action = new QAction("Show Name", this); + action->setCheckable(true); + connect(action, &QAction::toggled, + this, &ConfigList::setShowName); + connect(this, &ConfigList::showNameChanged, + action, &QAction::setChecked); + action->setChecked(showName); + headerPopup->addAction(action); } -} -void ConfigView::setOptionMode(QAction *act) -{ - if (act == showNormalAction) - list->optMode = normalOpt; - else if (act == showAllAction) - list->optMode = allOpt; - else - list->optMode = promptOpt; - - list->updateListAll(); + headerPopup->exec(e->globalPos()); + e->accept(); } -void ConfigView::setShowName(bool b) +void ConfigList::setShowName(bool on) { - if (list->showName != b) { - list->showName = b; - list->reinit(); - emit showNameChanged(b); - } -} + if (showName == on) + return; -void ConfigView::setShowRange(bool b) -{ - if (list->showRange != b) { - list->showRange = b; - list->reinit(); - emit showRangeChanged(b); - } + showName = on; + reinit(); + emit showNameChanged(on); } -void ConfigView::setShowData(bool b) -{ - if (list->showData != b) { - list->showData = b; - list->reinit(); - emit showDataChanged(b); - } -} +QList ConfigList::allLists; +QAction *ConfigList::showNormalAction; +QAction *ConfigList::showAllAction; +QAction *ConfigList::showPromptAction; void ConfigList::setAllOpen(bool open) { @@ -998,34 +930,31 @@ void ConfigList::setAllOpen(bool open) } } -void ConfigView::updateList(ConfigItem* item) -{ - ConfigView* v; - - for (v = viewList; v; v = v->nextView) - v->list->updateList(item); -} - -void ConfigView::updateListAll(void) -{ - ConfigView* v; - - for (v = viewList; v; v = v->nextView) - v->list->updateListAll(); -} - ConfigInfoView::ConfigInfoView(QWidget* parent, const char *name) : Parent(parent), sym(0), _menu(0) { setObjectName(name); - + setOpenLinks(false); if (!objectName().isEmpty()) { configSettings->beginGroup(objectName()); setShowDebug(configSettings->value("/showDebug", false).toBool()); configSettings->endGroup(); - connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); + connect(configApp, &QApplication::aboutToQuit, + this, &ConfigInfoView::saveSettings); } + + contextMenu = createStandardContextMenu(); + QAction *action = new QAction("Show Debug Info", contextMenu); + + action->setCheckable(true); + connect(action, &QAction::toggled, + this, &ConfigInfoView::setShowDebug); + connect(this, &ConfigInfoView::showDebugChanged, + action, &QAction::setChecked); + action->setChecked(showDebug()); + contextMenu->addSeparator(); + contextMenu->addAction(action); } void ConfigInfoView::saveSettings(void) @@ -1080,116 +1009,126 @@ void ConfigInfoView::symbolInfo(void) void ConfigInfoView::menuInfo(void) { struct symbol* sym; - QString head, debug, help; + QString info; + QTextStream stream(&info); sym = _menu->sym; if (sym) { if (_menu->prompt) { - head += ""; - head += print_filter(_(_menu->prompt->text)); - head += ""; + stream << ""; + stream << print_filter(_menu->prompt->text); + stream << ""; if (sym->name) { - head += " ("; + stream << " ("; if (showDebug()) - head += QString().sprintf("", sym); - head += print_filter(sym->name); + stream << "name << "\">"; + stream << print_filter(sym->name); if (showDebug()) - head += ""; - head += ")"; + stream << ""; + stream << ")"; } } else if (sym->name) { - head += ""; + stream << ""; if (showDebug()) - head += QString().sprintf("", sym); - head += print_filter(sym->name); + stream << "name << "\">"; + stream << print_filter(sym->name); if (showDebug()) - head += ""; - head += ""; + stream << ""; + stream << ""; } - head += "

"; + stream << "

"; if (showDebug()) - debug = debug_info(sym); + stream << debug_info(sym); struct gstr help_gstr = str_new(); + menu_get_ext_help(_menu, &help_gstr); - help = print_filter(str_get(&help_gstr)); + stream << print_filter(str_get(&help_gstr)); str_free(&help_gstr); } else if (_menu->prompt) { - head += ""; - head += print_filter(_(_menu->prompt->text)); - head += "

"; + stream << ""; + stream << print_filter(_menu->prompt->text); + stream << "

"; if (showDebug()) { if (_menu->prompt->visible.expr) { - debug += "  dep: "; - expr_print(_menu->prompt->visible.expr, expr_print_help, &debug, E_NONE); - debug += "

"; + stream << "  dep: "; + expr_print(_menu->prompt->visible.expr, + expr_print_help, &stream, E_NONE); + stream << "

"; } + + stream << "defined at " << _menu->filename << ":" + << _menu->lineno << "

"; } } - if (showDebug()) - debug += QString().sprintf("defined at %s:%d

", _menu->file->name, _menu->lineno); - setText(head + debug + help); + setText(info); } QString ConfigInfoView::debug_info(struct symbol *sym) { QString debug; + QTextStream stream(&debug); - debug += "type: "; - debug += print_filter(sym_type_name(sym->type)); + stream << "type: "; + stream << print_filter(sym_type_name(sym->type)); if (sym_is_choice(sym)) - debug += " (choice)"; + stream << " (choice)"; debug += "
"; if (sym->rev_dep.expr) { - debug += "reverse dep: "; - expr_print(sym->rev_dep.expr, expr_print_help, &debug, E_NONE); - debug += "
"; + stream << "reverse dep: "; + expr_print(sym->rev_dep.expr, expr_print_help, &stream, E_NONE); + stream << "
"; } for (struct property *prop = sym->prop; prop; prop = prop->next) { switch (prop->type) { case P_PROMPT: case P_MENU: - debug += QString().sprintf("prompt: ", prop->menu); - debug += print_filter(_(prop->text)); - debug += "
"; + stream << "prompt: name << "\">"; + stream << print_filter(prop->text); + stream << "
"; break; case P_DEFAULT: case P_SELECT: case P_RANGE: - case P_ENV: - debug += prop_get_type_name(prop->type); - debug += ": "; - expr_print(prop->expr, expr_print_help, &debug, E_NONE); - debug += "
"; + case P_COMMENT: + case P_IMPLY: + case P_SYMBOL: + stream << prop_get_type_name(prop->type); + stream << ": "; + expr_print(prop->expr, expr_print_help, + &stream, E_NONE); + stream << "
"; break; case P_CHOICE: if (sym_is_choice(sym)) { - debug += "choice: "; - expr_print(prop->expr, expr_print_help, &debug, E_NONE); - debug += "
"; + stream << "choice: "; + expr_print(prop->expr, expr_print_help, + &stream, E_NONE); + stream << "
"; } break; default: - debug += "unknown property: "; - debug += prop_get_type_name(prop->type); - debug += "
"; + stream << "unknown property: "; + stream << prop_get_type_name(prop->type); + stream << "
"; } if (prop->visible.expr) { - debug += "    dep: "; - expr_print(prop->visible.expr, expr_print_help, &debug, E_NONE); - debug += "
"; + stream << "    dep: "; + expr_print(prop->visible.expr, expr_print_help, + &stream, E_NONE); + stream << "
"; } } - debug += "
"; + stream << "
"; return debug; } QString ConfigInfoView::print_filter(const QString &str) { - QRegExp re("[<>&\"\\n]"); + QRegularExpression re("[<>&\"\\n]"); QString res = str; for (int i = 0; (i = res.indexOf(re, i)) >= 0;) { switch (res[i].toLatin1()) { @@ -1220,88 +1159,125 @@ QString ConfigInfoView::print_filter(const QString &str) void ConfigInfoView::expr_print_help(void *data, struct symbol *sym, const char *str) { - QString* text = reinterpret_cast(data); - QString str2 = print_filter(str); + QTextStream *stream = reinterpret_cast(data); if (sym && sym->name && !(sym->flags & SYMBOL_CONST)) { - *text += QString().sprintf("", sym); - *text += str2; - *text += ""; - } else - *text += str2; + *stream << "name << "\">"; + *stream << print_filter(str); + *stream << ""; + } else { + *stream << print_filter(str); + } } -QMenu* ConfigInfoView::createStandardContextMenu(const QPoint & pos) +void ConfigInfoView::clicked(const QUrl &url) { - QMenu* popup = Parent::createStandardContextMenu(pos); - QAction* action = new QAction(_("Show Debug Info"), popup); - action->setCheckable(true); - connect(action, SIGNAL(toggled(bool)), SLOT(setShowDebug(bool))); - connect(this, SIGNAL(showDebugChanged(bool)), action, SLOT(setOn(bool))); - action->setChecked(showDebug()); - popup->addSeparator(); - popup->addAction(action); - return popup; + QByteArray str = url.toEncoded(); + const std::size_t count = str.size(); + char *data = new char[count + 1]; + struct symbol **result; + struct menu *m = NULL; + + if (count < 1) { + delete[] data; + return; + } + + memcpy(data, str.constData(), count); + data[count] = '\0'; + + /* Seek for exact match */ + data[0] = '^'; + strcat(data, "$"); + result = sym_re_search(data); + if (!result) { + delete[] data; + return; + } + + sym = *result; + + /* Seek for the menu which holds the symbol */ + for (struct property *prop = sym->prop; prop; prop = prop->next) { + if (prop->type != P_PROMPT && prop->type != P_MENU) + continue; + m = prop->menu; + break; + } + + if (!m) { + /* Symbol is not visible as a menu */ + symbolInfo(); + emit showDebugChanged(true); + } else { + emit menuSelected(m); + } + + free(result); + delete[] data; } -void ConfigInfoView::contextMenuEvent(QContextMenuEvent *e) +void ConfigInfoView::contextMenuEvent(QContextMenuEvent *event) { - Parent::contextMenuEvent(e); + contextMenu->popup(event->globalPos()); + event->accept(); } -ConfigSearchWindow::ConfigSearchWindow(ConfigMainWindow* parent, const char *name) +ConfigSearchWindow::ConfigSearchWindow(ConfigMainWindow *parent) : Parent(parent), result(NULL) { - setObjectName(name); + setObjectName("search"); setWindowTitle("Search Config"); QVBoxLayout* layout1 = new QVBoxLayout(this); layout1->setContentsMargins(11, 11, 11, 11); layout1->setSpacing(6); - QHBoxLayout* layout2 = new QHBoxLayout(0); + + QHBoxLayout* layout2 = new QHBoxLayout(); layout2->setContentsMargins(0, 0, 0, 0); layout2->setSpacing(6); - layout2->addWidget(new QLabel(_("Find:"), this)); + layout2->addWidget(new QLabel("Find:", this)); editField = new QLineEdit(this); - connect(editField, SIGNAL(returnPressed()), SLOT(search())); + connect(editField, &QLineEdit::returnPressed, + this, &ConfigSearchWindow::search); layout2->addWidget(editField); - searchButton = new QPushButton(_("Search"), this); + searchButton = new QPushButton("Search", this); searchButton->setAutoDefault(false); - connect(searchButton, SIGNAL(clicked()), SLOT(search())); + connect(searchButton, &QPushButton::clicked, + this, &ConfigSearchWindow::search); layout2->addWidget(searchButton); layout1->addLayout(layout2); split = new QSplitter(this); split->setOrientation(Qt::Vertical); - list = new ConfigView(split, name); - list->list->mode = listMode; - info = new ConfigInfoView(split, name); - connect(list->list, SIGNAL(menuChanged(struct menu *)), - info, SLOT(setInfo(struct menu *))); - connect(list->list, SIGNAL(menuChanged(struct menu *)), - parent, SLOT(setMenuLink(struct menu *))); + list = new ConfigList(split, "search"); + list->mode = listMode; + info = new ConfigInfoView(split, "search"); + connect(list, &ConfigList::menuChanged, + info, &ConfigInfoView::setInfo); + connect(list, &ConfigList::menuChanged, + parent, &ConfigMainWindow::setMenuLink); layout1->addWidget(split); - if (name) { - QVariant x, y; - int width, height; - bool ok; + QVariant x, y; + int width, height; + bool ok; - configSettings->beginGroup(name); - width = configSettings->value("/window width", parent->width() / 2).toInt(); - height = configSettings->value("/window height", parent->height() / 2).toInt(); - resize(width, height); - x = configSettings->value("/window x"); - y = configSettings->value("/window y"); - if ((x.isValid())&&(y.isValid())) - move(x.toInt(), y.toInt()); - QList sizes = configSettings->readSizes("/split", &ok); - if (ok) - split->setSizes(sizes); - configSettings->endGroup(); - connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); - } + configSettings->beginGroup("search"); + width = configSettings->value("/window width", parent->width() / 2).toInt(); + height = configSettings->value("/window height", parent->height() / 2).toInt(); + resize(width, height); + x = configSettings->value("/window x"); + y = configSettings->value("/window y"); + if (x.isValid() && y.isValid()) + move(x.toInt(), y.toInt()); + QList sizes = configSettings->readSizes("/split", &ok); + if (ok) + split->setSizes(sizes); + configSettings->endGroup(); + connect(configApp, &QApplication::aboutToQuit, + this, &ConfigSearchWindow::saveSettings); } void ConfigSearchWindow::saveSettings(void) @@ -1324,7 +1300,7 @@ void ConfigSearchWindow::search(void) ConfigItem *lastItem = NULL; free(result); - list->list->clear(); + list->clear(); info->clear(); result = sym_re_search(editField->text().toLatin1()); @@ -1332,7 +1308,7 @@ void ConfigSearchWindow::search(void) return; for (p = result; *p; p++) { for_all_prompts((*p), prop) - lastItem = new ConfigItem(list->list, lastItem, prop->menu, + lastItem = new ConfigItem(list, lastItem, prop->menu, menu_is_visible(prop->menu)); } } @@ -1343,116 +1319,143 @@ void ConfigSearchWindow::search(void) ConfigMainWindow::ConfigMainWindow(void) : searchWindow(0) { - QMenuBar* menu; bool ok = true; QVariant x, y; int width, height; char title[256]; - QDesktopWidget *d = configApp->desktop(); snprintf(title, sizeof(title), "%s%s", rootmenu.prompt->text, "" ); setWindowTitle(title); - width = configSettings->value("/window width", d->width() - 64).toInt(); - height = configSettings->value("/window height", d->height() - 64).toInt(); + QRect g = configApp->primaryScreen()->geometry(); + width = configSettings->value("/window width", g.width() - 64).toInt(); + height = configSettings->value("/window height", g.height() - 64).toInt(); resize(width, height); x = configSettings->value("/window x"); y = configSettings->value("/window y"); if ((x.isValid())&&(y.isValid())) move(x.toInt(), y.toInt()); - split1 = new QSplitter(this); + // set up icons + ConfigItem::symbolYesIcon = QIcon(QPixmap(xpm_symbol_yes)); + ConfigItem::symbolModIcon = QIcon(QPixmap(xpm_symbol_mod)); + ConfigItem::symbolNoIcon = QIcon(QPixmap(xpm_symbol_no)); + ConfigItem::choiceYesIcon = QIcon(QPixmap(xpm_choice_yes)); + ConfigItem::choiceNoIcon = QIcon(QPixmap(xpm_choice_no)); + ConfigItem::menuIcon = QIcon(QPixmap(xpm_menu)); + ConfigItem::menubackIcon = QIcon(QPixmap(xpm_menuback)); + + QWidget *widget = new QWidget(this); + QVBoxLayout *layout = new QVBoxLayout(widget); + setCentralWidget(widget); + + split1 = new QSplitter(widget); split1->setOrientation(Qt::Horizontal); - setCentralWidget(split1); + split1->setChildrenCollapsible(false); - menuView = new ConfigView(split1, "menu"); - menuList = menuView->list; + menuList = new ConfigList(widget, "menu"); - split2 = new QSplitter(split1); + split2 = new QSplitter(widget); + split2->setChildrenCollapsible(false); split2->setOrientation(Qt::Vertical); // create config tree - configView = new ConfigView(split2, "config"); - configList = configView->list; + configList = new ConfigList(widget, "config"); + + helpText = new ConfigInfoView(widget, "help"); - helpText = new ConfigInfoView(split2, "help"); + layout->addWidget(split2); + split2->addWidget(split1); + split1->addWidget(configList); + split1->addWidget(menuList); + split2->addWidget(helpText); setTabOrder(configList, helpText); configList->setFocus(); - menu = menuBar(); - toolBar = new QToolBar("Tools", this); - addToolBar(toolBar); - - backAction = new QAction(QPixmap(xpm_back), _("Back"), this); - connect(backAction, SIGNAL(triggered(bool)), SLOT(goBack())); - backAction->setEnabled(false); - QAction *quitAction = new QAction(_("&Quit"), this); - quitAction->setShortcut(Qt::CTRL + Qt::Key_Q); - connect(quitAction, SIGNAL(triggered(bool)), SLOT(close())); - QAction *loadAction = new QAction(QPixmap(xpm_load), _("&Load"), this); - loadAction->setShortcut(Qt::CTRL + Qt::Key_L); - connect(loadAction, SIGNAL(triggered(bool)), SLOT(loadConfig())); - saveAction = new QAction(QPixmap(xpm_save), _("&Save"), this); - saveAction->setShortcut(Qt::CTRL + Qt::Key_S); - connect(saveAction, SIGNAL(triggered(bool)), SLOT(saveConfig())); + backAction = new QAction(QPixmap(xpm_back), "Back", this); + connect(backAction, &QAction::triggered, + this, &ConfigMainWindow::goBack); + + QAction *quitAction = new QAction("&Quit", this); + quitAction->setShortcut(Qt::CTRL | Qt::Key_Q); + connect(quitAction, &QAction::triggered, + this, &ConfigMainWindow::close); + + QAction *loadAction = new QAction(QPixmap(xpm_load), "&Load", this); + loadAction->setShortcut(Qt::CTRL | Qt::Key_L); + connect(loadAction, &QAction::triggered, + this, &ConfigMainWindow::loadConfig); + + saveAction = new QAction(QPixmap(xpm_save), "&Save", this); + saveAction->setShortcut(Qt::CTRL | Qt::Key_S); + connect(saveAction, &QAction::triggered, + this, &ConfigMainWindow::saveConfig); + conf_set_changed_callback(conf_changed); + // Set saveAction's initial state conf_changed(); - QAction *saveAsAction = new QAction(_("Save &As..."), this); - connect(saveAsAction, SIGNAL(triggered(bool)), SLOT(saveConfigAs())); - QAction *searchAction = new QAction(_("&Find"), this); - searchAction->setShortcut(Qt::CTRL + Qt::Key_F); - connect(searchAction, SIGNAL(triggered(bool)), SLOT(searchConfig())); - singleViewAction = new QAction(QPixmap(xpm_single_view), _("Single View"), this); + configname = xstrdup(conf_get_configname()); + + QAction *saveAsAction = new QAction("Save &As...", this); + connect(saveAsAction, &QAction::triggered, + this, &ConfigMainWindow::saveConfigAs); + QAction *searchAction = new QAction("&Find", this); + searchAction->setShortcut(Qt::CTRL | Qt::Key_F); + connect(searchAction, &QAction::triggered, + this, &ConfigMainWindow::searchConfig); + singleViewAction = new QAction(QPixmap(xpm_single_view), "Single View", this); singleViewAction->setCheckable(true); - connect(singleViewAction, SIGNAL(triggered(bool)), SLOT(showSingleView())); - splitViewAction = new QAction(QPixmap(xpm_split_view), _("Split View"), this); + connect(singleViewAction, &QAction::triggered, + this, &ConfigMainWindow::showSingleView); + splitViewAction = new QAction(QPixmap(xpm_split_view), "Split View", this); splitViewAction->setCheckable(true); - connect(splitViewAction, SIGNAL(triggered(bool)), SLOT(showSplitView())); - fullViewAction = new QAction(QPixmap(xpm_tree_view), _("Full View"), this); + connect(splitViewAction, &QAction::triggered, + this, &ConfigMainWindow::showSplitView); + fullViewAction = new QAction(QPixmap(xpm_tree_view), "Full View", this); fullViewAction->setCheckable(true); - connect(fullViewAction, SIGNAL(triggered(bool)), SLOT(showFullView())); + connect(fullViewAction, &QAction::triggered, + this, &ConfigMainWindow::showFullView); - QAction *showNameAction = new QAction(_("Show Name"), this); + QAction *showNameAction = new QAction("Show Name", this); showNameAction->setCheckable(true); - connect(showNameAction, SIGNAL(toggled(bool)), configView, SLOT(setShowName(bool))); - showNameAction->setChecked(configView->showName()); - QAction *showRangeAction = new QAction(_("Show Range"), this); - showRangeAction->setCheckable(true); - connect(showRangeAction, SIGNAL(toggled(bool)), configView, SLOT(setShowRange(bool))); - QAction *showDataAction = new QAction(_("Show Data"), this); - showDataAction->setCheckable(true); - connect(showDataAction, SIGNAL(toggled(bool)), configView, SLOT(setShowData(bool))); + connect(showNameAction, &QAction::toggled, + configList, &ConfigList::setShowName); + showNameAction->setChecked(configList->showName); QActionGroup *optGroup = new QActionGroup(this); optGroup->setExclusive(true); - connect(optGroup, SIGNAL(triggered(QAction*)), configView, - SLOT(setOptionMode(QAction *))); - connect(optGroup, SIGNAL(triggered(QAction *)), menuView, - SLOT(setOptionMode(QAction *))); - - configView->showNormalAction = new QAction(_("Show Normal Options"), optGroup); - configView->showAllAction = new QAction(_("Show All Options"), optGroup); - configView->showPromptAction = new QAction(_("Show Prompt Options"), optGroup); - configView->showNormalAction->setCheckable(true); - configView->showAllAction->setCheckable(true); - configView->showPromptAction->setCheckable(true); - - QAction *showDebugAction = new QAction( _("Show Debug Info"), this); + connect(optGroup, &QActionGroup::triggered, + configList, &ConfigList::setOptionMode); + connect(optGroup, &QActionGroup::triggered, + menuList, &ConfigList::setOptionMode); + + ConfigList::showNormalAction = new QAction("Show Normal Options", optGroup); + ConfigList::showNormalAction->setCheckable(true); + ConfigList::showAllAction = new QAction("Show All Options", optGroup); + ConfigList::showAllAction->setCheckable(true); + ConfigList::showPromptAction = new QAction("Show Prompt Options", optGroup); + ConfigList::showPromptAction->setCheckable(true); + + QAction *showDebugAction = new QAction("Show Debug Info", this); showDebugAction->setCheckable(true); - connect(showDebugAction, SIGNAL(toggled(bool)), helpText, SLOT(setShowDebug(bool))); + connect(showDebugAction, &QAction::toggled, + helpText, &ConfigInfoView::setShowDebug); showDebugAction->setChecked(helpText->showDebug()); - QAction *showIntroAction = new QAction( _("Introduction"), this); - connect(showIntroAction, SIGNAL(triggered(bool)), SLOT(showIntro())); - QAction *showAboutAction = new QAction( _("About"), this); - connect(showAboutAction, SIGNAL(triggered(bool)), SLOT(showAbout())); + QAction *showIntroAction = new QAction("Introduction", this); + connect(showIntroAction, &QAction::triggered, + this, &ConfigMainWindow::showIntro); + QAction *showAboutAction = new QAction("About", this); + connect(showAboutAction, &QAction::triggered, + this, &ConfigMainWindow::showAbout); // init tool bar + QToolBar *toolBar = addToolBar("Tools"); toolBar->addAction(backAction); toolBar->addSeparator(); toolBar->addAction(loadAction); @@ -1462,53 +1465,55 @@ ConfigMainWindow::ConfigMainWindow(void) toolBar->addAction(splitViewAction); toolBar->addAction(fullViewAction); - // create config menu - QMenu* config = menu->addMenu(_("&File")); - config->addAction(loadAction); - config->addAction(saveAction); - config->addAction(saveAsAction); - config->addSeparator(); - config->addAction(quitAction); + // create file menu + QMenu *menu = menuBar()->addMenu("&File"); + menu->addAction(loadAction); + menu->addAction(saveAction); + menu->addAction(saveAsAction); + menu->addSeparator(); + menu->addAction(quitAction); // create edit menu - QMenu* editMenu = menu->addMenu(_("&Edit")); - editMenu->addAction(searchAction); + menu = menuBar()->addMenu("&Edit"); + menu->addAction(searchAction); // create options menu - QMenu* optionMenu = menu->addMenu(_("&Option")); - optionMenu->addAction(showNameAction); - optionMenu->addAction(showRangeAction); - optionMenu->addAction(showDataAction); - optionMenu->addSeparator(); - optionMenu->addActions(optGroup->actions()); - optionMenu->addSeparator(); - optionMenu->addAction(showDebugAction); + menu = menuBar()->addMenu("&Option"); + menu->addAction(showNameAction); + menu->addSeparator(); + menu->addActions(optGroup->actions()); + menu->addSeparator(); + menu->addAction(showDebugAction); // create help menu - menu->addSeparator(); - QMenu* helpMenu = menu->addMenu(_("&Help")); - helpMenu->addAction(showIntroAction); - helpMenu->addAction(showAboutAction); - - connect(configList, SIGNAL(menuChanged(struct menu *)), - helpText, SLOT(setInfo(struct menu *))); - connect(configList, SIGNAL(menuSelected(struct menu *)), - SLOT(changeMenu(struct menu *))); - connect(configList, SIGNAL(parentSelected()), - SLOT(goBack())); - connect(menuList, SIGNAL(menuChanged(struct menu *)), - helpText, SLOT(setInfo(struct menu *))); - connect(menuList, SIGNAL(menuSelected(struct menu *)), - SLOT(changeMenu(struct menu *))); - - connect(configList, SIGNAL(gotFocus(struct menu *)), - helpText, SLOT(setInfo(struct menu *))); - connect(menuList, SIGNAL(gotFocus(struct menu *)), - helpText, SLOT(setInfo(struct menu *))); - connect(menuList, SIGNAL(gotFocus(struct menu *)), - SLOT(listFocusChanged(void))); - connect(helpText, SIGNAL(menuSelected(struct menu *)), - SLOT(setMenuLink(struct menu *))); + menu = menuBar()->addMenu("&Help"); + menu->addAction(showIntroAction); + menu->addAction(showAboutAction); + + connect(helpText, &ConfigInfoView::anchorClicked, + helpText, &ConfigInfoView::clicked); + + connect(configList, &ConfigList::menuChanged, + helpText, &ConfigInfoView::setInfo); + connect(configList, &ConfigList::menuSelected, + this, &ConfigMainWindow::changeMenu); + connect(configList, &ConfigList::itemSelected, + this, &ConfigMainWindow::changeItens); + connect(configList, &ConfigList::parentSelected, + this, &ConfigMainWindow::goBack); + connect(menuList, &ConfigList::menuChanged, + helpText, &ConfigInfoView::setInfo); + connect(menuList, &ConfigList::menuSelected, + this, &ConfigMainWindow::changeMenu); + + connect(configList, &ConfigList::gotFocus, + helpText, &ConfigInfoView::setInfo); + connect(menuList, &ConfigList::gotFocus, + helpText, &ConfigInfoView::setInfo); + connect(menuList, &ConfigList::gotFocus, + this, &ConfigMainWindow::listFocusChanged); + connect(helpText, &ConfigInfoView::menuSelected, + this, &ConfigMainWindow::setMenuLink); QString listMode = configSettings->value("/listMode", "symbol").toString(); if (listMode == "single") @@ -1530,45 +1535,74 @@ ConfigMainWindow::ConfigMainWindow(void) void ConfigMainWindow::loadConfig(void) { - QString s = QFileDialog::getOpenFileName(this, "", conf_get_configname()); - if (s.isNull()) + QString str; + QByteArray ba; + const char *name; + + str = QFileDialog::getOpenFileName(this, "", configname); + if (str.isNull()) return; - if (conf_read(QFile::encodeName(s))) - QMessageBox::information(this, "qconf", _("Unable to load configuration!")); - ConfigView::updateListAll(); + + ba = str.toLocal8Bit(); + name = ba.data(); + + if (conf_read(name)) + QMessageBox::information(this, "qconf", "Unable to load configuration!"); + + free(configname); + configname = xstrdup(name); + + ConfigList::updateListAllForAll(); } bool ConfigMainWindow::saveConfig(void) { - if (conf_write(NULL)) { - QMessageBox::information(this, "qconf", _("Unable to save configuration!")); + if (conf_write(configname)) { + QMessageBox::information(this, "qconf", "Unable to save configuration!"); return false; } + conf_write_autoconf(0); + return true; } void ConfigMainWindow::saveConfigAs(void) { - QString s = QFileDialog::getSaveFileName(this, "", conf_get_configname()); - if (s.isNull()) + QString str; + QByteArray ba; + const char *name; + + str = QFileDialog::getSaveFileName(this, "", configname); + if (str.isNull()) return; - saveConfig(); + + ba = str.toLocal8Bit(); + name = ba.data(); + + if (conf_write(name)) { + QMessageBox::information(this, "qconf", "Unable to save configuration!"); + } + conf_write_autoconf(0); + + free(configname); + configname = xstrdup(name); } void ConfigMainWindow::searchConfig(void) { if (!searchWindow) - searchWindow = new ConfigSearchWindow(this, "search"); + searchWindow = new ConfigSearchWindow(this); searchWindow->show(); } -void ConfigMainWindow::changeMenu(struct menu *menu) +void ConfigMainWindow::changeItens(struct menu *menu) { configList->setRootMenu(menu); - if (configList->rootEntry->parent == &rootmenu) - backAction->setEnabled(false); - else - backAction->setEnabled(true); +} + +void ConfigMainWindow::changeMenu(struct menu *menu) +{ + menuList->setRootMenu(menu); } void ConfigMainWindow::setMenuLink(struct menu *menu) @@ -1588,22 +1622,26 @@ void ConfigMainWindow::setMenuLink(struct menu *menu) return; list->setRootMenu(parent); break; - case symbolMode: + case menuMode: if (menu->flags & MENU_ROOT) { - configList->setRootMenu(menu); + menuList->setRootMenu(menu); configList->clearSelection(); - list = menuList; - } else { list = configList; + } else { parent = menu_get_parent_menu(menu->parent); if (!parent) return; - item = menuList->findConfigItem(parent); + + /* Select the config view */ + item = configList->findConfigItem(parent); if (item) { - item->setSelected(true); - menuList->scrollToItem(item); + configList->setSelected(item, true); + configList->scrollToItem(item); } - list->setRootMenu(parent); + + menuList->setRootMenu(parent); + menuList->clearSelection(); + list = menuList; } break; case fullMode: @@ -1616,9 +1654,10 @@ void ConfigMainWindow::setMenuLink(struct menu *menu) if (list) { item = list->findConfigItem(menu); if (item) { - item->setSelected(true); + list->setSelected(item, true); list->scrollToItem(item); list->setFocus(); + helpText->setInfo(menu); } } } @@ -1631,25 +1670,10 @@ void ConfigMainWindow::listFocusChanged(void) void ConfigMainWindow::goBack(void) { - ConfigItem* item, *oldSelection; - - configList->setParentMenu(); if (configList->rootEntry == &rootmenu) - backAction->setEnabled(false); - - if (menuList->selectedItems().count() == 0) return; - item = (ConfigItem*)menuList->selectedItems().first(); - oldSelection = item; - while (item) { - if (item->menu == configList->rootEntry) { - oldSelection->setSelected(false); - item->setSelected(true); - break; - } - item = (ConfigItem*)item->parent(); - } + configList->setParentMenu(); } void ConfigMainWindow::showSingleView(void) @@ -1661,7 +1685,9 @@ void ConfigMainWindow::showSingleView(void) fullViewAction->setEnabled(true); fullViewAction->setChecked(false); - menuView->hide(); + backAction->setEnabled(true); + + menuList->hide(); menuList->setRootMenu(0); configList->mode = singleMode; if (configList->rootEntry == &rootmenu) @@ -1680,17 +1706,19 @@ void ConfigMainWindow::showSplitView(void) fullViewAction->setEnabled(true); fullViewAction->setChecked(false); - configList->mode = symbolMode; + backAction->setEnabled(false); + + configList->mode = menuMode; if (configList->rootEntry == &rootmenu) configList->updateListAll(); else configList->setRootMenu(&rootmenu); configList->setAllOpen(true); configApp->processEvents(); - menuList->mode = menuMode; + menuList->mode = symbolMode; menuList->setRootMenu(&rootmenu); menuList->setAllOpen(true); - menuView->show(); + menuList->show(); menuList->setFocus(); } @@ -1703,7 +1731,9 @@ void ConfigMainWindow::showFullView(void) fullViewAction->setEnabled(false); fullViewAction->setChecked(true); - menuView->hide(); + backAction->setEnabled(false); + + menuList->hide(); menuList->setRootMenu(0); configList->mode = fullMode; if (configList->rootEntry == &rootmenu) @@ -1715,7 +1745,6 @@ void ConfigMainWindow::showFullView(void) /* * ask for saving configuration before quitting - * TODO ask only when something changed */ void ConfigMainWindow::closeEvent(QCloseEvent* e) { @@ -1723,11 +1752,21 @@ void ConfigMainWindow::closeEvent(QCloseEvent* e) e->accept(); return; } - QMessageBox mb("qconf", _("Save configuration?"), QMessageBox::Warning, - QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::Cancel | QMessageBox::Escape); - mb.setButtonText(QMessageBox::Yes, _("&Save Changes")); - mb.setButtonText(QMessageBox::No, _("&Discard Changes")); - mb.setButtonText(QMessageBox::Cancel, _("Cancel Exit")); + + QMessageBox mb(QMessageBox::Icon::Warning, "qconf", + "Save configuration?"); + + QPushButton *yb = mb.addButton(QMessageBox::Yes); + QPushButton *db = mb.addButton(QMessageBox::No); + QPushButton *cb = mb.addButton(QMessageBox::Cancel); + + yb->setText("&Save Changes"); + db->setText("&Discard Changes"); + cb->setText("Cancel Exit"); + + mb.setDefaultButton(yb); + mb.setEscapeButton(cb); + switch (mb.exec()) { case QMessageBox::Yes: if (saveConfig()) @@ -1746,28 +1785,40 @@ void ConfigMainWindow::closeEvent(QCloseEvent* e) void ConfigMainWindow::showIntro(void) { - static const QString str = _("Welcome to the qconf graphical configuration tool.\n\n" - "For each option, a blank box indicates the feature is disabled, a check\n" - "indicates it is enabled, and a dot indicates that it is to be compiled\n" - "as a module. Clicking on the box will cycle through the three states.\n\n" - "If you do not see an option (e.g., a device driver) that you believe\n" - "should be present, try turning on Show All Options under the Options menu.\n" - "Although there is no cross reference yet to help you figure out what other\n" - "options must be enabled to support the option you are interested in, you can\n" - "still view the help of a grayed-out option.\n\n" - "Toggling Show Debug Info under the Options menu will show the dependencies,\n" - "which you can then match by examining other options.\n\n"); + static const QString str = + "Welcome to the qconf graphical configuration tool.\n" + "\n" + "For bool and tristate options, a blank box indicates the " + "feature is disabled, a check indicates it is enabled, and a " + "dot indicates that it is to be compiled as a module. Clicking " + "on the box will cycle through the three states. For int, hex, " + "and string options, double-clicking or pressing F2 on the " + "Value cell will allow you to edit the value.\n" + "\n" + "If you do not see an option (e.g., a device driver) that you " + "believe should be present, try turning on Show All Options " + "under the Options menu. Enabling Show Debug Info will help you" + "figure out what other options must be enabled to support the " + "option you are interested in, and hyperlinks will navigate to " + "them.\n" + "\n" + "Toggling Show Debug Info under the Options menu will show the " + "dependencies, which you can then match by examining other " + "options.\n"; QMessageBox::information(this, "qconf", str); } void ConfigMainWindow::showAbout(void) { - static const QString str = _("qconf is Copyright (C) 2002 Roman Zippel .\n" - "Copyright (C) 2015 Boris Barbulovski .\n\n" - "Bug reports and feature request can also be entered at http://bugzilla.kernel.org/\n"); + static const QString str = "qconf is Copyright (C) 2002 Roman Zippel .\n" + "Copyright (C) 2015 Boris Barbulovski .\n" + "\n" + "Bug reports and feature request can also be entered at http://bugzilla.kernel.org/\n" + "\n" + "Qt Version: "; - QMessageBox::information(this, "qconf", str); + QMessageBox::information(this, "qconf", str + qVersion()); } void ConfigMainWindow::saveSettings(void) @@ -1826,7 +1877,7 @@ static const char *progname; static void usage(void) { - printf(_("%s [-s] \n").toLatin1().constData(), progname); + printf("%s [-s] \n", progname); exit(0); } @@ -1835,11 +1886,7 @@ int main(int ac, char** av) ConfigMainWindow* v; const char *name; - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); - progname = av[0]; - configApp = new QApplication(ac, av); if (ac > 1 && av[1][0] == '-') { switch (av[1][1]) { case 's': @@ -1860,6 +1907,8 @@ int main(int ac, char** av) conf_read(NULL); //zconfdump(stdout); + configApp = new QApplication(ac, av); + configSettings = new ConfigSettings(); configSettings->beginGroup("/kconfig/qconf"); v = new ConfigMainWindow(); diff --git a/support/kconfig/qconf.h b/support/kconfig/qconf.h index a40036d1b0..78b0a1dfcd 100644 --- a/support/kconfig/qconf.h +++ b/support/kconfig/qconf.h @@ -1,25 +1,24 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ -#include -#include -#include +#include +#include #include -#include +#include +#include #include #include -#include #include -#include -#include +#include +#include +#include + #include "expr.h" -class ConfigView; class ConfigList; class ConfigItem; -class ConfigLineEdit; class ConfigMainWindow; class ConfigSettings : public QSettings { @@ -30,7 +29,7 @@ public: }; enum colIdx { - promptColIdx, nameColIdx, noColIdx, modColIdx, yesColIdx, dataColIdx, colNr + promptColIdx, nameColIdx, dataColIdx }; enum listMode { singleMode, menuMode, symbolMode, fullMode, listMode @@ -43,13 +42,16 @@ class ConfigList : public QTreeWidget { Q_OBJECT typedef class QTreeWidget Parent; public: - ConfigList(ConfigView* p, const char *name = 0); + ConfigList(QWidget *parent, const char *name = 0); + ~ConfigList(); void reinit(void); - ConfigView* parent(void) const - { - return (ConfigView*)Parent::parent(); - } ConfigItem* findConfigItem(struct menu *); + void setSelected(QTreeWidgetItem *item, bool enable) { + for (int i = 0; i < selectedItems().size(); i++) + selectedItems().at(i)->setSelected(false); + + item->setSelected(enable); + } protected: void keyPressEvent(QKeyEvent *e); @@ -63,61 +65,52 @@ protected: public slots: void setRootMenu(struct menu *menu); - void updateList(ConfigItem *item); + void updateList(); void setValue(ConfigItem* item, tristate val); void changeValue(ConfigItem* item); void updateSelection(void); void saveSettings(void); + void setOptionMode(QAction *action); + void setShowName(bool on); + signals: void menuChanged(struct menu *menu); void menuSelected(struct menu *menu); + void itemSelected(struct menu *menu); void parentSelected(void); void gotFocus(struct menu *); + void showNameChanged(bool on); public: void updateListAll(void) { updateAll = true; - updateList(NULL); + updateList(); updateAll = false; } - ConfigList* listView() - { - return this; - } - ConfigItem* firstChild() const - { - return (ConfigItem *)children().first(); - } - void addColumn(colIdx idx) - { - showColumn(idx); - } - void removeColumn(colIdx idx) - { - hideColumn(idx); - } void setAllOpen(bool open); void setParentMenu(void); bool menuSkip(struct menu *); void updateMenuList(ConfigItem *parent, struct menu*); - void updateMenuList(ConfigList *parent, struct menu*); + void updateMenuList(struct menu *menu); bool updateAll; - QPixmap symbolYesPix, symbolModPix, symbolNoPix; - QPixmap choiceYesPix, choiceNoPix; - QPixmap menuPix, menuInvPix, menuBackPix, voidPix; - - bool showName, showRange, showData; + bool showName; enum listMode mode; enum optionMode optMode; struct menu *rootEntry; QPalette disabledColorGroup; QPalette inactivedColorGroup; QMenu* headerPopup; + + static QList allLists; + static void updateListForAll(); + static void updateListAllForAll(); + + static QAction *showNormalAction, *showAllAction, *showPromptAction; }; class ConfigItem : public QTreeWidgetItem { @@ -140,7 +133,6 @@ public: } ~ConfigItem(void); void init(void); - void okRename(int col); void updateMenu(void); void testUpdateMenu(bool v); ConfigList* listView() const @@ -165,82 +157,36 @@ public: return ret; } - void setText(colIdx idx, const QString& text) - { - Parent::setText(idx, text); - } - QString text(colIdx idx) const - { - return Parent::text(idx); - } - void setPixmap(colIdx idx, const QIcon &icon) - { - Parent::setIcon(idx, icon); - } - const QIcon pixmap(colIdx idx) const - { - return icon(idx); - } // TODO: Implement paintCell ConfigItem* nextItem; struct menu *menu; bool visible; bool goParent; -}; -class ConfigLineEdit : public QLineEdit { - Q_OBJECT - typedef class QLineEdit Parent; -public: - ConfigLineEdit(ConfigView* parent); - ConfigView* parent(void) const - { - return (ConfigView*)Parent::parent(); - } - void show(ConfigItem *i); - void keyPressEvent(QKeyEvent *e); - -public: - ConfigItem *item; + static QIcon symbolYesIcon, symbolModIcon, symbolNoIcon; + static QIcon choiceYesIcon, choiceNoIcon; + static QIcon menuIcon, menubackIcon; }; -class ConfigView : public QWidget { - Q_OBJECT - typedef class QWidget Parent; -public: - ConfigView(QWidget* parent, const char *name = 0); - ~ConfigView(void); - static void updateList(ConfigItem* item); - static void updateListAll(void); - - bool showName(void) const { return list->showName; } - bool showRange(void) const { return list->showRange; } - bool showData(void) const { return list->showData; } -public slots: - void setShowName(bool); - void setShowRange(bool); - void setShowData(bool); - void setOptionMode(QAction *); -signals: - void showNameChanged(bool); - void showRangeChanged(bool); - void showDataChanged(bool); +class ConfigItemDelegate : public QStyledItemDelegate +{ +private: + struct menu *menu; public: - ConfigList* list; - ConfigLineEdit* lineEdit; - - static ConfigView* viewList; - ConfigView* nextView; - - static QAction *showNormalAction; - static QAction *showAllAction; - static QAction *showPromptAction; + ConfigItemDelegate(QObject *parent = nullptr) + : QStyledItemDelegate(parent) {} + QWidget *createEditor(QWidget *parent, + const QStyleOptionViewItem &option, + const QModelIndex &index) const override; + void setModelData(QWidget *editor, QAbstractItemModel *model, + const QModelIndex &index) const override; }; class ConfigInfoView : public QTextBrowser { Q_OBJECT typedef class QTextBrowser Parent; + QMenu *contextMenu; public: ConfigInfoView(QWidget* parent, const char *name = 0); bool showDebug(void) const { return _showDebug; } @@ -249,6 +195,7 @@ public slots: void setInfo(struct menu *menu); void saveSettings(void); void setShowDebug(bool); + void clicked (const QUrl &url); signals: void showDebugChanged(bool); @@ -260,8 +207,7 @@ protected: QString debug_info(struct symbol *sym); static QString print_filter(const QString &str); static void expr_print_help(void *data, struct symbol *sym, const char *str); - QMenu *createStandardContextMenu(const QPoint & pos); - void contextMenuEvent(QContextMenuEvent *e); + void contextMenuEvent(QContextMenuEvent *event); struct symbol *sym; struct menu *_menu; @@ -272,7 +218,7 @@ class ConfigSearchWindow : public QDialog { Q_OBJECT typedef class QDialog Parent; public: - ConfigSearchWindow(ConfigMainWindow* parent, const char *name = 0); + ConfigSearchWindow(ConfigMainWindow *parent); public slots: void saveSettings(void); @@ -282,7 +228,7 @@ protected: QLineEdit* editField; QPushButton* searchButton; QSplitter* split; - ConfigView* list; + ConfigList *list; ConfigInfoView* info; struct symbol **result; @@ -291,12 +237,14 @@ protected: class ConfigMainWindow : public QMainWindow { Q_OBJECT + char *configname; static QAction *saveAction; static void conf_changed(void); public: ConfigMainWindow(void); public slots: void changeMenu(struct menu *); + void changeItens(struct menu *); void setMenuLink(struct menu *); void listFocusChanged(void); void goBack(void); @@ -315,12 +263,9 @@ protected: void closeEvent(QCloseEvent *e); ConfigSearchWindow *searchWindow; - ConfigView *menuView; ConfigList *menuList; - ConfigView *configView; ConfigList *configList; ConfigInfoView *helpText; - QToolBar *toolBar; QAction *backAction; QAction *singleViewAction; QAction *splitViewAction; diff --git a/support/kconfig/streamline_config.pl b/support/kconfig/streamline_config.pl index a2e83ab17d..d51cd7ac15 100755 --- a/support/kconfig/streamline_config.pl +++ b/support/kconfig/streamline_config.pl @@ -1,7 +1,7 @@ #!/usr/bin/env perl +# SPDX-License-Identifier: GPL-2.0 # # Copyright 2005-2009 - Steven Rostedt -# Licensed under the terms of the GNU GPL License version 2 # # It's simple enough to figure out how this works. # If not, then you can ask me at stripconfig at goodmis.org @@ -21,7 +21,7 @@ # 1. Boot up the kernel that you want to stream line the config on. # 2. Change directory to the directory holding the source of the # kernel that you just booted. -# 3. Copy the configuraton file to this directory as .config +# 3. Copy the configuration file to this directory as .config # 4. Have all your devices that you need modules for connected and # operational (make sure that their corresponding modules are loaded) # 5. Run this script redirecting the output to some other file @@ -56,8 +56,6 @@ sub dprint { print STDERR @_; } -my $config = ".config"; - my $uname = `uname -r`; chomp $uname; @@ -145,6 +143,7 @@ my %depends; my %selects; my %prompts; my %objects; +my %config2kfile; my $var; my $iflevel = 0; my @ifdeps; @@ -165,13 +164,13 @@ sub read_kconfig { my $last_source = ""; # Check for any environment variables used - while ($source =~ /\$(\w+)/ && $last_source ne $source) { + while ($source =~ /\$\((\w+)\)/ && $last_source ne $source) { my $env = $1; $last_source = $source; - $source =~ s/\$$env/$ENV{$env}/; + $source =~ s/\$\($env\)/$ENV{$env}/; } - open(my $kinfile, '<', $source) || die "Can't open $kconfig"; + open(my $kinfile, '<', $source) || die "Can't open $source"; while (<$kinfile>) { chomp; @@ -203,6 +202,7 @@ sub read_kconfig { if (/^\s*(menu)?config\s+(\S+)\s*$/) { $state = "NEW"; $config = $2; + $config2kfile{"CONFIG_$config"} = $kconfig; # Add depends for 'if' nesting for (my $i = 0; $i < $iflevel; $i++) { @@ -317,7 +317,7 @@ foreach my $makefile (@makefiles) { $_ = convert_vars($_, %make_vars); # collect objects after obj-$(CONFIG_FOO_BAR) - if (/obj-\$\((CONFIG_[^\)]*)\)\s*[+:]?=\s*(.*)/) { + if (/obj-\$[({](CONFIG_[^})]*)[)}]\s*[+:]?=\s*(.*)/) { $var = $1; $objs = $2; @@ -374,7 +374,7 @@ if (defined($lsmod_file)) { $lsmod = "$dir/lsmod"; last; } -} + } if (!defined($lsmod)) { # try just the path $lsmod = "lsmod"; @@ -481,7 +481,7 @@ sub parse_config_depends # The idea is we look at all the configs that select it. If one # is already in our list of configs to enable, then there's nothing # else to do. If there isn't, we pick the first config that was -# enabled in the orignal config and use that. +# enabled in the original config and use that. sub parse_config_selects { my ($config, $p) = @_; @@ -593,6 +593,23 @@ while ($repeat) { } my %setconfigs; +my @preserved_kconfigs; +if (defined($ENV{'LMC_KEEP'})) { + @preserved_kconfigs = split(/:/,$ENV{LMC_KEEP}); +} + +sub in_preserved_kconfigs { + my $kconfig = $config2kfile{$_[0]}; + if (!defined($kconfig)) { + return 0; + } + foreach my $excl (@preserved_kconfigs) { + if($kconfig =~ /^$excl/) { + return 1; + } + } + return 0; +} # Finally, read the .config file and turn off any module enabled that # we could not find a reason to keep enabled. @@ -612,47 +629,52 @@ foreach my $line (@config_file) { } if (/CONFIG_MODULE_SIG_KEY="(.+)"/) { - my $orig_cert = $1; - my $default_cert = "certs/signing_key.pem"; - - # Check that the logic in this script still matches the one in Kconfig - if (!defined($depends{"MODULE_SIG_KEY"}) || - $depends{"MODULE_SIG_KEY"} !~ /"\Q$default_cert\E"/) { - print STDERR "WARNING: MODULE_SIG_KEY assertion failure, ", - "update needed to ", __FILE__, " line ", __LINE__, "\n"; - print; - } elsif ($orig_cert ne $default_cert && ! -f $orig_cert) { - print STDERR "Module signature verification enabled but ", - "module signing key \"$orig_cert\" not found. Resetting ", - "signing key to default value.\n"; - print "CONFIG_MODULE_SIG_KEY=\"$default_cert\"\n"; - } else { - print; - } - next; + my $orig_cert = $1; + my $default_cert = "certs/signing_key.pem"; + + # Check that the logic in this script still matches the one in Kconfig + if (!defined($depends{"MODULE_SIG_KEY"}) || + $depends{"MODULE_SIG_KEY"} !~ /"\Q$default_cert\E"/) { + print STDERR "WARNING: MODULE_SIG_KEY assertion failure, ", + "update needed to ", __FILE__, " line ", __LINE__, "\n"; + print; + } elsif ($orig_cert ne $default_cert && ! -f $orig_cert) { + print STDERR "Module signature verification enabled but ", + "module signing key \"$orig_cert\" not found. Resetting ", + "signing key to default value.\n"; + print "CONFIG_MODULE_SIG_KEY=\"$default_cert\"\n"; + } else { + print; + } + next; } if (/CONFIG_SYSTEM_TRUSTED_KEYS="(.+)"/) { - my $orig_keys = $1; - - if (! -f $orig_keys) { - print STDERR "System keyring enabled but keys \"$orig_keys\" ", - "not found. Resetting keys to default value.\n"; - print "CONFIG_SYSTEM_TRUSTED_KEYS=\"\"\n"; - } else { - print; - } - next; + my $orig_keys = $1; + + if (! -f $orig_keys) { + print STDERR "System keyring enabled but keys \"$orig_keys\" ", + "not found. Resetting keys to default value.\n"; + print "CONFIG_SYSTEM_TRUSTED_KEYS=\"\"\n"; + } else { + print; + } + next; } if (/^(CONFIG.*)=(m|y)/) { + if (in_preserved_kconfigs($1)) { + dprint "Preserve config $1"; + print; + next; + } if (defined($configs{$1})) { if ($localyesconfig) { - $setconfigs{$1} = 'y'; + $setconfigs{$1} = 'y'; print "$1=y\n"; next; } else { - $setconfigs{$1} = $2; + $setconfigs{$1} = $2; } } elsif ($2 eq "m") { print "# $1 is not set\n"; @@ -680,3 +702,5 @@ foreach my $module (keys(%modules)) { print STDERR "\n"; } } + +# vim: softtabstop=4 diff --git a/support/kconfig/symbol.c b/support/kconfig/symbol.c index f0b2e3b310..81fe1884ef 100644 --- a/support/kconfig/symbol.c +++ b/support/kconfig/symbol.c @@ -1,64 +1,41 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ +#include #include #include #include #include -#include +#include "internal.h" #include "lkc.h" struct symbol symbol_yes = { .name = "y", .curr = { "y", yes }, + .menus = LIST_HEAD_INIT(symbol_yes.menus), .flags = SYMBOL_CONST|SYMBOL_VALID, -}, symbol_mod = { +}; + +struct symbol symbol_mod = { .name = "m", .curr = { "m", mod }, + .menus = LIST_HEAD_INIT(symbol_mod.menus), .flags = SYMBOL_CONST|SYMBOL_VALID, -}, symbol_no = { +}; + +struct symbol symbol_no = { .name = "n", .curr = { "n", no }, + .menus = LIST_HEAD_INIT(symbol_no.menus), .flags = SYMBOL_CONST|SYMBOL_VALID, -}, symbol_empty = { - .name = "", - .curr = { "", no }, - .flags = SYMBOL_VALID, }; -struct symbol *sym_defconfig_list; struct symbol *modules_sym; -tristate modules_val; - -struct expr *sym_env_list; - -static void sym_add_default(struct symbol *sym, const char *def) -{ - struct property *prop = prop_alloc(P_DEFAULT, sym); - - prop->expr = expr_alloc_symbol(sym_lookup(def, SYMBOL_CONST)); -} - -void sym_init(void) -{ - struct symbol *sym; - struct utsname uts; - static bool inited = false; - - if (inited) - return; - inited = true; - - uname(&uts); - - sym = sym_lookup("UNAME_RELEASE", 0); - sym->type = S_STRING; - sym->flags |= SYMBOL_AUTO; - sym_add_default(sym, uts.release); -} +static tristate modules_val; +static int sym_warnings; enum symbol_type sym_get_type(struct symbol *sym) { @@ -88,8 +65,6 @@ const char *sym_type_name(enum symbol_type type) return "string"; case S_UNKNOWN: return "unknown"; - case S_OTHER: - break; } return "???"; } @@ -103,15 +78,6 @@ struct property *sym_get_choice_prop(struct symbol *sym) return NULL; } -struct property *sym_get_env_prop(struct symbol *sym) -{ - struct property *prop; - - for_all_properties(sym, prop, P_ENV) - return prop; - return NULL; -} - static struct property *sym_get_default_prop(struct symbol *sym) { struct property *prop; @@ -124,7 +90,7 @@ static struct property *sym_get_default_prop(struct symbol *sym) return NULL; } -static struct property *sym_get_range_prop(struct symbol *sym) +struct property *sym_get_range_prop(struct symbol *sym) { struct property *prop; @@ -155,9 +121,9 @@ static long long sym_get_range_val(struct symbol *sym, int base) static void sym_validate_range(struct symbol *sym) { struct property *prop; + struct symbol *range_sym; int base; long long val, val2; - char str[64]; switch (sym->type) { case S_INT: @@ -173,17 +139,15 @@ static void sym_validate_range(struct symbol *sym) if (!prop) return; val = strtoll(sym->curr.val, NULL, base); - val2 = sym_get_range_val(prop->expr->left.sym, base); + range_sym = prop->expr->left.sym; + val2 = sym_get_range_val(range_sym, base); if (val >= val2) { - val2 = sym_get_range_val(prop->expr->right.sym, base); + range_sym = prop->expr->right.sym; + val2 = sym_get_range_val(range_sym, base); if (val <= val2) return; } - if (sym->type == S_INT) - sprintf(str, "%lld", val2); - else - sprintf(str, "0x%llx", val2); - sym->curr.val = xstrdup(str); + sym->curr.val = range_sym->curr.val; } static void sym_set_changed(struct symbol *sym) @@ -200,9 +164,8 @@ static void sym_set_changed(struct symbol *sym) static void sym_set_all_changed(void) { struct symbol *sym; - int i; - for_all_symbols(i, sym) + for_all_symbols(sym) sym_set_changed(sym); } @@ -259,7 +222,7 @@ static void sym_calc_visibility(struct symbol *sym) sym_set_changed(sym); } tri = no; - if (sym->implied.expr && sym->dir_dep.tri != no) + if (sym->implied.expr) tri = expr_calc_value(sym->implied.expr); if (tri == mod && sym_get_type(sym) == S_BOOLEAN) tri = yes; @@ -352,6 +315,14 @@ static void sym_warn_unmet_dep(struct symbol *sym) " Selected by [m]:\n"); fputs(str_get(&gs), stderr); + sym_warnings++; +} + +bool sym_dep_errors(void) +{ + if (sym_warnings) + return getenv("KCONFIG_WERROR"); + return false; } void sym_calc_value(struct symbol *sym) @@ -377,15 +348,21 @@ void sym_calc_value(struct symbol *sym) oldval = sym->curr; + newval.tri = no; + switch (sym->type) { case S_INT: + newval.val = "0"; + break; case S_HEX: + newval.val = "0x0"; + break; case S_STRING: - newval = symbol_empty.curr; + newval.val = ""; break; case S_BOOLEAN: case S_TRISTATE: - newval = symbol_no.curr; + newval.val = "n"; break; default: sym->curr.val = sym->name; @@ -432,6 +409,8 @@ void sym_calc_value(struct symbol *sym) if (sym->implied.tri != no) { sym->flags |= SYMBOL_WRITE; newval.tri = EXPR_OR(newval.tri, sym->implied.tri); + newval.tri = EXPR_AND(newval.tri, + sym->dir_dep.tri); } } calc_newval: @@ -439,8 +418,7 @@ void sym_calc_value(struct symbol *sym) sym_warn_unmet_dep(sym); newval.tri = EXPR_OR(newval.tri, sym->rev_dep.tri); } - if (newval.tri == mod && - (sym_get_type(sym) == S_BOOLEAN || sym->implied.tri == yes)) + if (newval.tri == mod && sym_get_type(sym) == S_BOOLEAN) newval.tri = yes; break; case S_STRING: @@ -490,7 +468,7 @@ void sym_calc_value(struct symbol *sym) } } - if (sym->flags & SYMBOL_AUTO) + if (sym->flags & SYMBOL_NO_WRITE) sym->flags &= ~SYMBOL_WRITE; if (sym->flags & SYMBOL_NEED_SET_CHOICE_VALUES) @@ -500,11 +478,10 @@ void sym_calc_value(struct symbol *sym) void sym_clear_all_valid(void) { struct symbol *sym; - int i; - for_all_symbols(i, sym) + for_all_symbols(sym) sym->flags &= ~SYMBOL_VALID; - sym_add_change_count(1); + conf_set_changed(true); sym_calc_value(modules_sym); } @@ -522,8 +499,6 @@ bool sym_tristate_within_range(struct symbol *sym, tristate val) return false; if (sym->visible <= sym->rev_dep.tri) return false; - if (sym->implied.tri == yes && val == mod) - return false; if (sym_is_choice_value(sym) && sym->visible == yes) return val == yes; return val >= sym->rev_dep.tri && val <= sym->visible; @@ -733,13 +708,12 @@ const char *sym_get_string_default(struct symbol *sym) { struct property *prop; struct symbol *ds; - const char *str; + const char *str = ""; tristate val; sym_calc_visibility(sym); sym_calc_value(modules_sym); val = symbol_no.curr.tri; - str = symbol_empty.curr.val; /* If symbol has a default value look it up */ prop = sym_get_default_prop(sym); @@ -789,15 +763,17 @@ const char *sym_get_string_default(struct symbol *sym) case yes: return "y"; } case S_INT: + if (!str[0]) + str = "0"; + break; case S_HEX: - return str; - case S_STRING: - return str; - case S_OTHER: - case S_UNKNOWN: + if (!str[0]) + str = "0x0"; + break; + default: break; } - return ""; + return str; } const char *sym_get_string_value(struct symbol *sym) @@ -824,19 +800,12 @@ const char *sym_get_string_value(struct symbol *sym) return (const char *)sym->curr.val; } -bool sym_is_changable(struct symbol *sym) +bool sym_is_changeable(struct symbol *sym) { return sym->visible > sym->rev_dep.tri; } -static unsigned strhash(const char *s) -{ - /* fnv32 hash */ - unsigned hash = 2166136261U; - for (; *s; s++) - hash = (hash ^ *s) * 0x01000193; - return hash; -} +HASHTABLE_DEFINE(sym_hashtable, SYMBOL_HASHSIZE); struct symbol *sym_lookup(const char *name, int flags) { @@ -852,9 +821,9 @@ struct symbol *sym_lookup(const char *name, int flags) case 'n': return &symbol_no; } } - hash = strhash(name) % SYMBOL_HASHSIZE; + hash = strhash(name); - for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) { + hash_for_each_possible(sym_hashtable, symbol, node, hash) { if (symbol->name && !strcmp(symbol->name, name) && (flags ? symbol->flags & flags @@ -871,10 +840,10 @@ struct symbol *sym_lookup(const char *name, int flags) memset(symbol, 0, sizeof(*symbol)); symbol->name = new_name; symbol->type = S_UNKNOWN; - symbol->flags |= flags; + symbol->flags = flags; + INIT_LIST_HEAD(&symbol->menus); - symbol->next = symbol_hash[hash]; - symbol_hash[hash] = symbol; + hash_add(sym_hashtable, &symbol->node, hash); return symbol; } @@ -894,9 +863,9 @@ struct symbol *sym_find(const char *name) case 'n': return &symbol_no; } } - hash = strhash(name) % SYMBOL_HASHSIZE; + hash = strhash(name); - for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) { + hash_for_each_possible(sym_hashtable, symbol, node, hash) { if (symbol->name && !strcmp(symbol->name, name) && !(symbol->flags & SYMBOL_CONST)) @@ -906,102 +875,6 @@ struct symbol *sym_find(const char *name) return symbol; } -/* - * Expand symbol's names embedded in the string given in argument. Symbols' - * name to be expanded shall be prefixed by a '$'. Unknown symbol expands to - * the empty string. - */ -char *sym_expand_string_value(const char *in) -{ - const char *src; - char *res; - size_t reslen; - - /* - * Note: 'in' might come from a token that's about to be - * freed, so make sure to always allocate a new string - */ - reslen = strlen(in) + 1; - res = xmalloc(reslen); - res[0] = '\0'; - - while ((src = strchr(in, '$'))) { - char *p, name[SYMBOL_MAXLENGTH]; - const char *symval = ""; - struct symbol *sym; - size_t newlen; - - strncat(res, in, src - in); - src++; - - p = name; - while (isalnum(*src) || *src == '_') - *p++ = *src++; - *p = '\0'; - - sym = sym_find(name); - if (sym != NULL) { - sym_calc_value(sym); - symval = sym_get_string_value(sym); - } - - newlen = strlen(res) + strlen(symval) + strlen(src) + 1; - if (newlen > reslen) { - reslen = newlen; - res = xrealloc(res, reslen); - } - - strcat(res, symval); - in = src; - } - strcat(res, in); - - return res; -} - -const char *sym_escape_string_value(const char *in) -{ - const char *p; - size_t reslen; - char *res; - size_t l; - - reslen = strlen(in) + strlen("\"\"") + 1; - - p = in; - for (;;) { - l = strcspn(p, "\"\\"); - p += l; - - if (p[0] == '\0') - break; - - reslen++; - p++; - } - - res = xmalloc(reslen); - res[0] = '\0'; - - strcat(res, "\""); - - p = in; - for (;;) { - l = strcspn(p, "\"\\"); - strncat(res, p, l); - p += l; - - if (p[0] == '\0') - break; - - strcat(res, "\\"); - strncat(res, p++, 1); - } - - strcat(res, "\""); - return res; -} - struct sym_match { struct symbol *sym; off_t so, eo; @@ -1052,7 +925,7 @@ struct symbol **sym_re_search(const char *pattern) if (regcomp(&re, pattern, REG_EXTENDED|REG_ICASE)) return NULL; - for_all_symbols(i, sym) { + for_all_symbols(sym) { if (sym->flags & SYMBOL_CONST || !sym->name) continue; if (regexec(&re, sym->name, 1, match, 0)) @@ -1100,7 +973,7 @@ static struct dep_stack { struct dep_stack *prev, *next; struct symbol *sym; struct property *prop; - struct expr *expr; + struct expr **expr; } *check_top; static void dep_stack_insert(struct dep_stack *stack, struct symbol *sym) @@ -1163,39 +1036,50 @@ static void sym_check_print_recursive(struct symbol *last_sym) } if (stack->sym == last_sym) fprintf(stderr, "%s:%d:error: recursive dependency detected!\n", - prop->file->name, prop->lineno); + prop->filename, prop->lineno); - if (stack->expr) { - fprintf(stderr, "%s:%d:\tsymbol %s %s value contains %s\n", - prop->file->name, prop->lineno, + if (sym_is_choice(sym)) { + fprintf(stderr, "%s:%d:\tchoice %s contains symbol %s\n", + menu->filename, menu->lineno, + sym->name ? sym->name : "", + next_sym->name ? next_sym->name : ""); + } else if (sym_is_choice_value(sym)) { + fprintf(stderr, "%s:%d:\tsymbol %s is part of choice %s\n", + menu->filename, menu->lineno, sym->name ? sym->name : "", - prop_get_type_name(prop->type), next_sym->name ? next_sym->name : ""); - } else if (stack->prop) { + } else if (stack->expr == &sym->dir_dep.expr) { fprintf(stderr, "%s:%d:\tsymbol %s depends on %s\n", - prop->file->name, prop->lineno, + prop->filename, prop->lineno, sym->name ? sym->name : "", next_sym->name ? next_sym->name : ""); - } else if (sym_is_choice(sym)) { - fprintf(stderr, "%s:%d:\tchoice %s contains symbol %s\n", - menu->file->name, menu->lineno, + } else if (stack->expr == &sym->rev_dep.expr) { + fprintf(stderr, "%s:%d:\tsymbol %s is selected by %s\n", + prop->filename, prop->lineno, sym->name ? sym->name : "", next_sym->name ? next_sym->name : ""); - } else if (sym_is_choice_value(sym)) { - fprintf(stderr, "%s:%d:\tsymbol %s is part of choice %s\n", - menu->file->name, menu->lineno, + } else if (stack->expr == &sym->implied.expr) { + fprintf(stderr, "%s:%d:\tsymbol %s is implied by %s\n", + prop->filename, prop->lineno, + sym->name ? sym->name : "", + next_sym->name ? next_sym->name : ""); + } else if (stack->expr) { + fprintf(stderr, "%s:%d:\tsymbol %s %s value contains %s\n", + prop->filename, prop->lineno, sym->name ? sym->name : "", + prop_get_type_name(prop->type), next_sym->name ? next_sym->name : ""); } else { - fprintf(stderr, "%s:%d:\tsymbol %s is selected by %s\n", - prop->file->name, prop->lineno, + fprintf(stderr, "%s:%d:\tsymbol %s %s is visible depending on %s\n", + prop->filename, prop->lineno, sym->name ? sym->name : "", + prop_get_type_name(prop->type), next_sym->name ? next_sym->name : ""); } } fprintf(stderr, - "For a resolution refer to Documentation/kbuild/kconfig-language.txt\n" + "For a resolution refer to Documentation/kbuild/kconfig-language.rst\n" "subsection \"Kconfig recursive dependency limitations\"\n" "\n"); @@ -1246,12 +1130,26 @@ static struct symbol *sym_check_sym_deps(struct symbol *sym) dep_stack_insert(&stack, sym); + stack.expr = &sym->dir_dep.expr; + sym2 = sym_check_expr_deps(sym->dir_dep.expr); + if (sym2) + goto out; + + stack.expr = &sym->rev_dep.expr; sym2 = sym_check_expr_deps(sym->rev_dep.expr); if (sym2) goto out; + stack.expr = &sym->implied.expr; + sym2 = sym_check_expr_deps(sym->implied.expr); + if (sym2) + goto out; + + stack.expr = NULL; + for (prop = sym->prop; prop; prop = prop->next) { - if (prop->type == P_CHOICE || prop->type == P_SELECT) + if (prop->type == P_CHOICE || prop->type == P_SELECT || + prop->type == P_IMPLY) continue; stack.prop = prop; sym2 = sym_check_expr_deps(prop->visible.expr); @@ -1259,7 +1157,7 @@ static struct symbol *sym_check_sym_deps(struct symbol *sym) break; if (prop->type != P_DEFAULT || sym_is_choice(sym)) continue; - stack.expr = prop->expr; + stack.expr = &prop->expr; sym2 = sym_check_expr_deps(prop->expr); if (sym2) break; @@ -1337,34 +1235,9 @@ struct symbol *sym_check_deps(struct symbol *sym) sym->flags &= ~SYMBOL_CHECK; } - if (sym2 && sym2 == sym) - sym2 = NULL; - return sym2; } -struct property *prop_alloc(enum prop_type type, struct symbol *sym) -{ - struct property *prop; - struct property **propp; - - prop = xmalloc(sizeof(*prop)); - memset(prop, 0, sizeof(*prop)); - prop->type = type; - prop->sym = sym; - prop->file = current_file; - prop->lineno = zconf_lineno(); - - /* append property to the prop list of symbol */ - if (sym) { - for (propp = &sym->prop; *propp; propp = &(*propp)->next) - ; - *propp = prop; - } - - return prop; -} - struct symbol *prop_get_symbol(struct property *prop) { if (prop->expr && (prop->expr->type == E_SYMBOL || @@ -1378,8 +1251,6 @@ const char *prop_get_type_name(enum prop_type type) switch (type) { case P_PROMPT: return "prompt"; - case P_ENV: - return "env"; case P_COMMENT: return "comment"; case P_MENU: @@ -1401,32 +1272,3 @@ const char *prop_get_type_name(enum prop_type type) } return "unknown"; } - -static void prop_add_env(const char *env) -{ - struct symbol *sym, *sym2; - struct property *prop; - char *p; - - sym = current_entry->sym; - sym->flags |= SYMBOL_AUTO; - for_all_properties(sym, prop, P_ENV) { - sym2 = prop_get_symbol(prop); - if (strcmp(sym2->name, env)) - menu_warn(current_entry, "redefining environment symbol from %s", - sym2->name); - return; - } - - prop = prop_alloc(P_ENV, sym); - prop->expr = expr_alloc_symbol(sym_lookup(env, SYMBOL_CONST)); - - sym_env_list = expr_alloc_one(E_LIST, sym_env_list); - sym_env_list->right.sym = sym; - - p = getenv(env); - if (p) - sym_add_default(sym, p); - else - menu_warn(current_entry, "environment variable %s undefined", env); -} diff --git a/support/kconfig/util.c b/support/kconfig/util.c index 8665f5bb89..439c131b42 100644 --- a/support/kconfig/util.c +++ b/support/kconfig/util.c @@ -1,93 +1,57 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002-2005 Roman Zippel * Copyright (C) 2002-2005 Sam Ravnborg - * - * Released under the terms of the GNU GPL v2.0. */ #include #include #include + +#include "hashtable.h" #include "lkc.h" +unsigned int strhash(const char *s) +{ + /* fnv32 hash */ + unsigned int hash = 2166136261U; + + for (; *s; s++) + hash = (hash ^ *s) * 0x01000193; + return hash; +} + +/* hash table of all parsed Kconfig files */ +static HASHTABLE_DEFINE(file_hashtable, 1U << 11); + +struct file { + struct hlist_node node; + char name[]; +}; + /* file already present in list? If not add it */ -struct file *file_lookup(const char *name) +const char *file_lookup(const char *name) { struct file *file; - char *file_name = sym_expand_string_value(name); + size_t len; + int hash = strhash(name); - for (file = file_list; file; file = file->next) { - if (!strcmp(name, file->name)) { - free(file_name); - return file; - } - } + hash_for_each_possible(file_hashtable, file, node, hash) + if (!strcmp(name, file->name)) + return file->name; - file = xmalloc(sizeof(*file)); + len = strlen(name); + file = xmalloc(sizeof(*file) + len + 1); memset(file, 0, sizeof(*file)); - file->name = file_name; - file->next = file_list; - file_list = file; - return file; -} + memcpy(file->name, name, len); + file->name[len] = '\0'; -/* write a dependency file as used by kbuild to track dependencies */ -int file_write_dep(const char *name) -{ - char *str; - char buf[PATH_MAX+20], buf2[PATH_MAX+1], dir[PATH_MAX+1]; - struct symbol *sym, *env_sym; - struct expr *e; - struct file *file; - FILE *out; - - if (!name) - name = ".kconfig.d"; - - strcpy(dir, conf_get_configname()); - str = strrchr(dir, '/'); - if (str) - str[1] = 0; - else - dir[0] = 0; - - sprintf(buf, "%s..config.tmp", dir); - out = fopen(buf, "w"); - if (!out) - return 1; - fprintf(out, "deps_config := \\\n"); - for (file = file_list; file; file = file->next) { - if (file->next) - fprintf(out, "\t%s \\\n", file->name); - else - fprintf(out, "\t%s\n", file->name); - } - fprintf(out, "\n%s: \\\n" - "\t$(deps_config)\n\n", conf_get_autoconfig_name()); - - expr_list_for_each_sym(sym_env_list, e, sym) { - struct property *prop; - const char *value; - - prop = sym_get_env_prop(sym); - env_sym = prop_get_symbol(prop); - if (!env_sym) - continue; - value = getenv(env_sym->name); - if (!value) - value = ""; - fprintf(out, "ifneq \"$(%s)\" \"%s\"\n", env_sym->name, value); - fprintf(out, "%s: FORCE\n", conf_get_autoconfig_name()); - fprintf(out, "endif\n"); - } + hash_add(file_hashtable, &file->node, hash); - fprintf(out, "\n$(deps_config): ;\n"); - fclose(out); - sprintf(buf2, "%s%s", dir, name); - rename(buf, buf2); - return 0; -} + str_printf(&autoconf_cmd, "\t%s \\\n", name); + return file->name; +} /* Allocate initial growable string */ struct gstr str_new(void) @@ -103,8 +67,7 @@ struct gstr str_new(void) /* Free storage for growable string */ void str_free(struct gstr *gs) { - if (gs->s) - free(gs->s); + free(gs->s); gs->s = NULL; gs->len = 0; } @@ -135,7 +98,7 @@ void str_printf(struct gstr *gs, const char *fmt, ...) } /* Retrieve value of growable string */ -const char *str_get(struct gstr *gs) +char *str_get(struct gstr *gs) { return gs->s; } @@ -177,3 +140,14 @@ char *xstrdup(const char *s) fprintf(stderr, "Out of memory.\n"); exit(1); } + +char *xstrndup(const char *s, size_t n) +{ + char *p; + + p = strndup(s, n); + if (p) + return p; + fprintf(stderr, "Out of memory.\n"); + exit(1); +} diff --git a/support/kconfig/zconf.l b/support/kconfig/zconf.l deleted file mode 100644 index 045093d827..0000000000 --- a/support/kconfig/zconf.l +++ /dev/null @@ -1,372 +0,0 @@ -%option nostdinit noyywrap never-interactive full ecs -%option 8bit nodefault yylineno -%option noinput -%x COMMAND HELP STRING PARAM -%{ -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include -#include -#include - -#include "lkc.h" - -#define START_STRSIZE 16 - -static struct { - struct file *file; - int lineno; -} current_pos; - -static char *text; -static int text_size, text_asize; - -struct buffer { - struct buffer *parent; - YY_BUFFER_STATE state; -}; - -struct buffer *current_buf; - -static int last_ts, first_ts; - -static void zconf_endhelp(void); -static void zconf_endfile(void); - -static void new_string(void) -{ - text = xmalloc(START_STRSIZE); - text_asize = START_STRSIZE; - text_size = 0; - *text = 0; -} - -static void append_string(const char *str, int size) -{ - int new_size = text_size + size + 1; - if (new_size > text_asize) { - new_size += START_STRSIZE - 1; - new_size &= -START_STRSIZE; - text = xrealloc(text, new_size); - text_asize = new_size; - } - memcpy(text + text_size, str, size); - text_size += size; - text[text_size] = 0; -} - -static void alloc_string(const char *str, int size) -{ - text = xmalloc(size + 1); - memcpy(text, str, size); - text[size] = 0; -} - -static void warn_ignored_character(char chr) -{ - fprintf(stderr, - "%s:%d:warning: ignoring unsupported character '%c'\n", - zconf_curname(), zconf_lineno(), chr); -} -%} - -n [A-Za-z0-9_-] - -%% - int str = 0; - int ts, i; - -[ \t]*#.*\n | -[ \t]*\n { - return T_EOL; -} -[ \t]*#.* - - -[ \t]+ { - BEGIN(COMMAND); -} - -. { - unput(yytext[0]); - BEGIN(COMMAND); -} - - -{ - {n}+ { - const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); - BEGIN(PARAM); - current_pos.file = current_file; - current_pos.lineno = yylineno; - if (id && id->flags & TF_COMMAND) { - yylval.id = id; - return id->token; - } - alloc_string(yytext, yyleng); - yylval.string = text; - return T_WORD; - } - . warn_ignored_character(*yytext); - \n { - BEGIN(INITIAL); - return T_EOL; - } -} - -{ - "&&" return T_AND; - "||" return T_OR; - "(" return T_OPEN_PAREN; - ")" return T_CLOSE_PAREN; - "!" return T_NOT; - "=" return T_EQUAL; - "!=" return T_UNEQUAL; - "<=" return T_LESS_EQUAL; - ">=" return T_GREATER_EQUAL; - "<" return T_LESS; - ">" return T_GREATER; - \"|\' { - str = yytext[0]; - new_string(); - BEGIN(STRING); - } - \n BEGIN(INITIAL); return T_EOL; - ({n}|[/.])+ { - const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); - if (id && id->flags & TF_PARAM) { - yylval.id = id; - return id->token; - } - alloc_string(yytext, yyleng); - yylval.string = text; - return T_WORD; - } - #.* /* comment */ - \\\n ; - [[:blank:]]+ - . warn_ignored_character(*yytext); - <> { - BEGIN(INITIAL); - } -} - -{ - [^'"\\\n]+/\n { - append_string(yytext, yyleng); - yylval.string = text; - return T_WORD_QUOTE; - } - [^'"\\\n]+ { - append_string(yytext, yyleng); - } - \\.?/\n { - append_string(yytext + 1, yyleng - 1); - yylval.string = text; - return T_WORD_QUOTE; - } - \\.? { - append_string(yytext + 1, yyleng - 1); - } - \'|\" { - if (str == yytext[0]) { - BEGIN(PARAM); - yylval.string = text; - return T_WORD_QUOTE; - } else - append_string(yytext, 1); - } - \n { - fprintf(stderr, - "%s:%d:warning: multi-line strings not supported\n", - zconf_curname(), zconf_lineno()); - BEGIN(INITIAL); - return T_EOL; - } - <> { - BEGIN(INITIAL); - } -} - -{ - [ \t]+ { - ts = 0; - for (i = 0; i < yyleng; i++) { - if (yytext[i] == '\t') - ts = (ts & ~7) + 8; - else - ts++; - } - last_ts = ts; - if (first_ts) { - if (ts < first_ts) { - zconf_endhelp(); - return T_HELPTEXT; - } - ts -= first_ts; - while (ts > 8) { - append_string(" ", 8); - ts -= 8; - } - append_string(" ", ts); - } - } - [ \t]*\n/[^ \t\n] { - zconf_endhelp(); - return T_HELPTEXT; - } - [ \t]*\n { - append_string("\n", 1); - } - [^ \t\n].* { - while (yyleng) { - if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t')) - break; - yyleng--; - } - append_string(yytext, yyleng); - if (!first_ts) - first_ts = last_ts; - } - <> { - zconf_endhelp(); - return T_HELPTEXT; - } -} - -<> { - if (current_file) { - zconf_endfile(); - return T_EOL; - } - fclose(yyin); - yyterminate(); -} - -%% -void zconf_starthelp(void) -{ - new_string(); - last_ts = first_ts = 0; - BEGIN(HELP); -} - -static void zconf_endhelp(void) -{ - yylval.string = text; - BEGIN(INITIAL); -} - - -/* - * Try to open specified file with following names: - * ./name - * $(srctree)/name - * The latter is used when srctree is separate from objtree - * when compiling the kernel. - * Return NULL if file is not found. - */ -FILE *zconf_fopen(const char *name) -{ - char *env, fullname[PATH_MAX+1]; - FILE *f; - - f = fopen(name, "r"); - if (!f && name != NULL && name[0] != '/') { - env = getenv(SRCTREE); - if (env) { - sprintf(fullname, "%s/%s", env, name); - f = fopen(fullname, "r"); - } - } - return f; -} - -void zconf_initscan(const char *name) -{ - yyin = zconf_fopen(name); - if (!yyin) { - fprintf(stderr, "can't find file %s\n", name); - exit(1); - } - - current_buf = xmalloc(sizeof(*current_buf)); - memset(current_buf, 0, sizeof(*current_buf)); - - current_file = file_lookup(name); - yylineno = 1; -} - -void zconf_nextfile(const char *name) -{ - struct file *iter; - struct file *file = file_lookup(name); - struct buffer *buf = xmalloc(sizeof(*buf)); - memset(buf, 0, sizeof(*buf)); - - current_buf->state = YY_CURRENT_BUFFER; - yyin = zconf_fopen(file->name); - if (!yyin) { - fprintf(stderr, "%s:%d: can't open file \"%s\"\n", - zconf_curname(), zconf_lineno(), file->name); - exit(1); - } - yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); - buf->parent = current_buf; - current_buf = buf; - - current_file->lineno = yylineno; - file->parent = current_file; - - for (iter = current_file; iter; iter = iter->parent) { - if (!strcmp(iter->name, file->name)) { - fprintf(stderr, - "Recursive inclusion detected.\n" - "Inclusion path:\n" - " current file : %s\n", file->name); - iter = file; - do { - iter = iter->parent; - fprintf(stderr, " included from: %s:%d\n", - iter->name, iter->lineno - 1); - } while (strcmp(iter->name, file->name)); - exit(1); - } - } - - yylineno = 1; - current_file = file; -} - -static void zconf_endfile(void) -{ - struct buffer *parent; - - current_file = current_file->parent; - if (current_file) - yylineno = current_file->lineno; - - parent = current_buf->parent; - if (parent) { - fclose(yyin); - yy_delete_buffer(YY_CURRENT_BUFFER); - yy_switch_to_buffer(parent->state); - } - free(current_buf); - current_buf = parent; -} - -int zconf_lineno(void) -{ - return current_pos.lineno; -} - -const char *zconf_curname(void) -{ - return current_pos.file ? current_pos.file->name : ""; -} diff --git a/support/kconfig/zconf.lex.c_shipped b/support/kconfig/zconf.lex.c_shipped deleted file mode 100644 index 33913d43c7..0000000000 --- a/support/kconfig/zconf.lex.c_shipped +++ /dev/null @@ -1,2500 +0,0 @@ - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 4 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif - -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#ifndef SIZE_MAX -#define SIZE_MAX (~(size_t)0) -#endif - -#endif /* ! C99 */ - -#endif /* ! FLEXINT_H */ - -/* begin standard C++ headers. */ - -/* TODO: this is always defined, so inline it */ -#define yyconst const - -#if defined(__GNUC__) && __GNUC__ >= 3 -#define yynoreturn __attribute__((__noreturn__)) -#else -#define yynoreturn -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an - * integer in range [0..255] for use as an array index. - */ -#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN (yy_start) = 1 + 2 * -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START (((yy_start) - 1) / 2) -#define YYSTATE YY_START -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart( yyin ) -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else -#define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ -#endif - -/* The state buf must be large enough to hold one state per character in the main buffer. - */ -#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -extern int yyleng; - -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - - /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires - * access to the local variable yy_act. Since yyless() is a macro, it would break - * existing scanners that call yyless() from OUTSIDE yylex. - * One obvious solution it to make yy_act a global. I tried that, and saw - * a 5% performance hit in a non-yylineno scanner, because yy_act is - * normally declared as a register variable-- so it is not worth it. - */ - #define YY_LESS_LINENO(n) \ - do { \ - int yyl;\ - for ( yyl = n; yyl < yyleng; ++yyl )\ - if ( yytext[yyl] == '\n' )\ - --yylineno;\ - }while(0) - #define YY_LINENO_REWIND_TO(dst) \ - do {\ - const char *p;\ - for ( p = yy_cp-1; p >= (dst); --p)\ - if ( *p == '\n' )\ - --yylineno;\ - }while(0) - -/* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = (yy_hold_char); \ - YY_RESTORE_YY_MORE_OFFSET \ - (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) -#define unput(c) yyunput( c, (yytext_ptr) ) - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - int yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -/* Stack of input buffers. */ -static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ -static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - * - * Returns the top of the stack, or NULL. - */ -#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ - ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ - : NULL) -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = NULL; -static int yy_init = 0; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart ( FILE *input_file ); -void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); -void yy_delete_buffer ( YY_BUFFER_STATE b ); -void yy_flush_buffer ( YY_BUFFER_STATE b ); -void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); -void yypop_buffer_state ( void ); - -static void yyensure_buffer_stack ( void ); -static void yy_load_buffer_state ( void ); -static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); -#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) - -YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); -YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); - -void *yyalloc ( yy_size_t ); -void *yyrealloc ( void *, yy_size_t ); -void yyfree ( void * ); - -#define yy_new_buffer yy_create_buffer -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! YY_CURRENT_BUFFER ){ \ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } -#define yy_set_bol(at_bol) \ - { \ - if ( ! YY_CURRENT_BUFFER ){\ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) - -/* Begin user sect3 */ - -#define yywrap() (/*CONSTCOND*/1) -#define YY_SKIP_YYWRAP -typedef flex_uint8_t YY_CHAR; - -FILE *yyin = NULL, *yyout = NULL; - -typedef int yy_state_type; - -extern int yylineno; -int yylineno = 1; - -extern char *yytext; -#ifdef yytext_ptr -#undef yytext_ptr -#endif -#define yytext_ptr yytext - -static const flex_int16_t yy_nxt[][18] = - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0 - }, - - { - 11, 12, 13, 14, 12, 12, 15, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12 - }, - - { - 11, 12, 13, 14, 12, 12, 15, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12 - }, - - { - 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, - 16, 18, 16, 16, 16, 16, 16, 16 - }, - - { - 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, - 16, 18, 16, 16, 16, 16, 16, 16 - - }, - - { - 11, 19, 20, 21, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19 - }, - - { - 11, 19, 20, 21, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19 - }, - - { - 11, 22, 22, 23, 22, 24, 22, 22, 24, 22, - 22, 22, 22, 22, 22, 22, 25, 22 - }, - - { - 11, 22, 22, 23, 22, 24, 22, 22, 24, 22, - 22, 22, 22, 22, 22, 22, 25, 22 - }, - - { - 11, 26, 27, 28, 29, 30, 31, 32, 30, 33, - 34, 35, 35, 36, 37, 38, 39, 40 - - }, - - { - 11, 26, 27, 28, 29, 30, 31, 32, 30, 33, - 34, 35, 35, 36, 37, 38, 39, 40 - }, - - { - -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, - -11, -11, -11, -11, -11, -11, -11, -11 - }, - - { - 11, -12, -12, -12, -12, -12, -12, -12, -12, -12, - -12, -12, -12, -12, -12, -12, -12, -12 - }, - - { - 11, -13, 41, 42, -13, -13, 43, -13, -13, -13, - -13, -13, -13, -13, -13, -13, -13, -13 - }, - - { - 11, -14, -14, -14, -14, -14, -14, -14, -14, -14, - -14, -14, -14, -14, -14, -14, -14, -14 - - }, - - { - 11, 44, 44, 45, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44 - }, - - { - 11, -16, -16, -16, -16, -16, -16, -16, -16, -16, - -16, -16, -16, -16, -16, -16, -16, -16 - }, - - { - 11, -17, -17, -17, -17, -17, -17, -17, -17, -17, - -17, -17, -17, -17, -17, -17, -17, -17 - }, - - { - 11, -18, -18, -18, -18, -18, -18, -18, -18, -18, - -18, 46, -18, -18, -18, -18, -18, -18 - }, - - { - 11, 47, 47, -19, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47 - - }, - - { - 11, -20, 48, 49, -20, -20, -20, -20, -20, -20, - -20, -20, -20, -20, -20, -20, -20, -20 - }, - - { - 11, 50, -21, -21, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50 - }, - - { - 11, 51, 51, 52, 51, -22, 51, 51, -22, 51, - 51, 51, 51, 51, 51, 51, -22, 51 - }, - - { - 11, -23, -23, -23, -23, -23, -23, -23, -23, -23, - -23, -23, -23, -23, -23, -23, -23, -23 - }, - - { - 11, -24, -24, -24, -24, -24, -24, -24, -24, -24, - -24, -24, -24, -24, -24, -24, -24, -24 - - }, - - { - 11, 53, 53, 54, 53, 53, 53, 53, 53, 53, - 53, 53, 53, 53, 53, 53, 53, 53 - }, - - { - 11, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26 - }, - - { - 11, -27, 55, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27 - }, - - { - 11, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28 - }, - - { - 11, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, 56, -29, -29, -29 - - }, - - { - 11, -30, -30, -30, -30, -30, -30, -30, -30, -30, - -30, -30, -30, -30, -30, -30, -30, -30 - }, - - { - 11, 57, 57, -31, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57 - }, - - { - 11, -32, -32, -32, -32, -32, -32, 58, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32 - }, - - { - 11, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33 - }, - - { - 11, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34 - - }, - - { - 11, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, 59, 59, -35, -35, -35, -35, -35 - }, - - { - 11, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, 60, -36, -36, -36 - }, - - { - 11, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37 - }, - - { - 11, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, 61, -38, -38, -38 - }, - - { - 11, -39, -39, 62, -39, -39, -39, -39, -39, -39, - -39, -39, -39, -39, -39, -39, -39, -39 - - }, - - { - 11, -40, -40, -40, -40, -40, -40, -40, -40, -40, - -40, -40, -40, -40, -40, -40, -40, 63 - }, - - { - 11, -41, 41, 42, -41, -41, 43, -41, -41, -41, - -41, -41, -41, -41, -41, -41, -41, -41 - }, - - { - 11, -42, -42, -42, -42, -42, -42, -42, -42, -42, - -42, -42, -42, -42, -42, -42, -42, -42 - }, - - { - 11, 44, 44, 45, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44 - }, - - { - 11, 44, 44, 45, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44 - - }, - - { - 11, -45, -45, -45, -45, -45, -45, -45, -45, -45, - -45, -45, -45, -45, -45, -45, -45, -45 - }, - - { - 11, -46, -46, -46, -46, -46, -46, -46, -46, -46, - -46, 46, -46, -46, -46, -46, -46, -46 - }, - - { - 11, 47, 47, -47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47 - }, - - { - 11, -48, 48, 49, -48, -48, -48, -48, -48, -48, - -48, -48, -48, -48, -48, -48, -48, -48 - }, - - { - 11, 50, -49, -49, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50 - - }, - - { - 11, -50, -50, -50, -50, -50, -50, -50, -50, -50, - -50, -50, -50, -50, -50, -50, -50, -50 - }, - - { - 11, 51, 51, 52, 51, -51, 51, 51, -51, 51, - 51, 51, 51, 51, 51, 51, -51, 51 - }, - - { - 11, -52, -52, -52, -52, -52, -52, -52, -52, -52, - -52, -52, -52, -52, -52, -52, -52, -52 - }, - - { - 11, -53, -53, 54, -53, -53, -53, -53, -53, -53, - -53, -53, -53, -53, -53, -53, -53, -53 - }, - - { - 11, -54, -54, -54, -54, -54, -54, -54, -54, -54, - -54, -54, -54, -54, -54, -54, -54, -54 - - }, - - { - 11, -55, 55, -55, -55, -55, -55, -55, -55, -55, - -55, -55, -55, -55, -55, -55, -55, -55 - }, - - { - 11, -56, -56, -56, -56, -56, -56, -56, -56, -56, - -56, -56, -56, -56, -56, -56, -56, -56 - }, - - { - 11, 57, 57, -57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57 - }, - - { - 11, -58, -58, -58, -58, -58, -58, -58, -58, -58, - -58, -58, -58, -58, -58, -58, -58, -58 - }, - - { - 11, -59, -59, -59, -59, -59, -59, -59, -59, -59, - -59, 59, 59, -59, -59, -59, -59, -59 - - }, - - { - 11, -60, -60, -60, -60, -60, -60, -60, -60, -60, - -60, -60, -60, -60, -60, -60, -60, -60 - }, - - { - 11, -61, -61, -61, -61, -61, -61, -61, -61, -61, - -61, -61, -61, -61, -61, -61, -61, -61 - }, - - { - 11, -62, -62, -62, -62, -62, -62, -62, -62, -62, - -62, -62, -62, -62, -62, -62, -62, -62 - }, - - { - 11, -63, -63, -63, -63, -63, -63, -63, -63, -63, - -63, -63, -63, -63, -63, -63, -63, -63 - }, - - } ; - -static yy_state_type yy_get_previous_state ( void ); -static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); -static int yy_get_next_buffer ( void ); -static void yynoreturn yy_fatal_error ( const char* msg ); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - (yytext_ptr) = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - (yy_hold_char) = *yy_cp; \ - *yy_cp = '\0'; \ - (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 37 -#define YY_END_OF_BUFFER 38 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static const flex_int16_t yy_accept[64] = - { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 38, 5, 4, 2, 3, 7, 8, 6, 36, 33, - 35, 28, 32, 31, 30, 26, 25, 21, 13, 20, - 23, 26, 11, 12, 22, 18, 14, 19, 26, 26, - 4, 2, 3, 3, 1, 6, 36, 33, 35, 34, - 28, 27, 30, 29, 25, 15, 23, 9, 22, 16, - 17, 24, 10 - } ; - -static const YY_CHAR yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 4, 5, 6, 1, 1, 7, 8, 9, - 10, 1, 1, 1, 11, 12, 12, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 1, 1, 13, - 14, 15, 1, 1, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 1, 16, 1, 1, 11, 1, 11, 11, 11, 11, - - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 1, 17, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -/* Table of booleans, true if rule could match eol. */ -static const flex_int32_t yy_rule_can_match_eol[38] = - { 0, -1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, }; - -extern int yy_flex_debug; -int yy_flex_debug = 0; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *yytext; -#define YY_NO_INPUT 1 - -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include -#include -#include - -#include "lkc.h" - -#define START_STRSIZE 16 - -static struct { - struct file *file; - int lineno; -} current_pos; - -static char *text; -static int text_size, text_asize; - -struct buffer { - struct buffer *parent; - YY_BUFFER_STATE state; -}; - -struct buffer *current_buf; - -static int last_ts, first_ts; - -static void zconf_endhelp(void); -static void zconf_endfile(void); - -static void new_string(void) -{ - text = xmalloc(START_STRSIZE); - text_asize = START_STRSIZE; - text_size = 0; - *text = 0; -} - -static void append_string(const char *str, int size) -{ - int new_size = text_size + size + 1; - if (new_size > text_asize) { - new_size += START_STRSIZE - 1; - new_size &= -START_STRSIZE; - text = xrealloc(text, new_size); - text_asize = new_size; - } - memcpy(text + text_size, str, size); - text_size += size; - text[text_size] = 0; -} - -static void alloc_string(const char *str, int size) -{ - text = xmalloc(size + 1); - memcpy(text, str, size); - text[size] = 0; -} - -static void warn_ignored_character(char chr) -{ - fprintf(stderr, - "%s:%d:warning: ignoring unsupported character '%c'\n", - zconf_curname(), zconf_lineno(), chr); -} - -#define INITIAL 0 -#define COMMAND 1 -#define HELP 2 -#define STRING 3 -#define PARAM 4 - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include -#endif - -#ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * -#endif - -static int yy_init_globals ( void ); - -/* Accessor methods to globals. - These are made visible to non-reentrant scanners for convenience. */ - -int yylex_destroy ( void ); - -int yyget_debug ( void ); - -void yyset_debug ( int debug_flag ); - -YY_EXTRA_TYPE yyget_extra ( void ); - -void yyset_extra ( YY_EXTRA_TYPE user_defined ); - -FILE *yyget_in ( void ); - -void yyset_in ( FILE * _in_str ); - -FILE *yyget_out ( void ); - -void yyset_out ( FILE * _out_str ); - - int yyget_leng ( void ); - -char *yyget_text ( void ); - -int yyget_lineno ( void ); - -void yyset_lineno ( int _line_number ); - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap ( void ); -#else -extern int yywrap ( void ); -#endif -#endif - -#ifndef YY_NO_UNPUT - - static void yyunput ( int c, char *buf_ptr ); - -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy ( char *, const char *, int ); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen ( const char * ); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput ( void ); -#else -static int input ( void ); -#endif - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else -#define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ -#endif - -/* Copy whatever the last rule matched to the standard output. */ -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - errno=0; \ - while ( (result = (int) read( fileno(yyin), buf, (yy_size_t) max_size )) < 0 ) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(yyin); \ - }\ -\ - -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -#endif - -/* end tables serialization structures and prototypes */ - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int yylex (void); - -#define YY_DECL int yylex (void) -#endif /* !YY_DECL */ - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK /*LINTED*/break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -/** The main scanner function which does all the work. - */ -YY_DECL -{ - yy_state_type yy_current_state; - char *yy_cp, *yy_bp; - int yy_act; - - if ( !(yy_init) ) - { - (yy_init) = 1; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! (yy_start) ) - (yy_start) = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! YY_CURRENT_BUFFER ) { - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); - } - - yy_load_buffer_state( ); - } - - { - - int str = 0; - int ts, i; - - while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ - { - yy_cp = (yy_c_buf_p); - - /* Support of yytext. */ - *yy_cp = (yy_hold_char); - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = (yy_start); -yy_match: - while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 ) - ++yy_cp; - - yy_current_state = -yy_current_state; - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - - YY_DO_BEFORE_ACTION; - - if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) - { - int yyl; - for ( yyl = 0; yyl < yyleng; ++yyl ) - if ( yytext[yyl] == '\n' ) - - yylineno++; -; - } - -do_action: /* This label is used only to access EOF actions. */ - - switch ( yy_act ) - { /* beginning of action switch */ -case 1: -/* rule 1 can match eol */ -case 2: -/* rule 2 can match eol */ -YY_RULE_SETUP -{ - return T_EOL; -} - YY_BREAK -case 3: -YY_RULE_SETUP - - YY_BREAK -case 4: -YY_RULE_SETUP -{ - BEGIN(COMMAND); -} - YY_BREAK -case 5: -YY_RULE_SETUP -{ - unput(yytext[0]); - BEGIN(COMMAND); -} - YY_BREAK - -case 6: -YY_RULE_SETUP -{ - const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); - BEGIN(PARAM); - current_pos.file = current_file; - current_pos.lineno = yylineno; - if (id && id->flags & TF_COMMAND) { - yylval.id = id; - return id->token; - } - alloc_string(yytext, yyleng); - yylval.string = text; - return T_WORD; - } - YY_BREAK -case 7: -YY_RULE_SETUP -warn_ignored_character(*yytext); - YY_BREAK -case 8: -/* rule 8 can match eol */ -YY_RULE_SETUP -{ - BEGIN(INITIAL); - return T_EOL; - } - YY_BREAK - -case 9: -YY_RULE_SETUP -return T_AND; - YY_BREAK -case 10: -YY_RULE_SETUP -return T_OR; - YY_BREAK -case 11: -YY_RULE_SETUP -return T_OPEN_PAREN; - YY_BREAK -case 12: -YY_RULE_SETUP -return T_CLOSE_PAREN; - YY_BREAK -case 13: -YY_RULE_SETUP -return T_NOT; - YY_BREAK -case 14: -YY_RULE_SETUP -return T_EQUAL; - YY_BREAK -case 15: -YY_RULE_SETUP -return T_UNEQUAL; - YY_BREAK -case 16: -YY_RULE_SETUP -return T_LESS_EQUAL; - YY_BREAK -case 17: -YY_RULE_SETUP -return T_GREATER_EQUAL; - YY_BREAK -case 18: -YY_RULE_SETUP -return T_LESS; - YY_BREAK -case 19: -YY_RULE_SETUP -return T_GREATER; - YY_BREAK -case 20: -YY_RULE_SETUP -{ - str = yytext[0]; - new_string(); - BEGIN(STRING); - } - YY_BREAK -case 21: -/* rule 21 can match eol */ -YY_RULE_SETUP -BEGIN(INITIAL); return T_EOL; - YY_BREAK -case 22: -YY_RULE_SETUP -{ - const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); - if (id && id->flags & TF_PARAM) { - yylval.id = id; - return id->token; - } - alloc_string(yytext, yyleng); - yylval.string = text; - return T_WORD; - } - YY_BREAK -case 23: -YY_RULE_SETUP -/* comment */ - YY_BREAK -case 24: -/* rule 24 can match eol */ -YY_RULE_SETUP -; - YY_BREAK -case 25: -YY_RULE_SETUP - - YY_BREAK -case 26: -YY_RULE_SETUP -warn_ignored_character(*yytext); - YY_BREAK -case YY_STATE_EOF(PARAM): -{ - BEGIN(INITIAL); - } - YY_BREAK - -case 27: -/* rule 27 can match eol */ -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ -YY_LINENO_REWIND_TO(yy_cp - 1); -(yy_c_buf_p) = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -{ - append_string(yytext, yyleng); - yylval.string = text; - return T_WORD_QUOTE; - } - YY_BREAK -case 28: -YY_RULE_SETUP -{ - append_string(yytext, yyleng); - } - YY_BREAK -case 29: -/* rule 29 can match eol */ -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ -YY_LINENO_REWIND_TO(yy_cp - 1); -(yy_c_buf_p) = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -{ - append_string(yytext + 1, yyleng - 1); - yylval.string = text; - return T_WORD_QUOTE; - } - YY_BREAK -case 30: -YY_RULE_SETUP -{ - append_string(yytext + 1, yyleng - 1); - } - YY_BREAK -case 31: -YY_RULE_SETUP -{ - if (str == yytext[0]) { - BEGIN(PARAM); - yylval.string = text; - return T_WORD_QUOTE; - } else - append_string(yytext, 1); - } - YY_BREAK -case 32: -/* rule 32 can match eol */ -YY_RULE_SETUP -{ - fprintf(stderr, - "%s:%d:warning: multi-line strings not supported\n", - zconf_curname(), zconf_lineno()); - BEGIN(INITIAL); - return T_EOL; - } - YY_BREAK -case YY_STATE_EOF(STRING): -{ - BEGIN(INITIAL); - } - YY_BREAK - -case 33: -YY_RULE_SETUP -{ - ts = 0; - for (i = 0; i < yyleng; i++) { - if (yytext[i] == '\t') - ts = (ts & ~7) + 8; - else - ts++; - } - last_ts = ts; - if (first_ts) { - if (ts < first_ts) { - zconf_endhelp(); - return T_HELPTEXT; - } - ts -= first_ts; - while (ts > 8) { - append_string(" ", 8); - ts -= 8; - } - append_string(" ", ts); - } - } - YY_BREAK -case 34: -/* rule 34 can match eol */ -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ -YY_LINENO_REWIND_TO(yy_cp - 1); -(yy_c_buf_p) = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -{ - zconf_endhelp(); - return T_HELPTEXT; - } - YY_BREAK -case 35: -/* rule 35 can match eol */ -YY_RULE_SETUP -{ - append_string("\n", 1); - } - YY_BREAK -case 36: -YY_RULE_SETUP -{ - while (yyleng) { - if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t')) - break; - yyleng--; - } - append_string(yytext, yyleng); - if (!first_ts) - first_ts = last_ts; - } - YY_BREAK -case YY_STATE_EOF(HELP): -{ - zconf_endhelp(); - return T_HELPTEXT; - } - YY_BREAK - -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(COMMAND): -{ - if (current_file) { - zconf_endfile(); - return T_EOL; - } - fclose(yyin); - yyterminate(); -} - YY_BREAK -case 37: -YY_RULE_SETUP -YY_FATAL_ERROR( "flex scanner jammed" ); - YY_BREAK - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = (yy_hold_char); - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++(yy_c_buf_p); - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = (yy_c_buf_p); - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_END_OF_FILE: - { - (yy_did_buffer_switch_on_eof) = 0; - - if ( yywrap( ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = - (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - (yy_c_buf_p) = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ - } /* end of user's declarations */ -} /* end of yylex */ - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ -static int yy_get_next_buffer (void) -{ - char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - char *source = (yytext_ptr); - int number_to_move, i; - int ret_val; - - if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; - - else - { - int num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; - - int yy_c_buf_p_offset = - (int) ((yy_c_buf_p) - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - yyrealloc( (void *) b->yy_ch_buf, - (yy_size_t) (b->yy_buf_size + 2) ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = NULL; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - - number_to_move - 1; - - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - if ( (yy_n_chars) == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { - /* Extend the array by 50%, plus the number we really need. */ - int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( - (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); - if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - /* "- 2" to take care of EOB's */ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); - } - - (yy_n_chars) += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; - - (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; -} - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - - static yy_state_type yy_get_previous_state (void) -{ - yy_state_type yy_current_state; - char *yy_cp; - - yy_current_state = (yy_start); - - for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) - { - yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; - } - - return yy_current_state; -} - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) -{ - int yy_is_jam; - - yy_current_state = yy_nxt[yy_current_state][1]; - yy_is_jam = (yy_current_state <= 0); - - return yy_is_jam ? 0 : yy_current_state; -} - -#ifndef YY_NO_UNPUT - - static void yyunput (int c, char * yy_bp ) -{ - char *yy_cp; - - yy_cp = (yy_c_buf_p); - - /* undo effects of setting up yytext */ - *yy_cp = (yy_hold_char); - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - { /* need to shift things up to make room */ - /* +2 for EOB chars. */ - int number_to_move = (yy_n_chars) + 2; - char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; - char *source = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; - - while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = - (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } - - *--yy_cp = (char) c; - - if ( c == '\n' ){ - --yylineno; - } - - (yytext_ptr) = yy_bp; - (yy_hold_char) = *yy_cp; - (yy_c_buf_p) = yy_cp; -} - -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus - static int yyinput (void) -#else - static int input (void) -#endif - -{ - int c; - - *(yy_c_buf_p) = (yy_hold_char); - - if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - /* This was really a NUL. */ - *(yy_c_buf_p) = '\0'; - - else - { /* need more input */ - int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); - ++(yy_c_buf_p); - - switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - yyrestart( yyin ); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { - if ( yywrap( ) ) - return 0; - - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(); -#else - return input(); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = (yytext_ptr) + offset; - break; - } - } - } - - c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ - *(yy_c_buf_p) = '\0'; /* preserve yytext */ - (yy_hold_char) = *++(yy_c_buf_p); - - if ( c == '\n' ) - - yylineno++; -; - - return c; -} -#endif /* ifndef YY_NO_INPUT */ - -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * - * @note This function does not reset the start condition to @c INITIAL . - */ - void yyrestart (FILE * input_file ) -{ - - if ( ! YY_CURRENT_BUFFER ){ - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); - } - - yy_init_buffer( YY_CURRENT_BUFFER, input_file ); - yy_load_buffer_state( ); -} - -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * - */ - void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) -{ - - /* TODO. We should be able to replace this entire function body - * with - * yypop_buffer_state(); - * yypush_buffer_state(new_buffer); - */ - yyensure_buffer_stack (); - if ( YY_CURRENT_BUFFER == new_buffer ) - return; - - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( ); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - (yy_did_buffer_switch_on_eof) = 1; -} - -static void yy_load_buffer_state (void) -{ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - (yy_hold_char) = *(yy_c_buf_p); -} - -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * - * @return the allocated buffer state. - */ - YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) -{ - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer( b, file ); - - return b; -} - -/** Destroy the buffer. - * @param b a buffer created with yy_create_buffer() - * - */ - void yy_delete_buffer (YY_BUFFER_STATE b ) -{ - - if ( ! b ) - return; - - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yyfree( (void *) b->yy_ch_buf ); - - yyfree( (void *) b ); -} - -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a yyrestart() or at EOF. - */ - static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) - -{ - int oerrno = errno; - - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - - /* If b is the current buffer, then yy_init_buffer was _probably_ - * called from yyrestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } - - b->yy_is_interactive = 0; - - errno = oerrno; -} - -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * - */ - void yy_flush_buffer (YY_BUFFER_STATE b ) -{ - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( ); -} - -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * - */ -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) -{ - if (new_buffer == NULL) - return; - - yyensure_buffer_stack(); - - /* This block is copied from yy_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - (yy_buffer_stack_top)++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; -} - -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * - */ -void yypop_buffer_state (void) -{ - if (!YY_CURRENT_BUFFER) - return; - - yy_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - if ((yy_buffer_stack_top) > 0) - --(yy_buffer_stack_top); - - if (YY_CURRENT_BUFFER) { - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; - } -} - -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -static void yyensure_buffer_stack (void) -{ - yy_size_t num_to_alloc; - - if (!(yy_buffer_stack)) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ - (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - - memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - (yy_buffer_stack_max) = num_to_alloc; - (yy_buffer_stack_top) = 0; - return; - } - - if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - yy_size_t grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = (yy_buffer_stack_max) + grow_size; - (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc - ((yy_buffer_stack), - num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - - /* zero only the new slots.*/ - memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); - (yy_buffer_stack_max) = num_to_alloc; - } -} - -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) -{ - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return NULL; - - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); - - b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = NULL; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - yy_switch_to_buffer( b ); - - return b; -} - -/** Setup the input buffer state to scan a string. The next call to yylex() will - * scan from a @e copy of @a str. - * @param yystr a NUL-terminated string to scan - * - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * yy_scan_bytes() instead. - */ -YY_BUFFER_STATE yy_scan_string (const char * yystr ) -{ - - return yy_scan_bytes( yystr, (int) strlen(yystr) ); -} - -/** Setup the input buffer state to scan the given bytes. The next call to yylex() will - * scan from a @e copy of @a bytes. - * @param yybytes the byte buffer to scan - * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) -{ - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = (yy_size_t) (_yybytes_len + 2); - buf = (char *) yyalloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < _yybytes_len; ++i ) - buf[i] = yybytes[i]; - - buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer( buf, n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; -} - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -static void yynoreturn yy_fatal_error (const char* msg ) -{ - fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - yytext[yyleng] = (yy_hold_char); \ - (yy_c_buf_p) = yytext + yyless_macro_arg; \ - (yy_hold_char) = *(yy_c_buf_p); \ - *(yy_c_buf_p) = '\0'; \ - yyleng = yyless_macro_arg; \ - } \ - while ( 0 ) - -/* Accessor methods (get/set functions) to struct members. */ - -/** Get the current line number. - * - */ -int yyget_lineno (void) -{ - - return yylineno; -} - -/** Get the input stream. - * - */ -FILE *yyget_in (void) -{ - return yyin; -} - -/** Get the output stream. - * - */ -FILE *yyget_out (void) -{ - return yyout; -} - -/** Get the length of the current token. - * - */ -int yyget_leng (void) -{ - return yyleng; -} - -/** Get the current token. - * - */ - -char *yyget_text (void) -{ - return yytext; -} - -/** Set the current line number. - * @param _line_number line number - * - */ -void yyset_lineno (int _line_number ) -{ - - yylineno = _line_number; -} - -/** Set the input stream. This does not discard the current - * input buffer. - * @param _in_str A readable stream. - * - * @see yy_switch_to_buffer - */ -void yyset_in (FILE * _in_str ) -{ - yyin = _in_str ; -} - -void yyset_out (FILE * _out_str ) -{ - yyout = _out_str ; -} - -int yyget_debug (void) -{ - return yy_flex_debug; -} - -void yyset_debug (int _bdebug ) -{ - yy_flex_debug = _bdebug ; -} - -static int yy_init_globals (void) -{ - /* Initialization is the same as for the non-reentrant scanner. - * This function is called from yylex_destroy(), so don't allocate here. - */ - - /* We do not touch yylineno unless the option is enabled. */ - yylineno = 1; - - (yy_buffer_stack) = NULL; - (yy_buffer_stack_top) = 0; - (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = NULL; - (yy_init) = 0; - (yy_start) = 0; - -/* Defined in main.c */ -#ifdef YY_STDINIT - yyin = stdin; - yyout = stdout; -#else - yyin = NULL; - yyout = NULL; -#endif - - /* For future reference: Set errno on error, since we are called by - * yylex_init() - */ - return 0; -} - -/* yylex_destroy is for both reentrant and non-reentrant scanners. */ -int yylex_destroy (void) -{ - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - yy_delete_buffer( YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - yypop_buffer_state(); - } - - /* Destroy the stack itself. */ - yyfree((yy_buffer_stack) ); - (yy_buffer_stack) = NULL; - - /* Reset the globals. This is important in a non-reentrant scanner so the next time - * yylex() is called, initialization will occur. */ - yy_init_globals( ); - - return 0; -} - -/* - * Internal utility routines. - */ - -#ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, const char * s2, int n ) -{ - - int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; -} -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (const char * s ) -{ - int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; -} -#endif - -void *yyalloc (yy_size_t size ) -{ - return malloc(size); -} - -void *yyrealloc (void * ptr, yy_size_t size ) -{ - - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return realloc(ptr, size); -} - -void yyfree (void * ptr ) -{ - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ -} - -#define YYTABLES_NAME "yytables" - -void zconf_starthelp(void) -{ - new_string(); - last_ts = first_ts = 0; - BEGIN(HELP); -} - -static void zconf_endhelp(void) -{ - yylval.string = text; - BEGIN(INITIAL); -} - -/* - * Try to open specified file with following names: - * ./name - * $(srctree)/name - * The latter is used when srctree is separate from objtree - * when compiling the kernel. - * Return NULL if file is not found. - */ -FILE *zconf_fopen(const char *name) -{ - char *env, fullname[PATH_MAX+1]; - FILE *f; - - f = fopen(name, "r"); - if (!f && name != NULL && name[0] != '/') { - env = getenv(SRCTREE); - if (env) { - sprintf(fullname, "%s/%s", env, name); - f = fopen(fullname, "r"); - } - } - return f; -} - -void zconf_initscan(const char *name) -{ - yyin = zconf_fopen(name); - if (!yyin) { - fprintf(stderr, "can't find file %s\n", name); - exit(1); - } - - current_buf = xmalloc(sizeof(*current_buf)); - memset(current_buf, 0, sizeof(*current_buf)); - - current_file = file_lookup(name); - yylineno = 1; -} - -void zconf_nextfile(const char *name) -{ - struct file *iter; - struct file *file = file_lookup(name); - struct buffer *buf = xmalloc(sizeof(*buf)); - memset(buf, 0, sizeof(*buf)); - - current_buf->state = YY_CURRENT_BUFFER; - yyin = zconf_fopen(file->name); - if (!yyin) { - fprintf(stderr, "%s:%d: can't open file \"%s\"\n", - zconf_curname(), zconf_lineno(), file->name); - exit(1); - } - yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); - buf->parent = current_buf; - current_buf = buf; - - current_file->lineno = yylineno; - file->parent = current_file; - - for (iter = current_file; iter; iter = iter->parent) { - if (!strcmp(iter->name, file->name)) { - fprintf(stderr, - "Recursive inclusion detected.\n" - "Inclusion path:\n" - " current file : %s\n", file->name); - iter = file; - do { - iter = iter->parent; - fprintf(stderr, " included from: %s:%d\n", - iter->name, iter->lineno - 1); - } while (strcmp(iter->name, file->name)); - exit(1); - } - } - - yylineno = 1; - current_file = file; -} - -static void zconf_endfile(void) -{ - struct buffer *parent; - - current_file = current_file->parent; - if (current_file) - yylineno = current_file->lineno; - - parent = current_buf->parent; - if (parent) { - fclose(yyin); - yy_delete_buffer(YY_CURRENT_BUFFER); - yy_switch_to_buffer(parent->state); - } - free(current_buf); - current_buf = parent; -} - -int zconf_lineno(void) -{ - return current_pos.lineno; -} - -const char *zconf_curname(void) -{ - return current_pos.file ? current_pos.file->name : ""; -} - diff --git a/support/kconfig/zconf.tab.c_shipped b/support/kconfig/zconf.tab.c_shipped deleted file mode 100644 index 4eca5b3135..0000000000 --- a/support/kconfig/zconf.tab.c_shipped +++ /dev/null @@ -1,2488 +0,0 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ - -/* Bison implementation for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -/* As a special exception, you may create a larger work that contains - part or all of the Bison parser skeleton and distribute that work - under terms of your choice, so long as that work isn't itself a - parser generator using the skeleton or a modified version thereof - as a parser skeleton. Alternatively, if you modify or redistribute - the parser skeleton itself, you may (at your option) remove this - special exception, which will cause the skeleton and the resulting - Bison output files to be licensed under the GNU General Public - License without this special exception. - - This special exception was added by the Free Software Foundation in - version 2.2 of Bison. */ - -/* C LALR(1) parser skeleton written by Richard Stallman, by - simplifying the original so-called "semantic" parser. */ - -/* All symbols defined below should begin with yy or YY, to avoid - infringing on user name space. This should be done even for local - variables, as they might otherwise be expanded by user macros. - There are some unavoidable exceptions within include files to - define necessary library symbols; they are noted "INFRINGES ON - USER NAME SPACE" below. */ - -/* Identify Bison output. */ -#define YYBISON 1 - -/* Bison version. */ -#define YYBISON_VERSION "3.0.4" - -/* Skeleton name. */ -#define YYSKELETON_NAME "yacc.c" - -/* Pure parsers. */ -#define YYPURE 0 - -/* Push parsers. */ -#define YYPUSH 0 - -/* Pull parsers. */ -#define YYPULL 1 - - - - -/* Copy the first part of user declarations. */ - - -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include -#include -#include -#include - -#include "lkc.h" - -#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) - -#define PRINTD 0x0001 -#define DEBUG_PARSE 0x0002 - -int cdebug = PRINTD; - -int yylex(void); -static void yyerror(const char *err); -static void zconfprint(const char *err, ...); -static void zconf_error(const char *err, ...); -static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken); - -struct symbol *symbol_hash[SYMBOL_HASHSIZE]; - -static struct menu *current_menu, *current_entry; - - - - -# ifndef YY_NULLPTR -# if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif -# endif - -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 0 -#endif - - -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 1 -#endif -#if YYDEBUG -extern int yydebug; -#endif - -/* Token type. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - T_MAINMENU = 258, - T_MENU = 259, - T_ENDMENU = 260, - T_SOURCE = 261, - T_CHOICE = 262, - T_ENDCHOICE = 263, - T_COMMENT = 264, - T_CONFIG = 265, - T_MENUCONFIG = 266, - T_HELP = 267, - T_HELPTEXT = 268, - T_IF = 269, - T_ENDIF = 270, - T_DEPENDS = 271, - T_OPTIONAL = 272, - T_PROMPT = 273, - T_TYPE = 274, - T_DEFAULT = 275, - T_SELECT = 276, - T_IMPLY = 277, - T_RANGE = 278, - T_VISIBLE = 279, - T_OPTION = 280, - T_ON = 281, - T_WORD = 282, - T_WORD_QUOTE = 283, - T_UNEQUAL = 284, - T_LESS = 285, - T_LESS_EQUAL = 286, - T_GREATER = 287, - T_GREATER_EQUAL = 288, - T_CLOSE_PAREN = 289, - T_OPEN_PAREN = 290, - T_EOL = 291, - T_OR = 292, - T_AND = 293, - T_EQUAL = 294, - T_NOT = 295 - }; -#endif - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - -union YYSTYPE -{ - - - char *string; - struct file *file; - struct symbol *symbol; - struct expr *expr; - struct menu *menu; - const struct kconf_id *id; - - -}; - -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 -#endif - - -extern YYSTYPE yylval; - -int yyparse (void); - - - -/* Copy the second part of user declarations. */ - - -/* Include kconf_id.c here so it can see the token constants. */ -#include "kconf_id.c" - - - -#ifdef short -# undef short -#endif - -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; -#else -typedef unsigned char yytype_uint8; -#endif - -#ifdef YYTYPE_INT8 -typedef YYTYPE_INT8 yytype_int8; -#else -typedef signed char yytype_int8; -#endif - -#ifdef YYTYPE_UINT16 -typedef YYTYPE_UINT16 yytype_uint16; -#else -typedef unsigned short int yytype_uint16; -#endif - -#ifdef YYTYPE_INT16 -typedef YYTYPE_INT16 yytype_int16; -#else -typedef short int yytype_int16; -#endif - -#ifndef YYSIZE_T -# ifdef __SIZE_TYPE__ -# define YYSIZE_T __SIZE_TYPE__ -# elif defined size_t -# define YYSIZE_T size_t -# elif ! defined YYSIZE_T -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# else -# define YYSIZE_T unsigned int -# endif -#endif - -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) - -#ifndef YY_ -# if defined YYENABLE_NLS && YYENABLE_NLS -# if ENABLE_NLS -# include /* INFRINGES ON USER NAME SPACE */ -# define YY_(Msgid) dgettext ("bison-runtime", Msgid) -# endif -# endif -# ifndef YY_ -# define YY_(Msgid) Msgid -# endif -#endif - -#ifndef YY_ATTRIBUTE -# if (defined __GNUC__ \ - && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ - || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C -# define YY_ATTRIBUTE(Spec) __attribute__(Spec) -# else -# define YY_ATTRIBUTE(Spec) /* empty */ -# endif -#endif - -#ifndef YY_ATTRIBUTE_PURE -# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) -#endif - -#ifndef YY_ATTRIBUTE_UNUSED -# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) -#endif - -#if !defined _Noreturn \ - && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) -# if defined _MSC_VER && 1200 <= _MSC_VER -# define _Noreturn __declspec (noreturn) -# else -# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) -# endif -#endif - -/* Suppress unused-variable warnings by "using" E. */ -#if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) -#else -# define YYUSE(E) /* empty */ -#endif - -#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ -/* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ - _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ - _Pragma ("GCC diagnostic pop") -#else -# define YY_INITIAL_VALUE(Value) Value -#endif -#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_END -#endif -#ifndef YY_INITIAL_VALUE -# define YY_INITIAL_VALUE(Value) /* Nothing. */ -#endif - - -#if ! defined yyoverflow || YYERROR_VERBOSE - -/* The parser invokes alloca or malloc; define the necessary symbols. */ - -# ifdef YYSTACK_USE_ALLOCA -# if YYSTACK_USE_ALLOCA -# ifdef __GNUC__ -# define YYSTACK_ALLOC __builtin_alloca -# elif defined __BUILTIN_VA_ARG_INCR -# include /* INFRINGES ON USER NAME SPACE */ -# elif defined _AIX -# define YYSTACK_ALLOC __alloca -# elif defined _MSC_VER -# include /* INFRINGES ON USER NAME SPACE */ -# define alloca _alloca -# else -# define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS -# include /* INFRINGES ON USER NAME SPACE */ - /* Use EXIT_SUCCESS as a witness for stdlib.h. */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -# endif -# endif -# endif -# endif -# endif - -# ifdef YYSTACK_ALLOC - /* Pacify GCC's 'empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) -# ifndef YYSTACK_ALLOC_MAXIMUM - /* The OS might guarantee only one guard page at the bottom of the stack, - and a page size can be as small as 4096 bytes. So we cannot safely - invoke alloca (N) if N exceeds 4096. Use a slightly smaller number - to allow for a few compiler-allocated temporary stack slots. */ -# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ -# endif -# else -# define YYSTACK_ALLOC YYMALLOC -# define YYSTACK_FREE YYFREE -# ifndef YYSTACK_ALLOC_MAXIMUM -# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM -# endif -# if (defined __cplusplus && ! defined EXIT_SUCCESS \ - && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) -# include /* INFRINGES ON USER NAME SPACE */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -# endif -# endif -# ifndef YYMALLOC -# define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS -void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# ifndef YYFREE -# define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS -void free (void *); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# endif -#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ - - -#if (! defined yyoverflow \ - && (! defined __cplusplus \ - || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) - -/* A type that is properly aligned for any stack member. */ -union yyalloc -{ - yytype_int16 yyss_alloc; - YYSTYPE yyvs_alloc; -}; - -/* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) - -/* The size of an array large to enough to hold all stacks, each with - N elements. */ -# define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ - + YYSTACK_GAP_MAXIMUM) - -# define YYCOPY_NEEDED 1 - -/* Relocate STACK from its old location to the new one. The - local variables YYSIZE and YYSTACKSIZE give the old and new number of - elements in the stack, and YYPTR gives the new location of the - stack. Advance YYPTR to a properly aligned location for the next - stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (0) - -#endif - -#if defined YYCOPY_NEEDED && YYCOPY_NEEDED -/* Copy COUNT objects from SRC to DST. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) -# else -# define YYCOPY(Dst, Src, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (Dst)[yyi] = (Src)[yyi]; \ - } \ - while (0) -# endif -# endif -#endif /* !YYCOPY_NEEDED */ - -/* YYFINAL -- State number of the termination state. */ -#define YYFINAL 11 -/* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 325 - -/* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 41 -/* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 52 -/* YYNRULES -- Number of rules. */ -#define YYNRULES 126 -/* YYNSTATES -- Number of states. */ -#define YYNSTATES 206 - -/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned - by yylex, with out-of-bounds checking. */ -#define YYUNDEFTOK 2 -#define YYMAXUTOK 295 - -#define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) - -/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, without out-of-bounds checking. */ -static const yytype_uint8 yytranslate[] = -{ - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40 -}; - -#if YYDEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_uint16 yyrline[] = -{ - 0, 110, 110, 110, 112, 112, 116, 124, 134, 136, - 137, 138, 139, 140, 141, 145, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 153, 154, 155, 156, 157, - 158, 162, 163, 169, 176, 181, 188, 197, 199, 200, - 201, 202, 203, 204, 207, 215, 221, 231, 237, 243, - 249, 252, 254, 267, 268, 273, 283, 288, 296, 299, - 301, 302, 303, 304, 305, 308, 314, 325, 331, 341, - 343, 348, 356, 364, 367, 369, 370, 371, 376, 383, - 388, 396, 399, 401, 402, 403, 406, 415, 422, 427, - 433, 451, 453, 454, 455, 458, 466, 468, 469, 472, - 479, 481, 486, 487, 490, 491, 492, 496, 497, 500, - 501, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 518, 520, 521, 524, 525 -}; -#endif - -#if YYDEBUG || YYERROR_VERBOSE || 0 -/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -static const char *const yytname[] = -{ - "$end", "error", "$undefined", "T_MAINMENU", "T_MENU", "T_ENDMENU", - "T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG", - "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS", - "T_OPTIONAL", "T_PROMPT", "T_TYPE", "T_DEFAULT", "T_SELECT", "T_IMPLY", - "T_RANGE", "T_VISIBLE", "T_OPTION", "T_ON", "T_WORD", "T_WORD_QUOTE", - "T_UNEQUAL", "T_LESS", "T_LESS_EQUAL", "T_GREATER", "T_GREATER_EQUAL", - "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_EOL", "T_OR", "T_AND", "T_EQUAL", - "T_NOT", "$accept", "input", "start", "mainmenu_stmt", - "no_mainmenu_stmt", "stmt_list", "option_name", "common_stmt", - "option_error", "config_entry_start", "config_stmt", - "menuconfig_entry_start", "menuconfig_stmt", "config_option_list", - "config_option", "symbol_option", "symbol_option_list", - "symbol_option_arg", "choice", "choice_entry", "choice_end", - "choice_stmt", "choice_option_list", "choice_option", "choice_block", - "if_entry", "if_end", "if_stmt", "if_block", "menu", "menu_entry", - "menu_end", "menu_stmt", "menu_block", "source_stmt", "comment", - "comment_stmt", "help_start", "help", "depends_list", "depends", - "visibility_list", "visible", "prompt_stmt_opt", "prompt", "end", "nl", - "if_expr", "expr", "nonconst_symbol", "symbol", "word_opt", YY_NULLPTR -}; -#endif - -# ifdef YYPRINT -/* YYTOKNUM[NUM] -- (External) token number corresponding to the - (internal) symbol number NUM (which must be that of a token). */ -static const yytype_uint16 yytoknum[] = -{ - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295 -}; -# endif - -#define YYPACT_NINF -92 - -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-92))) - -#define YYTABLE_NINF -89 - -#define yytable_value_is_error(Yytable_value) \ - 0 - - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -static const yytype_int16 yypact[] = -{ - 20, 33, -92, 16, -92, -92, -92, 21, -92, -92, - 29, -92, 152, 186, -92, -92, 40, 67, 33, 71, - 33, 42, 80, 33, 78, 78, 31, 82, -92, -92, - -92, -92, -92, -92, -92, -92, -92, 120, -92, 131, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, 109, -92, - 118, -92, 128, -92, 129, -92, 141, 142, -92, 31, - 31, 74, -92, 69, -92, 144, 145, 28, 119, 248, - 286, 77, 38, 77, 219, -92, -92, -92, -92, -92, - -92, -7, -92, 31, 31, 40, 52, 52, 52, 52, - 52, 52, -92, -92, 146, 147, 158, 33, 33, 31, - 78, 78, 52, -92, 184, -92, -92, -92, -92, 176, - -92, -92, 162, 33, 33, 78, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, 197, - -92, 272, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, 174, -92, -92, -92, -92, -92, -92, -92, - -92, -92, 31, 197, 178, 197, 59, 197, 197, 52, - 27, 179, -92, -92, 197, 180, 197, 31, -92, 111, - 181, -92, -92, 182, 185, 195, 197, 193, -92, -92, - 208, -92, 209, 113, -92, -92, -92, -92, -92, 211, - 33, -92, -92, -92, -92, -92 -}; - - /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ -static const yytype_uint8 yydefact[] = -{ - 7, 0, 107, 0, 3, 8, 8, 7, 102, 103, - 0, 1, 0, 0, 108, 2, 6, 0, 0, 0, - 0, 125, 0, 0, 0, 0, 0, 0, 16, 21, - 17, 18, 23, 19, 20, 22, 24, 0, 25, 0, - 9, 37, 28, 37, 29, 59, 69, 10, 74, 26, - 96, 82, 11, 30, 91, 27, 12, 15, 0, 104, - 0, 126, 0, 105, 0, 122, 0, 0, 124, 0, - 0, 0, 123, 111, 106, 0, 0, 0, 0, 0, - 0, 0, 91, 0, 0, 78, 86, 55, 87, 33, - 35, 0, 119, 0, 0, 71, 0, 0, 0, 0, - 0, 0, 13, 14, 0, 0, 0, 0, 100, 0, - 0, 0, 0, 51, 0, 43, 42, 38, 39, 0, - 41, 40, 0, 0, 100, 0, 63, 64, 60, 62, - 61, 70, 58, 57, 75, 77, 73, 76, 72, 109, - 98, 0, 97, 83, 85, 81, 84, 80, 93, 94, - 92, 118, 120, 121, 117, 112, 113, 114, 115, 116, - 32, 89, 0, 109, 0, 109, 109, 109, 109, 0, - 0, 0, 90, 67, 109, 0, 109, 0, 99, 0, - 0, 44, 101, 0, 0, 0, 109, 53, 50, 31, - 0, 66, 0, 110, 95, 45, 46, 47, 48, 0, - 0, 52, 65, 68, 49, 54 -}; - - /* YYPGOTO[NTERM-NUM]. */ -static const yytype_int16 yypgoto[] = -{ - -92, -92, 241, -92, -92, 244, -92, -13, -66, -92, - -92, -92, -92, 218, -92, -92, -92, -92, -92, -92, - -92, -69, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, 12, -92, -92, -92, -92, -92, 172, 170, - -64, -92, -92, 148, -1, 34, 1, 139, -68, -21, - -91, -92 -}; - - /* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int16 yydefgoto[] = -{ - -1, 3, 4, 5, 6, 12, 39, 40, 116, 41, - 42, 43, 44, 77, 117, 118, 170, 201, 45, 46, - 132, 47, 79, 128, 80, 48, 136, 49, 81, 50, - 51, 145, 52, 83, 53, 54, 55, 119, 120, 84, - 121, 82, 142, 164, 165, 56, 7, 178, 71, 72, - 73, 62 -}; - - /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_int16 yytable[] = -{ - 10, 91, 92, 66, 67, 154, 155, 156, 157, 158, - 159, 16, 135, 127, 144, 130, 11, 58, 149, 60, - 150, 169, 64, 1, 1, 152, 153, 151, -34, 104, - 93, 94, -34, -34, -34, -34, -34, -34, -34, -34, - 105, 166, -34, -34, 106, -34, 107, 108, 109, 110, - 111, 112, -34, 113, 187, 114, 2, 14, 65, 68, - 8, 9, 139, 188, 115, 2, 69, 131, 134, 61, - 143, 70, 95, 177, 140, 149, 14, 150, 186, 65, - 68, 18, 19, 20, 21, 22, 23, 24, 25, 167, - 168, 26, 27, 137, 179, 146, 93, 94, 96, 97, - 98, 99, 100, 57, 176, 65, 163, 59, 101, 193, - 2, 93, 94, 38, 133, 138, 63, 147, 74, -36, - 104, 75, 174, -36, -36, -36, -36, -36, -36, -36, - -36, 105, 76, -36, -36, 106, -36, 107, 108, 109, - 110, 111, 112, -36, 113, 85, 114, 194, 93, 94, - 93, 94, -4, 17, 86, 115, 18, 19, 20, 21, - 22, 23, 24, 25, 87, 88, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 89, 90, 37, - 102, 103, 160, 161, 162, 171, -5, 17, 38, 172, - 18, 19, 20, 21, 22, 23, 24, 25, 173, 205, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 177, 94, 37, 181, 189, 191, 195, 196, -88, - 104, 197, 38, -88, -88, -88, -88, -88, -88, -88, - -88, 198, 200, -88, -88, 106, -88, -88, -88, -88, - -88, -88, -88, -88, 202, 203, 114, 204, 15, 104, - 13, 129, 141, -56, -56, 148, -56, -56, -56, -56, - 105, 78, -56, -56, 106, 122, 123, 124, 125, 0, - 0, 0, 175, 104, 0, 114, -79, -79, -79, -79, - -79, -79, -79, -79, 126, 0, -79, -79, 106, 0, - 0, 19, 20, 0, 22, 23, 24, 25, 0, 114, - 26, 27, 180, 0, 182, 183, 184, 185, 148, 0, - 0, 0, 0, 190, 0, 192, 0, 0, 0, 0, - 0, 0, 38, 0, 0, 199 -}; - -static const yytype_int16 yycheck[] = -{ - 1, 69, 70, 24, 25, 96, 97, 98, 99, 100, - 101, 10, 81, 79, 83, 79, 0, 18, 84, 20, - 84, 112, 23, 3, 3, 93, 94, 34, 0, 1, - 37, 38, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 109, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 27, 27, 36, 36, 27, 28, - 27, 28, 24, 36, 36, 36, 35, 80, 81, 27, - 83, 40, 71, 14, 36, 141, 36, 141, 169, 27, - 28, 4, 5, 6, 7, 8, 9, 10, 11, 110, - 111, 14, 15, 81, 162, 83, 37, 38, 29, 30, - 31, 32, 33, 36, 125, 27, 107, 36, 39, 177, - 36, 37, 38, 36, 80, 81, 36, 83, 36, 0, - 1, 1, 123, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 1, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 36, 27, 36, 37, 38, - 37, 38, 0, 1, 36, 36, 4, 5, 6, 7, - 8, 9, 10, 11, 36, 36, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 36, 36, 27, - 36, 36, 36, 36, 26, 1, 0, 1, 36, 13, - 4, 5, 6, 7, 8, 9, 10, 11, 36, 200, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 14, 38, 27, 36, 36, 36, 36, 36, 0, - 1, 36, 36, 4, 5, 6, 7, 8, 9, 10, - 11, 36, 39, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 36, 36, 27, 36, 7, 1, - 6, 79, 82, 5, 6, 36, 8, 9, 10, 11, - 12, 43, 14, 15, 16, 17, 18, 19, 20, -1, - -1, -1, 124, 1, -1, 27, 4, 5, 6, 7, - 8, 9, 10, 11, 36, -1, 14, 15, 16, -1, - -1, 5, 6, -1, 8, 9, 10, 11, -1, 27, - 14, 15, 163, -1, 165, 166, 167, 168, 36, -1, - -1, -1, -1, 174, -1, 176, -1, -1, -1, -1, - -1, -1, 36, -1, -1, 186 -}; - - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const yytype_uint8 yystos[] = -{ - 0, 3, 36, 42, 43, 44, 45, 87, 27, 28, - 85, 0, 46, 46, 36, 43, 87, 1, 4, 5, - 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 27, 36, 47, - 48, 50, 51, 52, 53, 59, 60, 62, 66, 68, - 70, 71, 73, 75, 76, 77, 86, 36, 85, 36, - 85, 27, 92, 36, 85, 27, 90, 90, 28, 35, - 40, 89, 90, 91, 36, 1, 1, 54, 54, 63, - 65, 69, 82, 74, 80, 36, 36, 36, 36, 36, - 36, 89, 89, 37, 38, 87, 29, 30, 31, 32, - 33, 39, 36, 36, 1, 12, 16, 18, 19, 20, - 21, 22, 23, 25, 27, 36, 49, 55, 56, 78, - 79, 81, 17, 18, 19, 20, 36, 49, 64, 79, - 81, 48, 61, 86, 48, 62, 67, 73, 86, 24, - 36, 80, 83, 48, 62, 72, 73, 86, 36, 49, - 81, 34, 89, 89, 91, 91, 91, 91, 91, 91, - 36, 36, 26, 85, 84, 85, 89, 90, 90, 91, - 57, 1, 13, 36, 85, 84, 90, 14, 88, 89, - 88, 36, 88, 88, 88, 88, 91, 27, 36, 36, - 88, 36, 88, 89, 36, 36, 36, 36, 36, 88, - 39, 58, 36, 36, 36, 85 -}; - - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint8 yyr1[] = -{ - 0, 41, 42, 42, 43, 43, 44, 45, 46, 46, - 46, 46, 46, 46, 46, 46, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 48, 48, 48, 48, 48, - 48, 49, 49, 50, 51, 52, 53, 54, 54, 54, - 54, 54, 54, 54, 55, 55, 55, 55, 55, 55, - 56, 57, 57, 58, 58, 59, 60, 61, 62, 63, - 63, 63, 63, 63, 63, 64, 64, 64, 64, 65, - 65, 66, 67, 68, 69, 69, 69, 69, 70, 71, - 72, 73, 74, 74, 74, 74, 75, 76, 77, 78, - 79, 80, 80, 80, 80, 81, 82, 82, 82, 83, - 84, 84, 85, 85, 86, 86, 86, 87, 87, 88, - 88, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 90, 91, 91, 92, 92 -}; - - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = -{ - 0, 2, 2, 1, 2, 2, 3, 0, 0, 2, - 2, 2, 2, 4, 4, 3, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 2, 3, 2, 3, 2, 0, 2, 2, - 2, 2, 2, 2, 3, 4, 4, 4, 4, 5, - 3, 0, 3, 0, 2, 3, 2, 1, 3, 0, - 2, 2, 2, 2, 2, 4, 3, 2, 4, 0, - 2, 3, 1, 3, 0, 2, 2, 2, 3, 3, - 1, 3, 0, 2, 2, 2, 3, 3, 2, 2, - 2, 0, 2, 2, 2, 4, 0, 2, 2, 2, - 0, 2, 1, 1, 2, 2, 2, 1, 2, 0, - 2, 1, 3, 3, 3, 3, 3, 3, 3, 2, - 3, 3, 1, 1, 1, 0, 1 -}; - - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab - - -#define YYRECOVERING() (!!yyerrstatus) - -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (yylen); \ - yystate = *yyssp; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (0) - -/* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 - - - -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) - -/* This macro is provided for backward compatibility. */ -#ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -#endif - - -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) - - -/*----------------------------------------. -| Print this symbol's value on YYOUTPUT. | -`----------------------------------------*/ - -static void -yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -{ - FILE *yyo = yyoutput; - YYUSE (yyo); - if (!yyvaluep) - return; -# ifdef YYPRINT - if (yytype < YYNTOKENS) - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# endif - YYUSE (yytype); -} - - -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ - -static void -yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -{ - YYFPRINTF (yyoutput, "%s %s (", - yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); - - yy_symbol_value_print (yyoutput, yytype, yyvaluep); - YYFPRINTF (yyoutput, ")"); -} - -/*------------------------------------------------------------------. -| yy_stack_print -- Print the state stack from its BOTTOM up to its | -| TOP (included). | -`------------------------------------------------------------------*/ - -static void -yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) -{ - YYFPRINTF (stderr, "Stack now"); - for (; yybottom <= yytop; yybottom++) - { - int yybot = *yybottom; - YYFPRINTF (stderr, " %d", yybot); - } - YYFPRINTF (stderr, "\n"); -} - -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (0) - - -/*------------------------------------------------. -| Report that the YYRULE is going to be reduced. | -`------------------------------------------------*/ - -static void -yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) -{ - unsigned long int yylno = yyrline[yyrule]; - int yynrhs = yyr2[yyrule]; - int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); - /* The symbols being reduced. */ - for (yyi = 0; yyi < yynrhs; yyi++) - { - YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, - yystos[yyssp[yyi + 1 - yynrhs]], - &(yyvsp[(yyi + 1) - (yynrhs)]) - ); - YYFPRINTF (stderr, "\n"); - } -} - -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyssp, yyvsp, Rule); \ -} while (0) - -/* Nonzero means print parse trace. It is left uninitialized so that - multiple parsers can coexist. */ -int yydebug; -#else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) -# define YY_STACK_PRINT(Bottom, Top) -# define YY_REDUCE_PRINT(Rule) -#endif /* !YYDEBUG */ - - -/* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH -# define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). - - Do not make this value too large; the results are undefined if - YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) - evaluated with infinite-precision integer arithmetic. */ - -#ifndef YYMAXDEPTH -# define YYMAXDEPTH 10000 -#endif - - -#if YYERROR_VERBOSE - -# ifndef yystrlen -# if defined __GLIBC__ && defined _STRING_H -# define yystrlen strlen -# else -/* Return the length of YYSTR. */ -static YYSIZE_T -yystrlen (const char *yystr) -{ - YYSIZE_T yylen; - for (yylen = 0; yystr[yylen]; yylen++) - continue; - return yylen; -} -# endif -# endif - -# ifndef yystpcpy -# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -static char * -yystpcpy (char *yydest, const char *yysrc) -{ - char *yyd = yydest; - const char *yys = yysrc; - - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif - -# ifndef yytnamerr -/* Copy to YYRES the contents of YYSTR after stripping away unnecessary - quotes and backslashes, so that it's suitable for yyerror. The - heuristic is that double-quoting is unnecessary unless the string - contains an apostrophe, a comma, or backslash (other than - backslash-backslash). YYSTR is taken from yytname. If YYRES is - null, do not copy; instead, return the length of what the result - would have been. */ -static YYSIZE_T -yytnamerr (char *yyres, const char *yystr) -{ - if (*yystr == '"') - { - YYSIZE_T yyn = 0; - char const *yyp = yystr; - - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } - do_not_strip_quotes: ; - } - - if (! yyres) - return yystrlen (yystr); - - return yystpcpy (yyres, yystr) - yyres; -} -# endif - -/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message - about the unexpected token YYTOKEN for the state stack whose top is - YYSSP. - - Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is - not large enough to hold the message. In that case, also set - *YYMSG_ALLOC to the required number of bytes. Return 2 if the - required number of bytes is too large to store. */ -static int -yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, - yytype_int16 *yyssp, int yytoken) -{ - YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - YYSIZE_T yysize = yysize0; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - /* Internationalized format string. */ - const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat. */ - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Number of reported tokens (one for the "unexpected", one per - "expected"). */ - int yycount = 0; - - /* There are many possibilities here to consider: - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yychar) is if - this state is a consistent state with a default action. Thus, - detecting the absence of a lookahead is sufficient to determine - that there is no unexpected or expected token to report. In that - case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is a - consistent state with a default action. There might have been a - previous inconsistent state, consistent state with a non-default - action, or user semantic action that manipulated yychar. - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state merging - (from LALR or IELR) and default reductions corrupt the expected - token list. However, the list is correct for canonical LR with - one exception: it will still contain any token that will not be - accepted due to an error action in a later state. - */ - if (yytoken != YYEMPTY) - { - int yyn = yypact[*yyssp]; - yyarg[yycount++] = yytname[yytoken]; - if (!yypact_value_is_default (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yyx; - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR - && !yytable_value_is_error (yytable[yyx + yyn])) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - break; - } - yyarg[yycount++] = yytname[yyx]; - { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (! (yysize <= yysize1 - && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; - } - } - } - } - - switch (yycount) - { -# define YYCASE_(N, S) \ - case N: \ - yyformat = S; \ - break - YYCASE_(0, YY_("syntax error")); - YYCASE_(1, YY_("syntax error, unexpected %s")); - YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -# undef YYCASE_ - } - - { - YYSIZE_T yysize1 = yysize + yystrlen (yyformat); - if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; - } - - if (*yymsg_alloc < yysize) - { - *yymsg_alloc = 2 * yysize; - if (! (yysize <= *yymsg_alloc - && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) - *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; - return 1; - } - - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - { - char *yyp = *yymsg; - int yyi = 0; - while ((*yyp = *yyformat) != '\0') - if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyformat += 2; - } - else - { - yyp++; - yyformat++; - } - } - return 0; -} -#endif /* YYERROR_VERBOSE */ - -/*-----------------------------------------------. -| Release the memory associated to this symbol. | -`-----------------------------------------------*/ - -static void -yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) -{ - YYUSE (yyvaluep); - if (!yymsg) - yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - switch (yytype) - { - case 60: /* choice_entry */ - - { - fprintf(stderr, "%s:%d: missing end statement for this entry\n", - ((*yyvaluep).menu)->file->name, ((*yyvaluep).menu)->lineno); - if (current_menu == ((*yyvaluep).menu)) - menu_end_menu(); -} - - break; - - case 66: /* if_entry */ - - { - fprintf(stderr, "%s:%d: missing end statement for this entry\n", - ((*yyvaluep).menu)->file->name, ((*yyvaluep).menu)->lineno); - if (current_menu == ((*yyvaluep).menu)) - menu_end_menu(); -} - - break; - - case 71: /* menu_entry */ - - { - fprintf(stderr, "%s:%d: missing end statement for this entry\n", - ((*yyvaluep).menu)->file->name, ((*yyvaluep).menu)->lineno); - if (current_menu == ((*yyvaluep).menu)) - menu_end_menu(); -} - - break; - - - default: - break; - } - YY_IGNORE_MAYBE_UNINITIALIZED_END -} - - - - -/* The lookahead symbol. */ -int yychar; - -/* The semantic value of the lookahead symbol. */ -YYSTYPE yylval; -/* Number of syntax errors so far. */ -int yynerrs; - - -/*----------. -| yyparse. | -`----------*/ - -int -yyparse (void) -{ - int yystate; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - - Refer to the stacks through separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss; - yytype_int16 *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; - - YYSIZE_T yystacksize; - - int yyn; - int yyresult; - /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; - -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -#endif - -#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) - - /* The number of symbols on the RHS of the reduced rule. - Keep to zero when no symbol should be popped. */ - int yylen = 0; - - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - yystacksize = YYINITDEPTH; - - YYDPRINTF ((stderr, "Starting parse\n")); - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - goto yysetstate; - -/*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | -`------------------------------------------------------------*/ - yynewstate: - /* In all cases, when you get here, the value and location stacks - have just been pushed. So pushing a state here evens the stacks. */ - yyssp++; - - yysetstate: - *yyssp = yystate; - - if (yyss + yystacksize - 1 <= yyssp) - { - /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = yyssp - yyss + 1; - -#ifdef yyoverflow - { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yystacksize); - - yyss = yyss1; - yyvs = yyvs1; - } -#else /* no yyoverflow */ -# ifndef YYSTACK_RELOCATE - goto yyexhaustedlab; -# else - /* Extend the stack our own way. */ - if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; - yystacksize *= 2; - if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; - - { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); - } -# endif -#endif /* no yyoverflow */ - - yyssp = yyss + yysize - 1; - yyvsp = yyvs + yysize - 1; - - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); - - if (yyss + yystacksize - 1 <= yyssp) - YYABORT; - } - - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - - if (yystate == YYFINAL) - YYACCEPT; - - goto yybackup; - -/*-----------. -| yybackup. | -`-----------*/ -yybackup: - - /* Do appropriate processing given the current state. Read a - lookahead token if we need one and don't already have one. */ - - /* First try to decide what to do without reference to lookahead token. */ - yyn = yypact[yystate]; - if (yypact_value_is_default (yyn)) - goto yydefault; - - /* Not known => get a lookahead token if don't already have one. */ - - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ - if (yychar == YYEMPTY) - { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = yylex (); - } - - if (yychar <= YYEOF) - { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yytoken = YYTRANSLATE (yychar); - YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); - } - - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - yyn += yytoken; - if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) - goto yydefault; - yyn = yytable[yyn]; - if (yyn <= 0) - { - if (yytable_value_is_error (yyn)) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus) - yyerrstatus--; - - /* Shift the lookahead token. */ - YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the shifted token. */ - yychar = YYEMPTY; - - yystate = yyn; - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END - - goto yynewstate; - - -/*-----------------------------------------------------------. -| yydefault -- do the default action for the current state. | -`-----------------------------------------------------------*/ -yydefault: - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; - - -/*-----------------------------. -| yyreduce -- Do a reduction. | -`-----------------------------*/ -yyreduce: - /* yyn is the number of a rule to reduce with. */ - yylen = yyr2[yyn]; - - /* If YYLEN is nonzero, implement the default value of the action: - '$$ = $1'. - - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. Assigning to YYVAL - unconditionally makes the parser a bit smaller, and it avoids a - GCC warning that YYVAL may be used uninitialized. */ - yyval = yyvsp[1-yylen]; - - - YY_REDUCE_PRINT (yyn); - switch (yyn) - { - case 6: - - { - menu_add_prompt(P_MENU, (yyvsp[-1].string), NULL); -} - - break; - - case 7: - - { - /* - * Hack: Keep the main menu title on the heap so we can safely free it - * later regardless of whether it comes from the 'prompt' in - * mainmenu_stmt or here - */ - menu_add_prompt(P_MENU, xstrdup("Buildroot Configuration"), NULL); -} - - break; - - case 12: - - { zconf_error("unexpected end statement"); } - - break; - - case 13: - - { zconf_error("unknown statement \"%s\"", (yyvsp[-2].string)); } - - break; - - case 14: - - { - zconf_error("unexpected option \"%s\"", (yyvsp[-2].id)->name); -} - - break; - - case 15: - - { zconf_error("invalid statement"); } - - break; - - case 31: - - { zconf_error("unknown option \"%s\"", (yyvsp[-2].string)); } - - break; - - case 32: - - { zconf_error("invalid option"); } - - break; - - case 33: - - { - (yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL; - menu_add_entry((yyvsp[-1].symbol)); - printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), (yyvsp[-1].symbol)->name); -} - - break; - - case 34: - - { - printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 35: - - { - (yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL; - menu_add_entry((yyvsp[-1].symbol)); - printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), (yyvsp[-1].symbol)->name); -} - - break; - - case 36: - - { - if (current_entry->prompt) - current_entry->prompt->type = P_MENU; - else - zconfprint("warning: menuconfig statement without prompt"); - printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 44: - - { - menu_set_type((yyvsp[-2].id)->stype); - printd(DEBUG_PARSE, "%s:%d:type(%u)\n", - zconf_curname(), zconf_lineno(), - (yyvsp[-2].id)->stype); -} - - break; - - case 45: - - { - menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 46: - - { - menu_add_expr(P_DEFAULT, (yyvsp[-2].expr), (yyvsp[-1].expr)); - if ((yyvsp[-3].id)->stype != S_UNKNOWN) - menu_set_type((yyvsp[-3].id)->stype); - printd(DEBUG_PARSE, "%s:%d:default(%u)\n", - zconf_curname(), zconf_lineno(), - (yyvsp[-3].id)->stype); -} - - break; - - case 47: - - { - menu_add_symbol(P_SELECT, (yyvsp[-2].symbol), (yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 48: - - { - menu_add_symbol(P_IMPLY, (yyvsp[-2].symbol), (yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:imply\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 49: - - { - menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[-3].symbol), (yyvsp[-2].symbol)), (yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 52: - - { - const struct kconf_id *id = kconf_id_lookup((yyvsp[-1].string), strlen((yyvsp[-1].string))); - if (id && id->flags & TF_OPTION) { - menu_add_option(id->token, (yyvsp[0].string)); - free((yyvsp[0].string)); - } - else - zconfprint("warning: ignoring unknown option %s", (yyvsp[-1].string)); - free((yyvsp[-1].string)); -} - - break; - - case 53: - - { (yyval.string) = NULL; } - - break; - - case 54: - - { (yyval.string) = (yyvsp[0].string); } - - break; - - case 55: - - { - struct symbol *sym = sym_lookup((yyvsp[-1].string), SYMBOL_CHOICE); - sym->flags |= SYMBOL_AUTO; - menu_add_entry(sym); - menu_add_expr(P_CHOICE, NULL, NULL); - free((yyvsp[-1].string)); - printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 56: - - { - (yyval.menu) = menu_add_menu(); -} - - break; - - case 57: - - { - if (zconf_endtoken((yyvsp[0].id), T_CHOICE, T_ENDCHOICE)) { - menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno()); - } -} - - break; - - case 65: - - { - menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 66: - - { - if ((yyvsp[-2].id)->stype == S_BOOLEAN || (yyvsp[-2].id)->stype == S_TRISTATE) { - menu_set_type((yyvsp[-2].id)->stype); - printd(DEBUG_PARSE, "%s:%d:type(%u)\n", - zconf_curname(), zconf_lineno(), - (yyvsp[-2].id)->stype); - } else - YYERROR; -} - - break; - - case 67: - - { - current_entry->sym->flags |= SYMBOL_OPTIONAL; - printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 68: - - { - if ((yyvsp[-3].id)->stype == S_UNKNOWN) { - menu_add_symbol(P_DEFAULT, (yyvsp[-2].symbol), (yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:default\n", - zconf_curname(), zconf_lineno()); - } else - YYERROR; -} - - break; - - case 71: - - { - printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); - menu_add_entry(NULL); - menu_add_dep((yyvsp[-1].expr)); - (yyval.menu) = menu_add_menu(); -} - - break; - - case 72: - - { - if (zconf_endtoken((yyvsp[0].id), T_IF, T_ENDIF)) { - menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno()); - } -} - - break; - - case 78: - - { - menu_add_entry(NULL); - menu_add_prompt(P_MENU, (yyvsp[-1].string), NULL); - printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 79: - - { - (yyval.menu) = menu_add_menu(); -} - - break; - - case 80: - - { - if (zconf_endtoken((yyvsp[0].id), T_MENU, T_ENDMENU)) { - menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno()); - } -} - - break; - - case 86: - - { - printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), (yyvsp[-1].string)); - zconf_nextfile((yyvsp[-1].string)); - free((yyvsp[-1].string)); -} - - break; - - case 87: - - { - menu_add_entry(NULL); - menu_add_prompt(P_COMMENT, (yyvsp[-1].string), NULL); - printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 89: - - { - printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno()); - zconf_starthelp(); -} - - break; - - case 90: - - { - if (current_entry->help) { - free(current_entry->help); - zconfprint("warning: '%s' defined with more than one help text -- only the last one will be used", - current_entry->sym->name ?: ""); - } - - /* Is the help text empty or all whitespace? */ - if ((yyvsp[0].string)[strspn((yyvsp[0].string), " \f\n\r\t\v")] == '\0') - zconfprint("warning: '%s' defined with blank help text", - current_entry->sym->name ?: ""); - - current_entry->help = (yyvsp[0].string); -} - - break; - - case 95: - - { - menu_add_dep((yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 99: - - { - menu_add_visibility((yyvsp[0].expr)); -} - - break; - - case 101: - - { - menu_add_prompt(P_PROMPT, (yyvsp[-1].string), (yyvsp[0].expr)); -} - - break; - - case 104: - - { (yyval.id) = (yyvsp[-1].id); } - - break; - - case 105: - - { (yyval.id) = (yyvsp[-1].id); } - - break; - - case 106: - - { (yyval.id) = (yyvsp[-1].id); } - - break; - - case 109: - - { (yyval.expr) = NULL; } - - break; - - case 110: - - { (yyval.expr) = (yyvsp[0].expr); } - - break; - - case 111: - - { (yyval.expr) = expr_alloc_symbol((yyvsp[0].symbol)); } - - break; - - case 112: - - { (yyval.expr) = expr_alloc_comp(E_LTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } - - break; - - case 113: - - { (yyval.expr) = expr_alloc_comp(E_LEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } - - break; - - case 114: - - { (yyval.expr) = expr_alloc_comp(E_GTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } - - break; - - case 115: - - { (yyval.expr) = expr_alloc_comp(E_GEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } - - break; - - case 116: - - { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } - - break; - - case 117: - - { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } - - break; - - case 118: - - { (yyval.expr) = (yyvsp[-1].expr); } - - break; - - case 119: - - { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[0].expr)); } - - break; - - case 120: - - { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[-2].expr), (yyvsp[0].expr)); } - - break; - - case 121: - - { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); } - - break; - - case 122: - - { (yyval.symbol) = sym_lookup((yyvsp[0].string), 0); free((yyvsp[0].string)); } - - break; - - case 124: - - { (yyval.symbol) = sym_lookup((yyvsp[0].string), SYMBOL_CONST); free((yyvsp[0].string)); } - - break; - - case 125: - - { (yyval.string) = NULL; } - - break; - - - - default: break; - } - /* User semantic actions sometimes alter yychar, and that requires - that yytoken be updated with the new translation. We take the - approach of translating immediately before every use of yytoken. - One alternative is translating here after every semantic action, - but that translation would be missed if the semantic action invokes - YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or - if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an - incorrect destructor might then be invoked immediately. In the - case of YYERROR or YYBACKUP, subsequent parser actions might lead - to an incorrect destructor call or verbose syntax error message - before the lookahead is translated. */ - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); - - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - - *++yyvsp = yyval; - - /* Now 'shift' the result of the reduction. Determine what state - that goes to, based on the state we popped back to and the rule - number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; - if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTOKENS]; - - goto yynewstate; - - -/*--------------------------------------. -| yyerrlab -- here on detecting error. | -`--------------------------------------*/ -yyerrlab: - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); - - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus) - { - ++yynerrs; -#if ! YYERROR_VERBOSE - yyerror (YY_("syntax error")); -#else -# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ - yyssp, yytoken) - { - char const *yymsgp = YY_("syntax error"); - int yysyntax_error_status; - yysyntax_error_status = YYSYNTAX_ERROR; - if (yysyntax_error_status == 0) - yymsgp = yymsg; - else if (yysyntax_error_status == 1) - { - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); - if (!yymsg) - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - yysyntax_error_status = 2; - } - else - { - yysyntax_error_status = YYSYNTAX_ERROR; - yymsgp = yymsg; - } - } - yyerror (yymsgp); - if (yysyntax_error_status == 2) - goto yyexhaustedlab; - } -# undef YYSYNTAX_ERROR -#endif - } - - - - if (yyerrstatus == 3) - { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ - - if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } - else - { - yydestruct ("Error: discarding", - yytoken, &yylval); - yychar = YYEMPTY; - } - } - - /* Else will try to reuse lookahead token after shifting the error - token. */ - goto yyerrlab1; - - -/*---------------------------------------------------. -| yyerrorlab -- error raised explicitly by YYERROR. | -`---------------------------------------------------*/ -yyerrorlab: - - /* Pacify compilers like GCC when the user code never invokes - YYERROR and the label yyerrorlab therefore never appears in user - code. */ - if (/*CONSTCOND*/ 0) - goto yyerrorlab; - - /* Do not reclaim the symbols of the rule whose action triggered - this YYERROR. */ - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - yystate = *yyssp; - goto yyerrlab1; - - -/*-------------------------------------------------------------. -| yyerrlab1 -- common code for both syntax error and YYERROR. | -`-------------------------------------------------------------*/ -yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ - - for (;;) - { - yyn = yypact[yystate]; - if (!yypact_value_is_default (yyn)) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } - - /* Pop the current state because it cannot handle the error token. */ - if (yyssp == yyss) - YYABORT; - - - yydestruct ("Error: popping", - yystos[yystate], yyvsp); - YYPOPSTACK (1); - yystate = *yyssp; - YY_STACK_PRINT (yyss, yyssp); - } - - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END - - - /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); - - yystate = yyn; - goto yynewstate; - - -/*-------------------------------------. -| yyacceptlab -- YYACCEPT comes here. | -`-------------------------------------*/ -yyacceptlab: - yyresult = 0; - goto yyreturn; - -/*-----------------------------------. -| yyabortlab -- YYABORT comes here. | -`-----------------------------------*/ -yyabortlab: - yyresult = 1; - goto yyreturn; - -#if !defined yyoverflow || YYERROR_VERBOSE -/*-------------------------------------------------. -| yyexhaustedlab -- memory exhaustion comes here. | -`-------------------------------------------------*/ -yyexhaustedlab: - yyerror (YY_("memory exhausted")); - yyresult = 2; - /* Fall through. */ -#endif - -yyreturn: - if (yychar != YYEMPTY) - { - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = YYTRANSLATE (yychar); - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval); - } - /* Do not reclaim the symbols of the rule whose action triggered - this YYABORT or YYACCEPT. */ - YYPOPSTACK (yylen); - YY_STACK_PRINT (yyss, yyssp); - while (yyssp != yyss) - { - yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp); - YYPOPSTACK (1); - } -#ifndef yyoverflow - if (yyss != yyssa) - YYSTACK_FREE (yyss); -#endif -#if YYERROR_VERBOSE - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); -#endif - return yyresult; -} - - - -void conf_parse(const char *name) -{ - const char *tmp; - struct symbol *sym; - int i; - - zconf_initscan(name); - - sym_init(); - _menu_init(); - - if (getenv("ZCONF_DEBUG")) - yydebug = 1; - yyparse(); - if (yynerrs) - exit(1); - if (!modules_sym) - modules_sym = sym_find( "n" ); - - tmp = rootmenu.prompt->text; - rootmenu.prompt->text = _(rootmenu.prompt->text); - rootmenu.prompt->text = sym_expand_string_value(rootmenu.prompt->text); - free((char*)tmp); - - menu_finalize(&rootmenu); - for_all_symbols(i, sym) { - if (sym_check_deps(sym)) - yynerrs++; - } - if (yynerrs) - exit(1); - sym_set_change_count(1); -} - -static const char *zconf_tokenname(int token) -{ - switch (token) { - case T_MENU: return "menu"; - case T_ENDMENU: return "endmenu"; - case T_CHOICE: return "choice"; - case T_ENDCHOICE: return "endchoice"; - case T_IF: return "if"; - case T_ENDIF: return "endif"; - case T_DEPENDS: return "depends"; - case T_VISIBLE: return "visible"; - } - return ""; -} - -static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken) -{ - if (id->token != endtoken) { - zconf_error("unexpected '%s' within %s block", - id->name, zconf_tokenname(starttoken)); - yynerrs++; - return false; - } - if (current_menu->file != current_file) { - zconf_error("'%s' in different file than '%s'", - id->name, zconf_tokenname(starttoken)); - fprintf(stderr, "%s:%d: location of the '%s'\n", - current_menu->file->name, current_menu->lineno, - zconf_tokenname(starttoken)); - yynerrs++; - return false; - } - return true; -} - -static void zconfprint(const char *err, ...) -{ - va_list ap; - - fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); - va_start(ap, err); - vfprintf(stderr, err, ap); - va_end(ap); - fprintf(stderr, "\n"); -} - -static void zconf_error(const char *err, ...) -{ - va_list ap; - - yynerrs++; - fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); - va_start(ap, err); - vfprintf(stderr, err, ap); - va_end(ap); - fprintf(stderr, "\n"); -} - -static void yyerror(const char *err) -{ - fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err); -} - -static void print_quoted_string(FILE *out, const char *str) -{ - const char *p; - int len; - - putc('"', out); - while ((p = strchr(str, '"'))) { - len = p - str; - if (len) - fprintf(out, "%.*s", len, str); - fputs("\\\"", out); - str = p + 1; - } - fputs(str, out); - putc('"', out); -} - -static void print_symbol(FILE *out, struct menu *menu) -{ - struct symbol *sym = menu->sym; - struct property *prop; - - if (sym_is_choice(sym)) - fprintf(out, "\nchoice\n"); - else - fprintf(out, "\nconfig %s\n", sym->name); - switch (sym->type) { - case S_BOOLEAN: - fputs(" bool\n", out); - break; - case S_TRISTATE: - fputs(" tristate\n", out); - break; - case S_STRING: - fputs(" string\n", out); - break; - case S_INT: - fputs(" integer\n", out); - break; - case S_HEX: - fputs(" hex\n", out); - break; - default: - fputs(" ???\n", out); - break; - } - for (prop = sym->prop; prop; prop = prop->next) { - if (prop->menu != menu) - continue; - switch (prop->type) { - case P_PROMPT: - fputs(" prompt ", out); - print_quoted_string(out, prop->text); - if (!expr_is_yes(prop->visible.expr)) { - fputs(" if ", out); - expr_fprint(prop->visible.expr, out); - } - fputc('\n', out); - break; - case P_DEFAULT: - fputs( " default ", out); - expr_fprint(prop->expr, out); - if (!expr_is_yes(prop->visible.expr)) { - fputs(" if ", out); - expr_fprint(prop->visible.expr, out); - } - fputc('\n', out); - break; - case P_CHOICE: - fputs(" #choice value\n", out); - break; - case P_SELECT: - fputs( " select ", out); - expr_fprint(prop->expr, out); - fputc('\n', out); - break; - case P_IMPLY: - fputs( " imply ", out); - expr_fprint(prop->expr, out); - fputc('\n', out); - break; - case P_RANGE: - fputs( " range ", out); - expr_fprint(prop->expr, out); - fputc('\n', out); - break; - case P_MENU: - fputs( " menu ", out); - print_quoted_string(out, prop->text); - fputc('\n', out); - break; - default: - fprintf(out, " unknown prop %d!\n", prop->type); - break; - } - } - if (menu->help) { - int len = strlen(menu->help); - while (menu->help[--len] == '\n') - menu->help[len] = 0; - fprintf(out, " help\n%s\n", menu->help); - } -} - -void zconfdump(FILE *out) -{ - struct property *prop; - struct symbol *sym; - struct menu *menu; - - menu = rootmenu.list; - while (menu) { - if ((sym = menu->sym)) - print_symbol(out, menu); - else if ((prop = menu->prompt)) { - switch (prop->type) { - case P_COMMENT: - fputs("\ncomment ", out); - print_quoted_string(out, prop->text); - fputs("\n", out); - break; - case P_MENU: - fputs("\nmenu ", out); - print_quoted_string(out, prop->text); - fputs("\n", out); - break; - default: - ; - } - if (!expr_is_yes(prop->visible.expr)) { - fputs(" depends ", out); - expr_fprint(prop->visible.expr, out); - fputc('\n', out); - } - } - - if (menu->list) - menu = menu->list; - else if (menu->next) - menu = menu->next; - else while ((menu = menu->parent)) { - if (menu->prompt && menu->prompt->type == P_MENU) - fputs("\nendmenu\n", out); - if (menu->next) { - menu = menu->next; - break; - } - } - } -} - -#include "zconf.lex.c" -#include "util.c" -#include "confdata.c" -#include "expr.c" -#include "symbol.c" -#include "menu.c" -- 2.44.0 From thomas.petazzoni at bootlin.com Mon May 6 19:04:40 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:04:40 +0200 Subject: [Buildroot] [PATCH v1 0/8] support/kconfig: bump to linux-v6.9-rc5 version In-Reply-To: <20240506144555.31709-1-ps.report@gmx.net> References: <20240506144555.31709-1-ps.report@gmx.net> Message-ID: <20240506210440.323ccb15@windsurf> Hello, On Mon, 6 May 2024 16:45:43 +0200 Peter Seiderer via buildroot wrote: > The patches are orderd by the first 5 handling some minor nits (result of > the new kconfig beeing a little more strict about the syntax, can be > applied in advance): > > - boot/barebox/Config.in: source argument needs quotation marks > - package/cmocka/Config.in: bool argument needs quotation marks > - package/dovecot/Config.in: source argument needs quotation marks > - package/python-pydal/Config.in: bool argument needs quotation marks > - package/x11r7/Config.in: source argument needs quotation marks I have applied those preparation patches that make sense regardless of what happens with the bump. > The kconfig version dump itself: > > - support/kconfig: bump to linux-v6.9-rc5 version So this commit without the next two leads to a broken situation, correct? (Note: this is not a complaint, I agree with them being split). > And two 'real' changes due to kconfig language changes: > > - support/kconfig: reference environment variables directly (remove 'option env=') > - package/openssl: move libopenssl/libressl source statemetns outside of the choice But don't we have this situation of source statements inside a choice..endchoice in other places? I remember Yann saying that this was a problematic change for us in the upstream kconfig code. Best regards, Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 19:04:40 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:04:40 +0200 Subject: [Buildroot] [PATCH v1 0/8] support/kconfig: bump to linux-v6.9-rc5 version In-Reply-To: <20240506144555.31709-1-ps.report@gmx.net> References: <20240506144555.31709-1-ps.report@gmx.net> Message-ID: <20240506210440.323ccb15@windsurf> Hello, On Mon, 6 May 2024 16:45:43 +0200 Peter Seiderer via buildroot wrote: > The patches are orderd by the first 5 handling some minor nits (result of > the new kconfig beeing a little more strict about the syntax, can be > applied in advance): > > - boot/barebox/Config.in: source argument needs quotation marks > - package/cmocka/Config.in: bool argument needs quotation marks > - package/dovecot/Config.in: source argument needs quotation marks > - package/python-pydal/Config.in: bool argument needs quotation marks > - package/x11r7/Config.in: source argument needs quotation marks I have applied those preparation patches that make sense regardless of what happens with the bump. > The kconfig version dump itself: > > - support/kconfig: bump to linux-v6.9-rc5 version So this commit without the next two leads to a broken situation, correct? (Note: this is not a complaint, I agree with them being split). > And two 'real' changes due to kconfig language changes: > > - support/kconfig: reference environment variables directly (remove 'option env=') > - package/openssl: move libopenssl/libressl source statemetns outside of the choice But don't we have this situation of source statements inside a choice..endchoice in other places? I remember Yann saying that this was a problematic change for us in the upstream kconfig code. Best regards, Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 19:06:23 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:06:23 +0200 Subject: [Buildroot] [PATCH v1 7/8] support/kconfig: reference environment variables directly (remove 'option env=') In-Reply-To: <20240506144555.31709-8-ps.report@gmx.net> References: <20240506144555.31709-1-ps.report@gmx.net> <20240506144555.31709-8-ps.report@gmx.net> Message-ID: <20240506210623.7c3b3065@windsurf> On Mon, 6 May 2024 16:45:50 +0200 Peter Seiderer via buildroot wrote: > config BR2_DEFCONFIG > string "Location to save buildroot config" > - default BR2_DEFCONFIG_FROM_ENV if BR2_DEFCONFIG_FROM_ENV != "" > + default "$(BR2_DEFCONFIG)" if "$(BR2_DEFCONFIG)" != "" > default "$(CONFIG_DIR)/defconfig" > help > When running 'make savedefconfig', the defconfig file will be > @@ -197,7 +176,7 @@ config BR2_DEFCONFIG > > config BR2_DL_DIR > string "Download dir" > - default "$(TOPDIR)/dl" > + default "\$(TOPDIR)/dl" So here the "\$(TOPDIR)" is because we actually don't want the "new" feature to kick in, and we want the value of this variable to be expanded not by kconfig, but by the makefile machinery? So this also means that when we do $(BR2_EXTERNAL_BLABLA_PATH) in our .config, it now also need to be \$(BR2_EXTERNAL_BLABLA_PATH) ? If so that's going to break a *lot* of things... Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 19:06:23 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:06:23 +0200 Subject: [Buildroot] [PATCH v1 7/8] support/kconfig: reference environment variables directly (remove 'option env=') In-Reply-To: <20240506144555.31709-8-ps.report@gmx.net> References: <20240506144555.31709-1-ps.report@gmx.net> <20240506144555.31709-8-ps.report@gmx.net> Message-ID: <20240506210623.7c3b3065@windsurf> On Mon, 6 May 2024 16:45:50 +0200 Peter Seiderer via buildroot wrote: > config BR2_DEFCONFIG > string "Location to save buildroot config" > - default BR2_DEFCONFIG_FROM_ENV if BR2_DEFCONFIG_FROM_ENV != "" > + default "$(BR2_DEFCONFIG)" if "$(BR2_DEFCONFIG)" != "" > default "$(CONFIG_DIR)/defconfig" > help > When running 'make savedefconfig', the defconfig file will be > @@ -197,7 +176,7 @@ config BR2_DEFCONFIG > > config BR2_DL_DIR > string "Download dir" > - default "$(TOPDIR)/dl" > + default "\$(TOPDIR)/dl" So here the "\$(TOPDIR)" is because we actually don't want the "new" feature to kick in, and we want the value of this variable to be expanded not by kconfig, but by the makefile machinery? So this also means that when we do $(BR2_EXTERNAL_BLABLA_PATH) in our .config, it now also need to be \$(BR2_EXTERNAL_BLABLA_PATH) ? If so that's going to break a *lot* of things... Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 19:14:00 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:14:00 +0200 Subject: [Buildroot] [git commit] package/ell: bump to version 0.65 Message-ID: <20240506191436.CC62E867AB@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=82ed4fb1c9348426c1e598b6d255dfe0e426be0d branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: James Hilliard Signed-off-by: Thomas Petazzoni --- package/ell/ell.hash | 2 +- package/ell/ell.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/ell/ell.hash b/package/ell/ell.hash index f5ded676c3..3adca75140 100644 --- a/package/ell/ell.hash +++ b/package/ell/ell.hash @@ -1,5 +1,5 @@ # From https://mirrors.edge.kernel.org/pub/linux/libs/ell/sha256sums.asc -sha256 7397c76996d7646b9917ebf016cd67586b10166295af2e0e18cdb5b8f6659965 ell-0.63.tar.xz +sha256 9ee7ac57b188d391cead705d3596a6d3240341786475149db297782a52269aa5 ell-0.65.tar.xz # License files sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING diff --git a/package/ell/ell.mk b/package/ell/ell.mk index f43dbdb5f7..a682635539 100644 --- a/package/ell/ell.mk +++ b/package/ell/ell.mk @@ -4,7 +4,7 @@ # ################################################################################ -ELL_VERSION = 0.63 +ELL_VERSION = 0.65 ELL_SOURCE = ell-$(ELL_VERSION).tar.xz ELL_SITE = $(BR2_KERNEL_MIRROR)/linux/libs/ell ELL_LICENSE = LGPL-2.1+ From thomas.petazzoni at bootlin.com Mon May 6 19:14:03 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:14:03 +0200 Subject: [Buildroot] [git commit] package/iwd: bump to version 2.17 Message-ID: <20240506191436.D8167867AC@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=ffc4af650aeff6787569fa70957f8fe3c1c297b7 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: James Hilliard Signed-off-by: Thomas Petazzoni --- package/iwd/iwd.hash | 2 +- package/iwd/iwd.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/iwd/iwd.hash b/package/iwd/iwd.hash index 3f18146e13..9f88b2d6f1 100644 --- a/package/iwd/iwd.hash +++ b/package/iwd/iwd.hash @@ -1,5 +1,5 @@ # From https://mirrors.edge.kernel.org/pub/linux/network/wireless/sha256sums.asc -sha256 c1a82032e994861e794cf3b5a16d07ae1aa03a6674f716c73408ffeae2a233ba iwd-2.16.tar.xz +sha256 5901ab3fbb74bb75ec9adda35daeff595e4d238882fee7fc8c805b30ca79d943 iwd-2.17.tar.xz # License files sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING diff --git a/package/iwd/iwd.mk b/package/iwd/iwd.mk index af6b2f849a..c516bab471 100644 --- a/package/iwd/iwd.mk +++ b/package/iwd/iwd.mk @@ -4,7 +4,7 @@ # ################################################################################ -IWD_VERSION = 2.16 +IWD_VERSION = 2.17 IWD_SOURCE = iwd-$(IWD_VERSION).tar.xz IWD_SITE = $(BR2_KERNEL_MIRROR)/linux/network/wireless IWD_LICENSE = LGPL-2.1+ From thomas.petazzoni at bootlin.com Mon May 6 19:14:52 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:14:52 +0200 Subject: [Buildroot] [PATCH 1/2] package/ell: bump to version 0.65 In-Reply-To: <20240506185231.3470040-1-james.hilliard1@gmail.com> References: <20240506185231.3470040-1-james.hilliard1@gmail.com> Message-ID: <20240506211452.3dc4b395@windsurf> On Mon, 6 May 2024 12:52:30 -0600 James Hilliard wrote: > Signed-off-by: James Hilliard > --- > package/ell/ell.hash | 2 +- > package/ell/ell.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Both applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 19:25:51 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:25:51 +0200 Subject: [Buildroot] [PATCH 1/1] package/highway: fix build with powerpc7 In-Reply-To: <20240505084753.38281-1-fontaine.fabrice@gmail.com> References: <20240505084753.38281-1-fontaine.fabrice@gmail.com> Message-ID: <20240506212551.55d9132c@windsurf> Hello Fabrice, On Sun, 5 May 2024 10:47:53 +0200 Fabrice Fontaine wrote: > +ifeq ($(BR2_powerpc_power7),y) > +HIGHWAY_CXXFLAGS += -DHWY_DISABLE_PPC8_CRYPTO > +endif You're going to hate me, but this really shouldn't require a hack in Buildroot's packaging. It should be handled directly by the highway build system/conditional build logic. BTW, some stuff in hwy/detect_targets.h is weird: #if HWY_ARCH_PPC && HWY_COMPILER_GCC && defined(__ALTIVEC__) && \ defined(__VSX__) && defined(__POWER8_VECTOR__) && \ (defined(__CRYPTO__) || defined(HWY_DISABLE_PPC8_CRYPTO)) #define HWY_BASELINE_PPC8 HWY_PPC8 #else #define HWY_BASELINE_PPC8 0 #endif Why is this defined(__CRYPTO__) || defined(HWY_DISABLE_PPC8_CRYPTO) ? So when you *disable* PPC8 crypto, it uses it? Or I am misunderstanding things? The problematic code starts with: #if !HWY_S390X_HAVE_Z14 && !defined(HWY_DISABLE_PPC8_CRYPTO) I guess it needs some additional condition to not kick in on Power7. Could you have a look into this, or report the bug upstream? Best regards, Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 19:27:53 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:27:53 +0200 Subject: [Buildroot] [git commit] package/shadow: fix NLS build Message-ID: <20240506192805.DED12867B1@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=f82384652c0feed99dc07f08fae5ec1646d38dfc branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master NLS is an optional dependency since the addition of the package in commit f78c5cb5cae93a9e63dad4361d78e1787759382f: /home/autobuild/autobuild/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-musleabi/12.3.0/../../../../arm-buildroot-linux-musleabi/bin/ld: ../lib/.libs/libshadow.a(libshadow_la-alloc.o): in function `xcalloc': alloc.c:(.text+0x7c): undefined reference to `libintl_gettext' Fixes: f78c5cb5cae93a9e63dad4361d78e1787759382f - http://autobuild.buildroot.org/results/9f604d09745ffa1f4db3bdcfe0326c236effac0c Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/shadow/shadow.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package/shadow/shadow.mk b/package/shadow/shadow.mk index 491f271330..e4d8b67b8a 100644 --- a/package/shadow/shadow.mk +++ b/package/shadow/shadow.mk @@ -10,6 +10,8 @@ SHADOW_SOURCE = shadow-$(SHADOW_VERSION).tar.xz SHADOW_LICENSE = BSD-3-Clause SHADOW_LICENSE_FILES = COPYING SHADOW_CPE_ID_VENDOR = debian +SHADOW_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) +SHADOW_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) SHADOW_CONF_OPTS = \ --disable-man \ From thomas.petazzoni at bootlin.com Mon May 6 19:28:11 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:28:11 +0200 Subject: [Buildroot] [PATCH 1/1] package/shadow: fix NLS build In-Reply-To: <20240505141759.872371-1-fontaine.fabrice@gmail.com> References: <20240505141759.872371-1-fontaine.fabrice@gmail.com> Message-ID: <20240506212811.548239ea@windsurf> On Sun, 5 May 2024 16:17:59 +0200 Fabrice Fontaine wrote: > NLS is an optional dependency since the addition of the package in > commit f78c5cb5cae93a9e63dad4361d78e1787759382f: > > /home/autobuild/autobuild/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-musleabi/12.3.0/../../../../arm-buildroot-linux-musleabi/bin/ld: ../lib/.libs/libshadow.a(libshadow_la-alloc.o): in function `xcalloc': > alloc.c:(.text+0x7c): undefined reference to `libintl_gettext' > > Fixes: f78c5cb5cae93a9e63dad4361d78e1787759382f > - http://autobuild.buildroot.org/results/9f604d09745ffa1f4db3bdcfe0326c236effac0c > > Signed-off-by: Fabrice Fontaine > --- > package/shadow/shadow.mk | 2 ++ > 1 file changed, 2 insertions(+) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 19:28:53 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:28:53 +0200 Subject: [Buildroot] [PATCH 1/1] package/pppd: fix build with kernel < 4.7 In-Reply-To: <20240505155349.1149835-1-fontaine.fabrice@gmail.com> References: <20240505155349.1149835-1-fontaine.fabrice@gmail.com> Message-ID: <20240506212853.0f36f8d2@windsurf> On Sun, 5 May 2024 17:53:49 +0200 Fabrice Fontaine wrote: > Fix the following build failure with kernel < 4.7 raised since bump to > version 2.5.0 in commit 0c15169f5ae57d88a77df34cc896044a37c9597b and > https://github.com/ppp-project/ppp/commit/81ad945630120cc1c27c8bb00503be42b76ff202: > > sys-linux.c: In function 'get_ppp_stats_rtnetlink': > sys-linux.c:1783:29: error: field 'ifsm' has incomplete type > 1783 | struct if_stats_msg ifsm; > | ^~~~ > > Fixes: > - http://autobuild.buildroot.org/results/82392df447f650f241f23e59e65131fb4a930010 > > Signed-off-by: Fabrice Fontaine > --- > ...pile-with-older-Linux-kernel-headers.patch | 66 +++++++++++++++++++ > 1 file changed, 66 insertions(+) > create mode 100644 package/pppd/0005-pppd-sys-linux-Fix-compile-with-older-Linux-kernel-headers.patch Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 19:30:17 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:30:17 +0200 Subject: [Buildroot] [git commit] configs/sheevaplug_defconfig: bump Linux to fix binutils 2.41 build Message-ID: <20240506193050.A943C867B0@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=c0dc1b3425ae3bade14553a96e7475a79d753d4e branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6761770801 The Linux kernel fails to build since commit e88225ed882 (package/binutils: make 2.41 the default version): arch/arm/mm/proc-feroceon.S: Assembler messages: arch/arm/mm/proc-feroceon.S:587: Error: junk at end of line, first unrecognized character is `#' make[3]: *** [scripts/Makefile.build:430: arch/arm/mm/proc-feroceon.o] Error 1 make[3]: *** Waiting for unfinished jobs.... Fix the build by bumping the kernel to 4.14.336, which includes commit 3ab03df64f77 (ARM: 8933/1: replace Sun/Solaris style flag on section directive): https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-4.14.y&id=3ab03df64f7754728a2257c47775a70a88428331 Signed-off-by: Peter Korsgaard Signed-off-by: Thomas Petazzoni --- configs/sheevaplug_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/sheevaplug_defconfig b/configs/sheevaplug_defconfig index 7f186df22c..0879f17071 100644 --- a/configs/sheevaplug_defconfig +++ b/configs/sheevaplug_defconfig @@ -27,7 +27,7 @@ BR2_TARGET_UBOOT_FORMAT_KWB=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.253" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.336" BR2_LINUX_KERNEL_DEFCONFIG="mvebu_v5" BR2_LINUX_KERNEL_APPENDED_UIMAGE=y BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" From thomas.petazzoni at bootlin.com Mon May 6 19:28:47 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:28:47 +0200 Subject: [Buildroot] [git commit] package/pppd: fix build with kernel < 4.7 Message-ID: <20240506193050.9A14A867DB@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=45c1def9915ead52a5e4b874c33194653b598117 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fix the following build failure with kernel < 4.7 raised since bump to version 2.5.0 in commit 0c15169f5ae57d88a77df34cc896044a37c9597b and https://github.com/ppp-project/ppp/commit/81ad945630120cc1c27c8bb00503be42b76ff202: sys-linux.c: In function 'get_ppp_stats_rtnetlink': sys-linux.c:1783:29: error: field 'ifsm' has incomplete type 1783 | struct if_stats_msg ifsm; | ^~~~ Fixes: - http://autobuild.buildroot.org/results/82392df447f650f241f23e59e65131fb4a930010 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- ...x-compile-with-older-Linux-kernel-headers.patch | 66 ++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/package/pppd/0005-pppd-sys-linux-Fix-compile-with-older-Linux-kernel-headers.patch b/package/pppd/0005-pppd-sys-linux-Fix-compile-with-older-Linux-kernel-headers.patch new file mode 100644 index 0000000000..46c293103a --- /dev/null +++ b/package/pppd/0005-pppd-sys-linux-Fix-compile-with-older-Linux-kernel-headers.patch @@ -0,0 +1,66 @@ +From 7a3f478a4b7128d4f70ea64d99fedec766b1c009 Mon Sep 17 00:00:00 2001 +From: Jaco Kroon +Date: Tue, 31 Oct 2023 11:47:21 +0200 +Subject: [PATCH] pppd/sys-linux: Fix compile with older Linux kernel headers + (#452) + +When compiling pppd against kernel headers which don't provide +the definitions for the NETLINK mechanisms, leave out the code +which uses NETLINK, so as to avoid getting compile errors. + +Upstream commit in Linux refers. + +commit 10c9ead9f3c6bb24bddc9a96681f7d58e6623966 +Author: Roopa Prabhu +Date: Wed Apr 20 08:43:43 2016 -0700 +rtnetlink: add new RTM_GETSTATS message to dump link stats + +This commit adds the #defines and structs used, so simply not compiling +this code if the required #defines isn't there should solve the problem. + +Closes: #450 + +Signed-off-by: Jaco Kroon +Upstream: https://github.com/ppp-project/ppp/commit/7a3f478a4b7128d4f70ea64d99fedec766b1c009 +Signed-off-by: Fabrice Fontaine +--- + pppd/sys-linux.c | 12 ++---------- + 1 file changed, 2 insertions(+), 10 deletions(-) + +diff --git a/pppd/sys-linux.c b/pppd/sys-linux.c +index 561b150f2..a8d6cd95b 100644 +--- a/pppd/sys-linux.c ++++ b/pppd/sys-linux.c +@@ -131,16 +131,6 @@ + #include + #include + #include +- +-/* Attempt at retaining compile-support with older than 4.7 kernels, or kernels +- * where RTM_NEWSTATS isn't defined for whatever reason. +- */ +-#ifndef RTM_NEWSTATS +-#define RTM_NEWSTATS 92 +-#define RTM_GETSTATS 94 +-#define IFLA_STATS_LINK_64 1 +-#endif +- + #include + + /* glibc versions prior to 2.24 do not define SOL_NETLINK */ +@@ -1776,6 +1766,7 @@ get_ppp_stats_ioctl(int u, struct pppd_stats *stats) + static int + get_ppp_stats_rtnetlink(int u, struct pppd_stats *stats) + { ++#ifdef RTM_NEWSTATS + static int fd = -1; + + struct { +@@ -1825,6 +1816,7 @@ get_ppp_stats_rtnetlink(int u, struct pppd_stats *stats) + err: + close(fd); + fd = -1; ++#endif + return 0; + } + From thomas.petazzoni at bootlin.com Mon May 6 19:30:33 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:30:33 +0200 Subject: [Buildroot] [git commit] configs/sheevaplug_defconfig: add hashes for u-boot and Linux Message-ID: <20240506193050.B7544867DD@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=56ce35d235b7f7b297e33c118e4e7b64491f73c6 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master And enable BR2_DOWNLOAD_FORCE_CHECK_HASHES. Generated by utils/add-custom-hashes, with the (redundant) linux-headers.hash replaced by a symlink. Signed-off-by: Peter Korsgaard Signed-off-by: Thomas Petazzoni --- .checkpackageignore | 1 - board/sheevaplug/patches/linux-headers/linux-headers.hash | 1 + board/sheevaplug/patches/linux/linux.hash | 2 ++ board/sheevaplug/patches/uboot/uboot.hash | 2 ++ configs/sheevaplug_defconfig | 1 + 5 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.checkpackageignore b/.checkpackageignore index 1135fa7175..44d4250e14 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -348,7 +348,6 @@ configs/rock_pi_n8_defconfig lib_defconfig.ForceCheckHash configs/rockpro64_defconfig lib_defconfig.ForceCheckHash configs/roseapplepi_defconfig lib_defconfig.ForceCheckHash configs/s6lx9_microboard_defconfig lib_defconfig.ForceCheckHash -configs/sheevaplug_defconfig lib_defconfig.ForceCheckHash configs/sipeed_lichee_rv_defconfig lib_defconfig.ForceCheckHash configs/sipeed_lichee_rv_dock_defconfig lib_defconfig.ForceCheckHash configs/sipeed_licheepi_nano_defconfig lib_defconfig.ForceCheckHash diff --git a/board/sheevaplug/patches/linux-headers/linux-headers.hash b/board/sheevaplug/patches/linux-headers/linux-headers.hash new file mode 120000 index 0000000000..5808d92afe --- /dev/null +++ b/board/sheevaplug/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/sheevaplug/patches/linux/linux.hash b/board/sheevaplug/patches/linux/linux.hash new file mode 100644 index 0000000000..b207306a2b --- /dev/null +++ b/board/sheevaplug/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 0820fdb7971c6974338081c11fbf2dc869870501e7bdcac4d0ed58ba1f57b61c linux-4.14.336.tar.xz diff --git a/board/sheevaplug/patches/uboot/uboot.hash b/board/sheevaplug/patches/uboot/uboot.hash new file mode 100644 index 0000000000..d6818bac36 --- /dev/null +++ b/board/sheevaplug/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9f10df88bc91b35642e461217f73256bbaeeca9ae2db8db56197ba5e89e1f6d4 u-boot-2018.07.tar.bz2 diff --git a/configs/sheevaplug_defconfig b/configs/sheevaplug_defconfig index 0879f17071..6b3719a507 100644 --- a/configs/sheevaplug_defconfig +++ b/configs/sheevaplug_defconfig @@ -4,6 +4,7 @@ BR2_arm926t=y # system BR2_GLOBAL_PATCH_DIR="board/sheevaplug/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y BR2_TARGET_GENERIC_GETTY=y BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" BR2_SYSTEM_DHCP="eth0" From thomas.petazzoni at bootlin.com Mon May 6 19:31:22 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:31:22 +0200 Subject: [Buildroot] [PATCH v2 1/2] configs/sheevaplug_defconfig: bump Linux to fix binutils 2.41 build In-Reply-To: <20240506074013.263439-1-peter@korsgaard.com> References: <20240506074013.263439-1-peter@korsgaard.com> Message-ID: <20240506213122.1da7a111@windsurf> On Mon, 6 May 2024 09:40:11 +0200 Peter Korsgaard wrote: > Fixes: > https://gitlab.com/buildroot.org/buildroot/-/jobs/6761770801 > > The Linux kernel fails to build since commit e88225ed882 (package/binutils: > make 2.41 the default version): > > arch/arm/mm/proc-feroceon.S: Assembler messages: > arch/arm/mm/proc-feroceon.S:587: Error: junk at end of line, first unrecognized character is `#' > make[3]: *** [scripts/Makefile.build:430: arch/arm/mm/proc-feroceon.o] Error 1 > make[3]: *** Waiting for unfinished jobs.... > > Fix the build by bumping the kernel to 4.14.336, which includes commit > 3ab03df64f77 (ARM: 8933/1: replace Sun/Solaris style flag on section > directive): > > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-4.14.y&id=3ab03df64f7754728a2257c47775a70a88428331 > > Signed-off-by: Peter Korsgaard > --- > configs/sheevaplug_defconfig | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Series applied. In the second patch you had forgotten (perhaps intentionally?) to update .checkpackageignore, so I did it while applying. Thanks! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 19:31:35 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:31:35 +0200 Subject: [Buildroot] [git commit] package/libhtp: security bump to version 0.5.48 Message-ID: <20240506193257.48156867E9@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=babb39c87366217ce84269ba11b29475d3d183b7 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fix CVE-2024-23837 and CVE-2024-28871 https://github.com/OISF/libhtp/security/advisories/GHSA-f9wf-rrjj-qx8m https://github.com/OISF/libhtp/security/advisories/GHSA-ffr2-45w9-7wmg https://github.com/OISF/libhtp/blob/0.5.48/ChangeLog Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/libhtp/libhtp.hash | 2 +- package/libhtp/libhtp.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/libhtp/libhtp.hash b/package/libhtp/libhtp.hash index c016cb3439..1809bc93a3 100644 --- a/package/libhtp/libhtp.hash +++ b/package/libhtp/libhtp.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 d4214f94522fa5a1ec1909dbb52831c534788d93bc6b2ca8252de9332b11b606 libhtp-0.5.45.tar.gz +sha256 7f0719732fd0c82f9915e3df27e31548798590ad624fbad24f58b50885248ab8 libhtp-0.5.48.tar.gz sha256 87c93904e5434c81622ea690c2b90097b9f162aaa92a96542649a157dbf98d15 LICENSE diff --git a/package/libhtp/libhtp.mk b/package/libhtp/libhtp.mk index 8a732d1d5c..8735f593d9 100644 --- a/package/libhtp/libhtp.mk +++ b/package/libhtp/libhtp.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBHTP_VERSION = 0.5.45 +LIBHTP_VERSION = 0.5.48 LIBHTP_SITE = $(call github,OISF,libhtp,$(LIBHTP_VERSION)) LIBHTP_LICENSE = BSD-3-Clause LIBHTP_LICENSE_FILES = LICENSE From thomas.petazzoni at bootlin.com Mon May 6 19:31:38 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:31:38 +0200 Subject: [Buildroot] [git commit] package/suricata: security bump to version 6.0.19 Message-ID: <20240506193257.59F07867EA@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=a8e60c4600f42212cb8c42e5b288d6406bb80db4 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fixes: - CVE-2024-23839 - Critical severity - CVE-2024-23836 - Critical severity - CVE-2024-23835 - High severity - CVE-2024-24568 - Moderate severity - CVE-2024-28870 - HIGH - CVE-2024-32663 CRITICAL (HIGH for 6.0.x) - CVE-2024-32664 CRITICAL (HIGH for 7.0.x) - CVE-2024-32867 MODERATE https://forum.suricata.io/t/suricata-7-0-3-and-6-0-16-released/4468 https://forum.suricata.io/t/suricata-7-0-4-and-6-0-17-released/4534 https://forum.suricata.io/t/suricata-6-0-18-released/4539 https://forum.suricata.io/t/suricata-7-0-5-and-6-0-19-released/4617 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/suricata/suricata.hash | 2 +- package/suricata/suricata.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/suricata/suricata.hash b/package/suricata/suricata.hash index 41befa61b9..58ab0d93b0 100644 --- a/package/suricata/suricata.hash +++ b/package/suricata/suricata.hash @@ -1,5 +1,5 @@ # Locally computed: -sha256 1bd546149ac6671c2476d520a38eab7755e10c3080fd2ec2dc8624b0cf89ee75 suricata-6.0.15.tar.gz +sha256 98c812faef466d337f107f13ae37843f1c719942b93832d70f1a2fd7ee1b5c2c suricata-6.0.19.tar.gz # Hash for license files: sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/suricata/suricata.mk b/package/suricata/suricata.mk index 5b52635328..2083e0caba 100644 --- a/package/suricata/suricata.mk +++ b/package/suricata/suricata.mk @@ -4,7 +4,7 @@ # ################################################################################ -SURICATA_VERSION = 6.0.15 +SURICATA_VERSION = 6.0.19 SURICATA_SITE = https://www.openinfosecfoundation.org/download SURICATA_LICENSE = GPL-2.0 SURICATA_LICENSE_FILES = COPYING LICENSE From thomas.petazzoni at bootlin.com Mon May 6 19:33:03 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:33:03 +0200 Subject: [Buildroot] [PATCH 1/2] package/libhtp: security bump to version 0.5.48 In-Reply-To: <20240506081959.330708-1-fontaine.fabrice@gmail.com> References: <20240506081959.330708-1-fontaine.fabrice@gmail.com> Message-ID: <20240506213303.69b9fa83@windsurf> On Mon, 6 May 2024 10:19:58 +0200 Fabrice Fontaine wrote: > Fix CVE-2024-23837 and CVE-2024-28871 > > https://github.com/OISF/libhtp/security/advisories/GHSA-f9wf-rrjj-qx8m > https://github.com/OISF/libhtp/security/advisories/GHSA-ffr2-45w9-7wmg > https://github.com/OISF/libhtp/blob/0.5.48/ChangeLog > > Signed-off-by: Fabrice Fontaine > --- > package/libhtp/libhtp.hash | 2 +- > package/libhtp/libhtp.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Both applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 19:41:09 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:41:09 +0200 Subject: [Buildroot] [git commit] package/oprofile: fix static build with binutils >= 2.40 Message-ID: <20240506194527.B37D3867F1@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=5272c6bea1247e87a32947bd960757a19fdf8b90 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master sframe library was added by binutils 2.40 and https://github.com/bminor/binutils-gdb/commit/19e559f1c91bfaedbd2f91d85ee161f3f03fda3c resulting in the following static build failure: /home/buildroot/autobuild/run/instance-1/output-1/build/binutils-2.41/bfd/elf-sframe.c:220: undefined reference to `sframe_decode' [...] configure: error: bfd library not found Fixes: - http://autobuild.buildroot.org/results/a9f3e09e6543b3773440c011e93bd41e357691e4 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- .../0002-fix-static-build-with-binutils-2.40.patch | 62 ++++++++++++++++++++++ package/oprofile/oprofile.mk | 7 +++ 2 files changed, 69 insertions(+) diff --git a/package/oprofile/0002-fix-static-build-with-binutils-2.40.patch b/package/oprofile/0002-fix-static-build-with-binutils-2.40.patch new file mode 100644 index 0000000000..3134363abc --- /dev/null +++ b/package/oprofile/0002-fix-static-build-with-binutils-2.40.patch @@ -0,0 +1,62 @@ +From 1e4cd78bca2bd6e0d17b6cb9caf1b172d7bac564 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 6 May 2024 08:41:49 +0200 +Subject: [PATCH] fix static build with binutils >= 2.40 + +sframe library was added by binutils 2.40 and +https://github.com/bminor/binutils-gdb/commit/19e559f1c91bfaedbd2f91d85ee161f3f03fda3c +resulting in the following static build failure: + +/home/buildroot/autobuild/run/instance-1/output-1/build/binutils-2.41/bfd/elf-sframe.c:220: undefined reference to `sframe_decode' + +[...] + +configure: error: bfd library not found + +Fixes: + - http://autobuild.buildroot.org/results/a9f3e09e6543b3773440c011e93bd41e357691e4 + +Signed-off-by: Fabrice Fontaine +Upstream: https://sourceforge.net/p/oprofile/bugs/295 +--- + configure.ac | 2 +- + m4/binutils.m4 | 7 +++++-- + 2 files changed, 6 insertions(+), 3 deletions(-) + +diff --git a/configure.ac b/configure.ac +index dc447f89..72ef0a21 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -334,7 +334,7 @@ AX_CHECK_DOCBOOK + dnl finally restore the original libs setting + LIBS="$ORIG_SAVE_LIBS" + LIBERTY_LIBS="-liberty $DL_LIB $INTL_LIB" +-BFD_LIBS="-lbfd -liberty $DL_LIB $INTL_LIB $Z_LIB" ++BFD_LIBS="-lbfd -liberty $DL_LIB $INTL_LIB $SFRAME_LIB $Z_LIB" + POPT_LIBS="-lpopt" + AC_SUBST(LIBERTY_LIBS) + AC_SUBST(BFD_LIBS) +diff --git a/m4/binutils.m4 b/m4/binutils.m4 +index c50e2f3c..e1ccd8e7 100644 +--- a/m4/binutils.m4 ++++ b/m4/binutils.m4 +@@ -10,11 +10,14 @@ AC_CHECK_FUNCS(xmemdup) + AC_CHECK_LIB(dl, dlopen, LIBS="$LIBS -ldl"; DL_LIB="-ldl", DL_LIB="") + AC_CHECK_LIB(intl, main, LIBS="$LIBS -lintl"; INTL_LIB="-lintl", INTL_LIB="") + +-AC_CHECK_LIB(bfd, bfd_openr, LIBS="-lbfd $LIBS"; Z_LIB="", ++AC_CHECK_LIB(bfd, bfd_openr, LIBS="-lbfd $LIBS"; SFRAME_LIB=""; Z_LIB="", + [AC_CHECK_LIB(z, compress, + dnl Use a different bfd function here so as not to use cached result from above + [AC_CHECK_LIB(bfd, bfd_fdopenr, LIBS="-lbfd -lz $LIBS"; Z_LIB="-lz", +- [AC_MSG_ERROR([bfd library not found])], -lz) ++dnl Use a different bfd function here so as not to use cached result from above ++ [AC_CHECK_LIB(bfd, bfd_close, LIBS="-lbfd -lsframe -lz $LIBS"; SFRAME_LIB="-lsframe"; Z_LIB="-lz", ++ [AC_MSG_ERROR([bfd library not found])], -lsframe -lz) ++ ], -lz) + ], + [AC_MSG_ERROR([libz library not found; required by libbfd])]) + ] +-- +2.43.0 + diff --git a/package/oprofile/oprofile.mk b/package/oprofile/oprofile.mk index 512fbf9ea1..590e63b4ac 100644 --- a/package/oprofile/oprofile.mk +++ b/package/oprofile/oprofile.mk @@ -12,6 +12,13 @@ OPROFILE_CPE_ID_VENDOR = maynard_johnson OPROFILE_CONF_OPTS = \ --disable-account-check \ --with-kernel=$(STAGING_DIR)/usr +# 0002-fix-static-build-with-binutils-2.40.patch +OPROFILE_AUTORECONF = YES + +define OPROFILE_CREATE_MISSING_FILES + touch $(@D)/NEWS $(@D)/AUTHORS $(@D)/ChangeLog +endef +OPROFILE_POST_EXTRACT_HOOKS += OPROFILE_CREATE_MISSING_FILES OPROFILE_DEPENDENCIES = popt binutils host-pkgconf From thomas.petazzoni at bootlin.com Mon May 6 19:45:51 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:45:51 +0200 Subject: [Buildroot] [PATCH 1/1] package/oprofile: fix static build with binutils >= 2.40 In-Reply-To: <20240506070049.137839-1-fontaine.fabrice@gmail.com> References: <20240506070049.137839-1-fontaine.fabrice@gmail.com> Message-ID: <20240506214551.4fda91cf@windsurf> On Mon, 6 May 2024 09:00:49 +0200 Fabrice Fontaine wrote: > sframe library was added by binutils 2.40 and > https://github.com/bminor/binutils-gdb/commit/19e559f1c91bfaedbd2f91d85ee161f3f03fda3c > resulting in the following static build failure: > > /home/buildroot/autobuild/run/instance-1/output-1/build/binutils-2.41/bfd/elf-sframe.c:220: undefined reference to `sframe_decode' > > [...] > > configure: error: bfd library not found > > Fixes: > - http://autobuild.buildroot.org/results/a9f3e09e6543b3773440c011e93bd41e357691e4 > > Signed-off-by: Fabrice Fontaine > --- > ...-fix-static-build-with-binutils-2.40.patch | 62 +++++++++++++++++++ > package/oprofile/oprofile.mk | 7 +++ > 2 files changed, 69 insertions(+) > create mode 100644 package/oprofile/0002-fix-static-build-with-binutils-2.40.patch Life would *really* be easier if binutils was installing a libbfd.pc, and oprofile would use it to detect libbfd and automatically know about its indirect dependencies. But oh well, patch applied, thanks! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 19:51:00 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:51:00 +0200 Subject: [Buildroot] [PATCH v2] configs/beagleboneai64_defconfig: new defconfig In-Reply-To: <20240506083905.14681-1-romain.naour@smile.fr> References: <20240506083905.14681-1-romain.naour@smile.fr> Message-ID: <20240506215100.13296b7a@windsurf> Hello Romain, On Mon, 6 May 2024 10:39:05 +0200 Romain Naour wrote: > Adds support for BeagleBone AI-64 board by introducing the > beagleboneai64_defconfig file and related support files. Perhaps you should state that this board uses the J721E SoC, also known as DRA829, also known as TDA4VM. This would help... > > Retrieve BSP settings from meta-ti (may be useful for other TI boards): > > - This defconfig requires u-boot binman support added in u-boot since > 2023.10. > See FOSDEM 2024 talk by TI folks about Binman and how it simplify > the overall boot-loader build flow [1]. > > - Set BR2_TARGET_ARM_TRUSTED_FIRMWARE_TARGET_BOARD = "generic" > meta-ti]$ git grep TFA_BOARD > meta-ti-bsp/conf/machine/beagleplay.conf:TFA_BOARD = "lite" > meta-ti-bsp/conf/machine/include/am62axx.inc:TFA_BOARD = "lite" > meta-ti-bsp/conf/machine/include/am62pxx.inc:TFA_BOARD = "lite" > meta-ti-bsp/conf/machine/include/am62xx.inc:TFA_BOARD = "lite" > meta-ti-bsp/conf/machine/include/am64xx.inc:TFA_BOARD = "lite" > meta-ti-bsp/conf/machine/include/am65xx.inc:TFA_BOARD = "generic" > meta-ti-bsp/conf/machine/include/j7200.inc:TFA_BOARD = "generic" > meta-ti-bsp/conf/machine/include/j721e.inc:TFA_BOARD = "generic" ... understand that this setting is the important one. > meta-ti-bsp/conf/machine/include/j721s2.inc:TFA_BOARD = "generic" > meta-ti-bsp/conf/machine/include/j722s.inc:TFA_BOARD = "lite" > meta-ti-bsp/conf/machine/include/j784s4.inc:TFA_BOARD = "j784s4" > > - Set BR2_TARGET_UBOOT_NEEDS_ATF_BL31 to provide BL31 variable pointing > to ATF bl31.bin to the U-Boot build process [2]. > > - Set BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE to OP-TEE as BL32 > secure payload. meta-ti set "SPD=opteed" to build ATF [3]. > > - Set BR2_TARGET_OPTEE_OS_PLATFORM to "k3-j721e". ... and understand this setting as well. > - u-boot is looking at /boot/dtb/ti for devicetree. But Buildroot > strips the prefixes when installing them into /boot. Set > BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME to keep "ti" directory used by > the kernel to organize device tree sources. > TI's mmc.env [5] uses "dtb" as additional subdirectory, so we need > to create a symlink to make sure /boot/dtb/ti exist. > (Yocto uses KERNEL_DTBDEST = "${KERNEL_IMAGEDEST}/dtb"). > Using a symlink avoid to customize too much the u-boot environment. > > - At least, provide a custom uEnv.txt to avoid using "Standard boot" > or "distroboot" [6] to boot. I'm not sure to understand the "At least" here. Also, why don't you want to use distroboot? We precisely try to encourage using distroboot in Buildroot defconfigs, instead of uEnv.txt stuff. So it's a bit going backward to use uEnv.txt here. Could you explain this? > diff --git a/configs/beagleboneai64_defconfig b/configs/beagleboneai64_defconfig > new file mode 100644 > index 0000000000..593c41625c > --- /dev/null > +++ b/configs/beagleboneai64_defconfig > @@ -0,0 +1,50 @@ > +BR2_aarch64=y > +BR2_cortex_a72=y > +BR2_GLOBAL_PATCH_DIR="board/beagleboard/beagleboneai64/patches" > +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y Aren't we supposed to have BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_XYZ=y somewhere? Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 19:58:18 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:58:18 +0200 Subject: [Buildroot] [git commit] configs/orangepi_zero2w: new board Message-ID: <20240506195843.AA73B86805@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=837d2a7ef257bfe0c091ab8ed3416ccc94b188b0 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master This patch adds basic support for the new OrangePi Zero2W board: - http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-Zero-2W.html Brief summary of the board features: - H618 Allwinner SoC - Quad-Core ARM Cortex-A53 Processor 1.5GHz - Mali G31 MP2 GPU - LPDDR4: 1GB/2GB/4GB - Wi-Fi5.0+BT 5.0 - 2x Type-C USB 2.0 - 1x Mini HDMI - Wi-Fi 5.0 + BT 5.0 - 40-pin expansion interface (GPIO / UART / I2C / SPI / PWM) - 24-pin expansion interface (2x USB 2.0 / ETH / IR / audio) BSP includes the following components: - mainline ATF v2.10 - mainline U-Boot v2024.04 - mainline Linux kernel v6.8 No custom scripts required: all is covered by common orangepi scripts. However new option BR2_DOWNLOAD_FORCE_CHECK_HASHES requires checksums for all the BSP components. They are added as board specific patches. Signed-off-by: Sergey Matyukevich Signed-off-by: Thomas Petazzoni --- DEVELOPERS | 2 + .../arm-trusted-firmware/arm-trusted-firmware.hash | 2 + .../patches/linux-headers/linux-headers.hash | 1 + .../orangepi-zero2w/patches/linux/linux.hash | 2 + .../orangepi-zero2w/patches/uboot/uboot.hash | 2 + board/orangepi/orangepi-zero2w/readme.txt | 32 ++++++++++++ configs/orangepi_zero2w_defconfig | 58 ++++++++++++++++++++++ 7 files changed, 99 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index c2d3f52a59..3b19665a84 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2800,11 +2800,13 @@ F: board/orangepi/orangepi-zero F: board/orangepi/orangepi-one F: board/orangepi/orangepi-pc-plus/ F: board/orangepi/orangepi-zero-plus2/ +F: board/orangepi/orangepi-zero2w/ F: configs/linksprite_pcduino_defconfig F: configs/orangepi_one_defconfig F: configs/orangepi_pc_plus_defconfig F: configs/orangepi_zero_defconfig F: configs/orangepi_zero_plus2_defconfig +F: configs/orangepi_zero2w_defconfig F: package/armbian-firmware/ F: package/hostapd/ F: package/rtl8189fs/ diff --git a/board/orangepi/orangepi-zero2w/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/orangepi/orangepi-zero2w/patches/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 0000000000..c9d043c46f --- /dev/null +++ b/board/orangepi/orangepi-zero2w/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 2e18b881ada9198173238cca80086c787b1fa3f698944bde1743142823fc511c arm-trusted-firmware-v2.10.tar.gz diff --git a/board/orangepi/orangepi-zero2w/patches/linux-headers/linux-headers.hash b/board/orangepi/orangepi-zero2w/patches/linux-headers/linux-headers.hash new file mode 120000 index 0000000000..5808d92afe --- /dev/null +++ b/board/orangepi/orangepi-zero2w/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/orangepi/orangepi-zero2w/patches/linux/linux.hash b/board/orangepi/orangepi-zero2w/patches/linux/linux.hash new file mode 100644 index 0000000000..5a6f308c7b --- /dev/null +++ b/board/orangepi/orangepi-zero2w/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9e723232d603ab45ebf043c34714c48f277ab195c29abcb8472f2a4c3a5a1995 linux-6.8.6.tar.xz diff --git a/board/orangepi/orangepi-zero2w/patches/uboot/uboot.hash b/board/orangepi/orangepi-zero2w/patches/uboot/uboot.hash new file mode 100644 index 0000000000..97a2b4eaf9 --- /dev/null +++ b/board/orangepi/orangepi-zero2w/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 diff --git a/board/orangepi/orangepi-zero2w/readme.txt b/board/orangepi/orangepi-zero2w/readme.txt new file mode 100644 index 0000000000..84796579da --- /dev/null +++ b/board/orangepi/orangepi-zero2w/readme.txt @@ -0,0 +1,32 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the OrangePi Zero2W. Current configuration will +bring-up the board and allow access through the serial console. + +Orangepi Zero 2W links: +- http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-Zero-2W.html +- https://linux-sunxi.org/Xunlong_Orange_Pi_Zero2W + +How to build +============ + + $ make orangepi_zero2w_defconfig + $ make + +Note: you will need access to the internet to download the required sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Orangepi Zero2W and power it up. The console +is on the serial line, 115200 8N1. diff --git a/configs/orangepi_zero2w_defconfig b/configs/orangepi_zero2w_defconfig new file mode 100644 index 0000000000..4d8f25f451 --- /dev/null +++ b/configs/orangepi_zero2w_defconfig @@ -0,0 +1,58 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_8=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y + +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_GLOBAL_PATCH_DIR="board/orangepi/orangepi-zero2w/patches" + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.10" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50i_h616" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_zero2w" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="SCP=/dev/null" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.6" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-h618-orangepi-zero2w" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME=y + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Orangepi Zero2W" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="256M" +# BR2_TARGET_ROOTFS_TAR is not set + +# host tools +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y + +# image scripts +BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c $(BINARIES_DIR)/genimage.cfg" From thomas.petazzoni at bootlin.com Mon May 6 19:59:13 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:59:13 +0200 Subject: [Buildroot] [PATCH v2 1/1] configs/orangepi_zero2w: new board In-Reply-To: <20240505195427.3622027-1-geomatsi@gmail.com> References: <20240505195427.3622027-1-geomatsi@gmail.com> Message-ID: <20240506215913.43aa1fd3@windsurf> On Sun, 5 May 2024 22:54:19 +0300 Sergey Matyukevich wrote: > This patch adds basic support for the new OrangePi Zero2W board: > - http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-Zero-2W.html > > Brief summary of the board features: > - H618 Allwinner SoC > - Quad-Core ARM Cortex-A53 Processor 1.5GHz > - Mali G31 MP2 GPU > - LPDDR4: 1GB/2GB/4GB > - Wi-Fi5.0+BT 5.0 > - 2x Type-C USB 2.0 > - 1x Mini HDMI > - Wi-Fi 5.0 + BT 5.0 > - 40-pin expansion interface (GPIO / UART / I2C / SPI / PWM) > - 24-pin expansion interface (2x USB 2.0 / ETH / IR / audio) > > BSP includes the following components: > - mainline ATF v2.10 > - mainline U-Boot v2024.04 > - mainline Linux kernel v6.8 > > No custom scripts required: all is covered by common orangepi scripts. > However new option BR2_DOWNLOAD_FORCE_CHECK_HASHES requires checksums > for all the BSP components. They are added as board specific patches. > > Signed-off-by: Sergey Matyukevich > --- You had forgotten to add board/orangepi/orangepi-zero2w/ to the DEVELOPERS file, so I did that when applying. Thanks for this contribution! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From fontaine.fabrice at gmail.com Mon May 6 20:02:06 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Mon, 6 May 2024 22:02:06 +0200 Subject: [Buildroot] [PATCH 1/1] package/pppd: add linux-pam optional dependency Message-ID: <20240506200206.111393-1-fontaine.fabrice@gmail.com> linux-pam is an optional dependency which is enbled by default since bump to version 2.5.0 in commit 0c15169f5ae57d88a77df34cc896044a37c9597b and https://github.com/ppp-project/ppp/commit/2883dd07101bf851e2ea368f0c04c91aea85cff2 Signed-off-by: Fabrice Fontaine --- package/pppd/pppd.mk | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/package/pppd/pppd.mk b/package/pppd/pppd.mk index 616b843e3d..0a1eaf9209 100644 --- a/package/pppd/pppd.mk +++ b/package/pppd/pppd.mk @@ -17,6 +17,13 @@ PPPD_AUTORECONF = YES PPPD_INSTALL_STAGING = YES PPPD_CONF_OPTS = --enable-multilink +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +PPPD_CONF_OPTS += --with-pam=$(STAGING_DIR)/usr +PPPD_DEPENDENCIES += linux-pam +else +PPPD_CONF_OPTS += --without-pam +endif + ifeq ($(BR2_PACKAGE_OPENSSL),y) PPPD_CONF_OPTS += \ --enable-eaptls \ -- 2.43.0 From thomas.petazzoni at bootlin.com Mon May 6 20:02:24 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:02:24 +0200 Subject: [Buildroot] [PATCH 1/1] package/liburiparser: security bump to version 0.9.8 In-Reply-To: <20240505190821.1252791-1-fontaine.fabrice@gmail.com> References: <20240505190821.1252791-1-fontaine.fabrice@gmail.com> Message-ID: <20240506220224.4b53441a@windsurf> On Sun, 5 May 2024 21:08:21 +0200 Fabrice Fontaine wrote: > - Fixed: [CVE-2024-34402] > Protect against integer overflow in ComposeQueryEngine > - Fixed: [CVE-2024-34403] > Protect against integer overflow in ComposeQueryMallocExMm > > https://github.com/uriparser/uriparser/blob/uriparser-0.9.8/ChangeLog > > Signed-off-by: Fabrice Fontaine > --- > package/liburiparser/liburiparser.hash | 2 +- > package/liburiparser/liburiparser.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 19:59:21 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 21:59:21 +0200 Subject: [Buildroot] [git commit] package/liburiparser: security bump to version 0.9.8 Message-ID: <20240506200229.341AA8680C@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=6fe29e41ccd6682bca48b0d9d206ae3a631339f0 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master - Fixed: [CVE-2024-34402] Protect against integer overflow in ComposeQueryEngine - Fixed: [CVE-2024-34403] Protect against integer overflow in ComposeQueryMallocExMm https://github.com/uriparser/uriparser/blob/uriparser-0.9.8/ChangeLog Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/liburiparser/liburiparser.hash | 2 +- package/liburiparser/liburiparser.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/liburiparser/liburiparser.hash b/package/liburiparser/liburiparser.hash index 73b4ec6867..f2e3317897 100644 --- a/package/liburiparser/liburiparser.hash +++ b/package/liburiparser/liburiparser.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 1ddae35cb3cc2c36e8199829d46f1c7f8b222e74a723fdae67ec8561e1ac5a39 uriparser-0.9.7.tar.xz +sha256 1d71c054837ea32a31e462bce5a1af272379ecf511e33448e88100b87ff73b2e uriparser-0.9.8.tar.xz sha256 287f09e6546a9610f949f89e8fb937cacfeabd7bfaa8c8a0c18312193bf04ad3 COPYING diff --git a/package/liburiparser/liburiparser.mk b/package/liburiparser/liburiparser.mk index 6d25b1d9bb..b0ba8c387b 100644 --- a/package/liburiparser/liburiparser.mk +++ b/package/liburiparser/liburiparser.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBURIPARSER_VERSION = 0.9.7 +LIBURIPARSER_VERSION = 0.9.8 LIBURIPARSER_SOURCE = uriparser-$(LIBURIPARSER_VERSION).tar.xz LIBURIPARSER_SITE = https://github.com/uriparser/uriparser/releases/download/uriparser-$(LIBURIPARSER_VERSION) LIBURIPARSER_LICENSE = BSD-3-Clause From thomas.petazzoni at bootlin.com Mon May 6 20:02:44 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:02:44 +0200 Subject: [Buildroot] [PATCH v2, 1/1] package/libutempter: do not hardcode PIE In-Reply-To: <20240505190044.1246330-1-fontaine.fabrice@gmail.com> References: <20240505190044.1246330-1-fontaine.fabrice@gmail.com> Message-ID: <20240506220244.720638ca@windsurf> On Sun, 5 May 2024 21:00:44 +0200 Fabrice Fontaine wrote: > PIE will be set by buildroot if the user wants it so set > {COMPILE,LINK}_PIE to an empty value to fix the following build failure > raised since the addition of the package in commit > 02c818bc5c7a6967a212f12e4caa8ccdfa0b452b: > > /home/buildroot/autobuild/run/instance-3/output-1/host/bin/m68k-linux-gcc -W -Wall -Waggregate-return -Wcast-align -Wconversion -Wdisabled-optimization -Wmissing-declarations -Wmissing-format-attribute -Wmissing-noreturn -Wmissing-prototypes -Wpointer-arith -Wredundant-decls -Wshadow -Wstrict-prototypes -Wwrite-strings -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -std=gnu99 -DLIBEXECDIR=\"/usr/lib\" -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Wl,-z,relro -Wl,-stats -fPIE -pie -Wl,-z,now utempter.c -o utempter > > [...] > > /home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/m68k-buildroot-linux-uclibc/12.3.0/../../../../m68k-buildroot-linux-uclibc/bin/ld: /home/buildroot/autobuild/run/instance-3/output-1/host/m68k-buildroot-linux-uclibc/sysroot/usr/lib/Scrt1.o: in function `lib_main': > (.text+0x4): undefined reference to `__shared_flat_add_library' > > Fixes: 02c818bc5c7a6967a212f12e4caa8ccdfa0b452b > - http://autobuild.buildroot.org/results/3a5581fd4edf56bbdc48ab111a2351fc70f1c703 > > Signed-off-by: Fabrice Fontaine > --- > Changes v1 -> v2 (after review of Yann E. Morin): > - Also set COMPILE_PIE Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:03:21 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:03:21 +0200 Subject: [Buildroot] [git commit] boot/optee-os: bump to release v4.2.0 Message-ID: <20240506200643.967E6868B6@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=314e9549a4533cf94707cf0c1736dcbf5b0266ac branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Bump OP-TEE to the latest tagged release Signed-off-by: Bryan Brattlof Signed-off-by: Thomas Petazzoni --- boot/optee-os/Config.in | 4 ++-- boot/optee-os/optee-os.hash | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/boot/optee-os/Config.in b/boot/optee-os/Config.in index 75bf00d450..34ea993136 100644 --- a/boot/optee-os/Config.in +++ b/boot/optee-os/Config.in @@ -18,7 +18,7 @@ choice Select the version of OP-TEE OS you want to use config BR2_TARGET_OPTEE_OS_LATEST - bool "4.0.0" + bool "4.2.0" depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS select BR2_TARGET_OPTEE_OS_NEEDS_PYTHON_CRYPTOGRAPHY help @@ -70,7 +70,7 @@ endif config BR2_TARGET_OPTEE_OS_VERSION string - default "4.0.0" if BR2_TARGET_OPTEE_OS_LATEST + default "4.2.0" if BR2_TARGET_OPTEE_OS_LATEST default "custom" if BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL default BR2_TARGET_OPTEE_OS_CUSTOM_REPO_VERSION \ if BR2_TARGET_OPTEE_OS_CUSTOM_GIT diff --git a/boot/optee-os/optee-os.hash b/boot/optee-os/optee-os.hash index 1f13931ca2..663640b2ce 100644 --- a/boot/optee-os/optee-os.hash +++ b/boot/optee-os/optee-os.hash @@ -1,4 +1,4 @@ -# From https://github.com/OP-TEE/optee_os/archive/4.0.0/optee-os-4.0.0.tar.gz -sha256 2c2c9525b36c96dfad6216520721b8e9663e6cacc61d0108a0c8bffc0ea175f1 optee-os-4.0.0.tar.gz +# From https://github.com/OP-TEE/optee_os/archive/4.2.0/optee-os-4.2.0.tar.gz +sha256 ce70f0d177001bf4855cd6cd6396f515af6126e4bba9b12c716a437a5cb40c7b optee-os-4.2.0.tar.gz # Locally computed sha256 1247ee90858f4037b6cac63cbffddfed435d0d73c631b37d78c1e6e6ab3e5d1a LICENSE From thomas.petazzoni at bootlin.com Mon May 6 20:04:37 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:04:37 +0200 Subject: [Buildroot] [git commit] boot/ti-k3-r5-loader: bump to version v2024.04 Message-ID: <20240506200643.B9719868B5@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=7ff2c03287302213968e00b54e5b7a4e79238fcb branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master The ti-k3-r5-loader is just U-Boot with a different defconfig compiled for the 32b MCU cores needed for TI's K3 generation of SoCs. Update to match the U-Boot version Signed-off-by: Bryan Brattlof Signed-off-by: Thomas Petazzoni --- boot/ti-k3-r5-loader/Config.in | 4 ++-- boot/ti-k3-r5-loader/ti-k3-r5-loader.hash | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/boot/ti-k3-r5-loader/Config.in b/boot/ti-k3-r5-loader/Config.in index a6cc16a0c3..c276528fad 100644 --- a/boot/ti-k3-r5-loader/Config.in +++ b/boot/ti-k3-r5-loader/Config.in @@ -17,7 +17,7 @@ choice here as it is used to build the main U-Boot package. config BR2_TARGET_TI_K3_R5_LOADER_LATEST_VERSION - bool "2024.01" + bool "2024.04" config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION bool "Custom version" @@ -61,7 +61,7 @@ endif config BR2_TARGET_TI_K3_R5_LOADER_VERSION string - default "2024.01" if BR2_TARGET_TI_K3_R5_LOADER_LATEST_VERSION + default "2024.04" if BR2_TARGET_TI_K3_R5_LOADER_LATEST_VERSION default BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE \ if BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION default "custom" if BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_TARBALL diff --git a/boot/ti-k3-r5-loader/ti-k3-r5-loader.hash b/boot/ti-k3-r5-loader/ti-k3-r5-loader.hash index fbe5d21540..a8021fb696 100644 --- a/boot/ti-k3-r5-loader/ti-k3-r5-loader.hash +++ b/boot/ti-k3-r5-loader/ti-k3-r5-loader.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 b99611f1ed237bf3541bdc8434b68c96a6e05967061f992443cb30aabebef5b3 u-boot-2024.01.tar.bz2 +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 Licenses/gpl-2.0.txt From thomas.petazzoni at bootlin.com Mon May 6 20:04:02 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:04:02 +0200 Subject: [Buildroot] [git commit] boot/uboot: bump to version v2024.04 Message-ID: <20240506200643.A9EA0868B7@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=b95b7752930356775dd19d6f30088c84feff0f11 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Update to the latest tagged release of U-Boot Signed-off-by: Bryan Brattlof Signed-off-by: Thomas Petazzoni --- boot/uboot/Config.in | 6 +++--- boot/uboot/uboot.hash | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/boot/uboot/Config.in b/boot/uboot/Config.in index ba95964139..d0901edc9d 100644 --- a/boot/uboot/Config.in +++ b/boot/uboot/Config.in @@ -41,7 +41,7 @@ choice Select the specific U-Boot version you want to use config BR2_TARGET_UBOOT_LATEST_VERSION - bool "2024.01" + bool "2024.04" config BR2_TARGET_UBOOT_CUSTOM_VERSION bool "Custom version" @@ -85,7 +85,7 @@ endif config BR2_TARGET_UBOOT_VERSION string - default "2024.01" if BR2_TARGET_UBOOT_LATEST_VERSION + default "2024.04" if BR2_TARGET_UBOOT_LATEST_VERSION default BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE \ if BR2_TARGET_UBOOT_CUSTOM_VERSION default "custom" if BR2_TARGET_UBOOT_CUSTOM_TARBALL @@ -279,7 +279,7 @@ config BR2_TARGET_UBOOT_USE_BINMAN help Use binman tool for generation and signing of boot images. - https://docs.u-boot.org/en/v2024.01/develop/package/binman.html + https://docs.u-boot.org/en/v2024.04/develop/package/binman.html menu "U-Boot binary format" diff --git a/boot/uboot/uboot.hash b/boot/uboot/uboot.hash index fbe5d21540..a8021fb696 100644 --- a/boot/uboot/uboot.hash +++ b/boot/uboot/uboot.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 b99611f1ed237bf3541bdc8434b68c96a6e05967061f992443cb30aabebef5b3 u-boot-2024.01.tar.bz2 +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 Licenses/gpl-2.0.txt From thomas.petazzoni at bootlin.com Mon May 6 20:05:05 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:05:05 +0200 Subject: [Buildroot] [git commit] configs/ti_am64x_sk_defconfig: update TFA to v2.10 Message-ID: <20240506200643.E52B1868B5@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=c1fdfc00dbaaceb2d4b6ae29e50c20992bed7292 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Update the TFA firmware to the latest LTS tag for v2.10 release of arm-trusted-firmware Signed-off-by: Bryan Brattlof Signed-off-by: Thomas Petazzoni --- .../ti/am64x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash | 2 +- configs/ti_am64x_sk_defconfig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/board/ti/am64x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/ti/am64x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash index 74fe35c9bc..8f60864fbf 100644 --- a/board/ti/am64x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash +++ b/board/ti/am64x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -1,2 +1,2 @@ # Locally computed: -sha256 327c65b1bc231608a7a808b068b00c1a22310e9fc86158813cd10a9711d5725e arm-trusted-firmware-v2.7.tar.gz +sha256 ba215404fe9db26e5f2cef3fdce17b7c8ed344a2a1d592dd01a5f1c5e72cfdbd arm-trusted-firmware-lts-v2.10.4.tar.gz diff --git a/configs/ti_am64x_sk_defconfig b/configs/ti_am64x_sk_defconfig index 8dbe0fae33..bd576d90bb 100644 --- a/configs/ti_am64x_sk_defconfig +++ b/configs/ti_am64x_sk_defconfig @@ -19,7 +19,7 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_ROOTFS_EXT2_SIZE="120M" BR2_TARGET_ARM_TRUSTED_FIRMWARE=y BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y -BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.7" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="lts-v2.10.4" BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="k3" BR2_TARGET_ARM_TRUSTED_FIRMWARE_TARGET_BOARD="lite" BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE=y From thomas.petazzoni at bootlin.com Mon May 6 20:05:01 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:05:01 +0200 Subject: [Buildroot] [git commit] configs/ti_am62x_sk_defconfig: update TFA to v2.10 Message-ID: <20240506200643.D4A15868B7@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=33e092f8bb0db1000718d9a78ccccf0534382b08 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Update the TFA firmware to the latest LTS tag for v2.10 release of arm-trusted-firmware Signed-off-by: Bryan Brattlof Signed-off-by: Thomas Petazzoni --- .../ti/am62x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash | 2 +- configs/ti_am62x_sk_defconfig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/board/ti/am62x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash b/board/ti/am62x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash index 74fe35c9bc..8f60864fbf 100644 --- a/board/ti/am62x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash +++ b/board/ti/am62x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash @@ -1,2 +1,2 @@ # Locally computed: -sha256 327c65b1bc231608a7a808b068b00c1a22310e9fc86158813cd10a9711d5725e arm-trusted-firmware-v2.7.tar.gz +sha256 ba215404fe9db26e5f2cef3fdce17b7c8ed344a2a1d592dd01a5f1c5e72cfdbd arm-trusted-firmware-lts-v2.10.4.tar.gz diff --git a/configs/ti_am62x_sk_defconfig b/configs/ti_am62x_sk_defconfig index 84a409fc3b..3ce4862999 100644 --- a/configs/ti_am62x_sk_defconfig +++ b/configs/ti_am62x_sk_defconfig @@ -19,7 +19,7 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_ROOTFS_EXT2_SIZE="256M" BR2_TARGET_ARM_TRUSTED_FIRMWARE=y BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y -BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.7" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="lts-v2.10.4" BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="k3" BR2_TARGET_ARM_TRUSTED_FIRMWARE_TARGET_BOARD="lite" BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE=y From thomas.petazzoni at bootlin.com Mon May 6 20:05:09 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:05:09 +0200 Subject: [Buildroot] [git commit] configs/ti_am62x_sk_defconfig: update U-Boot to v2024.04 Message-ID: <20240506200644.047F5868B6@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=cc2910a7dbd331ae0ad6a8f06ce7cd0559a1ebe1 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Bump to the latest release from U-Boot Signed-off-by: Bryan Brattlof Signed-off-by: Thomas Petazzoni --- configs/ti_am62x_sk_defconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configs/ti_am62x_sk_defconfig b/configs/ti_am62x_sk_defconfig index 3ce4862999..51e8793a66 100644 --- a/configs/ti_am62x_sk_defconfig +++ b/configs/ti_am62x_sk_defconfig @@ -27,12 +27,12 @@ BR2_TARGET_OPTEE_OS=y BR2_TARGET_OPTEE_OS_PLATFORM="k3-am62x" BR2_TARGET_TI_K3_R5_LOADER=y BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION=y -BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE="2024.04" BR2_TARGET_TI_K3_R5_LOADER_BOARD_DEFCONFIG="am62x_evm_r5" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="am62x_evm_a53" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_NEEDS_OPENSSL=y From thomas.petazzoni at bootlin.com Mon May 6 20:05:13 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:05:13 +0200 Subject: [Buildroot] [git commit] configs/ti_am64x_sk_defconfig: update U-Boot to v2024.04 Message-ID: <20240506200644.19036868B5@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=7efd75867cd84926b7aa6524e0a41c50c32b20e1 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Bump to the latest release from U-Boot Signed-off-by: Bryan Brattlof Signed-off-by: Thomas Petazzoni --- configs/ti_am64x_sk_defconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configs/ti_am64x_sk_defconfig b/configs/ti_am64x_sk_defconfig index bd576d90bb..dc53d8f141 100644 --- a/configs/ti_am64x_sk_defconfig +++ b/configs/ti_am64x_sk_defconfig @@ -27,12 +27,12 @@ BR2_TARGET_OPTEE_OS=y BR2_TARGET_OPTEE_OS_PLATFORM="k3-am64x" BR2_TARGET_TI_K3_R5_LOADER=y BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION=y -BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE="2024.04" BR2_TARGET_TI_K3_R5_LOADER_BOARD_DEFCONFIG="am64x_evm_r5" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="am64x_evm_a53" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_NEEDS_OPENSSL=y From thomas.petazzoni at bootlin.com Mon May 6 20:06:31 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:06:31 +0200 Subject: [Buildroot] [git commit] DEVELOPERS: add myself to TI's packages and reference boards Message-ID: <20240506200644.4907B868B6@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=35c7cc56441ea58834201c7d08026e05209fc1e9 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Add myself to the DEVELOPERS files to help review patches related to TI's reference boards. Signed-off-by: Bryan Brattlof Signed-off-by: Thomas Petazzoni --- DEVELOPERS | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index 3b19665a84..1c5ad1e42a 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -551,6 +551,13 @@ F: package/vmtouch/ N: Brock Williams F: package/pdmenu/ +N: Bryan Brattlof +F: board/ti/ +F: boot/ti-k3-boot-firmware/ +F: boot/ti-k3-r5-loader/ +F: configs/ti_am62x_sk_defconfig +F: configs/ti_am64x_sk_defconfig + N: Carlo Caione F: package/jailhouse/ F: package/sunxi-boards/ From thomas.petazzoni at bootlin.com Mon May 6 20:02:31 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:02:31 +0200 Subject: [Buildroot] [git commit] package/libutempter: do not hardcode PIE Message-ID: <20240506200643.7D041868B5@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=36b06928c8d63ef82cc785aaa72c5818c8dec0bc branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master PIE will be set by buildroot if the user wants it so set {COMPILE,LINK}_PIE to an empty value to fix the following build failure raised since the addition of the package in commit 02c818bc5c7a6967a212f12e4caa8ccdfa0b452b: /home/buildroot/autobuild/run/instance-3/output-1/host/bin/m68k-linux-gcc -W -Wall -Waggregate-return -Wcast-align -Wconversion -Wdisabled-optimization -Wmissing-declarations -Wmissing-format-attribute -Wmissing-noreturn -Wmissing-prototypes -Wpointer-arith -Wredundant-decls -Wshadow -Wstrict-prototypes -Wwrite-strings -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -std=gnu99 -DLIBEXECDIR=\"/usr/lib\" -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Wl,-z,relro -Wl,-stats -fPIE -pie -Wl,-z,now utempter.c -o utempter [...] /home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/m68k-buildroot-linux-uclibc/12.3.0/../../../../m68k-buildroot-linux-uclibc/bin/ld: /home/buildroot/autobuild/run/instance-3/output-1/host/m68k-buildroot-linux-uclibc/sysroot/usr/lib/Scrt1.o: in function `lib_main': (.text+0x4): undefined reference to `__shared_flat_add_library' Fixes: 02c818bc5c7a6967a212f12e4caa8ccdfa0b452b - http://autobuild.buildroot.org/results/3a5581fd4edf56bbdc48ab111a2351fc70f1c703 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/libutempter/libutempter.mk | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package/libutempter/libutempter.mk b/package/libutempter/libutempter.mk index d51f70049c..aad98126f7 100644 --- a/package/libutempter/libutempter.mk +++ b/package/libutempter/libutempter.mk @@ -11,7 +11,8 @@ LIBUTEMPTER_LICENSE = LGPL-2.1+ LIBUTEMPTER_LICENSE_FILES = COPYING define LIBUTEMPTER_BUILD_CMDS - $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + COMPILE_PIE= LINK_PIE= endef define LIBUTEMPTER_INSTALL_STAGING_CMDS From thomas.petazzoni at bootlin.com Mon May 6 20:06:19 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:06:19 +0200 Subject: [Buildroot] [git commit] configs/ti_am64x_sk_defconfig: update kernel to v6.8.8 Message-ID: <20240506200644.3A1BA868B5@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=deede5e9dee8ba34a15919e95385cae1847d72b4 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Update to the latest kernel to pull in the latest bug fixes and features for TI's SoCs and reference boards Signed-off-by: Bryan Brattlof Signed-off-by: Thomas Petazzoni --- board/ti/am64x-sk/patches/linux/linux.hash | 2 +- configs/ti_am64x_sk_defconfig | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/board/ti/am64x-sk/patches/linux/linux.hash b/board/ti/am64x-sk/patches/linux/linux.hash index cedae67f33..2e9aad399e 100644 --- a/board/ti/am64x-sk/patches/linux/linux.hash +++ b/board/ti/am64x-sk/patches/linux/linux.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 4e43d8c5fba14f7c82597838011648056487b7550fd83276ad534559e8499b1d linux-6.6.18.tar.xz +sha256 1c4cdcb9d560fad1fb95db2cb8afbedc922f9ead848371fe40363b13f9f631ba linux-6.8.8.tar.xz diff --git a/configs/ti_am64x_sk_defconfig b/configs/ti_am64x_sk_defconfig index dc53d8f141..1e8b8c9c02 100644 --- a/configs/ti_am64x_sk_defconfig +++ b/configs/ti_am64x_sk_defconfig @@ -1,5 +1,5 @@ BR2_aarch64=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_8=y BR2_GLOBAL_PATCH_DIR="board/ti/am64x-sk/patches" BR2_DOWNLOAD_FORCE_CHECK_HASHES=y BR2_ROOTFS_POST_BUILD_SCRIPT="board/ti/common/am6xx/post-build.sh" @@ -8,7 +8,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS="-c board/ti/am64x-sk/genimage.cfg" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.18" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.8" BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="ti/k3-am642-sk" From thomas.petazzoni at bootlin.com Mon May 6 20:05:54 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:05:54 +0200 Subject: [Buildroot] [git commit] configs/ti_am62x_sk_defconfig: bump kernel to v6.8.8 Message-ID: <20240506200644.29802868B6@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=1f5fd13567a6ecfbb91f832ce2e20d50337dcd86 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Update to the latest kernel to pull in the latest bug fixes and features for TI's SoCs and reference boards Signed-off-by: Bryan Brattlof Signed-off-by: Thomas Petazzoni --- board/ti/am62x-sk/patches/linux/linux.hash | 2 +- configs/ti_am62x_sk_defconfig | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/board/ti/am62x-sk/patches/linux/linux.hash b/board/ti/am62x-sk/patches/linux/linux.hash index cedae67f33..2e9aad399e 100644 --- a/board/ti/am62x-sk/patches/linux/linux.hash +++ b/board/ti/am62x-sk/patches/linux/linux.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 4e43d8c5fba14f7c82597838011648056487b7550fd83276ad534559e8499b1d linux-6.6.18.tar.xz +sha256 1c4cdcb9d560fad1fb95db2cb8afbedc922f9ead848371fe40363b13f9f631ba linux-6.8.8.tar.xz diff --git a/configs/ti_am62x_sk_defconfig b/configs/ti_am62x_sk_defconfig index 51e8793a66..36052dba40 100644 --- a/configs/ti_am62x_sk_defconfig +++ b/configs/ti_am62x_sk_defconfig @@ -1,5 +1,5 @@ BR2_aarch64=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_8=y BR2_GLOBAL_PATCH_DIR="board/ti/am62x-sk/patches" BR2_DOWNLOAD_FORCE_CHECK_HASHES=y BR2_ROOTFS_POST_BUILD_SCRIPT="board/ti/common/am6xx/post-build.sh" @@ -8,7 +8,7 @@ BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS="-c ttyS2,115200n8 -d k3-am625-sk.dtb -l am62x BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS="-c board/ti/am62x-sk/genimage.cfg" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.18" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.8" BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="ti/k3-am625-sk" From thomas.petazzoni at bootlin.com Mon May 6 20:04:51 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:04:51 +0200 Subject: [Buildroot] [git commit] boot/ti-k3-boot-firmware: bump to version 09.02.00.009 Message-ID: <20240506200643.C5DC7868B6@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=ae6d1f7375534351440b2b151721cb9eb8d5bca8 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master The 09.02.00.009 release of ti-linux-firmware has the latest updates to TI's TIFS, DM and DMSC firmware needed for the K3 generation of processors. Update to pull in these latest updates. Reviewed-by: Heiko Thiery Tested-by: Andreas Dannenberg Signed-off-by: Bryan Brattlof Signed-off-by: Thomas Petazzoni --- boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash | 2 +- boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash index 95131180ef..2398d02da2 100644 --- a/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash +++ b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.hash @@ -1,3 +1,3 @@ # Locally calculated sha256 ab20ffbe7bba7e94be246b3417d33a914b3f07c16c47ef5a7f7602349a666a61 LICENSE.ti -sha256 6032a258ce731d987576115f5de44c677a6b0cf8bddcd61a9a2852928bdfff92 ti-linux-firmware-08.06.00.006.tar.xz +sha256 ae888a0a22f8c5b8fe841236d6e40bb2f821d9a4161dab6924fd989e1467ef0e ti-linux-firmware-09.02.00.009.tar.xz diff --git a/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk index 1f8ade207c..9332732ad4 100644 --- a/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk +++ b/boot/ti-k3-boot-firmware/ti-k3-boot-firmware.mk @@ -4,9 +4,7 @@ # ################################################################################ -# The hash 340194800a581baf976360386dfc7b5acab8d948 defined in the -# Makefile of ti-k3-image-gen corresponds to the tag 08.06.00.006. -TI_K3_BOOT_FIRMWARE_VERSION = 08.06.00.006 +TI_K3_BOOT_FIRMWARE_VERSION = 09.02.00.009 TI_K3_BOOT_FIRMWARE_SITE = https://git.ti.com/cgit/processor-firmware/ti-linux-firmware/snapshot TI_K3_BOOT_FIRMWARE_SOURCE = ti-linux-firmware-$(TI_K3_BOOT_FIRMWARE_VERSION).tar.xz TI_K3_BOOT_FIRMWARE_INSTALL_IMAGES = YES From thomas.petazzoni at bootlin.com Mon May 6 20:07:18 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:07:18 +0200 Subject: [Buildroot] [PATCH RESEND v2 00/11] update bsp binaries for TI SoCs In-Reply-To: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> Message-ID: <20240506220718.3902a86a@windsurf> Hello Bryan, On Thu, 2 May 2024 11:26:50 -0500 Bryan Brattlof via buildroot wrote: > Bryan Brattlof (11): > boot/optee-os: bump to release v4.2.0 > boot/uboot: bump to version v2024.04 > boot/ti-k3-r5-loader: bump to version v2024.04 > boot/ti-k3-boot-firmware: bump to version 09.02.00.009 > configs/ti_am62x_sk_defconfig: update TFA to v2.10 > configs/ti_am64x_sk_defconfig: update TFA to v2.10 > configs/ti_am62x_sk_defconfig: update U-Boot to v2024.04 > configs/ti_am64x_sk_defconfig: update U-Boot to v2024.04 > configs/ti_am62x_sk_defconfig: bump kernel to v6.8.8 > configs/ti_am64x_sk_defconfig: update kernel to v6.8.8 > DEVELOPERS: add myself to TI's packages and reference boards Thanks, entire series applied! I'll reply individually to a few of the patches with a few remarks/comments (not much). Best regards, Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From francois.perrad at gadz.org Mon May 6 20:08:56 2024 From: francois.perrad at gadz.org (Francois Perrad) Date: Mon, 6 May 2024 22:08:56 +0200 Subject: [Buildroot] [PATCH v2 1/3] configs/olimex_imx233_olinuxino: bump Linux and U-Boot Message-ID: <20240506200858.30197-1-francois.perrad@gadz.org> Signed-off-by: Francois Perrad --- configs/olimex_imx233_olinuxino_defconfig | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/configs/olimex_imx233_olinuxino_defconfig b/configs/olimex_imx233_olinuxino_defconfig index 275dd98af..647292899 100644 --- a/configs/olimex_imx233_olinuxino_defconfig +++ b/configs/olimex_imx233_olinuxino_defconfig @@ -2,8 +2,8 @@ BR2_arm=y BR2_arm926t=y -# Linux headers same as kernel, a 5.4 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_4=y +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y # System BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" @@ -14,7 +14,7 @@ BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.4.8" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.83" BR2_LINUX_KERNEL_DEFCONFIG="mxs" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/olimex/imx233_olinuxino/linux-wifi.fragment" BR2_LINUX_KERNEL_DTS_SUPPORT=y @@ -40,7 +40,7 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="mx23_olinuxino" BR2_TARGET_UBOOT_FORMAT_SD=y -- 2.40.1 From francois.perrad at gadz.org Mon May 6 20:08:57 2024 From: francois.perrad at gadz.org (Francois Perrad) Date: Mon, 6 May 2024 22:08:57 +0200 Subject: [Buildroot] [PATCH v2 2/3] configs/olimex_imx233_olinuxino: configure eth0 with DHCP In-Reply-To: <20240506200858.30197-1-francois.perrad@gadz.org> References: <20240506200858.30197-1-francois.perrad@gadz.org> Message-ID: <20240506200858.30197-2-francois.perrad@gadz.org> Signed-off-by: Francois Perrad --- configs/olimex_imx233_olinuxino_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/olimex_imx233_olinuxino_defconfig b/configs/olimex_imx233_olinuxino_defconfig index 647292899..7049cfeac 100644 --- a/configs/olimex_imx233_olinuxino_defconfig +++ b/configs/olimex_imx233_olinuxino_defconfig @@ -7,6 +7,7 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y # System BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" +BR2_SYSTEM_DHCP="eth0" # For automatic firmware loading BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y -- 2.40.1 From francois.perrad at gadz.org Mon May 6 20:08:58 2024 From: francois.perrad at gadz.org (Francois Perrad) Date: Mon, 6 May 2024 22:08:58 +0200 Subject: [Buildroot] [PATCH v2 3/3] configs/olimex_imx233_olinuxino: add hashes for Linux & U-Boot In-Reply-To: <20240506200858.30197-1-francois.perrad@gadz.org> References: <20240506200858.30197-1-francois.perrad@gadz.org> Message-ID: <20240506200858.30197-3-francois.perrad@gadz.org> and enable BR2_DOWNLOAD_FORCE_CHECK_HASHES Signed-off-by: Francois Perrad --- .../imx233_olinuxino/patches/linux-headers/linux-headers.hash | 1 + board/olimex/imx233_olinuxino/patches/linux/linux.hash | 2 ++ board/olimex/imx233_olinuxino/patches/uboot/uboot.hash | 2 ++ configs/olimex_imx233_olinuxino_defconfig | 4 ++++ 4 files changed, 9 insertions(+) create mode 120000 board/olimex/imx233_olinuxino/patches/linux-headers/linux-headers.hash create mode 100644 board/olimex/imx233_olinuxino/patches/linux/linux.hash create mode 100644 board/olimex/imx233_olinuxino/patches/uboot/uboot.hash diff --git a/board/olimex/imx233_olinuxino/patches/linux-headers/linux-headers.hash b/board/olimex/imx233_olinuxino/patches/linux-headers/linux-headers.hash new file mode 120000 index 000000000..5808d92af --- /dev/null +++ b/board/olimex/imx233_olinuxino/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/olimex/imx233_olinuxino/patches/linux/linux.hash b/board/olimex/imx233_olinuxino/patches/linux/linux.hash new file mode 100644 index 000000000..1dba724d0 --- /dev/null +++ b/board/olimex/imx233_olinuxino/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 88b69611093613ce4494527685f833af0c31b986dcbeda7086f69f18f9e0b190 linux-6.1.83.tar.xz diff --git a/board/olimex/imx233_olinuxino/patches/uboot/uboot.hash b/board/olimex/imx233_olinuxino/patches/uboot/uboot.hash new file mode 100644 index 000000000..c1aeddf06 --- /dev/null +++ b/board/olimex/imx233_olinuxino/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 diff --git a/configs/olimex_imx233_olinuxino_defconfig b/configs/olimex_imx233_olinuxino_defconfig index 7049cfeac..d45c55ada 100644 --- a/configs/olimex_imx233_olinuxino_defconfig +++ b/configs/olimex_imx233_olinuxino_defconfig @@ -5,6 +5,10 @@ BR2_arm926t=y # Linux headers same as kernel, a 6.1 series BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y +# Build +BR2_GLOBAL_PATCH_DIR="board/olimex/imx233_olinuxino/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + # System BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" BR2_SYSTEM_DHCP="eth0" -- 2.40.1 From thomas.petazzoni at bootlin.com Mon May 6 20:09:48 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:09:48 +0200 Subject: [Buildroot] [PATCH RESEND v2 02/11] boot/uboot: bump to version v2024.04 In-Reply-To: <20240506085315.lb4frefetaffps6i@dasso> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> <20240430-optee-update-v2-2-5bdc2f940db1@ti.com> <20240506085315.lb4frefetaffps6i@dasso> Message-ID: <20240506220948.7baeea19@windsurf> Hello Andreas, On Mon, 6 May 2024 03:53:15 -0500 Andreas Dannenberg via buildroot wrote: > Similar to your other patch ("boot/optee-os: bump to release v4.2.0") > changing the global default will affect other platforms so there's some > risk for breakage I suppose. Why not keeping those specific changes to > the AM62/AM64 platforms? What Bryan did is totally fine and in line with how we handle things in Buildroot. For packages that are close the hardware (OP-TEE, TF-A, U-Boot, Linux), Buildroot offers: - Using a "latest" version, which is regularly updated to the latest upstream version, which means that if you change Buildroot version, this version changes, like for any other package. - Using a "custom" version, which is provided as an URL to a custom tarball, a tag/commit in a Git repo, etc. In this case, the version is explicitly specified in the user's .config file, and doesn't change when Buildroot is updated. So, what Bryan did is update the "latest" version, and this is perfectly correct. All our defconfigs use a "custom" version for all of Linux, U-Boot, OP-TEE, TF-A, specifically to ensure that despite the update in Buildroot, our defconfig keep on using the versions that were tested by the developer who submitted the defconfig. Best regards, Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:10:40 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:10:40 +0200 Subject: [Buildroot] [PATCH RESEND v2 05/11] configs/ti_am62x_sk_defconfig: update TFA to v2.10 In-Reply-To: <20240430-optee-update-v2-5-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> <20240430-optee-update-v2-5-5bdc2f940db1@ti.com> Message-ID: <20240506221040.7d93b31e@windsurf> On Thu, 2 May 2024 11:26:55 -0500 Bryan Brattlof via buildroot wrote: > Update the TFA firmware to the latest LTS tag for v2.10 release of > arm-trusted-firmware > > Signed-off-by: Bryan Brattlof > --- > .../ti/am62x-sk/patches/arm-trusted-firmware/arm-trusted-firmware.hash | 2 +- > configs/ti_am62x_sk_defconfig | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) The update of TF-A/U-Boot/Linux in one defconfig could be done in one single commit, so you could have done: configs/ti_am62x_sk: update Linux, U-Boot, TF-A configs/ti_am64x_sk: update Linux, U-Boot, TF-A This is generally considered a good enough split. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:11:05 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:11:05 +0200 Subject: [Buildroot] [PATCH RESEND v2 03/11] boot/ti-k3-r5-loader: bump to version v2024.04 In-Reply-To: <20240430-optee-update-v2-3-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> <20240430-optee-update-v2-3-5bdc2f940db1@ti.com> Message-ID: <20240506221105.3a75f41c@windsurf> On Thu, 2 May 2024 11:26:53 -0500 Bryan Brattlof via buildroot wrote: > TI_K3_R5_LOADER_VERSION = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_VERSION)) > +TI_K3_R5_LOADER_DL_DIR = $(UBOOT_DL_DIR) This is an unrelated change, so I dropped it from the commit when applying. Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From yann.morin.1998 at free.fr Mon May 6 20:11:14 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Mon, 6 May 2024 22:11:14 +0200 Subject: [Buildroot] [PATCH v1 8/8] package/openssl: move libopenssl/libressl source statemetns outside of the choice In-Reply-To: <20240506144555.31709-9-ps.report@gmx.net> References: <20240506144555.31709-1-ps.report@gmx.net> <20240506144555.31709-9-ps.report@gmx.net> Message-ID: > https://lists.buildroot.org/mailman/listinfo/buildroot Peter, All, On 2024-05-06 16:45 +0200, Peter Seiderer via buildroot spake thusly: > Signed-off-by: Peter Seiderer > --- > Notes/ToDo: > - with this solution the external support needs to be splitted into > two imports/lines... NMot sure I understand wht you meant here... > --- > package/openssl/Config.in | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/package/openssl/Config.in b/package/openssl/Config.in > index 3d14988d99..fcf996f03f 100644 > --- a/package/openssl/Config.in > +++ b/package/openssl/Config.in > @@ -28,8 +28,6 @@ config BR2_PACKAGE_LIBOPENSSL > > Note: Some helper scripts need perl. > > -source "package/libopenssl/Config.in" > - > config BR2_PACKAGE_LIBRESSL > bool "libressl" > depends on !BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL > @@ -44,13 +42,14 @@ config BR2_PACKAGE_LIBRESSL > > http://www.libressl.org/ > > -source "package/libressl/Config.in" > - > # openssl from br2-external trees, if any > source "$(BASE_DIR)/.br2-external.in.openssl" This leaves one 'source' statement in te choice, which is no longer accepted, AFAIU. > endchoice > > +source "package/libopenssl/Config.in" > +source "package/libressl/Config.in" I think the best solution is to move the if-endif conditional block out of package/libopenssl/Config.in back into package/openssl/Config.in, and add a new choice entry, so that basically we end up with something lie; choice bool "ssl library" config BR2_PACKAGE_LIBOPENSSL bool "openssl" config BR2_PACKAGE_LIBRESSL bool "libressl" config BR2_PACKAGE_OPENSSL_EXTERNAL bool "from an external tree" depends on $BR2_EXTERNAL != "" # Or something along those lines, adapt endchoice if BR2_PACKAGE_LIBOPENSSL source "package/libopenssl/Config.in" endif if BR2_PACKAGE_LIBRESSL source "package/libressl/Config.in" endif if BR2_PACKAGE_OPENSSL_EXTERNAL source "$(BASE_DIR)/.br2-external.in.openssl" endif Basically, that would make for an uglier state, but that's the best we can do given the new limitsations introduced by upstream kconfig... Thoughts? Regards, Yann E. MORIN. > config BR2_PACKAGE_HAS_OPENSSL > bool > > -- > 2.44.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From thomas.petazzoni at bootlin.com Mon May 6 20:11:39 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:11:39 +0200 Subject: [Buildroot] [PATCH RESEND v2 09/11] configs/ti_am62x_sk_defconfig: bump kernel to v6.8.8 In-Reply-To: <20240430-optee-update-v2-9-5bdc2f940db1@ti.com> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> <20240430-optee-update-v2-9-5bdc2f940db1@ti.com> Message-ID: <20240506221139.3fe56f1c@windsurf> On Thu, 2 May 2024 11:26:59 -0500 Bryan Brattlof via buildroot wrote: > diff --git a/configs/ti_am62x_sk_defconfig b/configs/ti_am62x_sk_defconfig > index fbceca791161e..070eaa42bfa7e 100644 > --- a/configs/ti_am62x_sk_defconfig > +++ b/configs/ti_am62x_sk_defconfig > @@ -1,5 +1,4 @@ > BR2_aarch64=y > -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y This should have stayed there, but become: BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_8=y and ditto for the am64x_sk patch, of course. Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:12:14 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:12:14 +0200 Subject: [Buildroot] [git commit] package/pppd: add linux-pam optional dependency Message-ID: <20240506201307.7D65E868D7@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=bbcf02c7ff586a110a576a85b9634b5f11eb6ee3 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master linux-pam is an optional dependency which is enbled by default since bump to version 2.5.0 in commit 0c15169f5ae57d88a77df34cc896044a37c9597b and https://github.com/ppp-project/ppp/commit/2883dd07101bf851e2ea368f0c04c91aea85cff2 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/pppd/pppd.mk | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/package/pppd/pppd.mk b/package/pppd/pppd.mk index 616b843e3d..0a1eaf9209 100644 --- a/package/pppd/pppd.mk +++ b/package/pppd/pppd.mk @@ -17,6 +17,13 @@ PPPD_AUTORECONF = YES PPPD_INSTALL_STAGING = YES PPPD_CONF_OPTS = --enable-multilink +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +PPPD_CONF_OPTS += --with-pam=$(STAGING_DIR)/usr +PPPD_DEPENDENCIES += linux-pam +else +PPPD_CONF_OPTS += --without-pam +endif + ifeq ($(BR2_PACKAGE_OPENSSL),y) PPPD_CONF_OPTS += \ --enable-eaptls \ From thomas.petazzoni at bootlin.com Mon May 6 20:12:25 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:12:25 +0200 Subject: [Buildroot] [git commit] configs/olimex_imx233_olinuxino: configure eth0 with DHCP Message-ID: <20240506201307.97CDC868D9@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=1e3cc620b4320aa045b3e23c6111171489437b29 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Francois Perrad Signed-off-by: Thomas Petazzoni --- configs/olimex_imx233_olinuxino_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/olimex_imx233_olinuxino_defconfig b/configs/olimex_imx233_olinuxino_defconfig index 647292899e..7049cfeac1 100644 --- a/configs/olimex_imx233_olinuxino_defconfig +++ b/configs/olimex_imx233_olinuxino_defconfig @@ -7,6 +7,7 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y # System BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" +BR2_SYSTEM_DHCP="eth0" # For automatic firmware loading BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y From thomas.petazzoni at bootlin.com Mon May 6 20:12:50 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:12:50 +0200 Subject: [Buildroot] [git commit] configs/olimex_imx233_olinuxino: add hashes for Linux & U-Boot Message-ID: <20240506201307.A5E16868DC@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=20817818333acb9bbfb22b4b194a1b36fadf7648 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master and enable BR2_DOWNLOAD_FORCE_CHECK_HASHES Signed-off-by: Francois Perrad Signed-off-by: Thomas Petazzoni --- .checkpackageignore | 1 - .../olimex/imx233_olinuxino/patches/linux-headers/linux-headers.hash | 1 + board/olimex/imx233_olinuxino/patches/linux/linux.hash | 2 ++ board/olimex/imx233_olinuxino/patches/uboot/uboot.hash | 2 ++ configs/olimex_imx233_olinuxino_defconfig | 4 ++++ 5 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.checkpackageignore b/.checkpackageignore index 44d4250e14..33d2b011ae 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -262,7 +262,6 @@ configs/olimex_a20_olinuxino_lime_defconfig lib_defconfig.ForceCheckHash configs/olimex_a20_olinuxino_micro_defconfig lib_defconfig.ForceCheckHash configs/olimex_a33_olinuxino_defconfig lib_defconfig.ForceCheckHash configs/olimex_a64_olinuxino_defconfig lib_defconfig.ForceCheckHash -configs/olimex_imx233_olinuxino_defconfig lib_defconfig.ForceCheckHash configs/olimex_stmp157_olinuxino_lime_defconfig lib_defconfig.ForceCheckHash configs/olpc_xo175_defconfig lib_defconfig.ForceCheckHash configs/olpc_xo1_defconfig lib_defconfig.ForceCheckHash diff --git a/board/olimex/imx233_olinuxino/patches/linux-headers/linux-headers.hash b/board/olimex/imx233_olinuxino/patches/linux-headers/linux-headers.hash new file mode 120000 index 0000000000..5808d92afe --- /dev/null +++ b/board/olimex/imx233_olinuxino/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/olimex/imx233_olinuxino/patches/linux/linux.hash b/board/olimex/imx233_olinuxino/patches/linux/linux.hash new file mode 100644 index 0000000000..1dba724d0c --- /dev/null +++ b/board/olimex/imx233_olinuxino/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 88b69611093613ce4494527685f833af0c31b986dcbeda7086f69f18f9e0b190 linux-6.1.83.tar.xz diff --git a/board/olimex/imx233_olinuxino/patches/uboot/uboot.hash b/board/olimex/imx233_olinuxino/patches/uboot/uboot.hash new file mode 100644 index 0000000000..c1aeddf06c --- /dev/null +++ b/board/olimex/imx233_olinuxino/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a u-boot-2024.04.tar.bz2 diff --git a/configs/olimex_imx233_olinuxino_defconfig b/configs/olimex_imx233_olinuxino_defconfig index 7049cfeac1..d45c55ada3 100644 --- a/configs/olimex_imx233_olinuxino_defconfig +++ b/configs/olimex_imx233_olinuxino_defconfig @@ -5,6 +5,10 @@ BR2_arm926t=y # Linux headers same as kernel, a 6.1 series BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y +# Build +BR2_GLOBAL_PATCH_DIR="board/olimex/imx233_olinuxino/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + # System BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" BR2_SYSTEM_DHCP="eth0" From thomas.petazzoni at bootlin.com Mon May 6 20:12:19 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:12:19 +0200 Subject: [Buildroot] [git commit] configs/olimex_imx233_olinuxino: bump Linux and U-Boot Message-ID: <20240506201307.8BC65868B4@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=274eaa6c4087f8582966e6d6bf22f86497a67bdb branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Francois Perrad Signed-off-by: Thomas Petazzoni --- configs/olimex_imx233_olinuxino_defconfig | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/configs/olimex_imx233_olinuxino_defconfig b/configs/olimex_imx233_olinuxino_defconfig index 275dd98afe..647292899e 100644 --- a/configs/olimex_imx233_olinuxino_defconfig +++ b/configs/olimex_imx233_olinuxino_defconfig @@ -2,8 +2,8 @@ BR2_arm=y BR2_arm926t=y -# Linux headers same as kernel, a 5.4 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_4=y +# Linux headers same as kernel, a 6.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y # System BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" @@ -14,7 +14,7 @@ BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.4.8" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.83" BR2_LINUX_KERNEL_DEFCONFIG="mxs" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/olimex/imx233_olinuxino/linux-wifi.fragment" BR2_LINUX_KERNEL_DTS_SUPPORT=y @@ -40,7 +40,7 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="mx23_olinuxino" BR2_TARGET_UBOOT_FORMAT_SD=y From thomas.petazzoni at bootlin.com Mon May 6 20:13:40 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:13:40 +0200 Subject: [Buildroot] [PATCH v2 1/3] configs/olimex_imx233_olinuxino: bump Linux and U-Boot In-Reply-To: <20240506200858.30197-1-francois.perrad@gadz.org> References: <20240506200858.30197-1-francois.perrad@gadz.org> Message-ID: <20240506221340.5167483b@windsurf> On Mon, 6 May 2024 22:08:56 +0200 Francois Perrad wrote: > Signed-off-by: Francois Perrad > --- > configs/olimex_imx233_olinuxino_defconfig | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) Series applied to master, thanks! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:13:45 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:13:45 +0200 Subject: [Buildroot] [PATCH 1/1] package/pppd: add linux-pam optional dependency In-Reply-To: <20240506200206.111393-1-fontaine.fabrice@gmail.com> References: <20240506200206.111393-1-fontaine.fabrice@gmail.com> Message-ID: <20240506221345.1ea81209@windsurf> On Mon, 6 May 2024 22:02:06 +0200 Fabrice Fontaine wrote: > linux-pam is an optional dependency which is enbled by default since > bump to version 2.5.0 in commit 0c15169f5ae57d88a77df34cc896044a37c9597b > and > https://github.com/ppp-project/ppp/commit/2883dd07101bf851e2ea368f0c04c91aea85cff2 > > Signed-off-by: Fabrice Fontaine > --- > package/pppd/pppd.mk | 7 +++++++ > 1 file changed, 7 insertions(+) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:14:50 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:14:50 +0200 Subject: [Buildroot] [PATCH 1/1] package/agentpp: bump to version 4.6.1 In-Reply-To: <20240506121919.118af862@booty> References: <20240430203401.74587-1-jesseevg@gmail.com> <20240506121919.118af862@booty> Message-ID: <20240506221450.5fafb5bc@windsurf> On Mon, 6 May 2024 12:19:19 +0200 Luca Ceresoli via buildroot wrote: > Hello Jesse, > > On Tue, 30 Apr 2024 22:34:01 +0200 > Jesse Van Gavere wrote: > > > This version integrates the patch to fix building without v3 so remove > > that patch, there is however another failure when linking the library, > > debugprintf is used which was removed in snmp++, so patch that. > > This patch has been sent to agentpp. > > Sure about this? snmp++ 3.5.1 does not seem to have any changes related > to debugprintf compared to 3.5.0. Also, testing with both of your > patches (this and the snmppp 3.5.1 bump), agentpp builds fine without > the added patch. Also, we would prefer the added patch to be formatted using "git format-patch". Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:15:14 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:15:14 +0200 Subject: [Buildroot] [git commit] package/snmppp: bump to version 3.5.1 Message-ID: <20240506201524.D7615868E0@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=aae8ebc9a5a0bc997d2ab986623f7b0fd9d86f85 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Drop non-v3 fix patch as this was upstreamed Signed-off-by: Jesse Van Gavere Tested-by: Luca Ceresoli Reviewed-by: Luca Ceresoli Signed-off-by: Thomas Petazzoni --- .checkpackageignore | 1 - package/snmppp/0001-fix-build-without-v3.patch | 43 -------------------------- package/snmppp/snmppp.hash | 2 +- package/snmppp/snmppp.mk | 2 +- 4 files changed, 2 insertions(+), 46 deletions(-) diff --git a/.checkpackageignore b/.checkpackageignore index 33d2b011ae..2118269003 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -1466,7 +1466,6 @@ package/smcroute/S41smcroute NotExecutable lib_sysv.Indent lib_sysv.Variables package/smstools3/0001-fix-Makefile.patch lib_patch.Upstream package/smstools3/0002-fix-build-with-gcc-10.x.patch lib_patch.Upstream package/smstools3/S50smsd Shellcheck lib_sysv.Variables -package/snmppp/0001-fix-build-without-v3.patch lib_patch.Upstream package/snort/0001-configure.in-Avoid-path-poisoning-with-libpcap.patch lib_patch.Upstream package/snort/0002-configure.in-Allow-to-override-the-INADDR_NONE-check.patch lib_patch.Upstream package/snort/0003-configure.in-convert-AC_RUN_IFELSE-to-AC_CHECK_MEMBE.patch lib_patch.Upstream diff --git a/package/snmppp/0001-fix-build-without-v3.patch b/package/snmppp/0001-fix-build-without-v3.patch deleted file mode 100644 index 4e81f7bfc1..0000000000 --- a/package/snmppp/0001-fix-build-without-v3.patch +++ /dev/null @@ -1,43 +0,0 @@ -fix build without v3 - -Fix the following build failure without version3 raised since version -3.5.0: - -msgqueue.cpp: In member function 'int Snmp_pp::CSNMPMessage::ResendMessage()': -msgqueue.cpp:263:34: error: 'version3' was not declared in this scope; did you mean 'version1'? - 263 | if (m_target->get_version() == version3) { - | ^~~~~~~~ - | version1 - -Fixes: - - http://autobuild.buildroot.org/results/8ef3e4407a51c53c15e530606227338761dd905b - -Signed-off-by: Fabrice Fontaine -[Upstream status: sent to katz.agentpp.com at magenta.de] - -diff -Nura snmp++-3.5.0.orig/src/msgqueue.cpp snmp++-3.5.0/src/msgqueue.cpp ---- snmp++-3.5.0.orig/src/msgqueue.cpp 2023-03-20 10:49:30.629000853 +0100 -+++ snmp++-3.5.0/src/msgqueue.cpp 2023-03-20 10:51:36.880664304 +0100 -@@ -260,18 +260,20 @@ - m_target->set_retry(m_target->get_retry() - 1); - SetSendTime(); - int status; -- if (m_target->get_version() == version3) { - #ifdef _SNMPv3 -+ if (m_target->get_version() == version3) { - // delete entry in cache - if (m_snmp->get_mpv3()) - m_snmp->get_mpv3()->delete_from_cache(m_pdu.get_request_id()); --#endif - status = m_snmp->snmp_engine(m_pdu, m_pdu.get_error_status(), m_pdu.get_error_index(), - *m_target, m_callBack, m_callData, m_socket, 0, this); - } - else { -+#endif - status = send_snmp_request(m_socket, m_rawPdu, m_rawPduLen, *m_address); -+#ifdef _SNMPv3 - } -+#endif - if (status != 0) - return SNMP_CLASS_TL_FAILED; - diff --git a/package/snmppp/snmppp.hash b/package/snmppp/snmppp.hash index 74c6a3e98f..b66056ef40 100644 --- a/package/snmppp/snmppp.hash +++ b/package/snmppp/snmppp.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 43a433bd5f6fd67add5a26add6521ca664c41aead438405658ed57483664b4bf snmp++-3.5.0.tar.gz +sha256 034553f7cb75d7ce1fe70cb3ba06e88587b6bca4fa062d10344ce4555a1395f7 snmp++-3.5.1.tar.gz sha256 61337e799c8274e596e5783b22607beea8073ee296c6b27fc5c7487296e56851 src/v3.cpp diff --git a/package/snmppp/snmppp.mk b/package/snmppp/snmppp.mk index 9f1916dd66..966bb340fd 100644 --- a/package/snmppp/snmppp.mk +++ b/package/snmppp/snmppp.mk @@ -4,7 +4,7 @@ # ################################################################################ -SNMPPP_VERSION = 3.5.0 +SNMPPP_VERSION = 3.5.1 SNMPPP_SOURCE = snmp++-$(SNMPPP_VERSION).tar.gz SNMPPP_SITE = http://www.agentpp.com/download SNMPPP_DEPENDENCIES = host-pkgconf From thomas.petazzoni at bootlin.com Mon May 6 20:15:38 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:15:38 +0200 Subject: [Buildroot] [PATCH 1/1] package/snmppp: bump to version 3.5.1 In-Reply-To: <20240430203708.75367-1-jesseevg@gmail.com> References: <20240430203708.75367-1-jesseevg@gmail.com> Message-ID: <20240506221538.2e3ad1b9@windsurf> On Tue, 30 Apr 2024 22:37:08 +0200 Jesse Van Gavere wrote: > Drop non-v3 fix patch as this was upstreamed > > Signed-off-by: Jesse Van Gavere > --- > .../snmppp/0001-fix-build-without-v3.patch | 43 ------------------- > package/snmppp/snmppp.hash | 2 +- > package/snmppp/snmppp.mk | 2 +- > 3 files changed, 2 insertions(+), 45 deletions(-) > delete mode 100644 package/snmppp/0001-fix-build-without-v3.patch Updating .checkpackageignore after removing the patch was missing, so I did that when applying. Thanks for the contribution! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:16:23 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:16:23 +0200 Subject: [Buildroot] [git commit] package/perl-dbd-mysql: fix runtime issue with MariaDB Message-ID: <20240506201635.92DE7868ED@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=cefcd5bbadf2a8c8cb8c97049a478964ebddb95e branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Now that the TestPerlDBDmysql can be run normally, a new runtime issue appear due to switch from oracle-mysql to MariaDB: # perl -MDBI -e '1' # echo $? 0 # perl -MDBD::mysql -e '1' Can't load '/usr/lib/perl5/site_perl/5.38.2/arm-linux/auto/DBD/mysql/mysql.so' for module DBD::mysql: /usr/lib/perl5/site_perl/5.38.2/arm-linux/auto/DBD/mysql/mysql.so: undefined symbol: net_buffer_length at /usr/lib/perl5/5.38.2/arm-linux/DynaLoader.pm line 206. This is fixed by an upstream commit [1] from 4.046_01 release. [1] https://github.com/perl5-dbi/DBD-mysql/commit/0f0cebe87fab335873fd3701bc304922da826940 Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6735654506 Signed-off-by: Romain Naour Signed-off-by: Thomas Petazzoni --- ...-Use-net_buffer_length-macro-if-available.patch | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/package/perl-dbd-mysql/0001-Use-net_buffer_length-macro-if-available.patch b/package/perl-dbd-mysql/0001-Use-net_buffer_length-macro-if-available.patch new file mode 100644 index 0000000000..d7767c1f42 --- /dev/null +++ b/package/perl-dbd-mysql/0001-Use-net_buffer_length-macro-if-available.patch @@ -0,0 +1,41 @@ +From 9189ef77679c22de3bbd2142031858373236520b Mon Sep 17 00:00:00 2001 +From: Michiel Beijen +Date: Fri, 23 Feb 2018 07:52:33 +0000 +Subject: [PATCH] Use net_buffer_length macro if available + +Upstream: https://github.com/perl5-dbi/DBD-mysql/commit/0f0cebe87fab335873fd3701bc304922da826940 + +(cherry picked from commit 0f0cebe87fab335873fd3701bc304922da826940) +Signed-off-by: Romain Naour +--- + mysql.xs | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +diff --git a/mysql.xs b/mysql.xs +index 8edee55..9b4d60f 100644 +--- a/mysql.xs ++++ b/mysql.xs +@@ -819,15 +819,14 @@ dbd_mysql_get_info(dbh, sql_info_type) + retsv = newSVpvn("`", 1); + break; + case SQL_MAXIMUM_STATEMENT_LENGTH: +-#if !defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 50709 +- /* MariaDB 10 is not MySQL source level compatible so this +- only applies to MySQL*/ +- /* mysql_get_option() was added in mysql 5.7.3 */ +- /* MYSQL_OPT_NET_BUFFER_LENGTH was added in mysql 5.7.9 */ ++ /* net_buffer_length macro is not defined in MySQL 5.7 and some MariaDB ++ versions - if it is not available, use newer mysql_get_option */ ++#if !defined(net_buffer_length) ++ ; ++ unsigned long buffer_len; + mysql_get_option(NULL, MYSQL_OPT_NET_BUFFER_LENGTH, &buffer_len); + retsv = newSViv(buffer_len); + #else +- /* before mysql 5.7.9 use net_buffer_length macro */ + retsv = newSViv(net_buffer_length); + #endif + break; +-- +2.44.0 + From thomas.petazzoni at bootlin.com Mon May 6 20:16:02 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:16:02 +0200 Subject: [Buildroot] [git commit] support/testing: TestPerlDBDmysql: use ext2 instead of cpio Message-ID: <20240506201635.86E8C868EE@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=8937cd065cb4004d9eade7e75ec808fc2400ba4b branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master The CPIO filesystem generated by TestPerlDBDmysql is too large, and doesn't fit as an initramfs in the 256MB of RAM available in the versatilepb machine. This causes a failure while running a basic test "perl -MDBI -e '1'" since "/usr/lib/perl5", and many files being missing from the root filesystem, ultimately causing the test to fail. Can't locate DBI.pm in @INC (you may need to install the DBI module) (@INC entries checked: /usr/lib/perl5/site_perl/5.38.2/arm-linux /usr/lib/perl5/site_perl/5.38.2 /usr/lib/perl5/5.38.2/arm-linux /usr/lib/perl5/5.38.2). It would make sense to switch all test cases to use ext2 + a hard-drive, but for now, let's fix the few test cases that are causing problems. Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6735654506 Signed-off-by: Romain Naour Signed-off-by: Thomas Petazzoni --- support/testing/tests/package/test_perl_dbd_mysql.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/support/testing/tests/package/test_perl_dbd_mysql.py b/support/testing/tests/package/test_perl_dbd_mysql.py index f8fe832b41..93551b420f 100644 --- a/support/testing/tests/package/test_perl_dbd_mysql.py +++ b/support/testing/tests/package/test_perl_dbd_mysql.py @@ -1,4 +1,5 @@ from tests.package.test_perl import TestPerlBase +import os class TestPerlDBDmysql(TestPerlBase): @@ -13,8 +14,18 @@ class TestPerlDBDmysql(TestPerlBase): """ BR2_PACKAGE_PERL=y BR2_PACKAGE_PERL_DBD_MYSQL=y + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_SIZE="120M" """ + def login(self): + ext2_file = os.path.join(self.builddir, "images", "rootfs.ext2") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-drive", "file=%s,if=scsi,format=raw" % ext2_file], + kernel_cmdline=["rootwait", "root=/dev/sda"]) + self.emulator.login() + def test_run(self): self.login() self.module_test("DBI") From thomas.petazzoni at bootlin.com Mon May 6 20:16:40 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:16:40 +0200 Subject: [Buildroot] [PATCH 1/2] support/testing: TestPerlDBDmysql: use ext2 instead of cpio In-Reply-To: <20240430204744.1014238-1-romain.naour@smile.fr> References: <20240430204744.1014238-1-romain.naour@smile.fr> Message-ID: <20240506221640.50f0181c@windsurf> On Tue, 30 Apr 2024 22:47:43 +0200 Romain Naour wrote: > The CPIO filesystem generated by TestPerlDBDmysql is too large, and > doesn't fit as an initramfs in the 256MB of RAM available in the > versatilepb machine. This causes a failure while running a basic > test "perl -MDBI -e '1'" since "/usr/lib/perl5", and many files > being missing from the root filesystem, ultimately causing the test > to fail. > > Can't locate DBI.pm in @INC (you may need to install the DBI module) > (@INC entries checked: /usr/lib/perl5/site_perl/5.38.2/arm-linux > /usr/lib/perl5/site_perl/5.38.2 /usr/lib/perl5/5.38.2/arm-linux > /usr/lib/perl5/5.38.2). > > It would make sense to switch all test cases to use ext2 + a > hard-drive, but for now, let's fix the few test cases that are causing > problems. > > Fixes: > https://gitlab.com/buildroot.org/buildroot/-/jobs/6735654506 > > Signed-off-by: Romain Naour > --- > support/testing/tests/package/test_perl_dbd_mysql.py | 11 +++++++++++ > 1 file changed, 11 insertions(+) Both applied, thanks a lot! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From yann.morin.1998 at free.fr Mon May 6 20:19:39 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Mon, 6 May 2024 22:19:39 +0200 Subject: [Buildroot] [PATCH v1 0/8] support/kconfig: bump to linux-v6.9-rc5 version In-Reply-To: <20240506210440.323ccb15@windsurf> References: <20240506144555.31709-1-ps.report@gmx.net> <20240506210440.323ccb15@windsurf> Message-ID: Thomas, Peter, All, On 2024-05-06 21:04 +0200, Thomas Petazzoni via buildroot spake thusly: > On Mon, 6 May 2024 16:45:43 +0200 > Peter Seiderer via buildroot wrote: [--SNIP--] > > The kconfig version dump itself: > > - support/kconfig: bump to linux-v6.9-rc5 version > So this commit without the next two leads to a broken situation, > correct? (Note: this is not a complaint, I agree with them being split). Except they should be reversed: the new commits can work with the kconfig we currently have, so it looks like it should be OK to do the required changes before doing the kconfig bump. > > And two 'real' changes due to kconfig language changes: > > - support/kconfig: reference environment variables directly (remove 'option env=') > > - package/openssl: move libopenssl/libressl source statemetns outside of the choice > But don't we have this situation of source statements inside a > choice..endchoice in other places? Toolchains, skeletons, init systems, jpeg library, linux extensions, and indeed openssl. > I remember Yann saying that this was > a problematic change for us in the upstream kconfig code. Yes, so given that there are two problematic changes: - source statements in choices, - environment variable direct expansion, I wonder if it makes sense for us to update our kconfig infra... Regards, Yann E. MORIN. -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Mon May 6 20:19:39 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Mon, 6 May 2024 22:19:39 +0200 Subject: [Buildroot] [PATCH v1 0/8] support/kconfig: bump to linux-v6.9-rc5 version In-Reply-To: <20240506210440.323ccb15@windsurf> References: <20240506144555.31709-1-ps.report@gmx.net> <20240506210440.323ccb15@windsurf> Message-ID: Thomas, Peter, All, On 2024-05-06 21:04 +0200, Thomas Petazzoni via buildroot spake thusly: > On Mon, 6 May 2024 16:45:43 +0200 > Peter Seiderer via buildroot wrote: [--SNIP--] > > The kconfig version dump itself: > > - support/kconfig: bump to linux-v6.9-rc5 version > So this commit without the next two leads to a broken situation, > correct? (Note: this is not a complaint, I agree with them being split). Except they should be reversed: the new commits can work with the kconfig we currently have, so it looks like it should be OK to do the required changes before doing the kconfig bump. > > And two 'real' changes due to kconfig language changes: > > - support/kconfig: reference environment variables directly (remove 'option env=') > > - package/openssl: move libopenssl/libressl source statemetns outside of the choice > But don't we have this situation of source statements inside a > choice..endchoice in other places? Toolchains, skeletons, init systems, jpeg library, linux extensions, and indeed openssl. > I remember Yann saying that this was > a problematic change for us in the upstream kconfig code. Yes, so given that there are two problematic changes: - source statements in choices, - environment variable direct expansion, I wonder if it makes sense for us to update our kconfig infra... Regards, Yann E. MORIN. -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From thomas.petazzoni at bootlin.com Mon May 6 20:21:43 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:21:43 +0200 Subject: [Buildroot] [PATCH v1 0/8] support/kconfig: bump to linux-v6.9-rc5 version In-Reply-To: References: <20240506144555.31709-1-ps.report@gmx.net> <20240506210440.323ccb15@windsurf> Message-ID: <20240506222143.075e7731@windsurf> On Mon, 6 May 2024 22:19:39 +0200 "Yann E. MORIN" wrote: > > So this commit without the next two leads to a broken situation, > > correct? (Note: this is not a complaint, I agree with them being split). > > Except they should be reversed: the new commits can work with the > kconfig we currently have, so it looks like it should be OK to do the > required changes before doing the kconfig bump. I don't think the logic changed in "support/kconfig: reference environment variables directly (remove 'option env=')" can work with the current kconfig code base. > > I remember Yann saying that this was > > a problematic change for us in the upstream kconfig code. > > Yes, so given that there are two problematic changes: > - source statements in choices, > - environment variable direct expansion, > I wonder if it makes sense for us to update our kconfig infra... But we'd hate to stay stuck on an old kconfig code base forever. Gtk is going to move on, Qt is going to move on, which means at some point in the future, our "make xconfig" and "make gconfig" would no longer work. Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:21:43 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:21:43 +0200 Subject: [Buildroot] [PATCH v1 0/8] support/kconfig: bump to linux-v6.9-rc5 version In-Reply-To: References: <20240506144555.31709-1-ps.report@gmx.net> <20240506210440.323ccb15@windsurf> Message-ID: <20240506222143.075e7731@windsurf> On Mon, 6 May 2024 22:19:39 +0200 "Yann E. MORIN" wrote: > > So this commit without the next two leads to a broken situation, > > correct? (Note: this is not a complaint, I agree with them being split). > > Except they should be reversed: the new commits can work with the > kconfig we currently have, so it looks like it should be OK to do the > required changes before doing the kconfig bump. I don't think the logic changed in "support/kconfig: reference environment variables directly (remove 'option env=')" can work with the current kconfig code base. > > I remember Yann saying that this was > > a problematic change for us in the upstream kconfig code. > > Yes, so given that there are two problematic changes: > - source statements in choices, > - environment variable direct expansion, > I wonder if it makes sense for us to update our kconfig infra... But we'd hate to stay stuck on an old kconfig code base forever. Gtk is going to move on, Qt is going to move on, which means at some point in the future, our "make xconfig" and "make gconfig" would no longer work. Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From jesseevg at gmail.com Mon May 6 20:22:04 2024 From: jesseevg at gmail.com (Jesse Van Gavere) Date: Mon, 6 May 2024 22:22:04 +0200 Subject: [Buildroot] [PATCH 1/1] package/agentpp: bump to version 4.6.1 In-Reply-To: <20240506221450.5fafb5bc@windsurf> References: <20240430203401.74587-1-jesseevg@gmail.com> <20240506121919.118af862@booty> <20240506221450.5fafb5bc@windsurf> Message-ID: Op ma 6 mei 2024 om 22:14 schreef Thomas Petazzoni : > > On Mon, 6 May 2024 12:19:19 +0200 > Luca Ceresoli via buildroot wrote: > > > Hello Jesse, > > > > On Tue, 30 Apr 2024 22:34:01 +0200 > > Jesse Van Gavere wrote: > > > > > This version integrates the patch to fix building without v3 so remove > > > that patch, there is however another failure when linking the library, > > > debugprintf is used which was removed in snmp++, so patch that. > > > This patch has been sent to agentpp. > > > > Sure about this? snmp++ 3.5.1 does not seem to have any changes related > > to debugprintf compared to 3.5.0. Also, testing with both of your > > patches (this and the snmppp 3.5.1 bump), agentpp builds fine without > > the added patch. > > Also, we would prefer the added patch to be formatted using "git > format-patch". > > Thomas > -- > Thomas Petazzoni, co-owner and CEO, Bootlin > Embedded Linux and Kernel engineering and training > https://bootlin.com Hello Luca, You're correct that it does not seem to fail initially, however when using the Snmpx class from agentpp in my own application is when I got a linking error on debugprintf it could not resolve, this I could only fix with the included patch. What makes me suspect an oversight is that they mentioned that debugprintf was going to be removed entirely from agentpp in earlier release notes but some calls remain in the source code, this issue is also present in both versions hence no changes there. Thomas, They make it a bit tricky with their tarball only approach but I'll see to resubmit it as a git patch. Best regards, Jesse From fontaine.fabrice at gmail.com Mon May 6 20:23:04 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Mon, 6 May 2024 22:23:04 +0200 Subject: [Buildroot] [PATCH 1/1] package/suricata: fix static build Message-ID: <20240506202304.509499-1-fontaine.fabrice@gmail.com> Fix the following static build failure raised since bump to version version 6.0.14 in commit ce17f93e828a07292e03653be04a49480250f23f and https://github.com/OISF/suricata/commit/31ba4fd1522dd0d7f933767b9205c67a4e726fe5: configure:22378: checking for pcap_open_dead in -lpcap configure:22407: /home/buildroot/autobuild/run/instance-3/output-1/host/bin/x86_64-linux-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -static -std=c11 -march=native -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -static -rdynamic conftest.c -lpcap -ljansson -lpthread -lyaml -lpcre -latomic -lz >&5 /home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/x86_64-buildroot-linux-musl/12.3.0/../../../../x86_64-buildroot-linux-musl/bin/ld: /home/buildroot/autobuild/run/instance-3/output-1/host/x86_64-buildroot-linux-musl/sysroot/usr/lib/../lib64/libpcap.a(pcap-linux.o): in function `nl80211_init': pcap-linux.c:(.text+0xc34): undefined reference to `nl_socket_alloc' [...] checking for pcap_open_dead in -lpcap... no Fixes: ce17f93e828a07292e03653be04a49480250f23f - http://autobuild.buildroot.org/results/9e25c2508bd4100d2d1d3180e79060d762361213 Signed-off-by: Fabrice Fontaine --- .../0002-configure.ac-fix-static-build.patch | 52 +++++++++++++++++++ package/suricata/suricata.mk | 1 + 2 files changed, 53 insertions(+) create mode 100644 package/suricata/0002-configure.ac-fix-static-build.patch diff --git a/package/suricata/0002-configure.ac-fix-static-build.patch b/package/suricata/0002-configure.ac-fix-static-build.patch new file mode 100644 index 0000000000..fc5384a114 --- /dev/null +++ b/package/suricata/0002-configure.ac-fix-static-build.patch @@ -0,0 +1,52 @@ +From 6e1d8aceea8c4e49f00d8e630b681641a36c688f Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 6 May 2024 09:31:05 +0200 +Subject: [PATCH] configure.ac: fix static build + +static build is broken since +https://github.com/OISF/suricata/commit/31ba4fd1522dd0d7f933767b9205c67a4e726fe5 +because AC_CHECK_LIB is called before PKG_CHECK_MODULES: + +configure:22378: checking for pcap_open_dead in -lpcap +configure:22407: /home/buildroot/autobuild/run/instance-3/output-1/host/bin/x86_64-linux-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -static -std=c11 -march=native -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -static -rdynamic conftest.c -lpcap -ljansson -lpthread -lyaml -lpcre -latomic -lz >&5 +/home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/x86_64-buildroot-linux-musl/12.3.0/../../../../x86_64-buildroot-linux-musl/bin/ld: /home/buildroot/autobuild/run/instance-3/output-1/host/x86_64-buildroot-linux-musl/sysroot/usr/lib/../lib64/libpcap.a(pcap-linux.o): in function `nl80211_init': +pcap-linux.c:(.text+0xc34): undefined reference to `nl_socket_alloc' + +[...] + +checking for pcap_open_dead in -lpcap... no + +Fixes: + - http://autobuild.buildroot.org/results/9e25c2508bd4100d2d1d3180e79060d762361213 + +Signed-off-by: Fabrice Fontaine +Upstream: https://redmine.openinfosecfoundation.org/issues/7008 +--- + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 232ee9bed..6277cb9b6 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1219,6 +1219,8 @@ + fi + fi + ++ PKG_CHECK_MODULES([PCAP],libpcap,[CPPFLAGS="${CPPFLAGS} ${PCAP_CFLAGS}" LIBS="${LIBS} ${PCAP_LIBS}"],[:]) ++ + if test "$have_wpcap" != "yes"; then + AC_CHECK_LIB(pcap, pcap_open_dead, [], [ + echo +@@ -1234,8 +1236,6 @@ + PCAP_LIB_NAME="pcap" + fi + +- PKG_CHECK_MODULES([PCAP],libpcap,[CPPFLAGS="${CPPFLAGS} ${PCAP_CFLAGS}" LIBS="${LIBS} ${PCAP_LIBS}"],[:]) +- + AC_PATH_PROG(HAVE_PCAP_CONFIG, pcap-config, "no") + if test "$HAVE_PCAP_CONFIG" = "no" -o "$cross_compiling" = "yes"; then + AC_MSG_RESULT(no pcap-config is use) +-- +2.43.0 + diff --git a/package/suricata/suricata.mk b/package/suricata/suricata.mk index 2083e0caba..e60ed2fce8 100644 --- a/package/suricata/suricata.mk +++ b/package/suricata/suricata.mk @@ -10,6 +10,7 @@ SURICATA_LICENSE = GPL-2.0 SURICATA_LICENSE_FILES = COPYING LICENSE SURICATA_CPE_ID_VENDOR = oisf # 0001-configure.ac-allow-the-user-to-override-RUST_TARGET.patch +# 0002-configure.ac-fix-static-build.patch SURICATA_AUTORECONF = YES SURICATA_DEPENDENCIES = \ -- 2.43.0 From thomas.petazzoni at bootlin.com Mon May 6 20:19:19 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:19:19 +0200 Subject: [Buildroot] [git commit] package/flannel: bump to version 0.25.1 Message-ID: <20240506202540.BEBAD868F3@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=e379f1c5dd51d46ce4f5979e5efcae09538b7e1f branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Geoff Levand Signed-off-by: Thomas Petazzoni --- package/flannel/flannel.hash | 2 +- package/flannel/flannel.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/flannel/flannel.hash b/package/flannel/flannel.hash index c1ceeed9e8..97700d37ec 100644 --- a/package/flannel/flannel.hash +++ b/package/flannel/flannel.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 f9e68bc9c5b41ee7f721a754c9fa4eddf3da775faa9e638581a564e33b3fabcf flannel-0.24.2.tar.gz +sha256 c0de130efa2b14bc0f057a17df07bfd61154b30ce4a5eca24594c5b533ce661d flannel-0.25.1.tar.gz sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/flannel/flannel.mk b/package/flannel/flannel.mk index 02e62256cf..aa24644764 100644 --- a/package/flannel/flannel.mk +++ b/package/flannel/flannel.mk @@ -4,7 +4,7 @@ # ################################################################################ -FLANNEL_VERSION = 0.24.2 +FLANNEL_VERSION = 0.25.1 FLANNEL_SITE = $(call github,flannel-io,flannel,v$(FLANNEL_VERSION)) FLANNEL_LICENSE = Apache-2.0 From thomas.petazzoni at bootlin.com Mon May 6 20:27:06 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:27:06 +0200 Subject: [Buildroot] [PATCH] package/flannel: Bump to version 0.25.1 In-Reply-To: References: Message-ID: <20240506222706.157b4045@windsurf> On Wed, 1 May 2024 11:53:05 +0900 Geoff Levand wrote: > Signed-off-by: Geoff Levand > > diff --git a/package/flannel/flannel.hash b/package/flannel/flannel.hash > index 2e0198debe..97700d37ec 100644 > --- a/package/flannel/flannel.hash > +++ b/package/flannel/flannel.hash > @@ -1,3 +1,3 @@ > # Locally computed: > -sha256 98dde4eda016fec9aa6394cb4b283bdd972deda6ef9e1f2c3669dd2719ea1fe9 flannel-0.24.4.tar.gz > +sha256 c0de130efa2b14bc0f057a17df07bfd61154b30ce4a5eca24594c5b533ce661d flannel-0.25.1.tar.gz > sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE > diff --git a/package/flannel/flannel.mk b/package/flannel/flannel.mk > index 5cdfa0e09e..aa24644764 100644 > --- a/package/flannel/flannel.mk > +++ b/package/flannel/flannel.mk > @@ -4,7 +4,7 @@ > # > ################################################################################ > > -FLANNEL_VERSION = 0.24.4 > +FLANNEL_VERSION = 0.25.1 This was not applying on master, because you created this commit on top of your previous 0.24.2 -> 0.24.4 bump, which still had not been applied to master. So when something like this happen, we ideally expect you to mark your previous patch as Changes Requested, and then submit a brand new patch that does the 0.24.2 -> 0.25.1 in one go. I fixed up the conflicts when applying, and pushed to master. Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:29:23 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:29:23 +0200 Subject: [Buildroot] [git commit] package/sdbus-cpp: bump to version 2.0.0 Message-ID: <20240506203024.7ED3986906@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=0f5bb364c629dd7fc91f4295f872e46d89c0feef branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Changelog: https://github.com/Kistler-Group/sdbus-cpp/releases/tag/v2.0.0 Signed-off-by: Sergey Bobrenok Signed-off-by: Thomas Petazzoni --- package/sdbus-cpp/sdbus-cpp.hash | 2 +- package/sdbus-cpp/sdbus-cpp.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/sdbus-cpp/sdbus-cpp.hash b/package/sdbus-cpp/sdbus-cpp.hash index b5ca7ecdff..1350fc6781 100644 --- a/package/sdbus-cpp/sdbus-cpp.hash +++ b/package/sdbus-cpp/sdbus-cpp.hash @@ -1,4 +1,4 @@ # Locally computed: -sha256 577986929f911320fb9ef6a3e2badd464dc38411ebc25d2966f5cb85c39f0897 sdbus-cpp-1.5.0.tar.gz +sha256 88af4569161a0d0192f0f4a94582a1af4e75722499d06984fb7f91f638f5afb3 sdbus-cpp-2.0.0.tar.gz sha256 20c17d8b8c48a600800dfd14f95d5cb9ff47066a9641ddeab48dc54aec96e331 COPYING sha256 a1c9e75e25d8f2ce18017c88978edab2f0dbc7814ad0697d4ff2e5e59959f657 COPYING-LGPL-Exception diff --git a/package/sdbus-cpp/sdbus-cpp.mk b/package/sdbus-cpp/sdbus-cpp.mk index 18fc6a88a9..675ed1fa1f 100644 --- a/package/sdbus-cpp/sdbus-cpp.mk +++ b/package/sdbus-cpp/sdbus-cpp.mk @@ -4,7 +4,7 @@ # ################################################################################ -SDBUS_CPP_VERSION = 1.5.0 +SDBUS_CPP_VERSION = 2.0.0 SDBUS_CPP_SITE = $(call github,Kistler-Group,sdbus-cpp,v$(SDBUS_CPP_VERSION)) SDBUS_CPP_INSTALL_STAGING = YES SDBUS_CPP_DEPENDENCIES = host-pkgconf systemd From thomas.petazzoni at bootlin.com Mon May 6 20:30:26 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:30:26 +0200 Subject: [Buildroot] [PATCH 1/1] package/sdbus-cpp: bump to version 2.0.0 In-Reply-To: <20240429170441.996821-1-bobrofon@gmail.com> References: <20240429170441.996821-1-bobrofon@gmail.com> Message-ID: <20240506223026.683c8af7@windsurf> On Mon, 29 Apr 2024 20:04:41 +0300 Sergey Bobrenok wrote: > Changelog: > https://github.com/Kistler-Group/sdbus-cpp/releases/tag/v2.0.0 > > Signed-off-by: Sergey Bobrenok > --- > package/sdbus-cpp/sdbus-cpp.hash | 2 +- > package/sdbus-cpp/sdbus-cpp.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:30:44 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:30:44 +0200 Subject: [Buildroot] [PATCH 1/1] package/libjwt: add CPE variables In-Reply-To: <20240501150507.284189-1-fontaine.fabrice@gmail.com> References: <20240501150507.284189-1-fontaine.fabrice@gmail.com> Message-ID: <20240506223044.4f3d7772@windsurf> On Wed, 1 May 2024 17:05:07 +0200 Fabrice Fontaine wrote: > cpe:2.3:a:bencollins:jwt_c_library is a valid CPE identifier for this > package: > > https://nvd.nist.gov/products/cpe/detail/6335E595-6F38-4837-83BB-C78B687BB75B > > Signed-off-by: Fabrice Fontaine > --- > package/libjwt/libjwt.mk | 2 ++ > 1 file changed, 2 insertions(+) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:30:34 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:30:34 +0200 Subject: [Buildroot] [git commit] package/libjwt: add CPE variables Message-ID: <20240506203847.D404686920@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=1a2564e6880b70256c850a3fb54e9ec77d109d58 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master cpe:2.3:a:bencollins:jwt_c_library is a valid CPE identifier for this package: https://nvd.nist.gov/products/cpe/detail/6335E595-6F38-4837-83BB-C78B687BB75B Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/libjwt/libjwt.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package/libjwt/libjwt.mk b/package/libjwt/libjwt.mk index 1643aa7b7a..8929904d10 100644 --- a/package/libjwt/libjwt.mk +++ b/package/libjwt/libjwt.mk @@ -11,6 +11,8 @@ LIBJWT_AUTORECONF = YES LIBJWT_INSTALL_STAGING = YES LIBJWT_LICENSE = MPL-2.0 LIBJWT_LICENSE_FILES = LICENSE +LIBJWT_CPE_ID_VENDOR = bencollins +LIBJWT_CPE_ID_PRODUCT = jwt_c_library LIBJWT_CONF_OPTS = --without-examples ifeq ($(BR2_PACKAGE_OPENSSL),y) From thomas.petazzoni at bootlin.com Mon May 6 20:38:03 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:38:03 +0200 Subject: [Buildroot] [git commit] arch/Config.in: allow building a buildroot toolchain on SPARC Message-ID: <20240506203847.EDE2086922@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=6db46a67852acba97930fd43a372607b138700de branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master With this patch series we again allow building a Buildroot toolchain for SPARC, because SPARC was fixed in uClibc-ng, so SPARC systems work fine now. Signed-off-by: Dmitry Chestnykh Signed-off-by: Thomas Petazzoni --- arch/Config.in | 5 ----- 1 file changed, 5 deletions(-) diff --git a/arch/Config.in b/arch/Config.in index 9912f9fce6..e7349e83ae 100644 --- a/arch/Config.in +++ b/arch/Config.in @@ -216,11 +216,6 @@ config BR2_sh config BR2_sparc bool "SPARC" select BR2_USE_MMU - # uClibc-ng broken on sparc due to recent gcc changes - # that need to be reverted since gcc 8.4, 9.3 and 10.1. - # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784 - # gcc <= 10.x has been removed from Buildroot. - select BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT help SPARC (from Scalable Processor Architecture) is a RISC instruction set architecture (ISA) developed by Sun From thomas.petazzoni at bootlin.com Mon May 6 20:31:01 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:31:01 +0200 Subject: [Buildroot] [git commit] package/uclibc: bump to 1.0.48 Message-ID: <20240506203847.E09EF86921@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=7e6098f9b487c5bc8ee6a36b5e14964c98ad2cb9 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master - The 1.0.48 release of uClibc-ng includes the fix for the SPARC related issue discussed at https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784 - The hash for COPYING.LIB was changed because '^L' (0x0C) characters were removed from COPYING.LIB in uClibc-ng repo. Signed-off-by: Dmitry Chestnykh Signed-off-by: Thomas Petazzoni --- package/uclibc/uclibc.hash | 6 +++--- package/uclibc/uclibc.mk | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/uclibc/uclibc.hash b/package/uclibc/uclibc.hash index a10ceab54c..7097bbf99a 100644 --- a/package/uclibc/uclibc.hash +++ b/package/uclibc/uclibc.hash @@ -1,4 +1,4 @@ -# From https://downloads.uclibc-ng.org/releases/1.0.47/uClibc-ng-1.0.47.tar.xz.sha256 -sha256 29a4d684a06da344ee3ee09acc2ca7649d592ae3ff848f698145c46def05efcb uClibc-ng-1.0.47.tar.xz +# From https://downloads.uclibc-ng.org/releases/1.0.47/uClibc-ng-1.0.48.tar.xz.sha256 +sha256 3bf5fc6cc5cbc454b6c478424755c6f71e7c15578a2c966f02606aa5c5596e21 uClibc-ng-1.0.48.tar.xz # Locally calculated -sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 COPYING.LIB +sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING.LIB diff --git a/package/uclibc/uclibc.mk b/package/uclibc/uclibc.mk index a7b18133ff..9593e18d45 100644 --- a/package/uclibc/uclibc.mk +++ b/package/uclibc/uclibc.mk @@ -4,7 +4,7 @@ # ################################################################################ -UCLIBC_VERSION = 1.0.47 +UCLIBC_VERSION = 1.0.48 UCLIBC_SOURCE = uClibc-ng-$(UCLIBC_VERSION).tar.xz UCLIBC_SITE = https://downloads.uclibc-ng.org/releases/$(UCLIBC_VERSION) UCLIBC_LICENSE = LGPL-2.1+ From thomas.petazzoni at bootlin.com Mon May 6 20:39:13 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:39:13 +0200 Subject: [Buildroot] [PATCH v2 1/3] package/uclibc: Bump to 1.0.48. In-Reply-To: <20240502045518.4875-1-dm.chestnykh@gmail.com> References: <20240502045518.4875-1-dm.chestnykh@gmail.com> Message-ID: <20240506223913.31a83b67@windsurf> On Thu, 2 May 2024 07:55:16 +0300 Dmitry Chestnykh wrote: > - In 1.0.48 release uClibc-ng has provided the fix > for SPARC related to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784 > - The hash for COPYING.LIB was changed because '^L' (0x0C) characters > were removed from COPYING.LIB in uClibc-ng repo. > > Signed-off-by: Dmitry Chestnykh > --- > v1 -> v2: > - Describe the change of COPYING.LIB hash. > --- > package/uclibc/uclibc.hash | 6 +++--- > package/uclibc/uclibc.mk | 2 +- > 2 files changed, 4 insertions(+), 4 deletions(-) Applied to master, with minor commit log fixups. Thanks a lot! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:39:24 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:39:24 +0200 Subject: [Buildroot] [PATCH v2 2/3] arch/Config.in: Allow building buildroot toolchain. In-Reply-To: <20240502045518.4875-2-dm.chestnykh@gmail.com> References: <20240502045518.4875-1-dm.chestnykh@gmail.com> <20240502045518.4875-2-dm.chestnykh@gmail.com> Message-ID: <20240506223924.308ea7ba@windsurf> On Thu, 2 May 2024 07:55:17 +0300 Dmitry Chestnykh wrote: > With this patch series we allow it again because SPARC > was fixed in uClibc-ng so SPARC systems works fine now. > > Signed-off-by: Dmitry Chestnykh > --- > v1 -> v2: > - Split the patch into two parts: > this part allows building buildroot toolchain > for SPARC. > --- > arch/Config.in | 5 ----- > 1 file changed, 5 deletions(-) Applied to master, with minor commit title/log fixups, thanks a lot! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:40:54 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:40:54 +0200 Subject: [Buildroot] [PATCH v2 3/3] configs/qemu_sparc_ss10_defconfig: Re-introduce. In-Reply-To: <20240502045518.4875-3-dm.chestnykh@gmail.com> References: <20240502045518.4875-1-dm.chestnykh@gmail.com> <20240502045518.4875-3-dm.chestnykh@gmail.com> Message-ID: <20240506224054.218238be@windsurf> Hello, On Thu, 2 May 2024 07:55:18 +0300 Dmitry Chestnykh wrote: > With uClibc-ng-1.0.48 we can restore this config > because uClibc-ng was provided the fix for SPARC. > > Signed-off-by: Dmitry Chestnykh Could you confirm that the instructions in board/qemu/sparc-ss10/readme.txt are still valid? Also, could you in this same commit add yourself in the DEVELOPERS file for this defconfig and the board/qemu/sparc-ss10/ ? Thanks a lot! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 6 20:42:16 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:42:16 +0200 Subject: [Buildroot] [git commit] package/linux-firmware: bump version to 20240410 Message-ID: <20240506204325.D64838692C@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=26f5efd7cd1f4074c5e8dcc77199ad78e6033fec branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Updated WHENCE hash due to various new entries for new blobs. Signed-off-by: Andy Shevchenko Signed-off-by: Thomas Petazzoni --- package/linux-firmware/linux-firmware.hash | 4 ++-- package/linux-firmware/linux-firmware.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/linux-firmware/linux-firmware.hash b/package/linux-firmware/linux-firmware.hash index 5a19292a74..6462112fea 100644 --- a/package/linux-firmware/linux-firmware.hash +++ b/package/linux-firmware/linux-firmware.hash @@ -1,5 +1,5 @@ # From https://mirrors.edge.kernel.org/pub/linux/kernel/firmware/sha256sums.asc -sha256 ab7caff09bbb9e68e2b8a7c3e86d32b65f6444caa4ef8b0aabca9503da2c678d linux-firmware-20240115.tar.xz +sha256 b7f231228439c4302be2dfb5014dad18f4a77d663a11667c08c7b8aea7580d99 linux-firmware-20240410.tar.xz # Hash for license files sha256 8116433f4004fc0c24d72b3d9e497808b724aa0e5e1cd63fc1bf66b715b1e2e9 LICENCE.Abilis @@ -38,6 +38,6 @@ sha256 8542aeabf2761935122d693561e16766ce1bcc2b0d003204f9040b7d6d929f2e LICENS sha256 be904cd28cb292b80cdb6cf412ab0d9159d431671e987ad433c1f62e0988a9bc LICENSE.qcom sha256 fc6223d4bfe9f2f9e2eddc44b9fe5721d0caf49f01cb08d602906add686d8c6f LICENSE.radeon sha256 2bdd2e716f05d9737d3f9a20f9a3a3c0caee0e866100ddb0673f1178e42f92b9 LICENSE.sdma_firmware -sha256 92d477fe15d81875bc5bcc4c54df7e95b65f42e4c44d64d840f39cd0aa153d6f WHENCE +sha256 77a4c5cacd61e58b47af61a6bf636f7fc37b626647a2a406210ac61d0ddd9aef WHENCE sha256 fa43e1b9a13b341a07adca9dbe73d0f9072d7966fdfe811c01f0dd2872d7309a qcom/NOTICE.txt sha256 bef9c828e84f21e7835b4de7daf954a327e1ff777871b58e116039b684c0d604 LICENCE.e100 diff --git a/package/linux-firmware/linux-firmware.mk b/package/linux-firmware/linux-firmware.mk index 7e1e5cf6f2..0821816246 100644 --- a/package/linux-firmware/linux-firmware.mk +++ b/package/linux-firmware/linux-firmware.mk @@ -4,7 +4,7 @@ # ################################################################################ -LINUX_FIRMWARE_VERSION = 20240115 +LINUX_FIRMWARE_VERSION = 20240410 LINUX_FIRMWARE_SOURCE = linux-firmware-$(LINUX_FIRMWARE_VERSION).tar.xz LINUX_FIRMWARE_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/firmware LINUX_FIRMWARE_INSTALL_IMAGES = YES From thomas.petazzoni at bootlin.com Mon May 6 20:42:21 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:42:21 +0200 Subject: [Buildroot] [git commit] package/linux-firmware: Add Intel AtomISP v2 firmwares Message-ID: <20240506204325.E0D218692F@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=9b25246e9b731f167454ba4f8182eed1926f50a6 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Many of Intel based tablets (and all phones that were designed with Intel SoCs) have Intel AtomISP v2 engine. Add an entry for recently added firmwares for them. Signed-off-by: Andy Shevchenko Signed-off-by: Thomas Petazzoni --- package/linux-firmware/Config.in | 6 ++++++ package/linux-firmware/linux-firmware.mk | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/package/linux-firmware/Config.in b/package/linux-firmware/Config.in index 920c0a2ef1..ce0b88ad6c 100644 --- a/package/linux-firmware/Config.in +++ b/package/linux-firmware/Config.in @@ -637,6 +637,12 @@ config BR2_PACKAGE_LINUX_FIRMWARE_CX23885 Firmware files for Conexant Cx23885/7/8 PCIe broadcast A/V decoder needed by the Linux CX23885 driver. +config BR2_PACKAGE_LINUX_FIRMWARE_INTEL_ATOMISP + bool "Intel AtomISP v2" + help + Firmware files for Intel AtomISP v2 (also know as IPU2) + needed by the Linux AtomISP v2 driver. + endmenu endif diff --git a/package/linux-firmware/linux-firmware.mk b/package/linux-firmware/linux-firmware.mk index 0821816246..84c96d2216 100644 --- a/package/linux-firmware/linux-firmware.mk +++ b/package/linux-firmware/linux-firmware.mk @@ -846,6 +846,12 @@ LINUX_FIRMWARE_FILES += v4l-cx23885-avcore-01.fw # which is installed unconditionally endif +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_INTEL_ATOMISP),y) +LINUX_FIRMWARE_FILES += intel/ipu/shisp_2400b0_v21.bin +LINUX_FIRMWARE_FILES += intel/ipu/shisp_2401a0_v21.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ivsc +endif + ifneq ($(LINUX_FIRMWARE_FILES)$(LINUX_FIRMWARE_DIRS),) define LINUX_FIRMWARE_BUILD_CMDS From thomas.petazzoni at bootlin.com Mon May 6 20:43:34 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 6 May 2024 22:43:34 +0200 Subject: [Buildroot] [PATCH 1/2] package/linux-firmware: bump version to 20240410 In-Reply-To: <20240425173213.3772586-1-andriy.shevchenko@linux.intel.com> References: <20240425173213.3772586-1-andriy.shevchenko@linux.intel.com> Message-ID: <20240506224334.296e25c3@windsurf> On Thu, 25 Apr 2024 20:32:12 +0300 Andy Shevchenko wrote: > Updated WHENCE hash due to various new entries for new blobs. > > Signed-off-by: Andy Shevchenko > --- > package/linux-firmware/linux-firmware.hash | 4 ++-- > package/linux-firmware/linux-firmware.mk | 2 +- > 2 files changed, 3 insertions(+), 3 deletions(-) Thanks both patches applied! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From peter at korsgaard.com Mon May 6 20:45:52 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 06 May 2024 22:45:52 +0200 Subject: [Buildroot] [PATCH v2, 1/3] package/php-xdebug: drop unrecognized variable In-Reply-To: <20240330090336.567660-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sat, 30 Mar 2024 10:03:34 +0100") References: <20240330090336.567660-1-fontaine.fabrice@gmail.com> Message-ID: <87le4mzn27.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > --with-xdebug is not recognized since the addition of the package in > commit 7b7dffd0984e1b274273f5638a975165606384f9: > configure: WARNING: unrecognized options: --disable-gtk-doc, > --disable-gtk-doc-html, --disable-doc, --disable-docs, > --disable-documentation, --with-xmlto, --with-fop, > --disable-dependency-tracking, --enable-ipv6, --disable-nls, > --with-xdebug > Fixes: 7b7dffd0984e1b274273f5638a975165606384f9 > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Mon May 6 20:46:03 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 06 May 2024 22:46:03 +0200 Subject: [Buildroot] [PATCH v2, 2/3] package/php-xdebug: add zlib optional dependency In-Reply-To: <20240330090336.567660-2-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sat, 30 Mar 2024 10:03:35 +0100") References: <20240330090336.567660-1-fontaine.fabrice@gmail.com> <20240330090336.567660-2-fontaine.fabrice@gmail.com> Message-ID: <87h6fazn1w.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > zlib is an optional dependency (enabled by default) since bump to > version 3.2.0 in commit 8280400fbadde09e51ccff312d7a4ef6a386f589 and > https://github.com/xdebug/xdebug/commit/3954e5cd9e48eec0a8a2a0c6a2fc120bbe562656 > Fixes: 8280400fbadde09e51ccff312d7a4ef6a386f589 > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Mon May 6 20:49:51 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 06 May 2024 22:49:51 +0200 Subject: [Buildroot] [PATCH] package/libblockdev: bump to version 3.1.1 In-Reply-To: <20240410234613.205a7b78@windsurf> (Thomas Petazzoni via buildroot's message of "Wed, 10 Apr 2024 23:46:13 +0200") References: <20240326225031.224022-1-giulio.benetti@benettiengineering.com> <20240326225031.224022-3-giulio.benetti@benettiengineering.com> <20240410234613.205a7b78@windsurf> Message-ID: <87cypyzmvk.fsf@dell.be.48ers.dk> >>>>> "Thomas" == Thomas Petazzoni via buildroot writes: > On Tue, 26 Mar 2024 23:50:31 +0100 > Giulio Benetti wrote: >> Signed-off-by: Giulio Benetti >> --- >> package/libblockdev/libblockdev.hash | 2 +- >> package/libblockdev/libblockdev.mk | 2 +- >> 2 files changed, 2 insertions(+), 2 deletions(-) > Applied to master, thanks. Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Mon May 6 20:49:39 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 6 May 2024 22:49:39 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/libblockdev: bump to version 3.1.1 Message-ID: <20240506205017.D0D118693E@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=233ba540f5c21a2305fcd29217a9767e819cfdd1 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: Giulio Benetti Signed-off-by: Thomas Petazzoni (cherry picked from commit dd79b8dd60ab6817f2d3a0db9eedc1526005c9be) Signed-off-by: Peter Korsgaard --- package/libblockdev/libblockdev.hash | 2 +- package/libblockdev/libblockdev.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/libblockdev/libblockdev.hash b/package/libblockdev/libblockdev.hash index 79700a4996..1438fad741 100644 --- a/package/libblockdev/libblockdev.hash +++ b/package/libblockdev/libblockdev.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 41e4af66c9d78e795302d37825dfd88a4970f82da7b4ebe6487feba2afae44fb libblockdev-3.1.0.tar.gz +sha256 a5cb33a53ff5969067982704f45399d02555fdb2313ed0c56eac9555397dc2db libblockdev-3.1.1.tar.gz sha256 97bdc721d875501b6243a456333fdfdb1ab64d31c4da2554de845caf4674b946 LICENSE diff --git a/package/libblockdev/libblockdev.mk b/package/libblockdev/libblockdev.mk index ebf01acfb5..9ffa15a7a9 100644 --- a/package/libblockdev/libblockdev.mk +++ b/package/libblockdev/libblockdev.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBBLOCKDEV_VERSION = 3.1.0 +LIBBLOCKDEV_VERSION = 3.1.1 LIBBLOCKDEV_SITE = https://github.com/storaged-project/libblockdev/releases/download/$(LIBBLOCKDEV_VERSION)-1 LIBBLOCKDEV_LICENSE = LGPL-2.1 LIBBLOCKDEV_LICENSE_FILES = LICENSE From peter at korsgaard.com Mon May 6 20:45:09 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 6 May 2024 22:45:09 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/php-xdebug: add zlib optional dependency Message-ID: <20240506205017.C23ED8693D@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=71e6b2765b0fec5cd55aab2fc2907d076a92ec17 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x zlib is an optional dependency (enabled by default) since bump to version 3.2.0 in commit 8280400fbadde09e51ccff312d7a4ef6a386f589 and https://github.com/xdebug/xdebug/commit/3954e5cd9e48eec0a8a2a0c6a2fc120bbe562656 Fixes: 8280400fbadde09e51ccff312d7a4ef6a386f589 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni (cherry picked from commit 4b7aeee28ed2f62370084dac4a92bdef89046b41) Signed-off-by: Peter Korsgaard --- package/php-xdebug/php-xdebug.mk | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/package/php-xdebug/php-xdebug.mk b/package/php-xdebug/php-xdebug.mk index 62ef3fa997..3bc197e556 100644 --- a/package/php-xdebug/php-xdebug.mk +++ b/package/php-xdebug/php-xdebug.mk @@ -25,4 +25,11 @@ endef PHP_XDEBUG_PRE_CONFIGURE_HOOKS += PHP_XDEBUG_PHPIZE +ifeq ($(BR2_PACKAGE_ZLIB),y) +PHP_XDEBUG_CONF_OPTS += --with-xdebug-compression +PHP_XDEBUG_DEPENDENCIES += zlib +else +PHP_XDEBUG_CONF_OPTS += --without-xdebug-compression +endif + $(eval $(autotools-package)) From peter at korsgaard.com Mon May 6 20:45:01 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 6 May 2024 22:45:01 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/php-xdebug: drop unrecognized variable Message-ID: <20240506205017.B67668693C@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=ba45833429c5d86a01917f68564ee9e620c771b2 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x --with-xdebug is not recognized since the addition of the package in commit 7b7dffd0984e1b274273f5638a975165606384f9: configure: WARNING: unrecognized options: --disable-gtk-doc, --disable-gtk-doc-html, --disable-doc, --disable-docs, --disable-documentation, --with-xmlto, --with-fop, --disable-dependency-tracking, --enable-ipv6, --disable-nls, --with-xdebug Fixes: 7b7dffd0984e1b274273f5638a975165606384f9 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni (cherry picked from commit 98ee9f8b49ebd7aa6d9dc2c726030ec396910f6c) Signed-off-by: Peter Korsgaard --- package/php-xdebug/php-xdebug.mk | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package/php-xdebug/php-xdebug.mk b/package/php-xdebug/php-xdebug.mk index c5a1e10ebc..62ef3fa997 100644 --- a/package/php-xdebug/php-xdebug.mk +++ b/package/php-xdebug/php-xdebug.mk @@ -14,8 +14,7 @@ PHP_XDEBUG_LICENSE_FILES = LICENSE PHP_XDEBUG_DEPENDENCIES = php host-autoconf PHP_XDEBUG_CONF_OPTS = \ --enable-xdebug \ - --with-php-config=$(STAGING_DIR)/usr/bin/php-config \ - --with-xdebug=$(STAGING_DIR)/usr + --with-php-config=$(STAGING_DIR)/usr/bin/php-config define PHP_XDEBUG_PHPIZE (cd $(@D); \ From peter at korsgaard.com Mon May 6 20:51:32 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 06 May 2024 22:51:32 +0200 Subject: [Buildroot] [PATCH] support/testing: TestFileCapabilities: update kernel to 4.19.310 In-Reply-To: <20240327162319.149021-1-romain.naour@smile.fr> (Romain Naour's message of "Wed, 27 Mar 2024 17:23:19 +0100") References: <20240327162319.149021-1-romain.naour@smile.fr> Message-ID: <878r0mzmsr.fsf@dell.be.48ers.dk> >>>>> "Romain" == Romain Naour writes: > Since the toolchain Bootlin update to 2023.11-1 [1], the arm Linux > kernel build is broken with binutils >= 2.41 with: > arch/arm/mm/proc-v7.S: Assembler messages: > arch/arm/mm/proc-v7.S:640: Error: junk at end of line, first unrecognized character is `#' > A similar issue has already be fixed for qemu m68k [2]. > Bump to the latest kernel 4.19 that already include the backport > of 790756c7e022 ("ARM: 8933/1: replace Sun/Solaris style flag on section directive") > [1] 7e0e6e3b8618ab942f25b11ee72fbc5a4deefdf1 > [2] a1ce9474e40f731f327035d8c0962abb16f00ff7 > Fixes: > https://gitlab.com/buildroot.org/buildroot/-/jobs/6414160106 (TestFileCapabilities) > Signed-off-by: Romain Naour Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Mon May 6 20:50:57 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 6 May 2024 22:50:57 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] support/testing: TestFileCapabilities: update kernel to 4.19.310 Message-ID: <20240506205155.A3E5486942@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=3948fb33272a5c013f0b76c2e1b57daf16f5eb26 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Since the toolchain Bootlin update to 2023.11-1 [1], the arm Linux kernel build is broken with binutils >= 2.41 with: arch/arm/mm/proc-v7.S: Assembler messages: arch/arm/mm/proc-v7.S:640: Error: junk at end of line, first unrecognized character is `#' A similar issue has already be fixed for qemu m68k [2]. Bump to the latest kernel 4.19 that already include the backport of 790756c7e022 ("ARM: 8933/1: replace Sun/Solaris style flag on section directive") [1] 7e0e6e3b8618ab942f25b11ee72fbc5a4deefdf1 [2] a1ce9474e40f731f327035d8c0962abb16f00ff7 Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6414160106 (TestFileCapabilities) Signed-off-by: Romain Naour Signed-off-by: Thomas Petazzoni (cherry picked from commit 07ef00df9bdff1486622fe8248168137aa531c9d) Signed-off-by: Peter Korsgaard --- support/testing/tests/core/test_file_capabilities.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/support/testing/tests/core/test_file_capabilities.py b/support/testing/tests/core/test_file_capabilities.py index fe21d76c94..e2600ae794 100644 --- a/support/testing/tests/core/test_file_capabilities.py +++ b/support/testing/tests/core/test_file_capabilities.py @@ -13,7 +13,7 @@ class TestFileCapabilities(infra.basetest.BRTest): BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y - BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.204" + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.310" BR2_LINUX_KERNEL_DEFCONFIG="vexpress" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}" BR2_LINUX_KERNEL_DTS_SUPPORT=y From fontaine.fabrice at gmail.com Mon May 6 20:52:49 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Mon, 6 May 2024 22:52:49 +0200 Subject: [Buildroot] [PATCH 1/1] package/openocd: fix build with libgpiod2 Message-ID: <20240506205250.1264901-1-fontaine.fabrice@gmail.com> openocd is not compatible with libgpiod2 resulting in the following build failure since the addition of libgpiod2 in commit 57391fad2e619395340b81957ddceab1b1df2e20: src/jtag/drivers/linuxgpiod.c: In function 'helper_get_line': src/jtag/drivers/linuxgpiod.c:283:19: error: 'GPIOD_LINE_REQUEST_DIRECTION_INPUT' undeclared (first use in this function); did you mean 'GPIOD_LINE_DIRECTION_INPUT'? 283 | int dir = GPIOD_LINE_REQUEST_DIRECTION_INPUT, flags = 0, val = 0, retval; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | GPIOD_LINE_DIRECTION_INPUT Fixes: 57391fad2e619395340b81957ddceab1b1df2e20 - http://autobuild.buildroot.org/results/7195e8b76350f26ab3b963702d88b254512e6928 Signed-off-by: Fabrice Fontaine --- package/openocd/openocd.mk | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/package/openocd/openocd.mk b/package/openocd/openocd.mk index 78c6e10c58..b24d1eacf0 100644 --- a/package/openocd/openocd.mk +++ b/package/openocd/openocd.mk @@ -56,8 +56,14 @@ OPENOCD_DEPENDENCIES = \ $(if $(BR2_PACKAGE_LIBUSB),libusb) \ $(if $(BR2_PACKAGE_LIBUSB_COMPAT),libusb-compat) \ $(if $(BR2_PACKAGE_LIBHID),libhid) \ - $(if $(BR2_PACKAGE_HIDAPI),hidapi) \ - $(if $(BR2_PACKAGE_LIBGPIOD),libgpiod) + $(if $(BR2_PACKAGE_HIDAPI),hidapi) + +ifeq ($(BR2_PACKAGE_LIBGPIOD),y) +OPENOCD_DEPENDENCIES += libgpiod +OPENOCD_CONF_OPTS += --enable-linuxgpiod +else +OPENOCD_CONF_OPTS += --disable-linuxgpiod +endif # Adapters OPENOCD_CONF_OPTS += \ -- 2.43.0 From peter at korsgaard.com Mon May 6 20:53:42 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 06 May 2024 22:53:42 +0200 Subject: [Buildroot] [PATCH] package/python-segno: add missing python3-{pyexpat, zlib} dependencies In-Reply-To: <20240327172351.411598-1-romain.naour@smile.fr> (Romain Naour's message of "Wed, 27 Mar 2024 18:23:51 +0100") References: <20240327172351.411598-1-romain.naour@smile.fr> Message-ID: <874jbazmp5.fsf@dell.be.48ers.dk> >>>>> "Romain" == Romain Naour writes: > The last version bump removed python-setuptools runtime dependency > but doing so also removed the python3-pyexpat and python3-zlib > runtime depdencies [1] that are actually direct runtime > dependencies. > [1] 081162580f99d1a68133f7f513bf2cd6d1b8b6b6 > Fixes: > https://gitlab.com/buildroot.org/buildroot/-/jobs/6477656982 (TestPythonPy3Segno) > Cc: James Hilliard > Signed-off-by: Romain Naour Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Mon May 6 20:54:27 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 06 May 2024 22:54:27 +0200 Subject: [Buildroot] [PATCH] package/python-service-identity: add missing python-cryptography dependency In-Reply-To: <20240327162207.148920-1-romain.naour@smile.fr> (Romain Naour's message of "Wed, 27 Mar 2024 17:22:07 +0100") References: <20240327162207.148920-1-romain.naour@smile.fr> Message-ID: <87zft2y83g.fsf@dell.be.48ers.dk> >>>>> "Romain" == Romain Naour writes: > The last version bump removed python-pyopenssl runtime dependency but > doing so also removed the python-cryptography runtime depdency [1] that > is actually a direct runtime dependency. > While at it, update BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS > dependency comment. > [1] 6008f2b1b901be1374ac201b5e560cca61b4b61e > Fixes: > https://gitlab.com/buildroot.org/buildroot/-/jobs/6477656983 (TestPythonPy3ServiceIdentity) > Cc: James Hilliard > Signed-off-by: Romain Naour Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Mon May 6 20:57:18 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 06 May 2024 22:57:18 +0200 Subject: [Buildroot] [PATCH] package/petitboot: bump to version 1.15 In-Reply-To: <20240326121634.1248184-1-laurent@vivier.eu> (Laurent Vivier's message of "Tue, 26 Mar 2024 13:16:34 +0100") References: <20240326121634.1248184-1-laurent@vivier.eu> Message-ID: <87v83qy7yp.fsf@dell.be.48ers.dk> >>>>> "Laurent" == Laurent Vivier writes: > Signed-off-by: Laurent Vivier Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Mon May 6 21:01:06 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 06 May 2024 23:01:06 +0200 Subject: [Buildroot] [git commit] support/testing: sync TestATFAllwinner with orangepi_zero_plus2_defconfig In-Reply-To: <20240411043420.511368601F@busybox.osuosl.org> (Yann E. MORIN's message of "Thu, 11 Apr 2024 06:33:25 +0200") References: <20240411043420.511368601F@busybox.osuosl.org> Message-ID: <87r0eey7sd.fsf@dell.be.48ers.dk> >>>>> "Yann" == Yann E MORIN writes: > commit: https://git.buildroot.net/buildroot/commit/?id=eb16148dddc6be39b0d850181c2461fdaba1ee6f > branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master > u-boot-2021.04 seems to be broken when pylibfdt support is enabled > and the latest python3/setuptools are used. > Since the TestATFAllwinner is using bananapi_m64 as u-boot defconfig > but the Buildroot defconfig of this board was removed in 2022.11 [1] > update TestATFAllwinner to use a newer BSP. Use the one provided > by orangepi_zero_plus2_defconfig. > [1] daf3c6661f823e566b6310042884c36c1d73f1de > Fixes: > https://gitlab.com/buildroot.org/buildroot/-/jobs/6477656317 (TestATFAllwinner) > Signed-off-by: Romain Naour > Signed-off-by: Yann E. MORIN Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Mon May 6 21:01:32 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 06 May 2024 23:01:32 +0200 Subject: [Buildroot] [git commit] support/testing: remove TestATFVexpress In-Reply-To: <20240411043420.5B0FE86020@busybox.osuosl.org> (Yann E. MORIN's message of "Thu, 11 Apr 2024 06:34:03 +0200") References: <20240411043420.5B0FE86020@busybox.osuosl.org> Message-ID: <87msp2y7rn.fsf@dell.be.48ers.dk> >>>>> "Yann" == Yann E MORIN writes: > commit: https://git.buildroot.net/buildroot/commit/?id=107bcd536dae1bc26e4f34ed510484d3abcc6b5f > branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master > TestATFVexpress is using vexpress_aemv8a_juno as as u-boot defconfig > but the Buildroot defconfig of this board was removed in 2022.11 [1] > Since both TestATFVexpress and TestATFAllwinner are now using mainline > ATF, we don't really need several ATF test anymore. Initially [2], > several runtime test were added to test ATF/U-Boot combinations when > ATF was provided by a vendor: vexpress (mainline), Allwinner and > Marvell. > Keep TestATFAllwinner as ATF mainline test. > [1] 347c1087388d7782e6865f112f195e6780d473a7 > [2] 8cf3ce04e9c4a4c4685b80edd9e8e873fe44d8e8 > Signed-off-by: Romain Naour > Signed-off-by: Yann E. MORIN Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Mon May 6 21:02:27 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 06 May 2024 23:02:27 +0200 Subject: [Buildroot] [PATCH] package/python-pypng: add missing python3-zlib dependency In-Reply-To: <20240410221806.89203-1-romain.naour@smile.fr> (Romain Naour's message of "Thu, 11 Apr 2024 00:18:03 +0200") References: <20240410221806.89203-1-romain.naour@smile.fr> Message-ID: <87ikzqy7q4.fsf@dell.be.48ers.dk> >>>>> "Romain" == Romain Naour writes: > png.py import zlib [1] so python3-zlib needs to be installed at > runtime. > [1] https://gitlab.com/drj11/pypng/-/blob/pypng-0.20220715.0/code/png.py?ref_type=tags#L185 > Fixes: > https://gitlab.com/buildroot.org/buildroot/-/jobs/6477656971 (TestPythonPy3Qrcode) > Cc: James Hilliard > Signed-off-by: Romain Naour Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From fontaine.fabrice at gmail.com Mon May 6 21:03:48 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Mon, 6 May 2024 23:03:48 +0200 Subject: [Buildroot] [PATCH 1/1] package/mdadm: fix uclibc and musl build Message-ID: <20240506210348.1285002-1-fontaine.fabrice@gmail.com> Fix following uclibc build failure raised since bump to version 4.3 in commit 99e9ff08d0705279532ca0cf3de22ea54660cbdc and https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=577fd10486d8d1472a6b559066f344ac30a3a391: Create.c: In function 'write_zeroes_fork': Create.c:155:35: error: 'FALLOC_FL_ZERO_RANGE' undeclared (first use in this function) 155 | if (fallocate(fd, FALLOC_FL_ZERO_RANGE | FALLOC_FL_KEEP_SIZE, | ^~~~~~~~~~~~~~~~~~~~ as well as the following musl build failure: util.c: In function 'get_md_name': util.c:1031:29: error: 'NAME_MAX' undeclared (first use in this function); did you mean 'MD_NAME_MAX'? 1031 | static char devname[NAME_MAX]; | ^~~~~~~~ | MD_NAME_MAX util.c:1031:29: note: each undeclared identifier is reported only once for each function it appears in /home/buildroot/instance-0/output-1/host/bin/x86_64-linux-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -DNO_LIBUDEV -DSendmail=\""/usr/sbin/sendmail -t"\" -DCONFFILE=\"/etc/mdadm.conf\" -DCONFFILE2=\"/etc/mdadm/mdadm.conf\" -DMAP_DIR=\"/run/mdadm\" -DMAP_FILE=\"map\" -DMDMON_DIR=\"/run/mdadm\" -DFAILED_SLOTS_DIR=\"/run/mdadm/failed-slots\" -DNO_COROSYNC -DNO_DLM -DUSE_PTHREADS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DBINDIR=\"/sbin\" -o Monitor.o -c Monitor.c /home/buildroot/instance-0/output-1/host/bin/x86_64-linux-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -DNO_LIBUDEV -DSendmail=\""/usr/sbin/sendmail -t"\" -DCONFFILE=\"/etc/mdadm.conf\" -DCONFFILE2=\"/etc/mdadm/mdadm.conf\" -DMAP_DIR=\"/run/mdadm\" -DMAP_FILE=\"map\" -DMDMON_DIR=\"/run/mdadm\" -DFAILED_SLOTS_DIR=\"/run/mdadm/failed-slots\" -DNO_COROSYNC -DNO_DLM -DUSE_PTHREADS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DBINDIR=\"/sbin\" -o dlink.o -c dlink.c Create.c: In function 'write_zeroes_fork': Create.c:155:35: error: 'FALLOC_FL_ZERO_RANGE' undeclared (first use in this function) 155 | if (fallocate(fd, FALLOC_FL_ZERO_RANGE | FALLOC_FL_KEEP_SIZE, | ^~~~~~~~~~~~~~~~~~~~ Fixes: 99e9ff08d0705279532ca0cf3de22ea54660cbdc - http://autobuild.buildroot.org/results/0e04bcdb591ca5642053e1f7e31384f06581e989 - http://autobuild.buildroot.org/results/c77ee2615e9d473e93d95c778648c7e897b7f234 Signed-off-by: Fabrice Fontaine --- ...ts-h-include-for-NAME_MAX-definition.patch | 32 ++++++++++++++ .../0003-Create.c-fix-uclibc-build.patch | 42 +++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 package/mdadm/0002-util-c-add-limits-h-include-for-NAME_MAX-definition.patch create mode 100644 package/mdadm/0003-Create.c-fix-uclibc-build.patch diff --git a/package/mdadm/0002-util-c-add-limits-h-include-for-NAME_MAX-definition.patch b/package/mdadm/0002-util-c-add-limits-h-include-for-NAME_MAX-definition.patch new file mode 100644 index 0000000000..ceaf7f923c --- /dev/null +++ b/package/mdadm/0002-util-c-add-limits-h-include-for-NAME_MAX-definition.patch @@ -0,0 +1,32 @@ +From 8bda86099089b44129ef6206764f9de47a45f0db Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin +Date: Tue, 12 Mar 2024 11:01:50 +0100 +Subject: util.c: add limits.h include for NAME_MAX definition + +Add limits.h include for NAME_MAX definition. + +Signed-off-by: Alexander Kanavin +Signed-off-by: Mariusz Tkaczyk + +Upstream: https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=8bda86099089b44129ef6206764f9de47a45f0db +Signed-off-by: Fabrice Fontaine +--- + util.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/util.c b/util.c +index 05ad3343..49a9c6e2 100644 +--- a/util.c ++++ b/util.c +@@ -36,7 +36,7 @@ + #include + #include + #include +- ++#include + + /* + * following taken from linux/blkpg.h because they aren't +-- +cgit 1.2.3-korg + diff --git a/package/mdadm/0003-Create.c-fix-uclibc-build.patch b/package/mdadm/0003-Create.c-fix-uclibc-build.patch new file mode 100644 index 0000000000..c8399be076 --- /dev/null +++ b/package/mdadm/0003-Create.c-fix-uclibc-build.patch @@ -0,0 +1,42 @@ +From 52bead95d2957437c691891fcdc49bd6afccdd49 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 12 Apr 2024 18:45:13 +0200 +Subject: Create.c: fix uclibc build + +Define FALLOC_FL_ZERO_RANGE if needed as FALLOC_FL_ZERO_RANGE is only +defined for aarch64 on uclibc-ng resulting in the following or1k build +failure since commit 577fd10486d8d1472a6b559066f344ac30a3a391: + +Create.c: In function 'write_zeroes_fork': +Create.c:155:35: error: 'FALLOC_FL_ZERO_RANGE' undeclared (first use in this function) + 155 | if (fallocate(fd, FALLOC_FL_ZERO_RANGE | FALLOC_FL_KEEP_SIZE, + | ^~~~~~~~~~~~~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/0e04bcdb591ca5642053e1f7e31384f06581e989 + +Signed-off-by: Fabrice Fontaine +Signed-off-by: Mariusz Tkaczyk +Upstream: https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=52bead95d2957437c691891fcdc49bd6afccdd49 +--- + Create.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/Create.c b/Create.c +index 4397ff49..d94253b1 100644 +--- a/Create.c ++++ b/Create.c +@@ -32,6 +32,10 @@ + #include + #include + ++#ifndef FALLOC_FL_ZERO_RANGE ++#define FALLOC_FL_ZERO_RANGE 16 ++#endif ++ + static int round_size_and_verify(unsigned long long *size, int chunk) + { + if (*size == 0) +-- +cgit 1.2.3-korg + -- 2.43.0 From peter at korsgaard.com Mon May 6 21:04:01 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 06 May 2024 23:04:01 +0200 Subject: [Buildroot] [PATCH] package/skeleton-init-sysv: Set sticky bit on /dev/shm In-Reply-To: <20240411152016.1185109-1-ben.hutchings@mind.be> (Ben Hutchings via buildroot's message of "Thu, 11 Apr 2024 17:20:16 +0200") References: <20240411152016.1185109-1-ben.hutchings@mind.be> Message-ID: <87edaey7ni.fsf@dell.be.48ers.dk> >>>>> "Ben" == Ben Hutchings via buildroot writes: > /dev/shm is a world-writable directory, like /tmp, and should also > have the sticky bit set. Without this, any user can delete and > replace another user's files in /dev/shm. > This bug has been present since /dev/shm was added to the skeleton > /etc/fstab, but appears to have been fixed for systems using systemd > by commit 76fc9275f14e "system: separate sysv and systemd parts of the > skeleton" which went into Buildroot 2017.08. > Signed-off-by: Ben Hutchings > Fixes: 22fde22e35f98f7830c2f8955465532328348cd1 Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Mon May 6 20:53:10 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 6 May 2024 22:53:10 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/python-segno: add missing python3-{pyexpat, zlib} dependencies Message-ID: <20240506212727.7164D86962@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=14e1388a95e3df3732d70c0b94a89836f3e072e2 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x The last version bump removed python-setuptools runtime dependency but doing so also removed the python3-pyexpat and python3-zlib runtime depdencies [1] that are actually direct runtime dependencies. [1] 081162580f99d1a68133f7f513bf2cd6d1b8b6b6 Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6477656982 (TestPythonPy3Segno) Cc: James Hilliard Signed-off-by: Romain Naour Signed-off-by: Thomas Petazzoni (cherry picked from commit d4833cc14df8496bb98e5ccbf0c020fdd502edc9) Signed-off-by: Peter Korsgaard --- package/python-segno/Config.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package/python-segno/Config.in b/package/python-segno/Config.in index 7107e67443..e6080fd417 100644 --- a/package/python-segno/Config.in +++ b/package/python-segno/Config.in @@ -1,5 +1,7 @@ config BR2_PACKAGE_PYTHON_SEGNO bool "python-segno" + select BR2_PACKAGE_PYTHON3_PYEXPAT # runtime + select BR2_PACKAGE_PYTHON3_ZLIB # runtime help QR Code and Micro QR Code generator for Python. From peter at korsgaard.com Mon May 6 21:02:09 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 6 May 2024 23:02:09 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/python-pypng: add missing python3-zlib dependency Message-ID: <20240506212727.B069686963@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=549aaab347586c2f1636a78c4e14185a14e00740 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x png.py import zlib [1] so python3-zlib needs to be installed at runtime. [1] https://gitlab.com/drj11/pypng/-/blob/pypng-0.20220715.0/code/png.py?ref_type=tags#L185 Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6477656971 (TestPythonPy3Qrcode) Cc: James Hilliard Signed-off-by: Romain Naour Signed-off-by: Yann E. MORIN (cherry picked from commit 15381b57559182693f6d5530544937f8fcf3b471) Signed-off-by: Peter Korsgaard --- package/python-pypng/Config.in | 1 + 1 file changed, 1 insertion(+) diff --git a/package/python-pypng/Config.in b/package/python-pypng/Config.in index c1ed405615..952b46c2c5 100644 --- a/package/python-pypng/Config.in +++ b/package/python-pypng/Config.in @@ -1,5 +1,6 @@ config BR2_PACKAGE_PYTHON_PYPNG bool "python-pypng" + select BR2_PACKAGE_PYTHON3_ZLIB # runtime help Pure Python library for saving and loading PNG images. From peter at korsgaard.com Mon May 6 21:02:53 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 6 May 2024 23:02:53 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/skeleton-init-sysv: Set sticky bit on /dev/shm Message-ID: <20240506212727.BBE4586967@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=3d1c04c05c27c206e336ad7338d0a882c9c4736d branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x /dev/shm is a world-writable directory, like /tmp, and should also have the sticky bit set. Without this, any user can delete and replace another user's files in /dev/shm. This bug has been present since /dev/shm was added to the skeleton /etc/fstab, but appears to have been fixed for systems using systemd by commit 76fc9275f14e "system: separate sysv and systemd parts of the skeleton" which went into Buildroot 2017.08. Signed-off-by: Ben Hutchings Fixes: 22fde22e35f98f7830c2f8955465532328348cd1 Signed-off-by: Yann E. MORIN (cherry picked from commit 0b2967e15800421efbdfe3a7a6061cf6bd84134d) Signed-off-by: Peter Korsgaard --- package/skeleton-init-sysv/skeleton/etc/fstab | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/skeleton-init-sysv/skeleton/etc/fstab b/package/skeleton-init-sysv/skeleton/etc/fstab index 169054b74f..06c20fe9d5 100644 --- a/package/skeleton-init-sysv/skeleton/etc/fstab +++ b/package/skeleton-init-sysv/skeleton/etc/fstab @@ -2,7 +2,7 @@ /dev/root / ext2 rw,noauto 0 1 proc /proc proc defaults 0 0 devpts /dev/pts devpts defaults,gid=5,mode=620,ptmxmode=0666 0 0 -tmpfs /dev/shm tmpfs mode=0777 0 0 +tmpfs /dev/shm tmpfs mode=1777 0 0 tmpfs /tmp tmpfs mode=1777 0 0 tmpfs /run tmpfs mode=0755,nosuid,nodev 0 0 sysfs /sys sysfs defaults 0 0 From peter at korsgaard.com Mon May 6 20:54:08 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 6 May 2024 22:54:08 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/python-service-identity: add missing python-cryptography dependency Message-ID: <20240506212727.7D3BB86963@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=63d5a3b88e345a620ffebf04f18b81ef659db609 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x The last version bump removed python-pyopenssl runtime dependency but doing so also removed the python-cryptography runtime depdency [1] that is actually a direct runtime dependency. While at it, update BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS dependency comment. [1] 6008f2b1b901be1374ac201b5e560cca61b4b61e Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6477656983 (TestPythonPy3ServiceIdentity) Cc: James Hilliard Signed-off-by: Romain Naour Signed-off-by: Thomas Petazzoni (cherry picked from commit ee074ddf6f0d00a97a1cae4ba62c1cffc77bb6e4) Signed-off-by: Peter Korsgaard --- package/python-service-identity/Config.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/python-service-identity/Config.in b/package/python-service-identity/Config.in index dccd8f37c0..3bb5c08c6f 100644 --- a/package/python-service-identity/Config.in +++ b/package/python-service-identity/Config.in @@ -1,8 +1,8 @@ config BR2_PACKAGE_PYTHON_SERVICE_IDENTITY bool "python-service-identity" - # python-pyopenssl -> python-cryptography - depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-cryptography select BR2_PACKAGE_PYTHON_ATTRS # runtime + select BR2_PACKAGE_PYTHON_CRYPTOGRAPHY # runtime select BR2_PACKAGE_PYTHON_PYASN1 # runtime select BR2_PACKAGE_PYTHON_PYASN1_MODULES # runtime help From peter at korsgaard.com Mon May 6 20:57:12 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 6 May 2024 22:57:12 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/petitboot: bump to version 1.15 Message-ID: <20240506212727.89EB986964@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=c28be13d01d7aa216d64817f4e9c728b73157a51 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: Laurent Vivier Signed-off-by: Thomas Petazzoni (cherry picked from commit 5652306f7e72792655f0b2b2ea978734fc2e5938) Signed-off-by: Peter Korsgaard --- package/petitboot/petitboot.hash | 2 +- package/petitboot/petitboot.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/petitboot/petitboot.hash b/package/petitboot/petitboot.hash index a9a21f2c1b..3a90bc5296 100644 --- a/package/petitboot/petitboot.hash +++ b/package/petitboot/petitboot.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 fa2367370d3ce5dd9910ab08a0832071e2508c8bf75cfec6d3b9807fbefc507a petitboot-v1.14.tar.gz +sha256 eed29ec841c2bcd5ecc65347f5b95a0087a541bd9c04ca3c17c55d1f7357d189 petitboot-v1.15.tar.gz sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 COPYING diff --git a/package/petitboot/petitboot.mk b/package/petitboot/petitboot.mk index 4c8bc35adb..cd7631fa5c 100644 --- a/package/petitboot/petitboot.mk +++ b/package/petitboot/petitboot.mk @@ -4,7 +4,7 @@ # ################################################################################ -PETITBOOT_VERSION = 1.14 +PETITBOOT_VERSION = 1.15 PETITBOOT_SOURCE = petitboot-v$(PETITBOOT_VERSION).tar.gz PETITBOOT_SITE = https://github.com/open-power/petitboot/releases/download/v$(PETITBOOT_VERSION) PETITBOOT_DEPENDENCIES = \ From peter at korsgaard.com Mon May 6 20:59:50 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 6 May 2024 22:59:50 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] support/testing: sync TestATFAllwinner with orangepi_zero_plus2_defconfig Message-ID: <20240506212727.9781C86965@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=2e929607565c479fffe6cfe1e0379f7c53abdf09 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x u-boot-2021.04 seems to be broken when pylibfdt support is enabled and the latest python3/setuptools are used. Since the TestATFAllwinner is using bananapi_m64 as u-boot defconfig but the Buildroot defconfig of this board was removed in 2022.11 [1] update TestATFAllwinner to use a newer BSP. Use the one provided by orangepi_zero_plus2_defconfig. [1] daf3c6661f823e566b6310042884c36c1d73f1de Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6477656317 (TestATFAllwinner) Signed-off-by: Romain Naour Signed-off-by: Yann E. MORIN (cherry picked from commit eb16148dddc6be39b0d850181c2461fdaba1ee6f) Signed-off-by: Peter Korsgaard --- support/testing/tests/boot/test_atf.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/support/testing/tests/boot/test_atf.py b/support/testing/tests/boot/test_atf.py index 4fcb9b241c..1995f83a54 100644 --- a/support/testing/tests/boot/test_atf.py +++ b/support/testing/tests/boot/test_atf.py @@ -34,15 +34,15 @@ class TestATFAllwinner(infra.basetest.BRTest): BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64=y BR2_TARGET_ARM_TRUSTED_FIRMWARE=y BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y - BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.5" + BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.9" BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50i_a64" # BR2_TARGET_ARM_TRUSTED_FIRMWARE_SSP is not set BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y - BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.04" - BR2_TARGET_UBOOT_BOARD_DEFCONFIG="bananapi_m64" + BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.10" + BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_zero_plus2" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_NEEDS_PYTHON3=y BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y From peter at korsgaard.com Mon May 6 21:01:24 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Mon, 6 May 2024 23:01:24 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] support/testing: remove TestATFVexpress Message-ID: <20240506212727.A3B7286962@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=0bbae94e2292bdf83437dbf31efe73bf889eaa53 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x TestATFVexpress is using vexpress_aemv8a_juno as as u-boot defconfig but the Buildroot defconfig of this board was removed in 2022.11 [1] Since both TestATFVexpress and TestATFAllwinner are now using mainline ATF, we don't really need several ATF test anymore. Initially [2], several runtime test were added to test ATF/U-Boot combinations when ATF was provided by a vendor: vexpress (mainline), Allwinner and Marvell. Keep TestATFAllwinner as ATF mainline test. [1] 347c1087388d7782e6865f112f195e6780d473a7 [2] 8cf3ce04e9c4a4c4685b80edd9e8e873fe44d8e8 Signed-off-by: Romain Naour Signed-off-by: Yann E. MORIN (cherry picked from commit 107bcd536dae1bc26e4f34ed510484d3abcc6b5f) Signed-off-by: Peter Korsgaard --- support/testing/tests/boot/test_atf.py | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/support/testing/tests/boot/test_atf.py b/support/testing/tests/boot/test_atf.py index 1995f83a54..352725e721 100644 --- a/support/testing/tests/boot/test_atf.py +++ b/support/testing/tests/boot/test_atf.py @@ -1,31 +1,6 @@ import infra.basetest -class TestATFVexpress(infra.basetest.BRTest): - config = \ - """ - BR2_aarch64=y - BR2_TOOLCHAIN_EXTERNAL=y - BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64=y - BR2_TARGET_ARM_TRUSTED_FIRMWARE=y - BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y - BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/ARM-software/arm-trusted-firmware.git" - BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="v2.5" - BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="juno" - BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y - BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y - BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_DTC=y - BR2_TARGET_UBOOT=y - BR2_TARGET_UBOOT_BOARDNAME="vexpress_aemv8a_juno" - BR2_TARGET_UBOOT_CUSTOM_VERSION=y - BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2020.07" - BR2_TARGET_VEXPRESS_FIRMWARE=y - """ - - def test_run(self): - pass - - class TestATFAllwinner(infra.basetest.BRTest): config = \ """ From romain.naour at smile.fr Mon May 6 21:30:38 2024 From: romain.naour at smile.fr (Romain Naour) Date: Mon, 6 May 2024 23:30:38 +0200 Subject: [Buildroot] [PATCH] package/python-rpds-py: bump to version 0.18.1 Message-ID: <20240506213038.418213-1-romain.naour@smile.fr> As reported by Antoine Coutant on the Buildroot mailing list [1]: rpds depends on the crate pyo3. This crate uses "std::sync::atomic::AtomicI64" which doesn't exist for 32 bits targets. That leads to an error as reported by Buildroot Gitlab-ci. An issue have been opened on pyo3's github [2]. A fix have been accepted by pyo3 [3] and merged in pyo3 0.20.3 release [4]. This pyo3 0.20.3 uses crate portable-atomic [5] to provide atomic types and compare and swap operations for all targets that can use std. python-rpds-py 0.18.1 is the first release that use pyo3 0.20.3. Before python-rpds-py 0.18.1 release fixing this issue would require that we be able to patch a package during the Cargo vendoring step [6]. [1] http://lists.busybox.net/pipermail/buildroot/2024-February/684867.html [2]: https://github.com/PyO3/pyo3/issues/3614 [3]: https://github.com/PyO3/pyo3/pull/3619 [4]: https://github.com/PyO3/pyo3/blob/v0.20.3/CHANGELOG.md [5]: https://github.com/taiki-e/portable-atomic [6]: http://lists.busybox.net/pipermail/buildroot/2024-February/684886.html Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6783811842 (TestPythonPy3Dtschema) https://gitlab.com/buildroot.org/buildroot/-/jobs/6783811860 (TestPythonPy3FlaskExpectsJson) Reported-by: Antoine Coutant Cc: James Hilliard Signed-off-by: Romain Naour --- package/python-rpds-py/python-rpds-py.hash | 2 +- package/python-rpds-py/python-rpds-py.mk | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/python-rpds-py/python-rpds-py.hash b/package/python-rpds-py/python-rpds-py.hash index 4650d9c385..62b508ae6b 100644 --- a/package/python-rpds-py/python-rpds-py.hash +++ b/package/python-rpds-py/python-rpds-py.hash @@ -1,4 +1,4 @@ # Locally calculated after vendoring -sha256 760b05720269195d86071ac7cf627b3a4ab9366680d8d449a6a63b84d96a5bc0 rpds_py-0.17.1.tar.gz +sha256 d9b542bf5321495737005a78d9fbf40541b898d1e2b3309cbe36a2431977be8b rpds_py-0.18.1.tar.gz # Locally computed sha256 checksums sha256 314e4e91be3baa93c0fb4bccc9e4e97cd643eb839b065af921782c2175fe9909 LICENSE diff --git a/package/python-rpds-py/python-rpds-py.mk b/package/python-rpds-py/python-rpds-py.mk index cee2ff290a..c38f749521 100644 --- a/package/python-rpds-py/python-rpds-py.mk +++ b/package/python-rpds-py/python-rpds-py.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_RPDS_PY_VERSION = 0.17.1 +PYTHON_RPDS_PY_VERSION = 0.18.1 PYTHON_RPDS_PY_SOURCE = rpds_py-$(PYTHON_RPDS_PY_VERSION).tar.gz -PYTHON_RPDS_PY_SITE = https://files.pythonhosted.org/packages/b7/0a/e3bdcc977e6db3bf32a3f42172f583adfa7c3604091a03d512333e0161fe +PYTHON_RPDS_PY_SITE = https://files.pythonhosted.org/packages/2d/aa/e7c404bdee1db7be09860dff423d022ffdce9269ec8e6532cce09ee7beea PYTHON_RPDS_PY_SETUP_TYPE = maturin PYTHON_RPDS_PY_LICENSE = MIT PYTHON_RPDS_PY_LICENSE_FILES = LICENSE -- 2.44.0 From november at dismail.de Mon May 6 23:47:03 2024 From: november at dismail.de (Dylan) Date: Mon, 06 May 2024 19:47:03 -0400 Subject: [Buildroot] Issue Building New Package cmus In-Reply-To: References: Message-ID: Hi Arnout, I will try that out. I appreciate your assistance! Thank you, Dylan On Mon, May 6 2024 at 09:01:13 AM +0200, Arnout Vandecappelle wrote: > > > On 06/05/2024 00:36, Dylan wrote: >> Hello Arnout, >> >> Thank you for the prompt reply. I moved the $(TARGET_CONFIGURE_OPTS) >> variable behind the ./configure and MAKE invocations and it has >> solved that issue (pasted below). >> >> define CMUS_CONFIGURE_CMDS >> (cd $(@D); \ >> $(TARGET_CONFIGURE_OPTS) \ >> $(TARGET_CONFIGURE_ARGS) \ >> ./configure $(CMUS_CONFIGURE_OPTS)) >> endef >> >> define CMUS_BUILD_CMDS >> $(TARGET_MAKE_ENV) \ >> $(TARGET_CONFIGURE_OPTS) \ >> $(TARGET_CONFIGURE_ARGS) \ >> $(MAKE) -C $(@D) all >> endef >> >> define CMUS_INSTALL_TARGET_CMDS >> $(TARGET_MAKE_ENV) \ >> $(TARGET_CONFIGURE_OPTS) \ >> $(TARGET_CONFIGURE_ARGS) \ >> $(MAKE) -C $(@D) install \ >> DESTDIR="$(TARGET_DIR)/usr/bin" >> endef >> >> >> I'm now receiving errors related to "undefined references", which by >> their names, seem rather essential: >> >> main.c:(.text+0x4): undefined reference to `__stack_chk_guard' >> buildroot/output/host/bin/aarch64-buildroot-linux-gnu-ld: >> main.c:(.text+0x14): undefined reference to `__stack_chk_guard' >> buildroot/output/host/bin/aarch64-buildroot-linux-gnu-ld: >> main.c:(.text+0x4c): undefined reference to `read' >> buildroot/output/host/bin/aarch64-buildroot-linux-gnu-ld: >> main.c:(.text+0x64): undefined reference to `__stack_chk_guard' >> buildroot/output/host/bin/aarch64-buildroot-linux-gnu-ld: >> main.c:(.text+0x68): undefined reference to `__stack_chk_guard' >> buildroot/output/host/bin/aarch64-buildroot-linux-gnu-ld: >> main.c:(.text+0x80): undefined reference to `__stack_chk_fail' > > Sounds like the Makefile unconditionally enables stack smashing > protection, but it's disabled in your Buildroot configuration. Check > in the Makefile how it's done and then either patch it out, or give > whatever config option is needed to disable it. If you disable it, it > will still be enabled by Buildroot when it's enabled in the Buildroot > configuration (through the CFLAGS that Buildroot passes in). > >> buildroot/output/host/bin/aarch64-buildroot-linux-gnu-ld: main.o: in >> function `write_line': >> main.c:(.text+0x138): undefined reference to `strlen' > > This is most likely a similar situation but with FORTIFY. > > Regards, > Arnout > >> >> Specifically, right after the line, >> LD cmus-remote >> >> Do you have any suggestions for resources I could dive deeper into >> this? I've been combing through the buildroot and bootlin docs, but >> it seems there are some specifics that I am missing. >> >> I have the full build log here, if you're so inclined: >> https://paste.ack.tf/f86eab >> >> Thank you for your assistance! >> Dylan >> >> On Sun, May 5 2024 at 09:33:22 PM +0200, Arnout Vandecappelle >> wrote: >>> >>> >>> On 05/05/2024 20:41, Dylan via buildroot wrote: >>>> Hello, >>>> >>>> I have added a new package, cmus, to my buildroot package list, >>>> but when I try to compile it during a full rebuild, it returns >>>> an error message, >>>> >>>> input.c: In function 'do_http_get': >>>> input.c:223:54: error: expected ')' before 'VERSION' >>>> CC lib.o >>>> make[2]: *** [scripts/lib.mk:66: input.o] Error 1 >>>> make[2]: *** Waiting for unfinished jobs.... >>>> make[1]: *** [package/pkg-generic.mk:283: >>>> buildroot/output/build/cmus-2.10.0/.stamp_built] Error 2 >>>> make: *** [Makefile:82: _all] Error 2 >>>> >>>> >>>> I can build the cmus package outside of buildroot, so I think it >>>> may be related to my cmus.mk file, but I am not sure what is >>>> wrong with the file. >>>> >>>> I've uploaded the contents of the cmus.mk file here: >>>> https://paste.ack.tf/8471de >>> >>> You have: >>> >>> $(MAKE) $(TARGET_CONFIGURE_OPTS) >>> >>> This forces an override of all variables defined in >>> TARGET_CONFIGURE_OPTS. One of those is CFLAGS, and in the >>> Makefile itself the definition of VERSION is added to CFLAGS. >>> >>> The solution is typically to use >>> >>> $(TARGET_CONFIGURE_OPTS) $(MAKE) >>> >>> i.e. pass everything in the environment. But then you have to make >>> sure that the Makefile properly handles that - e.g. that it uses >>> += for CFLAGS (which it does). >>> >>> Regards, >>> Arnout >>> >>>> >>>> If the mailing list supports it, I have the hash and config files >>>> attached, as well. >>>> >>>> >>>> I'm using buildroot version 2024.02 and have tried running "make >>>> clean all". >>>> Is anyone else able to reproduce the same error, or can tell me >>>> what I've done incorrectly? >>>> >>>> Thank you, >>>> Dylan >>>> >>>> >>>> _______________________________________________ >>>> buildroot mailing list >>>> buildroot at buildroot.org >>>> https://lists.buildroot.org/mailman/listinfo/buildroot >> >> From thomas.petazzoni at bootlin.com Tue May 7 04:01:54 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 07 May 2024 04:01:54 -0000 Subject: [Buildroot] [autobuild.buildroot.net] Daily results for 2024-05-06 Message-ID: Hello, Autobuild statistics for 2024-05-06 =================================== branch | OK | NOK | TIM | TOT | 2024.02.x | 4 | 8 | 0 | 12 | master | 86 | 89 | 0 | 175 | Classification of failures by reason for master ----------------------------------------------- ibm-sw-tpm2-5452af422edeff7... | 8 unknown | 7 host-heimdal-f4faaeaba371ff... | 6 fail2ban-1.0.2 | 5 gobject-introspection-1.76.1 | 5 host-libxcrypt-4.4.36 | 5 linux-6.8.6 | 4 host-sentry-cli-2.20.3 | 3 openssh-9.7p1 | 3 elfutils-0.189 | 2 host-binutils-2.42 | 2 libressl-3.8.4 | 2 mdadm-4.3 | 2 python-remi-2022.7.27 | 2 cni-plugins-1.3.0 | 1 containerd-1.7.14 | 1 coreutils-9.3 | 1 dmraid-1.0.0.rc16-3 | 1 eza-0.18.8 | 1 fcft-3.1.6 | 1 file-5.45 | 1 frr-8.5.4 | 1 fs/axfs/axfs.mk:33: /home/a... | 1 fs/erofs/erofs.mk:47: /home... | 1 fs/jffs2/jffs2.mk:71: /home... | 1 fs/ubifs/ubifs.mk:50: /home... | 1 glibc-2.39-5-ge0910f1d3278f... | 1 host-go-1.22.2 | 1 ipmitool-1_8_19 | 1 jack2-1.9.22 | 1 libarchive-3.7.3 | 1 libcamera-apps-1.2.1 | 1 libffi-3.4.6 | 1 libopenssl-3.3.0 | 1 libp11-0.4.12 | 1 linux-5.10.162-cip24-rt10 | 1 openal-1.22.0 | 1 openocd-0.12.0 | 1 openvmtools-11.3.5-18557794 | 1 oprofile-1.4.0 | 1 proj-9.3.0 | 1 qt5webkit-5.212.0-alpha4 | 1 sofia-sip-1.13.17 | 1 stress-ng-0.17.07 | 1 util-linux-2.39.3 | 1 v4l2loopback-0.12.7 | 1 zeek-4.1.1 | 1 Detail of failures for master ----------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- riscv64 | cni-plugins-1.3.0 | NOK | http://autobuild.buildroot.net/results/df01c1f03b8a900edf835c50a310aae4579d436b | riscv64 | containerd-1.7.14 | NOK | http://autobuild.buildroot.net/results/c4a7f74679502856072070d4bb661083da339794 | microblazeel | coreutils-9.3 | NOK | http://autobuild.buildroot.net/results/ed914ec0f5783ced0d5c180a29dfb63ad6b54dff | ORPH microblazeel | dmraid-1.0.0.rc16-3 | NOK | http://autobuild.buildroot.net/results/87d14187a7c6f4a3ccf4d66cfced85561185a507 | ORPH microblazeel | elfutils-0.189 | NOK | http://autobuild.buildroot.net/results/47f8fe910a88b7517ee335076a5e2431f5c00e98 | ORPH microblazeel | elfutils-0.189 | NOK | http://autobuild.buildroot.net/results/ab5639ea1f7fc9dcfcba00c64cb90903e8be4d86 | ORPH i586 | eza-0.18.8 | NOK | http://autobuild.buildroot.net/results/c28b729e71641a0844e6a57d3bb43834951fb0c9 | microblazeel | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/627f3c1a39e74bfd0da2bcd88201b6f0dcbe8a70 | microblaze | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/c4be4761350d52397d02db54a9fceb540aa15908 | mips64el | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/1b0ae28a4d3e634e098b2b64f02b0fcd5b2f59bd | arm | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/4d7c000e8df7dc14ae1b7a2cb43d9393888670f8 | powerpc64 | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/5e6949a36457b76c6a7467056ff1e559dd761560 | aarch64_be | fcft-3.1.6 | NOK | http://autobuild.buildroot.net/results/6220a4ae399659d1523a2c73da752665223bd94a | armeb | file-5.45 | NOK | http://autobuild.buildroot.net/results/804abc4a839e6f8d3f1cb62aff11dd76afeb7622 | ORPH arc | frr-8.5.4 | NOK | http://autobuild.buildroot.net/results/f37fe352dc2dacd13a9a6c81e25b4f0f9b3b500b | nios2 | fs/axfs/axfs.mk:33: /home/a... | NOK | http://autobuild.buildroot.net/results/8f456915676eeecc0d2e73633f6356d6e13de2fa | powerpc64le | fs/erofs/erofs.mk:47: /home... | NOK | http://autobuild.buildroot.net/results/a017263e64a6f833d2282b6ac3d2b1d829656151 | i686 | fs/jffs2/jffs2.mk:71: /home... | NOK | http://autobuild.buildroot.net/results/8d8779095e10422a641c8b03f170de2308f58ccb | mips | fs/ubifs/ubifs.mk:50: /home... | NOK | http://autobuild.buildroot.net/results/0594ee48d2c853b2467d79e5f4bb0c994521e0a1 | powerpc | glibc-2.39-5-ge0910f1d3278f... | NOK | http://autobuild.buildroot.net/results/f687939771e3295d786cd8b6b68106dd196c2cd8 | m68k | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/2e71228e96141b2378167c9b543c4b9a26b6c950 | ORPH powerpc | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/cd1004826c3f9f011a0fac39c100586fc778a868 | ORPH nios2 | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/3d6aa50cf27868440185b572e1580abd3b88c398 | ORPH sparc64 | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/720c9d20f45887fe8d69d01537422cdf2a33570a | ORPH m68k | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/effa61b8d0c44106a7bcc0f7883377d10963d039 | ORPH arc | host-binutils-2.42 | NOK | http://autobuild.buildroot.net/results/4a67d281652e3ff40522acc98d551fc106d65167 | arm | host-binutils-2.42 | NOK | http://autobuild.buildroot.net/results/b732267d508abe8d1ebf2c7889383f10de1822fe | mips64el | host-go-1.22.2 | NOK | http://autobuild.buildroot.net/results/ba32795558bb5185262bc374d8407187aaf8ed83 | aarch64 | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/8e184141bd3c04bc79c01d4656de606e4b0a23a0 | ORPH powerpc64le | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/40f045690ebf136431250613e0119def705027b9 | ORPH microblazeel | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/3daf44e8d636f822d2f19e456f1b49fca92d94bd | ORPH aarch64_be | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/4e6a65a18f4742d165c10993cb4d54f9e8d8eb61 | ORPH or1k | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/09870284eca8ed8ae643e4eb7aa7f2e4dc6eddc6 | ORPH mips64el | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/b172020293ee72811f1785a5c8a22d781eaba4bd | ORPH s390x | host-libxcrypt-4.4.36 | NOK | http://autobuild.buildroot.net/results/bce7c0a48ee30d0957a4552a29ef5cc8c3d37235 | aarch64_be | host-libxcrypt-4.4.36 | NOK | http://autobuild.buildroot.net/results/2d8b669a92948fed1418f2859e509c4b89a47579 | sparc64 | host-libxcrypt-4.4.36 | NOK | http://autobuild.buildroot.net/results/ba63c3f55480e138f7f793fcd1fe2af8d823908b | or1k | host-libxcrypt-4.4.36 | NOK | http://autobuild.buildroot.net/results/7f39b9313a3b3a651778b705274a44dc8958d26e | arm | host-libxcrypt-4.4.36 | NOK | http://autobuild.buildroot.net/results/82e58ef4872aca7c064fb70216d143f038207194 | arm | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/3d54586e990aa621f3b9a9369e30eb493f51068e | x86_64 | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/5ea8b53ddabd98c8011d617fd1f52a69f994d525 | mips64el | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/142455238da7c78d98b9d52331c8183251b49090 | powerpc64 | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/5505680389ffe17c12dfb22f3c7a09c242f72a20 | s390x | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/94c631877f2841f65a036fab507b1386eb48f72e | or1k | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/e72b89a051c8cae605fb7bf2fb4d9e2802f26f50 | powerpc64 | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/c997dbef24b8448b6728e456c8c7c999fef1667a | powerpc | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/82e29b1ef347c95e01da56e0c446788815180914 | or1k | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/e03cc8906015317b59e2ed728396aac4dc0ee94f | mipsel | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/755ba06e56193b3444f63749af04914f21b5c60d | aarch64_be | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/eaf3b8c686b0023e47b7b48c587bfcc39d81e66e | microblazeel | ipmitool-1_8_19 | NOK | http://autobuild.buildroot.net/results/b84667860ca4154564f52bc6a6c847cb747d35c6 | m68k | jack2-1.9.22 | NOK | http://autobuild.buildroot.net/results/47e105b9cc4cbe5204f37b5829694e74e1dab9f2 | armeb | libarchive-3.7.3 | NOK | http://autobuild.buildroot.net/results/cba970b10d80e7c1c01c924c996fce15b81d4d71 | s390x | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/ec1221ad1103f35769a06fecfa63160fd14da075 | arceb | libffi-3.4.6 | NOK | http://autobuild.buildroot.net/results/013aacb9f060cd17c004bdf4527f55b14bcbac67 | arm | libopenssl-3.3.0 | NOK | http://autobuild.buildroot.net/results/c6bb8fc1fdc2ef674b97e8d2676a84de65f1e8af | ORPH x86_64 | libp11-0.4.12 | NOK | http://autobuild.buildroot.net/results/2292465f02be206a3876585a40e56e52dde66684 | ORPH or1k | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/f0c3ca9b05f85147b417eb3c42ac0f2aa3563c8c | ORPH s390x | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/56947afd9170fa6ed07e0de3845de75b7f34d2fc | ORPH nios2 | linux-5.10.162-cip24-rt10 | NOK | http://autobuild.buildroot.net/results/1639e6c60c1e59896a0bbf00aec2f0c52ce763bf | ORPH mips64 | linux-6.8.6 | NOK | http://autobuild.buildroot.net/results/7bc825ec28ff3ea69fbc3e89a2e533700dd1cfef | ORPH mips64 | linux-6.8.6 | NOK | http://autobuild.buildroot.net/results/be4e88672635f13f931a8f46e05400bd377e15da | ORPH aarch64 | linux-6.8.6 | NOK | http://autobuild.buildroot.net/results/805892aad41431b18162c878cb8ac7f67e9c23a3 | ORPH nios2 | linux-6.8.6 | NOK | http://autobuild.buildroot.net/results/55cdc8f28b01a0e1baba99fd59fd4106a0bd43e2 | ORPH x86_64 | mdadm-4.3 | NOK | http://autobuild.buildroot.net/results/c77ee2615e9d473e93d95c778648c7e897b7f234 | ORPH arc | mdadm-4.3 | NOK | http://autobuild.buildroot.net/results/942549afb8e9d1a508ec28693a89e0c1b38c1a7c | ORPH mips | openal-1.22.0 | NOK | http://autobuild.buildroot.net/results/e96cc4e253d3cb2dfe22230a91680958b7c94e5e | ORPH or1k | openocd-0.12.0 | NOK | http://autobuild.buildroot.net/results/7195e8b76350f26ab3b963702d88b254512e6928 | ORPH mips64 | openssh-9.7p1 | NOK | http://autobuild.buildroot.net/results/ed341b0715f15341ef175fffa0bfb7520a8861ab | ORPH mips64 | openssh-9.7p1 | NOK | http://autobuild.buildroot.net/results/1ae665acbc30a161914da81032563ce37333bb11 | ORPH mips64 | openssh-9.7p1 | NOK | http://autobuild.buildroot.net/results/f4b74d023953ea35a43dea0ac7dff024010ce849 | ORPH aarch64 | openvmtools-11.3.5-18557794 | NOK | http://autobuild.buildroot.net/results/a2272452eab8a378b0a3a613de336acf233e2939 | mips64el | oprofile-1.4.0 | NOK | http://autobuild.buildroot.net/results/a9f3e09e6543b3773440c011e93bd41e357691e4 | mips | proj-9.3.0 | NOK | http://autobuild.buildroot.net/results/df4ba7b931a3e4f0717133e88fb60080862b963c | nios2 | python-remi-2022.7.27 | NOK | http://autobuild.buildroot.net/results/da4512c0a8aa5869e1da011579b9ec6a1c4f8425 | nios2 | python-remi-2022.7.27 | NOK | http://autobuild.buildroot.net/results/593ada0385b939b2208a253c77ac7c20c374e33e | arm | qt5webkit-5.212.0-alpha4 | NOK | http://autobuild.buildroot.net/results/c7ca68c1859c4dfbd8d0356b7e85d24a519cd02a | mips64 | sofia-sip-1.13.17 | NOK | http://autobuild.buildroot.net/results/65f5708823d31920a3b16cee6f7956c3c69dac79 | xtensa | stress-ng-0.17.07 | NOK | http://autobuild.buildroot.net/results/d13d20146bf059977d55fad134e79d36bc845339 | s390x | unknown | NOK | http://autobuild.buildroot.net/results/e77787c7cab442774ef85cf2ba05b4f97458e88a | mips64 | unknown | NOK | http://autobuild.buildroot.net/results/f4438327914e71589de9f7ba75c91ceecab56c0b | microblazeel | unknown | NOK | http://autobuild.buildroot.net/results/53bdcb9b3cab1b2fd6571053eab1bf6a413f6156 | arm | unknown | NOK | http://autobuild.buildroot.net/results/8ee65226e1382c04c3d90d7c460af5c53add97fb | riscv32 | unknown | NOK | http://autobuild.buildroot.net/results/96c06b5a5bc436003ed7a9a1e32685787745ab64 | mipsel | unknown | NOK | http://autobuild.buildroot.net/results/a697a57eb7f38856c4b342fa2540529d882bf373 | arceb | unknown | NOK | http://autobuild.buildroot.net/results/ed87605bd407daf77fe59cb0a550cf5a42f46088 | arm | util-linux-2.39.3 | NOK | http://autobuild.buildroot.net/results/c804711462dcf600de7c09e0e70142ac8e6780fd | ORPH powerpc64le | v4l2loopback-0.12.7 | NOK | http://autobuild.buildroot.net/results/45f0e298593f0488d82e140ce2d92a7c4dfeb670 | sparc | zeek-4.1.1 | NOK | http://autobuild.buildroot.net/results/d5700ea3562c9a0c23de1297ab92fa83d681fd2e | Classification of failures by reason for 2024.02.x -------------------------------------------------- libressl-3.8.4 | 2 apcupsd-3.14.14 | 1 dmraid-1.0.0.rc16-3 | 1 glibc-2.38-44-gd37c2b20a478... | 1 mongodb-4.2.18 | 1 openssh-9.7p1 | 1 python-grpcio-1.60.0 | 1 Detail of failures for 2024.02.x -------------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- sparc64 | apcupsd-3.14.14 | NOK | http://autobuild.buildroot.net/results/48749ce9b2193feeb40908132fd5750bbbe3e0bd | x86_64 | dmraid-1.0.0.rc16-3 | NOK | http://autobuild.buildroot.net/results/7762a189548944fb418ec123268fca477a3cf175 | ORPH powerpc64 | glibc-2.38-44-gd37c2b20a478... | NOK | http://autobuild.buildroot.net/results/be8df3bdbb21abd13d576e15f48a098ca6570118 | or1k | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/642a797f11f56f441f663613723f34c36a5ab267 | ORPH s390x | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/7dfd2964237e37f3715c36ec863c6ea3e10ec7a3 | ORPH aarch64 | mongodb-4.2.18 | NOK | http://autobuild.buildroot.net/results/29464b81bdc4b40149f80559b0c964ca4c729942 | mips64el | openssh-9.7p1 | NOK | http://autobuild.buildroot.net/results/4dc7fc5fcc31ff6472a40776f5e092824b910966 | ORPH mips64el | python-grpcio-1.60.0 | NOK | http://autobuild.buildroot.net/results/ed8a5416fc62e58c005454f92f1136a610bc2261 | Gitlab CI results for 2024-05-06 ================================ Detail of runtime-test failures for master ------------------------------------------ runtime-test | link to the job | orph? --------------------------+---------------------------------------------------------------+------ TestDockerCompose | https://gitlab.com/buildroot.org/buildroot/-/jobs/6783811249 | ORPH ...ilp32dMuslBleedingEdge | https://gitlab.com/buildroot.org/buildroot/-/jobs/6783812563 | ORPH ...iscv32ilp32dMuslStable | https://gitlab.com/buildroot.org/buildroot/-/jobs/6783812567 | ORPH TestMender | https://gitlab.com/buildroot.org/buildroot/-/jobs/6783811637 | ORPH TestOci | https://gitlab.com/buildroot.org/buildroot/-/jobs/6783810998 | ORPH TestPerlDBDmysql | https://gitlab.com/buildroot.org/buildroot/-/jobs/6783811699 | ORPH TestPythonPy3Dtschema | https://gitlab.com/buildroot.org/buildroot/-/jobs/6783811842 | ORPH ...honPy3FlaskExpectsJson | https://gitlab.com/buildroot.org/buildroot/-/jobs/6783811860 | ORPH TestPythonPy3MlDtypes | https://gitlab.com/buildroot.org/buildroot/-/jobs/6783811913 | ORPH TestPythonPy3SciPy | https://gitlab.com/buildroot.org/buildroot/-/jobs/6783811967 | ORPH -- http://autobuild.buildroot.net From dm.chestnykh at gmail.com Tue May 7 04:15:48 2024 From: dm.chestnykh at gmail.com (Dmitry Chestnykh) Date: Tue, 7 May 2024 07:15:48 +0300 Subject: [Buildroot] [PATCH v3] configs/qemu_sparc_ss10_defconfig: Re-introduce. Message-ID: <20240507041548.382997-1-dm.chestnykh@gmail.com> - With uClibc-ng-1.0.48 we can restore this config because uClibc-ng was provided the fix for SPARC. - The instructions in board/qemu/sparc-ss10/readme.txt are still valid without any corrections. The system boots properly ang the login prompt appears. Signed-off-by: Dmitry Chestnykh --- v2 -> v3: - The first two patches are merged. - It has been checked and it is written in commit message that the instructions in board/qemu/sparc-ss10/readme.txt don't require changes. - Add myself to DEVELOPERS for board/qemu/sparc-ss10/ and defconfig. --- DEVELOPERS | 4 ++++ configs/qemu_sparc_ss10_defconfig | 28 ++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 configs/qemu_sparc_ss10_defconfig diff --git a/DEVELOPERS b/DEVELOPERS index 1c5ad1e42a..4bd6c58d4a 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -3343,3 +3343,7 @@ F: package/quazip/ F: package/shapelib/ F: package/simple-mail/ F: package/tinc/ + +N: Dmitry Chestnykh +F: board/qemu/sparc-ss10/ +F: configs/qemu_sparc_ss10_defconfig diff --git a/configs/qemu_sparc_ss10_defconfig b/configs/qemu_sparc_ss10_defconfig new file mode 100644 index 0000000000..a8e3df9180 --- /dev/null +++ b/configs/qemu_sparc_ss10_defconfig @@ -0,0 +1,28 @@ +# Architecture +BR2_sparc=y +BR2_sparc_v8=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_AS_KERNEL=y + +# Linux kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.6" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sparc-ss10/linux.config" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y -- 2.45.0 From dannenberg at ti.com Tue May 7 06:17:51 2024 From: dannenberg at ti.com (Andreas Dannenberg) Date: Tue, 7 May 2024 01:17:51 -0500 Subject: [Buildroot] [PATCH RESEND v2 02/11] boot/uboot: bump to version v2024.04 In-Reply-To: <20240506220948.7baeea19@windsurf> References: <20240430-optee-update-v2-0-5bdc2f940db1@ti.com> <20240430-optee-update-v2-2-5bdc2f940db1@ti.com> <20240506085315.lb4frefetaffps6i@dasso> <20240506220948.7baeea19@windsurf> Message-ID: <20240507061751.pzljxk2hd6al5fkj@dasso> Hi Thomas, On Mon, May 06, 2024 at 10:09:48PM +0200, Thomas Petazzoni wrote: > Hello Andreas, > > On Mon, 6 May 2024 03:53:15 -0500 > Andreas Dannenberg via buildroot wrote: > > > Similar to your other patch ("boot/optee-os: bump to release v4.2.0") > > changing the global default will affect other platforms so there's some > > risk for breakage I suppose. Why not keeping those specific changes to > > the AM62/AM64 platforms? > > What Bryan did is totally fine and in line with how we handle things in > Buildroot. For packages that are close the hardware (OP-TEE, TF-A, > U-Boot, Linux), Buildroot offers: > > - Using a "latest" version, which is regularly updated to the latest > upstream version, which means that if you change Buildroot version, > this version changes, like for any other package. > > - Using a "custom" version, which is provided as an URL to a custom > tarball, a tag/commit in a Git repo, etc. In this case, the version > is explicitly specified in the user's .config file, and doesn't > change when Buildroot is updated. > > So, what Bryan did is update the "latest" version, and this is > perfectly correct. > > All our defconfigs use a "custom" version for all of Linux, U-Boot, > OP-TEE, TF-A, specifically to ensure that despite the update in > Buildroot, our defconfig keep on using the versions that were tested by > the developer who submitted the defconfig. Ah, that's the piece I wasn't fully aware of, that all of the defconfigs use a "custom" version, very much limiting the impact of the change here. Thanks for clarifying! Regards, Andreas > Best regards, > > Thomas > -- > Thomas Petazzoni, co-owner and CEO, Bootlin > Embedded Linux and Kernel engineering and training > https://bootlin.com From peter at korsgaard.com Tue May 7 06:29:20 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Tue, 07 May 2024 08:29:20 +0200 Subject: [Buildroot] [PATCH v2 1/2] configs/sheevaplug_defconfig: bump Linux to fix binutils 2.41 build In-Reply-To: <20240506213122.1da7a111@windsurf> (Thomas Petazzoni's message of "Mon, 6 May 2024 21:31:22 +0200") References: <20240506074013.263439-1-peter@korsgaard.com> <20240506213122.1da7a111@windsurf> Message-ID: <87a5l2xhhb.fsf@dell.be.48ers.dk> >>>>> "Thomas" == Thomas Petazzoni writes: Hi, >> Fix the build by bumping the kernel to 4.14.336, which includes commit >> 3ab03df64f77 (ARM: 8933/1: replace Sun/Solaris style flag on section >> directive): >> >> https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-4.14.y&id=3ab03df64f7754728a2257c47775a70a88428331 >> >> Signed-off-by: Peter Korsgaard >> --- >> configs/sheevaplug_defconfig | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) > Series applied. In the second patch you had forgotten (perhaps > intentionally?) to update .checkpackageignore, so I did it while > applying. Ahh, I hadn't seen commit 7931f78c16f08f7 yet, still running a bit behind for 2024.02.x after the holidays. Thanks for fixing it up. -- Bye, Peter Korsgaard From fontaine.fabrice at gmail.com Tue May 7 06:45:20 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Tue, 7 May 2024 08:45:20 +0200 Subject: [Buildroot] [PATCH 1/1] package/libgpiod2: drop host-autoconf-archive dependency Message-ID: <20240507064520.25653-1-fontaine.fabrice@gmail.com> host-autoconf-archive was added to libgpiod in commit 8df6ae3127ccdc0873df2246b32918e846b074c3 because of a patch to configure.ac. It is not needed by libgpiod2 as there is no patch since the addition of the package in commit 57391fad2e619395340b81957ddceab1b1df2e20 Fixes: 57391fad2e619395340b81957ddceab1b1df2e20 Signed-off-by: Fabrice Fontaine --- package/libgpiod2/libgpiod2.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/libgpiod2/libgpiod2.mk b/package/libgpiod2/libgpiod2.mk index 9c478f1ffb..856eb9bd14 100644 --- a/package/libgpiod2/libgpiod2.mk +++ b/package/libgpiod2/libgpiod2.mk @@ -12,7 +12,7 @@ LIBGPIOD2_SITE = https://www.kernel.org/pub/software/libs/libgpiod LIBGPIOD2_LICENSE = LGPL-2.1+ LIBGPIOD2_LICENSE_FILES = COPYING LIBGPIOD2_INSTALL_STAGING = YES -LIBGPIOD2_DEPENDENCIES = host-pkgconf host-autoconf-archive +LIBGPIOD2_DEPENDENCIES = host-pkgconf LIBGPIOD2_CONF_OPTS = \ --disable-bindings-python \ --disable-examples \ -- 2.43.0 From thomas.petazzoni at bootlin.com Tue May 7 07:01:15 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:01:15 +0200 Subject: [Buildroot] [git commit] package/suricata: fix static build Message-ID: <20240507070215.C5CD286988@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=a3ee47ef22f4035d715461e98ff8a2c4f76735ea branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fix the following static build failure raised since bump to version version 6.0.14 in commit ce17f93e828a07292e03653be04a49480250f23f and https://github.com/OISF/suricata/commit/31ba4fd1522dd0d7f933767b9205c67a4e726fe5: configure:22378: checking for pcap_open_dead in -lpcap configure:22407: /home/buildroot/autobuild/run/instance-3/output-1/host/bin/x86_64-linux-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -static -std=c11 -march=native -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -static -rdynamic conftest.c -lpcap -ljansson -lpthread -lyaml -lpcre -latomic -lz >&5 /home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/x86_64-buildroot-linux-musl/12.3.0/../../../../x86_64-buildroot-linux-musl/bin/ld: /home/buildroot/autobuild/run/instance-3/output-1/host/x86_64-buildroot-linux-musl/sysroot/usr/lib/../lib64/libpcap.a(pcap-linux.o): in function `nl80211_init': pcap-linux.c:(.text+0xc34): undefined reference to `nl_socket_alloc' [...] checking for pcap_open_dead in -lpcap... no Fixes: ce17f93e828a07292e03653be04a49480250f23f - http://autobuild.buildroot.org/results/9e25c2508bd4100d2d1d3180e79060d762361213 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- .../0002-configure.ac-fix-static-build.patch | 52 ++++++++++++++++++++++ package/suricata/suricata.mk | 1 + 2 files changed, 53 insertions(+) diff --git a/package/suricata/0002-configure.ac-fix-static-build.patch b/package/suricata/0002-configure.ac-fix-static-build.patch new file mode 100644 index 0000000000..fc5384a114 --- /dev/null +++ b/package/suricata/0002-configure.ac-fix-static-build.patch @@ -0,0 +1,52 @@ +From 6e1d8aceea8c4e49f00d8e630b681641a36c688f Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 6 May 2024 09:31:05 +0200 +Subject: [PATCH] configure.ac: fix static build + +static build is broken since +https://github.com/OISF/suricata/commit/31ba4fd1522dd0d7f933767b9205c67a4e726fe5 +because AC_CHECK_LIB is called before PKG_CHECK_MODULES: + +configure:22378: checking for pcap_open_dead in -lpcap +configure:22407: /home/buildroot/autobuild/run/instance-3/output-1/host/bin/x86_64-linux-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -static -std=c11 -march=native -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -static -rdynamic conftest.c -lpcap -ljansson -lpthread -lyaml -lpcre -latomic -lz >&5 +/home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/x86_64-buildroot-linux-musl/12.3.0/../../../../x86_64-buildroot-linux-musl/bin/ld: /home/buildroot/autobuild/run/instance-3/output-1/host/x86_64-buildroot-linux-musl/sysroot/usr/lib/../lib64/libpcap.a(pcap-linux.o): in function `nl80211_init': +pcap-linux.c:(.text+0xc34): undefined reference to `nl_socket_alloc' + +[...] + +checking for pcap_open_dead in -lpcap... no + +Fixes: + - http://autobuild.buildroot.org/results/9e25c2508bd4100d2d1d3180e79060d762361213 + +Signed-off-by: Fabrice Fontaine +Upstream: https://redmine.openinfosecfoundation.org/issues/7008 +--- + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 232ee9bed..6277cb9b6 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1219,6 +1219,8 @@ + fi + fi + ++ PKG_CHECK_MODULES([PCAP],libpcap,[CPPFLAGS="${CPPFLAGS} ${PCAP_CFLAGS}" LIBS="${LIBS} ${PCAP_LIBS}"],[:]) ++ + if test "$have_wpcap" != "yes"; then + AC_CHECK_LIB(pcap, pcap_open_dead, [], [ + echo +@@ -1234,8 +1236,6 @@ + PCAP_LIB_NAME="pcap" + fi + +- PKG_CHECK_MODULES([PCAP],libpcap,[CPPFLAGS="${CPPFLAGS} ${PCAP_CFLAGS}" LIBS="${LIBS} ${PCAP_LIBS}"],[:]) +- + AC_PATH_PROG(HAVE_PCAP_CONFIG, pcap-config, "no") + if test "$HAVE_PCAP_CONFIG" = "no" -o "$cross_compiling" = "yes"; then + AC_MSG_RESULT(no pcap-config is use) +-- +2.43.0 + diff --git a/package/suricata/suricata.mk b/package/suricata/suricata.mk index 2083e0caba..e60ed2fce8 100644 --- a/package/suricata/suricata.mk +++ b/package/suricata/suricata.mk @@ -10,6 +10,7 @@ SURICATA_LICENSE = GPL-2.0 SURICATA_LICENSE_FILES = COPYING LICENSE SURICATA_CPE_ID_VENDOR = oisf # 0001-configure.ac-allow-the-user-to-override-RUST_TARGET.patch +# 0002-configure.ac-fix-static-build.patch SURICATA_AUTORECONF = YES SURICATA_DEPENDENCIES = \ From thomas.petazzoni at bootlin.com Tue May 7 07:01:53 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:01:53 +0200 Subject: [Buildroot] [git commit] package/openocd: fix build with libgpiod2 Message-ID: <20240507070215.D63CF86989@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=be3252fe01f39f8ac21d611861bd0c5dda58b09f branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master openocd is not compatible with libgpiod2 resulting in the following build failure since the addition of libgpiod2 in commit 57391fad2e619395340b81957ddceab1b1df2e20: src/jtag/drivers/linuxgpiod.c: In function 'helper_get_line': src/jtag/drivers/linuxgpiod.c:283:19: error: 'GPIOD_LINE_REQUEST_DIRECTION_INPUT' undeclared (first use in this function); did you mean 'GPIOD_LINE_DIRECTION_INPUT'? 283 | int dir = GPIOD_LINE_REQUEST_DIRECTION_INPUT, flags = 0, val = 0, retval; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | GPIOD_LINE_DIRECTION_INPUT Fixes: 57391fad2e619395340b81957ddceab1b1df2e20 - http://autobuild.buildroot.org/results/7195e8b76350f26ab3b963702d88b254512e6928 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/openocd/openocd.mk | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/package/openocd/openocd.mk b/package/openocd/openocd.mk index 78c6e10c58..b24d1eacf0 100644 --- a/package/openocd/openocd.mk +++ b/package/openocd/openocd.mk @@ -56,8 +56,14 @@ OPENOCD_DEPENDENCIES = \ $(if $(BR2_PACKAGE_LIBUSB),libusb) \ $(if $(BR2_PACKAGE_LIBUSB_COMPAT),libusb-compat) \ $(if $(BR2_PACKAGE_LIBHID),libhid) \ - $(if $(BR2_PACKAGE_HIDAPI),hidapi) \ - $(if $(BR2_PACKAGE_LIBGPIOD),libgpiod) + $(if $(BR2_PACKAGE_HIDAPI),hidapi) + +ifeq ($(BR2_PACKAGE_LIBGPIOD),y) +OPENOCD_DEPENDENCIES += libgpiod +OPENOCD_CONF_OPTS += --enable-linuxgpiod +else +OPENOCD_CONF_OPTS += --disable-linuxgpiod +endif # Adapters OPENOCD_CONF_OPTS += \ From thomas.petazzoni at bootlin.com Tue May 7 07:02:38 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:02:38 +0200 Subject: [Buildroot] [git commit] package/mdadm: fix uclibc and musl build Message-ID: <20240507071154.4271F869AA@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=e0066bcb851b730f0517b5d5712a9e49b4296c7d branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fix following uclibc build failure raised since bump to version 4.3 in commit 99e9ff08d0705279532ca0cf3de22ea54660cbdc and https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=577fd10486d8d1472a6b559066f344ac30a3a391: Create.c: In function 'write_zeroes_fork': Create.c:155:35: error: 'FALLOC_FL_ZERO_RANGE' undeclared (first use in this function) 155 | if (fallocate(fd, FALLOC_FL_ZERO_RANGE | FALLOC_FL_KEEP_SIZE, | ^~~~~~~~~~~~~~~~~~~~ as well as the following musl build failure: util.c: In function 'get_md_name': util.c:1031:29: error: 'NAME_MAX' undeclared (first use in this function); did you mean 'MD_NAME_MAX'? 1031 | static char devname[NAME_MAX]; | ^~~~~~~~ | MD_NAME_MAX util.c:1031:29: note: each undeclared identifier is reported only once for each function it appears in /home/buildroot/instance-0/output-1/host/bin/x86_64-linux-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -DNO_LIBUDEV -DSendmail=\""/usr/sbin/sendmail -t"\" -DCONFFILE=\"/etc/mdadm.conf\" -DCONFFILE2=\"/etc/mdadm/mdadm.conf\" -DMAP_DIR=\"/run/mdadm\" -DMAP_FILE=\"map\" -DMDMON_DIR=\"/run/mdadm\" -DFAILED_SLOTS_DIR=\"/run/mdadm/failed-slots\" -DNO_COROSYNC -DNO_DLM -DUSE_PTHREADS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DBINDIR=\"/sbin\" -o Monitor.o -c Monitor.c /home/buildroot/instance-0/output-1/host/bin/x86_64-linux-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -DNO_LIBUDEV -DSendmail=\""/usr/sbin/sendmail -t"\" -DCONFFILE=\"/etc/mdadm.conf\" -DCONFFILE2=\"/etc/mdadm/mdadm.conf\" -DMAP_DIR=\"/run/mdadm\" -DMAP_FILE=\"map\" -DMDMON_DIR=\"/run/mdadm\" -DFAILED_SLOTS_DIR=\"/run/mdadm/failed-slots\" -DNO_COROSYNC -DNO_DLM -DUSE_PTHREADS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DBINDIR=\"/sbin\" -o dlink.o -c dlink.c Create.c: In function 'write_zeroes_fork': Create.c:155:35: error: 'FALLOC_FL_ZERO_RANGE' undeclared (first use in this function) 155 | if (fallocate(fd, FALLOC_FL_ZERO_RANGE | FALLOC_FL_KEEP_SIZE, | ^~~~~~~~~~~~~~~~~~~~ Fixes: 99e9ff08d0705279532ca0cf3de22ea54660cbdc - http://autobuild.buildroot.org/results/0e04bcdb591ca5642053e1f7e31384f06581e989 - http://autobuild.buildroot.org/results/c77ee2615e9d473e93d95c778648c7e897b7f234 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- ...-limits-h-include-for-NAME_MAX-definition.patch | 32 +++++++++++++++++ package/mdadm/0003-Create.c-fix-uclibc-build.patch | 42 ++++++++++++++++++++++ 2 files changed, 74 insertions(+) diff --git a/package/mdadm/0002-util-c-add-limits-h-include-for-NAME_MAX-definition.patch b/package/mdadm/0002-util-c-add-limits-h-include-for-NAME_MAX-definition.patch new file mode 100644 index 0000000000..ceaf7f923c --- /dev/null +++ b/package/mdadm/0002-util-c-add-limits-h-include-for-NAME_MAX-definition.patch @@ -0,0 +1,32 @@ +From 8bda86099089b44129ef6206764f9de47a45f0db Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin +Date: Tue, 12 Mar 2024 11:01:50 +0100 +Subject: util.c: add limits.h include for NAME_MAX definition + +Add limits.h include for NAME_MAX definition. + +Signed-off-by: Alexander Kanavin +Signed-off-by: Mariusz Tkaczyk + +Upstream: https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=8bda86099089b44129ef6206764f9de47a45f0db +Signed-off-by: Fabrice Fontaine +--- + util.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/util.c b/util.c +index 05ad3343..49a9c6e2 100644 +--- a/util.c ++++ b/util.c +@@ -36,7 +36,7 @@ + #include + #include + #include +- ++#include + + /* + * following taken from linux/blkpg.h because they aren't +-- +cgit 1.2.3-korg + diff --git a/package/mdadm/0003-Create.c-fix-uclibc-build.patch b/package/mdadm/0003-Create.c-fix-uclibc-build.patch new file mode 100644 index 0000000000..c8399be076 --- /dev/null +++ b/package/mdadm/0003-Create.c-fix-uclibc-build.patch @@ -0,0 +1,42 @@ +From 52bead95d2957437c691891fcdc49bd6afccdd49 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 12 Apr 2024 18:45:13 +0200 +Subject: Create.c: fix uclibc build + +Define FALLOC_FL_ZERO_RANGE if needed as FALLOC_FL_ZERO_RANGE is only +defined for aarch64 on uclibc-ng resulting in the following or1k build +failure since commit 577fd10486d8d1472a6b559066f344ac30a3a391: + +Create.c: In function 'write_zeroes_fork': +Create.c:155:35: error: 'FALLOC_FL_ZERO_RANGE' undeclared (first use in this function) + 155 | if (fallocate(fd, FALLOC_FL_ZERO_RANGE | FALLOC_FL_KEEP_SIZE, + | ^~~~~~~~~~~~~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/0e04bcdb591ca5642053e1f7e31384f06581e989 + +Signed-off-by: Fabrice Fontaine +Signed-off-by: Mariusz Tkaczyk +Upstream: https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=52bead95d2957437c691891fcdc49bd6afccdd49 +--- + Create.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/Create.c b/Create.c +index 4397ff49..d94253b1 100644 +--- a/Create.c ++++ b/Create.c +@@ -32,6 +32,10 @@ + #include + #include + ++#ifndef FALLOC_FL_ZERO_RANGE ++#define FALLOC_FL_ZERO_RANGE 16 ++#endif ++ + static int round_size_and_verify(unsigned long long *size, int chunk) + { + if (*size == 0) +-- +cgit 1.2.3-korg + From thomas.petazzoni at bootlin.com Tue May 7 07:11:40 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:11:40 +0200 Subject: [Buildroot] [git commit] package/libgpiod2: drop host-autoconf-archive dependency Message-ID: <20240507071154.73D1C869AA@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=9b235e3cacb32b002a624cf47fb3393a875df968 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master host-autoconf-archive was added to libgpiod in commit 8df6ae3127ccdc0873df2246b32918e846b074c3 because of a patch to configure.ac. It is not needed by libgpiod2 as there is no patch since the addition of the package in commit 57391fad2e619395340b81957ddceab1b1df2e20 Fixes: 57391fad2e619395340b81957ddceab1b1df2e20 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/libgpiod2/libgpiod2.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/libgpiod2/libgpiod2.mk b/package/libgpiod2/libgpiod2.mk index 9c478f1ffb..856eb9bd14 100644 --- a/package/libgpiod2/libgpiod2.mk +++ b/package/libgpiod2/libgpiod2.mk @@ -12,7 +12,7 @@ LIBGPIOD2_SITE = https://www.kernel.org/pub/software/libs/libgpiod LIBGPIOD2_LICENSE = LGPL-2.1+ LIBGPIOD2_LICENSE_FILES = COPYING LIBGPIOD2_INSTALL_STAGING = YES -LIBGPIOD2_DEPENDENCIES = host-pkgconf host-autoconf-archive +LIBGPIOD2_DEPENDENCIES = host-pkgconf LIBGPIOD2_CONF_OPTS = \ --disable-bindings-python \ --disable-examples \ From thomas.petazzoni at bootlin.com Tue May 7 07:03:17 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:03:17 +0200 Subject: [Buildroot] [git commit] package/python-rpds-py: bump to version 0.18.1 Message-ID: <20240507071154.5667C869B8@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=26b054083d36a0fb16340b10a9df239879a2c573 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master As reported by Antoine Coutant on the Buildroot mailing list [1]: rpds depends on the crate pyo3. This crate uses "std::sync::atomic::AtomicI64" which doesn't exist for 32 bits targets. That leads to an error as reported by Buildroot Gitlab-ci. An issue have been opened on pyo3's github [2]. A fix have been accepted by pyo3 [3] and merged in pyo3 0.20.3 release [4]. This pyo3 0.20.3 uses crate portable-atomic [5] to provide atomic types and compare and swap operations for all targets that can use std. python-rpds-py 0.18.1 is the first release that use pyo3 0.20.3. Before python-rpds-py 0.18.1 release fixing this issue would require that we be able to patch a package during the Cargo vendoring step [6]. [1] http://lists.busybox.net/pipermail/buildroot/2024-February/684867.html [2]: https://github.com/PyO3/pyo3/issues/3614 [3]: https://github.com/PyO3/pyo3/pull/3619 [4]: https://github.com/PyO3/pyo3/blob/v0.20.3/CHANGELOG.md [5]: https://github.com/taiki-e/portable-atomic [6]: http://lists.busybox.net/pipermail/buildroot/2024-February/684886.html Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6783811842 (TestPythonPy3Dtschema) https://gitlab.com/buildroot.org/buildroot/-/jobs/6783811860 (TestPythonPy3FlaskExpectsJson) Reported-by: Antoine Coutant Cc: James Hilliard Signed-off-by: Romain Naour Signed-off-by: Thomas Petazzoni --- package/python-rpds-py/python-rpds-py.hash | 2 +- package/python-rpds-py/python-rpds-py.mk | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/python-rpds-py/python-rpds-py.hash b/package/python-rpds-py/python-rpds-py.hash index 4650d9c385..62b508ae6b 100644 --- a/package/python-rpds-py/python-rpds-py.hash +++ b/package/python-rpds-py/python-rpds-py.hash @@ -1,4 +1,4 @@ # Locally calculated after vendoring -sha256 760b05720269195d86071ac7cf627b3a4ab9366680d8d449a6a63b84d96a5bc0 rpds_py-0.17.1.tar.gz +sha256 d9b542bf5321495737005a78d9fbf40541b898d1e2b3309cbe36a2431977be8b rpds_py-0.18.1.tar.gz # Locally computed sha256 checksums sha256 314e4e91be3baa93c0fb4bccc9e4e97cd643eb839b065af921782c2175fe9909 LICENSE diff --git a/package/python-rpds-py/python-rpds-py.mk b/package/python-rpds-py/python-rpds-py.mk index cee2ff290a..c38f749521 100644 --- a/package/python-rpds-py/python-rpds-py.mk +++ b/package/python-rpds-py/python-rpds-py.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_RPDS_PY_VERSION = 0.17.1 +PYTHON_RPDS_PY_VERSION = 0.18.1 PYTHON_RPDS_PY_SOURCE = rpds_py-$(PYTHON_RPDS_PY_VERSION).tar.gz -PYTHON_RPDS_PY_SITE = https://files.pythonhosted.org/packages/b7/0a/e3bdcc977e6db3bf32a3f42172f583adfa7c3604091a03d512333e0161fe +PYTHON_RPDS_PY_SITE = https://files.pythonhosted.org/packages/2d/aa/e7c404bdee1db7be09860dff423d022ffdce9269ec8e6532cce09ee7beea PYTHON_RPDS_PY_SETUP_TYPE = maturin PYTHON_RPDS_PY_LICENSE = MIT PYTHON_RPDS_PY_LICENSE_FILES = LICENSE From thomas.petazzoni at bootlin.com Tue May 7 07:10:18 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:10:18 +0200 Subject: [Buildroot] [git commit] configs/qemu_sparc_ss10: re-introduce defconfig Message-ID: <20240507071154.65123869B9@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=c3e17c407a39ee4d576540c86b4b3b0549e81136 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master - With uClibc-ng-1.0.48 we can restore this defconfig because uClibc-ng now provides the fix for SPARC. - The instructions in board/qemu/sparc-ss10/readme.txt are still valid without any corrections. The system boots properly ang the login prompt appears. Signed-off-by: Dmitry Chestnykh Signed-off-by: Thomas Petazzoni --- DEVELOPERS | 4 ++++ board/qemu/sparc-ss10/patches/linux/linux.hash | 2 ++ configs/qemu_sparc_ss10_defconfig | 32 ++++++++++++++++++++++++++ 3 files changed, 38 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index 1c5ad1e42a..77971e03db 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -846,6 +846,10 @@ F: package/wolftpm/ N: Dimitrios Siganos F: package/wireless-regdb/ +N: Dmitry Chestnykh +F: board/qemu/sparc-ss10/ +F: configs/qemu_sparc_ss10_defconfig + N: Dominik Faessler F: package/logsurfer/ diff --git a/board/qemu/sparc-ss10/patches/linux/linux.hash b/board/qemu/sparc-ss10/patches/linux/linux.hash new file mode 100644 index 0000000000..762f8575e7 --- /dev/null +++ b/board/qemu/sparc-ss10/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# From https://cdn.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc +sha256 1973e6fc3e8617fc8b0e24b33180449f1a39fa6a607f8dba61cf91b4c5bba466 linux-6.8.6.tar.gz diff --git a/configs/qemu_sparc_ss10_defconfig b/configs/qemu_sparc_ss10_defconfig new file mode 100644 index 0000000000..67d6cf67f6 --- /dev/null +++ b/configs/qemu_sparc_ss10_defconfig @@ -0,0 +1,32 @@ +# Architecture +BR2_sparc=y +BR2_sparc_v8=y + +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/sparc-ss10/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_8=y + +# Linux kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.6" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sparc-ss10/linux.config" + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y From thomas.petazzoni at bootlin.com Tue May 7 07:12:29 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:12:29 +0200 Subject: [Buildroot] [PATCH 1/1] package/suricata: fix static build In-Reply-To: <20240506202304.509499-1-fontaine.fabrice@gmail.com> References: <20240506202304.509499-1-fontaine.fabrice@gmail.com> Message-ID: <20240507091229.11ebe7d4@windsurf> On Mon, 6 May 2024 22:23:04 +0200 Fabrice Fontaine wrote: > Fix the following static build failure raised since bump to version > version 6.0.14 in commit ce17f93e828a07292e03653be04a49480250f23f and > https://github.com/OISF/suricata/commit/31ba4fd1522dd0d7f933767b9205c67a4e726fe5: > > configure:22378: checking for pcap_open_dead in -lpcap > configure:22407: /home/buildroot/autobuild/run/instance-3/output-1/host/bin/x86_64-linux-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -static -std=c11 -march=native -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -static -rdynamic conftest.c -lpcap -ljansson -lpthread -lyaml -lpcre -latomic -lz >&5 > /home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/x86_64-buildroot-linux-musl/12.3.0/../../../../x86_64-buildroot-linux-musl/bin/ld: /home/buildroot/autobuild/run/instance-3/output-1/host/x86_64-buildroot-linux-musl/sysroot/usr/lib/../lib64/libpcap.a(pcap-linux.o): in function `nl80211_init': > pcap-linux.c:(.text+0xc34): undefined reference to `nl_socket_alloc' > > [...] > > checking for pcap_open_dead in -lpcap... no > > Fixes: ce17f93e828a07292e03653be04a49480250f23f > - http://autobuild.buildroot.org/results/9e25c2508bd4100d2d1d3180e79060d762361213 > > Signed-off-by: Fabrice Fontaine > --- > .../0002-configure.ac-fix-static-build.patch | 52 +++++++++++++++++++ > package/suricata/suricata.mk | 1 + > 2 files changed, 53 insertions(+) > create mode 100644 package/suricata/0002-configure.ac-fix-static-build.patch Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Tue May 7 07:12:35 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:12:35 +0200 Subject: [Buildroot] [PATCH 1/1] package/openocd: fix build with libgpiod2 In-Reply-To: <20240506205250.1264901-1-fontaine.fabrice@gmail.com> References: <20240506205250.1264901-1-fontaine.fabrice@gmail.com> Message-ID: <20240507091235.613acaaa@windsurf> On Mon, 6 May 2024 22:52:49 +0200 Fabrice Fontaine wrote: > openocd is not compatible with libgpiod2 resulting in the following > build failure since the addition of libgpiod2 in commit > 57391fad2e619395340b81957ddceab1b1df2e20: > > src/jtag/drivers/linuxgpiod.c: In function 'helper_get_line': > src/jtag/drivers/linuxgpiod.c:283:19: error: 'GPIOD_LINE_REQUEST_DIRECTION_INPUT' undeclared (first use in this function); did you mean 'GPIOD_LINE_DIRECTION_INPUT'? > 283 | int dir = GPIOD_LINE_REQUEST_DIRECTION_INPUT, flags = 0, val = 0, retval; > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > | GPIOD_LINE_DIRECTION_INPUT > > Fixes: 57391fad2e619395340b81957ddceab1b1df2e20 > - http://autobuild.buildroot.org/results/7195e8b76350f26ab3b963702d88b254512e6928 > > Signed-off-by: Fabrice Fontaine > --- > package/openocd/openocd.mk | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Tue May 7 07:12:40 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:12:40 +0200 Subject: [Buildroot] [PATCH 1/1] package/mdadm: fix uclibc and musl build In-Reply-To: <20240506210348.1285002-1-fontaine.fabrice@gmail.com> References: <20240506210348.1285002-1-fontaine.fabrice@gmail.com> Message-ID: <20240507091240.39efce59@windsurf> On Mon, 6 May 2024 23:03:48 +0200 Fabrice Fontaine wrote: > Fix following uclibc build failure raised since bump to version 4.3 in > commit 99e9ff08d0705279532ca0cf3de22ea54660cbdc and > https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=577fd10486d8d1472a6b559066f344ac30a3a391: > > Create.c: In function 'write_zeroes_fork': > Create.c:155:35: error: 'FALLOC_FL_ZERO_RANGE' undeclared (first use in this function) > 155 | if (fallocate(fd, FALLOC_FL_ZERO_RANGE | FALLOC_FL_KEEP_SIZE, > | ^~~~~~~~~~~~~~~~~~~~ > > as well as the following musl build failure: > > util.c: In function 'get_md_name': > util.c:1031:29: error: 'NAME_MAX' undeclared (first use in this function); did you mean 'MD_NAME_MAX'? > 1031 | static char devname[NAME_MAX]; > | ^~~~~~~~ > | MD_NAME_MAX > util.c:1031:29: note: each undeclared identifier is reported only once for each function it appears in > /home/buildroot/instance-0/output-1/host/bin/x86_64-linux-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -DNO_LIBUDEV -DSendmail=\""/usr/sbin/sendmail -t"\" -DCONFFILE=\"/etc/mdadm.conf\" -DCONFFILE2=\"/etc/mdadm/mdadm.conf\" -DMAP_DIR=\"/run/mdadm\" -DMAP_FILE=\"map\" -DMDMON_DIR=\"/run/mdadm\" -DFAILED_SLOTS_DIR=\"/run/mdadm/failed-slots\" -DNO_COROSYNC -DNO_DLM -DUSE_PTHREADS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DBINDIR=\"/sbin\" -o Monitor.o -c Monitor.c > /home/buildroot/instance-0/output-1/host/bin/x86_64-linux-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -DNO_LIBUDEV -DSendmail=\""/usr/sbin/sendmail -t"\" -DCONFFILE=\"/etc/mdadm.conf\" -DCONFFILE2=\"/etc/mdadm/mdadm.conf\" -DMAP_DIR=\"/run/mdadm\" -DMAP_FILE=\"map\" -DMDMON_DIR=\"/run/mdadm\" -DFAILED_SLOTS_DIR=\"/run/mdadm/failed-slots\" -DNO_COROSYNC -DNO_DLM -DUSE_PTHREADS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DBINDIR=\"/sbin\" -o dlink.o -c dlink.c > Create.c: In function 'write_zeroes_fork': > Create.c:155:35: error: 'FALLOC_FL_ZERO_RANGE' undeclared (first use in this function) > 155 | if (fallocate(fd, FALLOC_FL_ZERO_RANGE | FALLOC_FL_KEEP_SIZE, > | ^~~~~~~~~~~~~~~~~~~~ > > Fixes: 99e9ff08d0705279532ca0cf3de22ea54660cbdc > - http://autobuild.buildroot.org/results/0e04bcdb591ca5642053e1f7e31384f06581e989 > - http://autobuild.buildroot.org/results/c77ee2615e9d473e93d95c778648c7e897b7f234 > > Signed-off-by: Fabrice Fontaine > --- > ...ts-h-include-for-NAME_MAX-definition.patch | 32 ++++++++++++++ > .../0003-Create.c-fix-uclibc-build.patch | 42 +++++++++++++++++++ > 2 files changed, 74 insertions(+) > create mode 100644 package/mdadm/0002-util-c-add-limits-h-include-for-NAME_MAX-definition.patch > create mode 100644 package/mdadm/0003-Create.c-fix-uclibc-build.patch Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Tue May 7 07:12:44 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:12:44 +0200 Subject: [Buildroot] [PATCH] package/python-rpds-py: bump to version 0.18.1 In-Reply-To: <20240506213038.418213-1-romain.naour@smile.fr> References: <20240506213038.418213-1-romain.naour@smile.fr> Message-ID: <20240507091244.45d6b5ba@windsurf> On Mon, 6 May 2024 23:30:38 +0200 Romain Naour wrote: > As reported by Antoine Coutant on the Buildroot mailing list [1]: > > rpds depends on the crate pyo3. This crate uses > > "std::sync::atomic::AtomicI64" > > which doesn't exist for 32 bits targets. > That leads to an error as reported by Buildroot Gitlab-ci. > > An issue have been opened on pyo3's github [2]. > A fix have been accepted by pyo3 [3] and merged in pyo3 0.20.3 release > [4]. This pyo3 0.20.3 uses crate portable-atomic [5] to provide atomic > types and compare and swap operations for all targets that can use std. > > python-rpds-py 0.18.1 is the first release that use pyo3 0.20.3. > > Before python-rpds-py 0.18.1 release fixing this issue would require > that we be able to patch a package during the Cargo vendoring step [6]. > > [1] http://lists.busybox.net/pipermail/buildroot/2024-February/684867.html > [2]: https://github.com/PyO3/pyo3/issues/3614 > [3]: https://github.com/PyO3/pyo3/pull/3619 > [4]: https://github.com/PyO3/pyo3/blob/v0.20.3/CHANGELOG.md > [5]: https://github.com/taiki-e/portable-atomic > [6]: http://lists.busybox.net/pipermail/buildroot/2024-February/684886.html > > Fixes: > https://gitlab.com/buildroot.org/buildroot/-/jobs/6783811842 (TestPythonPy3Dtschema) > https://gitlab.com/buildroot.org/buildroot/-/jobs/6783811860 (TestPythonPy3FlaskExpectsJson) > > Reported-by: Antoine Coutant > Cc: James Hilliard > Signed-off-by: Romain Naour > --- > package/python-rpds-py/python-rpds-py.hash | 2 +- > package/python-rpds-py/python-rpds-py.mk | 4 ++-- > 2 files changed, 3 insertions(+), 3 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Tue May 7 07:14:42 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:14:42 +0200 Subject: [Buildroot] [PATCH v3] configs/qemu_sparc_ss10_defconfig: Re-introduce. In-Reply-To: <20240507041548.382997-1-dm.chestnykh@gmail.com> References: <20240507041548.382997-1-dm.chestnykh@gmail.com> Message-ID: <20240507091442.25a27b48@windsurf> Hello Dmitry, Thanks for this new iteration, which I have applied, after doing a few changes, see below. On Tue, 7 May 2024 07:15:48 +0300 Dmitry Chestnykh wrote: > diff --git a/DEVELOPERS b/DEVELOPERS > index 1c5ad1e42a..4bd6c58d4a 100644 > --- a/DEVELOPERS > +++ b/DEVELOPERS > @@ -3343,3 +3343,7 @@ F: package/quazip/ > F: package/shapelib/ > F: package/simple-mail/ > F: package/tinc/ > + > +N: Dmitry Chestnykh This file is alphabetically sorted, by name of developers, so you should have added this entry in the "right" place rather than at the end of the file. I fixed that up. > diff --git a/configs/qemu_sparc_ss10_defconfig b/configs/qemu_sparc_ss10_defconfig > new file mode 100644 > index 0000000000..a8e3df9180 > --- /dev/null > +++ b/configs/qemu_sparc_ss10_defconfig > @@ -0,0 +1,28 @@ > +# Architecture > +BR2_sparc=y > +BR2_sparc_v8=y We now require (since just a week or two) hashes of custom packages to be checked as well, so I added: +# Hashes +BR2_GLOBAL_PATCH_DIR="board/qemu/sparc-ss10/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y as well as a board/qemu/sparc-ss10/patches/linux/linux.hash which contains the hash of the linux 6.8.6 tarball. > +# Linux headers same as kernel > +BR2_PACKAGE_HOST_LINUX_HEADERS_AS_KERNEL=y This should have been: +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_8=y Again: patch applied with those fixes, thanks a lot for your contribution! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Tue May 7 07:48:16 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:48:16 +0200 Subject: [Buildroot] [git commit] package/libusbgx: bump to recent git version Message-ID: <20240507074830.0487686973@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=c6ef948f298dcfe68942787c0ce5040105f65395 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master The current tagged version is more than 6 years old, and no new tags have been made upstream, so let's update to the latest git version. The current version contains many fixes and improvements and supports several new types of USB gadgets. The patch was a backport from upstream, so it can be dropped. Also, upstream has changed from https://github.com/libusbgx/libusbgx to https://github.com/linux-usb-gadgets/libusbgx: the former is a redirect to the latter. Signed-off-by: Alexander Shiyan Signed-off-by: Thomas Petazzoni --- .checkpackageignore | 1 - .../0001-Add-include-of-sys-sysmacro.h.patch | 98 ---------------------- package/libusbgx/Config.in | 2 +- package/libusbgx/libusbgx.hash | 2 +- package/libusbgx/libusbgx.mk | 4 +- 5 files changed, 4 insertions(+), 103 deletions(-) diff --git a/.checkpackageignore b/.checkpackageignore index 2118269003..3be4f6a1df 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -982,7 +982,6 @@ package/libubootenv/0001-src-CMakeLists.txt-do-not-force-the-build-of-a-share.pa package/libuhttpd/0001-add-compatibility-for-wolfssl-5-0.patch lib_patch.Upstream package/libuio/0001-configure.ac-set-automake-strictness-to-foreign.patch lib_patch.Upstream package/liburcu/0001-Only-blacklist-ARM-gcc-4.8.0-and-4.8.1.patch lib_patch.Upstream -package/libusbgx/0001-Add-include-of-sys-sysmacro.h.patch lib_patch.Upstream package/libvpx/0001-vpx_mem-vpx_mem.h-Fix-compilation-with-uClibc.patch lib_patch.Upstream package/libwebsock/0001-Switch-to-use-pkg-config-to-detect-libevent-and-open.patch lib_patch.Upstream package/libwebsock/0002-fix-ssl.patch lib_patch.Upstream diff --git a/package/libusbgx/0001-Add-include-of-sys-sysmacro.h.patch b/package/libusbgx/0001-Add-include-of-sys-sysmacro.h.patch deleted file mode 100644 index 0f47454f7a..0000000000 --- a/package/libusbgx/0001-Add-include-of-sys-sysmacro.h.patch +++ /dev/null @@ -1,98 +0,0 @@ -From 45c14ef4d5d7ced0fbf984208de44ced6d5ed898 Mon Sep 17 00:00:00 2001 -From: Gwenhael Goavec-Merou -Date: Mon, 10 Sep 2018 15:52:09 +0200 -Subject: [PATCH] libusbgx: fix build with glibc-2.28 since - is no more included by - -Since https://sourceware.org/ml/libc-alpha/2015-11/msg00253.html sys/sysmacros.h -must be explicitly included. -Without sys/sysmacros.h and with glibc-2.28 build fails with error like: -src/.libs/libusbgx.so: undefined reference to minor' src/.libs/libusbgx.so: undefined reference tomajor' -src/.libs/libusbgx.so: undefined reference to `makedev' - -Signed-off-by: Sid Spry -Signed-off-by: Gwenhael Goavec-Merou ---- - examples/gadget-acm-ecm.c | 1 + - examples/gadget-import.c | 1 + - examples/gadget-ms.c | 1 + - examples/show-gadgets.c | 1 + - examples/show-udcs.c | 1 + - include/usbg/usbg_internal_libconfig.h | 1 + - 6 files changed, 6 insertions(+) - -diff --git a/examples/gadget-acm-ecm.c b/examples/gadget-acm-ecm.c -index 1c5e2ca..29360da 100644 ---- a/examples/gadget-acm-ecm.c -+++ b/examples/gadget-acm-ecm.c -@@ -20,6 +20,7 @@ - - #include - #include -+#include - #include - #include - -diff --git a/examples/gadget-import.c b/examples/gadget-import.c -index e684fdb..63df449 100644 ---- a/examples/gadget-import.c -+++ b/examples/gadget-import.c -@@ -25,6 +25,7 @@ - #include - #include - #include -+#include - #include - - int main(int argc, char **argv) -diff --git a/examples/gadget-ms.c b/examples/gadget-ms.c -index 478c370..a5c6681 100644 ---- a/examples/gadget-ms.c -+++ b/examples/gadget-ms.c -@@ -23,6 +23,7 @@ - - #include - #include -+#include - #include - #include - #include -diff --git a/examples/show-gadgets.c b/examples/show-gadgets.c -index 707d448..a2a21c8 100644 ---- a/examples/show-gadgets.c -+++ b/examples/show-gadgets.c -@@ -21,6 +21,7 @@ - #include - #include - #include -+#include - #include - #include - #include -diff --git a/examples/show-udcs.c b/examples/show-udcs.c -index 66e950f..2f5cc45 100644 ---- a/examples/show-udcs.c -+++ b/examples/show-udcs.c -@@ -23,6 +23,7 @@ - - #include - #include -+#include - #include - - int main(void) -diff --git a/include/usbg/usbg_internal_libconfig.h b/include/usbg/usbg_internal_libconfig.h -index ac51758..3fa55c0 100644 ---- a/include/usbg/usbg_internal_libconfig.h -+++ b/include/usbg/usbg_internal_libconfig.h -@@ -12,6 +12,7 @@ - #ifndef USBG_INTERNAL_LIBCONFIG_H - #define USBG_INTERNAL_LIBCONFIG_H - -+#include - #include - #ifdef __cplusplus - extern "C" { --- -2.16.4 - diff --git a/package/libusbgx/Config.in b/package/libusbgx/Config.in index fcebf3cfaa..09a2b8f15e 100644 --- a/package/libusbgx/Config.in +++ b/package/libusbgx/Config.in @@ -6,7 +6,7 @@ config BR2_PACKAGE_LIBUSBGX libusbgx is a C library encapsulating the kernel USB gadget-configfs userspace API functionality. - https://github.com/libusbgx/libusbgx + https://github.com/linux-usb-gadgets/libusbgx comment "libusbgx needs a toolchain w/ threads" depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/libusbgx/libusbgx.hash b/package/libusbgx/libusbgx.hash index dd43ec7b97..b18258978f 100644 --- a/package/libusbgx/libusbgx.hash +++ b/package/libusbgx/libusbgx.hash @@ -1,4 +1,4 @@ # Locally computed: -sha256 b15abc89a0ef82c6a650cc1d58b5ba50f7ce076db392add84caabcd86c608ee2 libusbgx-0.2.0.tar.gz +sha256 d0b483d8b190a75a1f9b52d6db229de5580c78b201077361a524cf32c5aad517 libusbgx-a5bfa81017a9b2064bc449cf74f5f9d106445f62.tar.gz sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LGPL diff --git a/package/libusbgx/libusbgx.mk b/package/libusbgx/libusbgx.mk index 516ad25970..03e8dff6bb 100644 --- a/package/libusbgx/libusbgx.mk +++ b/package/libusbgx/libusbgx.mk @@ -4,8 +4,8 @@ # ################################################################################ -LIBUSBGX_VERSION = 0.2.0 -LIBUSBGX_SITE = $(call github,libusbgx,libusbgx,libusbgx-v$(LIBUSBGX_VERSION)) +LIBUSBGX_VERSION = a5bfa81017a9b2064bc449cf74f5f9d106445f62 +LIBUSBGX_SITE = $(call github,linux-usb-gadgets,libusbgx,$(LIBUSBGX_VERSION)) LIBUSBGX_LICENSE = GPL-2.0+ (examples), LGPL-2.1+ (library) LIBUSBGX_LICENSE_FILES = COPYING COPYING.LGPL LIBUSBGX_DEPENDENCIES = host-pkgconf libconfig From thomas.petazzoni at bootlin.com Tue May 7 07:50:50 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:50:50 +0200 Subject: [Buildroot] [PATCH] libusbgx: Update package from git In-Reply-To: <20240419061241.116608-1-eagle.alexander923@gmail.com> References: <20240419061241.116608-1-eagle.alexander923@gmail.com> Message-ID: <20240507095050.0db0e77c@windsurf> Hello Alexander, On Fri, 19 Apr 2024 09:12:41 +0300 Alexander Shiyan wrote: > The current version is more than 6 years old. Update to the latest git > version. > The current version contains many fixes and improvements and supports > several new types of USB gadgets. > > Signed-off-by: Alexander Shiyan Thanks for your patch. I have applied it, but after fixing a number of small things. First, the commit title should have been: package/libusbgx: bump to recent git version i.e, "package/libusbgx" as prefix, no capital letter when starting the title. > .../0001-Add-include-of-sys-sysmacro.h.patch | 98 ------------------- The removal of this patch should have been explained in the commit log, and also the .checkpackageignore file in Buildroot should have been updated with the removal of this patch. > -LIBUSBGX_VERSION = 0.2.0 > -LIBUSBGX_SITE = $(call github,libusbgx,libusbgx,libusbgx-v$(LIBUSBGX_VERSION)) > +LIBUSBGX_VERSION = a5bfa81017a9b2064bc449cf74f5f9d106445f62 > +LIBUSBGX_SITE = https://github.com/linux-usb-gadgets/libusbgx.git The change from https://github.com/libusbgx -> https://github.com/linux-usb-gadgets should have been explained in the commit log, and the Config.in file should have been updated as well. Also, there was not really any reason to switch to the git SITE_METHOD: you can use $(call github,...) also with an arbitrary commit like this. As said above: I fixed all those minor details when applying, and pushed to master. Thanks a lot for your contribution! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Tue May 7 07:51:03 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 09:51:03 +0200 Subject: [Buildroot] [git commit] package/batctl: update to 2023.1 to match batman-adv Message-ID: <20240507080516.03A0086920@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=818b6270a845df43d03d85622d4dfc1d48248bf6 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Although the kernel interface has not changed, it is convenient to have the batctl match the batman-adv version. So, bump the package to match 01ec4a39f5ceb83c62b0040067ba53197a0a6843 batman-adv bump. Signed-off-by: Charles Hardin Signed-off-by: Thomas Petazzoni --- package/batctl/batctl.hash | 6 +++--- package/batctl/batctl.mk | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/batctl/batctl.hash b/package/batctl/batctl.hash index 56bea3c5da..7bc6fee67f 100644 --- a/package/batctl/batctl.hash +++ b/package/batctl/batctl.hash @@ -1,6 +1,6 @@ -# From https://downloads.open-mesh.org/batman/releases/batman-adv-2021.0/batctl-2021.0.tar.gz.sha1 -sha1 87d0bb34950cb70578a0ca5ce706513a8279a01c batctl-2021.0.tar.gz +# From https://downloads.open-mesh.org/batman/releases/batman-adv-2023.1/batctl-2023.1.tar.gz.sha1 +sha1 8d899c6323e228b9b370caf28e6d67621cb7d35d batctl-2023.1.tar.gz # Locally calculated -sha256 9cec8bf1952f885192749a9dc0318a54633b717aaf05c438d504efd83f5201e4 batctl-2021.0.tar.gz +sha256 e5bf47305d955abb199244bd0e5fffab96108b1affabd0d9705533f8059395f1 batctl-2023.1.tar.gz sha256 cecbf53d1148e13256ac29f8b900655b7fc8dc12d59939a95bc2323ea1747025 LICENSES/preferred/GPL-2.0 sha256 323c587d0ccf10e376f8bf9a7f31fb4ca6078105194b42e0b1e0ee2bc9bde71f LICENSES/preferred/MIT diff --git a/package/batctl/batctl.mk b/package/batctl/batctl.mk index 8ff591844d..197e4beb72 100644 --- a/package/batctl/batctl.mk +++ b/package/batctl/batctl.mk @@ -4,7 +4,7 @@ # ################################################################################ -BATCTL_VERSION = 2021.0 +BATCTL_VERSION = 2023.1 BATCTL_SITE = http://downloads.open-mesh.org/batman/releases/batman-adv-$(BATCTL_VERSION) BATCTL_LICENSE = GPL-2.0, MIT (batman_adv.h, list.h) BATCTL_LICENSE_FILES = LICENSES/preferred/GPL-2.0 LICENSES/preferred/MIT From thomas.petazzoni at bootlin.com Tue May 7 08:05:20 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 7 May 2024 10:05:20 +0200 Subject: [Buildroot] [PATCH 1/1] package/batctl: update to 2023.1 to match batman-adv In-Reply-To: <20240417181322.36344-1-ckhardin@gmail.com> References: <20240417181322.36344-1-ckhardin@gmail.com> Message-ID: <20240507100520.5666eeb9@windsurf> On Wed, 17 Apr 2024 11:13:21 -0700 Charles Hardin wrote: > Although the kernel interface has not changed, it is convenient to > have the batctl match the batman-adv version. So, bump the package > to match 01ec4a39f5ceb83c62b0040067ba53197a0a6843 batman-adv bump. > > Signed-off-by: Charles Hardin > --- > package/batctl/batctl.hash | 6 +++--- > package/batctl/batctl.mk | 2 +- > 2 files changed, 4 insertions(+), 4 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From peter at korsgaard.com Tue May 7 08:44:51 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Tue, 07 May 2024 10:44:51 +0200 Subject: [Buildroot] Buildroot 2024.02.2 released Message-ID: <874jbaxb7g.fsf@dell.be.48ers.dk> Hi, Buildroot is a simple tool for creating complete embedded Linux systems (http://buildroot.org). Buildroot 2024.02.2 is released - Go download it at: http://buildroot.org/downloads/buildroot-2024.02.2.tar.gz or http://buildroot.org/downloads/buildroot-2024.02.2.tar.xz Or get it from Git: git://git.buildroot.org/buildroot Buildroot 2024.02.2 is a bugfix release on the current long term release, fixing a number of important / security related issues discovered since the 2024.02 .1release. - Security: The /dev/shm entry in the default /etc/fstab used for busybox and sysv init systems was missing the sticky bit, allowing users to delete and replace other users files. https://nvd.nist.gov/vuln/detail/CVE-2024-34455 - Security fixes for apache, botan, docker-engine, go, libcurl, mbedtls, skeleton-init-sysv, wolfssl - Fixes for download/compilation/runtime/license issues in brcmfmac_sdio-firmware-rpi, clamav, cmake, containerd, crucible, dmenu-wayland, dmraid, docker-cli, domoticz, fmc, freeipmi, gdal, gdb, giflib, gnupg2, google-breakpad, googlefontdirectory, imx-gpu-viv, inih, libassuan, libblockdev, libdrm, libgpg-error, libksba, libnpth, libressl, libtracefs, lxc, mesa3d, oatpp, opensc, oprofile, perl-net-ssleay, petitboot, php-xdebug, psplash, python-pypng, python-segno, python-service-identity, python3, systemd, tcf-agent, tiff, uuu, xmrig, zic For more details, see the CHANGES file: https://git.buildroot.net/buildroot/plain/CHANGES?id=2024.02.2 Users of the affected packages are strongly encouraged to upgrade. Many thanks to all the people contributing to this release: git shortlog -sn 2024.02.1.. 25 Fabrice Fontaine 6 Francois Perrad 6 Romain Naour 4 Bernd Kuhls 4 Christian Stewart 4 Peter Korsgaard 4 Yann E. MORIN 3 Julien Olivain 2 Christian Hitz 2 Giulio Benetti 2 Sen Hastings 2 Thomas Petazzoni 1 Andreas Naumann 1 Ben Hutchings 1 Dario Binacchi 1 David Gouarin 1 Fabio Estevam 1 Francois Dugast 1 Heiko Thiery 1 Laurent Vivier 1 Marcus Hoffmann 1 Nisarg Jhaveri 1 Norbert Lange 1 Peter Seiderer 1 Petr Vorel 1 Rapha?l M?lotte 1 Thomas De Schampheleire 1 Vincent Fazio 1 Wojciech Nizinski -- Bye, Peter Korsgaard From peter at korsgaard.com Tue May 7 08:49:03 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Tue, 7 May 2024 10:49:03 +0200 Subject: [Buildroot] [git commit] Update for 2024.02.2 Message-ID: <20240507085144.CCA0086A0C@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=b34fa00d85df2b8905d0edd60a2d3863815b1a71 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Peter Korsgaard (cherry picked from commit 0155095c558e915d6c5261a4d8cb4ec9ee9953a7) [Peter: drop Makefile change] Signed-off-by: Peter Korsgaard --- CHANGES | 28 ++++++++++++++++++++++++++++ support/misc/Vagrantfile | 2 +- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 4b0cc08244..13ac108549 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,31 @@ +2024.02.2, released May 7th, 2024 + + Important / security related fixes. + + Security: The /dev/shm entry in the default /etc/fstab used + for busybox and sysv init systems was missing the sticky bit, + allowing users to delete and replace other users files. + + Defconfigs: Mangopi mq1rdw1: Lock kernel headers to 6.6.x. + + Updated/fixed packages: apache, botan, + brcmfmac_sdio-firmware-rpi, clamav, cmake, containerd, + crucible, dmenu-wayland, dmraid, docker-cli, docker-engine, + domoticz, fmc, freeipmi, gdal, gdb, giflib, gnupg2, go, + google-breakpad, googlefontdirectory, imx-gpu-viv, inih, + libassuan, libblockdev, libcurl, libdrm, libgpg-error, + libksba, libnpth, libressl, libtracefs, lxc, mbedtls, mesa3d, + oatpp, opensc, oprofile, perl-net-ssleay, petitboot, + php-xdebug, psplash, python-pypng, python-segno, + python-service-identity, python3, skeleton-init-sysv, systemd, + tcf-agent, tiff, uuu, wolfssl, xmrig, zic + + Issues resolved (http://bugs.uclibc.org): + + #14416: Mesa3D missing DRI3 support for various Gallium drivers + #16009: 'select' does not work with 'choice' + #16036: android-tools version is too old + 2024.02.1, released March 26th, 2024 Important / security related fixes. diff --git a/support/misc/Vagrantfile b/support/misc/Vagrantfile index cb7a81af6e..ac595f5749 100644 --- a/support/misc/Vagrantfile +++ b/support/misc/Vagrantfile @@ -5,7 +5,7 @@ ################################################################################ # Buildroot version to use -RELEASE='2024.02.1' +RELEASE='2024.02.2' ### Change here for more memory/cores ### VM_MEMORY=2048 From peter at korsgaard.com Tue May 7 08:51:08 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Tue, 7 May 2024 10:51:08 +0200 Subject: [Buildroot] [git commit] docs/website: Update for 2024.02.2 Message-ID: <20240507085144.E08458455F@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=2e07cd5a1bc7f2b2d2db9702eca159729232b839 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Peter Korsgaard --- docs/website/download.html | 18 +++++++++--------- docs/website/news.html | 19 +++++++++++++++++++ 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/docs/website/download.html b/docs/website/download.html index 559d396ed2..cc83d42a9f 100644 --- a/docs/website/download.html +++ b/docs/website/download.html @@ -8,37 +8,37 @@
Download
-

Latest stable / long term support release: 2024.02.1

+

Latest stable / long term support release: 2024.02.2

BR2_VERSION_FULL BR2_HOSTARCH --> HOSTARCH BR2_SKIP_LEGACY --> SKIP_LEGACY BR2_BASE_DIR --> BASE_DIR BR2_HOST_GCC_VERSION --> HOST_GCC_VERSION BR2_DEFCONFIG_FROM_ENV --> BR2_DEFCONFIG [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=104daea149c45cc84842ce77a9bd6436d19f3dd8 Signed-off-by: Peter Seiderer --- Changes v1 -> v2: - moved escape fixes to extra/preliminary patch Notes/ToDo: - take a look at BR2_HOSTARCH usage in utils/checksymbolslib/br.py - take a look at BR2_BASE_DIR usage in utils/checksymbolslib/br.py and utils/checksymbolslib/test_kconfig.py --- Config.in | 45 +++++-------------- Config.in.legacy | 6 +-- boot/arm-trusted-firmware/Config.in | 2 +- boot/beaglev-ddrinit/Config.in | 2 +- boot/beaglev-secondboot/Config.in | 2 +- boot/s500-bootloader/Config.in | 2 +- linux/Config.ext.in | 2 +- package/amlogic-boot-fip/Config.in.host | 2 +- package/erlang/Config.in | 6 +-- package/flutter-sdk-bin/Config.in.host | 2 +- package/go-bootstrap-stage1/Config.in.host | 6 +-- package/google-breakpad/Config.in.host | 12 ++--- package/jpeg/Config.in | 2 +- package/kvm-unit-tests/Config.in | 2 +- package/luajit/Config.in | 4 +- package/mono/Config.in | 4 +- package/nodejs/Config.in.host | 8 ++-- package/openjdk/Config.in | 4 +- package/openssl/Config.in | 2 +- package/protobuf/Config.in | 22 ++++----- package/qt5/qt5webengine/Config.in | 2 +- package/rustc/Config.in.host | 16 +++---- package/sam-ba/Config.in.host | 2 +- package/supertuxkart/Config.in | 4 +- package/ti-cgt-pru/Config.in.host | 2 +- package/ti-gfx/Config.in | 2 +- package/wine/Config.in | 6 +-- system/Config.in | 4 +- toolchain/toolchain-external/Config.in | 2 +- .../Config.in | 2 +- .../toolchain-external-arm-aarch64/Config.in | 2 +- .../toolchain-external-arm-arm/Config.in | 2 +- .../toolchain-external-bootlin/Config.in | 2 +- .../Config.in | 2 +- .../Config.in | 2 +- .../Config.in | 2 +- .../toolchain-external-linaro-arm/Config.in | 2 +- .../toolchain-external-linaro-armeb/Config.in | 2 +- .../toolchain-external-synopsys-arc/Config.in | 2 +- 39 files changed, 86 insertions(+), 111 deletions(-) diff --git a/Config.in b/Config.in index 035900c971..1d35d6e50e 100644 --- a/Config.in +++ b/Config.in @@ -1,68 +1,51 @@ # -mainmenu "Buildroot $BR2_VERSION Configuration" +mainmenu "Buildroot $(BR2_VERSION_FULL) Configuration" config BR2_HAVE_DOT_CONFIG bool default y -config BR2_VERSION - string - option env="BR2_VERSION_FULL" - -config BR2_HOSTARCH - string - option env="HOSTARCH" - -config BR2_BASE_DIR - string - option env="BASE_DIR" - # br2-external paths definitions -source "$BR2_BASE_DIR/.br2-external.in.paths" - -# Hidden config symbols for packages to check system gcc version -config BR2_HOST_GCC_VERSION - string - option env="HOST_GCC_VERSION" +source "$(BASE_DIR)/.br2-external.in.paths" config BR2_HOST_GCC_AT_LEAST_4_9 bool - default y if BR2_HOST_GCC_VERSION = "4 9" + default y if "$(HOST_GCC_VERSION)" = "4 9" config BR2_HOST_GCC_AT_LEAST_5 bool - default y if BR2_HOST_GCC_VERSION = "5" + default y if "$(HOST_GCC_VERSION)" = "5" select BR2_HOST_GCC_AT_LEAST_4_9 config BR2_HOST_GCC_AT_LEAST_6 bool - default y if BR2_HOST_GCC_VERSION = "6" + default y if "$(HOST_GCC_VERSION)" = "6" select BR2_HOST_GCC_AT_LEAST_5 config BR2_HOST_GCC_AT_LEAST_7 bool - default y if BR2_HOST_GCC_VERSION = "7" + default y if "$(HOST_GCC_VERSION)" = "7" select BR2_HOST_GCC_AT_LEAST_6 config BR2_HOST_GCC_AT_LEAST_8 bool - default y if BR2_HOST_GCC_VERSION = "8" + default y if "$(HOST_GCC_VERSION)" = "8" select BR2_HOST_GCC_AT_LEAST_7 config BR2_HOST_GCC_AT_LEAST_9 bool - default y if BR2_HOST_GCC_VERSION = "9" + default y if "$(HOST_GCC_VERSION)" = "9" select BR2_HOST_GCC_AT_LEAST_8 config BR2_HOST_GCC_AT_LEAST_10 bool - default y if BR2_HOST_GCC_VERSION = "10" + default y if "$(HOST_GCC_VERSION)" = "10" select BR2_HOST_GCC_AT_LEAST_9 config BR2_HOST_GCC_AT_LEAST_11 bool - default y if BR2_HOST_GCC_VERSION = "11" + default y if "$(HOST_GCC_VERSION)" = "11" select BR2_HOST_GCC_AT_LEAST_10 # When adding new entries above, be sure to update @@ -183,13 +166,9 @@ config BR2_TAR_OPTIONS endmenu -config BR2_DEFCONFIG_FROM_ENV - string - option env="BR2_DEFCONFIG" - config BR2_DEFCONFIG string "Location to save buildroot config" - default BR2_DEFCONFIG_FROM_ENV if BR2_DEFCONFIG_FROM_ENV != "" + default "$(BR2_DEFCONFIG)" if "$(BR2_DEFCONFIG)" != "" default "$(CONFIG_DIR)/defconfig" help When running 'make savedefconfig', the defconfig file will be @@ -988,4 +967,4 @@ source "package/Config.in.host" source "Config.in.legacy" # br2-external menus definitions -source "$BR2_BASE_DIR/.br2-external.in.menus" +source "$(BASE_DIR)/.br2-external.in.menus" diff --git a/Config.in.legacy b/Config.in.legacy index 46f7a304cb..c8d916e1fc 100644 --- a/Config.in.legacy +++ b/Config.in.legacy @@ -90,11 +90,7 @@ # # [End of example] -config BR2_SKIP_LEGACY - bool - option env="SKIP_LEGACY" - -if !BR2_SKIP_LEGACY +if "$(SKIP_LEGACY)" = "" config BR2_LEGACY bool diff --git a/boot/arm-trusted-firmware/Config.in b/boot/arm-trusted-firmware/Config.in index 2fe3dd1146..6cf8e88929 100644 --- a/boot/arm-trusted-firmware/Config.in +++ b/boot/arm-trusted-firmware/Config.in @@ -243,7 +243,7 @@ config BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_DTC config BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_ARM32_TOOLCHAIN bool "Needs arm-none-eabi toolchain" depends on BR2_aarch64 - depends on BR2_HOSTARCH = "x86_64" + depends on "$(HOSTARCH)" = "x86_64" help Select this option if your ATF board configuration requires an ARM32 bare metal toolchain to be available. diff --git a/boot/beaglev-ddrinit/Config.in b/boot/beaglev-ddrinit/Config.in index 7ca92a7b9b..585b2ba7be 100644 --- a/boot/beaglev-ddrinit/Config.in +++ b/boot/beaglev-ddrinit/Config.in @@ -1,7 +1,7 @@ config BR2_TARGET_BEAGLEV_DDRINIT bool "beaglev-ddrinit" depends on BR2_riscv - depends on BR2_HOSTARCH = "x86_64" # host-riscv64-elf-toolchain + depends on "$(HOSTARCH)" = "x86_64" # host-riscv64-elf-toolchain help This package builds the DDRinit firmware used on the BeagleV platform. diff --git a/boot/beaglev-secondboot/Config.in b/boot/beaglev-secondboot/Config.in index a9695fc138..0616efb0c5 100644 --- a/boot/beaglev-secondboot/Config.in +++ b/boot/beaglev-secondboot/Config.in @@ -1,7 +1,7 @@ config BR2_TARGET_BEAGLEV_SECONDBOOT bool "beaglev-secondboot" depends on BR2_riscv - depends on BR2_HOSTARCH = "x86_64" # host-riscv64-elf-toolchain + depends on "$(HOSTARCH)" = "x86_64" # host-riscv64-elf-toolchain help This package builds the SecondBoot firmware used on the BeagleV platform. diff --git a/boot/s500-bootloader/Config.in b/boot/s500-bootloader/Config.in index 7bb689f305..a7d85214d4 100644 --- a/boot/s500-bootloader/Config.in +++ b/boot/s500-bootloader/Config.in @@ -1,7 +1,7 @@ config BR2_TARGET_S500_BOOTLOADER bool "s500-bootloader" depends on BR2_arm - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86" select BR2_HOSTARCH_NEEDS_IA32_LIBS help 1st level bootloader for Actions Semiconductor S500 SoC. diff --git a/linux/Config.ext.in b/linux/Config.ext.in index 3cbf42d344..301f1e642c 100644 --- a/linux/Config.ext.in +++ b/linux/Config.ext.in @@ -149,6 +149,6 @@ config BR2_LINUX_KERNEL_EXT_AUFS_VERSION endif # aufs # kernel extensions from br2-external trees, if any -source "$BR2_BASE_DIR/.br2-external.in.linux" +source "$(BASE_DIR)/.br2-external.in.linux" endmenu diff --git a/package/amlogic-boot-fip/Config.in.host b/package/amlogic-boot-fip/Config.in.host index bccc6296d1..54f4075f27 100644 --- a/package/amlogic-boot-fip/Config.in.host +++ b/package/amlogic-boot-fip/Config.in.host @@ -1,6 +1,6 @@ config BR2_PACKAGE_HOST_AMLOGIC_BOOT_FIP bool "host amlogic-boot-fip" - depends on BR2_HOSTARCH = "x86_64" + depends on "$(HOSTARCH)" = "x86_64" help Firmware Image Package (FIP) sources used to sign Amlogic u-boot binaries in LibreELEC images diff --git a/package/erlang/Config.in b/package/erlang/Config.in index 724f91123b..f3830cefad 100644 --- a/package/erlang/Config.in +++ b/package/erlang/Config.in @@ -1,8 +1,8 @@ config BR2_PACKAGE_HOST_ERLANG_ARCH_SUPPORTS bool - default y if BR2_HOSTARCH = "aarch64" - default y if BR2_HOSTARCH = "x86_64" - default y if BR2_HOSTARCH = "x86" + default y if "$(HOSTARCH)" = "aarch64" + default y if "$(HOSTARCH)" = "x86_64" + default y if "$(HOSTARCH)" = "x86" config BR2_PACKAGE_ERLANG_ARCH_SUPPORTS bool diff --git a/package/flutter-sdk-bin/Config.in.host b/package/flutter-sdk-bin/Config.in.host index 181a2ee6e5..c1c97e2ca8 100644 --- a/package/flutter-sdk-bin/Config.in.host +++ b/package/flutter-sdk-bin/Config.in.host @@ -1,6 +1,6 @@ config BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS bool - default y if BR2_HOSTARCH = "x86_64" + default y if "$(HOSTARCH)" = "x86_64" config BR2_PACKAGE_HOST_FLUTTER_SDK_BIN bool "host flutter-sdk-bin" diff --git a/package/go-bootstrap-stage1/Config.in.host b/package/go-bootstrap-stage1/Config.in.host index 56a743caf9..50caad0a8b 100644 --- a/package/go-bootstrap-stage1/Config.in.host +++ b/package/go-bootstrap-stage1/Config.in.host @@ -1,6 +1,6 @@ config BR2_PACKAGE_HOST_GO_BOOTSTRAP_STAGE1_ARCH_SUPPORTS bool # See src/cmd/dist/unix.c for the list of supported architectures - default y if BR2_HOSTARCH = "x86" - default y if BR2_HOSTARCH = "x86_64" - default y if BR2_HOSTARCH = "arm" + default y if "$(HOSTARCH)" = "x86" + default y if "$(HOSTARCH)" = "x86_64" + default y if "$(HOSTARCH)" = "arm" diff --git a/package/google-breakpad/Config.in.host b/package/google-breakpad/Config.in.host index 28d304766a..84e95957b2 100644 --- a/package/google-breakpad/Config.in.host +++ b/package/google-breakpad/Config.in.host @@ -1,8 +1,8 @@ config BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS bool - default y if BR2_HOSTARCH = "x86_64" - default y if BR2_HOSTARCH = "x86" - default y if BR2_HOSTARCH = "arm" - default y if BR2_HOSTARCH = "aarch64" - default y if BR2_HOSTARCH = "mips" - default y if BR2_HOSTARCH = "mipsel" + default y if "$(HOSTARCH)" = "x86_64" + default y if "$(HOSTARCH)" = "x86" + default y if "$(HOSTARCH)" = "arm" + default y if "$(HOSTARCH)" = "aarch64" + default y if "$(HOSTARCH)" = "mips" + default y if "$(HOSTARCH)" = "mipsel" diff --git a/package/jpeg/Config.in b/package/jpeg/Config.in index 371f89aa49..0a7e01d28b 100644 --- a/package/jpeg/Config.in +++ b/package/jpeg/Config.in @@ -40,7 +40,7 @@ config BR2_PACKAGE_JPEG_TURBO http://www.libjpeg-turbo.org # libjpeg from br2-external trees, if any -source "$BR2_BASE_DIR/.br2-external.in.jpeg" +source "$(BASE_DIR)/.br2-external.in.jpeg" endchoice diff --git a/package/kvm-unit-tests/Config.in b/package/kvm-unit-tests/Config.in index 02ea8dd58c..c99bad8fd5 100644 --- a/package/kvm-unit-tests/Config.in +++ b/package/kvm-unit-tests/Config.in @@ -19,7 +19,7 @@ config BR2_PACKAGE_KVM_UNIT_TESTS # gcc 4.5 at least. on i386, we use the target gcc, while on # x86-64 we use the host gcc (see .mk file for details) depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 || !BR2_i386 - depends on BR2_HOSTARCH = "x86_64" || !BR2_x86_64 + depends on "$(HOSTARCH)" = "x86_64" || !BR2_x86_64 select BR2_HOSTARCH_NEEDS_IA32_COMPILER if BR2_x86_64 help kvm-unit-tests is a project as old as KVM. As its name diff --git a/package/luajit/Config.in b/package/luajit/Config.in index 31e9e0243e..408032c7e8 100644 --- a/package/luajit/Config.in +++ b/package/luajit/Config.in @@ -7,9 +7,9 @@ config BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS default y if BR2_powerpc # -m32 flag is used for 32bit builds and host-luajit has # limited architecture support - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86" # Building for 64-bit target requires a 64-bit host - depends on !BR2_ARCH_IS_64 || BR2_HOSTARCH = "x86_64" + depends on !BR2_ARCH_IS_64 || "$(HOSTARCH)" = "x86_64" config BR2_PACKAGE_LUAJIT bool "luajit" diff --git a/package/mono/Config.in b/package/mono/Config.in index 0152df8268..354dc56d24 100644 --- a/package/mono/Config.in +++ b/package/mono/Config.in @@ -1,7 +1,7 @@ config BR2_PACKAGE_HOST_MONO_ARCH_SUPPORTS bool - default y if BR2_HOSTARCH = "x86_64" - default y if BR2_HOSTARCH = "x86" + default y if "$(HOSTARCH)" = "x86_64" + default y if "$(HOSTARCH)" = "x86" config BR2_PACKAGE_MONO_ARCH_SUPPORTS bool diff --git a/package/nodejs/Config.in.host b/package/nodejs/Config.in.host index a8ab89176c..a8b0f3997d 100644 --- a/package/nodejs/Config.in.host +++ b/package/nodejs/Config.in.host @@ -1,9 +1,9 @@ config BR2_PACKAGE_HOST_NODEJS_BIN_ARCH_SUPPORTS bool - default y if BR2_HOSTARCH = "aarch64" - default y if BR2_HOSTARCH = "arm" - default y if BR2_HOSTARCH = "ppc64le" - default y if BR2_HOSTARCH = "x86_64" + default y if "$(HOSTARCH)" = "aarch64" + default y if "$(HOSTARCH)" = "arm" + default y if "$(HOSTARCH)" = "ppc64le" + default y if "$(HOSTARCH)" = "x86_64" comment "host nodejs needs a host gcc >= 8" depends on !BR2_PACKAGE_HOST_NODEJS_BIN_ARCH_SUPPORTS diff --git a/package/openjdk/Config.in b/package/openjdk/Config.in index 25d6960ecf..66963ed885 100644 --- a/package/openjdk/Config.in +++ b/package/openjdk/Config.in @@ -1,7 +1,7 @@ config BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS bool - default y if BR2_HOSTARCH = "x86_64" - default y if BR2_HOSTARCH = "aarch64" + default y if "$(HOSTARCH)" = "x86_64" + default y if "$(HOSTARCH)" = "aarch64" # Taken from make/autoconf/platform.m4 config BR2_PACKAGE_OPENJDK_ARCH_SUPPORTS diff --git a/package/openssl/Config.in b/package/openssl/Config.in index c7641ecefa..3d14988d99 100644 --- a/package/openssl/Config.in +++ b/package/openssl/Config.in @@ -47,7 +47,7 @@ config BR2_PACKAGE_LIBRESSL source "package/libressl/Config.in" # openssl from br2-external trees, if any -source "$BR2_BASE_DIR/.br2-external.in.openssl" +source "$(BASE_DIR)/.br2-external.in.openssl" endchoice diff --git a/package/protobuf/Config.in b/package/protobuf/Config.in index 47e987fa2b..df87918273 100644 --- a/package/protobuf/Config.in +++ b/package/protobuf/Config.in @@ -16,17 +16,17 @@ # host-protobuf only builds on certain architectures config BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS bool - default y if BR2_HOSTARCH = "aarch64" - default y if BR2_HOSTARCH = "arm" - default y if BR2_HOSTARCH = "mips" - default y if BR2_HOSTARCH = "mipsel" - default y if BR2_HOSTARCH = "powerpc" - default y if BR2_HOSTARCH = "powerpc64" - default y if BR2_HOSTARCH = "powerpc64le" - default y if BR2_HOSTARCH = "sparc" - default y if BR2_HOSTARCH = "sparc64" - default y if BR2_HOSTARCH = "x86" - default y if BR2_HOSTARCH = "x86_64" + default y if "$(HOSTARCH)" = "aarch64" + default y if "$(HOSTARCH)" = "arm" + default y if "$(HOSTARCH)" = "mips" + default y if "$(HOSTARCH)" = "mipsel" + default y if "$(HOSTARCH)" = "powerpc" + default y if "$(HOSTARCH)" = "powerpc64" + default y if "$(HOSTARCH)" = "powerpc64le" + default y if "$(HOSTARCH)" = "sparc" + default y if "$(HOSTARCH)" = "sparc64" + default y if "$(HOSTARCH)" = "x86" + default y if "$(HOSTARCH)" = "x86_64" config BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS bool diff --git a/package/qt5/qt5webengine/Config.in b/package/qt5/qt5webengine/Config.in index 67c843e5f6..b1b7d73d05 100644 --- a/package/qt5/qt5webengine/Config.in +++ b/package/qt5/qt5webengine/Config.in @@ -5,7 +5,7 @@ config BR2_PACKAGE_QT5WEBENGINE_ARCH_SUPPORTS BR2_mips || BR2_mips64 # -m32 flag is used for 32bit builds and host tools have # limited architecture support - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86" depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5declarative depends on !BR2_BINFMT_FLAT # qt5base-icu depends on BR2_USE_MMU # libglib2, qt5base-dbus diff --git a/package/rustc/Config.in.host b/package/rustc/Config.in.host index baa68994e6..77f5bf0645 100644 --- a/package/rustc/Config.in.host +++ b/package/rustc/Config.in.host @@ -1,14 +1,14 @@ # All host rust packages should depend on this option config BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS bool - default y if BR2_HOSTARCH = "aarch64" - default y if BR2_HOSTARCH = "powerpc" - default y if BR2_HOSTARCH = "powerpc64" - default y if BR2_HOSTARCH = "powerpc64le" - default y if BR2_HOSTARCH = "riscv64" - default y if BR2_HOSTARCH = "s390x" - default y if BR2_HOSTARCH = "x86" - default y if BR2_HOSTARCH = "x86_64" + default y if "$(HOSTARCH)" = "aarch64" + default y if "$(HOSTARCH)" = "powerpc" + default y if "$(HOSTARCH)" = "powerpc64" + default y if "$(HOSTARCH)" = "powerpc64le" + default y if "$(HOSTARCH)" = "riscv64" + default y if "$(HOSTARCH)" = "s390x" + default y if "$(HOSTARCH)" = "x86" + default y if "$(HOSTARCH)" = "x86_64" # The pre-built Rust standard library is only available for a number # of architectures/C libraries combinations, with different levels of diff --git a/package/sam-ba/Config.in.host b/package/sam-ba/Config.in.host index cd11e8633e..9b2e2afb75 100644 --- a/package/sam-ba/Config.in.host +++ b/package/sam-ba/Config.in.host @@ -1,6 +1,6 @@ config BR2_PACKAGE_HOST_SAM_BA bool "host sam-ba" - depends on BR2_HOSTARCH = "x86_64" + depends on "$(HOSTARCH)" = "x86_64" help Atmel SAM-BA software provides an open set of tools for programming the Atmel SAM3, SAM7 and SAM9 ARM-based diff --git a/package/supertuxkart/Config.in b/package/supertuxkart/Config.in index 319415754a..d442846fdd 100644 --- a/package/supertuxkart/Config.in +++ b/package/supertuxkart/Config.in @@ -1,6 +1,6 @@ config BR2_PACKAGE_SUPERTUXKART bool "supertuxkart" - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86" depends on BR2_i386 || BR2_x86_64 depends on BR2_USE_MMU # fork() depends on BR2_INSTALL_LIBSTDCPP # openal @@ -34,7 +34,7 @@ config BR2_PACKAGE_SUPERTUXKART http://supertuxkart.sourceforge.net/Main_Page comment "supertuxkart needs an OpenGL backend, a uClibc or glibc toolchain w/ NPTL, C++, gcc >= 4.9" - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86" depends on BR2_i386 || BR2_x86_64 depends on BR2_USE_MMU depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS diff --git a/package/ti-cgt-pru/Config.in.host b/package/ti-cgt-pru/Config.in.host index eab3cd72d5..cf56854dd1 100644 --- a/package/ti-cgt-pru/Config.in.host +++ b/package/ti-cgt-pru/Config.in.host @@ -1,7 +1,7 @@ config BR2_PACKAGE_HOST_TI_CGT_PRU_ARCH_SUPPORTS bool default y - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86" depends on BR2_arm config BR2_PACKAGE_HOST_TI_CGT_PRU diff --git a/package/ti-gfx/Config.in b/package/ti-gfx/Config.in index 40f46335a3..093417fa21 100644 --- a/package/ti-gfx/Config.in +++ b/package/ti-gfx/Config.in @@ -1,7 +1,7 @@ config BR2_PACKAGE_TI_GFX bool "ti-gfx" depends on BR2_LINUX_KERNEL && BR2_TOOLCHAIN_USES_GLIBC && BR2_arm - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86" select BR2_HOSTARCH_NEEDS_IA32_LIBS select BR2_PACKAGE_HAS_LIBEGL select BR2_PACKAGE_HAS_LIBGLES diff --git a/package/wine/Config.in b/package/wine/Config.in index db3b1570ef..cb764f0c9b 100644 --- a/package/wine/Config.in +++ b/package/wine/Config.in @@ -2,9 +2,9 @@ config BR2_PACKAGE_WINE_ARCH_SUPPORTS bool default y # Wine only builds on certain architectures - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" || \ - BR2_HOSTARCH = "powerpc" || BR2_HOSTARCH = "arm" || \ - BR2_HOSTARCH = "aarch64" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86" || \ + "$(HOSTARCH)" = "powerpc" || "$(HOSTARCH)" = "arm" || \ + "$(HOSTARCH)" = "aarch64" # Wine has much CPU specific code and mostly makes sense on x86 depends on BR2_i386 diff --git a/system/Config.in b/system/Config.in index 3fb17ed1c6..b8db1e755f 100644 --- a/system/Config.in +++ b/system/Config.in @@ -20,7 +20,7 @@ config BR2_ROOTFS_SKELETON_CUSTOM Use custom target skeleton. # skeleton from br2-external trees, if any -source "$BR2_BASE_DIR/.br2-external.in.skeleton" +source "$(BASE_DIR)/.br2-external.in.skeleton" endchoice @@ -154,7 +154,7 @@ config BR2_INIT_NONE or with a rootfs-overlay. # Init systems from br2-external trees, if any -source "$BR2_BASE_DIR/.br2-external.in.init" +source "$(BASE_DIR)/.br2-external.in.init" endchoice diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in index e91aa16326..9067193282 100644 --- a/toolchain/toolchain-external/Config.in +++ b/toolchain/toolchain-external/Config.in @@ -38,7 +38,7 @@ source "toolchain/toolchain-external/toolchain-external-bootlin/Config.in" source "toolchain/toolchain-external/toolchain-external-custom/Config.in" # Toolchains from br2-external trees, if any -source "$BR2_BASE_DIR/.br2-external.in.toolchains" +source "$(BASE_DIR)/.br2-external.in.toolchains" endchoice diff --git a/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in b/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in index 1cee601a89..07d1e4b232 100644 --- a/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in +++ b/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in @@ -1,7 +1,7 @@ config BR2_TOOLCHAIN_EXTERNAL_ARM_AARCH64_BE bool "Arm AArch64 BE 13.2.rel1" depends on BR2_aarch64_be - depends on BR2_HOSTARCH = "x86_64" + depends on "$(HOSTARCH)" = "x86_64" depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_SSP diff --git a/toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in b/toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in index 2565707def..65159c38bb 100644 --- a/toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in +++ b/toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in @@ -1,7 +1,7 @@ config BR2_TOOLCHAIN_EXTERNAL_ARM_AARCH64 bool "Arm AArch64 13.2.rel1" depends on BR2_aarch64 - depends on BR2_HOSTARCH = "x86_64" + depends on "$(HOSTARCH)" = "x86_64" depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_SSP diff --git a/toolchain/toolchain-external/toolchain-external-arm-arm/Config.in b/toolchain/toolchain-external/toolchain-external-arm-arm/Config.in index bee8d61164..bbc8168160 100644 --- a/toolchain/toolchain-external/toolchain-external-arm-arm/Config.in +++ b/toolchain/toolchain-external/toolchain-external-arm-arm/Config.in @@ -7,7 +7,7 @@ config BR2_TOOLCHAIN_EXTERNAL_ARM_ARM depends on BR2_arm depends on BR2_ARM_CPU_ARMV7A || BR2_ARM_CPU_ARMV8A depends on BR2_ARM_CPU_HAS_NEON - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "aarch64" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "aarch64" depends on BR2_ARM_EABIHF depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13 select BR2_TOOLCHAIN_EXTERNAL_GLIBC diff --git a/toolchain/toolchain-external/toolchain-external-bootlin/Config.in b/toolchain/toolchain-external/toolchain-external-bootlin/Config.in index 6552da9a84..1fa4fccb0f 100644 --- a/toolchain/toolchain-external/toolchain-external-bootlin/Config.in +++ b/toolchain/toolchain-external/toolchain-external-bootlin/Config.in @@ -1,7 +1,7 @@ config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN bool "Bootlin toolchains" depends on BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCH_SUPPORTS - depends on BR2_HOSTARCH = "x86_64" + depends on "$(HOSTARCH)" = "x86_64" help Bootlin toolchains are built using Buildroot for a large number of architectures and C libraries configurations. diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in b/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in index 8e067c8ffb..1938e8f5fc 100644 --- a/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in +++ b/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in @@ -5,7 +5,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_6 # Unsupported MIPS cores depends on !BR2_mips_interaptiv - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86" depends on !BR2_MIPS_NABI32 select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_SSP diff --git a/toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/Config.in b/toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/Config.in index 295a8987f1..ae727ffc4c 100644 --- a/toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/Config.in +++ b/toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/Config.in @@ -1,7 +1,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE bool "Linaro AArch64 BE 2018.05" depends on BR2_aarch64_be - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86" depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_8 select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_SSP diff --git a/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in b/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in index 1b0ec7cd9f..bee49235d4 100644 --- a/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in +++ b/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in @@ -1,7 +1,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64 bool "Linaro AArch64 2018.05" depends on BR2_aarch64 - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86" depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_8 select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_SSP diff --git a/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in b/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in index 8b3b4c844e..4390482ab9 100644 --- a/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in +++ b/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in @@ -6,7 +6,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM bool "Linaro ARM 2018.05" depends on BR2_arm depends on BR2_ARM_CPU_ARMV7A || BR2_ARM_CPU_ARMV8A - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86" depends on BR2_ARM_EABIHF depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_8 select BR2_TOOLCHAIN_EXTERNAL_GLIBC diff --git a/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in b/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in index b143ee5e24..3448864e4c 100644 --- a/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in +++ b/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in @@ -6,7 +6,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB bool "Linaro armeb 2018.05" depends on BR2_armeb depends on BR2_ARM_CPU_ARMV7A || BR2_ARM_CPU_ARMV8A - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86" depends on BR2_ARM_EABIHF depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_8 select BR2_TOOLCHAIN_EXTERNAL_GLIBC diff --git a/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in b/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in index 292e652fb0..44ff9593b3 100644 --- a/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in +++ b/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in @@ -1,7 +1,7 @@ config BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC bool "Synopsys ARC 2019.09 toolchain" depends on BR2_arc - depends on BR2_HOSTARCH = "x86_64" + depends on "$(HOSTARCH)" = "x86_64" depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_10 select BR2_TOOLCHAIN_EXTERNAL_UCLIBC select BR2_INSTALL_LIBSTDCPP -- 2.45.0 From ps.report at gmx.net Mon May 13 09:19:48 2024 From: ps.report at gmx.net (Peter Seiderer) Date: Mon, 13 May 2024 11:19:48 +0200 Subject: [Buildroot] [PATCH v2 4/4] package/openssl: move libopenssl/libressl/.br2-external.in.openssl source statements outside of the choice In-Reply-To: <20240513091950.30116-1-ps.report@gmx.net> References: <20240513091950.30116-1-ps.report@gmx.net> Message-ID: <20240513091950.30116-4-ps.report@gmx.net> Fixes the following error/warnings with kconfig from linux-6.9-rc5: package/libopenssl/Config.in:5:warning: choice value must have a prompt package/libopenssl/Config.in:7:warning: defaults for choice values not supported package/libopenssl/Config.in:15:warning: choice value must have a prompt package/libopenssl/Config.in:18:warning: defaults for choice values not supported package/libopenssl/Config.in:19:warning: defaults for choice values not supported package/libopenssl/Config.in:20:warning: defaults for choice values not supported package/libopenssl/Config.in:21:warning: defaults for choice values not supported package/libopenssl/Config.in:22:warning: defaults for choice values not supported package/libopenssl/Config.in:23:warning: defaults for choice values not supported package/libopenssl/Config.in:24:warning: defaults for choice values not supported package/libopenssl/Config.in:25:warning: defaults for choice values not supported package/libopenssl/Config.in:26:warning: defaults for choice values not supported package/libopenssl/Config.in:27:warning: defaults for choice values not supported package/libopenssl/Config.in:28:warning: defaults for choice values not supported package/libopenssl/Config.in:32:warning: defaults for choice values not supported package/libopenssl/Config.in:33:warning: defaults for choice values not supported package/libopenssl/Config.in:34:warning: defaults for choice values not supported package/libopenssl/Config.in:50:warning: defaults for choice values not supported package/libopenssl/Config.in:54:warning: defaults for choice values not supported package/libopenssl/Config.in:58:warning: defaults for choice values not supported package/libopenssl/Config.in:62:warning: defaults for choice values not supported package/libopenssl/Config.in:66:warning: defaults for choice values not supported package/libopenssl/Config.in:70:warning: defaults for choice values not supported package/libopenssl/Config.in:75:warning: defaults for choice values not supported package/libopenssl/Config.in:79:warning: defaults for choice values not supported package/libopenssl/Config.in:83:warning: defaults for choice values not supported package/libopenssl/Config.in:87:warning: defaults for choice values not supported package/libopenssl/Config.in:91:warning: defaults for choice values not supported package/libopenssl/Config.in:95:warning: defaults for choice values not supported package/libopenssl/Config.in:99:warning: defaults for choice values not supported package/libopenssl/Config.in:103:warning: defaults for choice values not supported package/libopenssl/Config.in:107:warning: defaults for choice values not supported package/libopenssl/Config.in:111:warning: defaults for choice values not supported package/libopenssl/Config.in:115:warning: defaults for choice values not supported package/libopenssl/Config.in:119:warning: defaults for choice values not supported package/libopenssl/Config.in:123:warning: defaults for choice values not supported package/libopenssl/Config.in:130:warning: defaults for choice values not supported package/libopenssl/Config.in:134:warning: defaults for choice values not supported package/openssl/Config.in:12:error: recursive dependency detected! package/openssl/Config.in:12: choice contains symbol BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH_LINUX_PPC package/libopenssl/Config.in:5: symbol BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH_LINUX_PPC is part of choice BR2_PACKAGE_LIBOPENSSL package/openssl/Config.in:17: symbol BR2_PACKAGE_LIBOPENSSL is part of choice For a resolution refer to Documentation/kbuild/kconfig-language.rst subsection "Kconfig recursive dependency limitations" Signed-off-by: Peter Seiderer --- Changes v1 -> v2: - fix typo in subject line (statements vs. statemetns) - move 'if BR2_PACKAGE_LIBOPENSSL' from package/libopenssl/Config.in to package/openssl/Config.in (suggested by Yann E. MORIN) - move 'f BR2_PACKAGE_LIBRESSL' from ackage/libressl/Config.in to package/openssl/Config.in (suggested by Yann E. MORIN) - move .br2-external.in.openssl source statement outside of the choice (suggested by Yann E. MORIN) Notes: - with this solution for .br2-external.in.openssl exactly one alternative/ external openssl library can be provided (previously more than one additional entry could be provided inside the choice) --- package/libopenssl/Config.in | 4 ---- package/libressl/Config.in | 4 ---- package/openssl/Config.in | 19 ++++++++++++++----- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/package/libopenssl/Config.in b/package/libopenssl/Config.in index 0c8db52e2e..53112ff927 100644 --- a/package/libopenssl/Config.in +++ b/package/libopenssl/Config.in @@ -1,5 +1,3 @@ -if BR2_PACKAGE_LIBOPENSSL - # 4xx PowerPC cores seem to have trouble with openssl's ASM # optimizations config BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH_LINUX_PPC @@ -132,5 +130,3 @@ config BR2_PACKAGE_LIBOPENSSL_DYNAMIC_ENGINE config BR2_PACKAGE_LIBOPENSSL_ENABLE_COMP bool "enable compression" default y - -endif # BR2_PACKAGE_LIBOPENSSL diff --git a/package/libressl/Config.in b/package/libressl/Config.in index 600829cb9e..2146481faa 100644 --- a/package/libressl/Config.in +++ b/package/libressl/Config.in @@ -1,9 +1,5 @@ -if BR2_PACKAGE_LIBRESSL - config BR2_PACKAGE_LIBRESSL_BIN bool "openssl binary" help Install the openssl binary to the target file system. This is a command line tool for doing various cryptographic stuff. - -endif diff --git a/package/openssl/Config.in b/package/openssl/Config.in index 3d14988d99..bee22aa69f 100644 --- a/package/openssl/Config.in +++ b/package/openssl/Config.in @@ -28,8 +28,6 @@ config BR2_PACKAGE_LIBOPENSSL Note: Some helper scripts need perl. -source "package/libopenssl/Config.in" - config BR2_PACKAGE_LIBRESSL bool "libressl" depends on !BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL @@ -44,12 +42,23 @@ config BR2_PACKAGE_LIBRESSL http://www.libressl.org/ +config BR2_PACKAGE_OPENSSL_EXTERNAL + bool "from an external tree" + depends on "$(BR2_EXTERNAL)" != "" + +endchoice + +if BR2_PACKAGE_LIBOPENSSL +source "package/libopenssl/Config.in" +endif + +if BR2_PACKAGE_LIBRESSL source "package/libressl/Config.in" +endif -# openssl from br2-external trees, if any +if BR2_PACKAGE_OPENSSL_EXTERNAL source "$(BASE_DIR)/.br2-external.in.openssl" - -endchoice +endif config BR2_PACKAGE_HAS_OPENSSL bool -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 10:29:33 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Mon, 13 May 2024 12:29:33 +0200 Subject: [Buildroot] [PATCH v3 02/14] package/qt6/qt6base: patch CVE-2024-33861 In-Reply-To: References: <20240512114617.2564569-1-roykollensvendsen@gmail.com> <20240512114617.2564569-2-roykollensvendsen@gmail.com> <20240513084026.4513d1f6@windsurf> Message-ID: Hi Thomas and Jesse, I assume I should add this information to the commit message and make a v4 patch-set? Best regards, Roy man. 13. mai 2024 kl. 09:57 skrev Jesse Van Gavere : > Hello Thomas, > > Op ma 13 mei 2024 om 08:40 schreef Thomas Petazzoni > : > > > > > Hello Roy, > > > > On Sun, 12 May 2024 13:45:49 +0200 > > Roy Kollen Svendsen wrote: > > > > > From: Roy Kollen Svendsen > > > > > > Got patch from: > > > > > > https://download.qt.io/archive/qt/6.7/ > > > Signed-off-by: Roy Kollen Svendsen > > > > Thanks for this v3. However, you're again putting a fix as PATCH 02/14 > > of the series, after a bump. Is it because this CVE is only applicable > > to Qt 6.7 (and not the 6.4.3 we already have in Buildroot) ? Could you > > clarify this point, which is very important? > > This is not applicable to 6.4.3, the affected versions are detailed in > the bugzilla report below and it's only 6.5.0+ > So this seems perfectly valid to go along with the version bump. > > OpenSUSE report: > https://www.suse.com/security/cve/CVE-2024-33861.html > Bugzilla report clarifying affected versions > https://bugzilla.suse.com/show_bug.cgi?id=1223917 > > > Thanks! > > > > Thomas > > -- > > Thomas Petazzoni, co-owner and CEO, Bootlin > > Embedded Linux and Kernel engineering and training > > https://bootlin.com > > Best regards, > Jesse > -------------- next part -------------- An HTML attachment was scrubbed... URL: From fontaine.fabrice at gmail.com Mon May 13 10:55:34 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Mon, 13 May 2024 12:55:34 +0200 Subject: [Buildroot] [PATCH 1/1] package/openblas: fix build without MMU In-Reply-To: <20240510225353.43655bcb@windsurf> References: <20240310182439.441668-1-fontaine.fabrice@gmail.com> <20240510225353.43655bcb@windsurf> Message-ID: Hello, Le ven. 10 mai 2024 ? 22:53, Thomas Petazzoni a ?crit : > > On Sun, 10 Mar 2024 19:24:39 +0100 > Fabrice Fontaine wrote: > > > Fix the following build failure without MMU: > > > > /home/buildroot/autobuild/instance-1/output-1/host/riscv64-buildroot-linux-uclibc/bin/ld.real: test_fork.o: in function `.L6': > > test_fork.c:(.text+0x120): undefined reference to `fork' > > > > autobuilder failure is raised since the addition of RISC-V support by > > commit c789bcddf0fb17580bef0cdc45b5334a90ecdf13 > > > > Fixes: > > - http://autobuild.buildroot.org/results/b9d097ae077f2cb40fc60de94bf25423636af005 > > > > Signed-off-by: Fabrice Fontaine > > --- > > ...ding-against-an-uClibc-that-does-not.patch | 28 +++++++++++++++++++ > > ...-uclibc-that-does-not-implement-fork.patch | 28 +++++++++++++++++++ > > 2 files changed, 56 insertions(+) > > create mode 100644 package/openblas/0002-Skip-the-fork-test-when-building-against-an-uClibc-that-does-not.patch > > create mode 100644 package/openblas/0003-Skip-test-when-building-with-a-uclibc-that-does-not-implement-fork.patch > > It seems like following the bump in > 59b48b5cff057f2429b1143d6f50c39d93ca8ef3, these patches are no longer > needed. Could you confirm? At least patch 0002 no longer applies. Yes, I confirm that both patches are included in version 0.3.27. > > Thanks, > > Thomas > -- > Thomas Petazzoni, CTO, Bootlin > Embedded Linux and Kernel engineering > https://bootlin.com Best Regards, Fabrice From jesseevg at gmail.com Mon May 13 11:05:05 2024 From: jesseevg at gmail.com (Jesse Van Gavere) Date: Mon, 13 May 2024 13:05:05 +0200 Subject: [Buildroot] [PATCH v3 02/14] package/qt6/qt6base: patch CVE-2024-33861 In-Reply-To: References: <20240512114617.2564569-1-roykollensvendsen@gmail.com> <20240512114617.2564569-2-roykollensvendsen@gmail.com> <20240513084026.4513d1f6@windsurf> Message-ID: Hello Roy, On Mon, 13 May 2024, 12:29 Roy Kollen Svendsen, wrote: > Hi Thomas and Jesse, > > I assume I should add this information to the commit message and make a v4 > patch-set? > Personally I don't see why that would be necessary, it's applicable to your version bump only and it's a valid CVE identifier (even if reserved for the moment) that can be looked up, putting the exact same CVE info in the commit for the patch seems a bit redundant Best regards, Jesse > Best regards, > Roy > > man. 13. mai 2024 kl. 09:57 skrev Jesse Van Gavere : > >> Hello Thomas, >> >> Op ma 13 mei 2024 om 08:40 schreef Thomas Petazzoni >> : >> >> > >> > Hello Roy, >> > >> > On Sun, 12 May 2024 13:45:49 +0200 >> > Roy Kollen Svendsen wrote: >> > >> > > From: Roy Kollen Svendsen >> > > >> > > Got patch from: >> > > >> > > https://download.qt.io/archive/qt/6.7/ >> > > Signed-off-by: Roy Kollen Svendsen >> > >> > Thanks for this v3. However, you're again putting a fix as PATCH 02/14 >> > of the series, after a bump. Is it because this CVE is only applicable >> > to Qt 6.7 (and not the 6.4.3 we already have in Buildroot) ? Could you >> > clarify this point, which is very important? >> >> This is not applicable to 6.4.3, the affected versions are detailed in >> the bugzilla report below and it's only 6.5.0+ >> So this seems perfectly valid to go along with the version bump. >> >> OpenSUSE report: >> https://www.suse.com/security/cve/CVE-2024-33861.html >> Bugzilla report clarifying affected versions >> https://bugzilla.suse.com/show_bug.cgi?id=1223917 >> >> > Thanks! >> > >> > Thomas >> > -- >> > Thomas Petazzoni, co-owner and CEO, Bootlin >> > Embedded Linux and Kernel engineering and training >> > https://bootlin.com >> >> Best regards, >> Jesse > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From troglobit at gmail.com Mon May 13 11:22:05 2024 From: troglobit at gmail.com (Joachim Wiberg) Date: Mon, 13 May 2024 13:22:05 +0200 Subject: [Buildroot] [PATCH 1/1] pacakge/smcroute: bump to version v2.5.7 Message-ID: <20240513112205.985165-1-troglobit@gmail.com> Fixes segfault on kernel without IPv6 support. For details, see https://github.com/troglobit/smcroute/releases/tag/2.5.7 Signed-off-by: Joachim Wiberg --- package/smcroute/smcroute.hash | 5 ++--- package/smcroute/smcroute.mk | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/package/smcroute/smcroute.hash b/package/smcroute/smcroute.hash index b472dfbc04..d51745c076 100644 --- a/package/smcroute/smcroute.hash +++ b/package/smcroute/smcroute.hash @@ -1,5 +1,4 @@ -# Hash from https://github.com/troglobit/smcroute/releases/download/2.5.6/smcroute-2.5.6.tar.gz.sha256 -sha256 0be38f617e322daafaa941c02423239f5c117b940cf0f45bacadb6733c4b3916 smcroute-2.5.6.tar.gz - +# Hash from https://github.com/troglobit/smcroute/releases/ generated by GitHub +sha256 7d2c83e11908fe37844fa9b49ae50924555c4e1bb440fb059a95c94e442ea8a5 smcroute-2.5.7.tar.gz # Locally generated sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/smcroute/smcroute.mk b/package/smcroute/smcroute.mk index 0c4f88ab1b..f7476f1100 100644 --- a/package/smcroute/smcroute.mk +++ b/package/smcroute/smcroute.mk @@ -4,7 +4,7 @@ # ################################################################################ -SMCROUTE_VERSION = 2.5.6 +SMCROUTE_VERSION = 2.5.7 SMCROUTE_SITE = https://github.com/troglobit/smcroute/releases/download/$(SMCROUTE_VERSION) SMCROUTE_LICENSE = GPL-2.0+ SMCROUTE_LICENSE_FILES = COPYING -- 2.34.1 From festevam at gmail.com Mon May 13 11:39:38 2024 From: festevam at gmail.com (Fabio Estevam) Date: Mon, 13 May 2024 08:39:38 -0300 Subject: [Buildroot] imx93-evk: Fails to boot from the SD card Message-ID: Hi S?bastien and Julien, I built an image for freescale_imx93evk_defconfig using the top of tree Buildroot, flashed the sdcard.img into an SD card an put the boot switch to SD card boot mode, but the image fails to boot: U-Boot SPL 2023.04 (Apr 28 2024 - 10:59:35 -0300) SOC: 0xa1009300 LC: 0x2040010 PMIC: Over Drive Voltage Mode DDR: 3733MTS M33 prepare ok Normal Boot Trying to boot from BOOTROM Boot Stage: Primary boot image offset 0x8000, pagesize 0x200, ivt offset 0x0 Load image from 0x56800 by ROM_API NOTICE: BL31: v2.8(release):custom NOTICE: BL31: Built : 10:55:27, Apr 28 2024 U-Boot 2023.04 (Apr 28 2024 - 10:59:35 -0300) CPU: i.MX93(52) rev1.1 1700 MHz (running at 1692 MHz) CPU: Industrial temperature grade (-40C to 105C) at 43C Reset cause: POR (0x1) Model: NXP i.MX93 11X11 EVK board DRAM: 2 GiB optee optee: OP-TEE api uid mismatch TCPC: Vendor ID [0x1fc9], Product ID [0x5110], Addr [I2C2 0x52] SNK.Power3.0 on CC1 PDO 0: type 0, 5000 mV, 3000 mA [E] PDO 1: type 0, 9000 mV, 3000 mA [] PDO 2: type 0, 15000 mV, 3000 mA [] PDO 3: type 0, 20000 mV, 2250 mA [] Requesting PDO 3: 20000 mV, 750 mA Source accept request PD source ready! tcpc_pd_receive_message: Polling ALERT register, TCPC_ALERT_RX_STATUS bit failed, ret = -62 TCPC: Vendor ID [0x1fc9], Product ID [0x5110], Addr [I2C2 0x51] TCPC: Vendor ID [0x1fc9], Product ID [0x5110], Addr [I2C2 0x50] Core: 229 devices, 36 uclasses, devicetree: separate MMC: FSL_SDHC: 0, FSL_SDHC: 1 Loading Environment from MMC... *** Warning - No block device, using default environment [*]-Video Link 0adv7535_mipi2hdmi hdmi at 3d: Can't find cec device id=0x3c fail to probe panel device hdmi at 3d fail to get display timings probe video device failed, ret -19 [0] lcd-controller at 4ae30000, video [1] dsi at 4ae10000, video_bridge [2] hdmi at 3d, panel adv7535_mipi2hdmi hdmi at 3d: Can't find cec device id=0x3c fail to probe panel device hdmi at 3d fail to get display timings probe video device failed, ret -19 In: serial Out: serial Err: serial BuildInfo: - ELE firmware version 0.1.0-44880904 UID: 0x6280a860 0x58465520 0x9883799f 0x311012fb flash target is MMC:1 MMC card init failed! ** Block device MMC 1 not supported The SD card is not recognized. Would you happen to have any suggestions? Thanks, Fabio Estevam From mf at go-sys.de Mon May 13 11:39:36 2024 From: mf at go-sys.de (Michael Fischer) Date: Mon, 13 May 2024 13:39:36 +0200 Subject: [Buildroot] [PATCH] package/sdl2: bump version to 2.30.3 Message-ID: <20240513113936.7471-1-mf@go-sys.de> Signed-off-by: Michael Fischer --- package/sdl2/sdl2.hash | 4 ++-- package/sdl2/sdl2.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/sdl2/sdl2.hash b/package/sdl2/sdl2.hash index 3c4b06cf3e..3c72d1d6d1 100644 --- a/package/sdl2/sdl2.hash +++ b/package/sdl2/sdl2.hash @@ -1,4 +1,4 @@ -# Locally calculated after checking http://www.libsdl.org/release/SDL2-2.30.2.tar.gz.sig -sha256 891d66ac8cae51361d3229e3336ebec1c407a8a2a063b61df14f5fdf3ab5ac31 SDL2-2.30.2.tar.gz +# Locally calculated after checking http://www.libsdl.org/release/SDL2-2.30.3.tar.gz.sig +sha256 820440072f8f5b50188c1dae104f2ad25984de268785be40c41a099a510f0aec SDL2-2.30.3.tar.gz # Locally calculated sha256 9b9e1764f06701bcf7ce21e942c682d5921ba0900c6fca760321b1c8837a9662 LICENSE.txt diff --git a/package/sdl2/sdl2.mk b/package/sdl2/sdl2.mk index 70f765f0ea..b5b0fb49e1 100644 --- a/package/sdl2/sdl2.mk +++ b/package/sdl2/sdl2.mk @@ -4,7 +4,7 @@ # ################################################################################ -SDL2_VERSION = 2.30.2 +SDL2_VERSION = 2.30.3 SDL2_SOURCE = SDL2-$(SDL2_VERSION).tar.gz SDL2_SITE = http://www.libsdl.org/release SDL2_LICENSE = Zlib -- 2.20.1 From festevam at gmail.com Mon May 13 11:44:48 2024 From: festevam at gmail.com (Fabio Estevam) Date: Mon, 13 May 2024 08:44:48 -0300 Subject: [Buildroot] imx93-evk: Fails to boot from the SD card In-Reply-To: References: Message-ID: On Mon, May 13, 2024 at 8:39?AM Fabio Estevam wrote: > UID: 0x6280a860 0x58465520 0x9883799f 0x311012fb > flash target is MMC:1 > MMC card init failed! > ** Block device MMC 1 not supported > > The SD card is not recognized. > > Would you happen to have any suggestions? Nevermind. I tried another SD card and it booted. Thanks From thomas.petazzoni at bootlin.com Mon May 13 11:59:11 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 13:59:11 +0200 Subject: [Buildroot] [PATCH v3 02/14] package/qt6/qt6base: patch CVE-2024-33861 In-Reply-To: References: <20240512114617.2564569-1-roykollensvendsen@gmail.com> <20240512114617.2564569-2-roykollensvendsen@gmail.com> <20240513084026.4513d1f6@windsurf> Message-ID: <20240513135911.209d094b@windsurf> Hell Jesse, Hello Roy, On Mon, 13 May 2024 13:05:05 +0200 Jesse Van Gavere wrote: > > I assume I should add this information to the commit message and make a v4 > > patch-set? > > Personally I don't see why that would be necessary, it's applicable to your > version bump only and it's a valid CVE identifier (even if reserved for the > moment) that can be looked up, putting the exact same CVE info in the > commit for the patch seems a bit redundant Well, in fact in this particular case, the CVE fix should be directly with the version bump, and indeed clarify in the commit log why it is together with the version bump. Also, QT6BASE_IGNORE_CVES variable will be needed in qt6base.mk. I'd say no need to resend the full series for this at this point. I'll try to apply some parts of it, and see if I have other review comments for the rest. Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From Alex.Michel at wiedemann-group.com Mon May 13 12:30:49 2024 From: Alex.Michel at wiedemann-group.com (Michel Alex) Date: Mon, 13 May 2024 12:30:49 +0000 Subject: [Buildroot] [PATCH v5 1/1] package/libzenoh-c: new package Message-ID: This package provides a C binding based on the main Zenoh implementation written in Rust. Because this lib does not provide any binaries or examples, and the cargo infra does not provide any possibility to disable the --bins option in cargo install step, we have to override the INSTALL_STAGING_CMDS and the INSTALL_TARGET_CMDS macros to prevent failing of the buildroot installation step. https://github.com/eclipse-zenoh/zenoh-c Signed-off-by: Alex Michel --- Changes v4 -> v5: - bump package to 0.11.0.2 Changes v3 -> v4: - wrapped long lines to 80 characters - use BR2_ENABLE_DEBUG variable instead of "release" path component - use RUSTC_TARGET_NAME variable instead of "*" path component - shared macro installs only the common set of files - INSTALL_TARGET_CMDS installs only the lib - INSTALL_STAGING_CMDS installs both the lib and include files Changes v2 -> v3: - bump package to 0.10.1-rc - set INSTALL_STAGING Changes v1 -> v2: - renamed zenoh-c to libzenoh-c - added myself to DEVELOPERS - fixed LICENSE - install shared libraries to staging and to target Signed-off-by: Alex Michel --- DEVELOPERS | 1 + package/Config.in | 1 + package/libzenoh-c/Config.in | 9 ++++++++ package/libzenoh-c/libzenoh-c.hash | 3 +++ package/libzenoh-c/libzenoh-c.mk | 35 ++++++++++++++++++++++++++++++ 5 files changed, 49 insertions(+) create mode 100644 package/libzenoh-c/Config.in create mode 100644 package/libzenoh-c/libzenoh-c.hash create mode 100644 package/libzenoh-c/libzenoh-c.mk diff --git a/DEVELOPERS b/DEVELOPERS index d653648718..930fdf8d3a 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -83,6 +83,7 @@ N: Alessandro Partesotti F: package/oatpp/ N: Alex Michel +F: package/libzenoh-c/ F: package/libzenoh-pico/ F: package/network-manager-openvpn/ diff --git a/package/Config.in b/package/Config.in index c29b4a5101..135e8f6bb6 100644 --- a/package/Config.in +++ b/package/Config.in @@ -2048,6 +2048,7 @@ menu "Networking" source "package/libwebsock/Config.in" source "package/libwebsockets/Config.in" source "package/libyang/Config.in" + source "package/libzenoh-c/Config.in" source "package/libzenoh-pico/Config.in" source "package/lksctp-tools/Config.in" source "package/mbuffer/Config.in" diff --git a/package/libzenoh-c/Config.in b/package/libzenoh-c/Config.in new file mode 100644 index 0000000000..d22807c047 --- /dev/null +++ b/package/libzenoh-c/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBZENOH_C + bool "libzenoh-c" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_RUSTC + help + This package provides a C binding based on the main + Zenoh implementation written in Rust. + + https://github.com/eclipse-zenoh/zenoh-c diff --git a/package/libzenoh-c/libzenoh-c.hash b/package/libzenoh-c/libzenoh-c.hash new file mode 100644 index 0000000000..969f9eed6b --- /dev/null +++ b/package/libzenoh-c/libzenoh-c.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 8a8058cb5277e36652cb4186f0a76b7555892eeaef4225b1f1aa556a1e77619f libzenoh-c-0.11.0.2.tar.gz +sha256 01a44774f7b1a453595c7c6d7f7308284ba6a1059dc49e14dad6647e1d44a338 LICENSE diff --git a/package/libzenoh-c/libzenoh-c.mk b/package/libzenoh-c/libzenoh-c.mk new file mode 100644 index 0000000000..5a340ba138 --- /dev/null +++ b/package/libzenoh-c/libzenoh-c.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# libzenoh-c +# +################################################################################ + +LIBZENOH_C_VERSION = 0.11.0.2 +LIBZENOH_C_SITE = $(call github,eclipse-zenoh,zenoh-c,$(LIBZENOH_C_VERSION)) +LIBZENOH_C_LICENSE = Apache-2.0 or EPL-2.0 +LIBZENOH_C_LICENSE_FILES = LICENSE +LIBZENOH_C_INSTALL_STAGING = YES + +ifeq ($(BR2_ENABLE_DEBUG),y) +LIBZENOH_C_LIB_LOCATION = $(@D)/target/$(RUSTC_TARGET_NAME)/debug +else +LIBZENOH_C_LIB_LOCATION = $(@D)/target/$(RUSTC_TARGET_NAME)/release +endif + +define LIBZENOH_C_INSTALL_FILES + $(INSTALL) -D -m 644 \ + $(LIBZENOH_C_LIB_LOCATION)/libzenohc.so \ + $(1)/usr/lib/libzenohc.so +endef + +define LIBZENOH_C_INSTALL_TARGET_CMDS + $(call LIBZENOH_C_INSTALL_FILES,$(TARGET_DIR)) +endef + +define LIBZENOH_C_INSTALL_STAGING_CMDS + $(call LIBZENOH_C_INSTALL_FILES,$(STAGING_DIR)) + mkdir -p $(STAGING_DIR)/usr/include/ + cp -dpfr $(@D)/include/* $(STAGING_DIR)/usr/include/ +endef + +$(eval $(cargo-package)) -- 2.34.1 From festevam at gmail.com Mon May 13 12:34:42 2024 From: festevam at gmail.com (Fabio Estevam) Date: Mon, 13 May 2024 09:34:42 -0300 Subject: [Buildroot] [PATCH] configs/freescale_imx93evk: Update to NXP lf-6.6.3-1.0.0 Message-ID: <20240513123442.213242-1-festevam@gmail.com> Update kernel, TF-A and U-Boot repos to the NXP lf-6.6.3-1.0.0 versions. Signed-off-by: Fabio Estevam --- configs/freescale_imx93evk_defconfig | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/configs/freescale_imx93evk_defconfig b/configs/freescale_imx93evk_defconfig index fa1696788464..f30bafd9a2c3 100644 --- a/configs/freescale_imx93evk_defconfig +++ b/configs/freescale_imx93evk_defconfig @@ -1,13 +1,13 @@ BR2_aarch64=y BR2_cortex_a55=y BR2_ARM_FPU_VFPV4D16=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y BR2_GLOBAL_PATCH_DIR="board/freescale/imx93evk/patches" BR2_TARGET_GENERIC_GETTY_PORT="ttyLP0" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/imx9-bootloader-prepare.sh board/freescale/common/imx/post-image.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,linux-imx,lf-6.1.55-2.2.0)/linux-imx-lf-6.1.55-2.2.0.tar.gz" +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,linux-imx,lf-6.6.3-1.0.0)/linux-imx-lf-6.6.3-1.0.0.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="imx_v8" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx93-11x11-evk" @@ -21,13 +21,13 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_ROOTFS_EXT2_SIZE="120M" BR2_TARGET_ARM_TRUSTED_FIRMWARE=y BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y -BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,imx-atf,lf-6.1.55-2.2.0)/imx-atf-lf-6.1.55-2.2.0.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,imx-atf,lf-6.6.3-1.0.0)/imx-atf-lf-6.6.3-1.0.0.tar.gz" BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx93" BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_TARBALL=y -BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,uboot-imx,lf-6.1.55-2.2.0)/uboot-imx-lf-6.1.55-2.2.0.tar.gz" +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,uboot-imx,lf-6.6.3-1.0.0)/uboot-imx-lf-6.6.3-1.0.0.tar.gz" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx93_11x11_evk" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_NEEDS_OPENSSL=y -- 2.34.1 From Alex.Michel at wiedemann-group.com Mon May 13 12:42:52 2024 From: Alex.Michel at wiedemann-group.com (Michel Alex) Date: Mon, 13 May 2024 12:42:52 +0000 Subject: [Buildroot] [PATCH 1/1] package/network-manager-openvpn: bump to version 1.11.0 Message-ID: https://download.gnome.org/sources/NetworkManager-openvpn/1.11/NetworkManager-openvpn-1.11.0.news Signed-off-by: Alex Michel --- package/network-manager-openvpn/network-manager-openvpn.hash | 4 ++-- package/network-manager-openvpn/network-manager-openvpn.mk | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/network-manager-openvpn/network-manager-openvpn.hash b/package/network-manager-openvpn/network-manager-openvpn.hash index 11fb28f8c8..59d03fae2a 100644 --- a/package/network-manager-openvpn/network-manager-openvpn.hash +++ b/package/network-manager-openvpn/network-manager-openvpn.hash @@ -1,4 +1,4 @@ -# From https://download.gnome.org/sources/NetworkManager-openvpn/1.10/NetworkManager-openvpn-1.10.2.sha256sum -sha256 62f0f2a8782221b923f212ac2a8ebbc1002efd6a90ee945dad4adfb56d076d21 NetworkManager-openvpn-1.10.2.tar.xz +# From https://download.gnome.org/sources/NetworkManager-openvpn/1.11/NetworkManager-openvpn-1.11.0.sha256sum +sha256 2128de06f91b33c13d63cdaa6e178bc1ca57fc770cde3bc7c24891f4d9824501 NetworkManager-openvpn-1.11.0.tar.xz # Locally computed sha256 c39e345d992dfba62db265f8c6d6ff1d90c61d92876635ae05adbfa2f45fff46 COPYING diff --git a/package/network-manager-openvpn/network-manager-openvpn.mk b/package/network-manager-openvpn/network-manager-openvpn.mk index ccc86e45f7..f39edf3209 100644 --- a/package/network-manager-openvpn/network-manager-openvpn.mk +++ b/package/network-manager-openvpn/network-manager-openvpn.mk @@ -4,8 +4,8 @@ # ################################################################################ -NETWORK_MANAGER_OPENVPN_VERSION_MAJOR = 1.10 -NETWORK_MANAGER_OPENVPN_VERSION = $(NETWORK_MANAGER_OPENVPN_VERSION_MAJOR).2 +NETWORK_MANAGER_OPENVPN_VERSION_MAJOR = 1.11 +NETWORK_MANAGER_OPENVPN_VERSION = $(NETWORK_MANAGER_OPENVPN_VERSION_MAJOR).0 NETWORK_MANAGER_OPENVPN_SOURCE = NetworkManager-openvpn-$(NETWORK_MANAGER_OPENVPN_VERSION).tar.xz NETWORK_MANAGER_OPENVPN_SITE = https://download.gnome.org/sources/NetworkManager-openvpn/$(NETWORK_MANAGER_OPENVPN_VERSION_MAJOR) NETWORK_MANAGER_OPENVPN_DEPENDENCIES = network-manager openvpn -- 2.34.1 From ps.report at gmx.net Mon May 13 09:19:46 2024 From: ps.report at gmx.net (Peter Seiderer) Date: Mon, 13 May 2024 11:19:46 +0200 Subject: [Buildroot] [PATCH v2 2/4] support/kconfig: bump to linux-v6.9-rc5 version In-Reply-To: <20240513091950.30116-1-ps.report@gmx.net> References: <20240513091950.30116-1-ps.report@gmx.net> Message-ID: <20240513091950.30116-2-ps.report@gmx.net> - update RAEDME.buildroot (add copy step for kconfig.new, update copy steps for *_shipped files - rebased 01-kconfig-kernel-to-buildroot.patch - rebased 06-br-build-system-integration.patch - updated 10-br-build-system.patch - removed 11-use-mktemp-for-lxdialog.patch (no longer applicable) - rebased 12-fix-glade-file-path.patch - rebased 14-support-out-of-tree-config.patch - rebased 16-fix-space-to-de-select-options.patch - removed 17-backport-kecho.patch (use complete Kbuild.include instead of backporting single parts) - rebased 18-merge-config.sh-create-temporary-files-in-tmp.patch - rebased 19-merge_config.sh-add-br2-external-support.patch - removed 20-merge_config.sh-Allow-to-define-config-prefix.patch (already upstream included) - removed 21-Avoid-false-positive-matches-from-comment-lines.patch (already upstream included) - removed 22-kconfig-lxdialog-fix-check-with-GCC14.patch (no longer applicable) - new 23-Revert-kconfig-allow-only-config-comment-and-if-insi.patch (revert to re-enable source statement inside of choice, as suggested by Yann E. MORIN, see [1]) [1] https://lore.kernel.org/buildroot/Zhdu7zT3FZl7sk1q at landeda/ Signed-off-by: Peter Seiderer --- Changes v1 -> v2: - no changes --- support/kconfig/Kbuild.include | 273 ++ support/kconfig/Makefile | 375 +- support/kconfig/Makefile.br | 10 +- support/kconfig/POTFILES.in | 12 - support/kconfig/README.buildroot | 9 +- support/kconfig/array_size.h | 11 + support/kconfig/check.sh | 14 - support/kconfig/conf.c | 562 ++- support/kconfig/confdata.c | 1358 +++--- support/kconfig/expr.c | 29 +- support/kconfig/expr.h | 49 +- support/kconfig/foo.h | 12 - support/kconfig/gconf-cfg.sh | 33 + support/kconfig/gconf.c | 100 +- support/kconfig/hashtable.h | 48 + support/kconfig/images.c | 34 +- support/kconfig/images.h | 33 + support/kconfig/internal.h | 21 + support/kconfig/kconf_id.c | 53 - support/kconfig/kxgettext.c | 235 - support/kconfig/lexer.l | 460 ++ support/kconfig/lexer.lex.c_shipped | 4103 +++++++++++++++++ support/kconfig/list.h | 254 +- support/kconfig/list_types.h | 17 + support/kconfig/lkc.h | 117 +- support/kconfig/lkc_proto.h | 33 +- support/kconfig/lxdialog/.gitignore | 4 - support/kconfig/lxdialog/BIG.FAT.WARNING | 2 +- support/kconfig/lxdialog/check-lxdialog.sh | 93 - support/kconfig/lxdialog/checklist.c | 26 +- support/kconfig/lxdialog/dialog.h | 76 +- support/kconfig/lxdialog/inputbox.c | 24 +- support/kconfig/lxdialog/menubox.c | 35 +- support/kconfig/lxdialog/textbox.c | 330 +- support/kconfig/lxdialog/util.c | 41 +- support/kconfig/lxdialog/yesno.c | 21 +- support/kconfig/mconf-cfg.sh | 55 + support/kconfig/mconf.c | 529 +-- support/kconfig/menu.c | 345 +- support/kconfig/merge_config.sh | 91 +- support/kconfig/mnconf-common.c | 53 + support/kconfig/mnconf-common.h | 18 + support/kconfig/nconf-cfg.sh | 53 + support/kconfig/nconf.c | 297 +- support/kconfig/nconf.gui.c | 329 +- support/kconfig/nconf.h | 62 +- support/kconfig/parser.tab.c_shipped | 2189 +++++++++ support/kconfig/parser.tab.h_shipped | 134 + support/kconfig/{zconf.y => parser.y} | 467 +- .../01-kconfig-kernel-to-buildroot.patch | 115 +- .../06-br-build-system-integration.patch | 103 +- .../kconfig/patches/10-br-build-system.patch | 66 +- .../patches/11-use-mktemp-for-lxdialog.patch | 17 - .../patches/12-fix-glade-file-path.patch | 14 +- .../14-support-out-of-tree-config.patch | 202 +- .../16-fix-space-to-de-select-options.patch | 19 +- .../kconfig/patches/17-backport-kecho.patch | 26 - ...fig.sh-create-temporary-files-in-tmp.patch | 19 +- ...e_config.sh-add-br2-external-support.patch | 24 +- ...fig.sh-Allow-to-define-config-prefix.patch | 31 - ...-positive-matches-from-comment-lines.patch | 32 - ...config-lxdialog-fix-check-with-GCC14.patch | 43 - ...llow-only-config-comment-and-if-insi.patch | 956 ++++ support/kconfig/patches/series | 6 +- support/kconfig/preprocess.c | 580 +++ support/kconfig/preprocess.h | 19 + support/kconfig/qconf-cfg.sh | 40 + support/kconfig/qconf.cc | 1199 ++--- support/kconfig/qconf.h | 163 +- support/kconfig/streamline_config.pl | 104 +- support/kconfig/symbol.c | 374 +- support/kconfig/util.c | 122 +- support/kconfig/zconf.l | 372 -- support/kconfig/zconf.lex.c_shipped | 2500 ---------- support/kconfig/zconf.tab.c_shipped | 2488 ---------- 75 files changed, 12875 insertions(+), 10288 deletions(-) create mode 100644 support/kconfig/Kbuild.include delete mode 100644 support/kconfig/POTFILES.in create mode 100644 support/kconfig/array_size.h delete mode 100755 support/kconfig/check.sh delete mode 100644 support/kconfig/foo.h create mode 100755 support/kconfig/gconf-cfg.sh create mode 100644 support/kconfig/hashtable.h create mode 100644 support/kconfig/images.h create mode 100644 support/kconfig/internal.h delete mode 100644 support/kconfig/kconf_id.c delete mode 100644 support/kconfig/kxgettext.c create mode 100644 support/kconfig/lexer.l create mode 100644 support/kconfig/lexer.lex.c_shipped create mode 100644 support/kconfig/list_types.h delete mode 100644 support/kconfig/lxdialog/.gitignore delete mode 100755 support/kconfig/lxdialog/check-lxdialog.sh create mode 100755 support/kconfig/mconf-cfg.sh create mode 100644 support/kconfig/mnconf-common.c create mode 100644 support/kconfig/mnconf-common.h create mode 100755 support/kconfig/nconf-cfg.sh create mode 100644 support/kconfig/parser.tab.c_shipped create mode 100644 support/kconfig/parser.tab.h_shipped rename support/kconfig/{zconf.y => parser.y} (56%) delete mode 100644 support/kconfig/patches/11-use-mktemp-for-lxdialog.patch delete mode 100644 support/kconfig/patches/17-backport-kecho.patch delete mode 100644 support/kconfig/patches/20-merge_config.sh-Allow-to-define-config-prefix.patch delete mode 100644 support/kconfig/patches/21-Avoid-false-positive-matches-from-comment-lines.patch delete mode 100644 support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch create mode 100644 support/kconfig/patches/23-Revert-kconfig-allow-only-config-comment-and-if-insi.patch create mode 100644 support/kconfig/preprocess.c create mode 100644 support/kconfig/preprocess.h create mode 100755 support/kconfig/qconf-cfg.sh delete mode 100644 support/kconfig/zconf.l delete mode 100644 support/kconfig/zconf.lex.c_shipped delete mode 100644 support/kconfig/zconf.tab.c_shipped diff --git a/support/kconfig/Kbuild.include b/support/kconfig/Kbuild.include new file mode 100644 index 0000000000..2f33187981 --- /dev/null +++ b/support/kconfig/Kbuild.include @@ -0,0 +1,273 @@ +# SPDX-License-Identifier: GPL-2.0 +#### +# kbuild: Generic definitions + +# Convenient variables +comma := , +quote := " +squote := ' +empty := +space := $(empty) $(empty) +space_escape := _-_SPACE_-_ +pound := \# +define newline + + +endef + +### +# Comparison macros. +# Usage: $(call test-lt, $(CONFIG_LLD_VERSION), 150000) +# +# Use $(intcmp ...) if supported. (Make >= 4.4) +# Otherwise, fall back to the 'test' shell command. +ifeq ($(intcmp 1,0,,,y),y) +test-ge = $(intcmp $(strip $1)0, $(strip $2)0,,y,y) +test-gt = $(intcmp $(strip $1)0, $(strip $2)0,,,y) +else +test-ge = $(shell test $(strip $1)0 -ge $(strip $2)0 && echo y) +test-gt = $(shell test $(strip $1)0 -gt $(strip $2)0 && echo y) +endif +test-le = $(call test-ge, $2, $1) +test-lt = $(call test-gt, $2, $1) + +### +# Name of target with a '.' as filename prefix. foo/bar.o => foo/.bar.o +dot-target = $(dir $@).$(notdir $@) + +### +# Name of target with a '.tmp_' as filename prefix. foo/bar.o => foo/.tmp_bar.o +tmp-target = $(dir $@).tmp_$(notdir $@) + +### +# The temporary file to save gcc -MMD generated dependencies must not +# contain a comma +depfile = $(subst $(comma),_,$(dot-target).d) + +### +# filename of target with directory and extension stripped +basetarget = $(basename $(notdir $@)) + +### +# real prerequisites without phony targets +real-prereqs = $(filter-out $(PHONY), $^) + +### +# Escape single quote for use in echo statements +escsq = $(subst $(squote),'\$(squote)',$1) + +### +# Quote a string to pass it to C files. foo => '"foo"' +stringify = $(squote)$(quote)$1$(quote)$(squote) + +### +# The path to Kbuild or Makefile. Kbuild has precedence over Makefile. +kbuild-dir = $(if $(filter /%,$(src)),$(src),$(srctree)/$(src)) +kbuild-file = $(or $(wildcard $(kbuild-dir)/Kbuild),$(kbuild-dir)/Makefile) + +### +# Read a file, replacing newlines with spaces +# +# Make 4.2 or later can read a file by using its builtin function. +ifneq ($(filter-out 3.% 4.0 4.1, $(MAKE_VERSION)),) +read-file = $(subst $(newline),$(space),$(file < $1)) +else +read-file = $(shell cat $1 2>/dev/null) +endif + +### +# Easy method for doing a status message + kecho := : + quiet_kecho := echo +silent_kecho := : +kecho := $($(quiet)kecho) + +### +# filechk is used to check if the content of a generated file is updated. +# Sample usage: +# +# filechk_sample = echo $(KERNELRELEASE) +# version.h: FORCE +# $(call filechk,sample) +# +# The rule defined shall write to stdout the content of the new file. +# The existing file will be compared with the new one. +# - If no file exist it is created +# - If the content differ the new file is used +# - If they are equal no change, and no timestamp update +define filechk + $(check-FORCE) + $(Q)set -e; \ + mkdir -p $(dir $@); \ + trap "rm -f $(tmp-target)" EXIT; \ + { $(filechk_$(1)); } > $(tmp-target); \ + if [ ! -r $@ ] || ! cmp -s $@ $(tmp-target); then \ + $(kecho) ' UPD $@'; \ + mv -f $(tmp-target) $@; \ + fi +endef + +### +# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build obj= +# Usage: +# $(Q)$(MAKE) $(build)=dir +build := -f $(srctree)/scripts/Makefile.build obj + +### +# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj= +# Usage: +# $(Q)$(MAKE) $(clean)=dir +clean := -f $(srctree)/scripts/Makefile.clean obj + +# pring log +# +# If quiet is "silent_", print nothing and sink stdout +# If quiet is "quiet_", print short log +# If quiet is empty, print short log and whole command +silent_log_print = exec >/dev/null; + quiet_log_print = $(if $(quiet_cmd_$1), echo ' $(call escsq,$(quiet_cmd_$1)$(why))';) + log_print = echo '$(pound) $(call escsq,$(or $(quiet_cmd_$1),cmd_$1 $@)$(why))'; \ + echo ' $(call escsq,$(cmd_$1))'; + +# Delete the target on interruption +# +# GNU Make automatically deletes the target if it has already been changed by +# the interrupted recipe. So, you can safely stop the build by Ctrl-C (Make +# will delete incomplete targets), and resume it later. +# +# However, this does not work when the stderr is piped to another program, like +# $ make >&2 | tee log +# Make dies with SIGPIPE before cleaning the targets. +# +# To address it, we clean the target in signal traps. +# +# Make deletes the target when it catches SIGHUP, SIGINT, SIGQUIT, SIGTERM. +# So, we cover them, and also SIGPIPE just in case. +# +# Of course, this is unneeded for phony targets. +delete-on-interrupt = \ + $(if $(filter-out $(PHONY), $@), \ + $(foreach sig, HUP INT QUIT TERM PIPE, \ + trap 'rm -f $@; trap - $(sig); kill -s $(sig) $$$$' $(sig);)) + +# print and execute commands +cmd = @$(if $(cmd_$(1)),set -e; $($(quiet)log_print) $(delete-on-interrupt) $(cmd_$(1)),:) + +### +# if_changed - execute command if any prerequisite is newer than +# target, or command line has changed +# if_changed_dep - as if_changed, but uses fixdep to reveal dependencies +# including used config symbols +# if_changed_rule - as if_changed but execute rule instead +# See Documentation/kbuild/makefiles.rst for more info + +ifneq ($(KBUILD_NOCMDDEP),1) +# Check if both commands are the same including their order. Result is empty +# string if equal. User may override this check using make KBUILD_NOCMDDEP=1 +# If the target does not exist, the *.cmd file should not be included so +# $(savedcmd_$@) gets empty. Then, target will be built even if $(newer-prereqs) +# happens to become empty. +cmd-check = $(filter-out $(subst $(space),$(space_escape),$(strip $(savedcmd_$@))), \ + $(subst $(space),$(space_escape),$(strip $(cmd_$1)))) +else +# We still need to detect missing targets. +cmd-check = $(if $(strip $(savedcmd_$@)),,1) +endif + +# Replace >$< with >$$< to preserve $ when reloading the .cmd file +# (needed for make) +# Replace >#< with >$(pound)< to avoid starting a comment in the .cmd file +# (needed for make) +# Replace >'< with >'\''< to be able to enclose the whole string in '...' +# (needed for the shell) +make-cmd = $(call escsq,$(subst $(pound),$$(pound),$(subst $$,$$$$,$(cmd_$(1))))) + +# Find any prerequisites that are newer than target or that do not exist. +# PHONY targets skipped in both cases. +# If there is no prerequisite other than phony targets, $(newer-prereqs) becomes +# empty even if the target does not exist. cmd-check saves this corner case. +newer-prereqs = $(filter-out $(PHONY),$?) + +# It is a typical mistake to forget the FORCE prerequisite. Check it here so +# no more breakage will slip in. +check-FORCE = $(if $(filter FORCE, $^),,$(warning FORCE prerequisite is missing)) + +if-changed-cond = $(newer-prereqs)$(cmd-check)$(check-FORCE) + +# Execute command if command has changed or prerequisite(s) are updated. +if_changed = $(if $(if-changed-cond),$(cmd_and_savecmd),@:) + +cmd_and_savecmd = \ + $(cmd); \ + printf '%s\n' 'savedcmd_$@ := $(make-cmd)' > $(dot-target).cmd + +# Execute the command and also postprocess generated .d dependencies file. +if_changed_dep = $(if $(if-changed-cond),$(cmd_and_fixdep),@:) + +cmd_and_fixdep = \ + $(cmd); \ + scripts/basic/fixdep $(depfile) $@ '$(make-cmd)' > $(dot-target).cmd;\ + rm -f $(depfile) + +# Usage: $(call if_changed_rule,foo) +# Will check if $(cmd_foo) or any of the prerequisites changed, +# and if so will execute $(rule_foo). +if_changed_rule = $(if $(if-changed-cond),$(rule_$(1)),@:) + +### +# why - tell why a target got built +# enabled by make V=2 +# Output (listed in the order they are checked): +# (1) - due to target is PHONY +# (2) - due to target missing +# (3) - due to: file1.h file2.h +# (4) - due to command line change +# (5) - due to missing .cmd file +# (6) - due to target not in $(targets) +# (1) PHONY targets are always build +# (2) No target, so we better build it +# (3) Prerequisite is newer than target +# (4) The command line stored in the file named dir/.target.cmd +# differed from actual command line. This happens when compiler +# options changes +# (5) No dir/.target.cmd file (used to store command line) +# (6) No dir/.target.cmd file and target not listed in $(targets) +# This is a good hint that there is a bug in the kbuild file +ifneq ($(findstring 2, $(KBUILD_VERBOSE)),) +_why = \ + $(if $(filter $@, $(PHONY)),- due to target is PHONY, \ + $(if $(wildcard $@), \ + $(if $(newer-prereqs),- due to: $(newer-prereqs), \ + $(if $(cmd-check), \ + $(if $(savedcmd_$@),- due to command line change, \ + $(if $(filter $@, $(targets)), \ + - due to missing .cmd file, \ + - due to $(notdir $@) not in $$(targets) \ + ) \ + ) \ + ) \ + ), \ + - due to target missing \ + ) \ + ) + +why = $(space)$(strip $(_why)) +endif + +############################################################################### + +# delete partially updated (i.e. corrupted) files on error +.DELETE_ON_ERROR: + +# do not delete intermediate files automatically +# +# .NOTINTERMEDIATE is more correct, but only available on newer Make versions. +# Make 4.4 introduced .NOTINTERMEDIATE, and it appears in .FEATURES, but the +# global .NOTINTERMEDIATE does not work. We can use it on Make > 4.4. +# Use .SECONDARY for older Make versions, but "newer-prereq" cannot detect +# deleted files. +ifneq ($(and $(filter notintermediate, $(.FEATURES)),$(filter-out 4.4,$(MAKE_VERSION))),) +.NOTINTERMEDIATE: +else +.SECONDARY: +endif diff --git a/support/kconfig/Makefile b/support/kconfig/Makefile index b0bcc2627a..f5f934d644 100644 --- a/support/kconfig/Makefile +++ b/support/kconfig/Makefile @@ -3,14 +3,10 @@ # Kernel configuration targets # These targets are used from top-level makefile -PHONY += xconfig gconfig menuconfig config syncconfig update-po-config \ - localmodconfig localyesconfig +HOSTPKG_CONFIG = pkg-config +export HOSTPKG_CONFIG -# Easy method for doing a status message - kecho := : - quiet_kecho := echo -silent_kecho := : -kecho := $($(quiet)kecho) +include $(src)/Kbuild.include ifdef KBUILD_KCONFIG Kconfig := $(KBUILD_KCONFIG) @@ -18,103 +14,87 @@ else Kconfig := Kconfig endif +ifndef KBUILD_DEFCONFIG +KBUILD_DEFCONFIG := defconfig +endif + ifeq ($(quiet),silent_) silent := -s endif -# We need this, in case the user has it in its environment -unexport CONFIG_ +export KCONFIG_DEFCONFIG_LIST := +ifndef cross_compiling +kernel-release := $(shell uname -r) +KCONFIG_DEFCONFIG_LIST += \ + /lib/modules/$(kernel-release)/.config \ + /etc/kernel-config \ + /boot/config-$(kernel-release) +endif +KCONFIG_DEFCONFIG_LIST += arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) -xconfig: $(obj)/qconf - $< $(silent) $(Kconfig) +ifneq ($(findstring c, $(KBUILD_EXTRA_WARN)),) +export KCONFIG_WARN_UNKNOWN_SYMBOLS=1 +endif -gconfig: $(obj)/gconf - $< $(silent) $(Kconfig) +ifneq ($(findstring e, $(KBUILD_EXTRA_WARN)),) +export KCONFIG_WERROR=1 +endif -menuconfig: $(obj)/mconf - $< $(silent) $(Kconfig) +# We need this, in case the user has it in its environment +unexport CONFIG_ -config: $(obj)/conf - $< $(silent) --oldaskconfig $(Kconfig) +config-prog := conf +menuconfig-prog := mconf +nconfig-prog := nconf +gconfig-prog := gconf +xconfig-prog := qconf -nconfig: $(obj)/nconf - $< $(silent) $(Kconfig) +define config_rule +PHONY += $(1) +$(1): $(obj)/$($(1)-prog) + $(Q)$$< $(silent) $(Kconfig) -# This has become an internal implementation detail and is now deprecated -# for external use. -syncconfig: $(obj)/conf - $(Q)mkdir -p include/config include/generated - $< $(silent) --$@ $(Kconfig) +PHONY += build_$(1) +build_$(1): $(obj)/$($(1)-prog) +endef +$(foreach c, config menuconfig nconfig gconfig xconfig, $(eval $(call config_rule,$(c)))) + +PHONY += localmodconfig localyesconfig localyesconfig localmodconfig: $(obj)/conf - $(Q)mkdir -p include/config include/generated - $(Q)perl $(srctree)/$(src)/streamline_config.pl --$@ $(srctree) $(Kconfig) > .tmp.config - $(Q)if [ -f .config ]; then \ - cmp -s .tmp.config .config || \ - (mv -f .config .config.old.1; \ - mv -f .tmp.config .config; \ - $< $(silent) --oldconfig $(Kconfig); \ - mv -f .config.old.1 .config.old) \ - else \ - mv -f .tmp.config .config; \ - $< $(silent) --oldconfig $(Kconfig); \ + $(Q)$(PERL) $(srctree)/$(src)/streamline_config.pl --$@ $(srctree) $(Kconfig) > .tmp.config + $(Q)if [ -f .config ]; then \ + cmp -s .tmp.config .config || \ + (mv -f .config .config.old.1; \ + mv -f .tmp.config .config; \ + $< $(silent) --oldconfig $(Kconfig); \ + mv -f .config.old.1 .config.old) \ + else \ + mv -f .tmp.config .config; \ + $< $(silent) --oldconfig $(Kconfig); \ fi $(Q)rm -f .tmp.config -# Create new linux.pot file -# Adjust charset to UTF-8 in .po file to accept UTF-8 in Kconfig files -update-po-config: $(obj)/kxgettext $(obj)/gconf.glade.h - $(Q)$(kecho) " GEN config.pot" - $(Q)xgettext --default-domain=linux \ - --add-comments --keyword=_ --keyword=N_ \ - --from-code=UTF-8 \ - --files-from=$(srctree)/scripts/kconfig/POTFILES.in \ - --directory=$(srctree) --directory=$(objtree) \ - --output $(obj)/config.pot - $(Q)sed -i s/CHARSET/UTF-8/ $(obj)/config.pot - $(Q)(for i in `ls $(srctree)/arch/*/Kconfig \ - $(srctree)/arch/*/um/Kconfig`; \ - do \ - $(kecho) " GEN $$i"; \ - $(obj)/kxgettext $$i \ - >> $(obj)/config.pot; \ - done ) - $(Q)$(kecho) " GEN linux.pot" - $(Q)msguniq --sort-by-file --to-code=UTF-8 $(obj)/config.pot \ - --output $(obj)/linux.pot - $(Q)rm -f $(obj)/config.pot - # These targets map 1:1 to the commandline options of 'conf' +# +# Note: +# syncconfig has become an internal implementation detail and is now +# deprecated for external use simple-targets := oldconfig allnoconfig allyesconfig allmodconfig \ - alldefconfig randconfig listnewconfig olddefconfig + alldefconfig randconfig listnewconfig olddefconfig syncconfig \ + helpnewconfig yes2modconfig mod2yesconfig mod2noconfig + PHONY += $(simple-targets) $(simple-targets): $(obj)/conf - $< $(silent) --$@ $(Kconfig) - -PHONY += oldnoconfig silentoldconfig savedefconfig defconfig - -# oldnoconfig is an alias of olddefconfig, because people already are dependent -# on its behavior (sets new symbols to their default value but not 'n') with the -# counter-intuitive name. -oldnoconfig: olddefconfig - @echo " WARNING: \"oldnoconfig\" target will be removed after Linux 4.19" - @echo " Please use \"olddefconfig\" instead, which is an alias." + $(Q)$< $(silent) --$@ $(Kconfig) -# We do not expect manual invokcation of "silentoldcofig" (or "syncconfig"). -silentoldconfig: syncconfig - @echo " WARNING: \"silentoldconfig\" has been renamed to \"syncconfig\"" - @echo " and is now an internal implementation detail." - @echo " What you want is probably \"oldconfig\"." - @echo " \"silentoldconfig\" will be removed after Linux 4.19" +PHONY += savedefconfig defconfig savedefconfig: $(obj)/conf - $< $(silent) --$@=defconfig $(Kconfig) + $(Q)$< $(silent) --$@=defconfig $(Kconfig) defconfig: $(obj)/conf -ifeq ($(KBUILD_DEFCONFIG),) - $< $(silent) --defconfig $(Kconfig) -else ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)),) @$(kecho) "*** Default configuration is based on '$(KBUILD_DEFCONFIG)'" $(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) $(Kconfig) @@ -122,49 +102,45 @@ else @$(kecho) "*** Default configuration is based on target '$(KBUILD_DEFCONFIG)'" $(Q)$(MAKE) -f $(srctree)/Makefile $(KBUILD_DEFCONFIG) endif -endif %_defconfig: $(obj)/conf $(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig) -configfiles=$(wildcard $(srctree)/kernel/configs/$@ $(srctree)/arch/$(SRCARCH)/configs/$@) +configfiles = $(wildcard $(srctree)/kernel/configs/$(1) $(srctree)/arch/$(SRCARCH)/configs/$(1)) +all-config-fragments = $(call configfiles,*.config) +config-fragments = $(call configfiles,$@) %.config: $(obj)/conf - $(if $(call configfiles),, $(error No configuration exists for this target on this architecture)) - $(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh -m .config $(configfiles) - +$(Q)yes "" | $(MAKE) -f $(srctree)/Makefile oldconfig - -PHONY += kvmconfig -kvmconfig: kvm_guest.config - @: - -PHONY += xenconfig -xenconfig: xen.config - @: + $(if $(config-fragments),, $(error $@ fragment does not exists on this architecture)) + $(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh -m $(KCONFIG_CONFIG) $(config-fragments) + $(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig PHONY += tinyconfig tinyconfig: - $(Q)$(MAKE) -f $(srctree)/Makefile allnoconfig tiny.config + $(Q)KCONFIG_ALLCONFIG=kernel/configs/tiny-base.config $(MAKE) -f $(srctree)/Makefile allnoconfig + $(Q)$(MAKE) -f $(srctree)/Makefile tiny.config # CHECK: -o cache_dir= working? PHONY += testconfig testconfig: $(obj)/conf - $(PYTHON3) -B -m pytest $(srctree)/$(src)/tests \ + $(Q)$(PYTHON3) -B -m pytest $(srctree)/$(src)/tests \ -o cache_dir=$(abspath $(obj)/tests/.cache) \ $(if $(findstring 1,$(KBUILD_VERBOSE)),--capture=no) -clean-dirs += tests/.cache +clean-files += tests/.cache # Help text used by make help help: + @echo 'Configuration targets:' @echo ' config - Update current config utilising a line-oriented program' - @echo ' nconfig - Update current config utilising a ncurses menu based' - @echo ' program' + @echo ' nconfig - Update current config utilising a ncurses menu based program' @echo ' menuconfig - Update current config utilising a menu based program' @echo ' xconfig - Update current config utilising a Qt based front-end' @echo ' gconfig - Update current config utilising a GTK+ based front-end' @echo ' oldconfig - Update current config utilising a provided .config as base' @echo ' localmodconfig - Update current config disabling modules not loaded' + @echo ' except those preserved by LMC_KEEP environment variable' @echo ' localyesconfig - Update current config converting local mods to core' + @echo ' except those preserved by LMC_KEEP environment variable' @echo ' defconfig - New config with default from ARCH supplied defconfig' @echo ' savedefconfig - Save current config as ./defconfig (minimal config)' @echo ' allnoconfig - New config where all options are answered with no' @@ -172,171 +148,100 @@ help: @echo ' allmodconfig - New config selecting modules when possible' @echo ' alldefconfig - New config with all symbols set to default' @echo ' randconfig - New config with random answer to all options' + @echo ' yes2modconfig - Change answers from yes to mod if possible' + @echo ' mod2yesconfig - Change answers from mod to yes if possible' + @echo ' mod2noconfig - Change answers from mod to no if possible' @echo ' listnewconfig - List new options' + @echo ' helpnewconfig - List new options and help text' @echo ' olddefconfig - Same as oldconfig but sets new symbols to their' @echo ' default value without prompting' - @echo ' kvmconfig - Enable additional options for kvm guest kernel support' - @echo ' xenconfig - Enable additional options for xen dom0 and guest kernel support' @echo ' tinyconfig - Configure the tiniest possible kernel' - -# lxdialog stuff -check-lxdialog := $(srctree)/$(src)/lxdialog/check-lxdialog.sh - -# Use recursively expanded variables so we do not call gcc unless -# we really need to do so. (Do not call gcc as part of make mrproper) -HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags) \ - -DLOCALE + @echo ' testconfig - Run Kconfig unit tests (requires python3 and pytest)' + @echo '' + @echo 'Configuration topic targets:' + @$(foreach f, $(all-config-fragments), \ + if help=$$(grep -m1 '^# Help: ' $(f)); then \ + printf ' %-25s - %s\n' '$(notdir $(f))' "$${help#*: }"; \ + fi;) # =========================================================================== -# Shared Makefile for the various kconfig executables: -# conf: Used for defconfig, oldconfig and related targets -# nconf: Used for the nconfig target. -# Utilizes ncurses -# mconf: Used for the menuconfig target -# Utilizes the lxdialog package -# qconf: Used for the xconfig target -# Based on Qt which needs to be installed to compile it -# gconf: Used for the gconfig target -# Based on GTK+ which needs to be installed to compile it # object files used by all kconfig flavours +common-objs := confdata.o expr.o lexer.lex.o menu.o parser.tab.o \ + preprocess.o symbol.o util.o -lxdialog := lxdialog/checklist.o lxdialog/util.o lxdialog/inputbox.o -lxdialog += lxdialog/textbox.o lxdialog/yesno.o lxdialog/menubox.o - -conf-objs := conf.o zconf.tab.o -mconf-objs := mconf.o zconf.tab.o $(lxdialog) -nconf-objs := nconf.o zconf.tab.o nconf.gui.o -kxgettext-objs := kxgettext.o zconf.tab.o -qconf-cxxobjs := qconf.o -qconf-objs := zconf.tab.o -gconf-objs := gconf.o zconf.tab.o +$(obj)/lexer.lex.o: $(obj)/parser.tab.h +HOSTCFLAGS_lexer.lex.o := -I $(srctree)/$(src) +HOSTCFLAGS_parser.tab.o := -I $(srctree)/$(src) -hostprogs-y := conf +# conf: Used for defconfig, oldconfig and related targets +hostprogs += conf +conf-objs := conf.o $(common-objs) +# nconf: Used for the nconfig target based on ncurses ifeq ($(MAKECMDGOALS),nconf) - hostprogs-y += nconf -endif - -ifeq ($(MAKECMDGOALS),mconf) - hostprogs-y += mconf -endif +hostprogs += nconf +nconf-objs := nconf.o nconf.gui.o mnconf-common.o $(common-objs) -ifeq ($(MAKECMDGOALS),update-po-config) - hostprogs-y += kxgettext -endif +HOSTLDLIBS_nconf = $(call read-file, $(obj)/nconf-libs) +HOSTCFLAGS_nconf.o = $(call read-file, $(obj)/nconf-cflags) +HOSTCFLAGS_nconf.gui.o = $(call read-file, $(obj)/nconf-cflags) -ifeq ($(MAKECMDGOALS),qconf) - qconf-target := 1 +$(obj)/nconf: | $(obj)/nconf-libs +$(obj)/nconf.o $(obj)/nconf.gui.o: | $(obj)/nconf-cflags endif -ifeq ($(MAKECMDGOALS),gconf) - gconf-target := 1 -endif +# mconf: Used for the menuconfig target based on lxdialog +ifeq ($(MAKECMDGOALS),mconf) +hostprogs += mconf +lxdialog := $(addprefix lxdialog/, \ + checklist.o inputbox.o menubox.o textbox.o util.o yesno.o) +mconf-objs := mconf.o $(lxdialog) mnconf-common.o $(common-objs) -ifeq ($(qconf-target),1) - hostprogs-y += qconf -endif +HOSTLDLIBS_mconf = $(call read-file, $(obj)/mconf-libs) +$(foreach f, mconf.o $(lxdialog), \ + $(eval HOSTCFLAGS_$f = $$(call read-file, $(obj)/mconf-cflags))) -ifeq ($(gconf-target),1) - hostprogs-y += gconf +$(obj)/mconf: | $(obj)/mconf-libs +$(addprefix $(obj)/, mconf.o $(lxdialog)): | $(obj)/mconf-cflags endif -targets += zconf.lex.c -clean-files := qconf.moc .tmp_qtcheck .tmp_gtkcheck -clean-files += gconf.glade.h -clean-files += config.pot linux.pot - -# Check that we have the required ncurses stuff installed for lxdialog (menuconfig) -PHONY += $(obj)/dochecklxdialog -$(addprefix $(obj)/, mconf.o $(lxdialog)): $(obj)/dochecklxdialog -$(obj)/dochecklxdialog: - $(Q)$(CONFIG_SHELL) $(check-lxdialog) -check $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTLOADLIBES_mconf) - -always := dochecklxdialog - -# Add environment specific flags -HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(srctree)/$(src)/check.sh $(HOSTCC) $(HOSTCFLAGS)) -HOST_EXTRACXXFLAGS += $(shell $(CONFIG_SHELL) $(srctree)/$(src)/check.sh $(HOSTCXX) $(HOSTCXXFLAGS)) - -# generated files seem to need this to find local include files -HOSTCFLAGS_zconf.lex.o := -I$(src) -HOSTCFLAGS_zconf.tab.o := -I$(src) - -HOSTLOADLIBES_qconf = $(KC_QT_LIBS) -HOSTCXXFLAGS_qconf.o = $(KC_QT_CFLAGS) +# qconf: Used for the xconfig target based on Qt +ifeq ($(MAKECMDGOALS),qconf) +hostprogs += qconf +qconf-cxxobjs := qconf.o qconf-moc.o +qconf-objs := images.o $(common-objs) -HOSTLOADLIBES_gconf = `pkg-config --libs gtk+-2.0 gmodule-2.0 libglade-2.0` -HOSTCFLAGS_gconf.o = `pkg-config --cflags gtk+-2.0 gmodule-2.0 libglade-2.0` \ - -Wno-missing-prototypes +HOSTLDLIBS_qconf = $(call read-file, $(obj)/qconf-libs) +HOSTCXXFLAGS_qconf.o = -std=c++11 -fPIC $(call read-file, $(obj)/qconf-cflags) +HOSTCXXFLAGS_qconf-moc.o = -std=c++11 -fPIC $(call read-file, $(obj)/qconf-cflags) +$(obj)/qconf: | $(obj)/qconf-libs +$(obj)/qconf.o $(obj)/qconf-moc.o: | $(obj)/qconf-cflags -HOSTLOADLIBES_mconf = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC)) +quiet_cmd_moc = MOC $@ + cmd_moc = $(call read-file, $(obj)/qconf-bin)/moc $< -o $@ -HOSTLOADLIBES_nconf = $(shell \ - pkg-config --libs menuw panelw ncursesw 2>/dev/null \ - || pkg-config --libs menu panel ncurses 2>/dev/null \ - || echo "-lmenu -lpanel -lncurses" ) -$(obj)/qconf.o: $(obj)/.tmp_qtcheck +$(obj)/qconf-moc.cc: $(src)/qconf.h FORCE | $(obj)/qconf-bin + $(call if_changed,moc) -ifeq ($(MAKECMDGOALS),qconf) -$(obj)/.tmp_qtcheck: $(src)/Makefile --include $(obj)/.tmp_qtcheck - -# Qt needs some extra effort... -$(obj)/.tmp_qtcheck: - @set -e; $(kecho) " CHECK qt"; \ - if pkg-config --exists Qt5Core; then \ - cflags="-std=c++11 -fPIC `pkg-config --cflags Qt5Core Qt5Gui Qt5Widgets`"; \ - libs=`pkg-config --libs Qt5Core Qt5Gui Qt5Widgets`; \ - moc=`pkg-config --variable=host_bins Qt5Core`/moc; \ - elif pkg-config --exists QtCore; then \ - cflags=`pkg-config --cflags QtCore QtGui`; \ - libs=`pkg-config --libs QtCore QtGui`; \ - moc=`pkg-config --variable=moc_location QtCore`; \ - else \ - echo >&2 "*"; \ - echo >&2 "* Could not find Qt via pkg-config."; \ - echo >&2 "* Please install either Qt 4.8 or 5.x. and make sure it's in PKG_CONFIG_PATH"; \ - echo >&2 "*"; \ - exit 1; \ - fi; \ - echo "KC_QT_CFLAGS=$$cflags" > $@; \ - echo "KC_QT_LIBS=$$libs" >> $@; \ - echo "KC_QT_MOC=$$moc" >> $@ +targets += qconf-moc.cc endif +# gconf: Used for the gconfig target based on GTK+ ifeq ($(MAKECMDGOALS),gconf) -$(obj)/gconf.o: $(obj)/.tmp_gtkcheck --include $(obj)/.tmp_gtkcheck - -# GTK+ needs some extra effort, too... -$(obj)/.tmp_gtkcheck: - @if `pkg-config --exists gtk+-2.0 gmodule-2.0 libglade-2.0`; then \ - if `pkg-config --atleast-version=2.0.0 gtk+-2.0`; then \ - touch $@; \ - else \ - echo >&2 "*"; \ - echo >&2 "* GTK+ is present but version >= 2.0.0 is required."; \ - echo >&2 "*"; \ - false; \ - fi \ - else \ - echo >&2 "*"; \ - echo >&2 "* Unable to find the GTK+ installation. Please make sure that"; \ - echo >&2 "* the GTK+ 2.0 development package is correctly installed..."; \ - echo >&2 "* You need gtk+-2.0, glib-2.0 and libglade-2.0."; \ - echo >&2 "*"; \ - false; \ - fi -endif +hostprogs += gconf +gconf-objs := gconf.o images.o $(common-objs) -$(obj)/zconf.tab.o: $(obj)/zconf.lex.c +HOSTLDLIBS_gconf = $(call read-file, $(obj)/gconf-libs) +HOSTCFLAGS_gconf.o = $(call read-file, $(obj)/gconf-cflags) + +$(obj)/gconf: | $(obj)/gconf-libs +$(obj)/gconf.o: | $(obj)/gconf-cflags +endif -$(obj)/qconf.o: $(obj)/qconf.moc +# check if necessary packages are available, and configure build flags +cmd_conf_cfg = $(src)/$< $(addprefix $(obj)/$*conf-, cflags libs bin); touch $(obj)/$*conf-bin -$(obj)/%.moc: $(src)/%.h $(obj)/.tmp_qtcheck - $(KC_QT_MOC) -i $< -o $@ +$(obj)/%conf-cflags $(obj)/%conf-libs $(obj)/%conf-bin: $(src)/%conf-cfg.sh + $(call cmd,conf_cfg) -# Extract gconf menu items for i18n support -$(obj)/gconf.glade.h: $(obj)/gconf.glade - $(Q)intltool-extract --type=gettext/glade --srcdir=$(srctree) \ - $(obj)/gconf.glade +clean-files += *conf-cflags *conf-libs *conf-bin diff --git a/support/kconfig/Makefile.br b/support/kconfig/Makefile.br index 41c5ce165d..d163256846 100644 --- a/support/kconfig/Makefile.br +++ b/support/kconfig/Makefile.br @@ -5,12 +5,11 @@ srctree := . obj ?= . include Makefile -#HOSTCFLAGS+=-Dinline="" -include foo.h -include $(obj)/.depend $(obj)/.depend: $(wildcard *.h *.c) $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) -MM *.c > $@ 2>/dev/null || : -__hostprogs := $(sort $(hostprogs-y) $(hostprogs-m)) +__hostprogs := $(sort $(hostprogs)) host-csingle := $(foreach m,$(__hostprogs),$(if $($(m)-objs),,$(m))) host-cmulti := $(foreach m,$(__hostprogs),\ $(if $($(m)-cxxobjs),,$(if $($(m)-objs),$(m)))) @@ -25,10 +24,10 @@ $(host-csingle): %: %.c $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< -o $(obj)/$@ $(host-cmulti): %: $(host-cobjs) $(host-cshlib) - $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLDLIBS_$(@F)) -o $(obj)/$@ $(host-cxxmulti): %: $(host-cxxobjs) $(host-cobjs) $(host-cshlib) - $(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ + $(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLDLIBS_$(@F)) -o $(obj)/$@ $(obj)/%.o: %.c $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) -c $< -o $@ @@ -39,6 +38,9 @@ $(obj)/%.o: $(obj)/%.c $(obj)/%.o: %.cc $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$(@F)) -c $< -o $@ +$(obj)/%.o: $(obj)/%.cc + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$(@F)) -c $< -o $@ + $(obj)/%:: $(src)/%_shipped $(Q)cat $< > $@ diff --git a/support/kconfig/POTFILES.in b/support/kconfig/POTFILES.in deleted file mode 100644 index 9674573969..0000000000 --- a/support/kconfig/POTFILES.in +++ /dev/null @@ -1,12 +0,0 @@ -scripts/kconfig/lxdialog/checklist.c -scripts/kconfig/lxdialog/inputbox.c -scripts/kconfig/lxdialog/menubox.c -scripts/kconfig/lxdialog/textbox.c -scripts/kconfig/lxdialog/util.c -scripts/kconfig/lxdialog/yesno.c -scripts/kconfig/mconf.c -scripts/kconfig/conf.c -scripts/kconfig/confdata.c -scripts/kconfig/gconf.c -scripts/kconfig/gconf.glade.h -scripts/kconfig/qconf.cc diff --git a/support/kconfig/README.buildroot b/support/kconfig/README.buildroot index 76808f85b4..82bb855d01 100644 --- a/support/kconfig/README.buildroot +++ b/support/kconfig/README.buildroot @@ -3,10 +3,13 @@ to suit Buildroot. To update: cp -r /usr/src/linux/scripts/kconfig support/kconfig.new + cp /usr/src/linux/scripts/Kbuild.include support/kconfig.new cd support/kconfig.new - # zconf.lex.c and zconf.tab.c needs to be generated by 'make menuconfig' - mv zconf.lex.c zconf.lex.c_shipped - mv zconf.tab.c zconf.tab.c_shipped + # lexer.lex.c, parser.tab.c and parser.tab.h needs to be generated + # by 'make menuconfig' + mv lexer.lex.c lexer.lex.c_shipped + mv parser.tab.c parser.tab.c_shipped + mv parser.tab.h parser.tab.h_shipped rm -rf tests/ cp -a ../kconfig/patches ../kconfig/README.buildroot ../kconfig/.gitignore . quilt push -a diff --git a/support/kconfig/array_size.h b/support/kconfig/array_size.h new file mode 100644 index 0000000000..26ba78d867 --- /dev/null +++ b/support/kconfig/array_size.h @@ -0,0 +1,11 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef ARRAY_SIZE_H +#define ARRAY_SIZE_H + +/** + * ARRAY_SIZE - get the number of elements in array @arr + * @arr: array to be sized + */ +#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) + +#endif /* ARRAY_SIZE_H */ diff --git a/support/kconfig/check.sh b/support/kconfig/check.sh deleted file mode 100755 index 97f0fee7d1..0000000000 --- a/support/kconfig/check.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Needed for systems without gettext -$* -x c -o /dev/null - > /dev/null 2>&1 << EOF -#include -int main() -{ - gettext(""); - return 0; -} -EOF -if [ ! "$?" -eq "0" ]; then - echo -DKBUILD_NO_NLS; -fi diff --git a/support/kconfig/conf.c b/support/kconfig/conf.c index 2d7a7ac437..965bb40c50 100644 --- a/support/kconfig/conf.c +++ b/support/kconfig/conf.c @@ -1,9 +1,8 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ -#include #include #include #include @@ -12,10 +11,10 @@ #include #include #include -#include #include #include +#include "internal.h" #include "lkc.h" static void conf(struct menu *menu); @@ -33,10 +32,14 @@ enum input_mode { defconfig, savedefconfig, listnewconfig, + helpnewconfig, olddefconfig, + yes2modconfig, + mod2yesconfig, + mod2noconfig, }; static enum input_mode input_mode = oldaskconfig; - +static int input_mode_opt; static int indent = 1; static int tty_stdio; static int sync_kconfig; @@ -81,17 +84,245 @@ static void xfgets(char *str, int size, FILE *in) printf("%s", str); } -static int conf_askvalue(struct symbol *sym, const char *def) +static void set_randconfig_seed(void) +{ + unsigned int seed; + char *env; + bool seed_set = false; + + env = getenv("KCONFIG_SEED"); + if (env && *env) { + char *endp; + + seed = strtol(env, &endp, 0); + if (*endp == '\0') + seed_set = true; + } + + if (!seed_set) { + struct timeval now; + + /* + * Use microseconds derived seed, compensate for systems where it may + * be zero. + */ + gettimeofday(&now, NULL); + seed = (now.tv_sec + 1) * (now.tv_usec + 1); + } + + printf("KCONFIG_SEED=0x%X\n", seed); + srand(seed); +} + +static bool randomize_choice_values(struct symbol *csym) +{ + struct property *prop; + struct symbol *sym; + struct expr *e; + int cnt, def; + + /* + * If choice is mod then we may have more items selected + * and if no then no-one. + * In both cases stop. + */ + if (csym->curr.tri != yes) + return false; + + prop = sym_get_choice_prop(csym); + + /* count entries in choice block */ + cnt = 0; + expr_list_for_each_sym(prop->expr, e, sym) + cnt++; + + /* + * find a random value and set it to yes, + * set the rest to no so we have only one set + */ + def = rand() % cnt; + + cnt = 0; + expr_list_for_each_sym(prop->expr, e, sym) { + if (def == cnt++) { + sym->def[S_DEF_USER].tri = yes; + csym->def[S_DEF_USER].val = sym; + } else { + sym->def[S_DEF_USER].tri = no; + } + sym->flags |= SYMBOL_DEF_USER; + /* clear VALID to get value calculated */ + sym->flags &= ~SYMBOL_VALID; + } + csym->flags |= SYMBOL_DEF_USER; + /* clear VALID to get value calculated */ + csym->flags &= ~SYMBOL_VALID; + + return true; +} + +enum conf_def_mode { + def_default, + def_yes, + def_mod, + def_no, + def_random +}; + +static bool conf_set_all_new_symbols(enum conf_def_mode mode) +{ + struct symbol *sym, *csym; + int cnt; + /* + * can't go as the default in switch-case below, otherwise gcc whines + * about -Wmaybe-uninitialized + */ + int pby = 50; /* probability of bool = y */ + int pty = 33; /* probability of tristate = y */ + int ptm = 33; /* probability of tristate = m */ + bool has_changed = false; + + if (mode == def_random) { + int n, p[3]; + char *env = getenv("KCONFIG_PROBABILITY"); + + n = 0; + while (env && *env) { + char *endp; + int tmp = strtol(env, &endp, 10); + + if (tmp >= 0 && tmp <= 100) { + p[n++] = tmp; + } else { + errno = ERANGE; + perror("KCONFIG_PROBABILITY"); + exit(1); + } + env = (*endp == ':') ? endp + 1 : endp; + if (n >= 3) + break; + } + switch (n) { + case 1: + pby = p[0]; + ptm = pby / 2; + pty = pby - ptm; + break; + case 2: + pty = p[0]; + ptm = p[1]; + pby = pty + ptm; + break; + case 3: + pby = p[0]; + pty = p[1]; + ptm = p[2]; + break; + } + + if (pty + ptm > 100) { + errno = ERANGE; + perror("KCONFIG_PROBABILITY"); + exit(1); + } + } + + for_all_symbols(sym) { + if (sym_has_value(sym) || sym->flags & SYMBOL_VALID) + continue; + switch (sym_get_type(sym)) { + case S_BOOLEAN: + case S_TRISTATE: + has_changed = true; + switch (mode) { + case def_yes: + sym->def[S_DEF_USER].tri = yes; + break; + case def_mod: + sym->def[S_DEF_USER].tri = mod; + break; + case def_no: + sym->def[S_DEF_USER].tri = no; + break; + case def_random: + sym->def[S_DEF_USER].tri = no; + cnt = rand() % 100; + if (sym->type == S_TRISTATE) { + if (cnt < pty) + sym->def[S_DEF_USER].tri = yes; + else if (cnt < pty + ptm) + sym->def[S_DEF_USER].tri = mod; + } else if (cnt < pby) + sym->def[S_DEF_USER].tri = yes; + break; + default: + continue; + } + if (!(sym_is_choice(sym) && mode == def_random)) + sym->flags |= SYMBOL_DEF_USER; + break; + default: + break; + } + + } + + sym_clear_all_valid(); + + /* + * We have different type of choice blocks. + * If curr.tri equals to mod then we can select several + * choice symbols in one block. + * In this case we do nothing. + * If curr.tri equals yes then only one symbol can be + * selected in a choice block and we set it to yes, + * and the rest to no. + */ + if (mode != def_random) { + for_all_symbols(csym) { + if ((sym_is_choice(csym) && !sym_has_value(csym)) || + sym_is_choice_value(csym)) + csym->flags |= SYMBOL_NEED_SET_CHOICE_VALUES; + } + } + + for_all_symbols(csym) { + if (sym_has_value(csym) || !sym_is_choice(csym)) + continue; + + sym_calc_value(csym); + if (mode == def_random) + has_changed |= randomize_choice_values(csym); + else { + set_all_choice_values(csym); + has_changed = true; + } + } + + return has_changed; +} + +static void conf_rewrite_tristates(tristate old_val, tristate new_val) { - enum symbol_type type = sym_get_type(sym); + struct symbol *sym; + for_all_symbols(sym) { + if (sym_get_type(sym) == S_TRISTATE && + sym->def[S_DEF_USER].tri == old_val) + sym->def[S_DEF_USER].tri = new_val; + } + sym_clear_all_valid(); +} + +static int conf_askvalue(struct symbol *sym, const char *def) +{ if (!sym_has_value(sym)) - printf(_("(NEW) ")); + printf("(NEW) "); line[0] = '\n'; line[1] = 0; - if (!sym_is_changable(sym)) { + if (!sym_is_changeable(sym)) { printf("%s\n", def); line[0] = '\n'; line[1] = 0; @@ -106,24 +337,12 @@ static int conf_askvalue(struct symbol *sym, const char *def) return 0; } /* fall through */ - case oldaskconfig: + default: fflush(stdout); xfgets(line, sizeof(line), stdin); - return 1; - default: break; } - switch (type) { - case S_INT: - case S_HEX: - case S_STRING: - printf("%s\n", def); - return 1; - default: - ; - } - printf("%s", line); return 1; } @@ -133,10 +352,10 @@ static int conf_string(struct menu *menu) const char *def; while (1) { - printf("%*s%s ", indent - 1, "", _(menu->prompt->text)); + printf("%*s%s ", indent - 1, "", menu->prompt->text); printf("(%s) ", sym->name); def = sym_get_string_value(sym); - if (sym_get_string_value(sym)) + if (def) printf("[%s] ", def); if (!conf_askvalue(sym, def)) return 0; @@ -166,7 +385,7 @@ static int conf_sym(struct menu *menu) tristate oldval, newval; while (1) { - printf("%*s%s ", indent - 1, "", _(menu->prompt->text)); + printf("%*s%s ", indent - 1, "", menu->prompt->text); if (sym->name) printf("(%s) ", sym->name); putchar('['); @@ -235,7 +454,7 @@ static int conf_choice(struct menu *menu) sym = menu->sym; is_new = !sym_has_value(sym); - if (sym_is_changable(sym)) { + if (sym_is_changeable(sym)) { conf_sym(menu); sym_calc_value(sym); switch (sym_get_tristate_value(sym)) { @@ -251,7 +470,7 @@ static int conf_choice(struct menu *menu) case no: return 1; case mod: - printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu))); + printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu)); return 0; case yes: break; @@ -261,7 +480,7 @@ static int conf_choice(struct menu *menu) while (1) { int cnt, def; - printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu))); + printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu)); def_sym = sym_get_choice_value(sym); cnt = def = 0; line[0] = 0; @@ -269,7 +488,7 @@ static int conf_choice(struct menu *menu) if (!menu_is_visible(child)) continue; if (!child->sym) { - printf("%*c %s\n", indent, '*', _(menu_get_prompt(child))); + printf("%*c %s\n", indent, '*', menu_get_prompt(child)); continue; } cnt++; @@ -278,14 +497,14 @@ static int conf_choice(struct menu *menu) printf("%*c", indent, '>'); } else printf("%*c", indent, ' '); - printf(" %d. %s", cnt, _(menu_get_prompt(child))); + printf(" %d. %s", cnt, menu_get_prompt(child)); if (child->sym->name) printf(" (%s)", child->sym->name); if (!sym_has_value(child->sym)) - printf(_(" (NEW)")); + printf(" (NEW)"); printf("\n"); } - printf(_("%*schoice"), indent - 1, ""); + printf("%*schoice", indent - 1, ""); if (cnt == 1) { printf("[1]: 1\n"); goto conf_childs; @@ -332,12 +551,7 @@ static int conf_choice(struct menu *menu) print_help(child); continue; } - sym_set_choice_value(sym, child->sym); - for (child = child->list; child; child = child->next) { - indent += 2; - conf(child); - indent -= 2; - } + sym_set_tristate_value(child->sym, yes); return 1; } } @@ -372,7 +586,7 @@ static void conf(struct menu *menu) if (prompt) printf("%*c\n%*c %s\n%*c\n", indent, '*', - indent, '*', _(prompt), + indent, '*', prompt, indent, '*'); default: ; @@ -418,29 +632,26 @@ static void check_conf(struct menu *menu) return; sym = menu->sym; - if (sym && !sym_has_value(sym)) { - if (sym_is_changable(sym) || - (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) { - if (input_mode == listnewconfig) { - if (sym->name) { - const char *str; - - if (sym->type == S_STRING) { - str = sym_get_string_value(sym); - str = sym_escape_string_value(str); - printf("%s%s=%s\n", CONFIG_, sym->name, str); - free((void *)str); - } else { - str = sym_get_string_value(sym); - printf("%s%s=%s\n", CONFIG_, sym->name, str); - } - } - } else { - if (!conf_cnt++) - printf(_("*\n* Restart config...\n*\n")); - rootEntry = menu_get_parent_menu(menu); - conf(rootEntry); - } + if (sym && !sym_has_value(sym) && + (sym_is_changeable(sym) || + (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes))) { + + switch (input_mode) { + case listnewconfig: + if (sym->name) + print_symbol_for_listconfig(sym); + break; + case helpnewconfig: + printf("-----\n"); + print_help(menu); + printf("-----\n"); + break; + default: + if (!conf_cnt++) + printf("*\n* Restart config...\n*\n"); + rootEntry = menu_get_parent_menu(menu); + conf(rootEntry); + break; } } @@ -448,40 +659,44 @@ static void check_conf(struct menu *menu) check_conf(child); } -static struct option long_opts[] = { - {"oldaskconfig", no_argument, NULL, oldaskconfig}, - {"oldconfig", no_argument, NULL, oldconfig}, - {"syncconfig", no_argument, NULL, syncconfig}, - {"defconfig", optional_argument, NULL, defconfig}, - {"savedefconfig", required_argument, NULL, savedefconfig}, - {"allnoconfig", no_argument, NULL, allnoconfig}, - {"allyesconfig", no_argument, NULL, allyesconfig}, - {"allmodconfig", no_argument, NULL, allmodconfig}, - {"alldefconfig", no_argument, NULL, alldefconfig}, - {"randconfig", no_argument, NULL, randconfig}, - {"listnewconfig", no_argument, NULL, listnewconfig}, - {"olddefconfig", no_argument, NULL, olddefconfig}, - /* - * oldnoconfig is an alias of olddefconfig, because people already - * are dependent on its behavior(sets new symbols to their default - * value but not 'n') with the counter-intuitive name. - */ - {"oldnoconfig", no_argument, NULL, olddefconfig}, +static const struct option long_opts[] = { + {"help", no_argument, NULL, 'h'}, + {"silent", no_argument, NULL, 's'}, + {"oldaskconfig", no_argument, &input_mode_opt, oldaskconfig}, + {"oldconfig", no_argument, &input_mode_opt, oldconfig}, + {"syncconfig", no_argument, &input_mode_opt, syncconfig}, + {"defconfig", required_argument, &input_mode_opt, defconfig}, + {"savedefconfig", required_argument, &input_mode_opt, savedefconfig}, + {"allnoconfig", no_argument, &input_mode_opt, allnoconfig}, + {"allyesconfig", no_argument, &input_mode_opt, allyesconfig}, + {"allmodconfig", no_argument, &input_mode_opt, allmodconfig}, + {"alldefconfig", no_argument, &input_mode_opt, alldefconfig}, + {"randconfig", no_argument, &input_mode_opt, randconfig}, + {"listnewconfig", no_argument, &input_mode_opt, listnewconfig}, + {"helpnewconfig", no_argument, &input_mode_opt, helpnewconfig}, + {"olddefconfig", no_argument, &input_mode_opt, olddefconfig}, + {"yes2modconfig", no_argument, &input_mode_opt, yes2modconfig}, + {"mod2yesconfig", no_argument, &input_mode_opt, mod2yesconfig}, + {"mod2noconfig", no_argument, &input_mode_opt, mod2noconfig}, {NULL, 0, NULL, 0} }; static void conf_usage(const char *progname) { - - printf("Usage: %s [-s] [option] \n", progname); - printf("[option] is _one_ of the following:\n"); + printf("Usage: %s [options] \n", progname); + printf("\n"); + printf("Generic options:\n"); + printf(" -h, --help Print this message and exit.\n"); + printf(" -s, --silent Do not print log.\n"); + printf("\n"); + printf("Mode options:\n"); printf(" --listnewconfig List new options\n"); + printf(" --helpnewconfig List new options and help text\n"); printf(" --oldaskconfig Start a new configuration using a line-oriented program\n"); printf(" --oldconfig Update a configuration using a provided .config as base\n"); printf(" --syncconfig Similar to oldconfig but generates configuration in\n" " include/{generated/,config/}\n"); printf(" --olddefconfig Same as oldconfig but sets new symbols to their default value\n"); - printf(" --oldnoconfig An alias of olddefconfig\n"); printf(" --defconfig New config with default defined in \n"); printf(" --savedefconfig Save the minimal current configuration to \n"); printf(" --allnoconfig New config where all options are answered with no\n"); @@ -489,6 +704,10 @@ static void conf_usage(const char *progname) printf(" --allmodconfig New config where all options are answered with mod\n"); printf(" --alldefconfig New config with all symbols set to default\n"); printf(" --randconfig New config with random answer to all options\n"); + printf(" --yes2modconfig Change answers from yes to mod if possible\n"); + printf(" --mod2yesconfig Change answers from mod to yes if possible\n"); + printf(" --mod2noconfig Change answers from mod to no if possible\n"); + printf(" (If none of the above is given, --oldaskconfig is the default)\n"); } int main(int ac, char **av) @@ -496,97 +715,60 @@ int main(int ac, char **av) const char *progname = av[0]; int opt; const char *name, *defconfig_file = NULL /* gcc uninit */; - struct stat tmpstat; - - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + int no_conf_write = 0; tty_stdio = isatty(0) && isatty(1); - while ((opt = getopt_long(ac, av, "s", long_opts, NULL)) != -1) { - if (opt == 's') { - conf_set_message_callback(NULL); - continue; - } - input_mode = (enum input_mode)opt; + while ((opt = getopt_long(ac, av, "hs", long_opts, NULL)) != -1) { switch (opt) { - case syncconfig: - sync_kconfig = 1; + case 'h': + conf_usage(progname); + exit(1); break; - case defconfig: - case savedefconfig: - defconfig_file = optarg; + case 's': + conf_set_message_callback(NULL); break; - case randconfig: - { - struct timeval now; - unsigned int seed; - char *seed_env; - - /* - * Use microseconds derived seed, - * compensate for systems where it may be zero - */ - gettimeofday(&now, NULL); - seed = (unsigned int)((now.tv_sec + 1) * (now.tv_usec + 1)); - - seed_env = getenv("KCONFIG_SEED"); - if( seed_env && *seed_env ) { - char *endp; - int tmp = (int)strtol(seed_env, &endp, 0); - if (*endp == '\0') { - seed = tmp; - } + case 0: + input_mode = input_mode_opt; + switch (input_mode) { + case syncconfig: + /* + * syncconfig is invoked during the build stage. + * Suppress distracting + * "configuration written to ..." + */ + conf_set_message_callback(NULL); + sync_kconfig = 1; + break; + case defconfig: + case savedefconfig: + defconfig_file = optarg; + break; + case randconfig: + set_randconfig_seed(); + break; + default: + break; } - fprintf( stderr, "KCONFIG_SEED=0x%X\n", seed ); - srand(seed); - break; - } - case oldaskconfig: - case oldconfig: - case allnoconfig: - case allyesconfig: - case allmodconfig: - case alldefconfig: - case listnewconfig: - case olddefconfig: - break; - case '?': - conf_usage(progname); - exit(1); + default: break; } } if (ac == optind) { - fprintf(stderr, _("%s: Kconfig file missing\n"), av[0]); + fprintf(stderr, "%s: Kconfig file missing\n", av[0]); conf_usage(progname); exit(1); } - name = av[optind]; - conf_parse(name); - if (sync_kconfig) { - name = conf_get_configname(); - if (stat(name, &tmpstat)) { - fprintf(stderr, _("***\n" - "*** Configuration file \"%s\" not found!\n" - "***\n" - "*** Please run some configurator (e.g. \"make oldconfig\" or\n" - "*** \"make menuconfig\" or \"make xconfig\").\n" - "***\n"), name); - exit(1); - } - } + conf_parse(av[optind]); + //zconfdump(stdout); switch (input_mode) { case defconfig: - if (!defconfig_file) - defconfig_file = conf_get_default_confname(); if (conf_read(defconfig_file)) { fprintf(stderr, - _("***\n" + "***\n" "*** Can't find default configuration \"%s\"!\n" - "***\n"), + "***\n", defconfig_file); exit(1); } @@ -596,7 +778,11 @@ int main(int ac, char **av) case oldaskconfig: case oldconfig: case listnewconfig: + case helpnewconfig: case olddefconfig: + case yes2modconfig: + case mod2yesconfig: + case mod2noconfig: conf_read(NULL); break; case allnoconfig: @@ -610,7 +796,7 @@ int main(int ac, char **av) if ((strcmp(name, "") != 0) && (strcmp(name, "1") != 0)) { if (conf_read_simple(name, S_DEF_USER)) { fprintf(stderr, - _("*** Can't read seed configuration \"%s\"!\n"), + "*** Can't read seed configuration \"%s\"!\n", name); exit(1); } @@ -627,7 +813,7 @@ int main(int ac, char **av) if (conf_read_simple(name, S_DEF_USER) && conf_read_simple("all.config", S_DEF_USER)) { fprintf(stderr, - _("*** KCONFIG_ALLCONFIG set, but no \"%s\" or \"all.config\" file found\n"), + "*** KCONFIG_ALLCONFIG set, but no \"%s\" or \"all.config\" file found\n", name); exit(1); } @@ -636,14 +822,18 @@ int main(int ac, char **av) break; } + if (conf_errors()) + exit(1); + if (sync_kconfig) { - if (conf_get_changed()) { - name = getenv("KCONFIG_NOSILENTUPDATE"); - if (name && *name) { + name = getenv("KCONFIG_NOSILENTUPDATE"); + if (name && *name) { + if (conf_get_changed()) { fprintf(stderr, - _("\n*** The configuration requires explicit update.\n\n")); + "\n*** The configuration requires explicit update.\n\n"); return 1; } + no_conf_write = 1; } } @@ -669,6 +859,15 @@ int main(int ac, char **av) break; case savedefconfig: break; + case yes2modconfig: + conf_rewrite_tristates(yes, mod); + break; + case mod2yesconfig: + conf_rewrite_tristates(mod, yes); + break; + case mod2noconfig: + conf_rewrite_tristates(mod, no); + break; case oldaskconfig: rootEntry = &rootmenu; conf(&rootmenu); @@ -676,6 +875,7 @@ int main(int ac, char **av) /* fall through */ case oldconfig: case listnewconfig: + case helpnewconfig: case syncconfig: /* Update until a loop caused no more changes */ do { @@ -688,29 +888,35 @@ int main(int ac, char **av) break; } - if (sync_kconfig) { - /* syncconfig is used during the build so we shall update autoconf. - * All other commands are only used to generate a config. - */ - if (conf_get_changed() && conf_write(NULL)) { - fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n")); - exit(1); - } - if (conf_write_autoconf()) { - fprintf(stderr, _("\n*** Error during update of the configuration.\n\n")); - return 1; - } - } else if (input_mode == savedefconfig) { + if (sym_dep_errors()) + exit(1); + + if (input_mode == savedefconfig) { if (conf_write_defconfig(defconfig_file)) { - fprintf(stderr, _("n*** Error while saving defconfig to: %s\n\n"), + fprintf(stderr, "n*** Error while saving defconfig to: %s\n\n", defconfig_file); return 1; } - } else if (input_mode != listnewconfig) { - if (conf_write(NULL)) { - fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n")); + } else if (input_mode != listnewconfig && input_mode != helpnewconfig) { + if (!no_conf_write && conf_write(NULL)) { + fprintf(stderr, "\n*** Error during writing of the configuration.\n\n"); exit(1); } + + /* + * Create auto.conf if it does not exist. + * This prevents GNU Make 4.1 or older from emitting + * "include/config/auto.conf: No such file or directory" + * in the top-level Makefile + * + * syncconfig always creates or updates auto.conf because it is + * used during the build. + */ + if (conf_write_autoconf(sync_kconfig) && sync_kconfig) { + fprintf(stderr, + "\n*** Error during sync of the configuration.\n\n"); + return 1; + } } return 0; } diff --git a/support/kconfig/confdata.c b/support/kconfig/confdata.c index 9ab980edd8..eb952e89ac 100644 --- a/support/kconfig/confdata.c +++ b/support/kconfig/confdata.c @@ -1,13 +1,17 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ +#include #include +#include #include #include #include +#include #include +#include #include #include #include @@ -15,12 +19,136 @@ #include #include +#include "internal.h" #include "lkc.h" -struct conf_printer { - void (*print_symbol)(FILE *, struct symbol *, const char *, void *); - void (*print_comment)(FILE *, const char *, void *); -}; +struct gstr autoconf_cmd; + +/* return true if 'path' exists, false otherwise */ +static bool is_present(const char *path) +{ + struct stat st; + + return !stat(path, &st); +} + +/* return true if 'path' exists and it is a directory, false otherwise */ +static bool is_dir(const char *path) +{ + struct stat st; + + if (stat(path, &st)) + return false; + + return S_ISDIR(st.st_mode); +} + +/* return true if the given two files are the same, false otherwise */ +static bool is_same(const char *file1, const char *file2) +{ + int fd1, fd2; + struct stat st1, st2; + void *map1, *map2; + bool ret = false; + + fd1 = open(file1, O_RDONLY); + if (fd1 < 0) + return ret; + + fd2 = open(file2, O_RDONLY); + if (fd2 < 0) + goto close1; + + ret = fstat(fd1, &st1); + if (ret) + goto close2; + ret = fstat(fd2, &st2); + if (ret) + goto close2; + + if (st1.st_size != st2.st_size) + goto close2; + + map1 = mmap(NULL, st1.st_size, PROT_READ, MAP_PRIVATE, fd1, 0); + if (map1 == MAP_FAILED) + goto close2; + + map2 = mmap(NULL, st2.st_size, PROT_READ, MAP_PRIVATE, fd2, 0); + if (map2 == MAP_FAILED) + goto close2; + + if (bcmp(map1, map2, st1.st_size)) + goto close2; + + ret = true; +close2: + close(fd2); +close1: + close(fd1); + + return ret; +} + +/* + * Create the parent directory of the given path. + * + * For example, if 'include/config/auto.conf' is given, create 'include/config'. + */ +static int make_parent_dir(const char *path) +{ + char tmp[PATH_MAX + 1]; + char *p; + + strncpy(tmp, path, sizeof(tmp)); + tmp[sizeof(tmp) - 1] = 0; + + /* Remove the base name. Just return if nothing is left */ + p = strrchr(tmp, '/'); + if (!p) + return 0; + *(p + 1) = 0; + + /* Just in case it is an absolute path */ + p = tmp; + while (*p == '/') + p++; + + while ((p = strchr(p, '/'))) { + *p = 0; + + /* skip if the directory exists */ + if (!is_dir(tmp) && mkdir(tmp, 0755)) + return -1; + + *p = '/'; + while (*p == '/') + p++; + } + + return 0; +} + +static char depfile_path[PATH_MAX]; +static size_t depfile_prefix_len; + +/* touch depfile for symbol 'name' */ +static int conf_touch_dep(const char *name) +{ + int fd; + + /* check overflow: prefix + name + '\0' must fit in buffer. */ + if (depfile_prefix_len + strlen(name) + 1 > sizeof(depfile_path)) + return -1; + + strcpy(depfile_path + depfile_prefix_len, name); + + fd = open(depfile_path, O_WRONLY | O_CREAT | O_TRUNC, 0644); + if (fd == -1) + return -1; + close(fd); + + return 0; +} static void conf_warning(const char *fmt, ...) __attribute__ ((format (printf, 1, 2))); @@ -31,7 +159,12 @@ static void conf_message(const char *fmt, ...) static const char *conf_filename; static int conf_lineno, conf_warnings; -const char conf_defname[] = ".defconfig"; +bool conf_errors(void) +{ + if (conf_warnings) + return getenv("KCONFIG_WERROR"); + return false; +} static void conf_warning(const char *fmt, ...) { @@ -44,16 +177,16 @@ static void conf_warning(const char *fmt, ...) conf_warnings++; } -static void conf_default_message_callback(const char *fmt, va_list ap) +static void conf_default_message_callback(const char *s) { printf("#\n# "); - vprintf(fmt, ap); + printf("%s", s); printf("\n#\n"); } -static void (*conf_message_callback) (const char *fmt, va_list ap) = +static void (*conf_message_callback)(const char *s) = conf_default_message_callback; -void conf_set_message_callback(void (*fn) (const char *fmt, va_list ap)) +void conf_set_message_callback(void (*fn)(const char *s)) { conf_message_callback = fn; } @@ -61,10 +194,15 @@ void conf_set_message_callback(void (*fn) (const char *fmt, va_list ap)) static void conf_message(const char *fmt, ...) { va_list ap; + char buf[4096]; + + if (!conf_message_callback) + return; va_start(ap, fmt); - if (conf_message_callback) - conf_message_callback(fmt, ap); + + vsnprintf(buf, sizeof(buf), fmt, ap); + conf_message_callback(buf); va_end(ap); } @@ -75,51 +213,23 @@ const char *conf_get_configname(void) return name ? name : ".config"; } -const char *conf_get_autoconfig_name(void) +static const char *conf_get_autoconfig_name(void) { return getenv("KCONFIG_AUTOCONFIG"); } -static char *conf_expand_value(const char *in) +static const char *conf_get_autoheader_name(void) { - struct symbol *sym; - const char *src; - static char res_value[SYMBOL_MAXLENGTH]; - char *dst, name[SYMBOL_MAXLENGTH]; - - res_value[0] = 0; - dst = name; - while ((src = strchr(in, '$'))) { - strncat(res_value, in, src - in); - src++; - dst = name; - while (isalnum(*src) || *src == '_') - *dst++ = *src++; - *dst = 0; - sym = sym_lookup(name, 0); - sym_calc_value(sym); - strcat(res_value, sym_get_string_value(sym)); - in = src; - } - strcat(res_value, in); + char *name = getenv("KCONFIG_AUTOHEADER"); - return res_value; + return name ? name : "include/generated/autoconf.h"; } -char *conf_get_default_confname(void) +static const char *conf_get_rustccfg_name(void) { - struct stat buf; - static char fullname[PATH_MAX+1]; - char *env, *name; - - name = conf_expand_value(conf_defname); - env = getenv(SRCTREE); - if (env) { - sprintf(fullname, "%s/%s", env, name); - if (!stat(fullname, &buf)) - return fullname; - } - return name; + char *name = getenv("KCONFIG_RUSTCCFG"); + + return name ? name : "include/generated/rustc_cfg"; } static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p) @@ -149,33 +259,26 @@ static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p) conf_warning("symbol value '%s' invalid for %s", p, sym->name); return 1; - case S_OTHER: - if (*p != '"') { - for (p2 = p; *p2 && !isspace(*p2); p2++) - ; - sym->type = S_STRING; - goto done; - } - /* fall through */ case S_STRING: - if (*p++ != '"') - break; - for (p2 = p; (p2 = strpbrk(p2, "\"\\")); p2++) { - if (*p2 == '"') { - *p2 = 0; + /* No escaping for S_DEF_AUTO (include/config/auto.conf) */ + if (def != S_DEF_AUTO) { + if (*p++ != '"') break; + for (p2 = p; (p2 = strpbrk(p2, "\"\\")); p2++) { + if (*p2 == '"') { + *p2 = 0; + break; + } + memmove(p2, p2 + 1, strlen(p2)); } - memmove(p2, p2 + 1, strlen(p2)); - } - if (!p2) { - if (def != S_DEF_AUTO) + if (!p2) { conf_warning("invalid string found"); - return 1; + return 1; + } } /* fall through */ case S_INT: case S_HEX: - done: if (sym_string_valid(sym, p)) { sym->def[def].val = xstrdup(p); sym->flags |= def_flags; @@ -192,59 +295,24 @@ static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p) return 0; } -#define LINE_GROWTH 16 -static int add_byte(int c, char **lineptr, size_t slen, size_t *n) +/* like getline(), but the newline character is stripped away */ +static ssize_t getline_stripped(char **lineptr, size_t *n, FILE *stream) { - char *nline; - size_t new_size = slen + 1; - if (new_size > *n) { - new_size += LINE_GROWTH - 1; - new_size *= 2; - nline = xrealloc(*lineptr, new_size); - if (!nline) - return -1; + ssize_t len; - *lineptr = nline; - *n = new_size; - } - - (*lineptr)[slen] = c; - - return 0; -} - -static ssize_t compat_getline(char **lineptr, size_t *n, FILE *stream) -{ - char *line = *lineptr; - size_t slen = 0; + len = getline(lineptr, n, stream); - for (;;) { - int c = getc(stream); + if (len > 0 && (*lineptr)[len - 1] == '\n') { + len--; + (*lineptr)[len] = '\0'; - switch (c) { - case '\n': - if (add_byte(c, &line, slen, n) < 0) - goto e_out; - slen++; - /* fall through */ - case EOF: - if (add_byte('\0', &line, slen, n) < 0) - goto e_out; - *lineptr = line; - if (slen == 0) - return -1; - return slen; - default: - if (add_byte(c, &line, slen, n) < 0) - goto e_out; - slen++; + if (len > 0 && (*lineptr)[len - 1] == '\r') { + len--; + (*lineptr)[len] = '\0'; } } -e_out: - line[slen-1] = '\0'; - *lineptr = line; - return -1; + return len; } int conf_read_simple(const char *name, int def) @@ -252,34 +320,55 @@ int conf_read_simple(const char *name, int def) FILE *in = NULL; char *line = NULL; size_t line_asize = 0; - char *p, *p2; + char *p, *val; struct symbol *sym; - int i, def_flags; + int def_flags; + const char *warn_unknown, *sym_name; + warn_unknown = getenv("KCONFIG_WARN_UNKNOWN_SYMBOLS"); if (name) { in = zconf_fopen(name); } else { - struct property *prop; + char *env; name = conf_get_configname(); in = zconf_fopen(name); if (in) goto load; - sym_add_change_count(1); - if (!sym_defconfig_list) + conf_set_changed(true); + + env = getenv("KCONFIG_DEFCONFIG_LIST"); + if (!env) return 1; - for_all_defaults(sym_defconfig_list, prop) { - if (expr_calc_value(prop->visible.expr) == no || - prop->expr->type != E_SYMBOL) - continue; - name = conf_expand_value(prop->expr->left.sym->name); - in = zconf_fopen(name); + while (1) { + bool is_last; + + while (isspace(*env)) + env++; + + if (!*env) + break; + + p = env; + while (*p && !isspace(*p)) + p++; + + is_last = (*p == '\0'); + + *p = '\0'; + + in = zconf_fopen(env); if (in) { - conf_message(_("using defaults found in %s"), - name); + conf_message("using defaults found in %s", + env); goto load; } + + if (is_last) + break; + + env = p + 1; } } if (!in) @@ -291,7 +380,7 @@ load: conf_warnings = 0; def_flags = SYMBOL_DEF << def; - for_all_symbols(i, sym) { + for_all_symbols(sym) { sym->flags |= SYMBOL_CHANGED; sym->flags &= ~(def_flags|SYMBOL_VALID); if (sym_is_choice(sym)) @@ -300,8 +389,7 @@ load: case S_INT: case S_HEX: case S_STRING: - if (sym->def[def].val) - free(sym->def[def].val); + free(sym->def[def].val); /* fall through */ default: sym->def[def].val = NULL; @@ -309,76 +397,68 @@ load: } } - while (compat_getline(&line, &line_asize, in) != -1) { + while (getline_stripped(&line, &line_asize, in) != -1) { conf_lineno++; - sym = NULL; + + if (!line[0]) /* blank line */ + continue; + if (line[0] == '#') { - if (memcmp(line + 2, CONFIG_, strlen(CONFIG_))) + if (line[1] != ' ') continue; - p = strchr(line + 2 + strlen(CONFIG_), ' '); + p = line + 2; + if (memcmp(p, CONFIG_, strlen(CONFIG_))) + continue; + sym_name = p + strlen(CONFIG_); + p = strchr(sym_name, ' '); if (!p) continue; *p++ = 0; - if (strncmp(p, "is not set", 10)) + if (strcmp(p, "is not set")) + continue; + + val = "n"; + } else { + if (memcmp(line, CONFIG_, strlen(CONFIG_))) { + conf_warning("unexpected data: %s", line); continue; - if (def == S_DEF_USER) { - sym = sym_find(line + 2 + strlen(CONFIG_)); - if (!sym) { - sym_add_change_count(1); - goto setsym; - } - } else { - sym = sym_lookup(line + 2 + strlen(CONFIG_), 0); - if (sym->type == S_UNKNOWN) - sym->type = S_BOOLEAN; - } - if (sym->flags & def_flags) { - conf_warning("override: reassigning to symbol %s", sym->name); - } - switch (sym->type) { - case S_BOOLEAN: - case S_TRISTATE: - sym->def[def].tri = no; - sym->flags |= def_flags; - break; - default: - ; } - } else if (memcmp(line, CONFIG_, strlen(CONFIG_)) == 0) { - p = strchr(line + strlen(CONFIG_), '='); - if (!p) + + sym_name = line + strlen(CONFIG_); + p = strchr(sym_name, '='); + if (!p) { + conf_warning("unexpected data: %s", line); continue; - *p++ = 0; - p2 = strchr(p, '\n'); - if (p2) { - *p2-- = 0; - if (*p2 == '\r') - *p2 = 0; } - if (def == S_DEF_USER) { - sym = sym_find(line + strlen(CONFIG_)); - if (!sym) { - sym_add_change_count(1); - goto setsym; - } + *p = 0; + val = p + 1; + } + + sym = sym_find(sym_name); + if (!sym) { + if (def == S_DEF_AUTO) { + /* + * Reading from include/config/auto.conf. + * If CONFIG_FOO previously existed in auto.conf + * but it is missing now, include/config/FOO + * must be touched. + */ + conf_touch_dep(sym_name); } else { - sym = sym_lookup(line + strlen(CONFIG_), 0); - if (sym->type == S_UNKNOWN) - sym->type = S_OTHER; - } - if (sym->flags & def_flags) { - conf_warning("override: reassigning to symbol %s", sym->name); - } - if (conf_set_sym_val(sym, def, def_flags, p)) - continue; - } else { - if (line[0] != '\r' && line[0] != '\n') - conf_warning("unexpected data: %.*s", - (int)strcspn(line, "\r\n"), line); + if (warn_unknown) + conf_warning("unknown symbol: %s", sym_name); + conf_set_changed(true); + } continue; } -setsym: + + if (sym->flags & def_flags) + conf_warning("override: reassigning to symbol %s", sym->name); + + if (conf_set_sym_val(sym, def, def_flags, val)) + continue; + if (sym && sym_is_choice_value(sym)) { struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym)); switch (sym->def[def].tri) { @@ -401,6 +481,7 @@ setsym: } free(line); fclose(in); + return 0; } @@ -408,9 +489,8 @@ int conf_read(const char *name) { struct symbol *sym; int conf_unsaved = 0; - int i; - sym_set_change_count(0); + conf_set_changed(false); if (conf_read_simple(name, S_DEF_USER)) { sym_calc_value(modules_sym); @@ -419,20 +499,18 @@ int conf_read(const char *name) sym_calc_value(modules_sym); - for_all_symbols(i, sym) { + for_all_symbols(sym) { sym_calc_value(sym); - if (sym_is_choice(sym) || (sym->flags & SYMBOL_AUTO)) + if (sym_is_choice(sym) || (sym->flags & SYMBOL_NO_WRITE)) continue; if (sym_has_value(sym) && (sym->flags & SYMBOL_WRITE)) { /* check that calculated value agrees with saved value */ switch (sym->type) { case S_BOOLEAN: case S_TRISTATE: - if (sym->def[S_DEF_USER].tri != sym_get_tristate_value(sym)) - break; - if (!sym_is_choice(sym)) + if (sym->def[S_DEF_USER].tri == sym_get_tristate_value(sym)) continue; - /* fall through */ + break; default: if (!strcmp(sym->curr.val, sym->def[S_DEF_USER].val)) continue; @@ -445,7 +523,7 @@ int conf_read(const char *name) /* maybe print value in verbose mode... */ } - for_all_symbols(i, sym) { + for_all_symbols(sym) { if (sym_has_value(sym) && !sym_is_choice_value(sym)) { /* Reset values of generates values, so they'll appear * as new, if they should become visible, but that @@ -461,7 +539,7 @@ int conf_read(const char *name) /* Reset a string value if it's out of range */ if (sym_string_within_range(sym, sym->def[S_DEF_USER].val)) break; - sym->flags &= ~(SYMBOL_VALID|SYMBOL_DEF_USER); + sym->flags &= ~SYMBOL_VALID; conf_unsaved++; break; default: @@ -470,194 +548,232 @@ int conf_read(const char *name) } } - sym_add_change_count(conf_warnings || conf_unsaved); + if (conf_warnings || conf_unsaved) + conf_set_changed(true); return 0; } -/* - * Kconfig configuration printer - * - * This printer is used when generating the resulting configuration after - * kconfig invocation and `defconfig' files. Unset symbol might be omitted by - * passing a non-NULL argument to the printer. - * - */ -static void -kconfig_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) +struct comment_style { + const char *decoration; + const char *prefix; + const char *postfix; +}; + +static const struct comment_style comment_style_pound = { + .decoration = "#", + .prefix = "#", + .postfix = "#", +}; + +static const struct comment_style comment_style_c = { + .decoration = " *", + .prefix = "/*", + .postfix = " */", +}; + +static void conf_write_heading(FILE *fp, const struct comment_style *cs) { + if (!cs) + return; - switch (sym->type) { - case S_BOOLEAN: - case S_TRISTATE: - if (*value == 'n') { - bool skip_unset = (arg != NULL); + fprintf(fp, "%s\n", cs->prefix); - if (!skip_unset) - fprintf(fp, "# %s%s is not set\n", - CONFIG_, sym->name); - return; - } - break; - default: - break; - } + fprintf(fp, "%s Automatically generated file; DO NOT EDIT.\n", + cs->decoration); + + fprintf(fp, "%s %s\n", cs->decoration, rootmenu.prompt->text); - fprintf(fp, "%s%s=%s\n", CONFIG_, sym->name, value); + fprintf(fp, "%s\n", cs->postfix); } -static void -kconfig_print_comment(FILE *fp, const char *value, void *arg) +/* The returned pointer must be freed on the caller side */ +static char *escape_string_value(const char *in) { - const char *p = value; - size_t l; - - for (;;) { - l = strcspn(p, "\n"); - fprintf(fp, "#"); - if (l) { - fprintf(fp, " "); - xfwrite(p, l, 1, fp); - p += l; - } - fprintf(fp, "\n"); - if (*p++ == '\0') + const char *p; + char *out; + size_t len; + + len = strlen(in) + strlen("\"\"") + 1; + + p = in; + while (1) { + p += strcspn(p, "\"\\"); + + if (p[0] == '\0') + break; + + len++; + p++; + } + + out = xmalloc(len); + out[0] = '\0'; + + strcat(out, "\""); + + p = in; + while (1) { + len = strcspn(p, "\"\\"); + strncat(out, p, len); + p += len; + + if (p[0] == '\0') break; + + strcat(out, "\\"); + strncat(out, p++, 1); } + + strcat(out, "\""); + + return out; } -static struct conf_printer kconfig_printer_cb = +enum output_n { OUTPUT_N, OUTPUT_N_AS_UNSET, OUTPUT_N_NONE }; + +static void __print_symbol(FILE *fp, struct symbol *sym, enum output_n output_n, + bool escape_string) { - .print_symbol = kconfig_print_symbol, - .print_comment = kconfig_print_comment, -}; + const char *val; + char *escaped = NULL; -/* - * Header printer - * - * This printer is used when generating the `include/generated/autoconf.h' file. - */ -static void -header_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) + if (sym->type == S_UNKNOWN) + return; + + val = sym_get_string_value(sym); + + if ((sym->type == S_BOOLEAN || sym->type == S_TRISTATE) && + output_n != OUTPUT_N && *val == 'n') { + if (output_n == OUTPUT_N_AS_UNSET) + fprintf(fp, "# %s%s is not set\n", CONFIG_, sym->name); + return; + } + + if (sym->type == S_STRING && escape_string) { + escaped = escape_string_value(val); + val = escaped; + } + + fprintf(fp, "%s%s=%s\n", CONFIG_, sym->name, val); + + free(escaped); +} + +static void print_symbol_for_dotconfig(FILE *fp, struct symbol *sym) +{ + __print_symbol(fp, sym, OUTPUT_N_AS_UNSET, true); +} + +static void print_symbol_for_autoconf(FILE *fp, struct symbol *sym) +{ + __print_symbol(fp, sym, OUTPUT_N_NONE, false); +} + +void print_symbol_for_listconfig(struct symbol *sym) +{ + __print_symbol(stdout, sym, OUTPUT_N, true); +} + +static void print_symbol_for_c(FILE *fp, struct symbol *sym) { + const char *val; + const char *sym_suffix = ""; + const char *val_prefix = ""; + char *escaped = NULL; + + if (sym->type == S_UNKNOWN) + return; + + val = sym_get_string_value(sym); switch (sym->type) { case S_BOOLEAN: - case S_TRISTATE: { - const char *suffix = ""; - - switch (*value) { + case S_TRISTATE: + switch (*val) { case 'n': - break; + return; case 'm': - suffix = "_MODULE"; + sym_suffix = "_MODULE"; /* fall through */ default: - fprintf(fp, "#define %s%s%s 1\n", - CONFIG_, sym->name, suffix); + val = "1"; } break; - } - case S_HEX: { - const char *prefix = ""; - - if (value[0] != '0' || (value[1] != 'x' && value[1] != 'X')) - prefix = "0x"; - fprintf(fp, "#define %s%s %s%s\n", - CONFIG_, sym->name, prefix, value); + case S_HEX: + if (val[0] != '0' || (val[1] != 'x' && val[1] != 'X')) + val_prefix = "0x"; break; - } case S_STRING: - case S_INT: - fprintf(fp, "#define %s%s %s\n", - CONFIG_, sym->name, value); - break; + escaped = escape_string_value(val); + val = escaped; default: break; } -} + fprintf(fp, "#define %s%s%s %s%s\n", CONFIG_, sym->name, sym_suffix, + val_prefix, val); -static void -header_print_comment(FILE *fp, const char *value, void *arg) -{ - const char *p = value; - size_t l; - - fprintf(fp, "/*\n"); - for (;;) { - l = strcspn(p, "\n"); - fprintf(fp, " *"); - if (l) { - fprintf(fp, " "); - xfwrite(p, l, 1, fp); - p += l; - } - fprintf(fp, "\n"); - if (*p++ == '\0') - break; - } - fprintf(fp, " */\n"); + free(escaped); } -static struct conf_printer header_printer_cb = -{ - .print_symbol = header_print_symbol, - .print_comment = header_print_comment, -}; - -/* - * Tristate printer - * - * This printer is used when generating the `include/config/tristate.conf' file. - */ -static void -tristate_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) +static void print_symbol_for_rustccfg(FILE *fp, struct symbol *sym) { + const char *val; + const char *val_prefix = ""; + char *val_prefixed = NULL; + size_t val_prefixed_len; + char *escaped = NULL; - if (sym->type == S_TRISTATE && *value != 'n') - fprintf(fp, "%s%s=%c\n", CONFIG_, sym->name, (char)toupper(*value)); -} - -static struct conf_printer tristate_printer_cb = -{ - .print_symbol = tristate_print_symbol, - .print_comment = kconfig_print_comment, -}; + if (sym->type == S_UNKNOWN) + return; -static void conf_write_symbol(FILE *fp, struct symbol *sym, - struct conf_printer *printer, void *printer_arg) -{ - const char *str; + val = sym_get_string_value(sym); switch (sym->type) { - case S_OTHER: - case S_UNKNOWN: + case S_BOOLEAN: + case S_TRISTATE: + /* + * We do not care about disabled ones, i.e. no need for + * what otherwise are "comments" in other printers. + */ + if (*val == 'n') + return; + + /* + * To have similar functionality to the C macro `IS_ENABLED()` + * we provide an empty `--cfg CONFIG_X` here in both `y` + * and `m` cases. + * + * Then, the common `fprintf()` below will also give us + * a `--cfg CONFIG_X="y"` or `--cfg CONFIG_X="m"`, which can + * be used as the equivalent of `IS_BUILTIN()`/`IS_MODULE()`. + */ + fprintf(fp, "--cfg=%s%s\n", CONFIG_, sym->name); break; - case S_STRING: - str = sym_get_string_value(sym); - str = sym_escape_string_value(str); - printer->print_symbol(fp, sym, str, printer_arg); - free((void *)str); + case S_HEX: + if (val[0] != '0' || (val[1] != 'x' && val[1] != 'X')) + val_prefix = "0x"; break; default: - str = sym_get_string_value(sym); - printer->print_symbol(fp, sym, str, printer_arg); + break; } -} -static void -conf_write_heading(FILE *fp, struct conf_printer *printer, void *printer_arg) -{ - char buf[256]; + if (strlen(val_prefix) > 0) { + val_prefixed_len = strlen(val) + strlen(val_prefix) + 1; + val_prefixed = xmalloc(val_prefixed_len); + snprintf(val_prefixed, val_prefixed_len, "%s%s", val_prefix, val); + val = val_prefixed; + } + + /* All values get escaped: the `--cfg` option only takes strings */ + escaped = escape_string_value(val); + val = escaped; - snprintf(buf, sizeof(buf), - "\n" - "Automatically generated file; DO NOT EDIT.\n" - "%s\n", - rootmenu.prompt->text); + fprintf(fp, "--cfg=%s%s=%s\n", CONFIG_, sym->name, val); - printer->print_comment(fp, buf, printer_arg); + free(escaped); + free(val_prefixed); } /* @@ -682,16 +798,13 @@ int conf_write_defconfig(const char *filename) while (menu != NULL) { sym = menu->sym; - if (sym == NULL) { - if (!menu_is_visible(menu)) - goto next_menu; - } else if (!sym_is_choice(sym)) { + if (sym && !sym_is_choice(sym)) { sym_calc_value(sym); if (!(sym->flags & SYMBOL_WRITE)) goto next_menu; sym->flags &= ~SYMBOL_WRITE; /* If we cannot change the symbol - skip */ - if (!sym_is_changable(sym)) + if (!sym_is_changeable(sym)) goto next_menu; /* If symbol equals to default value - skip */ if (strcmp(sym_get_string_value(sym), sym_get_string_default(sym)) == 0) @@ -716,7 +829,7 @@ int conf_write_defconfig(const char *filename) goto next_menu; } } - conf_write_symbol(out, sym, &kconfig_printer_cb, NULL); + print_symbol_for_dotconfig(out, sym); } next_menu: if (menu->list != NULL) { @@ -742,49 +855,40 @@ int conf_write(const char *name) FILE *out; struct symbol *sym; struct menu *menu; - const char *basename; const char *str; - char dirname[PATH_MAX+1], tmpname[PATH_MAX+20], newname[PATH_MAX+1]; + char tmpname[PATH_MAX + 1], oldname[PATH_MAX + 1]; char *env; + bool need_newline = false; if (!name) name = conf_get_configname(); - dirname[0] = 0; - if (name && name[0]) { - struct stat st; - char *slash; - - if (!stat(name, &st) && S_ISDIR(st.st_mode)) { - strcpy(dirname, name); - strcat(dirname, "/"); - basename = conf_get_configname(); - } else if ((slash = strrchr(name, '/'))) { - int size = slash - name + 1; - memcpy(dirname, name, size); - dirname[size] = 0; - if (slash[1]) - basename = slash + 1; - else - basename = conf_get_configname(); - } else - basename = name; - } else - basename = conf_get_configname(); - - sprintf(newname, "%s%s", dirname, basename); + if (!*name) { + fprintf(stderr, "config name is empty\n"); + return -1; + } + + if (is_dir(name)) { + fprintf(stderr, "%s: Is a directory\n", name); + return -1; + } + + if (make_parent_dir(name)) + return -1; + env = getenv("KCONFIG_OVERWRITECONFIG"); - if (!env || !*env) { - sprintf(tmpname, "%s.tmpconfig.%d", dirname, (int)getpid()); - out = fopen(tmpname, "w"); - } else { + if (env && *env) { *tmpname = 0; - out = fopen(newname, "w"); + out = fopen(name, "w"); + } else { + snprintf(tmpname, sizeof(tmpname), "%s.%d.tmp", + name, (int)getpid()); + out = fopen(tmpname, "w"); } if (!out) return 1; - conf_write_heading(out, &kconfig_printer_cb, NULL); + conf_write_heading(out, &comment_style_pound); if (!conf_get_changed()) sym_clear_all_valid(); @@ -800,13 +904,18 @@ int conf_write(const char *name) "#\n" "# %s\n" "#\n", str); - } else if (!(sym->flags & SYMBOL_CHOICE)) { + need_newline = false; + } else if (!(sym->flags & SYMBOL_CHOICE) && + !(sym->flags & SYMBOL_WRITTEN)) { sym_calc_value(sym); if (!(sym->flags & SYMBOL_WRITE)) goto next; - sym->flags &= ~SYMBOL_WRITE; - - conf_write_symbol(out, sym, &kconfig_printer_cb, NULL); + if (need_newline) { + fprintf(out, "\n"); + need_newline = false; + } + sym->flags |= SYMBOL_WRITTEN; + print_symbol_for_dotconfig(out, sym); } next: @@ -814,65 +923,111 @@ next: menu = menu->list; continue; } - if (menu->next) + +end_check: + if (!menu->sym && menu_is_visible(menu) && menu != &rootmenu && + menu->prompt->type == P_MENU) { + fprintf(out, "# end of %s\n", menu_get_prompt(menu)); + need_newline = true; + } + + if (menu->next) { menu = menu->next; - else while ((menu = menu->parent)) { - if (menu->next) { - menu = menu->next; - break; - } + } else { + menu = menu->parent; + if (menu) + goto end_check; } } fclose(out); + for_all_symbols(sym) + sym->flags &= ~SYMBOL_WRITTEN; + if (*tmpname) { - strcat(dirname, basename); - strcat(dirname, ".old"); - rename(newname, dirname); - if (rename(tmpname, newname)) + if (is_same(name, tmpname)) { + conf_message("No change to %s", name); + unlink(tmpname); + conf_set_changed(false); + return 0; + } + + snprintf(oldname, sizeof(oldname), "%s.old", name); + rename(name, oldname); + if (rename(tmpname, name)) return 1; } - conf_message(_("configuration written to %s"), newname); + conf_message("configuration written to %s", name); + + conf_set_changed(false); + + return 0; +} + +/* write a dependency file as used by kbuild to track dependencies */ +static int conf_write_autoconf_cmd(const char *autoconf_name) +{ + char name[PATH_MAX], tmp[PATH_MAX]; + FILE *out; + int ret; + + ret = snprintf(name, sizeof(name), "%s.cmd", autoconf_name); + if (ret >= sizeof(name)) /* check truncation */ + return -1; + + if (make_parent_dir(name)) + return -1; + + ret = snprintf(tmp, sizeof(tmp), "%s.cmd.tmp", autoconf_name); + if (ret >= sizeof(tmp)) /* check truncation */ + return -1; + + out = fopen(tmp, "w"); + if (!out) { + perror("fopen"); + return -1; + } + + fprintf(out, "autoconfig := %s\n", autoconf_name); + + fputs(str_get(&autoconf_cmd), out); + + fflush(out); + ret = ferror(out); /* error check for all fprintf() calls */ + fclose(out); + if (ret) + return -1; - sym_set_change_count(0); + if (rename(tmp, name)) { + perror("rename"); + return -1; + } return 0; } -static int conf_split_config(void) +static int conf_touch_deps(void) { - const char *name; - char path[PATH_MAX+1]; - char *opwd, *dir, *_name; - char *s, *d, c; + const char *name, *tmp; struct symbol *sym; - struct stat sb; - int res, i, fd; + int res; name = conf_get_autoconfig_name(); + tmp = strrchr(name, '/'); + depfile_prefix_len = tmp ? tmp - name + 1 : 0; + if (depfile_prefix_len + 1 > sizeof(depfile_path)) + return -1; + + strncpy(depfile_path, name, depfile_prefix_len); + depfile_path[depfile_prefix_len] = 0; + conf_read_simple(name, S_DEF_AUTO); sym_calc_value(modules_sym); - opwd = malloc(256); - _name = strdup(name); - if (opwd == NULL || _name == NULL) - return 1; - opwd = getcwd(opwd, 256); - dir = dirname(_name); - if (dir == NULL) { - res = 1; - goto err; - } - if (chdir(dir)) { - res = 1; - goto err; - } - - res = 0; - for_all_symbols(i, sym) { + for_all_symbols(sym) { sym_calc_value(sym); - if ((sym->flags & SYMBOL_AUTO) || !sym->name) + if ((sym->flags & SYMBOL_NO_WRITE) || !sym->name) continue; if (sym->flags & SYMBOL_WRITE) { if (sym->flags & SYMBOL_DEF_AUTO) { @@ -921,163 +1076,118 @@ static int conf_split_config(void) * different from 'no'). */ - /* Replace all '_' and append ".h" */ - s = sym->name; - d = path; - while ((c = *s++)) { - c = tolower(c); - *d++ = (c == '_') ? '/' : c; - } - strcpy(d, ".h"); - - /* Assume directory path already exists. */ - fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644); - if (fd == -1) { - if (errno != ENOENT) { - res = 1; - break; - } - /* - * Create directory components, - * unless they exist already. - */ - d = path; - while ((d = strchr(d, '/'))) { - *d = 0; - if (stat(path, &sb) && mkdir(path, 0755)) { - res = 1; - goto out; - } - *d++ = '/'; - } - /* Try it again. */ - fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644); - if (fd == -1) { - res = 1; - break; - } - } - close(fd); + res = conf_touch_dep(sym->name); + if (res) + return res; } -out: - if (chdir(opwd)) - res = 1; -err: - free(opwd); - free(_name); - return res; + + return 0; } -int conf_write_autoconf(void) +static int __conf_write_autoconf(const char *filename, + void (*print_symbol)(FILE *, struct symbol *), + const struct comment_style *comment_style) { + char tmp[PATH_MAX]; + FILE *file; struct symbol *sym; - const char *name; - FILE *out, *tristate, *out_h; - int i; - char dir[PATH_MAX+1], buf[PATH_MAX+20]; - char *s; - - strcpy(dir, conf_get_configname()); - s = strrchr(dir, '/'); - if (s) - s[1] = 0; - else - dir[0] = 0; + int ret; - sym_clear_all_valid(); + if (make_parent_dir(filename)) + return -1; - sprintf(buf, "%s.config.cmd", dir); - file_write_dep(buf); + ret = snprintf(tmp, sizeof(tmp), "%s.tmp", filename); + if (ret >= sizeof(tmp)) /* check truncation */ + return -1; - if (conf_split_config()) - return 1; + file = fopen(tmp, "w"); + if (!file) { + perror("fopen"); + return -1; + } - sprintf(buf, "%s.tmpconfig", dir); - out = fopen(buf, "w"); - if (!out) - return 1; + conf_write_heading(file, comment_style); - sprintf(buf, "%s.tmpconfig_tristate", dir); - tristate = fopen(buf, "w"); - if (!tristate) { - fclose(out); - return 1; - } + for_all_symbols(sym) + if ((sym->flags & SYMBOL_WRITE) && sym->name) + print_symbol(file, sym); - sprintf(buf, "%s.tmpconfig.h", dir); - out_h = fopen(buf, "w"); - if (!out_h) { - fclose(out); - fclose(tristate); - return 1; + fflush(file); + /* check possible errors in conf_write_heading() and print_symbol() */ + ret = ferror(file); + fclose(file); + if (ret) + return -1; + + if (rename(tmp, filename)) { + perror("rename"); + return -1; } - conf_write_heading(out, &kconfig_printer_cb, NULL); + return 0; +} - conf_write_heading(tristate, &tristate_printer_cb, NULL); +int conf_write_autoconf(int overwrite) +{ + struct symbol *sym; + const char *autoconf_name = conf_get_autoconfig_name(); + int ret; - conf_write_heading(out_h, &header_printer_cb, NULL); + if (!overwrite && is_present(autoconf_name)) + return 0; - for_all_symbols(i, sym) { - sym_calc_value(sym); - if (!(sym->flags & SYMBOL_WRITE) || !sym->name) - continue; + ret = conf_write_autoconf_cmd(autoconf_name); + if (ret) + return -1; - /* write symbol to auto.conf, tristate and header files */ - conf_write_symbol(out, sym, &kconfig_printer_cb, (void *)1); + if (conf_touch_deps()) + return 1; - conf_write_symbol(tristate, sym, &tristate_printer_cb, (void *)1); + for_all_symbols(sym) + sym_calc_value(sym); - conf_write_symbol(out_h, sym, &header_printer_cb, NULL); - } - fclose(out); - fclose(tristate); - fclose(out_h); + ret = __conf_write_autoconf(conf_get_autoheader_name(), + print_symbol_for_c, + &comment_style_c); + if (ret) + return ret; + + ret = __conf_write_autoconf(conf_get_rustccfg_name(), + print_symbol_for_rustccfg, + NULL); + if (ret) + return ret; - name = getenv("KCONFIG_AUTOHEADER"); - if (!name) - name = "include/generated/autoconf.h"; - sprintf(buf, "%s.tmpconfig.h", dir); - if (rename(buf, name)) - return 1; - name = getenv("KCONFIG_TRISTATE"); - if (!name) - name = "include/config/tristate.conf"; - sprintf(buf, "%s.tmpconfig_tristate", dir); - if (rename(buf, name)) - return 1; - name = conf_get_autoconfig_name(); /* - * This must be the last step, kbuild has a dependency on auto.conf - * and this marks the successful completion of the previous steps. + * Create include/config/auto.conf. This must be the last step because + * Kbuild has a dependency on auto.conf and this marks the successful + * completion of the previous steps. */ - sprintf(buf, "%s.tmpconfig", dir); - if (rename(buf, name)) - return 1; + ret = __conf_write_autoconf(conf_get_autoconfig_name(), + print_symbol_for_autoconf, + &comment_style_pound); + if (ret) + return ret; return 0; } -static int sym_change_count; +static bool conf_changed; static void (*conf_changed_callback)(void); -void sym_set_change_count(int count) +void conf_set_changed(bool val) { - int _sym_change_count = sym_change_count; - sym_change_count = count; - if (conf_changed_callback && - (bool)_sym_change_count != (bool)count) - conf_changed_callback(); -} + bool changed = conf_changed != val; -void sym_add_change_count(int count) -{ - sym_set_change_count(count + sym_change_count); + conf_changed = val; + + if (conf_changed_callback && changed) + conf_changed_callback(); } bool conf_get_changed(void) { - return sym_change_count; + return conf_changed; } void conf_set_changed_callback(void (*fn)(void)) @@ -1085,54 +1195,6 @@ void conf_set_changed_callback(void (*fn)(void)) conf_changed_callback = fn; } -static bool randomize_choice_values(struct symbol *csym) -{ - struct property *prop; - struct symbol *sym; - struct expr *e; - int cnt, def; - - /* - * If choice is mod then we may have more items selected - * and if no then no-one. - * In both cases stop. - */ - if (csym->curr.tri != yes) - return false; - - prop = sym_get_choice_prop(csym); - - /* count entries in choice block */ - cnt = 0; - expr_list_for_each_sym(prop->expr, e, sym) - cnt++; - - /* - * find a random value and set it to yes, - * set the rest to no so we have only one set - */ - def = (rand() % cnt); - - cnt = 0; - expr_list_for_each_sym(prop->expr, e, sym) { - if (def == cnt++) { - sym->def[S_DEF_USER].tri = yes; - csym->def[S_DEF_USER].val = sym; - } - else { - sym->def[S_DEF_USER].tri = no; - } - sym->flags |= SYMBOL_DEF_USER; - /* clear VALID to get value calculated */ - sym->flags &= ~SYMBOL_VALID; - } - csym->flags |= SYMBOL_DEF_USER; - /* clear VALID to get value calculated */ - csym->flags &= ~(SYMBOL_VALID); - - return true; -} - void set_all_choice_values(struct symbol *csym) { struct property *prop; @@ -1152,131 +1214,3 @@ void set_all_choice_values(struct symbol *csym) /* clear VALID to get value calculated */ csym->flags &= ~(SYMBOL_VALID | SYMBOL_NEED_SET_CHOICE_VALUES); } - -bool conf_set_all_new_symbols(enum conf_def_mode mode) -{ - struct symbol *sym, *csym; - int i, cnt, pby, pty, ptm; /* pby: probability of bool = y - * pty: probability of tristate = y - * ptm: probability of tristate = m - */ - - pby = 50; pty = ptm = 33; /* can't go as the default in switch-case - * below, otherwise gcc whines about - * -Wmaybe-uninitialized */ - if (mode == def_random) { - int n, p[3]; - char *env = getenv("KCONFIG_PROBABILITY"); - n = 0; - while( env && *env ) { - char *endp; - int tmp = strtol( env, &endp, 10 ); - if( tmp >= 0 && tmp <= 100 ) { - p[n++] = tmp; - } else { - errno = ERANGE; - perror( "KCONFIG_PROBABILITY" ); - exit( 1 ); - } - env = (*endp == ':') ? endp+1 : endp; - if( n >=3 ) { - break; - } - } - switch( n ) { - case 1: - pby = p[0]; ptm = pby/2; pty = pby-ptm; - break; - case 2: - pty = p[0]; ptm = p[1]; pby = pty + ptm; - break; - case 3: - pby = p[0]; pty = p[1]; ptm = p[2]; - break; - } - - if( pty+ptm > 100 ) { - errno = ERANGE; - perror( "KCONFIG_PROBABILITY" ); - exit( 1 ); - } - } - bool has_changed = false; - - for_all_symbols(i, sym) { - if (sym_has_value(sym) || (sym->flags & SYMBOL_VALID)) - continue; - switch (sym_get_type(sym)) { - case S_BOOLEAN: - case S_TRISTATE: - has_changed = true; - switch (mode) { - case def_yes: - sym->def[S_DEF_USER].tri = yes; - break; - case def_mod: - sym->def[S_DEF_USER].tri = mod; - break; - case def_no: - if (sym->flags & SYMBOL_ALLNOCONFIG_Y) - sym->def[S_DEF_USER].tri = yes; - else - sym->def[S_DEF_USER].tri = no; - break; - case def_random: - sym->def[S_DEF_USER].tri = no; - cnt = rand() % 100; - if (sym->type == S_TRISTATE) { - if (cnt < pty) - sym->def[S_DEF_USER].tri = yes; - else if (cnt < (pty+ptm)) - sym->def[S_DEF_USER].tri = mod; - } else if (cnt < pby) - sym->def[S_DEF_USER].tri = yes; - break; - default: - continue; - } - if (!(sym_is_choice(sym) && mode == def_random)) - sym->flags |= SYMBOL_DEF_USER; - break; - default: - break; - } - - } - - sym_clear_all_valid(); - - /* - * We have different type of choice blocks. - * If curr.tri equals to mod then we can select several - * choice symbols in one block. - * In this case we do nothing. - * If curr.tri equals yes then only one symbol can be - * selected in a choice block and we set it to yes, - * and the rest to no. - */ - if (mode != def_random) { - for_all_symbols(i, csym) { - if ((sym_is_choice(csym) && !sym_has_value(csym)) || - sym_is_choice_value(csym)) - csym->flags |= SYMBOL_NEED_SET_CHOICE_VALUES; - } - } - - for_all_symbols(i, csym) { - if (sym_has_value(csym) || !sym_is_choice(csym)) - continue; - - sym_calc_value(csym); - if (mode == def_random) - has_changed = randomize_choice_values(csym); - else { - set_all_choice_values(csym); - has_changed = true; - } - } - - return has_changed; -} diff --git a/support/kconfig/expr.c b/support/kconfig/expr.c index e1a39e9084..a290de3630 100644 --- a/support/kconfig/expr.c +++ b/support/kconfig/expr.c @@ -1,8 +1,10 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ +#include +#include #include #include #include @@ -11,7 +13,6 @@ #define DEBUG_EXPR 0 -static int expr_eq(struct expr *e1, struct expr *e2); static struct expr *expr_eliminate_yn(struct expr *e); struct expr *expr_alloc_symbol(struct symbol *sym) @@ -248,10 +249,17 @@ void expr_eliminate_eq(struct expr **ep1, struct expr **ep2) * equals some operand in the other (operands do not need to appear in the same * order), recursively. */ -static int expr_eq(struct expr *e1, struct expr *e2) +int expr_eq(struct expr *e1, struct expr *e2) { int res, old_count; + /* + * A NULL expr is taken to be yes, but there's also a different way to + * represent yes. expr_is_yes() checks for either representation. + */ + if (!e1 || !e2) + return expr_is_yes(e1) && expr_is_yes(e2); + if (e1->type != e2->type) return 0; switch (e1->type) { @@ -980,7 +988,6 @@ enum string_value_kind { k_string, k_signed, k_unsigned, - k_invalid }; union string_value { @@ -1011,13 +1018,10 @@ static enum string_value_kind expr_parse_string(const char *str, val->u = strtoull(str, &tail, 16); kind = k_unsigned; break; - case S_STRING: - case S_UNKNOWN: + default: val->s = strtoll(str, &tail, 0); kind = k_signed; break; - default: - return k_invalid; } return !errno && !*tail && tail > str && isxdigit(tail[-1]) ? kind : k_string; @@ -1073,13 +1077,7 @@ tristate expr_calc_value(struct expr *e) if (k1 == k_string || k2 == k_string) res = strcmp(str1, str2); - else if (k1 == k_invalid || k2 == k_invalid) { - if (e->type != E_EQUAL && e->type != E_UNEQUAL) { - printf("Cannot compare \"%s\" and \"%s\"\n", str1, str2); - return no; - } - res = strcmp(str1, str2); - } else if (k1 == k_unsigned || k2 == k_unsigned) + else if (k1 == k_unsigned || k2 == k_unsigned) res = (lval.u > rval.u) - (lval.u < rval.u); else /* if (k1 == k_signed && k2 == k_signed) */ res = (lval.s > rval.s) - (lval.s < rval.s); @@ -1133,7 +1131,6 @@ static int expr_compare_type(enum expr_type t1, enum expr_type t2) default: return -1; } - printf("[%dgt%d?]", t1, t2); return 0; } diff --git a/support/kconfig/expr.h b/support/kconfig/expr.h index 94a383b21d..0158f5eac4 100644 --- a/support/kconfig/expr.h +++ b/support/kconfig/expr.h @@ -1,6 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ #ifndef EXPR_H @@ -12,17 +12,12 @@ extern "C" { #include #include -#include "list.h" +#include "list_types.h" #ifndef __cplusplus #include #endif -struct file { - struct file *next; - struct file *parent; - const char *name; - int lineno; -}; +#include "list_types.h" typedef enum tristate { no, mod, yes @@ -62,7 +57,7 @@ struct symbol_value { }; enum symbol_type { - S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING, S_OTHER + S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING }; /* enum values are used as index to symbol.def[] */ @@ -81,8 +76,8 @@ enum { * SYMBOL_CHOICE bit set in 'flags'. */ struct symbol { - /* The next symbol in the same bucket in the symbol hash table */ - struct symbol *next; + /* link node for the hash table */ + struct hlist_node node; /* The name of the symbol, e.g. "FOO" for 'config FOO' */ char *name; @@ -113,6 +108,9 @@ struct symbol { */ tristate visible; + /* config entries associated with this symbol */ + struct list_head menus; + /* SYMBOL_* flags */ int flags; @@ -131,8 +129,6 @@ struct symbol { struct expr_value implied; }; -#define for_all_symbols(i, sym) for (i = 0; i < SYMBOL_HASHSIZE; i++) for (sym = symbol_hash[i]; sym; sym = sym->next) if (sym->type != S_OTHER) - #define SYMBOL_CONST 0x0001 /* symbol is const */ #define SYMBOL_CHECK 0x0008 /* used during dependency checking */ #define SYMBOL_CHOICE 0x0010 /* start of a choice block (null name) */ @@ -141,7 +137,8 @@ struct symbol { #define SYMBOL_OPTIONAL 0x0100 /* choice is optional - values can be 'n' */ #define SYMBOL_WRITE 0x0200 /* write symbol to file (KCONFIG_CONFIG) */ #define SYMBOL_CHANGED 0x0400 /* ? */ -#define SYMBOL_AUTO 0x1000 /* value from environment variable */ +#define SYMBOL_WRITTEN 0x0800 /* track info to avoid double-write to .config */ +#define SYMBOL_NO_WRITE 0x1000 /* Symbol for internal use only; it will not be written */ #define SYMBOL_CHECKED 0x2000 /* used during dependency checking */ #define SYMBOL_WARNED 0x8000 /* warning has been issued */ @@ -155,11 +152,7 @@ struct symbol { /* choice values need to be set before calculating this symbol value */ #define SYMBOL_NEED_SET_CHOICE_VALUES 0x100000 -/* Set symbol to y if allnoconfig; used for symbols that hide others */ -#define SYMBOL_ALLNOCONFIG_Y 0x200000 - #define SYMBOL_MAXLENGTH 256 -#define SYMBOL_HASHSIZE 9973 /* A property represent the config options that can be associated * with a config "symbol". @@ -171,6 +164,9 @@ struct symbol { * config BAZ * int "BAZ Value" * range 1..255 + * + * Please, also check parser.y:print_symbol() when modifying the + * list of property types! */ enum prop_type { P_UNKNOWN, @@ -182,13 +178,11 @@ enum prop_type { P_SELECT, /* select BAR */ P_IMPLY, /* imply BAR */ P_RANGE, /* range 7..100 (for a symbol) */ - P_ENV, /* value from environment variable */ P_SYMBOL, /* where a symbol is defined */ }; struct property { struct property *next; /* next property - null if last */ - struct symbol *sym; /* the symbol for which the property is associated */ enum prop_type type; /* type of property */ const char *text; /* the prompt value - P_PROMPT, P_MENU, P_COMMENT */ struct expr_value visible; @@ -196,7 +190,7 @@ struct property { struct menu *menu; /* the menu the property are associated with * valid for: P_SELECT, P_RANGE, P_CHOICE, * P_PROMPT, P_DEFAULT, P_MENU, P_COMMENT */ - struct file *file; /* what file was this property defined */ + const char *filename; /* what file was this property defined */ int lineno; /* what lineno was this property defined */ }; @@ -231,6 +225,8 @@ struct menu { */ struct symbol *sym; + struct list_head link; /* link to symbol::menus */ + /* * The prompt associated with the node. This holds the prompt for a * symbol as well as the text for a menu or comment, along with the @@ -257,7 +253,7 @@ struct menu { char *help; /* The location where the menu node appears in the Kconfig files */ - struct file *file; + const char *filename; int lineno; /* For use by front ends that need to store auxiliary data */ @@ -276,18 +272,10 @@ struct jump_key { struct list_head entries; size_t offset; struct menu *target; - int index; }; -#define JUMP_NB 9 - -extern struct file *file_list; -extern struct file *current_file; -struct file *lookup_file(const char *name); - extern struct symbol symbol_yes, symbol_no, symbol_mod; extern struct symbol *modules_sym; -extern struct symbol *sym_defconfig_list; extern int cdebug; struct expr *expr_alloc_symbol(struct symbol *sym); struct expr *expr_alloc_one(enum expr_type type, struct expr *ce); @@ -298,6 +286,7 @@ struct expr *expr_alloc_or(struct expr *e1, struct expr *e2); struct expr *expr_copy(const struct expr *org); void expr_free(struct expr *e); void expr_eliminate_eq(struct expr **ep1, struct expr **ep2); +int expr_eq(struct expr *e1, struct expr *e2); tristate expr_calc_value(struct expr *e); struct expr *expr_trans_bool(struct expr *e); struct expr *expr_eliminate_dups(struct expr *e); diff --git a/support/kconfig/foo.h b/support/kconfig/foo.h deleted file mode 100644 index b9cfdf8312..0000000000 --- a/support/kconfig/foo.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef __KCONFIG_FOO_H -#define __KCONFIG_FOO_H - -#ifndef __APPLE__ -#include -#endif -#include - -#ifndef PATH_MAX -#define PATH_MAX 1024 -#endif -#endif /* __KCONFIG_FOO_H */ diff --git a/support/kconfig/gconf-cfg.sh b/support/kconfig/gconf-cfg.sh new file mode 100755 index 0000000000..040d8f3388 --- /dev/null +++ b/support/kconfig/gconf-cfg.sh @@ -0,0 +1,33 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +cflags=$1 +libs=$2 + +PKG="gtk+-2.0 gmodule-2.0 libglade-2.0" + +if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then + echo >&2 "*" + echo >&2 "* 'make gconfig' requires '${HOSTPKG_CONFIG}'. Please install it." + echo >&2 "*" + exit 1 +fi + +if ! ${HOSTPKG_CONFIG} --exists $PKG; then + echo >&2 "*" + echo >&2 "* Unable to find the GTK+ installation. Please make sure that" + echo >&2 "* the GTK+ 2.0 development package is correctly installed." + echo >&2 "* You need $PKG" + echo >&2 "*" + exit 1 +fi + +if ! ${HOSTPKG_CONFIG} --atleast-version=2.0.0 gtk+-2.0; then + echo >&2 "*" + echo >&2 "* GTK+ is present but version >= 2.0.0 is required." + echo >&2 "*" + exit 1 +fi + +${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags} +${HOSTPKG_CONFIG} --libs ${PKG} > ${libs} diff --git a/support/kconfig/gconf.c b/support/kconfig/gconf.c index 0c2d1c18f9..d24cebd974 100644 --- a/support/kconfig/gconf.c +++ b/support/kconfig/gconf.c @@ -1,18 +1,11 @@ -/* Hey EMACS -*- linux-c -*- */ +// SPDX-License-Identifier: GPL-2.0 /* - * * Copyright (C) 2002-2003 Romain Lievin - * Released under the terms of the GNU GPL v2.0. - * */ -#ifdef HAVE_CONFIG_H -# include -#endif - #include #include "lkc.h" -#include "images.c" +#include "images.h" #include #include @@ -21,6 +14,7 @@ #include #include +#include #include #include @@ -78,8 +72,8 @@ static gchar **fill_row(struct menu *menu); static void conf_changed(void); /* Helping/Debugging Functions */ - -const char *dbg_sym_flags(int val) +#ifdef DEBUG +static const char *dbg_sym_flags(int val) { static char buf[256]; @@ -101,16 +95,17 @@ const char *dbg_sym_flags(int val) strcat(buf, "write/"); if (val & SYMBOL_CHANGED) strcat(buf, "changed/"); - if (val & SYMBOL_AUTO) - strcat(buf, "auto/"); + if (val & SYMBOL_NO_WRITE) + strcat(buf, "no_write/"); buf[strlen(buf) - 1] = '\0'; return buf; } +#endif -void replace_button_icon(GladeXML * xml, GdkDrawable * window, - GtkStyle * style, gchar * btn_name, gchar ** xpm) +static void replace_button_icon(GladeXML *xml, GdkDrawable *window, + GtkStyle *style, gchar *btn_name, gchar **xpm) { GdkPixmap *pixmap; GdkBitmap *mask; @@ -128,7 +123,7 @@ void replace_button_icon(GladeXML * xml, GdkDrawable * window, } /* Main Window Initialization */ -void init_main_window(const gchar * glade_file) +static void init_main_window(const gchar *glade_file) { GladeXML *xml; GtkWidget *widget; @@ -137,7 +132,7 @@ void init_main_window(const gchar * glade_file) xml = glade_xml_new(glade_file, "window1", NULL); if (!xml) - g_error(_("GUI loading failed !\n")); + g_error("GUI loading failed !\n"); glade_xml_signal_autoconnect(xml); main_wnd = glade_xml_get_widget(xml, "window1"); @@ -190,7 +185,7 @@ void init_main_window(const gchar * glade_file) gtk_widget_show(main_wnd); } -void init_tree_model(void) +static void init_tree_model(void) { gint i; @@ -220,7 +215,7 @@ void init_tree_model(void) model1 = GTK_TREE_MODEL(tree1); } -void init_left_tree(void) +static void init_left_tree(void) { GtkTreeView *view = GTK_TREE_VIEW(tree1_w); GtkCellRenderer *renderer; @@ -233,7 +228,7 @@ void init_left_tree(void) column = gtk_tree_view_column_new(); gtk_tree_view_append_column(view, column); - gtk_tree_view_column_set_title(column, _("Options")); + gtk_tree_view_column_set_title(column, "Options"); renderer = gtk_cell_renderer_toggle_new(); gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), @@ -262,7 +257,7 @@ static void renderer_edited(GtkCellRendererText * cell, const gchar * path_string, const gchar * new_text, gpointer user_data); -void init_right_tree(void) +static void init_right_tree(void) { GtkTreeView *view = GTK_TREE_VIEW(tree2_w); GtkCellRenderer *renderer; @@ -276,7 +271,7 @@ void init_right_tree(void) column = gtk_tree_view_column_new(); gtk_tree_view_append_column(view, column); - gtk_tree_view_column_set_title(column, _("Options")); + gtk_tree_view_column_set_title(column, "Options"); renderer = gtk_cell_renderer_pixbuf_new(); gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), @@ -305,7 +300,7 @@ void init_right_tree(void) renderer = gtk_cell_renderer_text_new(); gtk_tree_view_insert_column_with_attributes(view, -1, - _("Name"), renderer, + "Name", renderer, "text", COL_NAME, "foreground-gdk", COL_COLOR, NULL); @@ -329,7 +324,7 @@ void init_right_tree(void) COL_COLOR, NULL); renderer = gtk_cell_renderer_text_new(); gtk_tree_view_insert_column_with_attributes(view, -1, - _("Value"), renderer, + "Value", renderer, "text", COL_VALUE, "editable", COL_EDIT, @@ -368,7 +363,7 @@ static void text_insert_help(struct menu *menu) { GtkTextBuffer *buffer; GtkTextIter start, end; - const char *prompt = _(menu_get_prompt(menu)); + const char *prompt = menu_get_prompt(menu); struct gstr help = str_new(); menu_get_ext_help(menu, &help); @@ -422,7 +417,7 @@ gboolean on_window1_delete_event(GtkWidget * widget, GdkEvent * event, if (!conf_get_changed()) return FALSE; - dialog = gtk_dialog_new_with_buttons(_("Warning !"), + dialog = gtk_dialog_new_with_buttons("Warning !", GTK_WINDOW(main_wnd), (GtkDialogFlags) (GTK_DIALOG_MODAL | @@ -436,7 +431,7 @@ gboolean on_window1_delete_event(GtkWidget * widget, GdkEvent * event, gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_CANCEL); - label = gtk_label_new(_("\nSave configuration ?\n")); + label = gtk_label_new("\nSave configuration ?\n"); gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), label); gtk_widget_show(label); @@ -496,7 +491,7 @@ load_filename(GtkFileSelection * file_selector, gpointer user_data) (user_data)); if (conf_read(fn)) - text_insert_msg(_("Error"), _("Unable to load configuration !")); + text_insert_msg("Error", "Unable to load configuration !"); else display_tree(&rootmenu); } @@ -505,7 +500,7 @@ void on_load1_activate(GtkMenuItem * menuitem, gpointer user_data) { GtkWidget *fs; - fs = gtk_file_selection_new(_("Load file...")); + fs = gtk_file_selection_new("Load file..."); g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fs)->ok_button), "clicked", G_CALLBACK(load_filename), (gpointer) fs); @@ -524,7 +519,8 @@ void on_load1_activate(GtkMenuItem * menuitem, gpointer user_data) void on_save_activate(GtkMenuItem * menuitem, gpointer user_data) { if (conf_write(NULL)) - text_insert_msg(_("Error"), _("Unable to save configuration !")); + text_insert_msg("Error", "Unable to save configuration !"); + conf_write_autoconf(0); } @@ -537,7 +533,7 @@ store_filename(GtkFileSelection * file_selector, gpointer user_data) (user_data)); if (conf_write(fn)) - text_insert_msg(_("Error"), _("Unable to save configuration !")); + text_insert_msg("Error", "Unable to save configuration !"); gtk_widget_destroy(GTK_WIDGET(user_data)); } @@ -546,7 +542,7 @@ void on_save_as1_activate(GtkMenuItem * menuitem, gpointer user_data) { GtkWidget *fs; - fs = gtk_file_selection_new(_("Save file as...")); + fs = gtk_file_selection_new("Save file as..."); g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fs)->ok_button), "clicked", G_CALLBACK(store_filename), (gpointer) fs); @@ -639,8 +635,8 @@ on_set_option_mode3_activate(GtkMenuItem *menuitem, gpointer user_data) void on_introduction1_activate(GtkMenuItem * menuitem, gpointer user_data) { GtkWidget *dialog; - const gchar *intro_text = _( - "Welcome to gkc, the GTK+ graphical configuration tool\n" + const gchar *intro_text = + "Welcome to gconfig, the GTK+ graphical configuration tool.\n" "For each option, a blank box indicates the feature is disabled, a\n" "check indicates it is enabled, and a dot indicates that it is to\n" "be compiled as a module. Clicking on the box will cycle through the three states.\n" @@ -651,10 +647,7 @@ void on_introduction1_activate(GtkMenuItem * menuitem, gpointer user_data) "Although there is no cross reference yet to help you figure out\n" "what other options must be enabled to support the option you\n" "are interested in, you can still view the help of a grayed-out\n" - "option.\n" - "\n" - "Toggling Show Debug Info under the Options menu will show \n" - "the dependencies, which you can then match by examining other options."); + "option."; dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), GTK_DIALOG_DESTROY_WITH_PARENT, @@ -671,8 +664,8 @@ void on_about1_activate(GtkMenuItem * menuitem, gpointer user_data) { GtkWidget *dialog; const gchar *about_text = - _("gkc is copyright (c) 2002 Romain Lievin .\n" - "Based on the source code from Roman Zippel.\n"); + "gconfig is copyright (c) 2002 Romain Lievin .\n" + "Based on the source code from Roman Zippel.\n"; dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), GTK_DIALOG_DESTROY_WITH_PARENT, @@ -689,9 +682,9 @@ void on_license1_activate(GtkMenuItem * menuitem, gpointer user_data) { GtkWidget *dialog; const gchar *license_text = - _("gkc is released under the terms of the GNU GPL v2.\n" + "gconfig is released under the terms of the GNU GPL v2.\n" "For more information, please see the source code or\n" - "visit http://www.fsf.org/licenses/licenses.html\n"); + "visit http://www.fsf.org/licenses/licenses.html\n"; dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), GTK_DIALOG_DESTROY_WITH_PARENT, @@ -1048,8 +1041,13 @@ static gchar **fill_row(struct menu *menu) g_free(row[i]); bzero(row, sizeof(row)); + ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; + row[COL_OPTION] = - g_strdup_printf("%s %s", _(menu_get_prompt(menu)), + g_strdup_printf("%s %s %s %s", + ptype == P_COMMENT ? "***" : "", + menu_get_prompt(menu), + ptype == P_COMMENT ? "***" : "", sym && !sym_has_value(sym) ? "(NEW)" : ""); if (opt_mode == OPT_ALL && !menu_is_visible(menu)) @@ -1060,7 +1058,6 @@ static gchar **fill_row(struct menu *menu) else row[COL_COLOR] = g_strdup("Black"); - ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; switch (ptype) { case P_MENU: row[COL_PIXBUF] = (gchar *) xpm_menu; @@ -1102,7 +1099,7 @@ static gchar **fill_row(struct menu *menu) if (def_menu) row[COL_VALUE] = - g_strdup(_(menu_get_prompt(def_menu))); + g_strdup(menu_get_prompt(def_menu)); } if (sym->flags & SYMBOL_CHOICEVAL) row[COL_BTNRAD] = GINT_TO_POINTER(TRUE); @@ -1211,8 +1208,8 @@ static GtkTreeIter found; /* * Find a menu in the GtkTree starting at parent. */ -GtkTreeIter *gtktree_iter_find_node(GtkTreeIter * parent, - struct menu *tofind) +static GtkTreeIter *gtktree_iter_find_node(GtkTreeIter *parent, + struct menu *tofind) { GtkTreeIter iter; GtkTreeIter *child = &iter; @@ -1423,7 +1420,7 @@ static void display_list(void) tree = tree2; } -void fixup_rootmenu(struct menu *menu) +static void fixup_rootmenu(struct menu *menu) { struct menu *child; static int menu_cnt = 0; @@ -1447,18 +1444,11 @@ int main(int ac, char *av[]) char *env; gchar *glade_file; - bindtextdomain(PACKAGE, LOCALEDIR); - bind_textdomain_codeset(PACKAGE, "UTF-8"); - textdomain(PACKAGE); - /* GTK stuffs */ gtk_set_locale(); gtk_init(&ac, &av); glade_init(); - //add_pixmap_directory (PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps"); - //add_pixmap_directory (PACKAGE_SOURCE_DIR "/pixmaps"); - /* Determine GUI path */ env = getenv(SRCTREE); if (env) diff --git a/support/kconfig/hashtable.h b/support/kconfig/hashtable.h new file mode 100644 index 0000000000..a0a2c8f5f6 --- /dev/null +++ b/support/kconfig/hashtable.h @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +#ifndef HASHTABLE_H +#define HASHTABLE_H + +#include "array_size.h" +#include "list.h" + +#define HASH_SIZE(name) (ARRAY_SIZE(name)) + +#define HASHTABLE_DECLARE(name, size) struct hlist_head name[size] + +#define HASHTABLE_DEFINE(name, size) \ + HASHTABLE_DECLARE(name, size) = \ + { [0 ... ((size) - 1)] = HLIST_HEAD_INIT } + +#define hash_head(table, key) (&(table)[(key) % HASH_SIZE(table)]) + +/** + * hash_add - add an object to a hashtable + * @table: hashtable to add to + * @node: the &struct hlist_node of the object to be added + * @key: the key of the object to be added + */ +#define hash_add(table, node, key) \ + hlist_add_head(node, hash_head(table, key)) + +/** + * hash_for_each - iterate over a hashtable + * @table: hashtable to iterate + * @obj: the type * to use as a loop cursor for each entry + * @member: the name of the hlist_node within the struct + */ +#define hash_for_each(table, obj, member) \ + for (int _bkt = 0; _bkt < HASH_SIZE(table); _bkt++) \ + hlist_for_each_entry(obj, &table[_bkt], member) + +/** + * hash_for_each_possible - iterate over all possible objects hashing to the + * same bucket + * @table: hashtable to iterate + * @obj: the type * to use as a loop cursor for each entry + * @member: the name of the hlist_node within the struct + * @key: the key of the objects to iterate over + */ +#define hash_for_each_possible(table, obj, member, key) \ + hlist_for_each_entry(obj, hash_head(table, key), member) + +#endif /* HASHTABLE_H */ diff --git a/support/kconfig/images.c b/support/kconfig/images.c index d4f84bd4a9..2f9afffa5d 100644 --- a/support/kconfig/images.c +++ b/support/kconfig/images.c @@ -1,9 +1,11 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ -static const char *xpm_load[] = { +#include "images.h" + +const char * const xpm_load[] = { "22 22 5 1", ". c None", "# c #000000", @@ -33,7 +35,7 @@ static const char *xpm_load[] = { "###############.......", "......................"}; -static const char *xpm_save[] = { +const char * const xpm_save[] = { "22 22 5 1", ". c None", "# c #000000", @@ -63,7 +65,7 @@ static const char *xpm_save[] = { "..##################..", "......................"}; -static const char *xpm_back[] = { +const char * const xpm_back[] = { "22 22 3 1", ". c None", "# c #000083", @@ -91,7 +93,7 @@ static const char *xpm_back[] = { "......................", "......................"}; -static const char *xpm_tree_view[] = { +const char * const xpm_tree_view[] = { "22 22 2 1", ". c None", "# c #000000", @@ -118,7 +120,7 @@ static const char *xpm_tree_view[] = { "......................", "......................"}; -static const char *xpm_single_view[] = { +const char * const xpm_single_view[] = { "22 22 2 1", ". c None", "# c #000000", @@ -145,7 +147,7 @@ static const char *xpm_single_view[] = { "......................", "......................"}; -static const char *xpm_split_view[] = { +const char * const xpm_split_view[] = { "22 22 2 1", ". c None", "# c #000000", @@ -172,7 +174,7 @@ static const char *xpm_split_view[] = { "......................", "......................"}; -static const char *xpm_symbol_no[] = { +const char * const xpm_symbol_no[] = { "12 12 2 1", " c white", ". c black", @@ -189,7 +191,7 @@ static const char *xpm_symbol_no[] = { " .......... ", " "}; -static const char *xpm_symbol_mod[] = { +const char * const xpm_symbol_mod[] = { "12 12 2 1", " c white", ". c black", @@ -206,7 +208,7 @@ static const char *xpm_symbol_mod[] = { " .......... ", " "}; -static const char *xpm_symbol_yes[] = { +const char * const xpm_symbol_yes[] = { "12 12 2 1", " c white", ". c black", @@ -223,7 +225,7 @@ static const char *xpm_symbol_yes[] = { " .......... ", " "}; -static const char *xpm_choice_no[] = { +const char * const xpm_choice_no[] = { "12 12 2 1", " c white", ". c black", @@ -240,7 +242,7 @@ static const char *xpm_choice_no[] = { " .... ", " "}; -static const char *xpm_choice_yes[] = { +const char * const xpm_choice_yes[] = { "12 12 2 1", " c white", ". c black", @@ -257,7 +259,7 @@ static const char *xpm_choice_yes[] = { " .... ", " "}; -static const char *xpm_menu[] = { +const char * const xpm_menu[] = { "12 12 2 1", " c white", ". c black", @@ -274,7 +276,7 @@ static const char *xpm_menu[] = { " .......... ", " "}; -static const char *xpm_menu_inv[] = { +const char * const xpm_menu_inv[] = { "12 12 2 1", " c white", ". c black", @@ -291,7 +293,7 @@ static const char *xpm_menu_inv[] = { " .......... ", " "}; -static const char *xpm_menuback[] = { +const char * const xpm_menuback[] = { "12 12 2 1", " c white", ". c black", @@ -308,7 +310,7 @@ static const char *xpm_menuback[] = { " .......... ", " "}; -static const char *xpm_void[] = { +const char * const xpm_void[] = { "12 12 2 1", " c white", ". c black", diff --git a/support/kconfig/images.h b/support/kconfig/images.h new file mode 100644 index 0000000000..7212dec200 --- /dev/null +++ b/support/kconfig/images.h @@ -0,0 +1,33 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2002 Roman Zippel + */ + +#ifndef IMAGES_H +#define IMAGES_H + +#ifdef __cplusplus +extern "C" { +#endif + +extern const char * const xpm_load[]; +extern const char * const xpm_save[]; +extern const char * const xpm_back[]; +extern const char * const xpm_tree_view[]; +extern const char * const xpm_single_view[]; +extern const char * const xpm_split_view[]; +extern const char * const xpm_symbol_no[]; +extern const char * const xpm_symbol_mod[]; +extern const char * const xpm_symbol_yes[]; +extern const char * const xpm_choice_no[]; +extern const char * const xpm_choice_yes[]; +extern const char * const xpm_menu[]; +extern const char * const xpm_menu_inv[]; +extern const char * const xpm_menuback[]; +extern const char * const xpm_void[]; + +#ifdef __cplusplus +} +#endif + +#endif /* IMAGES_H */ diff --git a/support/kconfig/internal.h b/support/kconfig/internal.h new file mode 100644 index 0000000000..6c721c4cfd --- /dev/null +++ b/support/kconfig/internal.h @@ -0,0 +1,21 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +#ifndef INTERNAL_H +#define INTERNAL_H + +#include "hashtable.h" + +#define SYMBOL_HASHSIZE (1U << 14) + +extern HASHTABLE_DECLARE(sym_hashtable, SYMBOL_HASHSIZE); + +#define for_all_symbols(sym) \ + hash_for_each(sym_hashtable, sym, node) + +struct menu; + +extern struct menu *current_menu, *current_entry; + +extern const char *cur_filename; +extern int cur_lineno; + +#endif /* INTERNAL_H */ diff --git a/support/kconfig/kconf_id.c b/support/kconfig/kconf_id.c deleted file mode 100644 index 3ea9c5f9f7..0000000000 --- a/support/kconfig/kconf_id.c +++ /dev/null @@ -1,53 +0,0 @@ - -static struct kconf_id kconf_id_array[] = { - { "mainmenu", T_MAINMENU, TF_COMMAND }, - { "menu", T_MENU, TF_COMMAND }, - { "endmenu", T_ENDMENU, TF_COMMAND }, - { "source", T_SOURCE, TF_COMMAND }, - { "choice", T_CHOICE, TF_COMMAND }, - { "endchoice", T_ENDCHOICE, TF_COMMAND }, - { "comment", T_COMMENT, TF_COMMAND }, - { "config", T_CONFIG, TF_COMMAND }, - { "menuconfig", T_MENUCONFIG, TF_COMMAND }, - { "help", T_HELP, TF_COMMAND }, - { "---help---", T_HELP, TF_COMMAND }, - { "if", T_IF, TF_COMMAND|TF_PARAM }, - { "endif", T_ENDIF, TF_COMMAND }, - { "depends", T_DEPENDS, TF_COMMAND }, - { "optional", T_OPTIONAL, TF_COMMAND }, - { "default", T_DEFAULT, TF_COMMAND, S_UNKNOWN }, - { "prompt", T_PROMPT, TF_COMMAND }, - { "tristate", T_TYPE, TF_COMMAND, S_TRISTATE }, - { "def_tristate", T_DEFAULT, TF_COMMAND, S_TRISTATE }, - { "bool", T_TYPE, TF_COMMAND, S_BOOLEAN }, - { "def_bool", T_DEFAULT, TF_COMMAND, S_BOOLEAN }, - { "int", T_TYPE, TF_COMMAND, S_INT }, - { "hex", T_TYPE, TF_COMMAND, S_HEX }, - { "string", T_TYPE, TF_COMMAND, S_STRING }, - { "select", T_SELECT, TF_COMMAND }, - { "imply", T_IMPLY, TF_COMMAND }, - { "range", T_RANGE, TF_COMMAND }, - { "visible", T_VISIBLE, TF_COMMAND }, - { "option", T_OPTION, TF_COMMAND }, - { "on", T_ON, TF_PARAM }, - { "modules", T_OPT_MODULES, TF_OPTION }, - { "defconfig_list", T_OPT_DEFCONFIG_LIST, TF_OPTION }, - { "env", T_OPT_ENV, TF_OPTION }, - { "allnoconfig_y", T_OPT_ALLNOCONFIG_Y, TF_OPTION }, -}; - -#define KCONF_ID_ARRAY_SIZE (sizeof(kconf_id_array)/sizeof(struct kconf_id)) - -static const struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len) -{ - int i; - - for (i = 0; i < KCONF_ID_ARRAY_SIZE; i++) { - struct kconf_id *id = kconf_id_array+i; - int l = strlen(id->name); - - if (len == l && !memcmp(str, id->name, len)) - return id; - } - return NULL; -} diff --git a/support/kconfig/kxgettext.c b/support/kconfig/kxgettext.c deleted file mode 100644 index 240880a891..0000000000 --- a/support/kconfig/kxgettext.c +++ /dev/null @@ -1,235 +0,0 @@ -/* - * Arnaldo Carvalho de Melo , 2005 - * - * Released under the terms of the GNU GPL v2.0 - */ - -#include -#include - -#include "lkc.h" - -static char *escape(const char* text, char *bf, int len) -{ - char *bfp = bf; - int multiline = strchr(text, '\n') != NULL; - int eol = 0; - int textlen = strlen(text); - - if ((textlen > 0) && (text[textlen-1] == '\n')) - eol = 1; - - *bfp++ = '"'; - --len; - - if (multiline) { - *bfp++ = '"'; - *bfp++ = '\n'; - *bfp++ = '"'; - len -= 3; - } - - while (*text != '\0' && len > 1) { - if (*text == '"') - *bfp++ = '\\'; - else if (*text == '\n') { - *bfp++ = '\\'; - *bfp++ = 'n'; - *bfp++ = '"'; - *bfp++ = '\n'; - *bfp++ = '"'; - len -= 5; - ++text; - goto next; - } - else if (*text == '\\') { - *bfp++ = '\\'; - len--; - } - *bfp++ = *text++; -next: - --len; - } - - if (multiline && eol) - bfp -= 3; - - *bfp++ = '"'; - *bfp = '\0'; - - return bf; -} - -struct file_line { - struct file_line *next; - const char *file; - int lineno; -}; - -static struct file_line *file_line__new(const char *file, int lineno) -{ - struct file_line *self = malloc(sizeof(*self)); - - if (self == NULL) - goto out; - - self->file = file; - self->lineno = lineno; - self->next = NULL; -out: - return self; -} - -struct message { - const char *msg; - const char *option; - struct message *next; - struct file_line *files; -}; - -static struct message *message__list; - -static struct message *message__new(const char *msg, char *option, - const char *file, int lineno) -{ - struct message *self = malloc(sizeof(*self)); - - if (self == NULL) - goto out; - - self->files = file_line__new(file, lineno); - if (self->files == NULL) - goto out_fail; - - self->msg = xstrdup(msg); - if (self->msg == NULL) - goto out_fail_msg; - - self->option = option; - self->next = NULL; -out: - return self; -out_fail_msg: - free(self->files); -out_fail: - free(self); - self = NULL; - goto out; -} - -static struct message *mesage__find(const char *msg) -{ - struct message *m = message__list; - - while (m != NULL) { - if (strcmp(m->msg, msg) == 0) - break; - m = m->next; - } - - return m; -} - -static int message__add_file_line(struct message *self, const char *file, - int lineno) -{ - int rc = -1; - struct file_line *fl = file_line__new(file, lineno); - - if (fl == NULL) - goto out; - - fl->next = self->files; - self->files = fl; - rc = 0; -out: - return rc; -} - -static int message__add(const char *msg, char *option, const char *file, - int lineno) -{ - int rc = 0; - char bf[16384]; - char *escaped = escape(msg, bf, sizeof(bf)); - struct message *m = mesage__find(escaped); - - if (m != NULL) - rc = message__add_file_line(m, file, lineno); - else { - m = message__new(escaped, option, file, lineno); - - if (m != NULL) { - m->next = message__list; - message__list = m; - } else - rc = -1; - } - return rc; -} - -static void menu_build_message_list(struct menu *menu) -{ - struct menu *child; - - message__add(menu_get_prompt(menu), NULL, - menu->file == NULL ? "Root Menu" : menu->file->name, - menu->lineno); - - if (menu->sym != NULL && menu_has_help(menu)) - message__add(menu_get_help(menu), menu->sym->name, - menu->file == NULL ? "Root Menu" : menu->file->name, - menu->lineno); - - for (child = menu->list; child != NULL; child = child->next) - if (child->prompt != NULL) - menu_build_message_list(child); -} - -static void message__print_file_lineno(struct message *self) -{ - struct file_line *fl = self->files; - - putchar('\n'); - if (self->option != NULL) - printf("# %s:00000\n", self->option); - - printf("#: %s:%d", fl->file, fl->lineno); - fl = fl->next; - - while (fl != NULL) { - printf(", %s:%d", fl->file, fl->lineno); - fl = fl->next; - } - - putchar('\n'); -} - -static void message__print_gettext_msgid_msgstr(struct message *self) -{ - message__print_file_lineno(self); - - printf("msgid %s\n" - "msgstr \"\"\n", self->msg); -} - -static void menu__xgettext(void) -{ - struct message *m = message__list; - - while (m != NULL) { - /* skip empty lines ("") */ - if (strlen(m->msg) > sizeof("\"\"")) - message__print_gettext_msgid_msgstr(m); - m = m->next; - } -} - -int main(int ac, char **av) -{ - conf_parse(av[1]); - - menu_build_message_list(menu_get_root_menu(NULL)); - menu__xgettext(); - return 0; -} diff --git a/support/kconfig/lexer.l b/support/kconfig/lexer.l new file mode 100644 index 0000000000..89544c3a1a --- /dev/null +++ b/support/kconfig/lexer.l @@ -0,0 +1,460 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2002 Roman Zippel + */ +%option nostdinit noyywrap never-interactive full ecs +%option 8bit nodefault yylineno +%x ASSIGN_VAL HELP STRING +%{ + +#include +#include +#include +#include +#include + +#include "lkc.h" +#include "preprocess.h" + +#include "parser.tab.h" + +#define YY_DECL static int yylex1(void) + +#define START_STRSIZE 16 + +/* The Kconfig file currently being parsed. */ +const char *cur_filename; + +/* + * The line number of the current statement. This does not match yylineno. + * yylineno is used by the lexer, while cur_lineno is used by the parser. + */ +int cur_lineno; + +static int prev_prev_token = T_EOL; +static int prev_token = T_EOL; +static char *text; +static int text_size, text_asize; + +struct buffer { + struct buffer *parent; + YY_BUFFER_STATE state; + int yylineno; + const char *filename; + int source_lineno; +}; + +static struct buffer *current_buf; + +static int last_ts, first_ts; + +static char *expand_token(const char *in, size_t n); +static void append_expanded_string(const char *in); +static void zconf_endhelp(void); +static void zconf_endfile(void); + +static void new_string(void) +{ + text = xmalloc(START_STRSIZE); + text_asize = START_STRSIZE; + text_size = 0; + *text = 0; +} + +static void append_string(const char *str, int size) +{ + int new_size = text_size + size + 1; + if (new_size > text_asize) { + new_size += START_STRSIZE - 1; + new_size &= -START_STRSIZE; + text = xrealloc(text, new_size); + text_asize = new_size; + } + memcpy(text + text_size, str, size); + text_size += size; + text[text_size] = 0; +} + +static void alloc_string(const char *str, int size) +{ + text = xmalloc(size + 1); + memcpy(text, str, size); + text[size] = 0; +} + +static void warn_ignored_character(char chr) +{ + fprintf(stderr, + "%s:%d:warning: ignoring unsupported character '%c'\n", + cur_filename, yylineno, chr); +} +%} + +n [A-Za-z0-9_-] + +%% + char open_quote = 0; + +#.* /* ignore comment */ +[ \t]* /* whitespaces */ +\\\n /* escaped new line */ +\n return T_EOL; +"bool" return T_BOOL; +"choice" return T_CHOICE; +"comment" return T_COMMENT; +"config" return T_CONFIG; +"def_bool" return T_DEF_BOOL; +"def_tristate" return T_DEF_TRISTATE; +"default" return T_DEFAULT; +"depends" return T_DEPENDS; +"endchoice" return T_ENDCHOICE; +"endif" return T_ENDIF; +"endmenu" return T_ENDMENU; +"help" return T_HELP; +"hex" return T_HEX; +"if" return T_IF; +"imply" return T_IMPLY; +"int" return T_INT; +"mainmenu" return T_MAINMENU; +"menu" return T_MENU; +"menuconfig" return T_MENUCONFIG; +"modules" return T_MODULES; +"on" return T_ON; +"optional" return T_OPTIONAL; +"prompt" return T_PROMPT; +"range" return T_RANGE; +"select" return T_SELECT; +"source" return T_SOURCE; +"string" return T_STRING; +"tristate" return T_TRISTATE; +"visible" return T_VISIBLE; +"||" return T_OR; +"&&" return T_AND; +"=" return T_EQUAL; +"!=" return T_UNEQUAL; +"<" return T_LESS; +"<=" return T_LESS_EQUAL; +">" return T_GREATER; +">=" return T_GREATER_EQUAL; +"!" return T_NOT; +"(" return T_OPEN_PAREN; +")" return T_CLOSE_PAREN; +":=" return T_COLON_EQUAL; +"+=" return T_PLUS_EQUAL; +\"|\' { + open_quote = yytext[0]; + new_string(); + BEGIN(STRING); + } +{n}+ { + alloc_string(yytext, yyleng); + yylval.string = text; + return T_WORD; + } +({n}|$)+ { + /* this token includes at least one '$' */ + yylval.string = expand_token(yytext, yyleng); + if (strlen(yylval.string)) + return T_WORD; + free(yylval.string); + } +. warn_ignored_character(*yytext); + +{ + [^[:blank:]\n]+.* { + alloc_string(yytext, yyleng); + yylval.string = text; + return T_ASSIGN_VAL; + } + \n { BEGIN(INITIAL); return T_EOL; } + . +} + +{ + "$".* append_expanded_string(yytext); + [^$'"\\\n]+ { + append_string(yytext, yyleng); + } + \\.? { + append_string(yytext + 1, yyleng - 1); + } + \'|\" { + if (open_quote == yytext[0]) { + BEGIN(INITIAL); + yylval.string = text; + return T_WORD_QUOTE; + } else + append_string(yytext, 1); + } + \n { + fprintf(stderr, + "%s:%d:warning: multi-line strings not supported\n", + cur_filename, cur_lineno); + unput('\n'); + BEGIN(INITIAL); + yylval.string = text; + return T_WORD_QUOTE; + } + <> { + BEGIN(INITIAL); + yylval.string = text; + return T_WORD_QUOTE; + } +} + +{ + [ \t]+ { + int ts, i; + + ts = 0; + for (i = 0; i < yyleng; i++) { + if (yytext[i] == '\t') + ts = (ts & ~7) + 8; + else + ts++; + } + last_ts = ts; + if (first_ts) { + if (ts < first_ts) { + zconf_endhelp(); + return T_HELPTEXT; + } + ts -= first_ts; + while (ts > 8) { + append_string(" ", 8); + ts -= 8; + } + append_string(" ", ts); + } + } + [ \t]*\n/[^ \t\n] { + zconf_endhelp(); + return T_HELPTEXT; + } + [ \t]*\n { + append_string("\n", 1); + } + [^ \t\n].* { + while (yyleng) { + if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t')) + break; + yyleng--; + } + append_string(yytext, yyleng); + if (!first_ts) + first_ts = last_ts; + } + <> { + zconf_endhelp(); + return T_HELPTEXT; + } +} + +<> { + BEGIN(INITIAL); + + if (prev_token != T_EOL && prev_token != T_HELPTEXT) + fprintf(stderr, "%s:%d:warning: no new line at end of file\n", + cur_filename, yylineno); + + if (current_buf) { + zconf_endfile(); + return T_EOL; + } + fclose(yyin); + yyterminate(); +} + +%% + +/* second stage lexer */ +int yylex(void) +{ + int token; + +repeat: + token = yylex1(); + + if (prev_token == T_EOL || prev_token == T_HELPTEXT) { + if (token == T_EOL) + /* Do not pass unneeded T_EOL to the parser. */ + goto repeat; + else + /* + * For the parser, update lineno at the first token + * of each statement. Generally, \n is a statement + * terminator in Kconfig, but it is not always true + * because \n could be escaped by a backslash. + */ + cur_lineno = yylineno; + } + + if (prev_prev_token == T_EOL && prev_token == T_WORD && + (token == T_EQUAL || token == T_COLON_EQUAL || token == T_PLUS_EQUAL)) + BEGIN(ASSIGN_VAL); + + prev_prev_token = prev_token; + prev_token = token; + + return token; +} + +static char *expand_token(const char *in, size_t n) +{ + char *out; + int c; + char c2; + const char *rest, *end; + + new_string(); + append_string(in, n); + + /* + * get the whole line because we do not know the end of token. + * input() returns 0 (not EOF!) when it reachs the end of file. + */ + while ((c = input()) != 0) { + if (c == '\n') { + unput(c); + break; + } + c2 = c; + append_string(&c2, 1); + } + + rest = text; + out = expand_one_token(&rest); + + /* push back unused characters to the input stream */ + end = rest + strlen(rest); + while (end > rest) + unput(*--end); + + free(text); + + return out; +} + +static void append_expanded_string(const char *str) +{ + const char *end; + char *res; + + str++; + + res = expand_dollar(&str); + + /* push back unused characters to the input stream */ + end = str + strlen(str); + while (end > str) + unput(*--end); + + append_string(res, strlen(res)); + + free(res); +} + +void zconf_starthelp(void) +{ + new_string(); + last_ts = first_ts = 0; + BEGIN(HELP); +} + +static void zconf_endhelp(void) +{ + yylval.string = text; + BEGIN(INITIAL); +} + + +/* + * Try to open specified file with following names: + * ./name + * $(srctree)/name + * The latter is used when srctree is separate from objtree + * when compiling the kernel. + * Return NULL if file is not found. + */ +FILE *zconf_fopen(const char *name) +{ + char *env, fullname[PATH_MAX+1]; + FILE *f; + + f = fopen(name, "r"); + if (!f && name != NULL && name[0] != '/') { + env = getenv(SRCTREE); + if (env) { + snprintf(fullname, sizeof(fullname), + "%s/%s", env, name); + f = fopen(fullname, "r"); + } + } + return f; +} + +void zconf_initscan(const char *name) +{ + yyin = zconf_fopen(name); + if (!yyin) { + fprintf(stderr, "can't find file %s\n", name); + exit(1); + } + + cur_filename = file_lookup(name); + yylineno = 1; +} + +void zconf_nextfile(const char *name) +{ + struct buffer *buf = xmalloc(sizeof(*buf)); + bool recur_include = false; + + buf->state = YY_CURRENT_BUFFER; + buf->yylineno = yylineno; + buf->filename = cur_filename; + buf->source_lineno = cur_lineno; + buf->parent = current_buf; + current_buf = buf; + yyin = zconf_fopen(name); + if (!yyin) { + fprintf(stderr, "%s:%d: can't open file \"%s\"\n", + cur_filename, cur_lineno, name); + exit(1); + } + yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); + + for (buf = current_buf; buf; buf = buf->parent) { + if (!strcmp(buf->filename, name)) + recur_include = true; + } + + if (recur_include) { + fprintf(stderr, + "Recursive inclusion detected.\n" + "Inclusion path:\n" + " current file : %s\n", name); + + for (buf = current_buf; buf; buf = buf->parent) + fprintf(stderr, " included from: %s:%d\n", + buf->filename, buf->source_lineno); + exit(1); + } + + yylineno = 1; + cur_filename = file_lookup(name); +} + +static void zconf_endfile(void) +{ + struct buffer *tmp; + + fclose(yyin); + yy_delete_buffer(YY_CURRENT_BUFFER); + yy_switch_to_buffer(current_buf->state); + yylineno = current_buf->yylineno; + cur_filename = current_buf->filename; + tmp = current_buf; + current_buf = current_buf->parent; + free(tmp); +} diff --git a/support/kconfig/lexer.lex.c_shipped b/support/kconfig/lexer.lex.c_shipped new file mode 100644 index 0000000000..8d29983b47 --- /dev/null +++ b/support/kconfig/lexer.lex.c_shipped @@ -0,0 +1,4103 @@ + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 6 +#define YY_FLEX_SUBMINOR_VERSION 4 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#ifndef SIZE_MAX +#define SIZE_MAX (~(size_t)0) +#endif + +#endif /* ! C99 */ + +#endif /* ! FLEXINT_H */ + +/* begin standard C++ headers. */ + +/* TODO: this is always defined, so inline it */ +#define yyconst const + +#if defined(__GNUC__) && __GNUC__ >= 3 +#define yynoreturn __attribute__((__noreturn__)) +#else +#define yynoreturn +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an + * integer in range [0..255] for use as an array index. + */ +#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN (yy_start) = 1 + 2 * +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START (((yy_start) - 1) / 2) +#define YYSTATE YY_START +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE yyrestart( yyin ) +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k. + * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. + * Ditto for the __ia64__ case accordingly. + */ +#define YY_BUF_SIZE 32768 +#else +#define YY_BUF_SIZE 16384 +#endif /* __ia64__ */ +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +extern int yyleng; + +extern FILE *yyin, *yyout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires + * access to the local variable yy_act. Since yyless() is a macro, it would break + * existing scanners that call yyless() from OUTSIDE yylex. + * One obvious solution it to make yy_act a global. I tried that, and saw + * a 5% performance hit in a non-yylineno scanner, because yy_act is + * normally declared as a register variable-- so it is not worth it. + */ + #define YY_LESS_LINENO(n) \ + do { \ + int yyl;\ + for ( yyl = n; yyl < yyleng; ++yyl )\ + if ( yytext[yyl] == '\n' )\ + --yylineno;\ + }while(0) + #define YY_LINENO_REWIND_TO(dst) \ + do {\ + const char *p;\ + for ( p = yy_cp-1; p >= (dst); --p)\ + if ( *p == '\n' )\ + --yylineno;\ + }while(0) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = (yy_hold_char); \ + YY_RESTORE_YY_MORE_OFFSET \ + (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) +#define unput(c) yyunput( c, (yytext_ptr) ) + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + int yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* Stack of input buffers. */ +static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ + ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ + : NULL) +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] + +/* yy_hold_char holds the character lost when yytext is formed. */ +static char yy_hold_char; +static int yy_n_chars; /* number of characters read into yy_ch_buf */ +int yyleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = NULL; +static int yy_init = 0; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow yywrap()'s to do buffer switches + * instead of setting up a fresh yyin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void yyrestart ( FILE *input_file ); +void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); +void yy_delete_buffer ( YY_BUFFER_STATE b ); +void yy_flush_buffer ( YY_BUFFER_STATE b ); +void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); +void yypop_buffer_state ( void ); + +static void yyensure_buffer_stack ( void ); +static void yy_load_buffer_state ( void ); +static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); +#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) + +YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); +YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); +YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); + +void *yyalloc ( yy_size_t ); +void *yyrealloc ( void *, yy_size_t ); +void yyfree ( void * ); + +#define yy_new_buffer yy_create_buffer +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer( yyin, YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer( yyin, YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +#define yywrap() (/*CONSTCOND*/1) +#define YY_SKIP_YYWRAP +typedef flex_uint8_t YY_CHAR; + +FILE *yyin = NULL, *yyout = NULL; + +typedef int yy_state_type; + +extern int yylineno; +int yylineno = 1; + +extern char *yytext; +#ifdef yytext_ptr +#undef yytext_ptr +#endif +#define yytext_ptr yytext + +static const flex_int16_t yy_nxt[][42] = + { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 + }, + + { + 9, 10, 11, 12, 13, 14, 15, 16, 17, 14, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 21, + 21, 27, 28, 29, 30, 21, 21, 31, 32, 21, + 33, 21, 34, 35, 36, 37, 38, 21, 39, 21, + 21, 40 + + }, + + { + 9, 10, 11, 12, 13, 14, 15, 16, 17, 14, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 21, + 21, 27, 28, 29, 30, 21, 21, 31, 32, 21, + 33, 21, 34, 35, 36, 37, 38, 21, 39, 21, + 21, 40 + }, + + { + 9, 41, 42, 43, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41 + + }, + + { + 9, 41, 42, 43, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41 + }, + + { + 9, 44, 45, 46, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44 + + }, + + { + 9, 44, 45, 46, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44 + }, + + { + 9, 47, 47, 48, 47, 49, 47, 50, 47, 49, + 47, 47, 47, 47, 47, 47, 47, 47, 51, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47 + + }, + + { + 9, 47, 47, 48, 47, 49, 47, 50, 47, 49, + 47, 47, 47, 47, 47, 47, 47, 47, 51, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47 + }, + + { + -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + -9, -9 + + }, + + { + 9, -10, -10, -10, -10, -10, -10, -10, -10, -10, + -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, + -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, + -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, + -10, -10 + }, + + { + 9, -11, 52, -11, -11, -11, -11, -11, -11, -11, + -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, + -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, + -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, + -11, -11 + + }, + + { + 9, -12, -12, -12, -12, -12, -12, -12, -12, -12, + -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, + -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, + -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, + -12, -12 + }, + + { + 9, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, 53, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13 + + }, + + { + 9, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14 + }, + + { + 9, 54, 54, -15, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54 + + }, + + { + 9, -16, -16, -16, -16, -16, -16, 55, -16, -16, + -16, -16, -16, 55, -16, -16, -16, -16, -16, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, -16 + }, + + { + 9, -17, -17, -17, -17, -17, -17, -17, 56, -17, + -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, + -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, + -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, + -17, -17 + + }, + + { + 9, -18, -18, -18, -18, -18, -18, -18, -18, -18, + -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, + -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, + -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, + -18, -18 + }, + + { + 9, -19, -19, -19, -19, -19, -19, -19, -19, -19, + -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, + -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, + -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, + -19, -19 + + }, + + { + 9, -20, -20, -20, -20, -20, -20, -20, -20, -20, + -20, -20, -20, -20, -20, -20, 57, -20, -20, -20, + -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, + -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, + -20, -20 + }, + + { + 9, -21, -21, -21, -21, -21, -21, 55, -21, -21, + -21, -21, -21, 58, -21, -21, -21, -21, -21, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -21 + + }, + + { + 9, -22, -22, -22, -22, -22, -22, -22, -22, -22, + -22, -22, -22, -22, -22, -22, 59, -22, -22, -22, + -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, + -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, + -22, -22 + }, + + { + 9, -23, -23, -23, -23, -23, -23, -23, -23, -23, + -23, -23, -23, -23, -23, -23, 60, -23, -23, -23, + -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, + -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, + -23, -23 + + }, + + { + 9, -24, -24, -24, -24, -24, -24, -24, -24, -24, + -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, + -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, + -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, + -24, -24 + }, + + { + 9, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, 61, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25 + + }, + + { + 9, -26, -26, 62, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26 + }, + + { + 9, -27, -27, -27, -27, -27, -27, 55, -27, -27, + -27, -27, -27, 58, -27, -27, -27, -27, -27, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 63, 58, 58, 58, 58, 58, 58, 58, + 58, -27 + + }, + + { + 9, -28, -28, -28, -28, -28, -28, 55, -28, -28, + -28, -28, -28, 58, -28, -28, -28, -28, -28, 58, + 58, 58, 58, 58, 58, 58, 58, 64, 58, 58, + 58, 58, 65, 58, 58, 58, 58, 58, 58, 58, + 58, -28 + }, + + { + 9, -29, -29, -29, -29, -29, -29, 55, -29, -29, + -29, -29, -29, 58, -29, -29, -29, -29, -29, 58, + 58, 58, 58, 58, 66, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -29 + + }, + + { + 9, -30, -30, -30, -30, -30, -30, 55, -30, -30, + -30, -30, -30, 58, -30, -30, -30, -30, -30, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 67, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -30 + }, + + { + 9, -31, -31, -31, -31, -31, -31, 55, -31, -31, + -31, -31, -31, 58, -31, -31, -31, -31, -31, 58, + 58, 58, 58, 58, 68, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -31 + + }, + + { + 9, -32, -32, -32, -32, -32, -32, 55, -32, -32, + -32, -32, -32, 58, -32, -32, -32, -32, -32, 58, + 58, 58, 58, 58, 58, 69, 58, 58, 58, 58, + 70, 71, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -32 + }, + + { + 9, -33, -33, -33, -33, -33, -33, 55, -33, -33, + -33, -33, -33, 58, -33, -33, -33, -33, -33, 58, + 72, 58, 58, 58, 73, 58, 58, 58, 58, 58, + 58, 58, 74, 58, 58, 58, 58, 58, 58, 58, + 58, -33 + + }, + + { + 9, -34, -34, -34, -34, -34, -34, 55, -34, -34, + -34, -34, -34, 58, -34, -34, -34, -34, -34, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 75, 58, 76, 58, 58, 58, 58, 58, 58, + 58, -34 + }, + + { + 9, -35, -35, -35, -35, -35, -35, 55, -35, -35, + -35, -35, -35, 58, -35, -35, -35, -35, -35, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 77, 58, 58, 58, 58, 58, + 58, -35 + + }, + + { + 9, -36, -36, -36, -36, -36, -36, 55, -36, -36, + -36, -36, -36, 58, -36, -36, -36, -36, -36, 58, + 78, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -36 + }, + + { + 9, -37, -37, -37, -37, -37, -37, 55, -37, -37, + -37, -37, -37, 58, -37, -37, -37, -37, -37, 58, + 58, 58, 58, 58, 79, 58, 58, 58, 58, 58, + 58, 58, 80, 58, 58, 58, 81, 58, 58, 58, + 58, -37 + + }, + + { + 9, -38, -38, -38, -38, -38, -38, 55, -38, -38, + -38, -38, -38, 58, -38, -38, -38, -38, -38, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 82, 58, 58, 58, 58, 58, + 58, -38 + }, + + { + 9, -39, -39, -39, -39, -39, -39, 55, -39, -39, + -39, -39, -39, 58, -39, -39, -39, -39, -39, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 83, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -39 + + }, + + { + 9, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, 84 + }, + + { + 9, 85, 86, -41, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85 + + }, + + { + 9, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42 + }, + + { + 9, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43 + + }, + + { + 9, 87, 87, -44, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87 + }, + + { + 9, -45, 88, 89, -45, -45, -45, -45, -45, -45, + -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, + -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, + -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, + -45, -45 + + }, + + { + 9, 90, -46, -46, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90 + }, + + { + 9, 91, 91, -47, 91, -47, 91, -47, 91, -47, + 91, 91, 91, 91, 91, 91, 91, 91, -47, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91 + + }, + + { + 9, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48 + }, + + { + 9, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49 + + }, + + { + 9, 92, 92, -50, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92 + }, + + { + 9, 93, 93, -51, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93 + + }, + + { + 9, -52, 52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52 + }, + + { + 9, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53 + + }, + + { + 9, 54, 54, -54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54 + }, + + { + 9, -55, -55, -55, -55, -55, -55, 55, -55, -55, + -55, -55, -55, 55, -55, -55, -55, -55, -55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, -55 + + }, + + { + 9, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56 + }, + + { + 9, -57, -57, -57, -57, -57, -57, -57, -57, -57, + -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, + -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, + -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, + -57, -57 + + }, + + { + 9, -58, -58, -58, -58, -58, -58, 55, -58, -58, + -58, -58, -58, 58, -58, -58, -58, -58, -58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -58 + }, + + { + 9, -59, -59, -59, -59, -59, -59, -59, -59, -59, + -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, + -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, + -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, + -59, -59 + + }, + + { + 9, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60 + }, + + { + 9, -61, -61, -61, -61, -61, -61, -61, -61, -61, + -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, + -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, + -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, + -61, -61 + + }, + + { + 9, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62 + }, + + { + 9, -63, -63, -63, -63, -63, -63, 55, -63, -63, + -63, -63, -63, 58, -63, -63, -63, -63, -63, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 94, 58, 58, 58, 58, 58, 58, 58, + 58, -63 + + }, + + { + 9, -64, -64, -64, -64, -64, -64, 55, -64, -64, + -64, -64, -64, 58, -64, -64, -64, -64, -64, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 95, 58, 58, 58, 58, 58, 58, 58, + 58, -64 + }, + + { + 9, -65, -65, -65, -65, -65, -65, 55, -65, -65, + -65, -65, -65, 58, -65, -65, -65, -65, -65, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 96, 97, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -65 + + }, + + { + 9, -66, -66, -66, -66, -66, -66, 55, -66, -66, + -66, -66, -66, 58, -66, -66, -66, -66, -66, 58, + 58, 58, 58, 58, 58, 98, 58, 58, 58, 58, + 58, 58, 58, 99, 58, 58, 58, 58, 58, 58, + 58, -66 + }, + + { + 9, -67, -67, -67, -67, -67, -67, 55, -67, -67, + -67, -67, -67, 58, -67, -67, -67, -67, -67, 58, + 58, 58, 58, 100, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -67 + + }, + + { + 9, -68, -68, -68, -68, -68, -68, 55, -68, -68, + -68, -68, -68, 58, -68, -68, -68, -68, -68, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 101, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 102, + 58, -68 + }, + + { + 9, -69, -69, -69, -69, -69, -69, 55, -69, -69, + -69, -69, -69, 58, -69, -69, -69, -69, -69, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -69 + + }, + + { + 9, -70, -70, -70, -70, -70, -70, 55, -70, -70, + -70, -70, -70, 58, -70, -70, -70, -70, -70, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 103, 58, 58, 58, 58, 58, 58, + 58, -70 + }, + + { + 9, -71, -71, -71, -71, -71, -71, 55, -71, -71, + -71, -71, -71, 58, -71, -71, -71, -71, -71, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 104, 58, 58, 58, + 58, -71 + + }, + + { + 9, -72, -72, -72, -72, -72, -72, 55, -72, -72, + -72, -72, -72, 58, -72, -72, -72, -72, -72, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 105, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -72 + }, + + { + 9, -73, -73, -73, -73, -73, -73, 55, -73, -73, + -73, -73, -73, 58, -73, -73, -73, -73, -73, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 106, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -73 + + }, + + { + 9, -74, -74, -74, -74, -74, -74, 55, -74, -74, + -74, -74, -74, 58, -74, -74, -74, -74, -74, 58, + 58, 58, 58, 107, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -74 + }, + + { + 9, -75, -75, -75, -75, -75, -75, 55, -75, -75, + -75, -75, -75, 58, -75, -75, -75, -75, -75, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -75 + + }, + + { + 9, -76, -76, -76, -76, -76, -76, 55, -76, -76, + -76, -76, -76, 58, -76, -76, -76, -76, -76, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 108, 58, 58, 58, + 58, -76 + }, + + { + 9, -77, -77, -77, -77, -77, -77, 55, -77, -77, + -77, -77, -77, 58, -77, -77, -77, -77, -77, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 109, 58, 58, 58, 58, 58, 58, 58, + 58, -77 + + }, + + { + 9, -78, -78, -78, -78, -78, -78, 55, -78, -78, + -78, -78, -78, 58, -78, -78, -78, -78, -78, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 110, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -78 + }, + + { + 9, -79, -79, -79, -79, -79, -79, 55, -79, -79, + -79, -79, -79, 58, -79, -79, -79, -79, -79, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 111, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -79 + + }, + + { + 9, -80, -80, -80, -80, -80, -80, 55, -80, -80, + -80, -80, -80, 58, -80, -80, -80, -80, -80, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 112, 58, 58, + 58, -80 + }, + + { + 9, -81, -81, -81, -81, -81, -81, 55, -81, -81, + -81, -81, -81, 58, -81, -81, -81, -81, -81, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 113, 58, 58, 58, 58, 58, + 58, -81 + + }, + + { + 9, -82, -82, -82, -82, -82, -82, 55, -82, -82, + -82, -82, -82, 58, -82, -82, -82, -82, -82, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 114, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -82 + }, + + { + 9, -83, -83, -83, -83, -83, -83, 55, -83, -83, + -83, -83, -83, 58, -83, -83, -83, -83, -83, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 115, 58, 58, 58, 58, + 58, -83 + + }, + + { + 9, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84 + }, + + { + 9, 85, 86, -85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85 + + }, + + { + 9, 86, 86, -86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86 + }, + + { + 9, 87, 87, -87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87 + + }, + + { + 9, -88, 88, 89, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88 + }, + + { + 9, 90, -89, -89, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90 + + }, + + { + 9, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90 + }, + + { + 9, 91, 91, -91, 91, -91, 91, -91, 91, -91, + 91, 91, 91, 91, 91, 91, 91, 91, -91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91 + + }, + + { + 9, 92, 92, -92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92 + }, + + { + 9, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93 + + }, + + { + 9, -94, -94, -94, -94, -94, -94, 55, -94, -94, + -94, -94, -94, 58, -94, -94, -94, -94, -94, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 116, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -94 + }, + + { + 9, -95, -95, -95, -95, -95, -95, 55, -95, -95, + -95, -95, -95, 58, -95, -95, -95, -95, -95, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 117, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -95 + + }, + + { + 9, -96, -96, -96, -96, -96, -96, 55, -96, -96, + -96, -96, -96, 58, -96, -96, -96, -96, -96, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 118, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -96 + }, + + { + 9, -97, -97, -97, -97, -97, -97, 55, -97, -97, + -97, -97, -97, 58, -97, -97, -97, -97, -97, 58, + 58, 58, 58, 58, 58, 119, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -97 + + }, + + { + 9, -98, -98, -98, -98, -98, -98, 55, -98, -98, + -98, -98, -98, 58, -98, -98, -98, -98, -98, 120, + 121, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -98 + }, + + { + 9, -99, -99, -99, -99, -99, -99, 55, -99, -99, + -99, -99, -99, 58, -99, -99, -99, -99, -99, 58, + 58, 58, 58, 58, 122, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -99 + + }, + + { + 9, -100, -100, -100, -100, -100, -100, 55, -100, -100, + -100, -100, -100, 58, -100, -100, -100, -100, -100, 58, + 58, 58, 123, 58, 58, 58, 58, 58, 124, 58, + 125, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -100 + }, + + { + 9, -101, -101, -101, -101, -101, -101, 55, -101, -101, + -101, -101, -101, 58, -101, -101, -101, -101, -101, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 126, 58, 58, 58, 58, 58, 58, + 58, -101 + + }, + + { + 9, -102, -102, -102, -102, -102, -102, 55, -102, -102, + -102, -102, -102, 58, -102, -102, -102, -102, -102, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -102 + }, + + { + 9, -103, -103, -103, -103, -103, -103, 55, -103, -103, + -103, -103, -103, 58, -103, -103, -103, -103, -103, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 127, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -103 + + }, + + { + 9, -104, -104, -104, -104, -104, -104, 55, -104, -104, + -104, -104, -104, 58, -104, -104, -104, -104, -104, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -104 + }, + + { + 9, -105, -105, -105, -105, -105, -105, 55, -105, -105, + -105, -105, -105, 58, -105, -105, -105, -105, -105, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 128, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -105 + + }, + + { + 9, -106, -106, -106, -106, -106, -106, 55, -106, -106, + -106, -106, -106, 58, -106, -106, -106, -106, -106, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 129, 58, 58, + 58, -106 + }, + + { + 9, -107, -107, -107, -107, -107, -107, 55, -107, -107, + -107, -107, -107, 58, -107, -107, -107, -107, -107, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 130, 58, 58, + 58, -107 + + }, + + { + 9, -108, -108, -108, -108, -108, -108, 55, -108, -108, + -108, -108, -108, 58, -108, -108, -108, -108, -108, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 131, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -108 + }, + + { + 9, -109, -109, -109, -109, -109, -109, 55, -109, -109, + -109, -109, -109, 58, -109, -109, -109, -109, -109, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 132, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -109 + + }, + + { + 9, -110, -110, -110, -110, -110, -110, 55, -110, -110, + -110, -110, -110, 58, -110, -110, -110, -110, -110, 58, + 58, 58, 58, 58, 58, 58, 133, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -110 + }, + + { + 9, -111, -111, -111, -111, -111, -111, 55, -111, -111, + -111, -111, -111, 58, -111, -111, -111, -111, -111, 58, + 58, 58, 58, 58, 134, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -111 + + }, + + { + 9, -112, -112, -112, -112, -112, -112, 55, -112, -112, + -112, -112, -112, 58, -112, -112, -112, -112, -112, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 135, 58, 58, 58, 58, 58, + 58, -112 + }, + + { + 9, -113, -113, -113, -113, -113, -113, 55, -113, -113, + -113, -113, -113, 58, -113, -113, -113, -113, -113, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 136, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -113 + + }, + + { + 9, -114, -114, -114, -114, -114, -114, 55, -114, -114, + -114, -114, -114, 58, -114, -114, -114, -114, -114, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 137, 58, 58, 58, 58, + 58, -114 + }, + + { + 9, -115, -115, -115, -115, -115, -115, 55, -115, -115, + -115, -115, -115, 58, -115, -115, -115, -115, -115, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 138, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -115 + + }, + + { + 9, -116, -116, -116, -116, -116, -116, 55, -116, -116, + -116, -116, -116, 58, -116, -116, -116, -116, -116, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -116 + }, + + { + 9, -117, -117, -117, -117, -117, -117, 55, -117, -117, + -117, -117, -117, 58, -117, -117, -117, -117, -117, 58, + 58, 58, 139, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -117 + + }, + + { + 9, -118, -118, -118, -118, -118, -118, 55, -118, -118, + -118, -118, -118, 58, -118, -118, -118, -118, -118, 58, + 58, 58, 58, 58, 140, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -118 + }, + + { + 9, -119, -119, -119, -119, -119, -119, 55, -119, -119, + -119, -119, -119, 58, -119, -119, -119, -119, -119, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 141, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -119 + + }, + + { + 9, -120, -120, -120, -120, -120, -120, 55, -120, -120, + -120, -120, -120, 58, -120, -120, -120, -120, -120, 58, + 58, 142, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 143, 58, 58, 58, + 58, -120 + }, + + { + 9, -121, -121, -121, -121, -121, -121, 55, -121, -121, + -121, -121, -121, 58, -121, -121, -121, -121, -121, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 144, 58, 58, + 58, -121 + + }, + + { + 9, -122, -122, -122, -122, -122, -122, 55, -122, -122, + -122, -122, -122, 58, -122, -122, -122, -122, -122, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 145, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -122 + }, + + { + 9, -123, -123, -123, -123, -123, -123, 55, -123, -123, + -123, -123, -123, 58, -123, -123, -123, -123, -123, 58, + 58, 58, 58, 58, 58, 58, 58, 146, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -123 + + }, + + { + 9, -124, -124, -124, -124, -124, -124, 55, -124, -124, + -124, -124, -124, 58, -124, -124, -124, -124, -124, 58, + 58, 58, 58, 58, 58, 147, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -124 + }, + + { + 9, -125, -125, -125, -125, -125, -125, 55, -125, -125, + -125, -125, -125, 58, -125, -125, -125, -125, -125, 58, + 58, 58, 58, 58, 148, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -125 + + }, + + { + 9, -126, -126, -126, -126, -126, -126, 55, -126, -126, + -126, -126, -126, 58, -126, -126, -126, -126, -126, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -126 + }, + + { + 9, -127, -127, -127, -127, -127, -127, 55, -127, -127, + -127, -127, -127, 58, -127, -127, -127, -127, -127, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 149, -127 + + }, + + { + 9, -128, -128, -128, -128, -128, -128, 55, -128, -128, + -128, -128, -128, 58, -128, -128, -128, -128, -128, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 150, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -128 + }, + + { + 9, -129, -129, -129, -129, -129, -129, 55, -129, -129, + -129, -129, -129, 58, -129, -129, -129, -129, -129, 58, + 58, 58, 151, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -129 + + }, + + { + 9, -130, -130, -130, -130, -130, -130, 55, -130, -130, + -130, -130, -130, 58, -130, -130, -130, -130, -130, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 152, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -130 + }, + + { + 9, -131, -131, -131, -131, -131, -131, 55, -131, -131, + -131, -131, -131, 58, -131, -131, -131, -131, -131, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 153, 58, 58, 58, 58, 58, 58, 58, + 58, -131 + + }, + + { + 9, -132, -132, -132, -132, -132, -132, 55, -132, -132, + -132, -132, -132, 58, -132, -132, -132, -132, -132, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 154, 58, 58, 58, 58, 58, 58, + 58, -132 + }, + + { + 9, -133, -133, -133, -133, -133, -133, 55, -133, -133, + -133, -133, -133, 58, -133, -133, -133, -133, -133, 58, + 58, 58, 58, 58, 155, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -133 + + }, + + { + 9, -134, -134, -134, -134, -134, -134, 55, -134, -134, + -134, -134, -134, 58, -134, -134, -134, -134, -134, 58, + 58, 58, 156, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -134 + }, + + { + 9, -135, -135, -135, -135, -135, -135, 55, -135, -135, + -135, -135, -135, 58, -135, -135, -135, -135, -135, 58, + 58, 58, 157, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -135 + + }, + + { + 9, -136, -136, -136, -136, -136, -136, 55, -136, -136, + -136, -136, -136, 58, -136, -136, -136, -136, -136, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 158, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -136 + }, + + { + 9, -137, -137, -137, -137, -137, -137, 55, -137, -137, + -137, -137, -137, 58, -137, -137, -137, -137, -137, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 159, 58, 58, 58, + 58, -137 + + }, + + { + 9, -138, -138, -138, -138, -138, -138, 55, -138, -138, + -138, -138, -138, 58, -138, -138, -138, -138, -138, 58, + 58, 160, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -138 + }, + + { + 9, -139, -139, -139, -139, -139, -139, 55, -139, -139, + -139, -139, -139, 58, -139, -139, -139, -139, -139, 58, + 58, 58, 58, 58, 161, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -139 + + }, + + { + 9, -140, -140, -140, -140, -140, -140, 55, -140, -140, + -140, -140, -140, 58, -140, -140, -140, -140, -140, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 162, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -140 + }, + + { + 9, -141, -141, -141, -141, -141, -141, 55, -141, -141, + -141, -141, -141, 58, -141, -141, -141, -141, -141, 58, + 58, 58, 58, 58, 58, 58, 163, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -141 + + }, + + { + 9, -142, -142, -142, -142, -142, -142, 55, -142, -142, + -142, -142, -142, 58, -142, -142, -142, -142, -142, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 164, 58, 58, 58, 58, 58, 58, 58, + 58, -142 + }, + + { + 9, -143, -143, -143, -143, -143, -143, 55, -143, -143, + -143, -143, -143, 58, -143, -143, -143, -143, -143, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 165, 58, 58, 58, 58, 58, + 58, -143 + + }, + + { + 9, -144, -144, -144, -144, -144, -144, 55, -144, -144, + -144, -144, -144, 58, -144, -144, -144, -144, -144, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 166, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -144 + }, + + { + 9, -145, -145, -145, -145, -145, -145, 55, -145, -145, + -145, -145, -145, 58, -145, -145, -145, -145, -145, 58, + 58, 58, 58, 167, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -145 + + }, + + { + 9, -146, -146, -146, -146, -146, -146, 55, -146, -146, + -146, -146, -146, 58, -146, -146, -146, -146, -146, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 168, 58, 58, 58, 58, 58, 58, 58, + 58, -146 + }, + + { + 9, -147, -147, -147, -147, -147, -147, 55, -147, -147, + -147, -147, -147, 58, -147, -147, -147, -147, -147, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -147 + + }, + + { + 9, -148, -148, -148, -148, -148, -148, 55, -148, -148, + -148, -148, -148, 58, -148, -148, -148, -148, -148, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 169, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -148 + }, + + { + 9, -149, -149, -149, -149, -149, -149, 55, -149, -149, + -149, -149, -149, 58, -149, -149, -149, -149, -149, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -149 + + }, + + { + 9, -150, -150, -150, -150, -150, -150, 55, -150, -150, + -150, -150, -150, 58, -150, -150, -150, -150, -150, 58, + 58, 58, 58, 58, 170, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -150 + }, + + { + 9, -151, -151, -151, -151, -151, -151, 55, -151, -151, + -151, -151, -151, 58, -151, -151, -151, -151, -151, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 171, 58, 58, 58, 58, 58, 58, 58, + 58, -151 + + }, + + { + 9, -152, -152, -152, -152, -152, -152, 55, -152, -152, + -152, -152, -152, 58, -152, -152, -152, -152, -152, 58, + 58, 58, 58, 58, 172, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -152 + }, + + { + 9, -153, -153, -153, -153, -153, -153, 55, -153, -153, + -153, -153, -153, 58, -153, -153, -153, -153, -153, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 173, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -153 + + }, + + { + 9, -154, -154, -154, -154, -154, -154, 55, -154, -154, + -154, -154, -154, 58, -154, -154, -154, -154, -154, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 174, 58, 58, 58, + 58, -154 + }, + + { + 9, -155, -155, -155, -155, -155, -155, 55, -155, -155, + -155, -155, -155, 58, -155, -155, -155, -155, -155, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -155 + + }, + + { + 9, -156, -156, -156, -156, -156, -156, 55, -156, -156, + -156, -156, -156, 58, -156, -156, -156, -156, -156, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 175, 58, 58, 58, + 58, -156 + }, + + { + 9, -157, -157, -157, -157, -157, -157, 55, -157, -157, + -157, -157, -157, 58, -157, -157, -157, -157, -157, 58, + 58, 58, 58, 58, 176, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -157 + + }, + + { + 9, -158, -158, -158, -158, -158, -158, 55, -158, -158, + -158, -158, -158, 58, -158, -158, -158, -158, -158, 58, + 58, 58, 58, 58, 58, 58, 177, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -158 + }, + + { + 9, -159, -159, -159, -159, -159, -159, 55, -159, -159, + -159, -159, -159, 58, -159, -159, -159, -159, -159, 58, + 178, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -159 + + }, + + { + 9, -160, -160, -160, -160, -160, -160, 55, -160, -160, + -160, -160, -160, 58, -160, -160, -160, -160, -160, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 179, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -160 + }, + + { + 9, -161, -161, -161, -161, -161, -161, 55, -161, -161, + -161, -161, -161, 58, -161, -161, -161, -161, -161, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -161 + + }, + + { + 9, -162, -162, -162, -162, -162, -162, 55, -162, -162, + -162, -162, -162, 58, -162, -162, -162, -162, -162, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 180, 58, 58, 58, + 58, -162 + }, + + { + 9, -163, -163, -163, -163, -163, -163, 55, -163, -163, + -163, -163, -163, 58, -163, -163, -163, -163, -163, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -163 + + }, + + { + 9, -164, -164, -164, -164, -164, -164, 55, -164, -164, + -164, -164, -164, 58, -164, -164, -164, -164, -164, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 181, 58, 58, 58, 58, 58, 58, 58, + 58, -164 + }, + + { + 9, -165, -165, -165, -165, -165, -165, 55, -165, -165, + -165, -165, -165, 58, -165, -165, -165, -165, -165, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 182, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -165 + + }, + + { + 9, -166, -166, -166, -166, -166, -166, 55, -166, -166, + -166, -166, -166, 58, -166, -166, -166, -166, -166, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 183, 58, 58, 58, + 58, -166 + }, + + { + 9, -167, -167, -167, -167, -167, -167, 55, -167, -167, + -167, -167, -167, 58, -167, -167, -167, -167, -167, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 184, 58, 58, 58, 58, + 58, -167 + + }, + + { + 9, -168, -168, -168, -168, -168, -168, 55, -168, -168, + -168, -168, -168, 58, -168, -168, -168, -168, -168, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 185, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -168 + }, + + { + 9, -169, -169, -169, -169, -169, -169, 55, -169, -169, + -169, -169, -169, 58, -169, -169, -169, -169, -169, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 186, 58, 58, + 58, -169 + + }, + + { + 9, -170, -170, -170, -170, -170, -170, 55, -170, -170, + -170, -170, -170, 58, -170, -170, -170, -170, -170, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 187, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -170 + }, + + { + 9, -171, -171, -171, -171, -171, -171, 55, -171, -171, + -171, -171, -171, 58, -171, -171, -171, -171, -171, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 188, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -171 + + }, + + { + 9, -172, -172, -172, -172, -172, -172, 55, -172, -172, + -172, -172, -172, 58, -172, -172, -172, -172, -172, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 189, 58, 58, 58, 58, + 58, -172 + }, + + { + 9, -173, -173, -173, -173, -173, -173, 55, -173, -173, + -173, -173, -173, 58, -173, -173, -173, -173, -173, 58, + 190, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -173 + + }, + + { + 9, -174, -174, -174, -174, -174, -174, 55, -174, -174, + -174, -174, -174, 58, -174, -174, -174, -174, -174, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -174 + }, + + { + 9, -175, -175, -175, -175, -175, -175, 55, -175, -175, + -175, -175, -175, 58, -175, -175, -175, -175, -175, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -175 + + }, + + { + 9, -176, -176, -176, -176, -176, -176, 55, -176, -176, + -176, -176, -176, 58, -176, -176, -176, -176, -176, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -176 + }, + + { + 9, -177, -177, -177, -177, -177, -177, 55, -177, -177, + -177, -177, -177, 58, -177, -177, -177, -177, -177, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -177 + + }, + + { + 9, -178, -178, -178, -178, -178, -178, 55, -178, -178, + -178, -178, -178, 58, -178, -178, -178, -178, -178, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 191, 58, 58, 58, + 58, -178 + }, + + { + 9, -179, -179, -179, -179, -179, -179, 55, -179, -179, + -179, -179, -179, 58, -179, -179, -179, -179, -179, 58, + 58, 58, 58, 58, 192, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -179 + + }, + + { + 9, -180, -180, -180, -180, -180, -180, 55, -180, -180, + -180, -180, -180, 58, -180, -180, -180, -180, -180, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -180 + }, + + { + 9, -181, -181, -181, -181, -181, -181, 55, -181, -181, + -181, -181, -181, 58, -181, -181, -181, -181, -181, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 193, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -181 + + }, + + { + 9, -182, -182, -182, -182, -182, -182, 55, -182, -182, + -182, -182, -182, 58, -182, -182, -182, -182, -182, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 194, 58, 58, 58, 58, + 58, -182 + }, + + { + 9, -183, -183, -183, -183, -183, -183, 55, -183, -183, + -183, -183, -183, 58, -183, -183, -183, -183, -183, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -183 + + }, + + { + 9, -184, -184, -184, -184, -184, -184, 55, -184, -184, + -184, -184, -184, 58, -184, -184, -184, -184, -184, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -184 + }, + + { + 9, -185, -185, -185, -185, -185, -185, 55, -185, -185, + -185, -185, -185, 58, -185, -185, -185, -185, -185, 58, + 58, 58, 195, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -185 + + }, + + { + 9, -186, -186, -186, -186, -186, -186, 55, -186, -186, + -186, -186, -186, 58, -186, -186, -186, -186, -186, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -186 + }, + + { + 9, -187, -187, -187, -187, -187, -187, 55, -187, -187, + -187, -187, -187, 58, -187, -187, -187, -187, -187, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 196, 58, 58, + 58, -187 + + }, + + { + 9, -188, -188, -188, -188, -188, -188, 55, -188, -188, + -188, -188, -188, 58, -188, -188, -188, -188, -188, 58, + 58, 58, 58, 58, 58, 197, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -188 + }, + + { + 9, -189, -189, -189, -189, -189, -189, 55, -189, -189, + -189, -189, -189, 58, -189, -189, -189, -189, -189, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -189 + + }, + + { + 9, -190, -190, -190, -190, -190, -190, 55, -190, -190, + -190, -190, -190, 58, -190, -190, -190, -190, -190, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 198, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -190 + }, + + { + 9, -191, -191, -191, -191, -191, -191, 55, -191, -191, + -191, -191, -191, 58, -191, -191, -191, -191, -191, 58, + 58, 58, 58, 58, 199, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -191 + + }, + + { + 9, -192, -192, -192, -192, -192, -192, 55, -192, -192, + -192, -192, -192, 58, -192, -192, -192, -192, -192, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -192 + }, + + { + 9, -193, -193, -193, -193, -193, -193, 55, -193, -193, + -193, -193, -193, 58, -193, -193, -193, -193, -193, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -193 + + }, + + { + 9, -194, -194, -194, -194, -194, -194, 55, -194, -194, + -194, -194, -194, 58, -194, -194, -194, -194, -194, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 200, 58, 58, 58, + 58, -194 + }, + + { + 9, -195, -195, -195, -195, -195, -195, 55, -195, -195, + -195, -195, -195, 58, -195, -195, -195, -195, -195, 58, + 58, 58, 58, 58, 201, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -195 + + }, + + { + 9, -196, -196, -196, -196, -196, -196, 55, -196, -196, + -196, -196, -196, 58, -196, -196, -196, -196, -196, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -196 + }, + + { + 9, -197, -197, -197, -197, -197, -197, 55, -197, -197, + -197, -197, -197, 58, -197, -197, -197, -197, -197, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 202, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -197 + + }, + + { + 9, -198, -198, -198, -198, -198, -198, 55, -198, -198, + -198, -198, -198, 58, -198, -198, -198, -198, -198, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -198 + }, + + { + 9, -199, -199, -199, -199, -199, -199, 55, -199, -199, + -199, -199, -199, 58, -199, -199, -199, -199, -199, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -199 + + }, + + { + 9, -200, -200, -200, -200, -200, -200, 55, -200, -200, + -200, -200, -200, 58, -200, -200, -200, -200, -200, 58, + 203, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -200 + }, + + { + 9, -201, -201, -201, -201, -201, -201, 55, -201, -201, + -201, -201, -201, 58, -201, -201, -201, -201, -201, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -201 + + }, + + { + 9, -202, -202, -202, -202, -202, -202, 55, -202, -202, + -202, -202, -202, 58, -202, -202, -202, -202, -202, 58, + 58, 58, 58, 58, 58, 58, 204, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -202 + }, + + { + 9, -203, -203, -203, -203, -203, -203, 55, -203, -203, + -203, -203, -203, 58, -203, -203, -203, -203, -203, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 205, 58, 58, 58, + 58, -203 + + }, + + { + 9, -204, -204, -204, -204, -204, -204, 55, -204, -204, + -204, -204, -204, 58, -204, -204, -204, -204, -204, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -204 + }, + + { + 9, -205, -205, -205, -205, -205, -205, 55, -205, -205, + -205, -205, -205, 58, -205, -205, -205, -205, -205, 58, + 58, 58, 58, 58, 206, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -205 + + }, + + { + 9, -206, -206, -206, -206, -206, -206, 55, -206, -206, + -206, -206, -206, 58, -206, -206, -206, -206, -206, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, -206 + }, + + } ; + +static yy_state_type yy_get_previous_state ( void ); +static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); +static int yy_get_next_buffer ( void ); +static void yynoreturn yy_fatal_error ( const char* msg ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + (yytext_ptr) = yy_bp; \ + yyleng = (int) (yy_cp - yy_bp); \ + (yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; +#define YY_NUM_RULES 63 +#define YY_END_OF_BUFFER 64 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static const flex_int16_t yy_accept[207] = + { 0, + 2, 2, 0, 0, 0, 0, 0, 0, 64, 50, + 2, 4, 42, 47, 1, 49, 50, 43, 44, 50, + 48, 50, 38, 36, 40, 50, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, + 51, 53, 52, 62, 59, 61, 55, 58, 57, 54, + 56, 2, 37, 1, 49, 35, 46, 48, 45, 39, + 41, 3, 48, 48, 48, 48, 48, 48, 18, 48, + 48, 48, 48, 48, 25, 48, 48, 48, 48, 48, + 48, 48, 48, 34, 51, 51, 62, 59, 61, 60, + 55, 54, 56, 48, 48, 48, 48, 48, 48, 48, + + 48, 17, 48, 20, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 5, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 16, 48, 48, 22, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 14, 48, 19, 48, + 48, 48, 48, 48, 28, 48, 48, 48, 48, 48, + 6, 48, 8, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 27, 29, 30, 31, 48, 48, 7, + 48, 48, 11, 12, 48, 15, 48, 48, 24, 48, + 48, 33, 9, 48, 48, 21, 48, 26, 32, 48, + + 13, 48, 48, 23, 48, 10 + } ; + +static const YY_CHAR yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 4, 5, 6, 7, 1, 8, 9, 10, + 11, 1, 12, 1, 13, 1, 1, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 14, 1, 15, + 16, 17, 1, 1, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 1, 18, 1, 1, 19, 1, 20, 21, 22, 23, + + 24, 25, 26, 27, 28, 13, 13, 29, 30, 31, + 32, 33, 13, 34, 35, 36, 37, 38, 13, 39, + 40, 13, 1, 41, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +/* Table of booleans, true if rule could match eol. */ +static const flex_int32_t yy_rule_can_match_eol[64] = + { 0, +0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, + 1, 1, 0, 0, }; + +extern int yy_flex_debug; +int yy_flex_debug = 0; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +char *yytext; +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2002 Roman Zippel + */ + +#include +#include +#include +#include +#include + +#include "lkc.h" +#include "preprocess.h" + +#include "parser.tab.h" + +#define YY_DECL static int yylex1(void) + +#define START_STRSIZE 16 + +/* The Kconfig file currently being parsed. */ +const char *cur_filename; + +/* + * The line number of the current statement. This does not match yylineno. + * yylineno is used by the lexer, while cur_lineno is used by the parser. + */ +int cur_lineno; + +static int prev_prev_token = T_EOL; +static int prev_token = T_EOL; +static char *text; +static int text_size, text_asize; + +struct buffer { + struct buffer *parent; + YY_BUFFER_STATE state; + int yylineno; + const char *filename; + int source_lineno; +}; + +static struct buffer *current_buf; + +static int last_ts, first_ts; + +static char *expand_token(const char *in, size_t n); +static void append_expanded_string(const char *in); +static void zconf_endhelp(void); +static void zconf_endfile(void); + +static void new_string(void) +{ + text = xmalloc(START_STRSIZE); + text_asize = START_STRSIZE; + text_size = 0; + *text = 0; +} + +static void append_string(const char *str, int size) +{ + int new_size = text_size + size + 1; + if (new_size > text_asize) { + new_size += START_STRSIZE - 1; + new_size &= -START_STRSIZE; + text = xrealloc(text, new_size); + text_asize = new_size; + } + memcpy(text + text_size, str, size); + text_size += size; + text[text_size] = 0; +} + +static void alloc_string(const char *str, int size) +{ + text = xmalloc(size + 1); + memcpy(text, str, size); + text[size] = 0; +} + +static void warn_ignored_character(char chr) +{ + fprintf(stderr, + "%s:%d:warning: ignoring unsupported character '%c'\n", + cur_filename, yylineno, chr); +} + +#define INITIAL 0 +#define ASSIGN_VAL 1 +#define HELP 2 +#define STRING 3 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +static int yy_init_globals ( void ); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int yylex_destroy ( void ); + +int yyget_debug ( void ); + +void yyset_debug ( int debug_flag ); + +YY_EXTRA_TYPE yyget_extra ( void ); + +void yyset_extra ( YY_EXTRA_TYPE user_defined ); + +FILE *yyget_in ( void ); + +void yyset_in ( FILE * _in_str ); + +FILE *yyget_out ( void ); + +void yyset_out ( FILE * _out_str ); + + int yyget_leng ( void ); + +char *yyget_text ( void ); + +int yyget_lineno ( void ); + +void yyset_lineno ( int _line_number ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap ( void ); +#else +extern int yywrap ( void ); +#endif +#endif + +#ifndef YY_NO_UNPUT + + static void yyunput ( int c, char *buf_ptr ); + +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy ( char *, const char *, int ); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen ( const char * ); +#endif + +#ifndef YY_NO_INPUT +#ifdef __cplusplus +static int yyinput ( void ); +#else +static int input ( void ); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k */ +#define YY_READ_BUF_SIZE 16384 +#else +#define YY_READ_BUF_SIZE 8192 +#endif /* __ia64__ */ +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + errno=0; \ + while ( (result = (int) read( fileno(yyin), buf, (yy_size_t) max_size )) < 0 ) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int yylex (void); + +#define YY_DECL int yylex (void) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK /*LINTED*/break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + yy_state_type yy_current_state; + char *yy_cp, *yy_bp; + int yy_act; + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! yyin ) + yyin = stdin; + + if ( ! yyout ) + yyout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer( yyin, YY_BUF_SIZE ); + } + + yy_load_buffer_state( ); + } + + { + + char open_quote = 0; + + while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ + { + yy_cp = (yy_c_buf_p); + + /* Support of yytext. */ + *yy_cp = (yy_hold_char); + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = (yy_start); +yy_match: + while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 ) + ++yy_cp; + + yy_current_state = -yy_current_state; + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + + YY_DO_BEFORE_ACTION; + + if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) + { + int yyl; + for ( yyl = 0; yyl < yyleng; ++yyl ) + if ( yytext[yyl] == '\n' ) + + yylineno++; +; + } + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ +case 1: +YY_RULE_SETUP +/* ignore comment */ + YY_BREAK +case 2: +YY_RULE_SETUP +/* whitespaces */ + YY_BREAK +case 3: +/* rule 3 can match eol */ +YY_RULE_SETUP +/* escaped new line */ + YY_BREAK +case 4: +/* rule 4 can match eol */ +YY_RULE_SETUP +return T_EOL; + YY_BREAK +case 5: +YY_RULE_SETUP +return T_BOOL; + YY_BREAK +case 6: +YY_RULE_SETUP +return T_CHOICE; + YY_BREAK +case 7: +YY_RULE_SETUP +return T_COMMENT; + YY_BREAK +case 8: +YY_RULE_SETUP +return T_CONFIG; + YY_BREAK +case 9: +YY_RULE_SETUP +return T_DEF_BOOL; + YY_BREAK +case 10: +YY_RULE_SETUP +return T_DEF_TRISTATE; + YY_BREAK +case 11: +YY_RULE_SETUP +return T_DEFAULT; + YY_BREAK +case 12: +YY_RULE_SETUP +return T_DEPENDS; + YY_BREAK +case 13: +YY_RULE_SETUP +return T_ENDCHOICE; + YY_BREAK +case 14: +YY_RULE_SETUP +return T_ENDIF; + YY_BREAK +case 15: +YY_RULE_SETUP +return T_ENDMENU; + YY_BREAK +case 16: +YY_RULE_SETUP +return T_HELP; + YY_BREAK +case 17: +YY_RULE_SETUP +return T_HEX; + YY_BREAK +case 18: +YY_RULE_SETUP +return T_IF; + YY_BREAK +case 19: +YY_RULE_SETUP +return T_IMPLY; + YY_BREAK +case 20: +YY_RULE_SETUP +return T_INT; + YY_BREAK +case 21: +YY_RULE_SETUP +return T_MAINMENU; + YY_BREAK +case 22: +YY_RULE_SETUP +return T_MENU; + YY_BREAK +case 23: +YY_RULE_SETUP +return T_MENUCONFIG; + YY_BREAK +case 24: +YY_RULE_SETUP +return T_MODULES; + YY_BREAK +case 25: +YY_RULE_SETUP +return T_ON; + YY_BREAK +case 26: +YY_RULE_SETUP +return T_OPTIONAL; + YY_BREAK +case 27: +YY_RULE_SETUP +return T_PROMPT; + YY_BREAK +case 28: +YY_RULE_SETUP +return T_RANGE; + YY_BREAK +case 29: +YY_RULE_SETUP +return T_SELECT; + YY_BREAK +case 30: +YY_RULE_SETUP +return T_SOURCE; + YY_BREAK +case 31: +YY_RULE_SETUP +return T_STRING; + YY_BREAK +case 32: +YY_RULE_SETUP +return T_TRISTATE; + YY_BREAK +case 33: +YY_RULE_SETUP +return T_VISIBLE; + YY_BREAK +case 34: +YY_RULE_SETUP +return T_OR; + YY_BREAK +case 35: +YY_RULE_SETUP +return T_AND; + YY_BREAK +case 36: +YY_RULE_SETUP +return T_EQUAL; + YY_BREAK +case 37: +YY_RULE_SETUP +return T_UNEQUAL; + YY_BREAK +case 38: +YY_RULE_SETUP +return T_LESS; + YY_BREAK +case 39: +YY_RULE_SETUP +return T_LESS_EQUAL; + YY_BREAK +case 40: +YY_RULE_SETUP +return T_GREATER; + YY_BREAK +case 41: +YY_RULE_SETUP +return T_GREATER_EQUAL; + YY_BREAK +case 42: +YY_RULE_SETUP +return T_NOT; + YY_BREAK +case 43: +YY_RULE_SETUP +return T_OPEN_PAREN; + YY_BREAK +case 44: +YY_RULE_SETUP +return T_CLOSE_PAREN; + YY_BREAK +case 45: +YY_RULE_SETUP +return T_COLON_EQUAL; + YY_BREAK +case 46: +YY_RULE_SETUP +return T_PLUS_EQUAL; + YY_BREAK +case 47: +YY_RULE_SETUP +{ + open_quote = yytext[0]; + new_string(); + BEGIN(STRING); + } + YY_BREAK +case 48: +YY_RULE_SETUP +{ + alloc_string(yytext, yyleng); + yylval.string = text; + return T_WORD; + } + YY_BREAK +case 49: +YY_RULE_SETUP +{ + /* this token includes at least one '$' */ + yylval.string = expand_token(yytext, yyleng); + if (strlen(yylval.string)) + return T_WORD; + free(yylval.string); + } + YY_BREAK +case 50: +YY_RULE_SETUP +warn_ignored_character(*yytext); + YY_BREAK + +case 51: +YY_RULE_SETUP +{ + alloc_string(yytext, yyleng); + yylval.string = text; + return T_ASSIGN_VAL; + } + YY_BREAK +case 52: +/* rule 52 can match eol */ +YY_RULE_SETUP +{ BEGIN(INITIAL); return T_EOL; } + YY_BREAK +case 53: +YY_RULE_SETUP + + YY_BREAK + +case 54: +YY_RULE_SETUP +append_expanded_string(yytext); + YY_BREAK +case 55: +YY_RULE_SETUP +{ + append_string(yytext, yyleng); + } + YY_BREAK +case 56: +YY_RULE_SETUP +{ + append_string(yytext + 1, yyleng - 1); + } + YY_BREAK +case 57: +YY_RULE_SETUP +{ + if (open_quote == yytext[0]) { + BEGIN(INITIAL); + yylval.string = text; + return T_WORD_QUOTE; + } else + append_string(yytext, 1); + } + YY_BREAK +case 58: +/* rule 58 can match eol */ +YY_RULE_SETUP +{ + fprintf(stderr, + "%s:%d:warning: multi-line strings not supported\n", + cur_filename, cur_lineno); + unput('\n'); + BEGIN(INITIAL); + yylval.string = text; + return T_WORD_QUOTE; + } + YY_BREAK +case YY_STATE_EOF(STRING): +{ + BEGIN(INITIAL); + yylval.string = text; + return T_WORD_QUOTE; + } + YY_BREAK + +case 59: +YY_RULE_SETUP +{ + int ts, i; + + ts = 0; + for (i = 0; i < yyleng; i++) { + if (yytext[i] == '\t') + ts = (ts & ~7) + 8; + else + ts++; + } + last_ts = ts; + if (first_ts) { + if (ts < first_ts) { + zconf_endhelp(); + return T_HELPTEXT; + } + ts -= first_ts; + while (ts > 8) { + append_string(" ", 8); + ts -= 8; + } + append_string(" ", ts); + } + } + YY_BREAK +case 60: +/* rule 60 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ +YY_LINENO_REWIND_TO(yy_cp - 1); +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up yytext again */ +YY_RULE_SETUP +{ + zconf_endhelp(); + return T_HELPTEXT; + } + YY_BREAK +case 61: +/* rule 61 can match eol */ +YY_RULE_SETUP +{ + append_string("\n", 1); + } + YY_BREAK +case 62: +YY_RULE_SETUP +{ + while (yyleng) { + if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t')) + break; + yyleng--; + } + append_string(yytext, yyleng); + if (!first_ts) + first_ts = last_ts; + } + YY_BREAK +case YY_STATE_EOF(HELP): +{ + zconf_endhelp(); + return T_HELPTEXT; + } + YY_BREAK + +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(ASSIGN_VAL): +{ + BEGIN(INITIAL); + + if (prev_token != T_EOL && prev_token != T_HELPTEXT) + fprintf(stderr, "%s:%d:warning: no new line at end of file\n", + cur_filename, yylineno); + + if (current_buf) { + zconf_endfile(); + return T_EOL; + } + fclose(yyin); + yyterminate(); +} + YY_BREAK +case 63: +YY_RULE_SETUP +YY_FATAL_ERROR( "flex scanner jammed" ); + YY_BREAK + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = (yy_hold_char); + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++(yy_c_buf_p); + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = (yy_c_buf_p); + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_END_OF_FILE: + { + (yy_did_buffer_switch_on_eof) = 0; + + if ( yywrap( ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = + (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + (yy_c_buf_p) = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ + } /* end of user's declarations */ +} /* end of yylex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (void) +{ + char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + char *source = (yytext_ptr); + int number_to_move, i; + int ret_val; + + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; + + else + { + int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; + + int yy_c_buf_p_offset = + (int) ((yy_c_buf_p) - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + yyrealloc( (void *) b->yy_ch_buf, + (yy_size_t) (b->yy_buf_size + 2) ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = NULL; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + (yy_n_chars), num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + if ( (yy_n_chars) == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart( yyin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( + (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + /* "- 2" to take care of EOB's */ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); + } + + (yy_n_chars) += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; + + (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (void) +{ + yy_state_type yy_current_state; + char *yy_cp; + + yy_current_state = (yy_start); + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { + yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +{ + int yy_is_jam; + + yy_current_state = yy_nxt[yy_current_state][1]; + yy_is_jam = (yy_current_state <= 0); + + return yy_is_jam ? 0 : yy_current_state; +} + +#ifndef YY_NO_UNPUT + + static void yyunput (int c, char * yy_bp ) +{ + char *yy_cp; + + yy_cp = (yy_c_buf_p); + + /* undo effects of setting up yytext */ + *yy_cp = (yy_hold_char); + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + int number_to_move = (yy_n_chars) + 2; + char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; + char *source = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; + + while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = + (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (char) c; + + if ( c == '\n' ){ + --yylineno; + } + + (yytext_ptr) = yy_bp; + (yy_hold_char) = *yy_cp; + (yy_c_buf_p) = yy_cp; +} + +#endif + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (void) +#else + static int input (void) +#endif + +{ + int c; + + *(yy_c_buf_p) = (yy_hold_char); + + if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + /* This was really a NUL. */ + *(yy_c_buf_p) = '\0'; + + else + { /* need more input */ + int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); + ++(yy_c_buf_p); + + switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart( yyin ); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( yywrap( ) ) + return 0; + + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = (yytext_ptr) + offset; + break; + } + } + } + + c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ + *(yy_c_buf_p) = '\0'; /* preserve yytext */ + (yy_hold_char) = *++(yy_c_buf_p); + + if ( c == '\n' ) + + yylineno++; +; + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * + * @note This function does not reset the start condition to @c INITIAL . + */ + void yyrestart (FILE * input_file ) +{ + + if ( ! YY_CURRENT_BUFFER ){ + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer( yyin, YY_BUF_SIZE ); + } + + yy_init_buffer( YY_CURRENT_BUFFER, input_file ); + yy_load_buffer_state( ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * + */ + void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +{ + + /* TODO. We should be able to replace this entire function body + * with + * yypop_buffer_state(); + * yypush_buffer_state(new_buffer); + */ + yyensure_buffer_stack (); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + yy_load_buffer_state( ); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe + * to go ahead and always set it. + */ + (yy_did_buffer_switch_on_eof) = 1; +} + +static void yy_load_buffer_state (void) +{ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + (yy_hold_char) = *(yy_c_buf_p); +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * + * @return the allocated buffer state. + */ + YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + yy_init_buffer( b, file ); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with yy_create_buffer() + * + */ + void yy_delete_buffer (YY_BUFFER_STATE b ) +{ + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + yyfree( (void *) b->yy_ch_buf ); + + yyfree( (void *) b ); +} + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a yyrestart() or at EOF. + */ + static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) + +{ + int oerrno = errno; + + yy_flush_buffer( b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then yy_init_buffer was _probably_ + * called from yyrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * + */ + void yy_flush_buffer (YY_BUFFER_STATE b ) +{ + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + yy_load_buffer_state( ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * + */ +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) +{ + if (new_buffer == NULL) + return; + + yyensure_buffer_stack(); + + /* This block is copied from yy_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + (yy_buffer_stack_top)++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from yy_switch_to_buffer. */ + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * + */ +void yypop_buffer_state (void) +{ + if (!YY_CURRENT_BUFFER) + return; + + yy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + if ((yy_buffer_stack_top) > 0) + --(yy_buffer_stack_top); + + if (YY_CURRENT_BUFFER) { + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void yyensure_buffer_stack (void) +{ + yy_size_t num_to_alloc; + + if (!(yy_buffer_stack)) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ + (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + (yy_buffer_stack_max) = num_to_alloc; + (yy_buffer_stack_top) = 0; + return; + } + + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + yy_size_t grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = (yy_buffer_stack_max) + grow_size; + (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc + ((yy_buffer_stack), + num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + /* zero only the new slots.*/ + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); + (yy_buffer_stack_max) = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return NULL; + + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + + b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = NULL; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer( b ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to yylex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * yy_scan_bytes() instead. + */ +YY_BUFFER_STATE yy_scan_string (const char * yystr ) +{ + + return yy_scan_bytes( yystr, (int) strlen(yystr) ); +} + +/** Setup the input buffer state to scan the given bytes. The next call to yylex() will + * scan from a @e copy of @a bytes. + * @param yybytes the byte buffer to scan + * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = (yy_size_t) (_yybytes_len + 2); + buf = (char *) yyalloc( n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer( buf, n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yynoreturn yy_fatal_error (const char* msg ) +{ + fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = (yy_hold_char); \ + (yy_c_buf_p) = yytext + yyless_macro_arg; \ + (yy_hold_char) = *(yy_c_buf_p); \ + *(yy_c_buf_p) = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the current line number. + * + */ +int yyget_lineno (void) +{ + + return yylineno; +} + +/** Get the input stream. + * + */ +FILE *yyget_in (void) +{ + return yyin; +} + +/** Get the output stream. + * + */ +FILE *yyget_out (void) +{ + return yyout; +} + +/** Get the length of the current token. + * + */ +int yyget_leng (void) +{ + return yyleng; +} + +/** Get the current token. + * + */ + +char *yyget_text (void) +{ + return yytext; +} + +/** Set the current line number. + * @param _line_number line number + * + */ +void yyset_lineno (int _line_number ) +{ + + yylineno = _line_number; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param _in_str A readable stream. + * + * @see yy_switch_to_buffer + */ +void yyset_in (FILE * _in_str ) +{ + yyin = _in_str ; +} + +void yyset_out (FILE * _out_str ) +{ + yyout = _out_str ; +} + +int yyget_debug (void) +{ + return yy_flex_debug; +} + +void yyset_debug (int _bdebug ) +{ + yy_flex_debug = _bdebug ; +} + +static int yy_init_globals (void) +{ + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from yylex_destroy(), so don't allocate here. + */ + + /* We do not touch yylineno unless the option is enabled. */ + yylineno = 1; + + (yy_buffer_stack) = NULL; + (yy_buffer_stack_top) = 0; + (yy_buffer_stack_max) = 0; + (yy_c_buf_p) = NULL; + (yy_init) = 0; + (yy_start) = 0; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = NULL; + yyout = NULL; +#endif + + /* For future reference: Set errno on error, since we are called by + * yylex_init() + */ + return 0; +} + +/* yylex_destroy is for both reentrant and non-reentrant scanners. */ +int yylex_destroy (void) +{ + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + yy_delete_buffer( YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + yypop_buffer_state(); + } + + /* Destroy the stack itself. */ + yyfree((yy_buffer_stack) ); + (yy_buffer_stack) = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * yylex() is called, initialization will occur. */ + yy_init_globals( ); + + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, const char * s2, int n ) +{ + + int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (const char * s ) +{ + int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *yyalloc (yy_size_t size ) +{ + return malloc(size); +} + +void *yyrealloc (void * ptr, yy_size_t size ) +{ + + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return realloc(ptr, size); +} + +void yyfree (void * ptr ) +{ + free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +/* second stage lexer */ +int yylex(void) +{ + int token; + +repeat: + token = yylex1(); + + if (prev_token == T_EOL || prev_token == T_HELPTEXT) { + if (token == T_EOL) + /* Do not pass unneeded T_EOL to the parser. */ + goto repeat; + else + /* + * For the parser, update lineno at the first token + * of each statement. Generally, \n is a statement + * terminator in Kconfig, but it is not always true + * because \n could be escaped by a backslash. + */ + cur_lineno = yylineno; + } + + if (prev_prev_token == T_EOL && prev_token == T_WORD && + (token == T_EQUAL || token == T_COLON_EQUAL || token == T_PLUS_EQUAL)) + BEGIN(ASSIGN_VAL); + + prev_prev_token = prev_token; + prev_token = token; + + return token; +} + +static char *expand_token(const char *in, size_t n) +{ + char *out; + int c; + char c2; + const char *rest, *end; + + new_string(); + append_string(in, n); + + /* + * get the whole line because we do not know the end of token. + * input() returns 0 (not EOF!) when it reachs the end of file. + */ + while ((c = input()) != 0) { + if (c == '\n') { + unput(c); + break; + } + c2 = c; + append_string(&c2, 1); + } + + rest = text; + out = expand_one_token(&rest); + + /* push back unused characters to the input stream */ + end = rest + strlen(rest); + while (end > rest) + unput(*--end); + + free(text); + + return out; +} + +static void append_expanded_string(const char *str) +{ + const char *end; + char *res; + + str++; + + res = expand_dollar(&str); + + /* push back unused characters to the input stream */ + end = str + strlen(str); + while (end > str) + unput(*--end); + + append_string(res, strlen(res)); + + free(res); +} + +void zconf_starthelp(void) +{ + new_string(); + last_ts = first_ts = 0; + BEGIN(HELP); +} + +static void zconf_endhelp(void) +{ + yylval.string = text; + BEGIN(INITIAL); +} + +/* + * Try to open specified file with following names: + * ./name + * $(srctree)/name + * The latter is used when srctree is separate from objtree + * when compiling the kernel. + * Return NULL if file is not found. + */ +FILE *zconf_fopen(const char *name) +{ + char *env, fullname[PATH_MAX+1]; + FILE *f; + + f = fopen(name, "r"); + if (!f && name != NULL && name[0] != '/') { + env = getenv(SRCTREE); + if (env) { + snprintf(fullname, sizeof(fullname), + "%s/%s", env, name); + f = fopen(fullname, "r"); + } + } + return f; +} + +void zconf_initscan(const char *name) +{ + yyin = zconf_fopen(name); + if (!yyin) { + fprintf(stderr, "can't find file %s\n", name); + exit(1); + } + + cur_filename = file_lookup(name); + yylineno = 1; +} + +void zconf_nextfile(const char *name) +{ + struct buffer *buf = xmalloc(sizeof(*buf)); + bool recur_include = false; + + buf->state = YY_CURRENT_BUFFER; + buf->yylineno = yylineno; + buf->filename = cur_filename; + buf->source_lineno = cur_lineno; + buf->parent = current_buf; + current_buf = buf; + yyin = zconf_fopen(name); + if (!yyin) { + fprintf(stderr, "%s:%d: can't open file \"%s\"\n", + cur_filename, cur_lineno, name); + exit(1); + } + yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); + + for (buf = current_buf; buf; buf = buf->parent) { + if (!strcmp(buf->filename, name)) + recur_include = true; + } + + if (recur_include) { + fprintf(stderr, + "Recursive inclusion detected.\n" + "Inclusion path:\n" + " current file : %s\n", name); + + for (buf = current_buf; buf; buf = buf->parent) + fprintf(stderr, " included from: %s:%d\n", + buf->filename, buf->source_lineno); + exit(1); + } + + yylineno = 1; + cur_filename = file_lookup(name); +} + +static void zconf_endfile(void) +{ + struct buffer *tmp; + + fclose(yyin); + yy_delete_buffer(YY_CURRENT_BUFFER); + yy_switch_to_buffer(current_buf->state); + yylineno = current_buf->yylineno; + cur_filename = current_buf->filename; + tmp = current_buf; + current_buf = current_buf->parent; + free(tmp); +} + diff --git a/support/kconfig/list.h b/support/kconfig/list.h index 45cb237ab7..882859ddf9 100644 --- a/support/kconfig/list.h +++ b/support/kconfig/list.h @@ -2,29 +2,39 @@ #ifndef LIST_H #define LIST_H -/* - * Copied from include/linux/... - */ +#include -#undef offsetof -#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) +#include "list_types.h" + +/* Are two types/vars the same type (ignoring qualifiers)? */ +#define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b)) /** * container_of - cast a member of a structure out to the containing structure - * @ptr: the pointer to the member. - * @type: the type of the container struct this is embedded in. - * @member: the name of the member within the struct. + * @ptr: the pointer to the member. + * @type: the type of the container struct this is embedded in. + * @member: the name of the member within the struct. * */ -#define container_of(ptr, type, member) ({ \ - const typeof( ((type *)0)->member ) *__mptr = (ptr); \ - (type *)( (char *)__mptr - offsetof(type,member) );}) - +#define container_of(ptr, type, member) ({ \ + void *__mptr = (void *)(ptr); \ + _Static_assert(__same_type(*(ptr), ((type *)0)->member) || \ + __same_type(*(ptr), void), \ + "pointer type mismatch in container_of()"); \ + ((type *)(__mptr - offsetof(type, member))); }) -struct list_head { - struct list_head *next, *prev; -}; +#define LIST_POISON1 ((void *) 0x100) +#define LIST_POISON2 ((void *) 0x122) +/* + * Circular doubly linked list implementation. + * + * Some of the internal functions ("__xxx") are useful when + * manipulating whole lists rather than single entries, as + * sometimes we already know the next/prev entries and we can + * generate better code by using them directly rather than + * using the generic single-entry routines. + */ #define LIST_HEAD_INIT(name) { &(name), &(name) } @@ -32,45 +42,16 @@ struct list_head { struct list_head name = LIST_HEAD_INIT(name) /** - * list_entry - get the struct for this entry - * @ptr: the &struct list_head pointer. - * @type: the type of the struct this is embedded in. - * @member: the name of the list_head within the struct. - */ -#define list_entry(ptr, type, member) \ - container_of(ptr, type, member) - -/** - * list_for_each_entry - iterate over list of given type - * @pos: the type * to use as a loop cursor. - * @head: the head for your list. - * @member: the name of the list_head within the struct. - */ -#define list_for_each_entry(pos, head, member) \ - for (pos = list_entry((head)->next, typeof(*pos), member); \ - &pos->member != (head); \ - pos = list_entry(pos->member.next, typeof(*pos), member)) - -/** - * list_for_each_entry_safe - iterate over list of given type safe against removal of list entry - * @pos: the type * to use as a loop cursor. - * @n: another type * to use as temporary storage - * @head: the head for your list. - * @member: the name of the list_head within the struct. - */ -#define list_for_each_entry_safe(pos, n, head, member) \ - for (pos = list_entry((head)->next, typeof(*pos), member), \ - n = list_entry(pos->member.next, typeof(*pos), member); \ - &pos->member != (head); \ - pos = n, n = list_entry(n->member.next, typeof(*n), member)) - -/** - * list_empty - tests whether a list is empty - * @head: the list to test. + * INIT_LIST_HEAD - Initialize a list_head structure + * @list: list_head structure to be initialized. + * + * Initializes the list_head to point to itself. If it is a list header, + * the result is an empty list. */ -static inline int list_empty(const struct list_head *head) +static inline void INIT_LIST_HEAD(struct list_head *list) { - return head->next == head; + list->next = list; + list->prev = list; } /* @@ -79,14 +60,27 @@ static inline int list_empty(const struct list_head *head) * This is only for internal list manipulation where we know * the prev/next entries already! */ -static inline void __list_add(struct list_head *_new, +static inline void __list_add(struct list_head *new, struct list_head *prev, struct list_head *next) { - next->prev = _new; - _new->next = next; - _new->prev = prev; - prev->next = _new; + next->prev = new; + new->next = next; + new->prev = prev; + prev->next = new; +} + +/** + * list_add - add a new entry + * @new: new entry to be added + * @head: list head to add it after + * + * Insert a new entry after the specified head. + * This is good for implementing stacks. + */ +static inline void list_add(struct list_head *new, struct list_head *head) +{ + __list_add(new, head, head->next); } /** @@ -97,9 +91,9 @@ static inline void __list_add(struct list_head *_new, * Insert a new entry before the specified head. * This is useful for implementing queues. */ -static inline void list_add_tail(struct list_head *_new, struct list_head *head) +static inline void list_add_tail(struct list_head *new, struct list_head *head) { - __list_add(_new, head->prev, head); + __list_add(new, head->prev, head); } /* @@ -115,8 +109,11 @@ static inline void __list_del(struct list_head *prev, struct list_head *next) prev->next = next; } -#define LIST_POISON1 ((void *) 0x00100100) -#define LIST_POISON2 ((void *) 0x00200200) +static inline void __list_del_entry(struct list_head *entry) +{ + __list_del(entry->prev, entry->next); +} + /** * list_del - deletes entry from list. * @entry: the element to delete from the list. @@ -125,8 +122,135 @@ static inline void __list_del(struct list_head *prev, struct list_head *next) */ static inline void list_del(struct list_head *entry) { - __list_del(entry->prev, entry->next); - entry->next = (struct list_head*)LIST_POISON1; - entry->prev = (struct list_head*)LIST_POISON2; + __list_del_entry(entry); + entry->next = LIST_POISON1; + entry->prev = LIST_POISON2; +} + +/** + * list_is_head - tests whether @list is the list @head + * @list: the entry to test + * @head: the head of the list + */ +static inline int list_is_head(const struct list_head *list, const struct list_head *head) +{ + return list == head; +} + +/** + * list_empty - tests whether a list is empty + * @head: the list to test. + */ +static inline int list_empty(const struct list_head *head) +{ + return head->next == head; +} + +/** + * list_entry - get the struct for this entry + * @ptr: the &struct list_head pointer. + * @type: the type of the struct this is embedded in. + * @member: the name of the list_head within the struct. + */ +#define list_entry(ptr, type, member) \ + container_of(ptr, type, member) + +/** + * list_first_entry - get the first element from a list + * @ptr: the list head to take the element from. + * @type: the type of the struct this is embedded in. + * @member: the name of the list_head within the struct. + * + * Note, that list is expected to be not empty. + */ +#define list_first_entry(ptr, type, member) \ + list_entry((ptr)->next, type, member) + +/** + * list_next_entry - get the next element in list + * @pos: the type * to cursor + * @member: the name of the list_head within the struct. + */ +#define list_next_entry(pos, member) \ + list_entry((pos)->member.next, typeof(*(pos)), member) + +/** + * list_entry_is_head - test if the entry points to the head of the list + * @pos: the type * to cursor + * @head: the head for your list. + * @member: the name of the list_head within the struct. + */ +#define list_entry_is_head(pos, head, member) \ + (&pos->member == (head)) + +/** + * list_for_each_entry - iterate over list of given type + * @pos: the type * to use as a loop cursor. + * @head: the head for your list. + * @member: the name of the list_head within the struct. + */ +#define list_for_each_entry(pos, head, member) \ + for (pos = list_first_entry(head, typeof(*pos), member); \ + !list_entry_is_head(pos, head, member); \ + pos = list_next_entry(pos, member)) + +/** + * list_for_each_entry_safe - iterate over list of given type. Safe against removal of list entry + * @pos: the type * to use as a loop cursor. + * @n: another type * to use as temporary storage + * @head: the head for your list. + * @member: the name of the list_head within the struct. + */ +#define list_for_each_entry_safe(pos, n, head, member) \ + for (pos = list_first_entry(head, typeof(*pos), member), \ + n = list_next_entry(pos, member); \ + !list_entry_is_head(pos, head, member); \ + pos = n, n = list_next_entry(n, member)) + +/* + * Double linked lists with a single pointer list head. + * Mostly useful for hash tables where the two pointer list head is + * too wasteful. + * You lose the ability to access the tail in O(1). + */ + +#define HLIST_HEAD_INIT { .first = NULL } + +/** + * hlist_add_head - add a new entry at the beginning of the hlist + * @n: new entry to be added + * @h: hlist head to add it after + * + * Insert a new entry after the specified head. + * This is good for implementing stacks. + */ +static inline void hlist_add_head(struct hlist_node *n, struct hlist_head *h) +{ + struct hlist_node *first = h->first; + + n->next = first; + if (first) + first->pprev = &n->next; + h->first = n; + n->pprev = &h->first; } -#endif + +#define hlist_entry(ptr, type, member) container_of(ptr, type, member) + +#define hlist_entry_safe(ptr, type, member) \ + ({ typeof(ptr) ____ptr = (ptr); \ + ____ptr ? hlist_entry(____ptr, type, member) : NULL; \ + }) + +/** + * hlist_for_each_entry - iterate over list of given type + * @pos: the type * to use as a loop cursor. + * @head: the head for your list. + * @member: the name of the hlist_node within the struct. + */ +#define hlist_for_each_entry(pos, head, member) \ + for (pos = hlist_entry_safe((head)->first, typeof(*(pos)), member);\ + pos; \ + pos = hlist_entry_safe((pos)->member.next, typeof(*(pos)), member)) + +#endif /* LIST_H */ diff --git a/support/kconfig/list_types.h b/support/kconfig/list_types.h new file mode 100644 index 0000000000..d935b7c5aa --- /dev/null +++ b/support/kconfig/list_types.h @@ -0,0 +1,17 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef LIST_TYPES_H +#define LIST_TYPES_H + +struct list_head { + struct list_head *next, *prev; +}; + +struct hlist_head { + struct hlist_node *first; +}; + +struct hlist_node { + struct hlist_node *next, **pprev; +}; + +#endif /* LIST_TYPES_H */ diff --git a/support/kconfig/lkc.h b/support/kconfig/lkc.h index f4394af6e4..e7cc9e985c 100644 --- a/support/kconfig/lkc.h +++ b/support/kconfig/lkc.h @@ -1,21 +1,16 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ #ifndef LKC_H #define LKC_H -#include "expr.h" +#include +#include +#include -#ifndef KBUILD_NO_NLS -# include -#else -static inline const char *gettext(const char *txt) { return txt; } -static inline void textdomain(const char *domainname) {} -static inline void bindtextdomain(const char *name, const char *dir) {} -static inline char *bind_textdomain_codeset(const char *dn, char *c) { return c; } -#endif +#include "expr.h" #ifdef __cplusplus extern "C" { @@ -25,15 +20,6 @@ extern "C" { #define SRCTREE "srctree" -#ifndef PACKAGE -#define PACKAGE "linux" -#endif - -#define LOCALEDIR "/usr/share/locale" - -#define _(text) gettext(text) -#define N_(text) (text) - #ifndef CONFIG_ #define CONFIG_ "CONFIG_" #endif @@ -44,46 +30,16 @@ static inline const char *CONFIG_prefix(void) #undef CONFIG_ #define CONFIG_ CONFIG_prefix() -#define TF_COMMAND 0x0001 -#define TF_PARAM 0x0002 -#define TF_OPTION 0x0004 - -enum conf_def_mode { - def_default, - def_yes, - def_mod, - def_no, - def_random -}; - -#define T_OPT_MODULES 1 -#define T_OPT_DEFCONFIG_LIST 2 -#define T_OPT_ENV 3 -#define T_OPT_ALLNOCONFIG_Y 4 - -struct kconf_id { - const char *name; - int token; - unsigned int flags; - enum symbol_type stype; -}; - extern int yylineno; void zconfdump(FILE *out); void zconf_starthelp(void); FILE *zconf_fopen(const char *name); void zconf_initscan(const char *name); void zconf_nextfile(const char *name); -int zconf_lineno(void); -const char *zconf_curname(void); /* confdata.c */ +extern struct gstr autoconf_cmd; const char *conf_get_configname(void); -const char *conf_get_autoconfig_name(void); -char *conf_get_default_confname(void); -void sym_set_change_count(int count); -void sym_add_change_count(int count); -bool conf_set_all_new_symbols(enum conf_def_mode mode); void set_all_choice_values(struct symbol *csym); /* confdata.c and expr.c */ @@ -95,28 +51,17 @@ static inline void xfwrite(const void *str, size_t len, size_t count, FILE *out) fprintf(stderr, "Error in writing or end of file.\n"); } -/* menu.c */ -void _menu_init(void); -void menu_warn(struct menu *menu, const char *fmt, ...); -struct menu *menu_add_menu(void); -void menu_end_menu(void); -void menu_add_entry(struct symbol *sym); -void menu_add_dep(struct expr *dep); -void menu_add_visibility(struct expr *dep); -struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep); -void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep); -void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep); -void menu_add_option(int token, char *arg); -void menu_finalize(struct menu *parent); -void menu_set_type(int type); - /* util.c */ -struct file *file_lookup(const char *name); -int file_write_dep(const char *name); +unsigned int strhash(const char *s); +const char *file_lookup(const char *name); void *xmalloc(size_t size); void *xcalloc(size_t nmemb, size_t size); void *xrealloc(void *p, size_t size); char *xstrdup(const char *s); +char *xstrndup(const char *s, size_t n); + +/* lexer.l */ +int yylex(void); struct gstr { size_t len; @@ -131,19 +76,40 @@ struct gstr str_new(void); void str_free(struct gstr *gs); void str_append(struct gstr *gs, const char *s); void str_printf(struct gstr *gs, const char *fmt, ...); -const char *str_get(struct gstr *gs); +char *str_get(struct gstr *gs); -/* symbol.c */ -extern struct expr *sym_env_list; +/* menu.c */ +void _menu_init(void); +void menu_warn(struct menu *menu, const char *fmt, ...); +struct menu *menu_add_menu(void); +void menu_end_menu(void); +void menu_add_entry(struct symbol *sym); +void menu_add_dep(struct expr *dep); +void menu_add_visibility(struct expr *dep); +struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep); +void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep); +void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep); +void menu_finalize(void); +void menu_set_type(int type); + +extern struct menu rootmenu; -void sym_init(void); +bool menu_is_empty(struct menu *menu); +bool menu_is_visible(struct menu *menu); +bool menu_has_prompt(struct menu *menu); +const char *menu_get_prompt(struct menu *menu); +struct menu *menu_get_parent_menu(struct menu *menu); +int get_jump_key_char(void); +struct gstr get_relations_str(struct symbol **sym_arr, struct list_head *head); +void menu_get_ext_help(struct menu *menu, struct gstr *help); + +/* symbol.c */ void sym_clear_all_valid(void); struct symbol *sym_choice_default(struct symbol *sym); +struct property *sym_get_range_prop(struct symbol *sym); const char *sym_get_string_default(struct symbol *sym); struct symbol *sym_check_deps(struct symbol *sym); -struct property *prop_alloc(enum prop_type type, struct symbol *sym); struct symbol *prop_get_symbol(struct property *prop); -struct property *sym_get_env_prop(struct symbol *sym); static inline tristate sym_get_tristate_value(struct symbol *sym) { @@ -156,11 +122,6 @@ static inline struct symbol *sym_get_choice_value(struct symbol *sym) return (struct symbol *)sym->curr.val; } -static inline bool sym_set_choice_value(struct symbol *ch, struct symbol *chval) -{ - return sym_set_tristate_value(chval, yes); -} - static inline bool sym_is_choice(struct symbol *sym) { return sym->flags & SYMBOL_CHOICE ? true : false; diff --git a/support/kconfig/lkc_proto.h b/support/kconfig/lkc_proto.h index 9dc8abfb1d..2807fa584c 100644 --- a/support/kconfig/lkc_proto.h +++ b/support/kconfig/lkc_proto.h @@ -1,4 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0 */ +#ifndef LKC_PROTO_H +#define LKC_PROTO_H + #include /* confdata.c */ @@ -7,35 +10,21 @@ int conf_read(const char *name); int conf_read_simple(const char *name, int); int conf_write_defconfig(const char *name); int conf_write(const char *name); -int conf_write_autoconf(void); +int conf_write_autoconf(int overwrite); +void conf_set_changed(bool val); bool conf_get_changed(void); void conf_set_changed_callback(void (*fn)(void)); -void conf_set_message_callback(void (*fn)(const char *fmt, va_list ap)); - -/* menu.c */ -extern struct menu rootmenu; - -bool menu_is_empty(struct menu *menu); -bool menu_is_visible(struct menu *menu); -bool menu_has_prompt(struct menu *menu); -const char * menu_get_prompt(struct menu *menu); -struct menu * menu_get_root_menu(struct menu *menu); -struct menu * menu_get_parent_menu(struct menu *menu); -bool menu_has_help(struct menu *menu); -const char * menu_get_help(struct menu *menu); -struct gstr get_relations_str(struct symbol **sym_arr, struct list_head *head); -void menu_get_ext_help(struct menu *menu, struct gstr *help); +void conf_set_message_callback(void (*fn)(const char *s)); +bool conf_errors(void); /* symbol.c */ -extern struct symbol * symbol_hash[SYMBOL_HASHSIZE]; - struct symbol * sym_lookup(const char *name, int flags); struct symbol * sym_find(const char *name); -char *sym_expand_string_value(const char *in); -const char * sym_escape_string_value(const char *in); +void print_symbol_for_listconfig(struct symbol *sym); struct symbol ** sym_re_search(const char *pattern); const char * sym_type_name(enum symbol_type type); void sym_calc_value(struct symbol *sym); +bool sym_dep_errors(void); enum symbol_type sym_get_type(struct symbol *sym); bool sym_tristate_within_range(struct symbol *sym,tristate tri); bool sym_set_tristate_value(struct symbol *sym,tristate tri); @@ -43,7 +32,7 @@ tristate sym_toggle_tristate_value(struct symbol *sym); bool sym_string_valid(struct symbol *sym, const char *newval); bool sym_string_within_range(struct symbol *sym, const char *str); bool sym_set_string_value(struct symbol *sym, const char *newval); -bool sym_is_changable(struct symbol *sym); +bool sym_is_changeable(struct symbol *sym); struct property * sym_get_choice_prop(struct symbol *sym); const char * sym_get_string_value(struct symbol *sym); @@ -51,3 +40,5 @@ const char * prop_get_type_name(enum prop_type type); /* expr.c */ void expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char *), void *data, int prevtoken); + +#endif /* LKC_PROTO_H */ diff --git a/support/kconfig/lxdialog/.gitignore b/support/kconfig/lxdialog/.gitignore deleted file mode 100644 index 90b08ff025..0000000000 --- a/support/kconfig/lxdialog/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# -# Generated files -# -lxdialog diff --git a/support/kconfig/lxdialog/BIG.FAT.WARNING b/support/kconfig/lxdialog/BIG.FAT.WARNING index a8999d82bd..7cb5a7ec93 100644 --- a/support/kconfig/lxdialog/BIG.FAT.WARNING +++ b/support/kconfig/lxdialog/BIG.FAT.WARNING @@ -1,4 +1,4 @@ This is NOT the official version of dialog. This version has been significantly modified from the original. It is for use by the Linux -kernel configuration script. Please do not bother Savio Lam with +kernel configuration script. Please do not bother Savio Lam with questions about this program. diff --git a/support/kconfig/lxdialog/check-lxdialog.sh b/support/kconfig/lxdialog/check-lxdialog.sh deleted file mode 100755 index 27d6c30a57..0000000000 --- a/support/kconfig/lxdialog/check-lxdialog.sh +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Check ncurses compatibility - -# What library to link -ldflags() -{ - pkg-config --libs ncursesw 2>/dev/null && exit - pkg-config --libs ncurses 2>/dev/null && exit - for ext in so a dll.a dylib ; do - for lib in ncursesw ncurses curses ; do - $cc -print-file-name=lib${lib}.${ext} | grep -q / - if [ $? -eq 0 ]; then - echo "-l${lib}" - exit - fi - done - done - exit 1 -} - -# Where is ncurses.h? -ccflags() -{ - if pkg-config --cflags ncursesw 2>/dev/null; then - echo '-DCURSES_LOC="" -DNCURSES_WIDECHAR=1' - elif pkg-config --cflags ncurses 2>/dev/null; then - echo '-DCURSES_LOC=""' - elif [ -f /usr/include/ncursesw/curses.h ]; then - echo '-I/usr/include/ncursesw -DCURSES_LOC=""' - echo ' -DNCURSES_WIDECHAR=1' - elif [ -f /usr/include/ncurses/ncurses.h ]; then - echo '-I/usr/include/ncurses -DCURSES_LOC=""' - elif [ -f /usr/include/ncurses/curses.h ]; then - echo '-I/usr/include/ncurses -DCURSES_LOC=""' - elif [ -f /usr/include/ncurses.h ]; then - echo '-DCURSES_LOC=""' - else - echo '-DCURSES_LOC=""' - fi -} - -# Temp file, try to clean up after us -tmp=$(mktemp) -trap "rm -f $tmp" 0 1 2 3 15 - -# Check if we can link to ncurses -check() { - $cc -x c - -o $tmp 2>/dev/null <<'EOF' -#include CURSES_LOC -int main() {} -EOF - if [ $? != 0 ]; then - echo " *** Unable to find the ncurses libraries or the" 1>&2 - echo " *** required header files." 1>&2 - echo " *** 'make menuconfig' requires the ncurses libraries." 1>&2 - echo " *** " 1>&2 - echo " *** Install ncurses (ncurses-devel or libncurses-dev " 1>&2 - echo " *** depending on your distribution) and try again." 1>&2 - echo " *** " 1>&2 - exit 1 - fi -} - -usage() { - printf "Usage: $0 [-check compiler options|-ccflags|-ldflags compiler options]\n" -} - -if [ $# -eq 0 ]; then - usage - exit 1 -fi - -cc="" -case "$1" in - "-check") - shift - cc="$@" - check - ;; - "-ccflags") - ccflags - ;; - "-ldflags") - shift - cc="$@" - ldflags - ;; - "*") - usage - exit 1 - ;; -esac diff --git a/support/kconfig/lxdialog/checklist.c b/support/kconfig/lxdialog/checklist.c index 8d016faa28..75493302fb 100644 --- a/support/kconfig/lxdialog/checklist.c +++ b/support/kconfig/lxdialog/checklist.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * checklist.c -- implements the checklist box * @@ -5,20 +6,6 @@ * Stuart Herbert - S.Herbert at sheffield.ac.uk: radiolist extension * Alessandro Rubini - rubini at ipvvis.unipv.it: merged the two * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap at cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "dialog.h" @@ -103,8 +90,8 @@ static void print_buttons(WINDOW * dialog, int height, int width, int selected) int x = width / 2 - 11; int y = height - 2; - print_button(dialog, gettext("Select"), y, x, selected == 0); - print_button(dialog, gettext(" Help "), y, x + 14, selected == 1); + print_button(dialog, "Select", y, x, selected == 0); + print_button(dialog, " Help ", y, x + 14, selected == 1); wmove(dialog, y, x + 1 + 14 * selected); wrefresh(dialog); @@ -132,7 +119,7 @@ int dialog_checklist(const char *title, const char *prompt, int height, } do_resize: - if (getmaxy(stdscr) < (height + CHECKLIST_HEIGTH_MIN)) + if (getmaxy(stdscr) < (height + CHECKLIST_HEIGHT_MIN)) return -ERRDISPLAYTOOSMALL; if (getmaxx(stdscr) < (width + CHECKLIST_WIDTH_MIN)) return -ERRDISPLAYTOOSMALL; @@ -201,9 +188,8 @@ do_resize: print_buttons(dialog, height, width, 0); - wnoutrefresh(dialog); - wnoutrefresh(list); - doupdate(); + wmove(list, choice, check_x + 1); + wrefresh(list); while (key != KEY_ESC) { key = wgetch(dialog); diff --git a/support/kconfig/lxdialog/dialog.h b/support/kconfig/lxdialog/dialog.h index fcffd5b41f..f6c2ebe6d1 100644 --- a/support/kconfig/lxdialog/dialog.h +++ b/support/kconfig/lxdialog/dialog.h @@ -1,21 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ /* * dialog.h -- common declarations for all dialog modules * * AUTHOR: Savio Lam (lam836 at cs.cuhk.hk) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include @@ -26,32 +13,10 @@ #include #include -#ifndef KBUILD_NO_NLS -# include -#else -# define gettext(Msgid) ((const char *) (Msgid)) -#endif - #ifdef __sun__ #define CURS_MACROS #endif -#include CURSES_LOC - -/* - * Colors in ncurses 1.9.9e do not work properly since foreground and - * background colors are OR'd rather than separately masked. This version - * of dialog was hacked to work with ncurses 1.9.9e, making it incompatible - * with standard curses. The simplest fix (to make this work with standard - * curses) uses the wbkgdset() function, not used in the original hack. - * Turn it off if we're building with 1.9.9e, since it just confuses things. - */ -#if defined(NCURSES_VERSION) && defined(_NEED_WRAP) && !defined(GCC_PRINTFLIKE) -#define OLD_NCURSES 1 -#undef wbkgdset -#define wbkgdset(w,p) /*nothing */ -#else -#define OLD_NCURSES 0 -#endif +#include #define TR(params) _tracef params @@ -126,10 +91,6 @@ struct dialog_info { struct dialog_color button_label_active; struct dialog_color button_label_inactive; struct dialog_color inputbox; - struct dialog_color inputbox_border; - struct dialog_color searchbox; - struct dialog_color searchbox_title; - struct dialog_color searchbox_border; struct dialog_color position_indicator; struct dialog_color menubox; struct dialog_color menubox_border; @@ -201,17 +162,17 @@ int on_key_esc(WINDOW *win); int on_key_resize(void); /* minimum (re)size values */ -#define CHECKLIST_HEIGTH_MIN 6 /* For dialog_checklist() */ +#define CHECKLIST_HEIGHT_MIN 6 /* For dialog_checklist() */ #define CHECKLIST_WIDTH_MIN 6 -#define INPUTBOX_HEIGTH_MIN 2 /* For dialog_inputbox() */ +#define INPUTBOX_HEIGHT_MIN 2 /* For dialog_inputbox() */ #define INPUTBOX_WIDTH_MIN 2 -#define MENUBOX_HEIGTH_MIN 15 /* For dialog_menu() */ +#define MENUBOX_HEIGHT_MIN 15 /* For dialog_menu() */ #define MENUBOX_WIDTH_MIN 65 -#define TEXTBOX_HEIGTH_MIN 8 /* For dialog_textbox() */ +#define TEXTBOX_HEIGHT_MIN 8 /* For dialog_textbox() */ #define TEXTBOX_WIDTH_MIN 8 -#define YESNO_HEIGTH_MIN 4 /* For dialog_yesno() */ +#define YESNO_HEIGHT_MIN 4 /* For dialog_yesno() */ #define YESNO_WIDTH_MIN 4 -#define WINDOW_HEIGTH_MIN 19 /* For init_dialog() */ +#define WINDOW_HEIGHT_MIN 19 /* For init_dialog() */ #define WINDOW_WIDTH_MIN 80 int init_dialog(const char *backtitle); @@ -231,27 +192,12 @@ int first_alpha(const char *string, const char *exempt); int dialog_yesno(const char *title, const char *prompt, int height, int width); int dialog_msgbox(const char *title, const char *prompt, int height, int width, int pause); - - -typedef void (*update_text_fn)(char *buf, size_t start, size_t end, void - *_data); -int dialog_textbox(const char *title, char *tbuf, int initial_height, - int initial_width, int *keys, int *_vscroll, int *_hscroll, - update_text_fn update_text, void *data); +int dialog_textbox(const char *title, const char *tbuf, int initial_height, + int initial_width, int *_vscroll, int *_hscroll, + int (*extra_key_cb)(int, size_t, size_t, void *), void *data); int dialog_menu(const char *title, const char *prompt, const void *selected, int *s_scroll); int dialog_checklist(const char *title, const char *prompt, int height, int width, int list_height); int dialog_inputbox(const char *title, const char *prompt, int height, int width, const char *init); - -/* - * This is the base for fictitious keys, which activate - * the buttons. - * - * Mouse-generated keys are the following: - * -- the first 32 are used as numbers, in addition to '0'-'9' - * -- the lowercase are used to signal mouse-enter events (M_EVENT + 'o') - * -- uppercase chars are used to invoke the button (M_EVENT + 'O') - */ -#define M_EVENT (KEY_MAX+1) diff --git a/support/kconfig/lxdialog/inputbox.c b/support/kconfig/lxdialog/inputbox.c index d58de1dc53..3c6e24b20f 100644 --- a/support/kconfig/lxdialog/inputbox.c +++ b/support/kconfig/lxdialog/inputbox.c @@ -1,22 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * inputbox.c -- implements the input box * * ORIGINAL AUTHOR: Savio Lam (lam836 at cs.cuhk.hk) * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap at cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "dialog.h" @@ -31,8 +18,8 @@ static void print_buttons(WINDOW * dialog, int height, int width, int selected) int x = width / 2 - 11; int y = height - 2; - print_button(dialog, gettext(" Ok "), y, x, selected == 0); - print_button(dialog, gettext(" Help "), y, x + 14, selected == 1); + print_button(dialog, " Ok ", y, x, selected == 0); + print_button(dialog, " Help ", y, x + 14, selected == 1); wmove(dialog, y, x + 1 + 14 * selected); wrefresh(dialog); @@ -56,7 +43,7 @@ int dialog_inputbox(const char *title, const char *prompt, int height, int width strcpy(instr, init); do_resize: - if (getmaxy(stdscr) <= (height - INPUTBOX_HEIGTH_MIN)) + if (getmaxy(stdscr) <= (height - INPUTBOX_HEIGHT_MIN)) return -ERRDISPLAYTOOSMALL; if (getmaxx(stdscr) <= (width - INPUTBOX_WIDTH_MIN)) return -ERRDISPLAYTOOSMALL; @@ -126,7 +113,8 @@ do_resize: case KEY_DOWN: break; case KEY_BACKSPACE: - case 127: + case 8: /* ^H */ + case 127: /* ^? */ if (pos) { wattrset(dialog, dlg.inputbox.atr); if (input_x == 0) { diff --git a/support/kconfig/lxdialog/menubox.c b/support/kconfig/lxdialog/menubox.c index 185524901d..d4c19b7bee 100644 --- a/support/kconfig/lxdialog/menubox.c +++ b/support/kconfig/lxdialog/menubox.c @@ -1,22 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * menubox.c -- implements the menu box * * ORIGINAL AUTHOR: Savio Lam (lam836 at cs.cuhk.hk) * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcapw at cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* @@ -76,15 +63,7 @@ static void do_print_item(WINDOW * win, const char *item, int line_y, /* Clear 'residue' of last item */ wattrset(win, dlg.menubox.atr); wmove(win, line_y, 0); -#if OLD_NCURSES - { - int i; - for (i = 0; i < menu_width; i++) - waddch(win, ' '); - } -#else wclrtoeol(win); -#endif wattrset(win, selected ? dlg.item_selected.atr : dlg.item.atr); mvwaddstr(win, line_y, item_x, menu_item); if (hotkey) { @@ -157,11 +136,11 @@ static void print_buttons(WINDOW * win, int height, int width, int selected) int x = width / 2 - 28; int y = height - 2; - print_button(win, gettext("Select"), y, x, selected == 0); - print_button(win, gettext(" Exit "), y, x + 12, selected == 1); - print_button(win, gettext(" Help "), y, x + 24, selected == 2); - print_button(win, gettext(" Save "), y, x + 36, selected == 3); - print_button(win, gettext(" Load "), y, x + 48, selected == 4); + print_button(win, "Select", y, x, selected == 0); + print_button(win, " Exit ", y, x + 12, selected == 1); + print_button(win, " Help ", y, x + 24, selected == 2); + print_button(win, " Save ", y, x + 36, selected == 3); + print_button(win, " Load ", y, x + 48, selected == 4); wmove(win, y, x + 1 + 12 * selected); wrefresh(win); @@ -193,7 +172,7 @@ int dialog_menu(const char *title, const char *prompt, do_resize: height = getmaxy(stdscr); width = getmaxx(stdscr); - if (height < MENUBOX_HEIGTH_MIN || width < MENUBOX_WIDTH_MIN) + if (height < MENUBOX_HEIGHT_MIN || width < MENUBOX_WIDTH_MIN) return -ERRDISPLAYTOOSMALL; height -= 4; diff --git a/support/kconfig/lxdialog/textbox.c b/support/kconfig/lxdialog/textbox.c index 1773319b95..0abaf63597 100644 --- a/support/kconfig/lxdialog/textbox.c +++ b/support/kconfig/lxdialog/textbox.c @@ -1,61 +1,156 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * textbox.c -- implements the text box * * ORIGINAL AUTHOR: Savio Lam (lam836 at cs.cuhk.hk) * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap at cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "dialog.h" -static void back_lines(int n); -static void print_page(WINDOW *win, int height, int width, update_text_fn - update_text, void *data); -static void print_line(WINDOW *win, int row, int width); -static char *get_line(void); -static void print_position(WINDOW * win); - static int hscroll; static int begin_reached, end_reached, page_length; -static char *buf; -static char *page; +static const char *buf, *page; +static size_t start, end; + +/* + * Go back 'n' lines in text. Called by dialog_textbox(). + * 'page' will be updated to point to the desired line in 'buf'. + */ +static void back_lines(int n) +{ + int i; + + begin_reached = 0; + /* Go back 'n' lines */ + for (i = 0; i < n; i++) { + if (*page == '\0') { + if (end_reached) { + end_reached = 0; + continue; + } + } + if (page == buf) { + begin_reached = 1; + return; + } + page--; + do { + if (page == buf) { + begin_reached = 1; + return; + } + page--; + } while (*page != '\n'); + page++; + } +} + +/* + * Return current line of text. Called by dialog_textbox() and print_line(). + * 'page' should point to start of current line before calling, and will be + * updated to point to start of next line. + */ +static char *get_line(void) +{ + int i = 0; + static char line[MAX_LEN + 1]; + + end_reached = 0; + while (*page != '\n') { + if (*page == '\0') { + end_reached = 1; + break; + } else if (i < MAX_LEN) + line[i++] = *(page++); + else { + /* Truncate lines longer than MAX_LEN characters */ + if (i == MAX_LEN) + line[i++] = '\0'; + page++; + } + } + if (i <= MAX_LEN) + line[i] = '\0'; + if (!end_reached) + page++; /* move past '\n' */ + + return line; +} + +/* + * Print a new line of text. + */ +static void print_line(WINDOW *win, int row, int width) +{ + char *line; + + line = get_line(); + line += MIN(strlen(line), hscroll); /* Scroll horizontally */ + wmove(win, row, 0); /* move cursor to correct line */ + waddch(win, ' '); + waddnstr(win, line, MIN(strlen(line), width - 2)); + + /* Clear 'residue' of previous line */ + wclrtoeol(win); +} + +/* + * Print a new page of text. + */ +static void print_page(WINDOW *win, int height, int width) +{ + int i, passed_end = 0; + + page_length = 0; + for (i = 0; i < height; i++) { + print_line(win, i, width); + if (!passed_end) + page_length++; + if (end_reached && !passed_end) + passed_end = 1; + } + wnoutrefresh(win); +} + +/* + * Print current position + */ +static void print_position(WINDOW *win) +{ + int percent; + + wattrset(win, dlg.position_indicator.atr); + wbkgdset(win, dlg.position_indicator.atr & A_COLOR); + percent = (page - buf) * 100 / strlen(buf); + wmove(win, getmaxy(win) - 3, getmaxx(win) - 9); + wprintw(win, "(%3d%%)", percent); +} /* * refresh window content */ static void refresh_text_box(WINDOW *dialog, WINDOW *box, int boxh, int boxw, - int cur_y, int cur_x, update_text_fn update_text, - void *data) + int cur_y, int cur_x) { - print_page(box, boxh, boxw, update_text, data); + start = page - buf; + + print_page(box, boxh, boxw); print_position(dialog); wmove(dialog, cur_y, cur_x); /* Restore cursor position */ wrefresh(dialog); -} + end = page - buf; +} /* * Display text from a file in a dialog box. * * keys is a null-terminated array - * update_text() may not add or remove any '\n' or '\0' in tbuf */ -int dialog_textbox(const char *title, char *tbuf, int initial_height, - int initial_width, int *keys, int *_vscroll, int *_hscroll, - update_text_fn update_text, void *data) +int dialog_textbox(const char *title, const char *tbuf, int initial_height, + int initial_width, int *_vscroll, int *_hscroll, + int (*extra_key_cb)(int, size_t, size_t, void *), void *data) { int i, x, y, cur_x, cur_y, key = 0; int height, width, boxh, boxw; @@ -80,7 +175,7 @@ int dialog_textbox(const char *title, char *tbuf, int initial_height, do_resize: getmaxyx(stdscr, height, width); - if (height < TEXTBOX_HEIGTH_MIN || width < TEXTBOX_WIDTH_MIN) + if (height < TEXTBOX_HEIGHT_MIN || width < TEXTBOX_WIDTH_MIN) return -ERRDISPLAYTOOSMALL; if (initial_height != 0) height = initial_height; @@ -129,14 +224,13 @@ do_resize: print_title(dialog, title, width); - print_button(dialog, gettext(" Exit "), height - 2, width / 2 - 4, TRUE); + print_button(dialog, " Exit ", height - 2, width / 2 - 4, TRUE); wnoutrefresh(dialog); getyx(dialog, cur_y, cur_x); /* Save cursor position */ /* Print first page of text */ attr_clear(box, boxh, boxw, dlg.dialog.atr); - refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x, update_text, - data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); while (!done) { key = wgetch(dialog); @@ -155,8 +249,7 @@ do_resize: begin_reached = 1; page = buf; refresh_text_box(dialog, box, boxh, boxw, - cur_y, cur_x, update_text, - data); + cur_y, cur_x); } break; case 'G': /* Last page */ @@ -166,8 +259,7 @@ do_resize: /* point to last char in buf */ page = buf + strlen(buf); back_lines(boxh); - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case 'K': /* Previous line */ case 'k': @@ -176,8 +268,7 @@ do_resize: break; back_lines(page_length + 1); - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case 'B': /* Previous page */ case 'b': @@ -186,8 +277,7 @@ do_resize: if (begin_reached) break; back_lines(page_length + boxh); - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case 'J': /* Next line */ case 'j': @@ -196,8 +286,7 @@ do_resize: break; back_lines(page_length - 1); - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case KEY_NPAGE: /* Next page */ case ' ': @@ -206,8 +295,7 @@ do_resize: break; begin_reached = 0; - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case '0': /* Beginning of line */ case 'H': /* Scroll left */ @@ -222,8 +310,7 @@ do_resize: hscroll--; /* Reprint current page to scroll horizontally */ back_lines(page_length); - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case 'L': /* Scroll right */ case 'l': @@ -233,8 +320,7 @@ do_resize: hscroll++; /* Reprint current page to scroll horizontally */ back_lines(page_length); - refresh_text_box(dialog, box, boxh, boxw, cur_y, - cur_x, update_text, data); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x); break; case KEY_ESC: if (on_key_esc(dialog) == KEY_ESC) @@ -247,11 +333,9 @@ do_resize: on_key_resize(); goto do_resize; default: - for (i = 0; keys[i]; i++) { - if (key == keys[i]) { - done = true; - break; - } + if (extra_key_cb && extra_key_cb(key, start, end, data)) { + done = true; + break; } } } @@ -272,137 +356,3 @@ do_resize: *_hscroll = hscroll; return key; } - -/* - * Go back 'n' lines in text. Called by dialog_textbox(). - * 'page' will be updated to point to the desired line in 'buf'. - */ -static void back_lines(int n) -{ - int i; - - begin_reached = 0; - /* Go back 'n' lines */ - for (i = 0; i < n; i++) { - if (*page == '\0') { - if (end_reached) { - end_reached = 0; - continue; - } - } - if (page == buf) { - begin_reached = 1; - return; - } - page--; - do { - if (page == buf) { - begin_reached = 1; - return; - } - page--; - } while (*page != '\n'); - page++; - } -} - -/* - * Print a new page of text. - */ -static void print_page(WINDOW *win, int height, int width, update_text_fn - update_text, void *data) -{ - int i, passed_end = 0; - - if (update_text) { - char *end; - - for (i = 0; i < height; i++) - get_line(); - end = page; - back_lines(height); - update_text(buf, page - buf, end - buf, data); - } - - page_length = 0; - for (i = 0; i < height; i++) { - print_line(win, i, width); - if (!passed_end) - page_length++; - if (end_reached && !passed_end) - passed_end = 1; - } - wnoutrefresh(win); -} - -/* - * Print a new line of text. - */ -static void print_line(WINDOW * win, int row, int width) -{ - char *line; - - line = get_line(); - line += MIN(strlen(line), hscroll); /* Scroll horizontally */ - wmove(win, row, 0); /* move cursor to correct line */ - waddch(win, ' '); - waddnstr(win, line, MIN(strlen(line), width - 2)); - - /* Clear 'residue' of previous line */ -#if OLD_NCURSES - { - int x = getcurx(win); - int i; - for (i = 0; i < width - x; i++) - waddch(win, ' '); - } -#else - wclrtoeol(win); -#endif -} - -/* - * Return current line of text. Called by dialog_textbox() and print_line(). - * 'page' should point to start of current line before calling, and will be - * updated to point to start of next line. - */ -static char *get_line(void) -{ - int i = 0; - static char line[MAX_LEN + 1]; - - end_reached = 0; - while (*page != '\n') { - if (*page == '\0') { - end_reached = 1; - break; - } else if (i < MAX_LEN) - line[i++] = *(page++); - else { - /* Truncate lines longer than MAX_LEN characters */ - if (i == MAX_LEN) - line[i++] = '\0'; - page++; - } - } - if (i <= MAX_LEN) - line[i] = '\0'; - if (!end_reached) - page++; /* move past '\n' */ - - return line; -} - -/* - * Print current position - */ -static void print_position(WINDOW * win) -{ - int percent; - - wattrset(win, dlg.position_indicator.atr); - wbkgdset(win, dlg.position_indicator.atr & A_COLOR); - percent = (page - buf) * 100 / strlen(buf); - wmove(win, getmaxy(win) - 3, getmaxx(win) - 9); - wprintw(win, "(%3d%%)", percent); -} diff --git a/support/kconfig/lxdialog/util.c b/support/kconfig/lxdialog/util.c index f7abdeb92a..f18e2a89f6 100644 --- a/support/kconfig/lxdialog/util.c +++ b/support/kconfig/lxdialog/util.c @@ -1,22 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * util.c * * ORIGINAL AUTHOR: Savio Lam (lam836 at cs.cuhk.hk) * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap at cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include @@ -42,10 +29,6 @@ static void set_mono_theme(void) dlg.button_label_active.atr = A_REVERSE; dlg.button_label_inactive.atr = A_NORMAL; dlg.inputbox.atr = A_NORMAL; - dlg.inputbox_border.atr = A_NORMAL; - dlg.searchbox.atr = A_NORMAL; - dlg.searchbox_title.atr = A_BOLD; - dlg.searchbox_border.atr = A_NORMAL; dlg.position_indicator.atr = A_BOLD; dlg.menubox.atr = A_NORMAL; dlg.menubox_border.atr = A_NORMAL; @@ -82,10 +65,6 @@ static void set_classic_theme(void) DLG_COLOR(button_label_active, COLOR_YELLOW, COLOR_BLUE, true); DLG_COLOR(button_label_inactive, COLOR_BLACK, COLOR_WHITE, true); DLG_COLOR(inputbox, COLOR_BLACK, COLOR_WHITE, false); - DLG_COLOR(inputbox_border, COLOR_BLACK, COLOR_WHITE, false); - DLG_COLOR(searchbox, COLOR_BLACK, COLOR_WHITE, false); - DLG_COLOR(searchbox_title, COLOR_YELLOW, COLOR_WHITE, true); - DLG_COLOR(searchbox_border, COLOR_WHITE, COLOR_WHITE, true); DLG_COLOR(position_indicator, COLOR_YELLOW, COLOR_WHITE, true); DLG_COLOR(menubox, COLOR_BLACK, COLOR_WHITE, false); DLG_COLOR(menubox_border, COLOR_WHITE, COLOR_WHITE, true); @@ -114,14 +93,9 @@ static void set_blackbg_theme(void) DLG_COLOR(button_key_active, COLOR_YELLOW, COLOR_RED, true); DLG_COLOR(button_key_inactive, COLOR_RED, COLOR_BLACK, false); DLG_COLOR(button_label_active, COLOR_WHITE, COLOR_RED, false); - DLG_COLOR(button_label_inactive, COLOR_BLACK, COLOR_BLACK, true); + DLG_COLOR(button_label_inactive, COLOR_WHITE, COLOR_BLACK, false); DLG_COLOR(inputbox, COLOR_YELLOW, COLOR_BLACK, false); - DLG_COLOR(inputbox_border, COLOR_YELLOW, COLOR_BLACK, false); - - DLG_COLOR(searchbox, COLOR_YELLOW, COLOR_BLACK, false); - DLG_COLOR(searchbox_title, COLOR_YELLOW, COLOR_BLACK, true); - DLG_COLOR(searchbox_border, COLOR_BLACK, COLOR_BLACK, true); DLG_COLOR(position_indicator, COLOR_RED, COLOR_BLACK, false); @@ -149,7 +123,6 @@ static void set_bluetitle_theme(void) DLG_COLOR(title, COLOR_BLUE, COLOR_WHITE, true); DLG_COLOR(button_key_active, COLOR_YELLOW, COLOR_BLUE, true); DLG_COLOR(button_label_active, COLOR_WHITE, COLOR_BLUE, true); - DLG_COLOR(searchbox_title, COLOR_BLUE, COLOR_WHITE, true); DLG_COLOR(position_indicator, COLOR_BLUE, COLOR_WHITE, true); DLG_COLOR(tag, COLOR_BLUE, COLOR_WHITE, true); DLG_COLOR(tag_key, COLOR_BLUE, COLOR_WHITE, true); @@ -202,10 +175,6 @@ static void init_dialog_colors(void) init_one_color(&dlg.button_label_active); init_one_color(&dlg.button_label_inactive); init_one_color(&dlg.inputbox); - init_one_color(&dlg.inputbox_border); - init_one_color(&dlg.searchbox); - init_one_color(&dlg.searchbox_title); - init_one_color(&dlg.searchbox_border); init_one_color(&dlg.position_indicator); init_one_color(&dlg.menubox); init_one_color(&dlg.menubox_border); @@ -322,7 +291,7 @@ int init_dialog(const char *backtitle) getyx(stdscr, saved_y, saved_x); getmaxyx(stdscr, height, width); - if (height < WINDOW_HEIGTH_MIN || width < WINDOW_WIDTH_MIN) { + if (height < WINDOW_HEIGHT_MIN || width < WINDOW_WIDTH_MIN) { endwin(); return -ERRDISPLAYTOOSMALL; } @@ -376,7 +345,7 @@ void print_title(WINDOW *dialog, const char *title, int width) /* * Print a string of text in a window, automatically wrap around to the * next line if the string is too long to fit on one line. Newline - * characters '\n' are propperly processed. We start on a new line + * characters '\n' are properly processed. We start on a new line * if there is no room for at least 4 nonblanks following a double-space. */ void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x) @@ -554,7 +523,7 @@ int first_alpha(const char *string, const char *exempt) * lxdialog suggest which is correctly translated to two * times esc. But then we need to ignore the second esc to avoid stepping * out one menu too much. Filter away all escaped key sequences since - * keypad(FALSE) turn off ncurses support for escape sequences - and thats + * keypad(FALSE) turn off ncurses support for escape sequences - and that's * needed to make notimeout() do as expected. */ int on_key_esc(WINDOW *win) diff --git a/support/kconfig/lxdialog/yesno.c b/support/kconfig/lxdialog/yesno.c index 676fb2f824..b57d25e154 100644 --- a/support/kconfig/lxdialog/yesno.c +++ b/support/kconfig/lxdialog/yesno.c @@ -1,22 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * yesno.c -- implements the yes/no box * * ORIGINAL AUTHOR: Savio Lam (lam836 at cs.cuhk.hk) * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap at cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "dialog.h" @@ -29,8 +16,8 @@ static void print_buttons(WINDOW * dialog, int height, int width, int selected) int x = width / 2 - 10; int y = height - 2; - print_button(dialog, gettext(" Yes "), y, x, selected == 0); - print_button(dialog, gettext(" No "), y, x + 13, selected == 1); + print_button(dialog, " Yes ", y, x, selected == 0); + print_button(dialog, " No ", y, x + 13, selected == 1); wmove(dialog, y, x + 1 + 13 * selected); wrefresh(dialog); @@ -45,7 +32,7 @@ int dialog_yesno(const char *title, const char *prompt, int height, int width) WINDOW *dialog; do_resize: - if (getmaxy(stdscr) < (height + YESNO_HEIGTH_MIN)) + if (getmaxy(stdscr) < (height + YESNO_HEIGHT_MIN)) return -ERRDISPLAYTOOSMALL; if (getmaxx(stdscr) < (width + YESNO_WIDTH_MIN)) return -ERRDISPLAYTOOSMALL; diff --git a/support/kconfig/mconf-cfg.sh b/support/kconfig/mconf-cfg.sh new file mode 100755 index 0000000000..1e61f50a59 --- /dev/null +++ b/support/kconfig/mconf-cfg.sh @@ -0,0 +1,55 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +cflags=$1 +libs=$2 + +PKG="ncursesw" +PKG2="ncurses" + +if [ -n "$(command -v ${HOSTPKG_CONFIG})" ]; then + if ${HOSTPKG_CONFIG} --exists $PKG; then + ${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG} > ${libs} + exit 0 + fi + + if ${HOSTPKG_CONFIG} --exists ${PKG2}; then + ${HOSTPKG_CONFIG} --cflags ${PKG2} > ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG2} > ${libs} + exit 0 + fi +fi + +# Check the default paths in case pkg-config is not installed. +# (Even if it is installed, some distributions such as openSUSE cannot +# find ncurses by pkg-config.) +if [ -f /usr/include/ncursesw/ncurses.h ]; then + echo -D_GNU_SOURCE -I/usr/include/ncursesw > ${cflags} + echo -lncursesw > ${libs} + exit 0 +fi + +if [ -f /usr/include/ncurses/ncurses.h ]; then + echo -D_GNU_SOURCE -I/usr/include/ncurses > ${cflags} + echo -lncurses > ${libs} + exit 0 +fi + +# As a final fallback before giving up, check if $HOSTCC knows of a default +# ncurses installation (e.g. from a vendor-specific sysroot). +if echo '#include ' | ${HOSTCC} -E - >/dev/null 2>&1; then + echo -D_GNU_SOURCE > ${cflags} + echo -lncurses > ${libs} + exit 0 +fi + +echo >&2 "*" +echo >&2 "* Unable to find the ncurses package." +echo >&2 "* Install ncurses (ncurses-devel or libncurses-dev" +echo >&2 "* depending on your distribution)." +echo >&2 "*" +echo >&2 "* You may also need to install ${HOSTPKG_CONFIG} to find the" +echo >&2 "* ncurses installed in a non-default location." +echo >&2 "*" +exit 1 diff --git a/support/kconfig/mconf.c b/support/kconfig/mconf.c index 279f4552a1..420e173e4f 100644 --- a/support/kconfig/mconf.c +++ b/support/kconfig/mconf.c @@ -1,6 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. * * Introduced single menu mode (show all sub-menus in one large tree). * 2002-11-06 Petr Baudis @@ -15,14 +15,16 @@ #include #include #include +#include #include #include -#include +#include "list.h" #include "lkc.h" #include "lxdialog/dialog.h" +#include "mnconf-common.h" -static const char mconf_readme[] = N_( +static const char mconf_readme[] = "Overview\n" "--------\n" "This interface lets you select features and parameters for the build.\n" @@ -159,6 +161,12 @@ static const char mconf_readme[] = N_( "(especially with a larger number of unrolled categories) than the\n" "default mode.\n" "\n" + +"Search\n" +"-------\n" +"Pressing the forward-slash (/) anywhere brings up a search dialog box.\n" +"\n" + "Different color themes available\n" "--------------------------------\n" "It is possible to select different color themes using the variable\n" @@ -171,37 +179,37 @@ static const char mconf_readme[] = N_( " blackbg => selects a color scheme with black background\n" " classic => theme with blue background. The classic look\n" " bluetitle => an LCD friendly version of classic. (default)\n" -"\n"), -menu_instructions[] = N_( +"\n", +menu_instructions[] = "Arrow keys navigate the menu. " " selects submenus ---> (or empty submenus ----). " "Highlighted letters are hotkeys. " - "Pressing selects a feature, while excludes a feature. " + "Pressing selects a feature, while excludes a features. " "Press to exit, for Help, for Search. " - "Legend: [*] feature is selected [ ] feature is excluded"), -radiolist_instructions[] = N_( + "Legend: [*] feature is selected [ ] feature is excluded", +radiolist_instructions[] = "Use the arrow keys to navigate this window or " "press the hotkey of the item you wish to select " "followed by the . " - "Press for additional information about this option."), -inputbox_instructions_int[] = N_( + "Press for additional information about this option.", +inputbox_instructions_int[] = "Please enter a decimal value. " "Fractions will not be accepted. " - "Use the key to move from the input field to the buttons below it."), -inputbox_instructions_hex[] = N_( + "Use the key to move from the input field to the buttons below it.", +inputbox_instructions_hex[] = "Please enter a hexadecimal value. " - "Use the key to move from the input field to the buttons below it."), -inputbox_instructions_string[] = N_( + "Use the key to move from the input field to the buttons below it.", +inputbox_instructions_string[] = "Please enter a string value. " - "Use the key to move from the input field to the buttons below it."), -setmod_text[] = N_( + "Use the key to move from the input field to the buttons below it.", +setmod_text[] = "This feature depends on another which has been configured as a module.\n" - "As a result, this feature will be built as a module."), -load_config_text[] = N_( + "As a result, this feature will be built as a module.", +load_config_text[] = "Enter the name of the configuration file you wish to load. " "Accept the name shown to restore the configuration you " - "last retrieved. Leave blank to abort."), -load_config_help[] = N_( + "last retrieved. Leave blank to abort.", +load_config_help[] = "\n" "For various reasons, one may wish to keep several different\n" "configurations available on a single machine.\n" @@ -211,11 +219,11 @@ load_config_help[] = N_( "configuration.\n" "\n" "If you are uncertain, then you have probably never used alternate\n" - "configuration files. You should therefore leave this blank to abort.\n"), -save_config_text[] = N_( + "configuration files. You should therefore leave this blank to abort.\n", +save_config_text[] = "Enter a filename to which this configuration should be saved " - "as an alternate. Leave blank to abort."), -save_config_help[] = N_( + "as an alternate. Leave blank to abort.", +save_config_help[] = "\n" "For various reasons, one may wish to keep different configurations\n" "available on a single machine.\n" @@ -225,8 +233,8 @@ save_config_help[] = N_( "configuration options you have selected at that time.\n" "\n" "If you are uncertain what all this means then you should probably\n" - "leave this blank.\n"), -search_help[] = N_( + "leave this blank.\n", +search_help[] = "\n" "Search for symbols and display their relations.\n" "Regular expressions are allowed.\n" @@ -241,7 +249,7 @@ search_help[] = N_( " -> PCI support (PCI [=y])\n" "(1) -> PCI access mode ( [=y])\n" " Defined at drivers/pci/Kconfig:47\n" - " Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\n" + " Depends on: X86_LOCAL_APIC && X86_IO_APIC\n" " Selects: LIBCRC32\n" " Selected by: BAR [=n]\n" "-----------------------------------------------------------------\n" @@ -271,7 +279,7 @@ search_help[] = N_( "Examples: USB => find all symbols containing USB\n" " ^USB => find all symbols starting with USB\n" " USB$ => find all symbols ending with USB\n" - "\n"); + "\n"; static int indent; static struct menu *current_menu; @@ -282,32 +290,17 @@ static int save_and_exit; static int silent; static void conf(struct menu *menu, struct menu *active_menu); -static void conf_choice(struct menu *menu); -static void conf_string(struct menu *menu); -static void conf_load(void); -static void conf_save(void); -static int show_textbox_ext(const char *title, char *text, int r, int c, - int *keys, int *vscroll, int *hscroll, - update_text_fn update_text, void *data); -static void show_textbox(const char *title, const char *text, int r, int c); -static void show_helptext(const char *title, const char *text); -static void show_help(struct menu *menu); static char filename[PATH_MAX+1]; static void set_config_filename(const char *config_filename) { static char menu_backtitle[PATH_MAX+128]; - int size; - size = snprintf(menu_backtitle, sizeof(menu_backtitle), - "%s - %s", config_filename, rootmenu.prompt->text); - if (size >= sizeof(menu_backtitle)) - menu_backtitle[sizeof(menu_backtitle)-1] = '\0'; + snprintf(menu_backtitle, sizeof(menu_backtitle), "%s - %s", + config_filename, rootmenu.prompt->text); set_dialog_backtitle(menu_backtitle); - size = snprintf(filename, sizeof(filename), "%s", config_filename); - if (size >= sizeof(filename)) - filename[sizeof(filename)-1] = '\0'; + snprintf(filename, sizeof(filename), "%s", config_filename); } struct subtitle_part { @@ -355,37 +348,35 @@ static void reset_subtitle(void) set_dialog_subtitles(subtitles); } -struct search_data { - struct list_head *head; - struct menu **targets; - int *keys; -}; +static int show_textbox_ext(const char *title, const char *text, int r, int c, + int *vscroll, int *hscroll, + int (*extra_key_cb)(int, size_t, size_t, void *), + void *data) +{ + dialog_clear(); + return dialog_textbox(title, text, r, c, vscroll, hscroll, + extra_key_cb, data); +} -static void update_text(char *buf, size_t start, size_t end, void *_data) +static void show_textbox(const char *title, const char *text, int r, int c) { - struct search_data *data = _data; - struct jump_key *pos; - int k = 0; + show_textbox_ext(title, text, r, c, NULL, NULL, NULL, NULL); +} - list_for_each_entry(pos, data->head, entries) { - if (pos->offset >= start && pos->offset < end) { - char header[4]; +static void show_helptext(const char *title, const char *text) +{ + show_textbox(title, text, 0, 0); +} - if (k < JUMP_NB) { - int key = '0' + (pos->index % JUMP_NB) + 1; +static void show_help(struct menu *menu) +{ + struct gstr help = str_new(); - sprintf(header, "(%c)", key); - data->keys[k] = key; - data->targets[k] = pos->target; - k++; - } else { - sprintf(header, " "); - } + help.max_width = getmaxx(stdscr) - 10; + menu_get_ext_help(menu, &help); - memcpy(buf + pos->offset, header, sizeof(header) - 1); - } - } - data->keys[k] = 0; + show_helptext(menu_get_prompt(menu), str_get(&help)); + str_free(&help); } static void search_conf(void) @@ -400,19 +391,19 @@ static void search_conf(void) struct subtitle_part stpart; title = str_new(); - str_printf( &title, _("Enter (sub)string or regexp to search for " - "(with or without \"%s\")"), CONFIG_); + str_printf( &title, "Enter (sub)string or regexp to search for " + "(with or without \"%s\")", CONFIG_); again: dialog_clear(); - dres = dialog_inputbox(_("Search Configuration Parameter"), + dres = dialog_inputbox("Search Configuration Parameter", str_get(&title), 10, 75, ""); switch (dres) { case 0: break; case 1: - show_helptext(_("Search Configuration"), search_help); + show_helptext("Search Configuration", search_help); goto again; default: str_free(&title); @@ -432,27 +423,23 @@ again: sym_arr = sym_re_search(dialog_input); do { LIST_HEAD(head); - struct menu *targets[JUMP_NB]; - int keys[JUMP_NB + 1], i; struct search_data data = { .head = &head, - .targets = targets, - .keys = keys, }; struct jump_key *pos, *tmp; + jump_key_char = 0; res = get_relations_str(sym_arr, &head); set_subtitle(); - dres = show_textbox_ext(_("Search Results"), (char *) - str_get(&res), 0, 0, keys, &vscroll, - &hscroll, &update_text, (void *) - &data); + dres = show_textbox_ext("Search Results", str_get(&res), 0, 0, + &vscroll, &hscroll, + handle_search_keys, &data); again = false; - for (i = 0; i < JUMP_NB && keys[i]; i++) - if (dres == keys[i]) { - conf(targets[i]->parent, targets[i]); - again = true; - } + if (dres >= '1' && dres <= '9') { + assert(data.target != NULL); + conf(data.target->parent, data.target); + again = true; + } str_free(&res); list_for_each_entry_safe(pos, tmp, &head, entries) free(pos); @@ -491,7 +478,6 @@ static void build_conf(struct menu *menu) switch (prop->type) { case P_MENU: child_count++; - prompt = _(prompt); if (single_menu_mode) { item_make("%s%*c%s", menu->data ? "-->" : "++>", @@ -508,7 +494,7 @@ static void build_conf(struct menu *menu) case P_COMMENT: if (prompt) { child_count++; - item_make(" %*c*** %s ***", indent + 1, ' ', _(prompt)); + item_make(" %*c*** %s ***", indent + 1, ' ', prompt); item_set_tag(':'); item_set_data(menu); } @@ -516,7 +502,7 @@ static void build_conf(struct menu *menu) default: if (prompt) { child_count++; - item_make("---%*c%s", indent + 1, ' ', _(prompt)); + item_make("---%*c%s", indent + 1, ' ', prompt); item_set_tag(':'); item_set_data(menu); } @@ -538,7 +524,7 @@ static void build_conf(struct menu *menu) } val = sym_get_tristate_value(sym); - if (sym_is_changable(sym)) { + if (sym_is_changeable(sym)) { switch (type) { case S_BOOLEAN: item_make("[%c]", val == no ? ' ' : '*'); @@ -560,10 +546,10 @@ static void build_conf(struct menu *menu) item_set_data(menu); } - item_add_str("%*c%s", indent + 1, ' ', _(menu_get_prompt(menu))); + item_add_str("%*c%s", indent + 1, ' ', menu_get_prompt(menu)); if (val == yes) { if (def_menu) { - item_add_str(" (%s)", _(menu_get_prompt(def_menu))); + item_add_str(" (%s)", menu_get_prompt(def_menu)); item_add_str(" --->"); if (def_menu->list) { indent += 2; @@ -575,7 +561,7 @@ static void build_conf(struct menu *menu) } } else { if (menu == current_menu) { - item_make("---%*c%s", indent + 1, ' ', _(menu_get_prompt(menu))); + item_make("---%*c%s", indent + 1, ' ', menu_get_prompt(menu)); item_set_tag(':'); item_set_data(menu); goto conf_childs; @@ -589,7 +575,7 @@ static void build_conf(struct menu *menu) } else { switch (type) { case S_BOOLEAN: - if (sym_is_changable(sym)) + if (sym_is_changeable(sym)) item_make("[%c]", val == no ? ' ' : '*'); else item_make("-%c-", val == no ? ' ' : '*'); @@ -602,7 +588,7 @@ static void build_conf(struct menu *menu) case mod: ch = 'M'; break; default: ch = ' '; break; } - if (sym_is_changable(sym)) { + if (sym_is_changeable(sym)) { if (sym->rev_dep.tri == mod) item_make("{%c}", ch); else @@ -618,17 +604,17 @@ static void build_conf(struct menu *menu) tmp = indent - tmp + 4; if (tmp < 0) tmp = 0; - item_add_str("%*c%s%s", tmp, ' ', _(menu_get_prompt(menu)), - (sym_has_value(sym) || !sym_is_changable(sym)) ? - "" : _(" (NEW)")); + item_add_str("%*c%s%s", tmp, ' ', menu_get_prompt(menu), + (sym_has_value(sym) || !sym_is_changeable(sym)) ? + "" : " (NEW)"); item_set_tag('s'); item_set_data(menu); goto conf_childs; } } - item_add_str("%*c%s%s", indent + 1, ' ', _(menu_get_prompt(menu)), - (sym_has_value(sym) || !sym_is_changable(sym)) ? - "" : _(" (NEW)")); + item_add_str("%*c%s%s", indent + 1, ' ', menu_get_prompt(menu), + (sym_has_value(sym) || !sym_is_changeable(sym)) ? + "" : " (NEW)"); if (menu->prompt->type == P_MENU) { item_add_str(" %s", menu_is_empty(menu) ? "----" : "--->"); return; @@ -642,164 +628,9 @@ conf_childs: indent -= doint; } -static void conf(struct menu *menu, struct menu *active_menu) -{ - struct menu *submenu; - const char *prompt = menu_get_prompt(menu); - struct subtitle_part stpart; - struct symbol *sym; - int res; - int s_scroll = 0; - - if (menu != &rootmenu) - stpart.text = menu_get_prompt(menu); - else - stpart.text = NULL; - list_add_tail(&stpart.entries, &trail); - - while (1) { - item_reset(); - current_menu = menu; - build_conf(menu); - if (!child_count) - break; - set_subtitle(); - dialog_clear(); - res = dialog_menu(prompt ? _(prompt) : _("Main Menu"), - _(menu_instructions), - active_menu, &s_scroll); - if (res == 1 || res == KEY_ESC || res == -ERRDISPLAYTOOSMALL) - break; - if (item_count() != 0) { - if (!item_activate_selected()) - continue; - if (!item_tag()) - continue; - } - submenu = item_data(); - active_menu = item_data(); - if (submenu) - sym = submenu->sym; - else - sym = NULL; - - switch (res) { - case 0: - switch (item_tag()) { - case 'm': - if (single_menu_mode) - submenu->data = (void *) (long) !submenu->data; - else - conf(submenu, NULL); - break; - case 't': - if (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes) - conf_choice(submenu); - else if (submenu->prompt->type == P_MENU) - conf(submenu, NULL); - break; - case 's': - conf_string(submenu); - break; - } - break; - case 2: - if (sym) - show_help(submenu); - else { - reset_subtitle(); - show_helptext(_("README"), _(mconf_readme)); - } - break; - case 3: - reset_subtitle(); - conf_save(); - break; - case 4: - reset_subtitle(); - conf_load(); - break; - case 5: - if (item_is_tag('t')) { - if (sym_set_tristate_value(sym, yes)) - break; - if (sym_set_tristate_value(sym, mod)) - show_textbox(NULL, setmod_text, 6, 74); - } - break; - case 6: - if (item_is_tag('t')) - sym_set_tristate_value(sym, no); - break; - case 7: - if (item_is_tag('t')) - sym_set_tristate_value(sym, mod); - break; - case 8: - if (item_is_tag('t')) - sym_toggle_tristate_value(sym); - else if (item_is_tag('m')) - conf(submenu, NULL); - break; - case 9: - search_conf(); - break; - case 10: - show_all_options = !show_all_options; - break; - } - } - - list_del(trail.prev); -} - -static int show_textbox_ext(const char *title, char *text, int r, int c, int - *keys, int *vscroll, int *hscroll, update_text_fn - update_text, void *data) -{ - dialog_clear(); - return dialog_textbox(title, text, r, c, keys, vscroll, hscroll, - update_text, data); -} - -static void show_textbox(const char *title, const char *text, int r, int c) -{ - show_textbox_ext(title, (char *) text, r, c, (int []) {0}, NULL, NULL, - NULL, NULL); -} - -static void show_helptext(const char *title, const char *text) -{ - show_textbox(title, text, 0, 0); -} - -static void conf_message_callback(const char *fmt, va_list ap) -{ - char buf[PATH_MAX+1]; - - vsnprintf(buf, sizeof(buf), fmt, ap); - if (save_and_exit) { - if (!silent) - printf("%s", buf); - } else { - show_textbox(NULL, buf, 6, 60); - } -} - -static void show_help(struct menu *menu) -{ - struct gstr help = str_new(); - - help.max_width = getmaxx(stdscr) - 10; - menu_get_ext_help(menu, &help); - - show_helptext(_(menu_get_prompt(menu)), str_get(&help)); - str_free(&help); -} - static void conf_choice(struct menu *menu) { - const char *prompt = _(menu_get_prompt(menu)); + const char *prompt = menu_get_prompt(menu); struct menu *child; struct symbol *active; @@ -814,9 +645,9 @@ static void conf_choice(struct menu *menu) if (!menu_is_visible(child)) continue; if (child->sym) - item_make("%s", _(menu_get_prompt(child))); + item_make("%s", menu_get_prompt(child)); else { - item_make("*** %s ***", _(menu_get_prompt(child))); + item_make("*** %s ***", menu_get_prompt(child)); item_set_tag(':'); } item_set_data(child); @@ -826,11 +657,11 @@ static void conf_choice(struct menu *menu) item_set_tag('X'); } dialog_clear(); - res = dialog_checklist(prompt ? _(prompt) : _("Main Menu"), - _(radiolist_instructions), - MENUBOX_HEIGTH_MIN, + res = dialog_checklist(prompt ? prompt : "Main Menu", + radiolist_instructions, + MENUBOX_HEIGHT_MIN, MENUBOX_WIDTH_MIN, - CHECKLIST_HEIGTH_MIN); + CHECKLIST_HEIGHT_MIN); selected = item_activate_selected(); switch (res) { case 0: @@ -868,26 +699,26 @@ static void conf_string(struct menu *menu) switch (sym_get_type(menu->sym)) { case S_INT: - heading = _(inputbox_instructions_int); + heading = inputbox_instructions_int; break; case S_HEX: - heading = _(inputbox_instructions_hex); + heading = inputbox_instructions_hex; break; case S_STRING: - heading = _(inputbox_instructions_string); + heading = inputbox_instructions_string; break; default: - heading = _("Internal mconf error!"); + heading = "Internal mconf error!"; } dialog_clear(); - res = dialog_inputbox(prompt ? _(prompt) : _("Main Menu"), + res = dialog_inputbox(prompt ? prompt : "Main Menu", heading, 10, 75, sym_get_string_value(menu->sym)); switch (res) { case 0: if (sym_set_string_value(menu->sym, dialog_input_result)) return; - show_textbox(NULL, _("You have made an invalid entry."), 5, 43); + show_textbox(NULL, "You have made an invalid entry.", 5, 43); break; case 1: show_help(menu); @@ -912,13 +743,13 @@ static void conf_load(void) return; if (!conf_read(dialog_input_result)) { set_config_filename(dialog_input_result); - sym_set_change_count(1); + conf_set_changed(true); return; } - show_textbox(NULL, _("File does not exist!"), 5, 38); + show_textbox(NULL, "File does not exist!", 5, 38); break; case 1: - show_helptext(_("Load Alternate Configuration"), load_config_help); + show_helptext("Load Alternate Configuration", load_config_help); break; case KEY_ESC: return; @@ -941,10 +772,10 @@ static void conf_save(void) set_config_filename(dialog_input_result); return; } - show_textbox(NULL, _("Can't create file! Probably a nonexistent directory."), 5, 60); + show_textbox(NULL, "Can't create file!", 5, 60); break; case 1: - show_helptext(_("Save Alternate Configuration"), save_config_help); + show_helptext("Save Alternate Configuration", save_config_help); break; case KEY_ESC: return; @@ -952,6 +783,127 @@ static void conf_save(void) } } +static void conf(struct menu *menu, struct menu *active_menu) +{ + struct menu *submenu; + const char *prompt = menu_get_prompt(menu); + struct subtitle_part stpart; + struct symbol *sym; + int res; + int s_scroll = 0; + + if (menu != &rootmenu) + stpart.text = menu_get_prompt(menu); + else + stpart.text = NULL; + list_add_tail(&stpart.entries, &trail); + + while (1) { + item_reset(); + current_menu = menu; + build_conf(menu); + if (!child_count) + break; + set_subtitle(); + dialog_clear(); + res = dialog_menu(prompt ? prompt : "Main Menu", + menu_instructions, + active_menu, &s_scroll); + if (res == 1 || res == KEY_ESC || res == -ERRDISPLAYTOOSMALL) + break; + if (item_count() != 0) { + if (!item_activate_selected()) + continue; + if (!item_tag()) + continue; + } + submenu = item_data(); + active_menu = item_data(); + if (submenu) + sym = submenu->sym; + else + sym = NULL; + + switch (res) { + case 0: + switch (item_tag()) { + case 'm': + if (single_menu_mode) + submenu->data = (void *) (long) !submenu->data; + else + conf(submenu, NULL); + break; + case 't': + if (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes) + conf_choice(submenu); + else if (submenu->prompt->type == P_MENU) + conf(submenu, NULL); + break; + case 's': + conf_string(submenu); + break; + } + break; + case 2: + if (sym) + show_help(submenu); + else { + reset_subtitle(); + show_helptext("README", mconf_readme); + } + break; + case 3: + reset_subtitle(); + conf_save(); + break; + case 4: + reset_subtitle(); + conf_load(); + break; + case 5: + if (item_is_tag('t')) { + if (sym_set_tristate_value(sym, yes)) + break; + if (sym_set_tristate_value(sym, mod)) + show_textbox(NULL, setmod_text, 6, 74); + } + break; + case 6: + if (item_is_tag('t')) + sym_set_tristate_value(sym, no); + break; + case 7: + if (item_is_tag('t')) + sym_set_tristate_value(sym, mod); + break; + case 8: + if (item_is_tag('t')) + sym_toggle_tristate_value(sym); + else if (item_is_tag('m')) + conf(submenu, NULL); + break; + case 9: + search_conf(); + break; + case 10: + show_all_options = !show_all_options; + break; + } + } + + list_del(trail.prev); +} + +static void conf_message_callback(const char *s) +{ + if (save_and_exit) { + if (!silent) + printf("%s", s); + } else { + show_textbox(NULL, s, 6, 60); + } +} + static int handle_exit(void) { int res; @@ -961,8 +913,8 @@ static int handle_exit(void) dialog_clear(); if (conf_get_changed()) res = dialog_yesno(NULL, - _("Do you wish to save your new configuration?\n" - "(Press to continue Buildroot configuration.)"), + "Do you wish to save your new configuration?\n" + "(Press to continue Buildroot configuration.)", 6, 60); else res = -1; @@ -972,26 +924,27 @@ static int handle_exit(void) switch (res) { case 0: if (conf_write(filename)) { - fprintf(stderr, _("\n\n" + fprintf(stderr, "\n\n" "Error while writing of the configuration.\n" "Your configuration changes were NOT saved." - "\n\n")); + "\n\n"); return 1; } + conf_write_autoconf(0); /* fall through */ case -1: if (!silent) - printf(_("\n\n" + printf("\n\n" "*** End of the configuration.\n" "*** Execute 'make' to start the build or try 'make help'." - "\n\n")); + "\n\n"); res = 0; break; default: if (!silent) - fprintf(stderr, _("\n\n" + fprintf(stderr, "\n\n" "Your configuration changes were NOT saved." - "\n\n")); + "\n\n"); if (res != KEY_ESC) res = 0; } @@ -1009,10 +962,6 @@ int main(int ac, char **av) char *mode; int res; - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); - signal(SIGINT, sig_handler); if (ac > 1 && strcmp(av[1], "-s") == 0) { @@ -1031,8 +980,8 @@ int main(int ac, char **av) } if (init_dialog(NULL)) { - fprintf(stderr, N_("Your display is too small to run Menuconfig!\n")); - fprintf(stderr, N_("It must be at least 19 lines by 80 columns.\n")); + fprintf(stderr, "Your display is too small to run Menuconfig!\n"); + fprintf(stderr, "It must be at least 19 lines by 80 columns.\n"); return 1; } diff --git a/support/kconfig/menu.c b/support/kconfig/menu.c index 5c5c1374b1..3b822cd110 100644 --- a/support/kconfig/menu.c +++ b/support/kconfig/menu.c @@ -1,6 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ #include @@ -9,20 +9,19 @@ #include #include "lkc.h" +#include "internal.h" +#include "list.h" static const char nohelp_text[] = "There is no help available for this option."; struct menu rootmenu; static struct menu **last_entry_ptr; -struct file *file_list; -struct file *current_file; - void menu_warn(struct menu *menu, const char *fmt, ...) { va_list ap; va_start(ap, fmt); - fprintf(stderr, "%s:%d:warning: ", menu->file->name, menu->lineno); + fprintf(stderr, "%s:%d:warning: ", menu->filename, menu->lineno); vfprintf(stderr, fmt, ap); fprintf(stderr, "\n"); va_end(ap); @@ -32,7 +31,7 @@ static void prop_warn(struct property *prop, const char *fmt, ...) { va_list ap; va_start(ap, fmt); - fprintf(stderr, "%s:%d:warning: ", prop->file->name, prop->lineno); + fprintf(stderr, "%s:%d:warning: ", prop->filename, prop->lineno); vfprintf(stderr, fmt, ap); fprintf(stderr, "\n"); va_end(ap); @@ -52,20 +51,23 @@ void menu_add_entry(struct symbol *sym) memset(menu, 0, sizeof(*menu)); menu->sym = sym; menu->parent = current_menu; - menu->file = current_file; - menu->lineno = zconf_lineno(); + menu->filename = cur_filename; + menu->lineno = cur_lineno; *last_entry_ptr = menu; last_entry_ptr = &menu->next; current_entry = menu; - if (sym) + if (sym) { menu_add_symbol(P_SYMBOL, sym, NULL); + list_add_tail(&menu->link, &sym->menus); + } } struct menu *menu_add_menu(void) { last_entry_ptr = ¤t_entry->list; - return current_menu = current_entry; + current_menu = current_entry; + return current_menu; } void menu_end_menu(void) @@ -124,61 +126,76 @@ void menu_set_type(int type) sym_type_name(sym->type), sym_type_name(type)); } -static struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep) +static struct property *menu_add_prop(enum prop_type type, struct expr *expr, + struct expr *dep) { - struct property *prop = prop_alloc(type, current_entry->sym); + struct property *prop; + prop = xmalloc(sizeof(*prop)); + memset(prop, 0, sizeof(*prop)); + prop->type = type; + prop->filename = cur_filename; + prop->lineno = cur_lineno; prop->menu = current_entry; prop->expr = expr; prop->visible.expr = dep; - if (prompt) { - if (isspace(*prompt)) { - prop_warn(prop, "leading whitespace ignored"); - while (isspace(*prompt)) - prompt++; - } - if (current_entry->prompt && current_entry != &rootmenu) - prop_warn(prop, "prompt redefined"); + /* append property to the prop list of symbol */ + if (current_entry->sym) { + struct property **propp; - /* Apply all upper menus' visibilities to actual prompts. */ - if(type == P_PROMPT) { - struct menu *menu = current_entry; + for (propp = ¤t_entry->sym->prop; + *propp; + propp = &(*propp)->next) + ; + *propp = prop; + } - while ((menu = menu->parent) != NULL) { - struct expr *dup_expr; + return prop; +} - if (!menu->visibility) - continue; - /* - * Do not add a reference to the - * menu's visibility expression but - * use a copy of it. Otherwise the - * expression reduction functions - * will modify expressions that have - * multiple references which can - * cause unwanted side effects. - */ - dup_expr = expr_copy(menu->visibility); +struct property *menu_add_prompt(enum prop_type type, char *prompt, + struct expr *dep) +{ + struct property *prop = menu_add_prop(type, NULL, dep); - prop->visible.expr - = expr_alloc_and(prop->visible.expr, - dup_expr); - } - } + if (isspace(*prompt)) { + prop_warn(prop, "leading whitespace ignored"); + while (isspace(*prompt)) + prompt++; + } + if (current_entry->prompt) + prop_warn(prop, "prompt redefined"); + + /* Apply all upper menus' visibilities to actual prompts. */ + if (type == P_PROMPT) { + struct menu *menu = current_entry; + + while ((menu = menu->parent) != NULL) { + struct expr *dup_expr; - current_entry->prompt = prop; + if (!menu->visibility) + continue; + /* + * Do not add a reference to the menu's visibility + * expression but use a copy of it. Otherwise the + * expression reduction functions will modify + * expressions that have multiple references which + * can cause unwanted side effects. + */ + dup_expr = expr_copy(menu->visibility); + + prop->visible.expr = expr_alloc_and(prop->visible.expr, + dup_expr); + } } + + current_entry->prompt = prop; prop->text = prompt; return prop; } -struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep) -{ - return menu_add_prop(type, prompt, NULL, dep); -} - void menu_add_visibility(struct expr *expr) { current_entry->visibility = expr_alloc_and(current_entry->visibility, @@ -187,40 +204,12 @@ void menu_add_visibility(struct expr *expr) void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep) { - menu_add_prop(type, NULL, expr, dep); + menu_add_prop(type, expr, dep); } void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep) { - menu_add_prop(type, NULL, expr_alloc_symbol(sym), dep); -} - -void menu_add_option(int token, char *arg) -{ - switch (token) { - case T_OPT_MODULES: - if (modules_sym) - zconf_error("symbol '%s' redefines option 'modules'" - " already defined by symbol '%s'", - current_entry->sym->name, - modules_sym->name - ); - modules_sym = current_entry->sym; - break; - case T_OPT_DEFCONFIG_LIST: - if (!sym_defconfig_list) - sym_defconfig_list = current_entry->sym; - else if (sym_defconfig_list != current_entry->sym) - zconf_error("trying to redefine defconfig symbol"); - sym_defconfig_list->flags |= SYMBOL_AUTO; - break; - case T_OPT_ENV: - prop_add_env(arg); - break; - case T_OPT_ALLNOCONFIG_Y: - current_entry->sym->flags |= SYMBOL_ALLNOCONFIG_Y; - break; - } + menu_add_prop(type, expr_alloc_symbol(sym), dep); } static int menu_validate_number(struct symbol *sym, struct symbol *sym2) @@ -293,7 +282,7 @@ static void sym_check_prop(struct symbol *sym) } } -void menu_finalize(struct menu *parent) +static void _menu_finalize(struct menu *parent, bool inside_choice) { struct menu *menu, *last_menu; struct symbol *sym; @@ -307,7 +296,12 @@ void menu_finalize(struct menu *parent) * and propagate parent dependencies before moving on. */ - if (sym && sym_is_choice(sym)) { + bool is_choice = false; + + if (sym && sym_is_choice(sym)) + is_choice = true; + + if (is_choice) { if (sym->type == S_UNKNOWN) { /* find the first choice value to find out choice type */ current_entry = parent; @@ -318,12 +312,6 @@ void menu_finalize(struct menu *parent) } } } - /* set the type of the remaining choice values */ - for (menu = parent->list; menu; menu = menu->next) { - current_entry = menu; - if (menu->sym && menu->sym->type == S_UNKNOWN) - menu_set_type(sym->type); - } /* * Use the choice itself as the parent dependency of @@ -332,12 +320,10 @@ void menu_finalize(struct menu *parent) * choice value symbols. */ parentdep = expr_alloc_symbol(sym); - } else if (parent->prompt) - /* Menu node for 'menu' */ - parentdep = parent->prompt->visible.expr; - else - /* Menu node for 'if' */ + } else { + /* Menu node for 'menu', 'if' */ parentdep = parent->dep; + } /* For each child menu node... */ for (menu = parent->list; menu; menu = menu->next) { @@ -413,7 +399,7 @@ void menu_finalize(struct menu *parent) } } - if (sym && sym_is_choice(sym)) + if (is_choice) expr_free(parentdep); /* @@ -421,8 +407,8 @@ void menu_finalize(struct menu *parent) * moving on */ for (menu = parent->list; menu; menu = menu->next) - menu_finalize(menu); - } else if (sym) { + _menu_finalize(menu, is_choice); + } else if (!inside_choice && sym) { /* * Automatic submenu creation. If sym is a symbol and A, B, C, * ... are consecutive items (symbols, menus, ifs, etc.) that @@ -482,7 +468,7 @@ void menu_finalize(struct menu *parent) /* Superset, put in submenu */ expr_free(dep2); next: - menu_finalize(menu); + _menu_finalize(menu, false); menu->parent = parent; last_menu = menu; } @@ -580,9 +566,6 @@ void menu_finalize(struct menu *parent) if (sym->type == S_UNKNOWN) menu_warn(parent, "config symbol defined without type"); - if (sym_is_choice(sym) && !parent->prompt) - menu_warn(parent, "choice must have a prompt"); - /* Check properties connected to this symbol */ sym_check_prop(sym); sym->flags |= SYMBOL_WARNED; @@ -604,6 +587,11 @@ void menu_finalize(struct menu *parent) } } +void menu_finalize(void) +{ + _menu_finalize(&rootmenu, false); +} + bool menu_has_prompt(struct menu *menu) { if (!menu->prompt) @@ -674,11 +662,6 @@ const char *menu_get_prompt(struct menu *menu) return NULL; } -struct menu *menu_get_root_menu(struct menu *menu) -{ - return &rootmenu; -} - struct menu *menu_get_parent_menu(struct menu *menu) { enum prop_type type; @@ -691,17 +674,24 @@ struct menu *menu_get_parent_menu(struct menu *menu) return menu; } -bool menu_has_help(struct menu *menu) +static void get_def_str(struct gstr *r, struct menu *menu) { - return menu->help != NULL; + str_printf(r, "Defined at %s:%d\n", + menu->filename, menu->lineno); } -const char *menu_get_help(struct menu *menu) +static void get_dep_str(struct gstr *r, struct expr *expr, const char *prefix) { - if (menu->help) - return menu->help; - else - return ""; + if (!expr_is_yes(expr)) { + str_append(r, prefix); + expr_gstr_print(expr, r); + str_append(r, "\n"); + } +} + +int __attribute__((weak)) get_jump_key_char(void) +{ + return -1; } static void get_prompt_str(struct gstr *r, struct property *prop, @@ -711,66 +701,56 @@ static void get_prompt_str(struct gstr *r, struct property *prop, struct menu *submenu[8], *menu, *location = NULL; struct jump_key *jump = NULL; - str_printf(r, _("Prompt: %s\n"), _(prop->text)); - menu = prop->menu->parent; - for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent) { - bool accessible = menu_is_visible(menu); + str_printf(r, " Prompt: %s\n", prop->text); + + get_dep_str(r, prop->menu->dep, " Depends on: "); + /* + * Most prompts in Linux have visibility that exactly matches their + * dependencies. For these, we print only the dependencies to improve + * readability. However, prompts with inline "if" expressions and + * prompts with a parent that has a "visible if" expression have + * differing dependencies and visibility. In these rare cases, we + * print both. + */ + if (!expr_eq(prop->menu->dep, prop->visible.expr)) + get_dep_str(r, prop->visible.expr, " Visible if: "); + menu = prop->menu; + for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent) { submenu[i++] = menu; - if (location == NULL && accessible) + if (location == NULL && menu_is_visible(menu)) location = menu; } if (head && location) { jump = xmalloc(sizeof(struct jump_key)); - - if (menu_is_visible(prop->menu)) { - /* - * There is not enough room to put the hint at the - * beginning of the "Prompt" line. Put the hint on the - * last "Location" line even when it would belong on - * the former. - */ - jump->target = prop->menu; - } else - jump->target = location; - - if (list_empty(head)) - jump->index = 0; - else - jump->index = list_entry(head->prev, struct jump_key, - entries)->index + 1; - + jump->target = location; list_add_tail(&jump->entries, head); } - if (i > 0) { - str_printf(r, _(" Location:\n")); - for (j = 4; --i >= 0; j += 2) { - menu = submenu[i]; - if (jump && menu == location) - jump->offset = strlen(r->s); - str_printf(r, "%*c-> %s", j, ' ', - _(menu_get_prompt(menu))); - if (menu->sym) { - str_printf(r, " (%s [=%s])", menu->sym->name ? - menu->sym->name : _(""), - sym_get_string_value(menu->sym)); - } - str_append(r, "\n"); + str_printf(r, " Location:\n"); + for (j = 0; --i >= 0; j++) { + int jk = -1; + int indent = 2 * j + 4; + + menu = submenu[i]; + if (jump && menu == location) { + jump->offset = strlen(r->s); + jk = get_jump_key_char(); } - } -} -/* - * get property of type P_SYMBOL - */ -static struct property *get_symbol_prop(struct symbol *sym) -{ - struct property *prop = NULL; + if (jk >= 0) { + str_printf(r, "(%c)", jk); + indent -= 3; + } - for_all_properties(sym, prop, P_SYMBOL) - break; - return prop; + str_printf(r, "%*c-> %s", indent, ' ', menu_get_prompt(menu)); + if (menu->sym) { + str_printf(r, " (%s [=%s])", menu->sym->name ? + menu->sym->name : "", + sym_get_string_value(menu->sym)); + } + str_append(r, "\n"); + } } static void get_symbol_props_str(struct gstr *r, struct symbol *sym, @@ -798,6 +778,7 @@ static void get_symbol_str(struct gstr *r, struct symbol *sym, struct list_head *head) { struct property *prop; + struct menu *menu; if (sym && sym->name) { str_printf(r, "Symbol: %s [=%s]\n", sym->name, @@ -812,32 +793,34 @@ static void get_symbol_str(struct gstr *r, struct symbol *sym, } } } - for_all_prompts(sym, prop) - get_prompt_str(r, prop, head); - - prop = get_symbol_prop(sym); - if (prop) { - str_printf(r, _(" Defined at %s:%d\n"), prop->menu->file->name, - prop->menu->lineno); - if (!expr_is_yes(prop->visible.expr)) { - str_append(r, _(" Depends on: ")); - expr_gstr_print(prop->visible.expr, r); - str_append(r, "\n"); + + /* Print the definitions with prompts before the ones without */ + list_for_each_entry(menu, &sym->menus, link) { + if (menu->prompt) { + get_def_str(r, menu); + get_prompt_str(r, menu->prompt, head); + } + } + + list_for_each_entry(menu, &sym->menus, link) { + if (!menu->prompt) { + get_def_str(r, menu); + get_dep_str(r, menu->dep, " Depends on: "); } } - get_symbol_props_str(r, sym, P_SELECT, _(" Selects: ")); + get_symbol_props_str(r, sym, P_SELECT, "Selects: "); if (sym->rev_dep.expr) { - expr_gstr_print_revdep(sym->rev_dep.expr, r, yes, " Selected by [y]:\n"); - expr_gstr_print_revdep(sym->rev_dep.expr, r, mod, " Selected by [m]:\n"); - expr_gstr_print_revdep(sym->rev_dep.expr, r, no, " Selected by [n]:\n"); + expr_gstr_print_revdep(sym->rev_dep.expr, r, yes, "Selected by [y]:\n"); + expr_gstr_print_revdep(sym->rev_dep.expr, r, mod, "Selected by [m]:\n"); + expr_gstr_print_revdep(sym->rev_dep.expr, r, no, "Selected by [n]:\n"); } - get_symbol_props_str(r, sym, P_IMPLY, _(" Implies: ")); + get_symbol_props_str(r, sym, P_IMPLY, "Implies: "); if (sym->implied.expr) { - expr_gstr_print_revdep(sym->implied.expr, r, yes, " Implied by [y]:\n"); - expr_gstr_print_revdep(sym->implied.expr, r, mod, " Implied by [m]:\n"); - expr_gstr_print_revdep(sym->implied.expr, r, no, " Implied by [n]:\n"); + expr_gstr_print_revdep(sym->implied.expr, r, yes, "Implied by [y]:\n"); + expr_gstr_print_revdep(sym->implied.expr, r, mod, "Implied by [m]:\n"); + expr_gstr_print_revdep(sym->implied.expr, r, no, "Implied by [n]:\n"); } str_append(r, "\n\n"); @@ -852,7 +835,7 @@ struct gstr get_relations_str(struct symbol **sym_arr, struct list_head *head) for (i = 0; sym_arr && (sym = sym_arr[i]); i++) get_symbol_str(&res, sym, head); if (!i) - str_append(&res, _("No matches found.\n")); + str_append(&res, "No matches found.\n"); return res; } @@ -862,12 +845,12 @@ void menu_get_ext_help(struct menu *menu, struct gstr *help) struct symbol *sym = menu->sym; const char *help_text = nohelp_text; - if (menu_has_help(menu)) { + if (menu->help) { if (sym->name) str_printf(help, "%s%s:\n\n", CONFIG_, sym->name); - help_text = menu_get_help(menu); + help_text = menu->help; } - str_printf(help, "%s\n", _(help_text)); + str_printf(help, "%s\n", help_text); if (sym) get_symbol_str(help, sym, NULL); } diff --git a/support/kconfig/merge_config.sh b/support/kconfig/merge_config.sh index 14917806a3..a5c03487c3 100755 --- a/support/kconfig/merge_config.sh +++ b/support/kconfig/merge_config.sh @@ -1,4 +1,6 @@ #!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# # merge_config.sh - Takes a list of config fragment values, and merges # them one by one. Provides warnings on overridden values, and specified # values that did not make it to the resulting .config file (due to missed @@ -10,21 +12,13 @@ # # Copyright (c) 2009-2010 Wind River Systems, Inc. # Copyright 2011 Linaro -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2 as -# published by the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. + +set -e clean_up() { rm -f $TMP_FILE - exit + rm -f $MERGE_FILE } -trap clean_up HUP INT TERM usage() { echo "Usage: $0 [OPTIONS] [CONFIG [...]]" @@ -32,18 +26,23 @@ usage() { echo " -m only merge the fragments, do not execute the make command" echo " -n use allnoconfig instead of alldefconfig" echo " -r list redundant entries when merging fragments" + echo " -y make builtin have precedence over modules" echo " -O dir to put generated output files. Consider setting \$KCONFIG_CONFIG instead." + echo " -s strict mode. Fail if the fragment redefines any value." + echo " -Q disable warning messages for overridden options." echo " -e colon-separated list of br2-external trees to use (optional)" echo - echo "Used prefix: '$CONFIG_PREFIX'. You can redefine it with \$CONFIG_ - environment variable." + echo "Used prefix: '$CONFIG_PREFIX'. You can redefine it with \$CONFIG_ environment variable." } RUNMAKE=true ALLTARGET=alldefconfig WARNREDUN=false +BUILTIN=false OUTPUT=. +STRICT=false CONFIG_PREFIX=${CONFIG_-CONFIG_} +WARNOVERRIDE=echo while true; do case $1 in @@ -66,6 +65,11 @@ while true; do shift continue ;; + "-y") + BUILTIN=true + shift + continue + ;; "-O") if [ -d $2 ];then OUTPUT=$(echo $2 | sed 's/\/*$//') @@ -76,6 +80,16 @@ while true; do shift 2 continue ;; + "-s") + STRICT=true + shift + continue + ;; + "-Q") + WARNOVERRIDE=true + shift + continue + ;; "-e") EXTERNAL_ARG="BR2_EXTERNAL=$2" shift 2 @@ -113,42 +127,65 @@ SED_CONFIG_EXP1="s/^\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\)=.*/\1/p" SED_CONFIG_EXP2="s/^# \(${CONFIG_PREFIX}[a-zA-Z0-9_]*\) is not set$/\1/p" TMP_FILE=$(mktemp -t .tmp.config.XXXXXXXXXX) +MERGE_FILE=$(mktemp -t .merge_tmp.config.XXXXXXXXXX) echo "Using $INITFILE as base" + +trap clean_up EXIT + cat $INITFILE > $TMP_FILE # Merge files, printing warnings on overridden values -for MERGE_FILE in $MERGE_LIST ; do - echo "Merging $MERGE_FILE" - if [ ! -r "$MERGE_FILE" ]; then - echo "The merge file '$MERGE_FILE' does not exist. Exit." >&2 +for ORIG_MERGE_FILE in $MERGE_LIST ; do + echo "Merging $ORIG_MERGE_FILE" + if [ ! -r "$ORIG_MERGE_FILE" ]; then + echo "The merge file '$ORIG_MERGE_FILE' does not exist. Exit." >&2 exit 1 fi + cat $ORIG_MERGE_FILE > $MERGE_FILE CFG_LIST=$(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $MERGE_FILE) for CFG in $CFG_LIST ; do grep -q -w $CFG $TMP_FILE || continue PREV_VAL=$(grep -w $CFG $TMP_FILE) NEW_VAL=$(grep -w $CFG $MERGE_FILE) - if [ "x$PREV_VAL" != "x$NEW_VAL" ] ; then - echo Value of $CFG is redefined by fragment $MERGE_FILE: - echo Previous value: $PREV_VAL - echo New value: $NEW_VAL - echo + BUILTIN_FLAG=false + if [ "$BUILTIN" = "true" ] && [ "${NEW_VAL#CONFIG_*=}" = "m" ] && [ "${PREV_VAL#CONFIG_*=}" = "y" ]; then + ${WARNOVERRIDE} Previous value: $PREV_VAL + ${WARNOVERRIDE} New value: $NEW_VAL + ${WARNOVERRIDE} -y passed, will not demote y to m + ${WARNOVERRIDE} + BUILTIN_FLAG=true + elif [ "x$PREV_VAL" != "x$NEW_VAL" ] ; then + ${WARNOVERRIDE} Value of $CFG is redefined by fragment $ORIG_MERGE_FILE: + ${WARNOVERRIDE} Previous value: $PREV_VAL + ${WARNOVERRIDE} New value: $NEW_VAL + ${WARNOVERRIDE} + if [ "$STRICT" = "true" ]; then + STRICT_MODE_VIOLATED=true + fi elif [ "$WARNREDUN" = "true" ]; then - echo Value of $CFG is redundant by fragment $MERGE_FILE: + ${WARNOVERRIDE} Value of $CFG is redundant by fragment $ORIG_MERGE_FILE: + fi + if [ "$BUILTIN_FLAG" = "false" ]; then + sed -i "/$CFG[ =]/d" $TMP_FILE + else + sed -i "/$CFG[ =]/d" $MERGE_FILE fi - sed -i "/$CFG[ =]/d" $TMP_FILE done cat $MERGE_FILE >> $TMP_FILE done +if [ "$STRICT_MODE_VIOLATED" = "true" ]; then + echo "The fragment redefined a value and strict mode had been passed." + exit 1 +fi + if [ "$RUNMAKE" = "false" ]; then cp -T -- "$TMP_FILE" "$KCONFIG_CONFIG" echo "#" echo "# merged configuration written to $KCONFIG_CONFIG (needs make)" echo "#" - clean_up exit fi @@ -170,7 +207,7 @@ make KCONFIG_ALLCONFIG=$TMP_FILE $EXTERNAL_ARG $OUTPUT_ARG $ALLTARGET for CFG in $(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $TMP_FILE); do REQUESTED_VAL=$(grep -w -e "$CFG" $TMP_FILE) - ACTUAL_VAL=$(grep -w -e "$CFG" "$KCONFIG_CONFIG") + ACTUAL_VAL=$(grep -w -e "$CFG" "$KCONFIG_CONFIG" || true) if [ "x$REQUESTED_VAL" != "x$ACTUAL_VAL" ] ; then echo "Value requested for $CFG not in final .config" echo "Requested value: $REQUESTED_VAL" @@ -178,5 +215,3 @@ for CFG in $(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $TMP_FILE); do echo "" fi done - -clean_up diff --git a/support/kconfig/mnconf-common.c b/support/kconfig/mnconf-common.c new file mode 100644 index 0000000000..18cb9a6c5a --- /dev/null +++ b/support/kconfig/mnconf-common.c @@ -0,0 +1,53 @@ +// SPDX-License-Identifier: GPL-2.0-only +#include "expr.h" +#include "list.h" +#include "mnconf-common.h" + +int jump_key_char; + +int next_jump_key(int key) +{ + if (key < '1' || key > '9') + return '1'; + + key++; + + if (key > '9') + key = '1'; + + return key; +} + +int handle_search_keys(int key, size_t start, size_t end, void *_data) +{ + struct search_data *data = _data; + struct jump_key *pos; + int index = 0; + + if (key < '1' || key > '9') + return 0; + + list_for_each_entry(pos, data->head, entries) { + index = next_jump_key(index); + + if (pos->offset < start) + continue; + + if (pos->offset >= end) + break; + + if (key == index) { + data->target = pos->target; + return 1; + } + } + + return 0; +} + +int get_jump_key_char(void) +{ + jump_key_char = next_jump_key(jump_key_char); + + return jump_key_char; +} diff --git a/support/kconfig/mnconf-common.h b/support/kconfig/mnconf-common.h new file mode 100644 index 0000000000..ab6292cc4b --- /dev/null +++ b/support/kconfig/mnconf-common.h @@ -0,0 +1,18 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +#ifndef MNCONF_COMMON_H +#define MNCONF_COMMON_H + +#include + +struct search_data { + struct list_head *head; + struct menu *target; +}; + +extern int jump_key_char; + +int next_jump_key(int key); +int handle_search_keys(int key, size_t start, size_t end, void *_data); +int get_jump_key_char(void); + +#endif /* MNCONF_COMMON_H */ diff --git a/support/kconfig/nconf-cfg.sh b/support/kconfig/nconf-cfg.sh new file mode 100755 index 0000000000..f871a2160e --- /dev/null +++ b/support/kconfig/nconf-cfg.sh @@ -0,0 +1,53 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +cflags=$1 +libs=$2 + +PKG="ncursesw menuw panelw" +PKG2="ncurses menu panel" + +if [ -n "$(command -v ${HOSTPKG_CONFIG})" ]; then + if ${HOSTPKG_CONFIG} --exists $PKG; then + ${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG} > ${libs} + exit 0 + fi + + if ${HOSTPKG_CONFIG} --exists $PKG2; then + ${HOSTPKG_CONFIG} --cflags ${PKG2} > ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG2} > ${libs} + exit 0 + fi +fi + +# Check the default paths in case pkg-config is not installed. +# (Even if it is installed, some distributions such as openSUSE cannot +# find ncurses by pkg-config.) +if [ -f /usr/include/ncursesw/ncurses.h ]; then + echo -D_GNU_SOURCE -I/usr/include/ncursesw > ${cflags} + echo -lncursesw -lmenuw -lpanelw > ${libs} + exit 0 +fi + +if [ -f /usr/include/ncurses/ncurses.h ]; then + echo -D_GNU_SOURCE -I/usr/include/ncurses > ${cflags} + echo -lncurses -lmenu -lpanel > ${libs} + exit 0 +fi + +if [ -f /usr/include/ncurses.h ]; then + echo -D_GNU_SOURCE > ${cflags} + echo -lncurses -lmenu -lpanel > ${libs} + exit 0 +fi + +echo >&2 "*" +echo >&2 "* Unable to find the ncurses package." +echo >&2 "* Install ncurses (ncurses-devel or libncurses-dev" +echo >&2 "* depending on your distribution)." +echo >&2 "*" +echo >&2 "* You may also need to install ${HOSTPKG_CONFIG} to find the" +echo >&2 "* ncurses installed in a non-default location." +echo >&2 "*" +exit 1 diff --git a/support/kconfig/nconf.c b/support/kconfig/nconf.c index 0031147798..9d22b0f319 100644 --- a/support/kconfig/nconf.c +++ b/support/kconfig/nconf.c @@ -1,21 +1,23 @@ +// SPDX-License-Identifier: GPL-2.0 /* - * Copyright (C) 2008 Nir Tzachar * * Derived from menuconfig. - * */ #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif #include +#include #include +#include "list.h" #include "lkc.h" +#include "mnconf-common.h" #include "nconf.h" #include -static const char nconf_global_help[] = N_( +static const char nconf_global_help[] = "Help windows\n" "------------\n" "o Global help: Unless in a data entry window, pressing will give \n" @@ -52,8 +54,8 @@ static const char nconf_global_help[] = N_( "\n" "Menu navigation keys\n" "----------------------------------------------------------------------\n" -"Linewise up \n" -"Linewise down \n" +"Linewise up \n" +"Linewise down \n" "Pagewise up \n" "Pagewise down \n" "First entry \n" @@ -130,8 +132,8 @@ static const char nconf_global_help[] = N_( "\n" "Note that this mode can eventually be a little more CPU expensive than\n" "the default mode, especially with a larger number of unfolded submenus.\n" -"\n"), -menu_no_f_instructions[] = N_( +"\n", +menu_no_f_instructions[] = "Legend: [*] built-in [ ] excluded module < > module capable.\n" "Submenus are designated by a trailing \"--->\", empty ones by \"----\".\n" "\n" @@ -147,8 +149,8 @@ menu_no_f_instructions[] = N_( "You do not have function keys support.\n" "Press <1> instead of , <2> instead of , etc.\n" "For verbose global help use key <1>.\n" -"For help related to the current menu entry press or .\n"), -menu_instructions[] = N_( +"For help related to the current menu entry press or .\n", +menu_instructions[] = "Legend: [*] built-in [ ] excluded module < > module capable.\n" "Submenus are designated by a trailing \"--->\", empty ones by \"----\".\n" "\n" @@ -163,30 +165,30 @@ menu_instructions[] = N_( "\n" "Pressing <1> may be used instead of , <2> instead of , etc.\n" "For verbose global help press .\n" -"For help related to the current menu entry press or .\n"), -radiolist_instructions[] = N_( +"For help related to the current menu entry press or .\n", +radiolist_instructions[] = "Press , , or to navigate a radiolist, select\n" "with .\n" "For help related to the current entry press or .\n" -"For global help press .\n"), -inputbox_instructions_int[] = N_( +"For global help press .\n", +inputbox_instructions_int[] = "Please enter a decimal value.\n" "Fractions will not be accepted.\n" -"Press to apply, to cancel."), -inputbox_instructions_hex[] = N_( +"Press to apply, to cancel.", +inputbox_instructions_hex[] = "Please enter a hexadecimal value.\n" -"Press to apply, to cancel."), -inputbox_instructions_string[] = N_( +"Press to apply, to cancel.", +inputbox_instructions_string[] = "Please enter a string value.\n" -"Press to apply, to cancel."), -setmod_text[] = N_( +"Press to apply, to cancel.", +setmod_text[] = "This feature depends on another feature which has been configured as a\n" -"module. As a result, the current feature will be built as a module too."), -load_config_text[] = N_( +"module. As a result, the current feature will be built as a module too.", +load_config_text[] = "Enter the name of the configuration file you wish to load.\n" "Accept the name shown to restore the configuration you last\n" -"retrieved. Leave empty to abort."), -load_config_help[] = N_( +"retrieved. Leave empty to abort.", +load_config_help[] = "For various reasons, one may wish to keep several different\n" "configurations available on a single machine.\n" "\n" @@ -194,11 +196,11 @@ load_config_help[] = N_( "default one, entering its name here will allow you to load and modify\n" "that configuration.\n" "\n" -"Leave empty to abort.\n"), -save_config_text[] = N_( +"Leave empty to abort.\n", +save_config_text[] = "Enter a filename to which this configuration should be saved\n" -"as an alternate. Leave empty to abort."), -save_config_help[] = N_( +"as an alternate. Leave empty to abort.", +save_config_help[] = "For various reasons, one may wish to keep several different\n" "configurations available on a single machine.\n" "\n" @@ -206,8 +208,8 @@ save_config_help[] = N_( "and use the current configuration as an alternate to whatever\n" "configuration options you have selected at that time.\n" "\n" -"Leave empty to abort.\n"), -search_help[] = N_( +"Leave empty to abort.\n", +search_help[] = "Search for symbols (configuration variable names CONFIG_*) and display\n" "their relations. Regular expressions are supported.\n" "Example: Search for \"^FOO\".\n" @@ -216,11 +218,11 @@ search_help[] = N_( "Symbol: FOO [ = m]\n" "Prompt: Foo bus is used to drive the bar HW\n" "Defined at drivers/pci/Kconfig:47\n" -"Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\n" +"Depends on: X86_LOCAL_APIC && X86_IO_APIC\n" "Location:\n" " -> Bus options (PCI, PCMCIA, EISA, ISA)\n" " -> PCI support (PCI [ = y])\n" -" -> PCI access mode ( [ = y])\n" +"(1) -> PCI access mode ( [ = y])\n" "Selects: LIBCRC32\n" "Selected by: BAR\n" "-----------------------------------------------------------------\n" @@ -231,9 +233,13 @@ search_help[] = N_( "o The 'Depends on:' line lists symbols that need to be defined for\n" " this symbol to be visible and selectable in the menu.\n" "o The 'Location:' lines tell, where in the menu structure this symbol\n" -" is located. A location followed by a [ = y] indicates that this is\n" -" a selectable menu item, and the current value is displayed inside\n" -" brackets.\n" +" is located.\n" +" A location followed by a [ = y] indicates that this is\n" +" a selectable menu item, and the current value is displayed inside\n" +" brackets.\n" +" Press the key in the (#) prefix to jump directly to that\n" +" location. You will be returned to the current search results\n" +" after exiting this new menu.\n" "o The 'Selects:' line tells, what symbol will be automatically selected\n" " if this symbol is selected (y or m).\n" "o The 'Selected by' line tells what symbol has selected this symbol.\n" @@ -244,7 +250,7 @@ search_help[] = N_( "USB => find all symbols containing USB\n" "^USB => find all symbols starting with USB\n" "USB$ => find all symbols ending with USB\n" -"\n"); +"\n"; struct mitem { char str[256]; @@ -268,7 +274,7 @@ static int mwin_max_cols; static MENU *curses_menu; static ITEM *curses_menu_items[MAX_MENU_ITEMS]; static struct mitem k_menu_items[MAX_MENU_ITEMS]; -static int items_num; +static unsigned int items_num; static int global_exit; /* the currently selected button */ static const char *current_instructions = menu_instructions; @@ -276,6 +282,7 @@ static const char *current_instructions = menu_instructions; static char *dialog_input_result; static int dialog_input_result_len; +static void selected_conf(struct menu *menu, struct menu *active_menu); static void conf(struct menu *menu); static void conf_choice(struct menu *menu); static void conf_string(struct menu *menu); @@ -370,25 +377,25 @@ static void print_function_line(void) int lines = getmaxy(stdscr); for (i = 0; i < function_keys_num; i++) { - (void) wattrset(main_window, attributes[FUNCTION_HIGHLIGHT]); + wattrset(main_window, attr_function_highlight); mvwprintw(main_window, lines-3, offset, "%s", function_keys[i].key_str); - (void) wattrset(main_window, attributes[FUNCTION_TEXT]); + wattrset(main_window, attr_function_text); offset += strlen(function_keys[i].key_str); mvwprintw(main_window, lines-3, offset, "%s", function_keys[i].func); offset += strlen(function_keys[i].func) + skip; } - (void) wattrset(main_window, attributes[NORMAL]); + wattrset(main_window, attr_normal); } /* help */ static void handle_f1(int *key, struct menu *current_item) { show_scroll_win(main_window, - _("Global help"), _(nconf_global_help)); + "Global help", nconf_global_help); return; } @@ -403,8 +410,8 @@ static void handle_f2(int *key, struct menu *current_item) static void handle_f3(int *key, struct menu *current_item) { show_scroll_win(main_window, - _("Short help"), - _(current_instructions)); + "Short help", + current_instructions); return; } @@ -412,7 +419,7 @@ static void handle_f3(int *key, struct menu *current_item) static void handle_f4(int *key, struct menu *current_item) { int res = btn_dialog(main_window, - _("Show all symbols?"), + "Show all symbols?", 2, " ", ""); @@ -496,16 +503,20 @@ typedef enum {MATCH_TINKER_PATTERN_UP, MATCH_TINKER_PATTERN_DOWN, /* return the index of the matched item, or -1 if no such item exists */ static int get_mext_match(const char *match_str, match_f flag) { - int match_start = item_index(current_item(curses_menu)); - int index; + int match_start, index; + + /* Do not search if the menu is empty (i.e. items_num == 0) */ + match_start = item_index(current_item(curses_menu)); + if (match_start == ERR) + return -1; if (flag == FIND_NEXT_MATCH_DOWN) ++match_start; else if (flag == FIND_NEXT_MATCH_UP) --match_start; + match_start = (match_start + items_num) % items_num; index = match_start; - index = (index + items_num) % items_num; while (true) { char *str = k_menu_items[index].str; if (strcasestr(str, match_str) != NULL) @@ -627,19 +638,12 @@ static int item_is_tag(char tag) static char filename[PATH_MAX+1]; static char menu_backtitle[PATH_MAX+128]; -static const char *set_config_filename(const char *config_filename) +static void set_config_filename(const char *config_filename) { - int size; + snprintf(menu_backtitle, sizeof(menu_backtitle), "%s - %s", + config_filename, rootmenu.prompt->text); - size = snprintf(menu_backtitle, sizeof(menu_backtitle), - "%s - %s", config_filename, rootmenu.prompt->text); - if (size >= sizeof(menu_backtitle)) - menu_backtitle[sizeof(menu_backtitle)-1] = '\0'; - - size = snprintf(filename, sizeof(filename), "%s", config_filename); - if (size >= sizeof(filename)) - filename[sizeof(filename)-1] = '\0'; - return menu_backtitle; + snprintf(filename, sizeof(filename), "%s", config_filename); } /* return = 0 means we are successful. @@ -653,8 +657,8 @@ static int do_exit(void) return 0; } res = btn_dialog(main_window, - _("Do you wish to save your new configuration?\n" - " to cancel and resume nconfig."), + "Do you wish to save your new configuration?\n" + " to cancel and resume nconfig.", 2, " ", ""); @@ -670,15 +674,16 @@ static int do_exit(void) if (res) btn_dialog( main_window, - _("Error during writing of configuration.\n" - "Your configuration changes were NOT saved."), + "Error during writing of configuration.\n" + "Your configuration changes were NOT saved.", 1, ""); + conf_write_autoconf(0); break; default: btn_dialog( main_window, - _("Your configuration changes were NOT saved."), + "Your configuration changes were NOT saved.", 1, ""); break; @@ -694,15 +699,16 @@ static void search_conf(void) struct gstr res; struct gstr title; char *dialog_input; - int dres; + int dres, vscroll = 0, hscroll = 0; + bool again; title = str_new(); - str_printf( &title, _("Enter (sub)string or regexp to search for " - "(with or without \"%s\")"), CONFIG_); + str_printf( &title, "Enter (sub)string or regexp to search for " + "(with or without \"%s\")", CONFIG_); again: dres = dialog_inputbox(main_window, - _("Search Configuration Parameter"), + "Search Configuration Parameter", str_get(&title), "", &dialog_input_result, &dialog_input_result_len); switch (dres) { @@ -710,7 +716,7 @@ again: break; case 1: show_scroll_win(main_window, - _("Search Configuration"), search_help); + "Search Configuration", search_help); goto again; default: str_free(&title); @@ -723,11 +729,28 @@ again: dialog_input += strlen(CONFIG_); sym_arr = sym_re_search(dialog_input); - res = get_relations_str(sym_arr, NULL); + + do { + LIST_HEAD(head); + struct search_data data = { + .head = &head, + .target = NULL, + }; + jump_key_char = 0; + res = get_relations_str(sym_arr, &head); + dres = show_scroll_win_ext(main_window, + "Search Results", str_get(&res), + &vscroll, &hscroll, + handle_search_keys, &data); + again = false; + if (dres >= '1' && dres <= '9') { + assert(data.target != NULL); + selected_conf(data.target->parent, data.target); + again = true; + } + str_free(&res); + } while (again); free(sym_arr); - show_scroll_win(main_window, - _("Search Results"), str_get(&res)); - str_free(&res); str_free(&title); } @@ -754,7 +777,6 @@ static void build_conf(struct menu *menu) switch (ptype) { case P_MENU: child_count++; - prompt = _(prompt); if (single_menu_mode) { item_make(menu, 'm', "%s%*c%s", @@ -775,7 +797,7 @@ static void build_conf(struct menu *menu) item_make(menu, ':', " %*c*** %s ***", indent + 1, ' ', - _(prompt)); + prompt); } break; default: @@ -783,7 +805,7 @@ static void build_conf(struct menu *menu) child_count++; item_make(menu, ':', "---%*c%s", indent + 1, ' ', - _(prompt)); + prompt); } } } else @@ -803,7 +825,7 @@ static void build_conf(struct menu *menu) } val = sym_get_tristate_value(sym); - if (sym_is_changable(sym)) { + if (sym_is_changeable(sym)) { switch (type) { case S_BOOLEAN: item_make(menu, 't', "[%c]", @@ -829,11 +851,11 @@ static void build_conf(struct menu *menu) } item_add_str("%*c%s", indent + 1, - ' ', _(menu_get_prompt(menu))); + ' ', menu_get_prompt(menu)); if (val == yes) { if (def_menu) { item_add_str(" (%s)", - _(menu_get_prompt(def_menu))); + menu_get_prompt(def_menu)); item_add_str(" --->"); if (def_menu->list) { indent += 2; @@ -847,7 +869,7 @@ static void build_conf(struct menu *menu) if (menu == current_menu) { item_make(menu, ':', "---%*c%s", indent + 1, - ' ', _(menu_get_prompt(menu))); + ' ', menu_get_prompt(menu)); goto conf_childs; } child_count++; @@ -857,7 +879,7 @@ static void build_conf(struct menu *menu) } else { switch (type) { case S_BOOLEAN: - if (sym_is_changable(sym)) + if (sym_is_changeable(sym)) item_make(menu, 't', "[%c]", val == no ? ' ' : '*'); else @@ -876,7 +898,7 @@ static void build_conf(struct menu *menu) ch = ' '; break; } - if (sym_is_changable(sym)) { + if (sym_is_changeable(sym)) { if (sym->rev_dep.tri == mod) item_make(menu, 't', "{%c}", ch); @@ -894,17 +916,17 @@ static void build_conf(struct menu *menu) if (tmp < 0) tmp = 0; item_add_str("%*c%s%s", tmp, ' ', - _(menu_get_prompt(menu)), + menu_get_prompt(menu), (sym_has_value(sym) || - !sym_is_changable(sym)) ? "" : - _(" (NEW)")); + !sym_is_changeable(sym)) ? "" : + " (NEW)"); goto conf_childs; } } item_add_str("%*c%s%s", indent + 1, ' ', - _(menu_get_prompt(menu)), - (sym_has_value(sym) || !sym_is_changable(sym)) ? - "" : _(" (NEW)")); + menu_get_prompt(menu), + (sym_has_value(sym) || !sym_is_changeable(sym)) ? + "" : " (NEW)"); if (menu->prompt && menu->prompt->type == P_MENU) { item_add_str(" %s", menu_is_empty(menu) ? "----" : "--->"); return; @@ -956,16 +978,15 @@ static void show_menu(const char *prompt, const char *instructions, current_instructions = instructions; clear(); - (void) wattrset(main_window, attributes[NORMAL]); - print_in_middle(stdscr, 1, 0, getmaxx(stdscr), + print_in_middle(stdscr, 1, getmaxx(stdscr), menu_backtitle, - attributes[MAIN_HEADING]); + attr_main_heading); - (void) wattrset(main_window, attributes[MAIN_MENU_BOX]); + wattrset(main_window, attr_main_menu_box); box(main_window, 0, 0); - (void) wattrset(main_window, attributes[MAIN_MENU_HEADING]); + wattrset(main_window, attr_main_menu_heading); mvwprintw(main_window, 0, 3, " %s ", prompt); - (void) wattrset(main_window, attributes[NORMAL]); + wattrset(main_window, attr_normal); set_menu_items(curses_menu, curses_menu_items); @@ -1048,7 +1069,7 @@ static int do_match(int key, struct match_state *state, int *ans) state->match_direction = FIND_NEXT_MATCH_UP; *ans = get_mext_match(state->pattern, state->match_direction); - } else if (key == KEY_BACKSPACE || key == 127) { + } else if (key == KEY_BACKSPACE || key == 8 || key == 127) { state->pattern[strlen(state->pattern)-1] = '\0'; adj_match_dir(&state->match_direction); } else @@ -1066,11 +1087,15 @@ static int do_match(int key, struct match_state *state, int *ans) } static void conf(struct menu *menu) +{ + selected_conf(menu, NULL); +} + +static void selected_conf(struct menu *menu, struct menu *active_menu) { struct menu *submenu = NULL; - const char *prompt = menu_get_prompt(menu); struct symbol *sym; - int res; + int i, res; int current_index = 0; int last_top_row = 0; struct match_state match_state = { @@ -1086,9 +1111,21 @@ static void conf(struct menu *menu) if (!child_count) break; - show_menu(prompt ? _(prompt) : _("Main Menu"), - _(menu_instructions), - current_index, &last_top_row); + if (active_menu != NULL) { + for (i = 0; i < items_num; i++) { + struct mitem *mcur; + + mcur = (struct mitem *) item_userptr(curses_menu_items[i]); + if ((struct menu *) mcur->usrptr == active_menu) { + current_index = i; + break; + } + } + active_menu = NULL; + } + + show_menu(menu_get_prompt(menu), menu_instructions, + current_index, &last_top_row); keypad((menu_win(curses_menu)), TRUE); while (!global_exit) { if (match_state.in_search) { @@ -1111,9 +1148,11 @@ static void conf(struct menu *menu) break; switch (res) { case KEY_DOWN: + case 'j': menu_driver(curses_menu, REQ_DOWN_ITEM); break; case KEY_UP: + case 'k': menu_driver(curses_menu, REQ_UP_ITEM); break; case KEY_NPAGE: @@ -1210,12 +1249,9 @@ static void conf(struct menu *menu) } } -static void conf_message_callback(const char *fmt, va_list ap) +static void conf_message_callback(const char *s) { - char buf[1024]; - - vsnprintf(buf, sizeof(buf), fmt, ap); - btn_dialog(main_window, buf, 1, ""); + btn_dialog(main_window, s, 1, ""); } static void show_help(struct menu *menu) @@ -1227,13 +1263,13 @@ static void show_help(struct menu *menu) help = str_new(); menu_get_ext_help(menu, &help); - show_scroll_win(main_window, _(menu_get_prompt(menu)), str_get(&help)); + show_scroll_win(main_window, menu_get_prompt(menu), str_get(&help)); str_free(&help); } static void conf_choice(struct menu *menu) { - const char *prompt = _(menu_get_prompt(menu)); + const char *prompt = menu_get_prompt(menu); struct menu *child = NULL; struct symbol *active; int selected_index = 0; @@ -1256,13 +1292,13 @@ static void conf_choice(struct menu *menu) if (child->sym == sym_get_choice_value(menu->sym)) item_make(child, ':', " %s", - _(menu_get_prompt(child))); + menu_get_prompt(child)); else if (child->sym) item_make(child, ':', " %s", - _(menu_get_prompt(child))); + menu_get_prompt(child)); else item_make(child, ':', "*** %s ***", - _(menu_get_prompt(child))); + menu_get_prompt(child)); if (child->sym == active){ last_top_row = top_row(curses_menu); @@ -1270,8 +1306,8 @@ static void conf_choice(struct menu *menu) } i++; } - show_menu(prompt ? _(prompt) : _("Choice Menu"), - _(radiolist_instructions), + show_menu(prompt ? prompt : "Choice Menu", + radiolist_instructions, selected_index, &last_top_row); while (!global_exit) { @@ -1296,9 +1332,11 @@ static void conf_choice(struct menu *menu) break; switch (res) { case KEY_DOWN: + case 'j': menu_driver(curses_menu, REQ_DOWN_ITEM); break; case KEY_UP: + case 'k': menu_driver(curses_menu, REQ_UP_ITEM); break; case KEY_NPAGE: @@ -1358,19 +1396,19 @@ static void conf_string(struct menu *menu) switch (sym_get_type(menu->sym)) { case S_INT: - heading = _(inputbox_instructions_int); + heading = inputbox_instructions_int; break; case S_HEX: - heading = _(inputbox_instructions_hex); + heading = inputbox_instructions_hex; break; case S_STRING: - heading = _(inputbox_instructions_string); + heading = inputbox_instructions_string; break; default: - heading = _("Internal nconf error!"); + heading = "Internal nconf error!"; } res = dialog_inputbox(main_window, - prompt ? _(prompt) : _("Main Menu"), + prompt ? prompt : "Main Menu", heading, sym_get_string_value(menu->sym), &dialog_input_result, @@ -1381,7 +1419,7 @@ static void conf_string(struct menu *menu) dialog_input_result)) return; btn_dialog(main_window, - _("You have made an invalid entry."), 0); + "You have made an invalid entry.", 0); break; case 1: show_help(menu); @@ -1407,14 +1445,14 @@ static void conf_load(void) return; if (!conf_read(dialog_input_result)) { set_config_filename(dialog_input_result); - sym_set_change_count(1); + conf_set_changed(true); return; } - btn_dialog(main_window, _("File does not exist!"), 0); + btn_dialog(main_window, "File does not exist!", 0); break; case 1: show_scroll_win(main_window, - _("Load Alternate Configuration"), + "Load Alternate Configuration", load_config_help); break; case KEY_EXIT: @@ -1441,13 +1479,12 @@ static void conf_save(void) set_config_filename(dialog_input_result); return; } - btn_dialog(main_window, _("Can't create file! " - "Probably a nonexistent directory."), + btn_dialog(main_window, "Can't create file!", 1, ""); break; case 1: show_scroll_win(main_window, - _("Save Alternate Configuration"), + "Save Alternate Configuration", save_config_help); break; case KEY_EXIT: @@ -1480,10 +1517,6 @@ int main(int ac, char **av) int lines, columns; char *mode; - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); - if (ac > 1 && strcmp(av[1], "-s") == 0) { /* Silence conf_read() until the real callback is set up */ conf_set_message_callback(NULL); @@ -1531,9 +1564,9 @@ int main(int ac, char **av) menu_opts_on(curses_menu, O_NONCYCLIC); menu_opts_on(curses_menu, O_IGNORECASE); set_menu_mark(curses_menu, " "); - set_menu_fore(curses_menu, attributes[MAIN_MENU_FORE]); - set_menu_back(curses_menu, attributes[MAIN_MENU_BACK]); - set_menu_grey(curses_menu, attributes[MAIN_MENU_GREY]); + set_menu_fore(curses_menu, attr_main_menu_fore); + set_menu_back(curses_menu, attr_main_menu_back); + set_menu_grey(curses_menu, attr_main_menu_grey); set_config_filename(conf_get_configname()); setup_windows(); @@ -1541,8 +1574,8 @@ int main(int ac, char **av) /* check for KEY_FUNC(1) */ if (has_key(KEY_F(1)) == FALSE) { show_scroll_win(main_window, - _("Instructions"), - _(menu_no_f_instructions)); + "Instructions", + menu_no_f_instructions); } conf_set_message_callback(conf_message_callback); diff --git a/support/kconfig/nconf.gui.c b/support/kconfig/nconf.gui.c index 88874acfda..25a7263ef3 100644 --- a/support/kconfig/nconf.gui.c +++ b/support/kconfig/nconf.gui.c @@ -1,176 +1,126 @@ +// SPDX-License-Identifier: GPL-2.0 /* - * Copyright (C) 2008 Nir Tzachar * * Derived from menuconfig. - * */ #include "nconf.h" #include "lkc.h" -/* a list of all the different widgets we use */ -attributes_t attributes[ATTR_MAX+1] = {0}; - -/* available colors: - COLOR_BLACK 0 - COLOR_RED 1 - COLOR_GREEN 2 - COLOR_YELLOW 3 - COLOR_BLUE 4 - COLOR_MAGENTA 5 - COLOR_CYAN 6 - COLOR_WHITE 7 - */ -static void set_normal_colors(void) -{ - init_pair(NORMAL, -1, -1); - init_pair(MAIN_HEADING, COLOR_MAGENTA, -1); - - /* FORE is for the selected item */ - init_pair(MAIN_MENU_FORE, -1, -1); - /* BACK for all the rest */ - init_pair(MAIN_MENU_BACK, -1, -1); - init_pair(MAIN_MENU_GREY, -1, -1); - init_pair(MAIN_MENU_HEADING, COLOR_GREEN, -1); - init_pair(MAIN_MENU_BOX, COLOR_YELLOW, -1); - - init_pair(SCROLLWIN_TEXT, -1, -1); - init_pair(SCROLLWIN_HEADING, COLOR_GREEN, -1); - init_pair(SCROLLWIN_BOX, COLOR_YELLOW, -1); - - init_pair(DIALOG_TEXT, -1, -1); - init_pair(DIALOG_BOX, COLOR_YELLOW, -1); - init_pair(DIALOG_MENU_BACK, COLOR_YELLOW, -1); - init_pair(DIALOG_MENU_FORE, COLOR_RED, -1); - - init_pair(INPUT_BOX, COLOR_YELLOW, -1); - init_pair(INPUT_HEADING, COLOR_GREEN, -1); - init_pair(INPUT_TEXT, -1, -1); - init_pair(INPUT_FIELD, -1, -1); - - init_pair(FUNCTION_HIGHLIGHT, -1, -1); - init_pair(FUNCTION_TEXT, COLOR_YELLOW, -1); -} - -/* available attributes: - A_NORMAL Normal display (no highlight) - A_STANDOUT Best highlighting mode of the terminal. - A_UNDERLINE Underlining - A_REVERSE Reverse video - A_BLINK Blinking - A_DIM Half bright - A_BOLD Extra bright or bold - A_PROTECT Protected mode - A_INVIS Invisible or blank mode - A_ALTCHARSET Alternate character set - A_CHARTEXT Bit-mask to extract a character - COLOR_PAIR(n) Color-pair number n - */ -static void normal_color_theme(void) -{ - /* automatically add color... */ -#define mkattr(name, attr) do { \ -attributes[name] = attr | COLOR_PAIR(name); } while (0) - mkattr(NORMAL, NORMAL); - mkattr(MAIN_HEADING, A_BOLD | A_UNDERLINE); - - mkattr(MAIN_MENU_FORE, A_REVERSE); - mkattr(MAIN_MENU_BACK, A_NORMAL); - mkattr(MAIN_MENU_GREY, A_NORMAL); - mkattr(MAIN_MENU_HEADING, A_BOLD); - mkattr(MAIN_MENU_BOX, A_NORMAL); - - mkattr(SCROLLWIN_TEXT, A_NORMAL); - mkattr(SCROLLWIN_HEADING, A_BOLD); - mkattr(SCROLLWIN_BOX, A_BOLD); - - mkattr(DIALOG_TEXT, A_BOLD); - mkattr(DIALOG_BOX, A_BOLD); - mkattr(DIALOG_MENU_FORE, A_STANDOUT); - mkattr(DIALOG_MENU_BACK, A_NORMAL); - - mkattr(INPUT_BOX, A_NORMAL); - mkattr(INPUT_HEADING, A_BOLD); - mkattr(INPUT_TEXT, A_NORMAL); - mkattr(INPUT_FIELD, A_UNDERLINE); - - mkattr(FUNCTION_HIGHLIGHT, A_BOLD); - mkattr(FUNCTION_TEXT, A_REVERSE); -} - -static void no_colors_theme(void) -{ - /* automatically add highlight, no color */ -#define mkattrn(name, attr) { attributes[name] = attr; } - - mkattrn(NORMAL, NORMAL); - mkattrn(MAIN_HEADING, A_BOLD | A_UNDERLINE); - - mkattrn(MAIN_MENU_FORE, A_STANDOUT); - mkattrn(MAIN_MENU_BACK, A_NORMAL); - mkattrn(MAIN_MENU_GREY, A_NORMAL); - mkattrn(MAIN_MENU_HEADING, A_BOLD); - mkattrn(MAIN_MENU_BOX, A_NORMAL); - - mkattrn(SCROLLWIN_TEXT, A_NORMAL); - mkattrn(SCROLLWIN_HEADING, A_BOLD); - mkattrn(SCROLLWIN_BOX, A_BOLD); - - mkattrn(DIALOG_TEXT, A_NORMAL); - mkattrn(DIALOG_BOX, A_BOLD); - mkattrn(DIALOG_MENU_FORE, A_STANDOUT); - mkattrn(DIALOG_MENU_BACK, A_NORMAL); - - mkattrn(INPUT_BOX, A_BOLD); - mkattrn(INPUT_HEADING, A_BOLD); - mkattrn(INPUT_TEXT, A_NORMAL); - mkattrn(INPUT_FIELD, A_UNDERLINE); - - mkattrn(FUNCTION_HIGHLIGHT, A_BOLD); - mkattrn(FUNCTION_TEXT, A_REVERSE); -} +int attr_normal; +int attr_main_heading; +int attr_main_menu_box; +int attr_main_menu_fore; +int attr_main_menu_back; +int attr_main_menu_grey; +int attr_main_menu_heading; +int attr_scrollwin_text; +int attr_scrollwin_heading; +int attr_scrollwin_box; +int attr_dialog_text; +int attr_dialog_menu_fore; +int attr_dialog_menu_back; +int attr_dialog_box; +int attr_input_box; +int attr_input_heading; +int attr_input_text; +int attr_input_field; +int attr_function_text; +int attr_function_highlight; + +#define COLOR_ATTR(_at, _fg, _bg, _hl) \ + { .attr = &(_at), .has_color = true, .color_fg = _fg, .color_bg = _bg, .highlight = _hl } +#define NO_COLOR_ATTR(_at, _hl) \ + { .attr = &(_at), .has_color = false, .highlight = _hl } +#define COLOR_DEFAULT -1 + +struct nconf_attr_param { + int *attr; + bool has_color; + int color_fg; + int color_bg; + int highlight; +}; + +static const struct nconf_attr_param color_theme_params[] = { + COLOR_ATTR(attr_normal, COLOR_DEFAULT, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_main_heading, COLOR_MAGENTA, COLOR_DEFAULT, A_BOLD | A_UNDERLINE), + COLOR_ATTR(attr_main_menu_box, COLOR_YELLOW, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_main_menu_fore, COLOR_DEFAULT, COLOR_DEFAULT, A_REVERSE), + COLOR_ATTR(attr_main_menu_back, COLOR_DEFAULT, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_main_menu_grey, COLOR_DEFAULT, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_main_menu_heading, COLOR_GREEN, COLOR_DEFAULT, A_BOLD), + COLOR_ATTR(attr_scrollwin_text, COLOR_DEFAULT, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_scrollwin_heading, COLOR_GREEN, COLOR_DEFAULT, A_BOLD), + COLOR_ATTR(attr_scrollwin_box, COLOR_YELLOW, COLOR_DEFAULT, A_BOLD), + COLOR_ATTR(attr_dialog_text, COLOR_DEFAULT, COLOR_DEFAULT, A_BOLD), + COLOR_ATTR(attr_dialog_menu_fore, COLOR_RED, COLOR_DEFAULT, A_STANDOUT), + COLOR_ATTR(attr_dialog_menu_back, COLOR_YELLOW, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_dialog_box, COLOR_YELLOW, COLOR_DEFAULT, A_BOLD), + COLOR_ATTR(attr_input_box, COLOR_YELLOW, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_input_heading, COLOR_GREEN, COLOR_DEFAULT, A_BOLD), + COLOR_ATTR(attr_input_text, COLOR_DEFAULT, COLOR_DEFAULT, A_NORMAL), + COLOR_ATTR(attr_input_field, COLOR_DEFAULT, COLOR_DEFAULT, A_UNDERLINE), + COLOR_ATTR(attr_function_text, COLOR_YELLOW, COLOR_DEFAULT, A_REVERSE), + COLOR_ATTR(attr_function_highlight, COLOR_DEFAULT, COLOR_DEFAULT, A_BOLD), + { /* sentinel */ } +}; + +static const struct nconf_attr_param no_color_theme_params[] = { + NO_COLOR_ATTR(attr_normal, A_NORMAL), + NO_COLOR_ATTR(attr_main_heading, A_BOLD | A_UNDERLINE), + NO_COLOR_ATTR(attr_main_menu_box, A_NORMAL), + NO_COLOR_ATTR(attr_main_menu_fore, A_STANDOUT), + NO_COLOR_ATTR(attr_main_menu_back, A_NORMAL), + NO_COLOR_ATTR(attr_main_menu_grey, A_NORMAL), + NO_COLOR_ATTR(attr_main_menu_heading, A_BOLD), + NO_COLOR_ATTR(attr_scrollwin_text, A_NORMAL), + NO_COLOR_ATTR(attr_scrollwin_heading, A_BOLD), + NO_COLOR_ATTR(attr_scrollwin_box, A_BOLD), + NO_COLOR_ATTR(attr_dialog_text, A_NORMAL), + NO_COLOR_ATTR(attr_dialog_menu_fore, A_STANDOUT), + NO_COLOR_ATTR(attr_dialog_menu_back, A_NORMAL), + NO_COLOR_ATTR(attr_dialog_box, A_BOLD), + NO_COLOR_ATTR(attr_input_box, A_BOLD), + NO_COLOR_ATTR(attr_input_heading, A_BOLD), + NO_COLOR_ATTR(attr_input_text, A_NORMAL), + NO_COLOR_ATTR(attr_input_field, A_UNDERLINE), + NO_COLOR_ATTR(attr_function_text, A_REVERSE), + NO_COLOR_ATTR(attr_function_highlight, A_BOLD), + { /* sentinel */ } +}; void set_colors(void) { - start_color(); - use_default_colors(); - set_normal_colors(); + const struct nconf_attr_param *p; + int pair = 0; + if (has_colors()) { - normal_color_theme(); + start_color(); + use_default_colors(); + p = color_theme_params; } else { - /* give defaults */ - no_colors_theme(); + p = no_color_theme_params; } -} + for (; p->attr; p++) { + int attr = p->highlight; + + if (p->has_color) { + pair++; + init_pair(pair, p->color_fg, p->color_bg); + attr |= COLOR_PAIR(pair); + } + + *p->attr = attr; + } +} /* this changes the windows attributes !!! */ -void print_in_middle(WINDOW *win, - int starty, - int startx, - int width, - const char *string, - chtype color) -{ int length, x, y; - float temp; - - - if (win == NULL) - win = stdscr; - getyx(win, y, x); - if (startx != 0) - x = startx; - if (starty != 0) - y = starty; - if (width == 0) - width = 80; - - length = strlen(string); - temp = (width - length) / 2; - x = startx + (int)temp; - (void) wattrset(win, color); - mvwprintw(win, y, x, "%s", string); - refresh(); +void print_in_middle(WINDOW *win, int y, int width, const char *str, int attrs) +{ + wattrset(win, attrs); + mvwprintw(win, y, (width - strlen(str)) / 2, "%s", str); } int get_line_no(const char *text) @@ -295,14 +245,14 @@ int btn_dialog(WINDOW *main_window, const char *msg, int btn_num, ...) msg_win = derwin(win, win_rows-2, msg_width, 1, 1+(total_width+2-msg_width)/2); - set_menu_fore(menu, attributes[DIALOG_MENU_FORE]); - set_menu_back(menu, attributes[DIALOG_MENU_BACK]); + set_menu_fore(menu, attr_dialog_menu_fore); + set_menu_back(menu, attr_dialog_menu_back); - (void) wattrset(win, attributes[DIALOG_BOX]); + wattrset(win, attr_dialog_box); box(win, 0, 0); /* print message */ - (void) wattrset(msg_win, attributes[DIALOG_TEXT]); + wattrset(msg_win, attr_dialog_text); fill_window(msg_win, msg); set_menu_win(menu, win); @@ -406,16 +356,16 @@ int dialog_inputbox(WINDOW *main_window, form_win = derwin(win, 1, prompt_width, prompt_lines+3, 2); keypad(form_win, TRUE); - (void) wattrset(form_win, attributes[INPUT_FIELD]); + wattrset(form_win, attr_input_field); - (void) wattrset(win, attributes[INPUT_BOX]); + wattrset(win, attr_input_box); box(win, 0, 0); - (void) wattrset(win, attributes[INPUT_HEADING]); + wattrset(win, attr_input_heading); if (title) mvwprintw(win, 0, 3, "%s", title); /* print message */ - (void) wattrset(prompt_win, attributes[INPUT_TEXT]); + wattrset(prompt_win, attr_input_text); fill_window(prompt_win, prompt); mvwprintw(form_win, 0, 0, "%*s", prompt_width, " "); @@ -440,7 +390,8 @@ int dialog_inputbox(WINDOW *main_window, case KEY_F(F_EXIT): case KEY_F(F_BACK): break; - case 127: + case 8: /* ^H */ + case 127: /* ^? */ case KEY_BACKSPACE: if (cursor_position > 0) { memmove(&result[cursor_position-1], @@ -546,10 +497,17 @@ void refresh_all_windows(WINDOW *main_window) refresh(); } -/* layman's scrollable window... */ void show_scroll_win(WINDOW *main_window, const char *title, const char *text) +{ + (void)show_scroll_win_ext(main_window, title, (char *)text, NULL, NULL, NULL, NULL); +} + +/* layman's scrollable window... */ +int show_scroll_win_ext(WINDOW *main_window, const char *title, char *text, + int *vscroll, int *hscroll, + extra_key_cb_fn extra_key_cb, void *data) { int res; int total_lines = get_line_no(text); @@ -563,6 +521,12 @@ void show_scroll_win(WINDOW *main_window, WINDOW *win; WINDOW *pad; PANEL *panel; + bool done = false; + + if (hscroll) + start_x = *hscroll; + if (vscroll) + start_y = *vscroll; getmaxyx(stdscr, lines, columns); @@ -576,7 +540,7 @@ void show_scroll_win(WINDOW *main_window, /* create the pad */ pad = newpad(total_lines+10, total_cols+10); - (void) wattrset(pad, attributes[SCROLLWIN_TEXT]); + wattrset(pad, attr_scrollwin_text); fill_window(pad, text); win_lines = min(total_lines+4, lines-2); @@ -591,23 +555,21 @@ void show_scroll_win(WINDOW *main_window, win = newwin(win_lines, win_cols, y, x); keypad(win, TRUE); /* show the help in the help window, and show the help panel */ - (void) wattrset(win, attributes[SCROLLWIN_BOX]); + wattrset(win, attr_scrollwin_box); box(win, 0, 0); - (void) wattrset(win, attributes[SCROLLWIN_HEADING]); + wattrset(win, attr_scrollwin_heading); mvwprintw(win, 0, 3, " %s ", title); panel = new_panel(win); /* handle scrolling */ - do { - + while (!done) { copywin(pad, win, start_y, start_x, 2, 2, text_lines, text_cols, 0); print_in_middle(win, text_lines+2, - 0, text_cols, "", - attributes[DIALOG_MENU_FORE]); + attr_dialog_menu_fore); wrefresh(win); res = wgetch(win); @@ -643,8 +605,18 @@ void show_scroll_win(WINDOW *main_window, case 'l': start_x++; break; + default: + if (extra_key_cb) { + size_t start = (get_line(text, start_y) - text); + size_t end = (get_line(text, start_y + text_lines) - text); + + if (extra_key_cb(res, start, end, data)) { + done = true; + break; + } + } } - if (res == 10 || res == 27 || res == 'q' || + if (res == 0 || res == 10 || res == 27 || res == 'q' || res == KEY_F(F_HELP) || res == KEY_F(F_BACK) || res == KEY_F(F_EXIT)) break; @@ -656,9 +628,14 @@ void show_scroll_win(WINDOW *main_window, start_x = 0; if (start_x >= total_cols-text_cols) start_x = total_cols-text_cols; - } while (res); + } + if (hscroll) + *hscroll = start_x; + if (vscroll) + *vscroll = start_y; del_panel(panel); delwin(win); refresh_all_windows(main_window); + return res; } diff --git a/support/kconfig/nconf.h b/support/kconfig/nconf.h index 9f6f21d3b0..ab836d5826 100644 --- a/support/kconfig/nconf.h +++ b/support/kconfig/nconf.h @@ -1,9 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* - * Copyright (C) 2008 Nir Tzachar * * Derived from menuconfig. - * */ #include @@ -14,7 +13,6 @@ #include #include #include -#include #include #include #include @@ -34,30 +32,26 @@ typeof(b) _b = b;\ _a < _b ? _a : _b; }) -typedef enum { - NORMAL = 1, - MAIN_HEADING, - MAIN_MENU_BOX, - MAIN_MENU_FORE, - MAIN_MENU_BACK, - MAIN_MENU_GREY, - MAIN_MENU_HEADING, - SCROLLWIN_TEXT, - SCROLLWIN_HEADING, - SCROLLWIN_BOX, - DIALOG_TEXT, - DIALOG_MENU_FORE, - DIALOG_MENU_BACK, - DIALOG_BOX, - INPUT_BOX, - INPUT_HEADING, - INPUT_TEXT, - INPUT_FIELD, - FUNCTION_TEXT, - FUNCTION_HIGHLIGHT, - ATTR_MAX -} attributes_t; -extern attributes_t attributes[]; +extern int attr_normal; +extern int attr_main_heading; +extern int attr_main_menu_box; +extern int attr_main_menu_fore; +extern int attr_main_menu_back; +extern int attr_main_menu_grey; +extern int attr_main_menu_heading; +extern int attr_scrollwin_text; +extern int attr_scrollwin_heading; +extern int attr_scrollwin_box; +extern int attr_dialog_text; +extern int attr_dialog_menu_fore; +extern int attr_dialog_menu_back; +extern int attr_dialog_box; +extern int attr_input_box; +extern int attr_input_heading; +extern int attr_input_text; +extern int attr_input_field; +extern int attr_function_text; +extern int attr_function_highlight; typedef enum { F_HELP = 1, @@ -73,13 +67,10 @@ typedef enum { void set_colors(void); +typedef int (*extra_key_cb_fn)(int, size_t, size_t, void *); + /* this changes the windows attributes !!! */ -void print_in_middle(WINDOW *win, - int starty, - int startx, - int width, - const char *string, - chtype color); +void print_in_middle(WINDOW *win, int y, int width, const char *str, int attrs); int get_line_length(const char *line); int get_line_no(const char *text); const char *get_line(const char *text, int line_no); @@ -89,6 +80,9 @@ int dialog_inputbox(WINDOW *main_window, const char *title, const char *prompt, const char *init, char **resultp, int *result_len); void refresh_all_windows(WINDOW *main_window); +int show_scroll_win_ext(WINDOW *main_window, const char *title, char *text, + int *vscroll, int *hscroll, + extra_key_cb_fn extra_key_cb, void *data); void show_scroll_win(WINDOW *main_window, const char *title, const char *text); diff --git a/support/kconfig/parser.tab.c_shipped b/support/kconfig/parser.tab.c_shipped new file mode 100644 index 0000000000..092da33306 --- /dev/null +++ b/support/kconfig/parser.tab.c_shipped @@ -0,0 +1,2189 @@ +/* A Bison parser, made by GNU Bison 3.8.2. */ + +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, + Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output, and Bison version. */ +#define YYBISON 30802 + +/* Bison version string. */ +#define YYBISON_VERSION "3.8.2" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + + + + +/* First part of user prologue. */ + + +#include +#include +#include +#include +#include +#include + +#include "lkc.h" +#include "internal.h" +#include "preprocess.h" + +#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) + +#define PRINTD 0x0001 +#define DEBUG_PARSE 0x0002 + +int cdebug = PRINTD; + +static void yyerror(const char *err); +static void zconfprint(const char *err, ...); +static void zconf_error(const char *err, ...); +static bool zconf_endtoken(const char *tokenname, + const char *expected_tokenname); + +struct menu *current_menu, *current_entry; + + + +# ifndef YY_CAST +# ifdef __cplusplus +# define YY_CAST(Type, Val) static_cast (Val) +# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) +# else +# define YY_CAST(Type, Val) ((Type) (Val)) +# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) +# endif +# endif +# ifndef YY_NULLPTR +# if defined __cplusplus +# if 201103L <= __cplusplus +# define YY_NULLPTR nullptr +# else +# define YY_NULLPTR 0 +# endif +# else +# define YY_NULLPTR ((void*)0) +# endif +# endif + +#include "parser.tab.h" +/* Symbol kind. */ +enum yysymbol_kind_t +{ + YYSYMBOL_YYEMPTY = -2, + YYSYMBOL_YYEOF = 0, /* "end of file" */ + YYSYMBOL_YYerror = 1, /* error */ + YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ + YYSYMBOL_T_HELPTEXT = 3, /* T_HELPTEXT */ + YYSYMBOL_T_WORD = 4, /* T_WORD */ + YYSYMBOL_T_WORD_QUOTE = 5, /* T_WORD_QUOTE */ + YYSYMBOL_T_BOOL = 6, /* T_BOOL */ + YYSYMBOL_T_CHOICE = 7, /* T_CHOICE */ + YYSYMBOL_T_CLOSE_PAREN = 8, /* T_CLOSE_PAREN */ + YYSYMBOL_T_COLON_EQUAL = 9, /* T_COLON_EQUAL */ + YYSYMBOL_T_COMMENT = 10, /* T_COMMENT */ + YYSYMBOL_T_CONFIG = 11, /* T_CONFIG */ + YYSYMBOL_T_DEFAULT = 12, /* T_DEFAULT */ + YYSYMBOL_T_DEF_BOOL = 13, /* T_DEF_BOOL */ + YYSYMBOL_T_DEF_TRISTATE = 14, /* T_DEF_TRISTATE */ + YYSYMBOL_T_DEPENDS = 15, /* T_DEPENDS */ + YYSYMBOL_T_ENDCHOICE = 16, /* T_ENDCHOICE */ + YYSYMBOL_T_ENDIF = 17, /* T_ENDIF */ + YYSYMBOL_T_ENDMENU = 18, /* T_ENDMENU */ + YYSYMBOL_T_HELP = 19, /* T_HELP */ + YYSYMBOL_T_HEX = 20, /* T_HEX */ + YYSYMBOL_T_IF = 21, /* T_IF */ + YYSYMBOL_T_IMPLY = 22, /* T_IMPLY */ + YYSYMBOL_T_INT = 23, /* T_INT */ + YYSYMBOL_T_MAINMENU = 24, /* T_MAINMENU */ + YYSYMBOL_T_MENU = 25, /* T_MENU */ + YYSYMBOL_T_MENUCONFIG = 26, /* T_MENUCONFIG */ + YYSYMBOL_T_MODULES = 27, /* T_MODULES */ + YYSYMBOL_T_ON = 28, /* T_ON */ + YYSYMBOL_T_OPEN_PAREN = 29, /* T_OPEN_PAREN */ + YYSYMBOL_T_OPTIONAL = 30, /* T_OPTIONAL */ + YYSYMBOL_T_PLUS_EQUAL = 31, /* T_PLUS_EQUAL */ + YYSYMBOL_T_PROMPT = 32, /* T_PROMPT */ + YYSYMBOL_T_RANGE = 33, /* T_RANGE */ + YYSYMBOL_T_SELECT = 34, /* T_SELECT */ + YYSYMBOL_T_SOURCE = 35, /* T_SOURCE */ + YYSYMBOL_T_STRING = 36, /* T_STRING */ + YYSYMBOL_T_TRISTATE = 37, /* T_TRISTATE */ + YYSYMBOL_T_VISIBLE = 38, /* T_VISIBLE */ + YYSYMBOL_T_EOL = 39, /* T_EOL */ + YYSYMBOL_T_ASSIGN_VAL = 40, /* T_ASSIGN_VAL */ + YYSYMBOL_T_OR = 41, /* T_OR */ + YYSYMBOL_T_AND = 42, /* T_AND */ + YYSYMBOL_T_EQUAL = 43, /* T_EQUAL */ + YYSYMBOL_T_UNEQUAL = 44, /* T_UNEQUAL */ + YYSYMBOL_T_LESS = 45, /* T_LESS */ + YYSYMBOL_T_LESS_EQUAL = 46, /* T_LESS_EQUAL */ + YYSYMBOL_T_GREATER = 47, /* T_GREATER */ + YYSYMBOL_T_GREATER_EQUAL = 48, /* T_GREATER_EQUAL */ + YYSYMBOL_T_NOT = 49, /* T_NOT */ + YYSYMBOL_YYACCEPT = 50, /* $accept */ + YYSYMBOL_input = 51, /* input */ + YYSYMBOL_mainmenu_stmt = 52, /* mainmenu_stmt */ + YYSYMBOL_stmt_list = 53, /* stmt_list */ + YYSYMBOL_common_stmt = 54, /* common_stmt */ + YYSYMBOL_config_entry_start = 55, /* config_entry_start */ + YYSYMBOL_config_stmt = 56, /* config_stmt */ + YYSYMBOL_menuconfig_entry_start = 57, /* menuconfig_entry_start */ + YYSYMBOL_menuconfig_stmt = 58, /* menuconfig_stmt */ + YYSYMBOL_config_option_list = 59, /* config_option_list */ + YYSYMBOL_config_option = 60, /* config_option */ + YYSYMBOL_choice = 61, /* choice */ + YYSYMBOL_choice_entry = 62, /* choice_entry */ + YYSYMBOL_choice_end = 63, /* choice_end */ + YYSYMBOL_choice_stmt = 64, /* choice_stmt */ + YYSYMBOL_choice_option_list = 65, /* choice_option_list */ + YYSYMBOL_choice_option = 66, /* choice_option */ + YYSYMBOL_type = 67, /* type */ + YYSYMBOL_logic_type = 68, /* logic_type */ + YYSYMBOL_default = 69, /* default */ + YYSYMBOL_choice_block = 70, /* choice_block */ + YYSYMBOL_if_entry = 71, /* if_entry */ + YYSYMBOL_if_end = 72, /* if_end */ + YYSYMBOL_if_stmt = 73, /* if_stmt */ + YYSYMBOL_menu = 74, /* menu */ + YYSYMBOL_menu_entry = 75, /* menu_entry */ + YYSYMBOL_menu_end = 76, /* menu_end */ + YYSYMBOL_menu_stmt = 77, /* menu_stmt */ + YYSYMBOL_menu_option_list = 78, /* menu_option_list */ + YYSYMBOL_source_stmt = 79, /* source_stmt */ + YYSYMBOL_comment = 80, /* comment */ + YYSYMBOL_comment_stmt = 81, /* comment_stmt */ + YYSYMBOL_comment_option_list = 82, /* comment_option_list */ + YYSYMBOL_help_start = 83, /* help_start */ + YYSYMBOL_help = 84, /* help */ + YYSYMBOL_depends = 85, /* depends */ + YYSYMBOL_visible = 86, /* visible */ + YYSYMBOL_prompt_stmt_opt = 87, /* prompt_stmt_opt */ + YYSYMBOL_end = 88, /* end */ + YYSYMBOL_if_expr = 89, /* if_expr */ + YYSYMBOL_expr = 90, /* expr */ + YYSYMBOL_nonconst_symbol = 91, /* nonconst_symbol */ + YYSYMBOL_symbol = 92, /* symbol */ + YYSYMBOL_assignment_stmt = 93, /* assignment_stmt */ + YYSYMBOL_assign_op = 94, /* assign_op */ + YYSYMBOL_assign_val = 95 /* assign_val */ +}; +typedef enum yysymbol_kind_t yysymbol_kind_t; + + + + +#ifdef short +# undef short +#endif + +/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure + and (if available) are included + so that the code can choose integer types of a good width. */ + +#ifndef __PTRDIFF_MAX__ +# include /* INFRINGES ON USER NAME SPACE */ +# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_STDINT_H +# endif +#endif + +/* Narrow types that promote to a signed type and that can represent a + signed or unsigned integer of at least N bits. In tables they can + save space and decrease cache pressure. Promoting to a signed type + helps avoid bugs in integer arithmetic. */ + +#ifdef __INT_LEAST8_MAX__ +typedef __INT_LEAST8_TYPE__ yytype_int8; +#elif defined YY_STDINT_H +typedef int_least8_t yytype_int8; +#else +typedef signed char yytype_int8; +#endif + +#ifdef __INT_LEAST16_MAX__ +typedef __INT_LEAST16_TYPE__ yytype_int16; +#elif defined YY_STDINT_H +typedef int_least16_t yytype_int16; +#else +typedef short yytype_int16; +#endif + +/* Work around bug in HP-UX 11.23, which defines these macros + incorrectly for preprocessor constants. This workaround can likely + be removed in 2023, as HPE has promised support for HP-UX 11.23 + (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of + . */ +#ifdef __hpux +# undef UINT_LEAST8_MAX +# undef UINT_LEAST16_MAX +# define UINT_LEAST8_MAX 255 +# define UINT_LEAST16_MAX 65535 +#endif + +#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST8_TYPE__ yytype_uint8; +#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST8_MAX <= INT_MAX) +typedef uint_least8_t yytype_uint8; +#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX +typedef unsigned char yytype_uint8; +#else +typedef short yytype_uint8; +#endif + +#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST16_TYPE__ yytype_uint16; +#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST16_MAX <= INT_MAX) +typedef uint_least16_t yytype_uint16; +#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX +typedef unsigned short yytype_uint16; +#else +typedef int yytype_uint16; +#endif + +#ifndef YYPTRDIFF_T +# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ +# define YYPTRDIFF_T __PTRDIFF_TYPE__ +# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ +# elif defined PTRDIFF_MAX +# ifndef ptrdiff_t +# include /* INFRINGES ON USER NAME SPACE */ +# endif +# define YYPTRDIFF_T ptrdiff_t +# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX +# else +# define YYPTRDIFF_T long +# define YYPTRDIFF_MAXIMUM LONG_MAX +# endif +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned +# endif +#endif + +#define YYSIZE_MAXIMUM \ + YY_CAST (YYPTRDIFF_T, \ + (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ + ? YYPTRDIFF_MAXIMUM \ + : YY_CAST (YYSIZE_T, -1))) + +#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) + + +/* Stored state numbers (used for stacks). */ +typedef yytype_uint8 yy_state_t; + +/* State numbers in computations. */ +typedef int yy_state_fast_t; + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(Msgid) dgettext ("bison-runtime", Msgid) +# endif +# endif +# ifndef YY_ +# define YY_(Msgid) Msgid +# endif +#endif + + +#ifndef YY_ATTRIBUTE_PURE +# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define YY_ATTRIBUTE_PURE +# endif +#endif + +#ifndef YY_ATTRIBUTE_UNUSED +# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# else +# define YY_ATTRIBUTE_UNUSED +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YY_USE(E) ((void) (E)) +#else +# define YY_USE(E) /* empty */ +#endif + +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__ +# if __GNUC__ * 100 + __GNUC_MINOR__ < 407 +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") +# else +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# endif +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") +#else +# define YY_INITIAL_VALUE(Value) Value +#endif +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#endif + +#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ +# define YY_IGNORE_USELESS_CAST_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") +# define YY_IGNORE_USELESS_CAST_END \ + _Pragma ("GCC diagnostic pop") +#endif +#ifndef YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_END +#endif + + +#define YY_ASSERT(E) ((void) (0 && (E))) + +#if !defined yyoverflow + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS +# include /* INFRINGES ON USER NAME SPACE */ + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined EXIT_SUCCESS \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined EXIT_SUCCESS +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined EXIT_SUCCESS +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* !defined yyoverflow */ + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yy_state_t yyss_alloc; + YYSTYPE yyvs_alloc; +}; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +# define YYCOPY_NEEDED 1 + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYPTRDIFF_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / YYSIZEOF (*yyptr); \ + } \ + while (0) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYPTRDIFF_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (0) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 6 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 189 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 50 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 46 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 100 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 177 + +/* YYMAXUTOK -- Last valid token kind. */ +#define YYMAXUTOK 304 + + +/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, with out-of-bounds checking. */ +#define YYTRANSLATE(YYX) \ + (0 <= (YYX) && (YYX) <= YYMAXUTOK \ + ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ + : YYSYMBOL_YYUNDEF) + +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex. */ +static const yytype_int8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49 +}; + +#if YYDEBUG +/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +static const yytype_int16 yyrline[] = +{ + 0, 108, 108, 108, 112, 117, 119, 120, 121, 122, + 123, 127, 128, 129, 130, 131, 132, 137, 144, 149, + 156, 165, 167, 168, 169, 172, 178, 184, 193, 199, + 205, 211, 221, 230, 241, 249, 252, 254, 255, 256, + 259, 265, 271, 277, 284, 285, 286, 287, 290, 291, + 294, 295, 296, 298, 300, 305, 313, 321, 326, 333, + 338, 346, 349, 351, 352, 355, 364, 371, 374, 376, + 381, 387, 405, 412, 419, 421, 426, 427, 428, 431, + 432, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 449, 451, 452, 457, 460, 461, 462, 466, + 467 +}; +#endif + +/** Accessing symbol of state STATE. */ +#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) + +#if YYDEBUG || 0 +/* The user-facing name of the symbol whose (internal) number is + YYSYMBOL. No bounds checking. */ +static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; + +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "\"end of file\"", "error", "\"invalid token\"", "T_HELPTEXT", "T_WORD", + "T_WORD_QUOTE", "T_BOOL", "T_CHOICE", "T_CLOSE_PAREN", "T_COLON_EQUAL", + "T_COMMENT", "T_CONFIG", "T_DEFAULT", "T_DEF_BOOL", "T_DEF_TRISTATE", + "T_DEPENDS", "T_ENDCHOICE", "T_ENDIF", "T_ENDMENU", "T_HELP", "T_HEX", + "T_IF", "T_IMPLY", "T_INT", "T_MAINMENU", "T_MENU", "T_MENUCONFIG", + "T_MODULES", "T_ON", "T_OPEN_PAREN", "T_OPTIONAL", "T_PLUS_EQUAL", + "T_PROMPT", "T_RANGE", "T_SELECT", "T_SOURCE", "T_STRING", "T_TRISTATE", + "T_VISIBLE", "T_EOL", "T_ASSIGN_VAL", "T_OR", "T_AND", "T_EQUAL", + "T_UNEQUAL", "T_LESS", "T_LESS_EQUAL", "T_GREATER", "T_GREATER_EQUAL", + "T_NOT", "$accept", "input", "mainmenu_stmt", "stmt_list", "common_stmt", + "config_entry_start", "config_stmt", "menuconfig_entry_start", + "menuconfig_stmt", "config_option_list", "config_option", "choice", + "choice_entry", "choice_end", "choice_stmt", "choice_option_list", + "choice_option", "type", "logic_type", "default", "choice_block", + "if_entry", "if_end", "if_stmt", "menu", "menu_entry", "menu_end", + "menu_stmt", "menu_option_list", "source_stmt", "comment", + "comment_stmt", "comment_option_list", "help_start", "help", "depends", + "visible", "prompt_stmt_opt", "end", "if_expr", "expr", + "nonconst_symbol", "symbol", "assignment_stmt", "assign_op", + "assign_val", YY_NULLPTR +}; + +static const char * +yysymbol_name (yysymbol_kind_t yysymbol) +{ + return yytname[yysymbol]; +} +#endif + +#define YYPACT_NINF (-67) + +#define yypact_value_is_default(Yyn) \ + ((Yyn) == YYPACT_NINF) + +#define YYTABLE_NINF (-4) + +#define yytable_value_is_error(Yyn) \ + 0 + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +static const yytype_int16 yypact[] = +{ + 15, 13, 29, -67, 30, 19, -67, 59, 22, 11, + 23, 52, 60, -1, 62, 60, 63, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, 32, -67, -67, -67, + 37, -67, 33, -67, 47, -67, -1, -1, 34, -67, + 141, 48, 49, 53, 111, 111, 84, 142, 94, 6, + 94, 76, -67, -67, 58, -67, -67, 5, -67, -67, + -1, -1, 18, 18, 18, 18, 18, 18, -67, -67, + -67, -67, -67, -67, -67, 72, 67, -67, 60, -67, + 69, 97, 18, 60, -67, -67, -67, 104, -67, -1, + 110, -67, -67, 60, 79, 117, -67, 104, -67, -67, + 7, 88, 89, 93, -67, -67, -67, -67, -67, 114, + -67, -67, -67, -67, -67, -67, -67, 95, -67, -67, + -67, -67, -67, -67, -67, -1, -67, 114, -67, 114, + 18, 114, 114, 100, -6, -67, 114, -67, 114, 101, + -67, -67, -67, -1, 102, 40, 103, 112, 114, 115, + -67, -67, 116, 118, 122, -67, -9, -67, -67, -67, + -67, 126, -67, -67, -67, -67, -67 +}; + +/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ +static const yytype_int8 yydefact[] = +{ + 5, 0, 0, 5, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 6, 21, 13, + 21, 14, 36, 53, 7, 5, 11, 62, 5, 8, + 15, 68, 12, 16, 4, 10, 0, 97, 98, 96, + 99, 32, 0, 92, 0, 94, 0, 0, 0, 93, + 81, 0, 0, 0, 18, 20, 33, 0, 0, 59, + 0, 67, 9, 100, 0, 66, 17, 0, 89, 55, + 0, 0, 0, 0, 0, 0, 0, 0, 58, 19, + 65, 48, 50, 51, 52, 0, 0, 46, 0, 45, + 0, 0, 0, 0, 47, 49, 22, 74, 44, 0, + 0, 24, 23, 0, 0, 0, 37, 74, 39, 38, + 0, 0, 0, 0, 54, 35, 34, 57, 56, 79, + 64, 63, 61, 60, 69, 95, 88, 90, 91, 86, + 87, 82, 83, 84, 85, 0, 70, 79, 31, 79, + 0, 79, 79, 0, 79, 71, 79, 42, 79, 0, + 77, 78, 76, 0, 0, 0, 0, 0, 79, 0, + 75, 25, 0, 0, 0, 41, 80, 73, 72, 29, + 26, 0, 28, 27, 43, 40, 30 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -67, -67, -67, 24, 92, -67, -67, -67, -67, 130, + -67, -67, -67, -67, -67, -67, -67, -67, 80, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, 119, -42, -67, 65, -15, 25, + -46, -10, -66, -67, -67, -67 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_uint8 yydefgoto[] = +{ + 0, 2, 3, 4, 17, 18, 19, 20, 21, 54, + 96, 22, 23, 115, 24, 56, 106, 97, 98, 99, + 57, 25, 117, 26, 27, 28, 122, 29, 59, 30, + 31, 32, 61, 100, 101, 102, 121, 143, 116, 154, + 48, 49, 50, 33, 40, 64 +}; + +/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ +static const yytype_int16 yytable[] = +{ + 67, 68, 44, 43, 45, 52, 129, 130, 131, 132, + 133, 134, 36, 126, 109, 153, 37, 120, 5, 124, + 37, 85, 43, 45, 127, 128, 140, 7, 46, 6, + -3, 8, 70, 71, 9, 70, 71, 10, 38, 1, + 11, 12, 38, 118, 119, 123, 70, 71, 47, 58, + 39, 13, 60, 144, 39, 14, 15, 42, 34, -2, + 8, 35, 41, 9, 43, 16, 10, 51, 53, 11, + 12, 62, 65, 69, 158, 70, 71, 63, 137, 168, + 13, 70, 71, 141, 14, 15, 66, 78, 79, 155, + 81, 85, 80, 146, 16, 8, 103, 125, 9, 85, + 135, 10, 139, 86, 11, 12, 136, 166, 138, 142, + 111, 112, 113, 145, 104, 13, 105, 81, 147, 14, + 15, 95, 148, 82, 83, 84, 85, 150, 151, 16, + 86, 87, 152, 88, 89, 153, 107, 71, 90, 161, + 165, 167, 169, 91, 92, 93, 110, 94, 95, 114, + 55, 170, 11, 12, 172, 173, 0, 174, 111, 112, + 113, 175, 156, 13, 157, 176, 159, 160, 15, 162, + 0, 163, 149, 164, 0, 108, 0, 16, 0, 0, + 0, 0, 0, 171, 72, 73, 74, 75, 76, 77 +}; + +static const yytype_int16 yycheck[] = +{ + 46, 47, 12, 4, 5, 15, 72, 73, 74, 75, + 76, 77, 1, 8, 56, 21, 9, 59, 5, 61, + 9, 15, 4, 5, 70, 71, 92, 3, 29, 0, + 0, 1, 41, 42, 4, 41, 42, 7, 31, 24, + 10, 11, 31, 58, 38, 60, 41, 42, 49, 25, + 43, 21, 28, 99, 43, 25, 26, 5, 39, 0, + 1, 39, 39, 4, 4, 35, 7, 5, 5, 10, + 11, 39, 39, 39, 140, 41, 42, 40, 88, 39, + 21, 41, 42, 93, 25, 26, 39, 39, 39, 135, + 6, 15, 39, 103, 35, 1, 12, 39, 4, 15, + 28, 7, 5, 19, 10, 11, 39, 153, 39, 5, + 16, 17, 18, 3, 30, 21, 32, 6, 39, 25, + 26, 37, 5, 12, 13, 14, 15, 39, 39, 35, + 19, 20, 39, 22, 23, 21, 56, 42, 27, 39, + 39, 39, 39, 32, 33, 34, 4, 36, 37, 57, + 20, 39, 10, 11, 39, 39, -1, 39, 16, 17, + 18, 39, 137, 21, 139, 39, 141, 142, 26, 144, + -1, 146, 107, 148, -1, 56, -1, 35, -1, -1, + -1, -1, -1, 158, 43, 44, 45, 46, 47, 48 +}; + +/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of + state STATE-NUM. */ +static const yytype_int8 yystos[] = +{ + 0, 24, 51, 52, 53, 5, 0, 53, 1, 4, + 7, 10, 11, 21, 25, 26, 35, 54, 55, 56, + 57, 58, 61, 62, 64, 71, 73, 74, 75, 77, + 79, 80, 81, 93, 39, 39, 1, 9, 31, 43, + 94, 39, 5, 4, 91, 5, 29, 49, 90, 91, + 92, 5, 91, 5, 59, 59, 65, 70, 53, 78, + 53, 82, 39, 40, 95, 39, 39, 90, 90, 39, + 41, 42, 43, 44, 45, 46, 47, 48, 39, 39, + 39, 6, 12, 13, 14, 15, 19, 20, 22, 23, + 27, 32, 33, 34, 36, 37, 60, 67, 68, 69, + 83, 84, 85, 12, 30, 32, 66, 68, 84, 85, + 4, 16, 17, 18, 54, 63, 88, 72, 88, 38, + 85, 86, 76, 88, 85, 39, 8, 90, 90, 92, + 92, 92, 92, 92, 92, 28, 39, 91, 39, 5, + 92, 91, 5, 87, 90, 3, 91, 39, 5, 87, + 39, 39, 39, 21, 89, 90, 89, 89, 92, 89, + 89, 39, 89, 89, 89, 39, 90, 39, 39, 39, + 39, 89, 39, 39, 39, 39, 39 +}; + +/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ +static const yytype_int8 yyr1[] = +{ + 0, 50, 51, 51, 52, 53, 53, 53, 53, 53, + 53, 54, 54, 54, 54, 54, 54, 55, 56, 57, + 58, 59, 59, 59, 59, 60, 60, 60, 60, 60, + 60, 60, 61, 62, 63, 64, 65, 65, 65, 65, + 66, 66, 66, 66, 67, 67, 67, 67, 68, 68, + 69, 69, 69, 70, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 78, 78, 79, 80, 81, 82, 82, + 83, 84, 85, 86, 87, 87, 88, 88, 88, 89, + 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 91, 92, 92, 93, 94, 94, 94, 95, + 95 +}; + +/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ +static const yytype_int8 yyr2[] = +{ + 0, 2, 2, 1, 3, 0, 2, 2, 2, 4, + 3, 1, 1, 1, 1, 1, 1, 3, 2, 3, + 2, 0, 2, 2, 2, 3, 4, 4, 4, 4, + 5, 2, 2, 2, 1, 3, 0, 2, 2, 2, + 4, 3, 2, 4, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 2, 3, 1, 3, 3, 2, + 1, 3, 0, 2, 2, 3, 3, 2, 0, 2, + 2, 2, 4, 3, 0, 2, 2, 2, 2, 0, + 2, 1, 3, 3, 3, 3, 3, 3, 3, 2, + 3, 3, 1, 1, 1, 4, 1, 1, 1, 0, + 1 +}; + + +enum { YYENOMEM = -2 }; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab +#define YYNOMEM goto yyexhaustedlab + + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ + do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ + while (0) + +/* Backward compatibility with an undocumented macro. + Use YYerror or YYUNDEF. */ +#define YYERRCODE YYUNDEF + + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) + + + + +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Kind, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) + + +/*-----------------------------------. +| Print this symbol's value on YYO. | +`-----------------------------------*/ + +static void +yy_symbol_value_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) +{ + FILE *yyoutput = yyo; + YY_USE (yyoutput); + if (!yyvaluep) + return; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YY_USE (yykind); + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + +/*---------------------------. +| Print this symbol on YYO. | +`---------------------------*/ + +static void +yy_symbol_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) +{ + YYFPRINTF (yyo, "%s %s (", + yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); + + yy_symbol_value_print (yyo, yykind, yyvaluep); + YYFPRINTF (yyo, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +static void +yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +static void +yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, + int yyrule) +{ + int yylno = yyrline[yyrule]; + int yynrhs = yyr2[yyrule]; + int yyi; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, + YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), + &yyvsp[(yyi + 1) - (yynrhs)]); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule); \ +} while (0) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) ((void) 0) +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + + + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +static void +yydestruct (const char *yymsg, + yysymbol_kind_t yykind, YYSTYPE *yyvaluep) +{ + YY_USE (yyvaluep); + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + switch (yykind) + { + case YYSYMBOL_choice_entry: /* choice_entry */ + { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + ((*yyvaluep).menu)->filename, ((*yyvaluep).menu)->lineno); + if (current_menu == ((*yyvaluep).menu)) + menu_end_menu(); +} + break; + + case YYSYMBOL_if_entry: /* if_entry */ + { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + ((*yyvaluep).menu)->filename, ((*yyvaluep).menu)->lineno); + if (current_menu == ((*yyvaluep).menu)) + menu_end_menu(); +} + break; + + case YYSYMBOL_menu_entry: /* menu_entry */ + { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + ((*yyvaluep).menu)->filename, ((*yyvaluep).menu)->lineno); + if (current_menu == ((*yyvaluep).menu)) + menu_end_menu(); +} + break; + + default: + break; + } + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + +/* Lookahead token kind. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; +/* Number of syntax errors so far. */ +int yynerrs; + + + + +/*----------. +| yyparse. | +`----------*/ + +int +yyparse (void) +{ + yy_state_fast_t yystate = 0; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus = 0; + + /* Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* Their size. */ + YYPTRDIFF_T yystacksize = YYINITDEPTH; + + /* The state stack: array, bottom, top. */ + yy_state_t yyssa[YYINITDEPTH]; + yy_state_t *yyss = yyssa; + yy_state_t *yyssp = yyss; + + /* The semantic value stack: array, bottom, top. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp = yyvs; + + int yyn; + /* The return value of yyparse. */ + int yyresult; + /* Lookahead symbol kind. */ + yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yychar = YYEMPTY; /* Cause a token to be read. */ + + goto yysetstate; + + +/*------------------------------------------------------------. +| yynewstate -- push a new state, which is found in yystate. | +`------------------------------------------------------------*/ +yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + +/*--------------------------------------------------------------------. +| yysetstate -- set current state (the top of the stack) to yystate. | +`--------------------------------------------------------------------*/ +yysetstate: + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + YY_ASSERT (0 <= yystate && yystate < YYNSTATES); + YY_IGNORE_USELESS_CAST_BEGIN + *yyssp = YY_CAST (yy_state_t, yystate); + YY_IGNORE_USELESS_CAST_END + YY_STACK_PRINT (yyss, yyssp); + + if (yyss + yystacksize - 1 <= yyssp) +#if !defined yyoverflow && !defined YYSTACK_RELOCATE + YYNOMEM; +#else + { + /* Get the current used size of the three stacks, in elements. */ + YYPTRDIFF_T yysize = yyssp - yyss + 1; + +# if defined yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + yy_state_t *yyss1 = yyss; + YYSTYPE *yyvs1 = yyvs; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * YYSIZEOF (*yyssp), + &yyvs1, yysize * YYSIZEOF (*yyvsp), + &yystacksize); + yyss = yyss1; + yyvs = yyvs1; + } +# else /* defined YYSTACK_RELOCATE */ + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + YYNOMEM; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yy_state_t *yyss1 = yyss; + union yyalloc *yyptr = + YY_CAST (union yyalloc *, + YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); + if (! yyptr) + YYNOMEM; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + YY_IGNORE_USELESS_CAST_BEGIN + YYDPRINTF ((stderr, "Stack size increased to %ld\n", + YY_CAST (long, yystacksize))); + YY_IGNORE_USELESS_CAST_END + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } +#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ + + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token\n")); + yychar = yylex (); + } + + if (yychar <= YYEOF) + { + yychar = YYEOF; + yytoken = YYSYMBOL_YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else if (yychar == YYerror) + { + /* The scanner already issued an error message, process directly + to error recovery. But do not keep the error token as + lookahead, it is too special and may lead us to an endless + loop in error recovery. */ + yychar = YYUNDEF; + yytoken = YYSYMBOL_YYerror; + goto yyerrlab1; + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + /* Discard the shifted token. */ + yychar = YYEMPTY; + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + '$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 4: /* mainmenu_stmt: T_MAINMENU T_WORD_QUOTE T_EOL */ +{ + menu_add_prompt(P_MENU, (yyvsp[-1].string), NULL); +} + break; + + case 9: /* stmt_list: stmt_list T_WORD error T_EOL */ + { zconf_error("unknown statement \"%s\"", (yyvsp[-2].string)); } + break; + + case 10: /* stmt_list: stmt_list error T_EOL */ + { zconf_error("invalid statement"); } + break; + + case 17: /* config_entry_start: T_CONFIG nonconst_symbol T_EOL */ +{ + (yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL; + menu_add_entry((yyvsp[-1].symbol)); + printd(DEBUG_PARSE, "%s:%d:config %s\n", cur_filename, cur_lineno, (yyvsp[-1].symbol)->name); +} + break; + + case 18: /* config_stmt: config_entry_start config_option_list */ +{ + printd(DEBUG_PARSE, "%s:%d:endconfig\n", cur_filename, cur_lineno); +} + break; + + case 19: /* menuconfig_entry_start: T_MENUCONFIG nonconst_symbol T_EOL */ +{ + (yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL; + menu_add_entry((yyvsp[-1].symbol)); + printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", cur_filename, cur_lineno, (yyvsp[-1].symbol)->name); +} + break; + + case 20: /* menuconfig_stmt: menuconfig_entry_start config_option_list */ +{ + if (current_entry->prompt) + current_entry->prompt->type = P_MENU; + else + zconfprint("warning: menuconfig statement without prompt"); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", cur_filename, cur_lineno); +} + break; + + case 25: /* config_option: type prompt_stmt_opt T_EOL */ +{ + menu_set_type((yyvsp[-2].type)); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", cur_filename, cur_lineno, (yyvsp[-2].type)); +} + break; + + case 26: /* config_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL */ +{ + menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:prompt\n", cur_filename, cur_lineno); +} + break; + + case 27: /* config_option: default expr if_expr T_EOL */ +{ + menu_add_expr(P_DEFAULT, (yyvsp[-2].expr), (yyvsp[-1].expr)); + if ((yyvsp[-3].type) != S_UNKNOWN) + menu_set_type((yyvsp[-3].type)); + printd(DEBUG_PARSE, "%s:%d:default(%u)\n", cur_filename, cur_lineno, + (yyvsp[-3].type)); +} + break; + + case 28: /* config_option: T_SELECT nonconst_symbol if_expr T_EOL */ +{ + menu_add_symbol(P_SELECT, (yyvsp[-2].symbol), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:select\n", cur_filename, cur_lineno); +} + break; + + case 29: /* config_option: T_IMPLY nonconst_symbol if_expr T_EOL */ +{ + menu_add_symbol(P_IMPLY, (yyvsp[-2].symbol), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:imply\n", cur_filename, cur_lineno); +} + break; + + case 30: /* config_option: T_RANGE symbol symbol if_expr T_EOL */ +{ + menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[-3].symbol), (yyvsp[-2].symbol)), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:range\n", cur_filename, cur_lineno); +} + break; + + case 31: /* config_option: T_MODULES T_EOL */ +{ + if (modules_sym) + zconf_error("symbol '%s' redefines option 'modules' already defined by symbol '%s'", + current_entry->sym->name, modules_sym->name); + modules_sym = current_entry->sym; +} + break; + + case 32: /* choice: T_CHOICE T_EOL */ +{ + struct symbol *sym = sym_lookup(NULL, SYMBOL_CHOICE); + sym->flags |= SYMBOL_NO_WRITE; + menu_add_entry(sym); + menu_add_expr(P_CHOICE, NULL, NULL); + printd(DEBUG_PARSE, "%s:%d:choice\n", cur_filename, cur_lineno); +} + break; + + case 33: /* choice_entry: choice choice_option_list */ +{ + if (!current_entry->prompt) { + fprintf(stderr, "%s:%d: error: choice must have a prompt\n", + current_entry->filename, current_entry->lineno); + yynerrs++; + } + + (yyval.menu) = menu_add_menu(); +} + break; + + case 34: /* choice_end: end */ +{ + if (zconf_endtoken((yyvsp[0].string), "choice")) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endchoice\n", cur_filename, cur_lineno); + } +} + break; + + case 40: /* choice_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL */ +{ + menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:prompt\n", cur_filename, cur_lineno); +} + break; + + case 41: /* choice_option: logic_type prompt_stmt_opt T_EOL */ +{ + menu_set_type((yyvsp[-2].type)); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", cur_filename, cur_lineno, (yyvsp[-2].type)); +} + break; + + case 42: /* choice_option: T_OPTIONAL T_EOL */ +{ + current_entry->sym->flags |= SYMBOL_OPTIONAL; + printd(DEBUG_PARSE, "%s:%d:optional\n", cur_filename, cur_lineno); +} + break; + + case 43: /* choice_option: T_DEFAULT nonconst_symbol if_expr T_EOL */ +{ + menu_add_symbol(P_DEFAULT, (yyvsp[-2].symbol), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:default\n", cur_filename, cur_lineno); +} + break; + + case 45: /* type: T_INT */ + { (yyval.type) = S_INT; } + break; + + case 46: /* type: T_HEX */ + { (yyval.type) = S_HEX; } + break; + + case 47: /* type: T_STRING */ + { (yyval.type) = S_STRING; } + break; + + case 48: /* logic_type: T_BOOL */ + { (yyval.type) = S_BOOLEAN; } + break; + + case 49: /* logic_type: T_TRISTATE */ + { (yyval.type) = S_TRISTATE; } + break; + + case 50: /* default: T_DEFAULT */ + { (yyval.type) = S_UNKNOWN; } + break; + + case 51: /* default: T_DEF_BOOL */ + { (yyval.type) = S_BOOLEAN; } + break; + + case 52: /* default: T_DEF_TRISTATE */ + { (yyval.type) = S_TRISTATE; } + break; + + case 55: /* if_entry: T_IF expr T_EOL */ +{ + printd(DEBUG_PARSE, "%s:%d:if\n", cur_filename, cur_lineno); + menu_add_entry(NULL); + menu_add_dep((yyvsp[-1].expr)); + (yyval.menu) = menu_add_menu(); +} + break; + + case 56: /* if_end: end */ +{ + if (zconf_endtoken((yyvsp[0].string), "if")) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endif\n", cur_filename, cur_lineno); + } +} + break; + + case 58: /* menu: T_MENU T_WORD_QUOTE T_EOL */ +{ + menu_add_entry(NULL); + menu_add_prompt(P_MENU, (yyvsp[-1].string), NULL); + printd(DEBUG_PARSE, "%s:%d:menu\n", cur_filename, cur_lineno); +} + break; + + case 59: /* menu_entry: menu menu_option_list */ +{ + (yyval.menu) = menu_add_menu(); +} + break; + + case 60: /* menu_end: end */ +{ + if (zconf_endtoken((yyvsp[0].string), "menu")) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endmenu\n", cur_filename, cur_lineno); + } +} + break; + + case 65: /* source_stmt: T_SOURCE T_WORD_QUOTE T_EOL */ +{ + printd(DEBUG_PARSE, "%s:%d:source %s\n", cur_filename, cur_lineno, (yyvsp[-1].string)); + zconf_nextfile((yyvsp[-1].string)); + free((yyvsp[-1].string)); +} + break; + + case 66: /* comment: T_COMMENT T_WORD_QUOTE T_EOL */ +{ + menu_add_entry(NULL); + menu_add_prompt(P_COMMENT, (yyvsp[-1].string), NULL); + printd(DEBUG_PARSE, "%s:%d:comment\n", cur_filename, cur_lineno); +} + break; + + case 70: /* help_start: T_HELP T_EOL */ +{ + printd(DEBUG_PARSE, "%s:%d:help\n", cur_filename, cur_lineno); + zconf_starthelp(); +} + break; + + case 71: /* help: help_start T_HELPTEXT */ +{ + if (current_entry->help) { + free(current_entry->help); + zconfprint("warning: '%s' defined with more than one help text -- only the last one will be used", + current_entry->sym->name ?: ""); + } + + /* Is the help text empty or all whitespace? */ + if ((yyvsp[0].string)[strspn((yyvsp[0].string), " \f\n\r\t\v")] == '\0') + zconfprint("warning: '%s' defined with blank help text", + current_entry->sym->name ?: ""); + + current_entry->help = (yyvsp[0].string); +} + break; + + case 72: /* depends: T_DEPENDS T_ON expr T_EOL */ +{ + menu_add_dep((yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:depends on\n", cur_filename, cur_lineno); +} + break; + + case 73: /* visible: T_VISIBLE if_expr T_EOL */ +{ + menu_add_visibility((yyvsp[-1].expr)); +} + break; + + case 75: /* prompt_stmt_opt: T_WORD_QUOTE if_expr */ +{ + menu_add_prompt(P_PROMPT, (yyvsp[-1].string), (yyvsp[0].expr)); +} + break; + + case 76: /* end: T_ENDMENU T_EOL */ + { (yyval.string) = "menu"; } + break; + + case 77: /* end: T_ENDCHOICE T_EOL */ + { (yyval.string) = "choice"; } + break; + + case 78: /* end: T_ENDIF T_EOL */ + { (yyval.string) = "if"; } + break; + + case 79: /* if_expr: %empty */ + { (yyval.expr) = NULL; } + break; + + case 80: /* if_expr: T_IF expr */ + { (yyval.expr) = (yyvsp[0].expr); } + break; + + case 81: /* expr: symbol */ + { (yyval.expr) = expr_alloc_symbol((yyvsp[0].symbol)); } + break; + + case 82: /* expr: symbol T_LESS symbol */ + { (yyval.expr) = expr_alloc_comp(E_LTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + + case 83: /* expr: symbol T_LESS_EQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_LEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + + case 84: /* expr: symbol T_GREATER symbol */ + { (yyval.expr) = expr_alloc_comp(E_GTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + + case 85: /* expr: symbol T_GREATER_EQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_GEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + + case 86: /* expr: symbol T_EQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + + case 87: /* expr: symbol T_UNEQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + + case 88: /* expr: T_OPEN_PAREN expr T_CLOSE_PAREN */ + { (yyval.expr) = (yyvsp[-1].expr); } + break; + + case 89: /* expr: T_NOT expr */ + { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[0].expr)); } + break; + + case 90: /* expr: expr T_OR expr */ + { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[-2].expr), (yyvsp[0].expr)); } + break; + + case 91: /* expr: expr T_AND expr */ + { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); } + break; + + case 92: /* nonconst_symbol: T_WORD */ + { (yyval.symbol) = sym_lookup((yyvsp[0].string), 0); free((yyvsp[0].string)); } + break; + + case 94: /* symbol: T_WORD_QUOTE */ + { (yyval.symbol) = sym_lookup((yyvsp[0].string), SYMBOL_CONST); free((yyvsp[0].string)); } + break; + + case 95: /* assignment_stmt: T_WORD assign_op assign_val T_EOL */ + { variable_add((yyvsp[-3].string), (yyvsp[-1].string), (yyvsp[-2].flavor)); free((yyvsp[-3].string)); free((yyvsp[-1].string)); } + break; + + case 96: /* assign_op: T_EQUAL */ + { (yyval.flavor) = VAR_RECURSIVE; } + break; + + case 97: /* assign_op: T_COLON_EQUAL */ + { (yyval.flavor) = VAR_SIMPLE; } + break; + + case 98: /* assign_op: T_PLUS_EQUAL */ + { (yyval.flavor) = VAR_APPEND; } + break; + + case 99: /* assign_val: %empty */ + { (yyval.string) = xstrdup(""); } + break; + + + + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + + *++yyvsp = yyval; + + /* Now 'shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + { + const int yylhs = yyr1[yyn] - YYNTOKENS; + const int yyi = yypgoto[yylhs] + *yyssp; + yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp + ? yytable[yyi] + : yydefgoto[yylhs]); + } + + goto yynewstate; + + +/*--------------------------------------. +| yyerrlab -- here on detecting error. | +`--------------------------------------*/ +yyerrlab: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; + yyerror (YY_("syntax error")); + } + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse lookahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + /* Pacify compilers when the user code never invokes YYERROR and the + label yyerrorlab therefore never appears in user code. */ + if (0) + YYERROR; + ++yynerrs; + + /* Do not reclaim the symbols of the rule whose action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + /* Pop stack until we find a state that shifts the error token. */ + for (;;) + { + yyn = yypact[yystate]; + if (!yypact_value_is_default (yyn)) + { + yyn += YYSYMBOL_YYerror; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + YY_ACCESSING_SYMBOL (yystate), yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturnlab; + + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturnlab; + + +/*-----------------------------------------------------------. +| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. | +`-----------------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + goto yyreturnlab; + + +/*----------------------------------------------------------. +| yyreturnlab -- parsing is finished, clean up and return. | +`----------------------------------------------------------*/ +yyreturnlab: + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } + /* Do not reclaim the symbols of the rule whose action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + YY_ACCESSING_SYMBOL (+*yyssp), yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif + + return yyresult; +} + + + +void conf_parse(const char *name) +{ + struct menu *menu; + + autoconf_cmd = str_new(); + + str_printf(&autoconf_cmd, "\ndeps_config := \\\n"); + + zconf_initscan(name); + + _menu_init(); + + if (getenv("ZCONF_DEBUG")) + yydebug = 1; + yyparse(); + + /* + * FIXME: + * cur_filename and cur_lineno are used even after yyparse(); + * menu_finalize() calls menu_add_symbol(). This should be fixed. + */ + cur_filename = ""; + cur_lineno = 0; + + str_printf(&autoconf_cmd, + "\n" + "$(autoconfig): $(deps_config)\n" + "$(deps_config): ;\n"); + + env_write_dep(&autoconf_cmd); + + /* Variables are expanded in the parse phase. We can free them here. */ + variable_all_del(); + + if (yynerrs) + exit(1); + if (!modules_sym) + modules_sym = &symbol_no; + + if (!menu_has_prompt(&rootmenu)) { + current_entry = &rootmenu; + menu_add_prompt(P_MENU, "Main menu", NULL); + } + + menu_finalize(); + + menu = &rootmenu; + while (menu) { + if (menu->sym && sym_check_deps(menu->sym)) + yynerrs++; + + if (menu->list) { + menu = menu->list; + continue; + } + + while (!menu->next && menu->parent) + menu = menu->parent; + + menu = menu->next; + } + + if (yynerrs) + exit(1); + conf_set_changed(true); +} + +static bool zconf_endtoken(const char *tokenname, + const char *expected_tokenname) +{ + if (strcmp(tokenname, expected_tokenname)) { + zconf_error("unexpected '%s' within %s block", + tokenname, expected_tokenname); + yynerrs++; + return false; + } + if (strcmp(current_menu->filename, cur_filename)) { + zconf_error("'%s' in different file than '%s'", + tokenname, expected_tokenname); + fprintf(stderr, "%s:%d: location of the '%s'\n", + current_menu->filename, current_menu->lineno, + expected_tokenname); + yynerrs++; + return false; + } + return true; +} + +static void zconfprint(const char *err, ...) +{ + va_list ap; + + fprintf(stderr, "%s:%d: ", cur_filename, cur_lineno); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void zconf_error(const char *err, ...) +{ + va_list ap; + + yynerrs++; + fprintf(stderr, "%s:%d: ", cur_filename, cur_lineno); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void yyerror(const char *err) +{ + fprintf(stderr, "%s:%d: %s\n", cur_filename, cur_lineno, err); +} + +static void print_quoted_string(FILE *out, const char *str) +{ + const char *p; + int len; + + putc('"', out); + while ((p = strchr(str, '"'))) { + len = p - str; + if (len) + fprintf(out, "%.*s", len, str); + fputs("\\\"", out); + str = p + 1; + } + fputs(str, out); + putc('"', out); +} + +static void print_symbol(FILE *out, struct menu *menu) +{ + struct symbol *sym = menu->sym; + struct property *prop; + + if (sym_is_choice(sym)) + fprintf(out, "\nchoice\n"); + else + fprintf(out, "\nconfig %s\n", sym->name); + switch (sym->type) { + case S_BOOLEAN: + fputs(" bool\n", out); + break; + case S_TRISTATE: + fputs(" tristate\n", out); + break; + case S_STRING: + fputs(" string\n", out); + break; + case S_INT: + fputs(" integer\n", out); + break; + case S_HEX: + fputs(" hex\n", out); + break; + default: + fputs(" ???\n", out); + break; + } + for (prop = sym->prop; prop; prop = prop->next) { + if (prop->menu != menu) + continue; + switch (prop->type) { + case P_PROMPT: + fputs(" prompt ", out); + print_quoted_string(out, prop->text); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_DEFAULT: + fputs( " default ", out); + expr_fprint(prop->expr, out); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_CHOICE: + fputs(" #choice value\n", out); + break; + case P_SELECT: + fputs( " select ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_IMPLY: + fputs( " imply ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_RANGE: + fputs( " range ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_MENU: + fputs( " menu ", out); + print_quoted_string(out, prop->text); + fputc('\n', out); + break; + case P_SYMBOL: + fputs( " symbol ", out); + fprintf(out, "%s\n", prop->menu->sym->name); + break; + default: + fprintf(out, " unknown prop %d!\n", prop->type); + break; + } + } + if (menu->help) { + int len = strlen(menu->help); + while (menu->help[--len] == '\n') + menu->help[len] = 0; + fprintf(out, " help\n%s\n", menu->help); + } +} + +void zconfdump(FILE *out) +{ + struct property *prop; + struct symbol *sym; + struct menu *menu; + + menu = rootmenu.list; + while (menu) { + if ((sym = menu->sym)) + print_symbol(out, menu); + else if ((prop = menu->prompt)) { + switch (prop->type) { + case P_COMMENT: + fputs("\ncomment ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + case P_MENU: + fputs("\nmenu ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + default: + ; + } + if (!expr_is_yes(prop->visible.expr)) { + fputs(" depends ", out); + expr_fprint(prop->visible.expr, out); + fputc('\n', out); + } + } + + if (menu->list) + menu = menu->list; + else if (menu->next) + menu = menu->next; + else while ((menu = menu->parent)) { + if (menu->prompt && menu->prompt->type == P_MENU) + fputs("\nendmenu\n", out); + if (menu->next) { + menu = menu->next; + break; + } + } + } +} diff --git a/support/kconfig/parser.tab.h_shipped b/support/kconfig/parser.tab.h_shipped new file mode 100644 index 0000000000..6459d79928 --- /dev/null +++ b/support/kconfig/parser.tab.h_shipped @@ -0,0 +1,134 @@ +/* A Bison parser, made by GNU Bison 3.8.2. */ + +/* Bison interface for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, + Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ + +#ifndef YY_YY_SCRIPTS_KCONFIG_PARSER_TAB_H_INCLUDED +# define YY_YY_SCRIPTS_KCONFIG_PARSER_TAB_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 1 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token kinds. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + enum yytokentype + { + YYEMPTY = -2, + YYEOF = 0, /* "end of file" */ + YYerror = 256, /* error */ + YYUNDEF = 257, /* "invalid token" */ + T_HELPTEXT = 258, /* T_HELPTEXT */ + T_WORD = 259, /* T_WORD */ + T_WORD_QUOTE = 260, /* T_WORD_QUOTE */ + T_BOOL = 261, /* T_BOOL */ + T_CHOICE = 262, /* T_CHOICE */ + T_CLOSE_PAREN = 263, /* T_CLOSE_PAREN */ + T_COLON_EQUAL = 264, /* T_COLON_EQUAL */ + T_COMMENT = 265, /* T_COMMENT */ + T_CONFIG = 266, /* T_CONFIG */ + T_DEFAULT = 267, /* T_DEFAULT */ + T_DEF_BOOL = 268, /* T_DEF_BOOL */ + T_DEF_TRISTATE = 269, /* T_DEF_TRISTATE */ + T_DEPENDS = 270, /* T_DEPENDS */ + T_ENDCHOICE = 271, /* T_ENDCHOICE */ + T_ENDIF = 272, /* T_ENDIF */ + T_ENDMENU = 273, /* T_ENDMENU */ + T_HELP = 274, /* T_HELP */ + T_HEX = 275, /* T_HEX */ + T_IF = 276, /* T_IF */ + T_IMPLY = 277, /* T_IMPLY */ + T_INT = 278, /* T_INT */ + T_MAINMENU = 279, /* T_MAINMENU */ + T_MENU = 280, /* T_MENU */ + T_MENUCONFIG = 281, /* T_MENUCONFIG */ + T_MODULES = 282, /* T_MODULES */ + T_ON = 283, /* T_ON */ + T_OPEN_PAREN = 284, /* T_OPEN_PAREN */ + T_OPTIONAL = 285, /* T_OPTIONAL */ + T_PLUS_EQUAL = 286, /* T_PLUS_EQUAL */ + T_PROMPT = 287, /* T_PROMPT */ + T_RANGE = 288, /* T_RANGE */ + T_SELECT = 289, /* T_SELECT */ + T_SOURCE = 290, /* T_SOURCE */ + T_STRING = 291, /* T_STRING */ + T_TRISTATE = 292, /* T_TRISTATE */ + T_VISIBLE = 293, /* T_VISIBLE */ + T_EOL = 294, /* T_EOL */ + T_ASSIGN_VAL = 295, /* T_ASSIGN_VAL */ + T_OR = 296, /* T_OR */ + T_AND = 297, /* T_AND */ + T_EQUAL = 298, /* T_EQUAL */ + T_UNEQUAL = 299, /* T_UNEQUAL */ + T_LESS = 300, /* T_LESS */ + T_LESS_EQUAL = 301, /* T_LESS_EQUAL */ + T_GREATER = 302, /* T_GREATER */ + T_GREATER_EQUAL = 303, /* T_GREATER_EQUAL */ + T_NOT = 304 /* T_NOT */ + }; + typedef enum yytokentype yytoken_kind_t; +#endif + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +union YYSTYPE +{ + + char *string; + struct symbol *symbol; + struct expr *expr; + struct menu *menu; + enum symbol_type type; + enum variable_flavor flavor; + + +}; +typedef union YYSTYPE YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + + +int yyparse (void); + + +#endif /* !YY_YY_SCRIPTS_KCONFIG_PARSER_TAB_H_INCLUDED */ diff --git a/support/kconfig/zconf.y b/support/kconfig/parser.y similarity index 56% rename from support/kconfig/zconf.y rename to support/kconfig/parser.y index 7b34de28a6..9873e84b1b 100644 --- a/support/kconfig/zconf.y +++ b/support/kconfig/parser.y @@ -1,8 +1,8 @@ -%{ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ +%{ #include #include @@ -12,6 +12,8 @@ #include #include "lkc.h" +#include "internal.h" +#include "preprocess.h" #define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) @@ -20,63 +22,64 @@ int cdebug = PRINTD; -int yylex(void); static void yyerror(const char *err); static void zconfprint(const char *err, ...); static void zconf_error(const char *err, ...); -static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken); - -struct symbol *symbol_hash[SYMBOL_HASHSIZE]; +static bool zconf_endtoken(const char *tokenname, + const char *expected_tokenname); -static struct menu *current_menu, *current_entry; +struct menu *current_menu, *current_entry; %} -%expect 32 %union { char *string; - struct file *file; struct symbol *symbol; struct expr *expr; struct menu *menu; - const struct kconf_id *id; + enum symbol_type type; + enum variable_flavor flavor; } -%token T_MAINMENU -%token T_MENU -%token T_ENDMENU -%token T_SOURCE -%token T_CHOICE -%token T_ENDCHOICE -%token T_COMMENT -%token T_CONFIG -%token T_MENUCONFIG -%token T_HELP %token T_HELPTEXT -%token T_IF -%token T_ENDIF -%token T_DEPENDS -%token T_OPTIONAL -%token T_PROMPT -%token T_TYPE -%token T_DEFAULT -%token T_SELECT -%token T_IMPLY -%token T_RANGE -%token T_VISIBLE -%token T_OPTION -%token T_ON %token T_WORD %token T_WORD_QUOTE -%token T_UNEQUAL -%token T_LESS -%token T_LESS_EQUAL -%token T_GREATER -%token T_GREATER_EQUAL +%token T_BOOL +%token T_CHOICE %token T_CLOSE_PAREN +%token T_COLON_EQUAL +%token T_COMMENT +%token T_CONFIG +%token T_DEFAULT +%token T_DEF_BOOL +%token T_DEF_TRISTATE +%token T_DEPENDS +%token T_ENDCHOICE +%token T_ENDIF +%token T_ENDMENU +%token T_HELP +%token T_HEX +%token T_IF +%token T_IMPLY +%token T_INT +%token T_MAINMENU +%token T_MENU +%token T_MENUCONFIG +%token T_MODULES +%token T_ON %token T_OPEN_PAREN +%token T_OPTIONAL +%token T_PLUS_EQUAL +%token T_PROMPT +%token T_RANGE +%token T_SELECT +%token T_SOURCE +%token T_STRING +%token T_TRISTATE +%token T_VISIBLE %token T_EOL +%token T_ASSIGN_VAL %left T_OR %left T_AND @@ -84,105 +87,70 @@ static struct menu *current_menu, *current_entry; %left T_LESS T_LESS_EQUAL T_GREATER T_GREATER_EQUAL %nonassoc T_NOT -%type prompt %type nonconst_symbol %type symbol +%type type logic_type default %type expr %type if_expr -%type end -%type option_name +%type end %type if_entry menu_entry choice_entry -%type symbol_option_arg word_opt +%type assign_val +%type assign_op %destructor { fprintf(stderr, "%s:%d: missing end statement for this entry\n", - $$->file->name, $$->lineno); + $$->filename, $$->lineno); if (current_menu == $$) menu_end_menu(); } if_entry menu_entry choice_entry -%{ -/* Include kconf_id.c here so it can see the token constants. */ -#include "kconf_id.c" -%} - %% -input: nl start | start; - -start: mainmenu_stmt stmt_list | no_mainmenu_stmt stmt_list; +input: mainmenu_stmt stmt_list | stmt_list; /* mainmenu entry */ -mainmenu_stmt: T_MAINMENU prompt nl +mainmenu_stmt: T_MAINMENU T_WORD_QUOTE T_EOL { menu_add_prompt(P_MENU, $2, NULL); }; -/* Default main menu, if there's no mainmenu entry */ - -no_mainmenu_stmt: /* empty */ -{ - /* - * Hack: Keep the main menu title on the heap so we can safely free it - * later regardless of whether it comes from the 'prompt' in - * mainmenu_stmt or here - */ - menu_add_prompt(P_MENU, xstrdup("Buildroot Configuration"), NULL); -}; - - stmt_list: /* empty */ | stmt_list common_stmt | stmt_list choice_stmt | stmt_list menu_stmt - | stmt_list end { zconf_error("unexpected end statement"); } | stmt_list T_WORD error T_EOL { zconf_error("unknown statement \"%s\"", $2); } - | stmt_list option_name error T_EOL -{ - zconf_error("unexpected option \"%s\"", $2->name); -} | stmt_list error T_EOL { zconf_error("invalid statement"); } ; -option_name: - T_DEPENDS | T_PROMPT | T_TYPE | T_SELECT | T_IMPLY | T_OPTIONAL | T_RANGE | T_DEFAULT | T_VISIBLE -; - common_stmt: - T_EOL - | if_stmt + if_stmt | comment_stmt | config_stmt | menuconfig_stmt | source_stmt + | assignment_stmt ; -option_error: - T_WORD error T_EOL { zconf_error("unknown option \"%s\"", $1); } - | error T_EOL { zconf_error("invalid option"); } -; - - /* config/menuconfig entry */ config_entry_start: T_CONFIG nonconst_symbol T_EOL { $2->flags |= SYMBOL_OPTIONAL; menu_add_entry($2); - printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), $2->name); + printd(DEBUG_PARSE, "%s:%d:config %s\n", cur_filename, cur_lineno, $2->name); }; config_stmt: config_entry_start config_option_list { - printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", cur_filename, cur_lineno); }; menuconfig_entry_start: T_MENUCONFIG nonconst_symbol T_EOL { $2->flags |= SYMBOL_OPTIONAL; menu_add_entry($2); - printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), $2->name); + printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", cur_filename, cur_lineno, $2->name); }; menuconfig_stmt: menuconfig_entry_start config_option_list @@ -191,105 +159,90 @@ menuconfig_stmt: menuconfig_entry_start config_option_list current_entry->prompt->type = P_MENU; else zconfprint("warning: menuconfig statement without prompt"); - printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", cur_filename, cur_lineno); }; config_option_list: /* empty */ | config_option_list config_option - | config_option_list symbol_option | config_option_list depends | config_option_list help - | config_option_list option_error - | config_option_list T_EOL ; -config_option: T_TYPE prompt_stmt_opt T_EOL +config_option: type prompt_stmt_opt T_EOL { - menu_set_type($1->stype); - printd(DEBUG_PARSE, "%s:%d:type(%u)\n", - zconf_curname(), zconf_lineno(), - $1->stype); + menu_set_type($1); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", cur_filename, cur_lineno, $1); }; -config_option: T_PROMPT prompt if_expr T_EOL +config_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL { menu_add_prompt(P_PROMPT, $2, $3); - printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:prompt\n", cur_filename, cur_lineno); }; -config_option: T_DEFAULT expr if_expr T_EOL +config_option: default expr if_expr T_EOL { menu_add_expr(P_DEFAULT, $2, $3); - if ($1->stype != S_UNKNOWN) - menu_set_type($1->stype); - printd(DEBUG_PARSE, "%s:%d:default(%u)\n", - zconf_curname(), zconf_lineno(), - $1->stype); + if ($1 != S_UNKNOWN) + menu_set_type($1); + printd(DEBUG_PARSE, "%s:%d:default(%u)\n", cur_filename, cur_lineno, + $1); }; config_option: T_SELECT nonconst_symbol if_expr T_EOL { menu_add_symbol(P_SELECT, $2, $3); - printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:select\n", cur_filename, cur_lineno); }; config_option: T_IMPLY nonconst_symbol if_expr T_EOL { menu_add_symbol(P_IMPLY, $2, $3); - printd(DEBUG_PARSE, "%s:%d:imply\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:imply\n", cur_filename, cur_lineno); }; config_option: T_RANGE symbol symbol if_expr T_EOL { menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,$2, $3), $4); - printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:range\n", cur_filename, cur_lineno); }; -symbol_option: T_OPTION symbol_option_list T_EOL -; - -symbol_option_list: - /* empty */ - | symbol_option_list T_WORD symbol_option_arg +config_option: T_MODULES T_EOL { - const struct kconf_id *id = kconf_id_lookup($2, strlen($2)); - if (id && id->flags & TF_OPTION) { - menu_add_option(id->token, $3); - free($3); - } - else - zconfprint("warning: ignoring unknown option %s", $2); - free($2); + if (modules_sym) + zconf_error("symbol '%s' redefines option 'modules' already defined by symbol '%s'", + current_entry->sym->name, modules_sym->name); + modules_sym = current_entry->sym; }; -symbol_option_arg: - /* empty */ { $$ = NULL; } - | T_EQUAL prompt { $$ = $2; } -; - /* choice entry */ -choice: T_CHOICE word_opt T_EOL +choice: T_CHOICE T_EOL { - struct symbol *sym = sym_lookup($2, SYMBOL_CHOICE); - sym->flags |= SYMBOL_AUTO; + struct symbol *sym = sym_lookup(NULL, SYMBOL_CHOICE); + sym->flags |= SYMBOL_NO_WRITE; menu_add_entry(sym); menu_add_expr(P_CHOICE, NULL, NULL); - free($2); - printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:choice\n", cur_filename, cur_lineno); }; choice_entry: choice choice_option_list { + if (!current_entry->prompt) { + fprintf(stderr, "%s:%d: error: choice must have a prompt\n", + current_entry->filename, current_entry->lineno); + yynerrs++; + } + $$ = menu_add_menu(); }; choice_end: end { - if (zconf_endtoken($1, T_CHOICE, T_ENDCHOICE)) { + if (zconf_endtoken($1, "choice")) { menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:endchoice\n", cur_filename, cur_lineno); } }; @@ -301,43 +254,47 @@ choice_option_list: | choice_option_list choice_option | choice_option_list depends | choice_option_list help - | choice_option_list T_EOL - | choice_option_list option_error ; -choice_option: T_PROMPT prompt if_expr T_EOL +choice_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL { menu_add_prompt(P_PROMPT, $2, $3); - printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:prompt\n", cur_filename, cur_lineno); }; -choice_option: T_TYPE prompt_stmt_opt T_EOL +choice_option: logic_type prompt_stmt_opt T_EOL { - if ($1->stype == S_BOOLEAN || $1->stype == S_TRISTATE) { - menu_set_type($1->stype); - printd(DEBUG_PARSE, "%s:%d:type(%u)\n", - zconf_curname(), zconf_lineno(), - $1->stype); - } else - YYERROR; + menu_set_type($1); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", cur_filename, cur_lineno, $1); }; choice_option: T_OPTIONAL T_EOL { current_entry->sym->flags |= SYMBOL_OPTIONAL; - printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:optional\n", cur_filename, cur_lineno); }; choice_option: T_DEFAULT nonconst_symbol if_expr T_EOL { - if ($1->stype == S_UNKNOWN) { - menu_add_symbol(P_DEFAULT, $2, $3); - printd(DEBUG_PARSE, "%s:%d:default\n", - zconf_curname(), zconf_lineno()); - } else - YYERROR; + menu_add_symbol(P_DEFAULT, $2, $3); + printd(DEBUG_PARSE, "%s:%d:default\n", cur_filename, cur_lineno); }; +type: + logic_type + | T_INT { $$ = S_INT; } + | T_HEX { $$ = S_HEX; } + | T_STRING { $$ = S_STRING; } + +logic_type: + T_BOOL { $$ = S_BOOLEAN; } + | T_TRISTATE { $$ = S_TRISTATE; } + +default: + T_DEFAULT { $$ = S_UNKNOWN; } + | T_DEF_BOOL { $$ = S_BOOLEAN; } + | T_DEF_TRISTATE { $$ = S_TRISTATE; } + choice_block: /* empty */ | choice_block common_stmt @@ -345,9 +302,9 @@ choice_block: /* if entry */ -if_entry: T_IF expr nl +if_entry: T_IF expr T_EOL { - printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:if\n", cur_filename, cur_lineno); menu_add_entry(NULL); menu_add_dep($2); $$ = menu_add_menu(); @@ -355,78 +312,75 @@ if_entry: T_IF expr nl if_end: end { - if (zconf_endtoken($1, T_IF, T_ENDIF)) { + if (zconf_endtoken($1, "if")) { menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:endif\n", cur_filename, cur_lineno); } }; -if_stmt: if_entry if_block if_end -; - -if_block: - /* empty */ - | if_block common_stmt - | if_block menu_stmt - | if_block choice_stmt +if_stmt: if_entry stmt_list if_end ; /* menu entry */ -menu: T_MENU prompt T_EOL +menu: T_MENU T_WORD_QUOTE T_EOL { menu_add_entry(NULL); menu_add_prompt(P_MENU, $2, NULL); - printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:menu\n", cur_filename, cur_lineno); }; -menu_entry: menu visibility_list depends_list +menu_entry: menu menu_option_list { $$ = menu_add_menu(); }; menu_end: end { - if (zconf_endtoken($1, T_MENU, T_ENDMENU)) { + if (zconf_endtoken($1, "menu")) { menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:endmenu\n", cur_filename, cur_lineno); } }; -menu_stmt: menu_entry menu_block menu_end +menu_stmt: menu_entry stmt_list menu_end ; -menu_block: +menu_option_list: /* empty */ - | menu_block common_stmt - | menu_block menu_stmt - | menu_block choice_stmt + | menu_option_list visible + | menu_option_list depends ; -source_stmt: T_SOURCE prompt T_EOL +source_stmt: T_SOURCE T_WORD_QUOTE T_EOL { - printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), $2); + printd(DEBUG_PARSE, "%s:%d:source %s\n", cur_filename, cur_lineno, $2); zconf_nextfile($2); free($2); }; /* comment entry */ -comment: T_COMMENT prompt T_EOL +comment: T_COMMENT T_WORD_QUOTE T_EOL { menu_add_entry(NULL); menu_add_prompt(P_COMMENT, $2, NULL); - printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:comment\n", cur_filename, cur_lineno); }; -comment_stmt: comment depends_list +comment_stmt: comment comment_option_list +; + +comment_option_list: + /* empty */ + | comment_option_list depends ; /* help option */ help_start: T_HELP T_EOL { - printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:help\n", cur_filename, cur_lineno); zconf_starthelp(); }; @@ -448,28 +402,14 @@ help: help_start T_HELPTEXT /* depends option */ -depends_list: - /* empty */ - | depends_list depends - | depends_list T_EOL - | depends_list option_error -; - depends: T_DEPENDS T_ON expr T_EOL { menu_add_dep($3); - printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno()); + printd(DEBUG_PARSE, "%s:%d:depends on\n", cur_filename, cur_lineno); }; /* visibility option */ - -visibility_list: - /* empty */ - | visibility_list visible - | visibility_list T_EOL -; - -visible: T_VISIBLE if_expr +visible: T_VISIBLE if_expr T_EOL { menu_add_visibility($2); }; @@ -478,23 +418,14 @@ visible: T_VISIBLE if_expr prompt_stmt_opt: /* empty */ - | prompt if_expr + | T_WORD_QUOTE if_expr { menu_add_prompt(P_PROMPT, $1, $2); }; -prompt: T_WORD - | T_WORD_QUOTE -; - -end: T_ENDMENU T_EOL { $$ = $1; } - | T_ENDCHOICE T_EOL { $$ = $1; } - | T_ENDIF T_EOL { $$ = $1; } -; - -nl: - T_EOL - | nl T_EOL +end: T_ENDMENU T_EOL { $$ = "menu"; } + | T_ENDCHOICE T_EOL { $$ = "choice"; } + | T_ENDIF T_EOL { $$ = "if"; } ; if_expr: /* empty */ { $$ = NULL; } @@ -521,74 +452,105 @@ symbol: nonconst_symbol | T_WORD_QUOTE { $$ = sym_lookup($1, SYMBOL_CONST); free($1); } ; -word_opt: /* empty */ { $$ = NULL; } - | T_WORD +/* assignment statement */ + +assignment_stmt: T_WORD assign_op assign_val T_EOL { variable_add($1, $3, $2); free($1); free($3); } + +assign_op: + T_EQUAL { $$ = VAR_RECURSIVE; } + | T_COLON_EQUAL { $$ = VAR_SIMPLE; } + | T_PLUS_EQUAL { $$ = VAR_APPEND; } +; + +assign_val: + /* empty */ { $$ = xstrdup(""); }; + | T_ASSIGN_VAL +; %% void conf_parse(const char *name) { - const char *tmp; - struct symbol *sym; - int i; + struct menu *menu; + + autoconf_cmd = str_new(); + + str_printf(&autoconf_cmd, "\ndeps_config := \\\n"); zconf_initscan(name); - sym_init(); _menu_init(); if (getenv("ZCONF_DEBUG")) yydebug = 1; yyparse(); + + /* + * FIXME: + * cur_filename and cur_lineno are used even after yyparse(); + * menu_finalize() calls menu_add_symbol(). This should be fixed. + */ + cur_filename = ""; + cur_lineno = 0; + + str_printf(&autoconf_cmd, + "\n" + "$(autoconfig): $(deps_config)\n" + "$(deps_config): ;\n"); + + env_write_dep(&autoconf_cmd); + + /* Variables are expanded in the parse phase. We can free them here. */ + variable_all_del(); + if (yynerrs) exit(1); if (!modules_sym) - modules_sym = sym_find( "n" ); + modules_sym = &symbol_no; - tmp = rootmenu.prompt->text; - rootmenu.prompt->text = _(rootmenu.prompt->text); - rootmenu.prompt->text = sym_expand_string_value(rootmenu.prompt->text); - free((char*)tmp); + if (!menu_has_prompt(&rootmenu)) { + current_entry = &rootmenu; + menu_add_prompt(P_MENU, "Main menu", NULL); + } + + menu_finalize(); - menu_finalize(&rootmenu); - for_all_symbols(i, sym) { - if (sym_check_deps(sym)) + menu = &rootmenu; + while (menu) { + if (menu->sym && sym_check_deps(menu->sym)) yynerrs++; + + if (menu->list) { + menu = menu->list; + continue; + } + + while (!menu->next && menu->parent) + menu = menu->parent; + + menu = menu->next; } + if (yynerrs) exit(1); - sym_set_change_count(1); + conf_set_changed(true); } -static const char *zconf_tokenname(int token) -{ - switch (token) { - case T_MENU: return "menu"; - case T_ENDMENU: return "endmenu"; - case T_CHOICE: return "choice"; - case T_ENDCHOICE: return "endchoice"; - case T_IF: return "if"; - case T_ENDIF: return "endif"; - case T_DEPENDS: return "depends"; - case T_VISIBLE: return "visible"; - } - return ""; -} - -static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken) +static bool zconf_endtoken(const char *tokenname, + const char *expected_tokenname) { - if (id->token != endtoken) { + if (strcmp(tokenname, expected_tokenname)) { zconf_error("unexpected '%s' within %s block", - id->name, zconf_tokenname(starttoken)); + tokenname, expected_tokenname); yynerrs++; return false; } - if (current_menu->file != current_file) { + if (strcmp(current_menu->filename, cur_filename)) { zconf_error("'%s' in different file than '%s'", - id->name, zconf_tokenname(starttoken)); + tokenname, expected_tokenname); fprintf(stderr, "%s:%d: location of the '%s'\n", - current_menu->file->name, current_menu->lineno, - zconf_tokenname(starttoken)); + current_menu->filename, current_menu->lineno, + expected_tokenname); yynerrs++; return false; } @@ -599,7 +561,7 @@ static void zconfprint(const char *err, ...) { va_list ap; - fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + fprintf(stderr, "%s:%d: ", cur_filename, cur_lineno); va_start(ap, err); vfprintf(stderr, err, ap); va_end(ap); @@ -611,7 +573,7 @@ static void zconf_error(const char *err, ...) va_list ap; yynerrs++; - fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + fprintf(stderr, "%s:%d: ", cur_filename, cur_lineno); va_start(ap, err); vfprintf(stderr, err, ap); va_end(ap); @@ -620,7 +582,7 @@ static void zconf_error(const char *err, ...) static void yyerror(const char *err) { - fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err); + fprintf(stderr, "%s:%d: %s\n", cur_filename, cur_lineno, err); } static void print_quoted_string(FILE *out, const char *str) @@ -714,6 +676,10 @@ static void print_symbol(FILE *out, struct menu *menu) print_quoted_string(out, prop->text); fputc('\n', out); break; + case P_SYMBOL: + fputs( " symbol ", out); + fprintf(out, "%s\n", prop->menu->sym->name); + break; default: fprintf(out, " unknown prop %d!\n", prop->type); break; @@ -773,10 +739,3 @@ void zconfdump(FILE *out) } } } - -#include "zconf.lex.c" -#include "util.c" -#include "confdata.c" -#include "expr.c" -#include "symbol.c" -#include "menu.c" diff --git a/support/kconfig/patches/01-kconfig-kernel-to-buildroot.patch b/support/kconfig/patches/01-kconfig-kernel-to-buildroot.patch index 43ae61a9c7..57d2488f9a 100644 --- a/support/kconfig/patches/01-kconfig-kernel-to-buildroot.patch +++ b/support/kconfig/patches/01-kconfig-kernel-to-buildroot.patch @@ -1,15 +1,20 @@ ---- - confdata.c | 4 ++-- - gconf.glade | 2 +- - mconf.c | 4 ++-- - zconf.tab.c_shipped | 2 +- - zconf.y | 2 +- - 5 files changed, 7 insertions(+), 7 deletions(-) - -Index: kconfig/gconf.glade -=================================================================== ---- kconfig.orig/gconf.glade -+++ kconfig/gconf.glade +diff --git a/confdata.c b/confdata.c +index 0e35c48..00a629b 100644 +--- a/confdata.c ++++ b/confdata.c +@@ -207,7 +207,7 @@ static void conf_message(const char *fmt, ...) + + const char *conf_get_configname(void) + { +- char *name = getenv("KCONFIG_CONFIG"); ++ char *name = getenv("BR2_CONFIG"); + + return name ? name : ".config"; + } +diff --git a/gconf.glade b/gconf.glade +index aa483cb..6cbc1bb 100644 +--- a/gconf.glade ++++ b/gconf.glade @@ -4,7 +4,7 @@ @@ -19,85 +24,37 @@ Index: kconfig/gconf.glade GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False -Index: kconfig/mconf.c -=================================================================== ---- kconfig.orig/mconf.c -+++ kconfig/mconf.c -@@ -176,9 +176,9 @@ menu_instructions[] = N_( +diff --git a/mconf.c b/mconf.c +index c096909..420e173 100644 +--- a/mconf.c ++++ b/mconf.c +@@ -184,9 +184,9 @@ menu_instructions[] = "Arrow keys navigate the menu. " " selects submenus ---> (or empty submenus ----). " "Highlighted letters are hotkeys. " - "Pressing includes, excludes, modularizes features. " -+ "Pressing selects a feature, while excludes a feature. " ++ "Pressing selects a feature, while excludes a features. " "Press to exit, for Help, for Search. " -- "Legend: [*] built-in [ ] excluded module < > module capable"), -+ "Legend: [*] feature is selected [ ] feature is excluded"), - radiolist_instructions[] = N_( +- "Legend: [*] built-in [ ] excluded module < > module capable", ++ "Legend: [*] feature is selected [ ] feature is excluded", + radiolist_instructions[] = "Use the arrow keys to navigate this window or " "press the hotkey of the item you wish to select " -@@ -962,7 +962,7 @@ static int handle_exit(void) +@@ -914,7 +914,7 @@ static int handle_exit(void) if (conf_get_changed()) res = dialog_yesno(NULL, - _("Do you wish to save your new configuration?\n" -- "(Press to continue kernel configuration.)"), -+ "(Press to continue Buildroot configuration.)"), + "Do you wish to save your new configuration?\n" +- "(Press to continue kernel configuration.)", ++ "(Press to continue Buildroot configuration.)", 6, 60); else res = -1; -Index: kconfig/zconf.tab.c_shipped -=================================================================== ---- kconfig.orig/zconf.tab.c_shipped -+++ kconfig/zconf.tab.c_shipped -@@ -1515,7 +1515,7 @@ yyreduce: - * later regardless of whether it comes from the 'prompt' in - * mainmenu_stmt or here - */ -- menu_add_prompt(P_MENU, xstrdup("Linux Kernel Configuration"), NULL); -+ menu_add_prompt(P_MENU, xstrdup("Buildroot Configuration"), NULL); - } - - break; -Index: kconfig/zconf.y -=================================================================== ---- kconfig.orig/zconf.y -+++ kconfig/zconf.y -@@ -127,7 +127,7 @@ no_mainmenu_stmt: /* empty */ - * later regardless of whether it comes from the 'prompt' in - * mainmenu_stmt or here - */ -- menu_add_prompt(P_MENU, xstrdup("Linux Kernel Configuration"), NULL); -+ menu_add_prompt(P_MENU, xstrdup("Buildroot Configuration"), NULL); - }; - - -Index: kconfig/confdata.c -=================================================================== ---- kconfig.orig/confdata.c -+++ kconfig/confdata.c -@@ -30,7 +30,7 @@ static void conf_message(const char *fmt - static const char *conf_filename; - static int conf_lineno, conf_warnings; - --const char conf_defname[] = "arch/$ARCH/defconfig"; -+const char conf_defname[] = ".defconfig"; - - static void conf_warning(const char *fmt, ...) - { -@@ -69,7 +69,7 @@ static void conf_message(const char *fmt - - const char *conf_get_configname(void) - { -- char *name = getenv("KCONFIG_CONFIG"); -+ char *name = getenv("BR2_CONFIG"); - - return name ? name : ".config"; - } -Index: kconfig/qconf.cc -=================================================================== ---- kconfig.orig/qconf.cc -+++ kconfig/qconf.cc -@@ -55,7 +55,7 @@ static inline QString qgettext(const QSt - } +diff --git a/qconf.cc b/qconf.cc +index c6c42c0..50c3ccd 100644 +--- a/qconf.cc ++++ b/qconf.cc +@@ -34,7 +34,7 @@ static ConfigSettings *configSettings; + QAction *ConfigMainWindow::saveAction; ConfigSettings::ConfigSettings() - : QSettings("kernel.org", "qconf") diff --git a/support/kconfig/patches/06-br-build-system-integration.patch b/support/kconfig/patches/06-br-build-system-integration.patch index 35420cbb15..b021ebf5c9 100644 --- a/support/kconfig/patches/06-br-build-system-integration.patch +++ b/support/kconfig/patches/06-br-build-system-integration.patch @@ -1,74 +1,53 @@ -Index: kconfig/Makefile -=================================================================== ---- kconfig.orig/Makefile -+++ kconfig/Makefile -@@ -205,7 +205,35 @@ qconf-cxxobjs := qconf.o - qconf-objs := zconf.tab.o - gconf-objs := gconf.o zconf.tab.o - --hostprogs-y := conf nconf mconf kxgettext qconf gconf -+hostprogs-y := conf -+ +diff --git a/Makefile b/Makefile +index ea1bf3b..5697d38 100644 +--- a/Makefile ++++ b/Makefile +@@ -173,6 +173,7 @@ hostprogs += conf + conf-objs := conf.o $(common-objs) + + # nconf: Used for the nconfig target based on ncurses +ifeq ($(MAKECMDGOALS),nconf) -+ hostprogs-y += nconf + hostprogs += nconf + nconf-objs := nconf.o nconf.gui.o mnconf-common.o $(common-objs) + +@@ -182,8 +183,10 @@ HOSTCFLAGS_nconf.gui.o = $(call read-file, $(obj)/nconf-cflags) + + $(obj)/nconf: | $(obj)/nconf-libs + $(obj)/nconf.o $(obj)/nconf.gui.o: | $(obj)/nconf-cflags +endif -+ + + # mconf: Used for the menuconfig target based on lxdialog +ifeq ($(MAKECMDGOALS),mconf) -+ hostprogs-y += mconf -+endif -+ -+ifeq ($(MAKECMDGOALS),update-po-config) -+ hostprogs-y += kxgettext -+endif -+ -+ifeq ($(MAKECMDGOALS),qconf) -+ qconf-target := 1 -+endif -+ -+ifeq ($(MAKECMDGOALS),gconf) -+ gconf-target := 1 -+endif -+ -+ifeq ($(qconf-target),1) -+ hostprogs-y += qconf -+endif -+ -+ifeq ($(gconf-target),1) -+ hostprogs-y += gconf -+endif + hostprogs += mconf + lxdialog := $(addprefix lxdialog/, \ + checklist.o inputbox.o menubox.o textbox.o util.o yesno.o) +@@ -195,8 +198,10 @@ $(foreach f, mconf.o $(lxdialog), \ - targets += zconf.lex.c - clean-files := qconf.moc .tmp_qtcheck .tmp_gtkcheck -@@ -243,7 +271,7 @@ HOSTLOADLIBES_nconf = $(shell \ - || echo "-lmenu -lpanel -lncurses" ) - $(obj)/qconf.o: $(obj)/.tmp_qtcheck + $(obj)/mconf: | $(obj)/mconf-libs + $(addprefix $(obj)/, mconf.o $(lxdialog)): | $(obj)/mconf-cflags ++endif --ifeq ($(MAKECMDGOALS),xconfig) + # qconf: Used for the xconfig target based on Qt +ifeq ($(MAKECMDGOALS),qconf) - $(obj)/.tmp_qtcheck: $(src)/Makefile - -include $(obj)/.tmp_qtcheck + hostprogs += qconf + qconf-cxxobjs := qconf.o qconf-moc.o + qconf-objs := images.o $(common-objs) +@@ -214,8 +219,10 @@ $(obj)/qconf-moc.cc: $(src)/qconf.h FORCE | $(obj)/qconf-bin + $(call if_changed,moc) -@@ -270,9 +298,8 @@ $(obj)/.tmp_qtcheck: - echo "KC_QT_MOC=$$moc" >> $@ - endif + targets += qconf-moc.cc ++endif + # gconf: Used for the gconfig target based on GTK+ +ifeq ($(MAKECMDGOALS),gconf) - $(obj)/gconf.o: $(obj)/.tmp_gtkcheck -- --ifeq ($(MAKECMDGOALS),gconfig) - -include $(obj)/.tmp_gtkcheck + hostprogs += gconf + gconf-objs := gconf.o images.o $(common-objs) - # GTK+ needs some extra effort, too... -@@ -300,11 +327,8 @@ $(obj)/zconf.tab.o: $(obj)/zconf.lex.c +@@ -224,6 +231,7 @@ HOSTCFLAGS_gconf.o = $(call read-file, $(obj)/gconf-cflags) - $(obj)/qconf.o: $(obj)/qconf.moc - --quiet_cmd_moc = MOC $@ -- cmd_moc = $(KC_QT_MOC) -i $< -o $@ -- - $(obj)/%.moc: $(src)/%.h $(obj)/.tmp_qtcheck -- $(call cmd,moc) -+ $(KC_QT_MOC) -i $< -o $@ + $(obj)/gconf: | $(obj)/gconf-libs + $(obj)/gconf.o: | $(obj)/gconf-cflags ++endif - # Extract gconf menu items for i18n support - $(obj)/gconf.glade.h: $(obj)/gconf.glade + # check if necessary packages are available, and configure build flags + cmd_conf_cfg = $< $(addprefix $(obj)/$*conf-, cflags libs bin); touch $(obj)/$*conf-bin diff --git a/support/kconfig/patches/10-br-build-system.patch b/support/kconfig/patches/10-br-build-system.patch index abf2463691..b40e5e9160 100644 --- a/support/kconfig/patches/10-br-build-system.patch +++ b/support/kconfig/patches/10-br-build-system.patch @@ -1,13 +1,34 @@ ---- - Makefile.br | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - foo.h | 12 ++++++++++++ - 2 files changed, 65 insertions(+) - -Index: kconfig/Makefile.br -=================================================================== +diff --git a/Makefile b/Makefile +index 5697d38..f5f934d 100644 +--- a/Makefile ++++ b/Makefile +@@ -3,6 +3,11 @@ + # Kernel configuration targets + # These targets are used from top-level makefile + ++HOSTPKG_CONFIG = pkg-config ++export HOSTPKG_CONFIG ++ ++include $(src)/Kbuild.include ++ + ifdef KBUILD_KCONFIG + Kconfig := $(KBUILD_KCONFIG) + else +@@ -234,7 +239,7 @@ $(obj)/gconf.o: | $(obj)/gconf-cflags + endif + + # check if necessary packages are available, and configure build flags +-cmd_conf_cfg = $< $(addprefix $(obj)/$*conf-, cflags libs bin); touch $(obj)/$*conf-bin ++cmd_conf_cfg = $(src)/$< $(addprefix $(obj)/$*conf-, cflags libs bin); touch $(obj)/$*conf-bin + + $(obj)/%conf-cflags $(obj)/%conf-libs $(obj)/%conf-bin: $(src)/%conf-cfg.sh + $(call cmd,conf_cfg) +diff --git a/Makefile.br b/Makefile.br +new file mode 100644 +index 0000000..d163256 --- /dev/null -+++ kconfig/Makefile.br -@@ -0,0 +1,53 @@ ++++ b/Makefile.br +@@ -0,0 +1,55 @@ +src := . +top_srcdir=../../ +top_builddir=../../ @@ -15,12 +36,11 @@ Index: kconfig/Makefile.br +obj ?= . + +include Makefile -+#HOSTCFLAGS+=-Dinline="" -include foo.h +-include $(obj)/.depend +$(obj)/.depend: $(wildcard *.h *.c) + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) -MM *.c > $@ 2>/dev/null || : + -+__hostprogs := $(sort $(hostprogs-y) $(hostprogs-m)) ++__hostprogs := $(sort $(hostprogs)) +host-csingle := $(foreach m,$(__hostprogs),$(if $($(m)-objs),,$(m))) +host-cmulti := $(foreach m,$(__hostprogs),\ + $(if $($(m)-cxxobjs),,$(if $($(m)-objs),$(m)))) @@ -35,10 +55,10 @@ Index: kconfig/Makefile.br + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< -o $(obj)/$@ + +$(host-cmulti): %: $(host-cobjs) $(host-cshlib) -+ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ ++ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLDLIBS_$(@F)) -o $(obj)/$@ + +$(host-cxxmulti): %: $(host-cxxobjs) $(host-cobjs) $(host-cshlib) -+ $(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ ++ $(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLDLIBS_$(@F)) -o $(obj)/$@ + +$(obj)/%.o: %.c + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) -c $< -o $@ @@ -49,6 +69,9 @@ Index: kconfig/Makefile.br +$(obj)/%.o: %.cc + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$(@F)) -c $< -o $@ + ++$(obj)/%.o: $(obj)/%.cc ++ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$(@F)) -c $< -o $@ ++ +$(obj)/%:: $(src)/%_shipped + $(Q)cat $< > $@ + @@ -61,20 +84,3 @@ Index: kconfig/Makefile.br + +FORCE: +.PHONY: FORCE clean distclean -Index: kconfig/foo.h -=================================================================== ---- /dev/null -+++ kconfig/foo.h -@@ -0,0 +1,12 @@ -+#ifndef __KCONFIG_FOO_H -+#define __KCONFIG_FOO_H -+ -+#ifndef __APPLE__ -+#include -+#endif -+#include -+ -+#ifndef PATH_MAX -+#define PATH_MAX 1024 -+#endif -+#endif /* __KCONFIG_FOO_H */ diff --git a/support/kconfig/patches/11-use-mktemp-for-lxdialog.patch b/support/kconfig/patches/11-use-mktemp-for-lxdialog.patch deleted file mode 100644 index 387c633ae2..0000000000 --- a/support/kconfig/patches/11-use-mktemp-for-lxdialog.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- - lxdialog/check-lxdialog.sh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -Index: kconfig/lxdialog/check-lxdialog.sh -=================================================================== ---- kconfig.orig/lxdialog/check-lxdialog.sh -+++ kconfig/lxdialog/check-lxdialog.sh -@@ -41,7 +41,7 @@ ccflags() - } - - # Temp file, try to clean up after us --tmp=.lxdialog.tmp -+tmp=$(mktemp) - trap "rm -f $tmp" 0 1 2 3 15 - - # Check if we can link to ncurses diff --git a/support/kconfig/patches/12-fix-glade-file-path.patch b/support/kconfig/patches/12-fix-glade-file-path.patch index 7d5941fc9e..0bcb04e62d 100644 --- a/support/kconfig/patches/12-fix-glade-file-path.patch +++ b/support/kconfig/patches/12-fix-glade-file-path.patch @@ -1,12 +1,8 @@ ---- - gconf.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -Index: kconfig/gconf.c -=================================================================== ---- kconfig.orig/gconf.c -+++ kconfig/gconf.c -@@ -1462,7 +1462,7 @@ int main(int ac, char *av[]) +diff --git a/gconf.c b/gconf.c +index 9709aca..d24cebd 100644 +--- a/gconf.c ++++ b/gconf.c +@@ -1452,7 +1452,7 @@ int main(int ac, char *av[]) /* Determine GUI path */ env = getenv(SRCTREE); if (env) diff --git a/support/kconfig/patches/14-support-out-of-tree-config.patch b/support/kconfig/patches/14-support-out-of-tree-config.patch index a3b33ba688..02d438429e 100644 --- a/support/kconfig/patches/14-support-out-of-tree-config.patch +++ b/support/kconfig/patches/14-support-out-of-tree-config.patch @@ -1,36 +1,18 @@ ---- - conf.c | 1 - confdata.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++--------------- - util.c | 16 +++++++++++++-- - 3 files changed, 61 insertions(+), 18 deletions(-) - -Index: kconfig/conf.c -=================================================================== ---- kconfig.orig/conf.c -+++ kconfig/conf.c -@@ -565,7 +565,6 @@ int main(int ac, char **av) - } - name = av[optind]; - conf_parse(name); -- //zconfdump(stdout); - if (sync_kconfig) { - name = conf_get_configname(); - if (stat(name, &tmpstat)) { -Index: kconfig/confdata.c -=================================================================== ---- kconfig.orig/confdata.c -+++ kconfig/confdata.c -@@ -13,6 +13,7 @@ +diff --git a/confdata.c b/confdata.c +index 00a629b..eb952e8 100644 +--- a/confdata.c ++++ b/confdata.c +@@ -17,6 +17,7 @@ #include #include #include +#include + #include "internal.h" #include "lkc.h" +@@ -214,9 +215,7 @@ const char *conf_get_configname(void) -@@ -76,9 +77,7 @@ const char *conf_get_configname(void) - - const char *conf_get_autoconfig_name(void) + static const char *conf_get_autoconfig_name(void) { - char *name = getenv("KCONFIG_AUTOCONFIG"); - @@ -38,170 +20,4 @@ Index: kconfig/confdata.c + return getenv("KCONFIG_AUTOCONFIG"); } - static char *conf_expand_value(const char *in) -@@ -748,6 +747,9 @@ int conf_write(const char *name) - char dirname[PATH_MAX+1], tmpname[PATH_MAX+1], newname[PATH_MAX+1]; - char *env; - -+ if (!name) -+ name = conf_get_configname(); -+ - dirname[0] = 0; - if (name && name[0]) { - struct stat st; -@@ -842,6 +844,7 @@ static int conf_split_config(void) - { - const char *name; - char path[PATH_MAX+1]; -+ char *opwd, *dir, *_name; - char *s, *d, c; - struct symbol *sym; - struct stat sb; -@@ -851,8 +854,20 @@ static int conf_split_config(void) - conf_read_simple(name, S_DEF_AUTO); - sym_calc_value(modules_sym); - -- if (chdir("include/config")) -- return 1; -+ opwd = malloc(256); -+ _name = strdup(name); -+ if (opwd == NULL || _name == NULL) -+ return 1; -+ opwd = getcwd(opwd, 256); -+ dir = dirname(_name); -+ if (dir == NULL) { -+ res = 1; -+ goto err; -+ } -+ if (chdir(dir)) { -+ res = 1; -+ goto err; -+ } - - res = 0; - for_all_symbols(i, sym) { -@@ -945,9 +960,11 @@ static int conf_split_config(void) - close(fd); - } - out: -- if (chdir("../..")) -- return 1; -- -+ if (chdir(opwd)) -+ res = 1; -+err: -+ free(opwd); -+ free(_name); - return res; - } - -@@ -957,25 +974,38 @@ int conf_write_autoconf(void) - const char *name; - FILE *out, *tristate, *out_h; - int i; -+ char dir[PATH_MAX+1], buf[PATH_MAX+1]; -+ char *s; -+ -+ strcpy(dir, conf_get_configname()); -+ s = strrchr(dir, '/'); -+ if (s) -+ s[1] = 0; -+ else -+ dir[0] = 0; - - sym_clear_all_valid(); - -- file_write_dep("include/config/auto.conf.cmd"); -+ sprintf(buf, "%s.config.cmd", dir); -+ file_write_dep(buf); - - if (conf_split_config()) - return 1; - -- out = fopen(".tmpconfig", "w"); -+ sprintf(buf, "%s.tmpconfig", dir); -+ out = fopen(buf, "w"); - if (!out) - return 1; - -- tristate = fopen(".tmpconfig_tristate", "w"); -+ sprintf(buf, "%s.tmpconfig_tristate", dir); -+ tristate = fopen(buf, "w"); - if (!tristate) { - fclose(out); - return 1; - } - -- out_h = fopen(".tmpconfig.h", "w"); -+ sprintf(buf, "%s.tmpconfig.h", dir); -+ out_h = fopen(buf, "w"); - if (!out_h) { - fclose(out); - fclose(tristate); -@@ -1007,19 +1037,22 @@ int conf_write_autoconf(void) - name = getenv("KCONFIG_AUTOHEADER"); - if (!name) - name = "include/generated/autoconf.h"; -- if (rename(".tmpconfig.h", name)) -+ sprintf(buf, "%s.tmpconfig.h", dir); -+ if (rename(buf, name)) - return 1; - name = getenv("KCONFIG_TRISTATE"); - if (!name) - name = "include/config/tristate.conf"; -- if (rename(".tmpconfig_tristate", name)) -+ sprintf(buf, "%s.tmpconfig_tristate", dir); -+ if (rename(buf, name)) - return 1; - name = conf_get_autoconfig_name(); - /* - * This must be the last step, kbuild has a dependency on auto.conf - * and this marks the successful completion of the previous steps. - */ -- if (rename(".tmpconfig", name)) -+ sprintf(buf, "%s.tmpconfig", dir); -+ if (rename(buf, name)) - return 1; - - return 0; -Index: kconfig/util.c -=================================================================== ---- kconfig.orig/util.c -+++ kconfig/util.c -@@ -34,6 +34,8 @@ struct file *file_lookup(const char *nam - /* write a dependency file as used by kbuild to track dependencies */ - int file_write_dep(const char *name) - { -+ char *str; -+ char buf[PATH_MAX+1], buf2[PATH_MAX+1], dir[PATH_MAX+1]; - struct symbol *sym, *env_sym; - struct expr *e; - struct file *file; -@@ -41,7 +43,16 @@ int file_write_dep(const char *name) - - if (!name) - name = ".kconfig.d"; -- out = fopen("..config.tmp", "w"); -+ -+ strcpy(dir, conf_get_configname()); -+ str = strrchr(dir, '/'); -+ if (str) -+ str[1] = 0; -+ else -+ dir[0] = 0; -+ -+ sprintf(buf, "%s..config.tmp", dir); -+ out = fopen(buf, "w"); - if (!out) - return 1; - fprintf(out, "deps_config := \\\n"); -@@ -72,7 +83,8 @@ int file_write_dep(const char *name) - - fprintf(out, "\n$(deps_config): ;\n"); - fclose(out); -- rename("..config.tmp", name); -+ sprintf(buf2, "%s%s", dir, name); -+ rename(buf, buf2); - return 0; - } - + static const char *conf_get_autoheader_name(void) diff --git a/support/kconfig/patches/16-fix-space-to-de-select-options.patch b/support/kconfig/patches/16-fix-space-to-de-select-options.patch index 08f7ec5d95..2b7a4f5655 100644 --- a/support/kconfig/patches/16-fix-space-to-de-select-options.patch +++ b/support/kconfig/patches/16-fix-space-to-de-select-options.patch @@ -3,21 +3,21 @@ Author: Yann E. MORIN Date: Wed Nov 13 22:45:02 2013 +0100 support/kconfig: fix 'space' to (de)select options - + In case a menu has comment without letters/numbers (eg. characters matching the regexp '^[^[:alpha:][:digit:]]+$', for example - or *), hitting space will cycle through those comments, rather than selecting/deselecting the currently-highlighted option. - + This is the behaviour of hitting any letter/digit: jump to the next option which prompt starts with that letter. The only letters that do not behave as such are 'y' 'm' and 'n'. Prompts that start with one of those three letters are instead matched on the first letter that is not 'y', 'm' or 'n'. - + Fix that by treating 'space' as we treat y/m/n, ie. as an action key, not as shortcut to jump to prompt. - + Signed-off-by: "Yann E. MORIN" Cc: Thomas Petazzoni Cc: Peter Korsgaard @@ -25,12 +25,11 @@ Date: Wed Nov 13 22:45:02 2013 +0100 Cc: Thomas De Schampheleire --- Note: I'll be running this upstream soonish. - -Index: kconfig/lxdialog/menubox.c -=================================================================== ---- kconfig.orig/lxdialog/menubox.c -+++ kconfig/lxdialog/menubox.c -@@ -285,7 +285,7 @@ do_resize: +diff --git a/lxdialog/menubox.c b/lxdialog/menubox.c +index 6e6244d..d4c19b7 100644 +--- a/lxdialog/menubox.c ++++ b/lxdialog/menubox.c +@@ -264,7 +264,7 @@ do_resize: if (key < 256 && isalpha(key)) key = tolower(key); diff --git a/support/kconfig/patches/17-backport-kecho.patch b/support/kconfig/patches/17-backport-kecho.patch deleted file mode 100644 index 9d13876616..0000000000 --- a/support/kconfig/patches/17-backport-kecho.patch +++ /dev/null @@ -1,26 +0,0 @@ -This commit added kecho to scripts/Kbuild.include (and doc). -Backported just Kbuild.include part to Makefile - -commit 5410ecc0def8955ab99810c5626cc7e156991896 -Author: Mike Frysinger -Date: Thu Nov 6 03:31:34 2008 -0500 - - kbuild: introduce $(kecho) convenience echo - -Index: kconfig/Makefile -=================================================================== ---- kconfig.orig/Makefile -+++ kconfig/Makefile -@@ -6,6 +6,12 @@ - PHONY += xconfig gconfig menuconfig config syncconfig update-po-config \ - localmodconfig localyesconfig - -+# Easy method for doing a status message -+ kecho := : -+ quiet_kecho := echo -+silent_kecho := : -+kecho := $($(quiet)kecho) -+ - ifdef KBUILD_KCONFIG - Kconfig := $(KBUILD_KCONFIG) - else diff --git a/support/kconfig/patches/18-merge-config.sh-create-temporary-files-in-tmp.patch b/support/kconfig/patches/18-merge-config.sh-create-temporary-files-in-tmp.patch index f2a261f308..342d6359f6 100644 --- a/support/kconfig/patches/18-merge-config.sh-create-temporary-files-in-tmp.patch +++ b/support/kconfig/patches/18-merge-config.sh-create-temporary-files-in-tmp.patch @@ -11,17 +11,18 @@ Date: Mon, 7 Dec 2015 12:08:45 -0200 Signed-off-by: Henrique Marks Signed-off-by: Carlos Santos Signed-off-by: Peter Korsgaard - -Index: kconfig/merge_config.sh -=================================================================== ---- kconfig.orig/merge_config.sh -+++ kconfig/merge_config.sh -@@ -100,7 +100,7 @@ fi +diff --git a/merge_config.sh b/merge_config.sh +index 902eb42..05737ba 100755 +--- a/merge_config.sh ++++ b/merge_config.sh +@@ -120,8 +120,8 @@ MERGE_LIST=$* + SED_CONFIG_EXP1="s/^\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\)=.*/\1/p" + SED_CONFIG_EXP2="s/^# \(${CONFIG_PREFIX}[a-zA-Z0-9_]*\) is not set$/\1/p" - MERGE_LIST=$* - SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(CONFIG_[a-zA-Z0-9_]*\)[= ].*/\2/p" -TMP_FILE=$(mktemp ./.tmp.config.XXXXXXXXXX) +-MERGE_FILE=$(mktemp ./.merge_tmp.config.XXXXXXXXXX) +TMP_FILE=$(mktemp -t .tmp.config.XXXXXXXXXX) ++MERGE_FILE=$(mktemp -t .merge_tmp.config.XXXXXXXXXX) echo "Using $INITFILE as base" - cat $INITFILE > $TMP_FILE + diff --git a/support/kconfig/patches/19-merge_config.sh-add-br2-external-support.patch b/support/kconfig/patches/19-merge_config.sh-add-br2-external-support.patch index 1d0ef323bd..0b4814da1e 100644 --- a/support/kconfig/patches/19-merge_config.sh-add-br2-external-support.patch +++ b/support/kconfig/patches/19-merge_config.sh-add-br2-external-support.patch @@ -12,20 +12,20 @@ Date: Tue, 9 Jan 2018 14:37:43 +0300 Acked-by: "Yann E. MORIN" Signed-off-by: Peter Korsgaard -Index: kconfig/merge_config.sh -=================================================================== ---- kconfig.orig/merge_config.sh -+++ kconfig/merge_config.sh -@@ -33,6 +33,7 @@ usage() { - echo " -n use allnoconfig instead of alldefconfig" - echo " -r list redundant entries when merging fragments" +diff --git a/merge_config.sh b/merge_config.sh +index 05737ba..a5c0348 100755 +--- a/merge_config.sh ++++ b/merge_config.sh +@@ -30,6 +30,7 @@ usage() { echo " -O dir to put generated output files. Consider setting \$KCONFIG_CONFIG instead." + echo " -s strict mode. Fail if the fragment redefines any value." + echo " -Q disable warning messages for overridden options." + echo " -e colon-separated list of br2-external trees to use (optional)" + echo + echo "Used prefix: '$CONFIG_PREFIX'. You can redefine it with \$CONFIG_ environment variable." } - - RUNMAKE=true -@@ -71,6 +72,11 @@ while true; do - shift 2 +@@ -89,6 +90,11 @@ while true; do + shift continue ;; + "-e") @@ -36,7 +36,7 @@ Index: kconfig/merge_config.sh *) break ;; -@@ -151,7 +157,7 @@ fi +@@ -194,7 +200,7 @@ fi # Use the merged file as the starting point for: # alldefconfig: Fills in any missing symbols with Kconfig default # allnoconfig: Fills in any missing symbols with # CONFIG_* is not set diff --git a/support/kconfig/patches/20-merge_config.sh-Allow-to-define-config-prefix.patch b/support/kconfig/patches/20-merge_config.sh-Allow-to-define-config-prefix.patch deleted file mode 100644 index 645043b163..0000000000 --- a/support/kconfig/patches/20-merge_config.sh-Allow-to-define-config-prefix.patch +++ /dev/null @@ -1,31 +0,0 @@ -Index: kconfig/merge_config.sh -=================================================================== ---- kconfig.orig/merge_config.sh -+++ kconfig/merge_config.sh -@@ -34,12 +34,16 @@ usage() { - echo " -r list redundant entries when merging fragments" - echo " -O dir to put generated output files. Consider setting \$KCONFIG_CONFIG instead." - echo " -e colon-separated list of br2-external trees to use (optional)" -+ echo -+ echo "Used prefix: '$CONFIG_PREFIX'. You can redefine it with \$CONFIG_ -+ environment variable." - } - - RUNMAKE=true - ALLTARGET=alldefconfig - WARNREDUN=false - OUTPUT=. -+CONFIG_PREFIX=${CONFIG_-CONFIG_} - - while true; do - case $1 in -@@ -105,7 +109,8 @@ if [ ! -r "$INITFILE" ]; then - fi - - MERGE_LIST=$* --SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(CONFIG_[a-zA-Z0-9_]*\)[= ].*/\2/p" -+SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\)[= ].*/\2/p" -+ - TMP_FILE=$(mktemp -t .tmp.config.XXXXXXXXXX) - - echo "Using $INITFILE as base" diff --git a/support/kconfig/patches/21-Avoid-false-positive-matches-from-comment-lines.patch b/support/kconfig/patches/21-Avoid-false-positive-matches-from-comment-lines.patch deleted file mode 100644 index c11144e47e..0000000000 --- a/support/kconfig/patches/21-Avoid-false-positive-matches-from-comment-lines.patch +++ /dev/null @@ -1,32 +0,0 @@ -Index: kconfig/merge_config.sh -=================================================================== ---- kconfig.orig/merge_config.sh -+++ kconfig/merge_config.sh -@@ -109,7 +109,8 @@ if [ ! -r "$INITFILE" ]; then - fi - - MERGE_LIST=$* --SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\)[= ].*/\2/p" -+SED_CONFIG_EXP1="s/^\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\)=.*/\1/p" -+SED_CONFIG_EXP2="s/^# \(${CONFIG_PREFIX}[a-zA-Z0-9_]*\) is not set$/\1/p" - - TMP_FILE=$(mktemp -t .tmp.config.XXXXXXXXXX) - -@@ -123,7 +124,7 @@ for MERGE_FILE in $MERGE_LIST ; do - echo "The merge file '$MERGE_FILE' does not exist. Exit." >&2 - exit 1 - fi -- CFG_LIST=$(sed -n "$SED_CONFIG_EXP" $MERGE_FILE) -+ CFG_LIST=$(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $MERGE_FILE) - - for CFG in $CFG_LIST ; do - grep -q -w $CFG $TMP_FILE || continue -@@ -166,7 +167,7 @@ make KCONFIG_ALLCONFIG=$TMP_FILE $EXTERN - - - # Check all specified config values took (might have missed-dependency issues) --for CFG in $(sed -n "$SED_CONFIG_EXP" $TMP_FILE); do -+for CFG in $(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $TMP_FILE); do - - REQUESTED_VAL=$(grep -w -e "$CFG" $TMP_FILE) - ACTUAL_VAL=$(grep -w -e "$CFG" "$KCONFIG_CONFIG") diff --git a/support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch b/support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch deleted file mode 100644 index 41081bb45d..0000000000 --- a/support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 3ae91337b53fa3ccf0bad7f181fcaf483fab22ee Mon Sep 17 00:00:00 2001 -From: Robert Marko -Date: Wed, 3 Apr 2024 14:18:07 +0200 -Subject: [PATCH] kconfig/lxdialog: fix check() with GCC14 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -GCC14 now treats implicit int types as error so when check() from -check-lxdialog.sh is called to check whether we can link against ncurses -it will fail silently and the help text indicating to install ncurses is -printed. - -However, this is not due to missing ncurses but once the stderr redirect -to /dev/null is removed we can see the root cause: -:2:1: error: return type defaults to ?int? [-Wimplicit-int] - -So, in order for menuconfig to work with GCC14 lets just specify the -return type of main() as int. - -Signed-off-by: Robert Marko -Reviewed-by: Petr Vorel -Tested-by: Petr Vorel ---- - kconfig/lxdialog/check-lxdialog.sh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/kconfig/lxdialog/check-lxdialog.sh b/kconfig/lxdialog/check-lxdialog.sh -index 16cd9a3186..27d6c30a57 100755 ---- a/kconfig/lxdialog/check-lxdialog.sh -+++ b/kconfig/lxdialog/check-lxdialog.sh -@@ -48,7 +48,7 @@ trap "rm -f $tmp" 0 1 2 3 15 - check() { - $cc -x c - -o $tmp 2>/dev/null <<'EOF' - #include CURSES_LOC --main() {} -+int main() {} - EOF - if [ $? != 0 ]; then - echo " *** Unable to find the ncurses libraries or the" 1>&2 --- -2.44.0 - diff --git a/support/kconfig/patches/23-Revert-kconfig-allow-only-config-comment-and-if-insi.patch b/support/kconfig/patches/23-Revert-kconfig-allow-only-config-comment-and-if-insi.patch new file mode 100644 index 0000000000..d5a011bb6e --- /dev/null +++ b/support/kconfig/patches/23-Revert-kconfig-allow-only-config-comment-and-if-insi.patch @@ -0,0 +1,956 @@ +Revert "kconfig: allow only 'config', 'comment', and 'if' inside 'choice'" + +This reverts linux mainline commit 09d5873e4d1f70202314b5fe40160f9b14b9d2d0 +as applied to buildroot support/kconfig (additional update imported +parser.tab.c_shipped). + +Original patch header: + +The code block surrounded by 'if' ... 'endif' is reduced into if_stmt, +which is accepted in the 'choice' context. Therefore, you can write any +statements within a choice block by wrapping 'if y' ... 'end'. + +For example, you can create a menu inside a choice, like follows: + +---------------->8---------------- + choice + prompt "choice" + + config A + bool "A" + + config B + bool "B" + + if y + + menu "strange menu" + + config C + bool "C" + + endmenu + + endif + + endchoice +---------------->8---------------- + +I want to change such a weird structure into a syntax error. + +In fact, the USB gadget Kconfig had used nested 'choice' for no good +reason until commit df8df5e4bc37 ("usb: get rid of 'choice' for +legacy gadget drivers") killed it. + +I think the 'source' inside 'choice' is on the fence. It is at least +gramatically sensible as long as the included file contains only +bool/tristate configs. However, it makes the code unreadable, and people +tend to forget the fact that the file is included from the choice +block. Commit 10e5e6c24963 ("usb: gadget: move choice ... endchoice to +legacy/Kconfig") got rid of the only usecase. + +Going forward, you can only use 'config', 'comment', and 'if' inside +'choice'. This also recursively applies to 'if' blocks inside 'choice'. + +Signed-off-by: Masahiro Yamada +[Revert and applied to buildroot support/kconfig] +Signed-off-by: Peter Seiderer +diff --git a/parser.tab.c_shipped b/parser.tab.c_shipped +index 85234d0..092da33 100644 +--- a/parser.tab.c_shipped ++++ b/parser.tab.c_shipped +@@ -177,7 +177,7 @@ enum yysymbol_kind_t + YYSYMBOL_input = 51, /* input */ + YYSYMBOL_mainmenu_stmt = 52, /* mainmenu_stmt */ + YYSYMBOL_stmt_list = 53, /* stmt_list */ +- YYSYMBOL_stmt_list_in_choice = 54, /* stmt_list_in_choice */ ++ YYSYMBOL_common_stmt = 54, /* common_stmt */ + YYSYMBOL_config_entry_start = 55, /* config_entry_start */ + YYSYMBOL_config_stmt = 56, /* config_stmt */ + YYSYMBOL_menuconfig_entry_start = 57, /* menuconfig_entry_start */ +@@ -193,10 +193,10 @@ enum yysymbol_kind_t + YYSYMBOL_type = 67, /* type */ + YYSYMBOL_logic_type = 68, /* logic_type */ + YYSYMBOL_default = 69, /* default */ +- YYSYMBOL_if_entry = 70, /* if_entry */ +- YYSYMBOL_if_end = 71, /* if_end */ +- YYSYMBOL_if_stmt = 72, /* if_stmt */ +- YYSYMBOL_if_stmt_in_choice = 73, /* if_stmt_in_choice */ ++ YYSYMBOL_choice_block = 70, /* choice_block */ ++ YYSYMBOL_if_entry = 71, /* if_entry */ ++ YYSYMBOL_if_end = 72, /* if_end */ ++ YYSYMBOL_if_stmt = 73, /* if_stmt */ + YYSYMBOL_menu = 74, /* menu */ + YYSYMBOL_menu_entry = 75, /* menu_entry */ + YYSYMBOL_menu_end = 76, /* menu_end */ +@@ -546,16 +546,16 @@ union yyalloc + /* YYFINAL -- State number of the termination state. */ + #define YYFINAL 6 + /* YYLAST -- Last index in YYTABLE. */ +-#define YYLAST 186 ++#define YYLAST 189 + + /* YYNTOKENS -- Number of terminals. */ + #define YYNTOKENS 50 + /* YYNNTS -- Number of nonterminals. */ + #define YYNNTS 46 + /* YYNRULES -- Number of rules. */ +-#define YYNRULES 103 ++#define YYNRULES 100 + /* YYNSTATES -- Number of states. */ +-#define YYNSTATES 182 ++#define YYNSTATES 177 + + /* YYMAXUTOK -- Last valid token kind. */ + #define YYMAXUTOK 304 +@@ -610,16 +610,16 @@ static const yytype_int8 yytranslate[] = + static const yytype_int16 yyrline[] = + { + 0, 108, 108, 108, 112, 117, 119, 120, 121, 122, +- 123, 124, 125, 126, 127, 128, 131, 133, 134, 135, +- 136, 141, 148, 153, 160, 169, 171, 172, 173, 176, +- 182, 188, 197, 203, 209, 215, 225, 234, 245, 253, +- 256, 258, 259, 260, 263, 269, 275, 281, 288, 289, +- 290, 291, 294, 295, 298, 299, 300, 304, 312, 320, +- 323, 328, 335, 340, 348, 351, 353, 354, 357, 366, +- 373, 376, 378, 383, 389, 407, 414, 421, 423, 428, +- 429, 430, 433, 434, 437, 438, 439, 440, 441, 442, +- 443, 444, 445, 446, 447, 451, 453, 454, 459, 462, +- 463, 464, 468, 469 ++ 123, 127, 128, 129, 130, 131, 132, 137, 144, 149, ++ 156, 165, 167, 168, 169, 172, 178, 184, 193, 199, ++ 205, 211, 221, 230, 241, 249, 252, 254, 255, 256, ++ 259, 265, 271, 277, 284, 285, 286, 287, 290, 291, ++ 294, 295, 296, 298, 300, 305, 313, 321, 326, 333, ++ 338, 346, 349, 351, 352, 355, 364, 371, 374, 376, ++ 381, 387, 405, 412, 419, 421, 426, 427, 428, 431, ++ 432, 435, 436, 437, 438, 439, 440, 441, 442, 443, ++ 444, 445, 449, 451, 452, 457, 460, 461, 462, 466, ++ 467 + }; + #endif + +@@ -644,15 +644,15 @@ static const char *const yytname[] = + "T_PROMPT", "T_RANGE", "T_SELECT", "T_SOURCE", "T_STRING", "T_TRISTATE", + "T_VISIBLE", "T_EOL", "T_ASSIGN_VAL", "T_OR", "T_AND", "T_EQUAL", + "T_UNEQUAL", "T_LESS", "T_LESS_EQUAL", "T_GREATER", "T_GREATER_EQUAL", +- "T_NOT", "$accept", "input", "mainmenu_stmt", "stmt_list", +- "stmt_list_in_choice", "config_entry_start", "config_stmt", +- "menuconfig_entry_start", "menuconfig_stmt", "config_option_list", +- "config_option", "choice", "choice_entry", "choice_end", "choice_stmt", +- "choice_option_list", "choice_option", "type", "logic_type", "default", +- "if_entry", "if_end", "if_stmt", "if_stmt_in_choice", "menu", +- "menu_entry", "menu_end", "menu_stmt", "menu_option_list", "source_stmt", +- "comment", "comment_stmt", "comment_option_list", "help_start", "help", +- "depends", "visible", "prompt_stmt_opt", "end", "if_expr", "expr", ++ "T_NOT", "$accept", "input", "mainmenu_stmt", "stmt_list", "common_stmt", ++ "config_entry_start", "config_stmt", "menuconfig_entry_start", ++ "menuconfig_stmt", "config_option_list", "config_option", "choice", ++ "choice_entry", "choice_end", "choice_stmt", "choice_option_list", ++ "choice_option", "type", "logic_type", "default", "choice_block", ++ "if_entry", "if_end", "if_stmt", "menu", "menu_entry", "menu_end", ++ "menu_stmt", "menu_option_list", "source_stmt", "comment", ++ "comment_stmt", "comment_option_list", "help_start", "help", "depends", ++ "visible", "prompt_stmt_opt", "end", "if_expr", "expr", + "nonconst_symbol", "symbol", "assignment_stmt", "assign_op", + "assign_val", YY_NULLPTR + }; +@@ -664,7 +664,7 @@ yysymbol_name (yysymbol_kind_t yysymbol) + } + #endif + +-#define YYPACT_NINF (-62) ++#define YYPACT_NINF (-67) + + #define yypact_value_is_default(Yyn) \ + ((Yyn) == YYPACT_NINF) +@@ -678,25 +678,24 @@ yysymbol_name (yysymbol_kind_t yysymbol) + STATE-NUM. */ + static const yytype_int16 yypact[] = + { +- 5, 30, 39, -62, 33, 13, -62, 62, 16, 17, +- 22, 41, 60, 2, 77, 60, 79, -62, -62, -62, +- -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, +- -62, -62, -62, -62, -62, 26, -62, -62, -62, 27, +- -62, 47, -62, 50, -62, 2, 2, -20, -62, 31, +- 52, 55, 59, 107, 107, 130, 155, 89, -6, 89, +- 86, -62, -62, 69, -62, -62, 8, -62, -62, 2, +- 2, 23, 23, 23, 23, 23, 23, -62, -62, -62, +- -62, -62, -62, -62, 81, 72, -62, 60, -62, 78, +- 111, 23, 60, -62, -62, -62, 113, -62, 2, 120, +- -62, -62, 60, 92, 123, -62, 113, -62, -62, 93, +- 94, 108, 115, -62, -62, -62, -62, -62, -62, -62, +- -62, 104, -62, -62, -62, -62, -62, -62, -62, 110, +- -62, -62, -62, -62, -62, -62, -62, 2, -62, 104, +- -62, 104, 23, 104, 104, 119, 15, -62, 104, -62, +- 104, 122, -62, -62, -62, -62, 155, 2, 124, 96, +- 125, 129, 104, 131, -62, -62, 135, 136, 138, -62, +- -62, 29, -62, -62, -62, -62, 139, -62, -62, -62, +- -62, -62 ++ 15, 13, 29, -67, 30, 19, -67, 59, 22, 11, ++ 23, 52, 60, -1, 62, 60, 63, -67, -67, -67, ++ -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, ++ -67, -67, -67, -67, -67, -67, 32, -67, -67, -67, ++ 37, -67, 33, -67, 47, -67, -1, -1, 34, -67, ++ 141, 48, 49, 53, 111, 111, 84, 142, 94, 6, ++ 94, 76, -67, -67, 58, -67, -67, 5, -67, -67, ++ -1, -1, 18, 18, 18, 18, 18, 18, -67, -67, ++ -67, -67, -67, -67, -67, 72, 67, -67, 60, -67, ++ 69, 97, 18, 60, -67, -67, -67, 104, -67, -1, ++ 110, -67, -67, 60, 79, 117, -67, 104, -67, -67, ++ 7, 88, 89, 93, -67, -67, -67, -67, -67, 114, ++ -67, -67, -67, -67, -67, -67, -67, 95, -67, -67, ++ -67, -67, -67, -67, -67, -1, -67, 114, -67, 114, ++ 18, 114, 114, 100, -6, -67, 114, -67, 114, 101, ++ -67, -67, -67, -1, 102, 40, 103, 112, 114, 115, ++ -67, -67, 116, 118, 122, -67, -9, -67, -67, -67, ++ -67, 126, -67, -67, -67, -67, -67 + }; + + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. +@@ -705,44 +704,43 @@ static const yytype_int16 yypact[] = + static const yytype_int8 yydefact[] = + { + 5, 0, 0, 5, 0, 0, 1, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 25, 9, 25, +- 12, 40, 16, 7, 5, 10, 65, 5, 11, 13, +- 71, 8, 6, 4, 15, 0, 100, 101, 99, 102, +- 36, 0, 95, 0, 97, 0, 0, 0, 96, 84, +- 0, 0, 0, 22, 24, 37, 0, 0, 62, 0, +- 70, 14, 103, 0, 69, 21, 0, 92, 57, 0, +- 0, 0, 0, 0, 0, 0, 0, 61, 23, 68, +- 52, 54, 55, 56, 0, 0, 50, 0, 49, 0, +- 0, 0, 0, 51, 53, 26, 77, 48, 0, 0, +- 28, 27, 0, 0, 0, 41, 77, 43, 42, 0, +- 0, 0, 0, 18, 39, 16, 19, 17, 38, 59, +- 58, 82, 67, 66, 64, 63, 72, 98, 91, 93, +- 94, 89, 90, 85, 86, 87, 88, 0, 73, 82, +- 35, 82, 0, 82, 82, 0, 82, 74, 82, 46, +- 82, 0, 20, 80, 81, 79, 0, 0, 0, 0, +- 0, 0, 82, 0, 78, 29, 0, 0, 0, 45, +- 60, 83, 76, 75, 33, 30, 0, 32, 31, 47, +- 44, 34 ++ 0, 0, 0, 0, 0, 0, 0, 6, 21, 13, ++ 21, 14, 36, 53, 7, 5, 11, 62, 5, 8, ++ 15, 68, 12, 16, 4, 10, 0, 97, 98, 96, ++ 99, 32, 0, 92, 0, 94, 0, 0, 0, 93, ++ 81, 0, 0, 0, 18, 20, 33, 0, 0, 59, ++ 0, 67, 9, 100, 0, 66, 17, 0, 89, 55, ++ 0, 0, 0, 0, 0, 0, 0, 0, 58, 19, ++ 65, 48, 50, 51, 52, 0, 0, 46, 0, 45, ++ 0, 0, 0, 0, 47, 49, 22, 74, 44, 0, ++ 0, 24, 23, 0, 0, 0, 37, 74, 39, 38, ++ 0, 0, 0, 0, 54, 35, 34, 57, 56, 79, ++ 64, 63, 61, 60, 69, 95, 88, 90, 91, 86, ++ 87, 82, 83, 84, 85, 0, 70, 79, 31, 79, ++ 0, 79, 79, 0, 79, 71, 79, 42, 79, 0, ++ 77, 78, 76, 0, 0, 0, 0, 0, 79, 0, ++ 75, 25, 0, 0, 0, 41, 80, 73, 72, 29, ++ 26, 0, 28, 27, 43, 40, 30 + }; + + /* YYPGOTO[NTERM-NUM]. */ + static const yytype_int16 yypgoto[] = + { +- -62, -62, -62, 14, 44, -62, -54, -62, -62, 160, +- -62, -62, -62, -62, -62, -62, -62, -62, 126, -62, +- -53, 24, -62, -62, -62, -62, -62, -62, -62, -62, +- -62, -52, -62, -62, 127, -13, -62, 80, -36, 7, +- -45, -7, -61, -62, -62, -62 ++ -67, -67, -67, 24, 92, -67, -67, -67, -67, 130, ++ -67, -67, -67, -67, -67, -67, -67, -67, 80, -67, ++ -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, ++ -67, -67, -67, -67, 119, -42, -67, 65, -15, 25, ++ -46, -10, -66, -67, -67, -67 + }; + + /* YYDEFGOTO[NTERM-NUM]. */ + static const yytype_uint8 yydefgoto[] = + { +- 0, 2, 3, 4, 56, 17, 18, 19, 20, 53, +- 95, 21, 22, 114, 23, 55, 105, 96, 97, 98, +- 24, 119, 25, 116, 26, 27, 124, 28, 58, 29, +- 30, 31, 60, 99, 100, 101, 123, 145, 120, 158, +- 47, 48, 49, 32, 39, 63 ++ 0, 2, 3, 4, 17, 18, 19, 20, 21, 54, ++ 96, 22, 23, 115, 24, 56, 106, 97, 98, 99, ++ 57, 25, 117, 26, 27, 28, 122, 29, 59, 30, ++ 31, 32, 61, 100, 101, 102, 121, 143, 116, 154, ++ 48, 49, 50, 33, 40, 64 + }; + + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If +@@ -750,48 +748,48 @@ static const yytype_uint8 yydefgoto[] = + number is the opposite. If YYTABLE_NINF, syntax error. */ + static const yytype_int16 yytable[] = + { +- 66, 67, 113, 115, 117, 43, 42, 44, 51, 84, +- 131, 132, 133, 134, 135, 136, 128, 7, 35, 68, +- 118, 69, 70, 125, 129, 130, 36, 42, 44, 1, +- 142, 45, 121, -3, 8, 5, 157, 9, 57, 6, +- 10, 59, 108, 11, 12, 122, 41, 126, 37, 69, +- 70, 46, 33, 146, 13, 34, 69, 70, 14, 15, +- 38, 40, -2, 8, 42, 61, 9, 62, 16, 10, +- 69, 70, 11, 12, 71, 72, 73, 74, 75, 76, +- 139, 162, 50, 13, 52, 143, 64, 14, 15, 65, +- 8, 77, 159, 9, 78, 148, 10, 16, 79, 11, +- 12, 84, 113, 115, 117, 110, 111, 112, 127, 137, +- 13, 138, 171, 80, 14, 15, 141, 140, 144, 81, +- 82, 83, 84, 147, 16, 157, 85, 86, 150, 87, +- 88, 149, 152, 153, 89, 173, 80, 69, 70, 90, +- 91, 92, 102, 93, 94, 84, 160, 154, 161, 85, +- 163, 164, 70, 166, 155, 167, 109, 168, 165, 156, +- 103, 169, 104, 172, 174, 11, 12, 94, 175, 176, +- 177, 110, 111, 112, 178, 179, 13, 180, 181, 54, +- 170, 106, 107, 0, 0, 0, 151 ++ 67, 68, 44, 43, 45, 52, 129, 130, 131, 132, ++ 133, 134, 36, 126, 109, 153, 37, 120, 5, 124, ++ 37, 85, 43, 45, 127, 128, 140, 7, 46, 6, ++ -3, 8, 70, 71, 9, 70, 71, 10, 38, 1, ++ 11, 12, 38, 118, 119, 123, 70, 71, 47, 58, ++ 39, 13, 60, 144, 39, 14, 15, 42, 34, -2, ++ 8, 35, 41, 9, 43, 16, 10, 51, 53, 11, ++ 12, 62, 65, 69, 158, 70, 71, 63, 137, 168, ++ 13, 70, 71, 141, 14, 15, 66, 78, 79, 155, ++ 81, 85, 80, 146, 16, 8, 103, 125, 9, 85, ++ 135, 10, 139, 86, 11, 12, 136, 166, 138, 142, ++ 111, 112, 113, 145, 104, 13, 105, 81, 147, 14, ++ 15, 95, 148, 82, 83, 84, 85, 150, 151, 16, ++ 86, 87, 152, 88, 89, 153, 107, 71, 90, 161, ++ 165, 167, 169, 91, 92, 93, 110, 94, 95, 114, ++ 55, 170, 11, 12, 172, 173, 0, 174, 111, 112, ++ 113, 175, 156, 13, 157, 176, 159, 160, 15, 162, ++ 0, 163, 149, 164, 0, 108, 0, 16, 0, 0, ++ 0, 0, 0, 171, 72, 73, 74, 75, 76, 77 + }; + + static const yytype_int16 yycheck[] = + { +- 45, 46, 56, 56, 56, 12, 4, 5, 15, 15, +- 71, 72, 73, 74, 75, 76, 8, 3, 1, 39, +- 56, 41, 42, 59, 69, 70, 9, 4, 5, 24, +- 91, 29, 38, 0, 1, 5, 21, 4, 24, 0, +- 7, 27, 55, 10, 11, 58, 5, 60, 31, 41, +- 42, 49, 39, 98, 21, 39, 41, 42, 25, 26, +- 43, 39, 0, 1, 4, 39, 4, 40, 35, 7, +- 41, 42, 10, 11, 43, 44, 45, 46, 47, 48, +- 87, 142, 5, 21, 5, 92, 39, 25, 26, 39, +- 1, 39, 137, 4, 39, 102, 7, 35, 39, 10, +- 11, 15, 156, 156, 156, 16, 17, 18, 39, 28, +- 21, 39, 157, 6, 25, 26, 5, 39, 5, 12, +- 13, 14, 15, 3, 35, 21, 19, 20, 5, 22, +- 23, 39, 39, 39, 27, 39, 6, 41, 42, 32, +- 33, 34, 12, 36, 37, 15, 139, 39, 141, 19, +- 143, 144, 42, 146, 39, 148, 1, 150, 39, 115, +- 30, 39, 32, 39, 39, 10, 11, 37, 39, 162, +- 39, 16, 17, 18, 39, 39, 21, 39, 39, 19, +- 156, 55, 55, -1, -1, -1, 106 ++ 46, 47, 12, 4, 5, 15, 72, 73, 74, 75, ++ 76, 77, 1, 8, 56, 21, 9, 59, 5, 61, ++ 9, 15, 4, 5, 70, 71, 92, 3, 29, 0, ++ 0, 1, 41, 42, 4, 41, 42, 7, 31, 24, ++ 10, 11, 31, 58, 38, 60, 41, 42, 49, 25, ++ 43, 21, 28, 99, 43, 25, 26, 5, 39, 0, ++ 1, 39, 39, 4, 4, 35, 7, 5, 5, 10, ++ 11, 39, 39, 39, 140, 41, 42, 40, 88, 39, ++ 21, 41, 42, 93, 25, 26, 39, 39, 39, 135, ++ 6, 15, 39, 103, 35, 1, 12, 39, 4, 15, ++ 28, 7, 5, 19, 10, 11, 39, 153, 39, 5, ++ 16, 17, 18, 3, 30, 21, 32, 6, 39, 25, ++ 26, 37, 5, 12, 13, 14, 15, 39, 39, 35, ++ 19, 20, 39, 22, 23, 21, 56, 42, 27, 39, ++ 39, 39, 39, 32, 33, 34, 4, 36, 37, 57, ++ 20, 39, 10, 11, 39, 39, -1, 39, 16, 17, ++ 18, 39, 137, 21, 139, 39, 141, 142, 26, 144, ++ -1, 146, 107, 148, -1, 56, -1, 35, -1, -1, ++ -1, -1, -1, 158, 43, 44, 45, 46, 47, 48 + }; + + /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of +@@ -799,56 +797,55 @@ static const yytype_int16 yycheck[] = + static const yytype_int8 yystos[] = + { + 0, 24, 51, 52, 53, 5, 0, 53, 1, 4, +- 7, 10, 11, 21, 25, 26, 35, 55, 56, 57, +- 58, 61, 62, 64, 70, 72, 74, 75, 77, 79, +- 80, 81, 93, 39, 39, 1, 9, 31, 43, 94, +- 39, 5, 4, 91, 5, 29, 49, 90, 91, 92, +- 5, 91, 5, 59, 59, 65, 54, 53, 78, 53, +- 82, 39, 40, 95, 39, 39, 90, 90, 39, 41, +- 42, 43, 44, 45, 46, 47, 48, 39, 39, 39, +- 6, 12, 13, 14, 15, 19, 20, 22, 23, 27, +- 32, 33, 34, 36, 37, 60, 67, 68, 69, 83, +- 84, 85, 12, 30, 32, 66, 68, 84, 85, 1, +- 16, 17, 18, 56, 63, 70, 73, 81, 88, 71, +- 88, 38, 85, 86, 76, 88, 85, 39, 8, 90, +- 90, 92, 92, 92, 92, 92, 92, 28, 39, 91, +- 39, 5, 92, 91, 5, 87, 90, 3, 91, 39, +- 5, 87, 39, 39, 39, 39, 54, 21, 89, 90, +- 89, 89, 92, 89, 89, 39, 89, 89, 89, 39, +- 71, 90, 39, 39, 39, 39, 89, 39, 39, 39, +- 39, 39 ++ 7, 10, 11, 21, 25, 26, 35, 54, 55, 56, ++ 57, 58, 61, 62, 64, 71, 73, 74, 75, 77, ++ 79, 80, 81, 93, 39, 39, 1, 9, 31, 43, ++ 94, 39, 5, 4, 91, 5, 29, 49, 90, 91, ++ 92, 5, 91, 5, 59, 59, 65, 70, 53, 78, ++ 53, 82, 39, 40, 95, 39, 39, 90, 90, 39, ++ 41, 42, 43, 44, 45, 46, 47, 48, 39, 39, ++ 39, 6, 12, 13, 14, 15, 19, 20, 22, 23, ++ 27, 32, 33, 34, 36, 37, 60, 67, 68, 69, ++ 83, 84, 85, 12, 30, 32, 66, 68, 84, 85, ++ 4, 16, 17, 18, 54, 63, 88, 72, 88, 38, ++ 85, 86, 76, 88, 85, 39, 8, 90, 90, 92, ++ 92, 92, 92, 92, 92, 28, 39, 91, 39, 5, ++ 92, 91, 5, 87, 90, 3, 91, 39, 5, 87, ++ 39, 39, 39, 21, 89, 90, 89, 89, 92, 89, ++ 89, 39, 89, 89, 89, 39, 90, 39, 39, 39, ++ 39, 89, 39, 39, 39, 39, 39 + }; + + /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ + static const yytype_int8 yyr1[] = + { + 0, 50, 51, 51, 52, 53, 53, 53, 53, 53, +- 53, 53, 53, 53, 53, 53, 54, 54, 54, 54, +- 54, 55, 56, 57, 58, 59, 59, 59, 59, 60, +- 60, 60, 60, 60, 60, 60, 61, 62, 63, 64, +- 65, 65, 65, 65, 66, 66, 66, 66, 67, 67, +- 67, 67, 68, 68, 69, 69, 69, 70, 71, 72, +- 73, 74, 75, 76, 77, 78, 78, 78, 79, 80, +- 81, 82, 82, 83, 84, 85, 86, 87, 87, 88, +- 88, 88, 89, 89, 90, 90, 90, 90, 90, 90, +- 90, 90, 90, 90, 90, 91, 92, 92, 93, 94, +- 94, 94, 95, 95 ++ 53, 54, 54, 54, 54, 54, 54, 55, 56, 57, ++ 58, 59, 59, 59, 59, 60, 60, 60, 60, 60, ++ 60, 60, 61, 62, 63, 64, 65, 65, 65, 65, ++ 66, 66, 66, 66, 67, 67, 67, 67, 68, 68, ++ 69, 69, 69, 70, 70, 71, 72, 73, 74, 75, ++ 76, 77, 78, 78, 78, 79, 80, 81, 82, 82, ++ 83, 84, 85, 86, 87, 87, 88, 88, 88, 89, ++ 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, ++ 90, 90, 91, 92, 92, 93, 94, 94, 94, 95, ++ 95 + }; + + /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ + static const yytype_int8 yyr2[] = + { +- 0, 2, 2, 1, 3, 0, 2, 2, 2, 2, +- 2, 2, 2, 2, 4, 3, 0, 2, 2, 2, +- 3, 3, 2, 3, 2, 0, 2, 2, 2, 3, +- 4, 4, 4, 4, 5, 2, 2, 2, 1, 3, +- 0, 2, 2, 2, 4, 3, 2, 4, 1, 1, +- 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, +- 3, 3, 2, 1, 3, 0, 2, 2, 3, 3, +- 2, 0, 2, 2, 2, 4, 3, 0, 2, 2, +- 2, 2, 0, 2, 1, 3, 3, 3, 3, 3, +- 3, 3, 2, 3, 3, 1, 1, 1, 4, 1, +- 1, 1, 0, 1 ++ 0, 2, 2, 1, 3, 0, 2, 2, 2, 4, ++ 3, 1, 1, 1, 1, 1, 1, 3, 2, 3, ++ 2, 0, 2, 2, 2, 3, 4, 4, 4, 4, ++ 5, 2, 2, 2, 1, 3, 0, 2, 2, 2, ++ 4, 3, 2, 4, 1, 1, 1, 1, 1, 1, ++ 1, 1, 1, 0, 2, 3, 1, 3, 3, 2, ++ 1, 3, 0, 2, 2, 3, 3, 2, 0, 2, ++ 2, 2, 4, 3, 0, 2, 2, 2, 2, 0, ++ 2, 1, 3, 3, 3, 3, 3, 3, 3, 2, ++ 3, 3, 1, 1, 1, 4, 1, 1, 1, 0, ++ 1 + }; + + +@@ -1348,19 +1345,15 @@ yyreduce: + } + break; + +- case 14: /* stmt_list: stmt_list T_WORD error T_EOL */ ++ case 9: /* stmt_list: stmt_list T_WORD error T_EOL */ + { zconf_error("unknown statement \"%s\"", (yyvsp[-2].string)); } + break; + +- case 15: /* stmt_list: stmt_list error T_EOL */ ++ case 10: /* stmt_list: stmt_list error T_EOL */ + { zconf_error("invalid statement"); } + break; + +- case 20: /* stmt_list_in_choice: stmt_list_in_choice error T_EOL */ +- { zconf_error("invalid statement"); } +- break; +- +- case 21: /* config_entry_start: T_CONFIG nonconst_symbol T_EOL */ ++ case 17: /* config_entry_start: T_CONFIG nonconst_symbol T_EOL */ + { + (yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL; + menu_add_entry((yyvsp[-1].symbol)); +@@ -1368,13 +1361,13 @@ yyreduce: + } + break; + +- case 22: /* config_stmt: config_entry_start config_option_list */ ++ case 18: /* config_stmt: config_entry_start config_option_list */ + { + printd(DEBUG_PARSE, "%s:%d:endconfig\n", cur_filename, cur_lineno); + } + break; + +- case 23: /* menuconfig_entry_start: T_MENUCONFIG nonconst_symbol T_EOL */ ++ case 19: /* menuconfig_entry_start: T_MENUCONFIG nonconst_symbol T_EOL */ + { + (yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL; + menu_add_entry((yyvsp[-1].symbol)); +@@ -1382,7 +1375,7 @@ yyreduce: + } + break; + +- case 24: /* menuconfig_stmt: menuconfig_entry_start config_option_list */ ++ case 20: /* menuconfig_stmt: menuconfig_entry_start config_option_list */ + { + if (current_entry->prompt) + current_entry->prompt->type = P_MENU; +@@ -1392,21 +1385,21 @@ yyreduce: + } + break; + +- case 29: /* config_option: type prompt_stmt_opt T_EOL */ ++ case 25: /* config_option: type prompt_stmt_opt T_EOL */ + { + menu_set_type((yyvsp[-2].type)); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", cur_filename, cur_lineno, (yyvsp[-2].type)); + } + break; + +- case 30: /* config_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL */ ++ case 26: /* config_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL */ + { + menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:prompt\n", cur_filename, cur_lineno); + } + break; + +- case 31: /* config_option: default expr if_expr T_EOL */ ++ case 27: /* config_option: default expr if_expr T_EOL */ + { + menu_add_expr(P_DEFAULT, (yyvsp[-2].expr), (yyvsp[-1].expr)); + if ((yyvsp[-3].type) != S_UNKNOWN) +@@ -1416,28 +1409,28 @@ yyreduce: + } + break; + +- case 32: /* config_option: T_SELECT nonconst_symbol if_expr T_EOL */ ++ case 28: /* config_option: T_SELECT nonconst_symbol if_expr T_EOL */ + { + menu_add_symbol(P_SELECT, (yyvsp[-2].symbol), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:select\n", cur_filename, cur_lineno); + } + break; + +- case 33: /* config_option: T_IMPLY nonconst_symbol if_expr T_EOL */ ++ case 29: /* config_option: T_IMPLY nonconst_symbol if_expr T_EOL */ + { + menu_add_symbol(P_IMPLY, (yyvsp[-2].symbol), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:imply\n", cur_filename, cur_lineno); + } + break; + +- case 34: /* config_option: T_RANGE symbol symbol if_expr T_EOL */ ++ case 30: /* config_option: T_RANGE symbol symbol if_expr T_EOL */ + { + menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[-3].symbol), (yyvsp[-2].symbol)), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:range\n", cur_filename, cur_lineno); + } + break; + +- case 35: /* config_option: T_MODULES T_EOL */ ++ case 31: /* config_option: T_MODULES T_EOL */ + { + if (modules_sym) + zconf_error("symbol '%s' redefines option 'modules' already defined by symbol '%s'", +@@ -1446,7 +1439,7 @@ yyreduce: + } + break; + +- case 36: /* choice: T_CHOICE T_EOL */ ++ case 32: /* choice: T_CHOICE T_EOL */ + { + struct symbol *sym = sym_lookup(NULL, SYMBOL_CHOICE); + sym->flags |= SYMBOL_NO_WRITE; +@@ -1456,7 +1449,7 @@ yyreduce: + } + break; + +- case 37: /* choice_entry: choice choice_option_list */ ++ case 33: /* choice_entry: choice choice_option_list */ + { + if (!current_entry->prompt) { + fprintf(stderr, "%s:%d: error: choice must have a prompt\n", +@@ -1468,7 +1461,7 @@ yyreduce: + } + break; + +- case 38: /* choice_end: end */ ++ case 34: /* choice_end: end */ + { + if (zconf_endtoken((yyvsp[0].string), "choice")) { + menu_end_menu(); +@@ -1477,67 +1470,67 @@ yyreduce: + } + break; + +- case 44: /* choice_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL */ ++ case 40: /* choice_option: T_PROMPT T_WORD_QUOTE if_expr T_EOL */ + { + menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:prompt\n", cur_filename, cur_lineno); + } + break; + +- case 45: /* choice_option: logic_type prompt_stmt_opt T_EOL */ ++ case 41: /* choice_option: logic_type prompt_stmt_opt T_EOL */ + { + menu_set_type((yyvsp[-2].type)); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", cur_filename, cur_lineno, (yyvsp[-2].type)); + } + break; + +- case 46: /* choice_option: T_OPTIONAL T_EOL */ ++ case 42: /* choice_option: T_OPTIONAL T_EOL */ + { + current_entry->sym->flags |= SYMBOL_OPTIONAL; + printd(DEBUG_PARSE, "%s:%d:optional\n", cur_filename, cur_lineno); + } + break; + +- case 47: /* choice_option: T_DEFAULT nonconst_symbol if_expr T_EOL */ ++ case 43: /* choice_option: T_DEFAULT nonconst_symbol if_expr T_EOL */ + { + menu_add_symbol(P_DEFAULT, (yyvsp[-2].symbol), (yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:default\n", cur_filename, cur_lineno); + } + break; + +- case 49: /* type: T_INT */ ++ case 45: /* type: T_INT */ + { (yyval.type) = S_INT; } + break; + +- case 50: /* type: T_HEX */ ++ case 46: /* type: T_HEX */ + { (yyval.type) = S_HEX; } + break; + +- case 51: /* type: T_STRING */ ++ case 47: /* type: T_STRING */ + { (yyval.type) = S_STRING; } + break; + +- case 52: /* logic_type: T_BOOL */ ++ case 48: /* logic_type: T_BOOL */ + { (yyval.type) = S_BOOLEAN; } + break; + +- case 53: /* logic_type: T_TRISTATE */ ++ case 49: /* logic_type: T_TRISTATE */ + { (yyval.type) = S_TRISTATE; } + break; + +- case 54: /* default: T_DEFAULT */ ++ case 50: /* default: T_DEFAULT */ + { (yyval.type) = S_UNKNOWN; } + break; + +- case 55: /* default: T_DEF_BOOL */ ++ case 51: /* default: T_DEF_BOOL */ + { (yyval.type) = S_BOOLEAN; } + break; + +- case 56: /* default: T_DEF_TRISTATE */ ++ case 52: /* default: T_DEF_TRISTATE */ + { (yyval.type) = S_TRISTATE; } + break; + +- case 57: /* if_entry: T_IF expr T_EOL */ ++ case 55: /* if_entry: T_IF expr T_EOL */ + { + printd(DEBUG_PARSE, "%s:%d:if\n", cur_filename, cur_lineno); + menu_add_entry(NULL); +@@ -1546,7 +1539,7 @@ yyreduce: + } + break; + +- case 58: /* if_end: end */ ++ case 56: /* if_end: end */ + { + if (zconf_endtoken((yyvsp[0].string), "if")) { + menu_end_menu(); +@@ -1555,7 +1548,7 @@ yyreduce: + } + break; + +- case 61: /* menu: T_MENU T_WORD_QUOTE T_EOL */ ++ case 58: /* menu: T_MENU T_WORD_QUOTE T_EOL */ + { + menu_add_entry(NULL); + menu_add_prompt(P_MENU, (yyvsp[-1].string), NULL); +@@ -1563,13 +1556,13 @@ yyreduce: + } + break; + +- case 62: /* menu_entry: menu menu_option_list */ ++ case 59: /* menu_entry: menu menu_option_list */ + { + (yyval.menu) = menu_add_menu(); + } + break; + +- case 63: /* menu_end: end */ ++ case 60: /* menu_end: end */ + { + if (zconf_endtoken((yyvsp[0].string), "menu")) { + menu_end_menu(); +@@ -1578,7 +1571,7 @@ yyreduce: + } + break; + +- case 68: /* source_stmt: T_SOURCE T_WORD_QUOTE T_EOL */ ++ case 65: /* source_stmt: T_SOURCE T_WORD_QUOTE T_EOL */ + { + printd(DEBUG_PARSE, "%s:%d:source %s\n", cur_filename, cur_lineno, (yyvsp[-1].string)); + zconf_nextfile((yyvsp[-1].string)); +@@ -1586,7 +1579,7 @@ yyreduce: + } + break; + +- case 69: /* comment: T_COMMENT T_WORD_QUOTE T_EOL */ ++ case 66: /* comment: T_COMMENT T_WORD_QUOTE T_EOL */ + { + menu_add_entry(NULL); + menu_add_prompt(P_COMMENT, (yyvsp[-1].string), NULL); +@@ -1594,14 +1587,14 @@ yyreduce: + } + break; + +- case 73: /* help_start: T_HELP T_EOL */ ++ case 70: /* help_start: T_HELP T_EOL */ + { + printd(DEBUG_PARSE, "%s:%d:help\n", cur_filename, cur_lineno); + zconf_starthelp(); + } + break; + +- case 74: /* help: help_start T_HELPTEXT */ ++ case 71: /* help: help_start T_HELPTEXT */ + { + if (current_entry->help) { + free(current_entry->help); +@@ -1618,114 +1611,114 @@ yyreduce: + } + break; + +- case 75: /* depends: T_DEPENDS T_ON expr T_EOL */ ++ case 72: /* depends: T_DEPENDS T_ON expr T_EOL */ + { + menu_add_dep((yyvsp[-1].expr)); + printd(DEBUG_PARSE, "%s:%d:depends on\n", cur_filename, cur_lineno); + } + break; + +- case 76: /* visible: T_VISIBLE if_expr T_EOL */ ++ case 73: /* visible: T_VISIBLE if_expr T_EOL */ + { + menu_add_visibility((yyvsp[-1].expr)); + } + break; + +- case 78: /* prompt_stmt_opt: T_WORD_QUOTE if_expr */ ++ case 75: /* prompt_stmt_opt: T_WORD_QUOTE if_expr */ + { + menu_add_prompt(P_PROMPT, (yyvsp[-1].string), (yyvsp[0].expr)); + } + break; + +- case 79: /* end: T_ENDMENU T_EOL */ ++ case 76: /* end: T_ENDMENU T_EOL */ + { (yyval.string) = "menu"; } + break; + +- case 80: /* end: T_ENDCHOICE T_EOL */ ++ case 77: /* end: T_ENDCHOICE T_EOL */ + { (yyval.string) = "choice"; } + break; + +- case 81: /* end: T_ENDIF T_EOL */ ++ case 78: /* end: T_ENDIF T_EOL */ + { (yyval.string) = "if"; } + break; + +- case 82: /* if_expr: %empty */ ++ case 79: /* if_expr: %empty */ + { (yyval.expr) = NULL; } + break; + +- case 83: /* if_expr: T_IF expr */ ++ case 80: /* if_expr: T_IF expr */ + { (yyval.expr) = (yyvsp[0].expr); } + break; + +- case 84: /* expr: symbol */ ++ case 81: /* expr: symbol */ + { (yyval.expr) = expr_alloc_symbol((yyvsp[0].symbol)); } + break; + +- case 85: /* expr: symbol T_LESS symbol */ ++ case 82: /* expr: symbol T_LESS symbol */ + { (yyval.expr) = expr_alloc_comp(E_LTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + +- case 86: /* expr: symbol T_LESS_EQUAL symbol */ ++ case 83: /* expr: symbol T_LESS_EQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_LEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + +- case 87: /* expr: symbol T_GREATER symbol */ ++ case 84: /* expr: symbol T_GREATER symbol */ + { (yyval.expr) = expr_alloc_comp(E_GTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + +- case 88: /* expr: symbol T_GREATER_EQUAL symbol */ ++ case 85: /* expr: symbol T_GREATER_EQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_GEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + +- case 89: /* expr: symbol T_EQUAL symbol */ ++ case 86: /* expr: symbol T_EQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + +- case 90: /* expr: symbol T_UNEQUAL symbol */ ++ case 87: /* expr: symbol T_UNEQUAL symbol */ + { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } + break; + +- case 91: /* expr: T_OPEN_PAREN expr T_CLOSE_PAREN */ ++ case 88: /* expr: T_OPEN_PAREN expr T_CLOSE_PAREN */ + { (yyval.expr) = (yyvsp[-1].expr); } + break; + +- case 92: /* expr: T_NOT expr */ ++ case 89: /* expr: T_NOT expr */ + { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[0].expr)); } + break; + +- case 93: /* expr: expr T_OR expr */ ++ case 90: /* expr: expr T_OR expr */ + { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[-2].expr), (yyvsp[0].expr)); } + break; + +- case 94: /* expr: expr T_AND expr */ ++ case 91: /* expr: expr T_AND expr */ + { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); } + break; + +- case 95: /* nonconst_symbol: T_WORD */ ++ case 92: /* nonconst_symbol: T_WORD */ + { (yyval.symbol) = sym_lookup((yyvsp[0].string), 0); free((yyvsp[0].string)); } + break; + +- case 97: /* symbol: T_WORD_QUOTE */ ++ case 94: /* symbol: T_WORD_QUOTE */ + { (yyval.symbol) = sym_lookup((yyvsp[0].string), SYMBOL_CONST); free((yyvsp[0].string)); } + break; + +- case 98: /* assignment_stmt: T_WORD assign_op assign_val T_EOL */ ++ case 95: /* assignment_stmt: T_WORD assign_op assign_val T_EOL */ + { variable_add((yyvsp[-3].string), (yyvsp[-1].string), (yyvsp[-2].flavor)); free((yyvsp[-3].string)); free((yyvsp[-1].string)); } + break; + +- case 99: /* assign_op: T_EQUAL */ ++ case 96: /* assign_op: T_EQUAL */ + { (yyval.flavor) = VAR_RECURSIVE; } + break; + +- case 100: /* assign_op: T_COLON_EQUAL */ ++ case 97: /* assign_op: T_COLON_EQUAL */ + { (yyval.flavor) = VAR_SIMPLE; } + break; + +- case 101: /* assign_op: T_PLUS_EQUAL */ ++ case 98: /* assign_op: T_PLUS_EQUAL */ + { (yyval.flavor) = VAR_APPEND; } + break; + +- case 102: /* assign_val: %empty */ ++ case 99: /* assign_val: %empty */ + { (yyval.string) = xstrdup(""); } + break; + +diff --git a/parser.y b/parser.y +index 7fb9966..9873e84 100644 +--- a/parser.y ++++ b/parser.y +@@ -116,24 +116,20 @@ mainmenu_stmt: T_MAINMENU T_WORD_QUOTE T_EOL + + stmt_list: + /* empty */ +- | stmt_list assignment_stmt ++ | stmt_list common_stmt + | stmt_list choice_stmt +- | stmt_list comment_stmt +- | stmt_list config_stmt +- | stmt_list if_stmt + | stmt_list menu_stmt +- | stmt_list menuconfig_stmt +- | stmt_list source_stmt + | stmt_list T_WORD error T_EOL { zconf_error("unknown statement \"%s\"", $2); } + | stmt_list error T_EOL { zconf_error("invalid statement"); } + ; + +-stmt_list_in_choice: +- /* empty */ +- | stmt_list_in_choice comment_stmt +- | stmt_list_in_choice config_stmt +- | stmt_list_in_choice if_stmt_in_choice +- | stmt_list_in_choice error T_EOL { zconf_error("invalid statement"); } ++common_stmt: ++ if_stmt ++ | comment_stmt ++ | config_stmt ++ | menuconfig_stmt ++ | source_stmt ++ | assignment_stmt + ; + + /* config/menuconfig entry */ +@@ -250,7 +246,7 @@ choice_end: end + } + }; + +-choice_stmt: choice_entry stmt_list_in_choice choice_end ++choice_stmt: choice_entry choice_block choice_end + ; + + choice_option_list: +@@ -299,6 +295,11 @@ default: + | T_DEF_BOOL { $$ = S_BOOLEAN; } + | T_DEF_TRISTATE { $$ = S_TRISTATE; } + ++choice_block: ++ /* empty */ ++ | choice_block common_stmt ++; ++ + /* if entry */ + + if_entry: T_IF expr T_EOL +@@ -320,9 +321,6 @@ if_end: end + if_stmt: if_entry stmt_list if_end + ; + +-if_stmt_in_choice: if_entry stmt_list_in_choice if_end +-; +- + /* menu entry */ + + menu: T_MENU T_WORD_QUOTE T_EOL diff --git a/support/kconfig/patches/series b/support/kconfig/patches/series index f120e323b7..e68a83a550 100644 --- a/support/kconfig/patches/series +++ b/support/kconfig/patches/series @@ -1,13 +1,9 @@ 01-kconfig-kernel-to-buildroot.patch 06-br-build-system-integration.patch 10-br-build-system.patch -11-use-mktemp-for-lxdialog.patch 12-fix-glade-file-path.patch 14-support-out-of-tree-config.patch 16-fix-space-to-de-select-options.patch -17-backport-kecho.patch 18-merge-config.sh-create-temporary-files-in-tmp.patch 19-merge_config.sh-add-br2-external-support.patch -20-merge_config.sh-Allow-to-define-config-prefix.patch -21-Avoid-false-positive-matches-from-comment-lines.patch -22-kconfig-lxdialog-fix-check-with-GCC14.patch +23-Revert-kconfig-allow-only-config-comment-and-if-insi.patch diff --git a/support/kconfig/preprocess.c b/support/kconfig/preprocess.c new file mode 100644 index 0000000000..f0a4a218c4 --- /dev/null +++ b/support/kconfig/preprocess.c @@ -0,0 +1,580 @@ +// SPDX-License-Identifier: GPL-2.0 +// +// Copyright (C) 2018 Masahiro Yamada + +#include +#include +#include +#include +#include +#include + +#include "array_size.h" +#include "internal.h" +#include "list.h" +#include "lkc.h" +#include "preprocess.h" + +static char *expand_string_with_args(const char *in, int argc, char *argv[]); +static char *expand_string(const char *in); + +static void __attribute__((noreturn)) pperror(const char *format, ...) +{ + va_list ap; + + fprintf(stderr, "%s:%d: ", cur_filename, yylineno); + va_start(ap, format); + vfprintf(stderr, format, ap); + va_end(ap); + fprintf(stderr, "\n"); + + exit(1); +} + +/* + * Environment variables + */ +static LIST_HEAD(env_list); + +struct env { + char *name; + char *value; + struct list_head node; +}; + +static void env_add(const char *name, const char *value) +{ + struct env *e; + + e = xmalloc(sizeof(*e)); + e->name = xstrdup(name); + e->value = xstrdup(value); + + list_add_tail(&e->node, &env_list); +} + +static void env_del(struct env *e) +{ + list_del(&e->node); + free(e->name); + free(e->value); + free(e); +} + +/* The returned pointer must be freed when done */ +static char *env_expand(const char *name) +{ + struct env *e; + const char *value; + + if (!*name) + return NULL; + + list_for_each_entry(e, &env_list, node) { + if (!strcmp(name, e->name)) + return xstrdup(e->value); + } + + value = getenv(name); + if (!value) + return NULL; + + /* + * We need to remember all referenced environment variables. + * They will be written out to include/config/auto.conf.cmd + */ + env_add(name, value); + + return xstrdup(value); +} + +void env_write_dep(struct gstr *s) +{ + struct env *e, *tmp; + + list_for_each_entry_safe(e, tmp, &env_list, node) { + str_printf(s, + "\n" + "ifneq \"$(%s)\" \"%s\"\n" + "$(autoconfig): FORCE\n" + "endif\n", + e->name, e->value); + env_del(e); + } +} + +/* + * Built-in functions + */ +struct function { + const char *name; + unsigned int min_args; + unsigned int max_args; + char *(*func)(int argc, char *argv[]); +}; + +static char *do_error_if(int argc, char *argv[]) +{ + if (!strcmp(argv[0], "y")) + pperror("%s", argv[1]); + + return xstrdup(""); +} + +static char *do_filename(int argc, char *argv[]) +{ + return xstrdup(cur_filename); +} + +static char *do_info(int argc, char *argv[]) +{ + printf("%s\n", argv[0]); + + return xstrdup(""); +} + +static char *do_lineno(int argc, char *argv[]) +{ + char buf[16]; + + sprintf(buf, "%d", yylineno); + + return xstrdup(buf); +} + +static char *do_shell(int argc, char *argv[]) +{ + FILE *p; + char buf[4096]; + char *cmd; + size_t nread; + int i; + + cmd = argv[0]; + + p = popen(cmd, "r"); + if (!p) { + perror(cmd); + exit(1); + } + + nread = fread(buf, 1, sizeof(buf), p); + if (nread == sizeof(buf)) + nread--; + + /* remove trailing new lines */ + while (nread > 0 && buf[nread - 1] == '\n') + nread--; + + buf[nread] = 0; + + /* replace a new line with a space */ + for (i = 0; i < nread; i++) { + if (buf[i] == '\n') + buf[i] = ' '; + } + + if (pclose(p) == -1) { + perror(cmd); + exit(1); + } + + return xstrdup(buf); +} + +static char *do_warning_if(int argc, char *argv[]) +{ + if (!strcmp(argv[0], "y")) + fprintf(stderr, "%s:%d: %s\n", cur_filename, yylineno, argv[1]); + + return xstrdup(""); +} + +static const struct function function_table[] = { + /* Name MIN MAX Function */ + { "error-if", 2, 2, do_error_if }, + { "filename", 0, 0, do_filename }, + { "info", 1, 1, do_info }, + { "lineno", 0, 0, do_lineno }, + { "shell", 1, 1, do_shell }, + { "warning-if", 2, 2, do_warning_if }, +}; + +#define FUNCTION_MAX_ARGS 16 + +static char *function_expand(const char *name, int argc, char *argv[]) +{ + const struct function *f; + int i; + + for (i = 0; i < ARRAY_SIZE(function_table); i++) { + f = &function_table[i]; + if (strcmp(f->name, name)) + continue; + + if (argc < f->min_args) + pperror("too few function arguments passed to '%s'", + name); + + if (argc > f->max_args) + pperror("too many function arguments passed to '%s'", + name); + + return f->func(argc, argv); + } + + return NULL; +} + +/* + * Variables (and user-defined functions) + */ +static LIST_HEAD(variable_list); + +struct variable { + char *name; + char *value; + enum variable_flavor flavor; + int exp_count; + struct list_head node; +}; + +static struct variable *variable_lookup(const char *name) +{ + struct variable *v; + + list_for_each_entry(v, &variable_list, node) { + if (!strcmp(name, v->name)) + return v; + } + + return NULL; +} + +static char *variable_expand(const char *name, int argc, char *argv[]) +{ + struct variable *v; + char *res; + + v = variable_lookup(name); + if (!v) + return NULL; + + if (argc == 0 && v->exp_count) + pperror("Recursive variable '%s' references itself (eventually)", + name); + + if (v->exp_count > 1000) + pperror("Too deep recursive expansion"); + + v->exp_count++; + + if (v->flavor == VAR_RECURSIVE) + res = expand_string_with_args(v->value, argc, argv); + else + res = xstrdup(v->value); + + v->exp_count--; + + return res; +} + +void variable_add(const char *name, const char *value, + enum variable_flavor flavor) +{ + struct variable *v; + char *new_value; + bool append = false; + + v = variable_lookup(name); + if (v) { + /* For defined variables, += inherits the existing flavor */ + if (flavor == VAR_APPEND) { + flavor = v->flavor; + append = true; + } else { + free(v->value); + } + } else { + /* For undefined variables, += assumes the recursive flavor */ + if (flavor == VAR_APPEND) + flavor = VAR_RECURSIVE; + + v = xmalloc(sizeof(*v)); + v->name = xstrdup(name); + v->exp_count = 0; + list_add_tail(&v->node, &variable_list); + } + + v->flavor = flavor; + + if (flavor == VAR_SIMPLE) + new_value = expand_string(value); + else + new_value = xstrdup(value); + + if (append) { + v->value = xrealloc(v->value, + strlen(v->value) + strlen(new_value) + 2); + strcat(v->value, " "); + strcat(v->value, new_value); + free(new_value); + } else { + v->value = new_value; + } +} + +static void variable_del(struct variable *v) +{ + list_del(&v->node); + free(v->name); + free(v->value); + free(v); +} + +void variable_all_del(void) +{ + struct variable *v, *tmp; + + list_for_each_entry_safe(v, tmp, &variable_list, node) + variable_del(v); +} + +/* + * Evaluate a clause with arguments. argc/argv are arguments from the upper + * function call. + * + * Returned string must be freed when done + */ +static char *eval_clause(const char *str, size_t len, int argc, char *argv[]) +{ + char *tmp, *name, *res, *endptr, *prev, *p; + int new_argc = 0; + char *new_argv[FUNCTION_MAX_ARGS]; + int nest = 0; + int i; + unsigned long n; + + tmp = xstrndup(str, len); + + /* + * If variable name is '1', '2', etc. It is generally an argument + * from a user-function call (i.e. local-scope variable). If not + * available, then look-up global-scope variables. + */ + n = strtoul(tmp, &endptr, 10); + if (!*endptr && n > 0 && n <= argc) { + res = xstrdup(argv[n - 1]); + goto free_tmp; + } + + prev = p = tmp; + + /* + * Split into tokens + * The function name and arguments are separated by a comma. + * For example, if the function call is like this: + * $(foo,$(x),$(y)) + * + * The input string for this helper should be: + * foo,$(x),$(y) + * + * and split into: + * new_argv[0] = 'foo' + * new_argv[1] = '$(x)' + * new_argv[2] = '$(y)' + */ + while (*p) { + if (nest == 0 && *p == ',') { + *p = 0; + if (new_argc >= FUNCTION_MAX_ARGS) + pperror("too many function arguments"); + new_argv[new_argc++] = prev; + prev = p + 1; + } else if (*p == '(') { + nest++; + } else if (*p == ')') { + nest--; + } + + p++; + } + + if (new_argc >= FUNCTION_MAX_ARGS) + pperror("too many function arguments"); + new_argv[new_argc++] = prev; + + /* + * Shift arguments + * new_argv[0] represents a function name or a variable name. Put it + * into 'name', then shift the rest of the arguments. This simplifies + * 'const' handling. + */ + name = expand_string_with_args(new_argv[0], argc, argv); + new_argc--; + for (i = 0; i < new_argc; i++) + new_argv[i] = expand_string_with_args(new_argv[i + 1], + argc, argv); + + /* Search for variables */ + res = variable_expand(name, new_argc, new_argv); + if (res) + goto free; + + /* Look for built-in functions */ + res = function_expand(name, new_argc, new_argv); + if (res) + goto free; + + /* Last, try environment variable */ + if (new_argc == 0) { + res = env_expand(name); + if (res) + goto free; + } + + res = xstrdup(""); +free: + for (i = 0; i < new_argc; i++) + free(new_argv[i]); + free(name); +free_tmp: + free(tmp); + + return res; +} + +/* + * Expand a string that follows '$' + * + * For example, if the input string is + * ($(FOO)$($(BAR)))$(BAZ) + * this helper evaluates + * $($(FOO)$($(BAR))) + * and returns a new string containing the expansion (note that the string is + * recursively expanded), also advancing 'str' to point to the next character + * after the corresponding closing parenthesis, in this case, *str will be + * $(BAR) + */ +static char *expand_dollar_with_args(const char **str, int argc, char *argv[]) +{ + const char *p = *str; + const char *q; + int nest = 0; + + /* + * In Kconfig, variable/function references always start with "$(". + * Neither single-letter variables as in $A nor curly braces as in ${CC} + * are supported. '$' not followed by '(' loses its special meaning. + */ + if (*p != '(') { + *str = p; + return xstrdup("$"); + } + + p++; + q = p; + while (*q) { + if (*q == '(') { + nest++; + } else if (*q == ')') { + if (nest-- == 0) + break; + } + q++; + } + + if (!*q) + pperror("unterminated reference to '%s': missing ')'", p); + + /* Advance 'str' to after the expanded initial portion of the string */ + *str = q + 1; + + return eval_clause(p, q - p, argc, argv); +} + +char *expand_dollar(const char **str) +{ + return expand_dollar_with_args(str, 0, NULL); +} + +static char *__expand_string(const char **str, bool (*is_end)(char c), + int argc, char *argv[]) +{ + const char *in, *p; + char *expansion, *out; + size_t in_len, out_len; + + out = xmalloc(1); + *out = 0; + out_len = 1; + + p = in = *str; + + while (1) { + if (*p == '$') { + in_len = p - in; + p++; + expansion = expand_dollar_with_args(&p, argc, argv); + out_len += in_len + strlen(expansion); + out = xrealloc(out, out_len); + strncat(out, in, in_len); + strcat(out, expansion); + free(expansion); + in = p; + continue; + } + + if (is_end(*p)) + break; + + p++; + } + + in_len = p - in; + out_len += in_len; + out = xrealloc(out, out_len); + strncat(out, in, in_len); + + /* Advance 'str' to the end character */ + *str = p; + + return out; +} + +static bool is_end_of_str(char c) +{ + return !c; +} + +/* + * Expand variables and functions in the given string. Undefined variables + * expand to an empty string. + * The returned string must be freed when done. + */ +static char *expand_string_with_args(const char *in, int argc, char *argv[]) +{ + return __expand_string(&in, is_end_of_str, argc, argv); +} + +static char *expand_string(const char *in) +{ + return expand_string_with_args(in, 0, NULL); +} + +static bool is_end_of_token(char c) +{ + return !(isalnum(c) || c == '_' || c == '-'); +} + +/* + * Expand variables in a token. The parsing stops when a token separater + * (in most cases, it is a whitespace) is encountered. 'str' is updated to + * point to the next character. + * + * The returned string must be freed when done. + */ +char *expand_one_token(const char **str) +{ + return __expand_string(str, is_end_of_token, 0, NULL); +} diff --git a/support/kconfig/preprocess.h b/support/kconfig/preprocess.h new file mode 100644 index 0000000000..a7e4a55063 --- /dev/null +++ b/support/kconfig/preprocess.h @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +#ifndef PREPROCESS_H +#define PREPROCESS_H + +enum variable_flavor { + VAR_SIMPLE, + VAR_RECURSIVE, + VAR_APPEND, +}; + +struct gstr; +void env_write_dep(struct gstr *gs); +void variable_add(const char *name, const char *value, + enum variable_flavor flavor); +void variable_all_del(void); +char *expand_dollar(const char **str); +char *expand_one_token(const char **str); + +#endif /* PREPROCESS_H */ diff --git a/support/kconfig/qconf-cfg.sh b/support/kconfig/qconf-cfg.sh new file mode 100755 index 0000000000..0e113b0f24 --- /dev/null +++ b/support/kconfig/qconf-cfg.sh @@ -0,0 +1,40 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +cflags=$1 +libs=$2 +bin=$3 + +PKG5="Qt5Core Qt5Gui Qt5Widgets" +PKG6="Qt6Core Qt6Gui Qt6Widgets" + +if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then + echo >&2 "*" + echo >&2 "* 'make xconfig' requires '${HOSTPKG_CONFIG}'. Please install it." + echo >&2 "*" + exit 1 +fi + +if ${HOSTPKG_CONFIG} --exists $PKG6; then + ${HOSTPKG_CONFIG} --cflags ${PKG6} > ${cflags} + # Qt6 requires C++17. + echo -std=c++17 >> ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG6} > ${libs} + ${HOSTPKG_CONFIG} --variable=libexecdir Qt6Core > ${bin} + exit 0 +fi + +if ${HOSTPKG_CONFIG} --exists $PKG5; then + ${HOSTPKG_CONFIG} --cflags ${PKG5} > ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG5} > ${libs} + ${HOSTPKG_CONFIG} --variable=host_bins Qt5Core > ${bin} + exit 0 +fi + +echo >&2 "*" +echo >&2 "* Could not find Qt6 or Qt5 via ${HOSTPKG_CONFIG}." +echo >&2 "* Please install Qt6 or Qt5 and make sure it's in PKG_CONFIG_PATH" +echo >&2 "* You need $PKG6 for Qt6" +echo >&2 "* You need $PKG5 for Qt5" +echo >&2 "*" +exit 1 diff --git a/support/kconfig/qconf.cc b/support/kconfig/qconf.cc index 7896b584c8..50c3ccd027 100644 --- a/support/kconfig/qconf.cc +++ b/support/kconfig/qconf.cc @@ -1,59 +1,38 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel * Copyright (C) 2015 Boris Barbulovski - * Released under the terms of the GNU GPL v2.0. */ -#include - -#include -#include -#include #include +#include +#include +#include +#include #include +#include +#include +#include #include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include "lkc.h" #include "qconf.h" -#include "qconf.moc" -#include "images.c" +#include "images.h" -#ifdef _ -# undef _ -# define _ qgettext -#endif static QApplication *configApp; static ConfigSettings *configSettings; QAction *ConfigMainWindow::saveAction; -static inline QString qgettext(const char* str) -{ - return QString::fromLocal8Bit(gettext(str)); -} - -static inline QString qgettext(const QString& str) -{ - return QString::fromLocal8Bit(gettext(str.toLatin1())); -} - ConfigSettings::ConfigSettings() : QSettings("buildroot.org", "qconf") { @@ -97,14 +76,13 @@ bool ConfigSettings::writeSizes(const QString& key, const QList& value) return true; } - -/* - * set the new data - * TODO check the value - */ -void ConfigItem::okRename(int col) -{ -} +QIcon ConfigItem::symbolYesIcon; +QIcon ConfigItem::symbolModIcon; +QIcon ConfigItem::symbolNoIcon; +QIcon ConfigItem::choiceYesIcon; +QIcon ConfigItem::choiceNoIcon; +QIcon ConfigItem::menuIcon; +QIcon ConfigItem::menubackIcon; /* * update the displayed of a menu entry @@ -120,14 +98,14 @@ void ConfigItem::updateMenu(void) list = listView(); if (goParent) { - setPixmap(promptColIdx, list->menuBackPix); + setIcon(promptColIdx, menubackIcon); prompt = ".."; goto set_prompt; } sym = menu->sym; prop = menu->prompt; - prompt = _(menu_get_prompt(menu)); + prompt = menu_get_prompt(menu); if (prop) switch (prop->type) { case P_MENU: @@ -137,15 +115,16 @@ void ConfigItem::updateMenu(void) */ if (sym && list->rootEntry == menu) break; - setPixmap(promptColIdx, list->menuPix); + setIcon(promptColIdx, menuIcon); } else { if (sym) break; - setPixmap(promptColIdx, QIcon()); + setIcon(promptColIdx, QIcon()); } goto set_prompt; case P_COMMENT: - setPixmap(promptColIdx, QIcon()); + setIcon(promptColIdx, QIcon()); + prompt = "*** " + prompt + " ***"; goto set_prompt; default: ; @@ -153,7 +132,7 @@ void ConfigItem::updateMenu(void) if (!sym) goto set_prompt; - setText(nameColIdx, QString::fromLocal8Bit(sym->name)); + setText(nameColIdx, sym->name); type = sym_get_type(sym); switch (type) { @@ -161,62 +140,42 @@ void ConfigItem::updateMenu(void) case S_TRISTATE: char ch; - if (!sym_is_changable(sym) && list->optMode == normalOpt) { - setPixmap(promptColIdx, QIcon()); - setText(noColIdx, QString::null); - setText(modColIdx, QString::null); - setText(yesColIdx, QString::null); + if (!sym_is_changeable(sym) && list->optMode == normalOpt) { + setIcon(promptColIdx, QIcon()); break; } expr = sym_get_tristate_value(sym); switch (expr) { case yes: if (sym_is_choice_value(sym) && type == S_BOOLEAN) - setPixmap(promptColIdx, list->choiceYesPix); + setIcon(promptColIdx, choiceYesIcon); else - setPixmap(promptColIdx, list->symbolYesPix); - setText(yesColIdx, "Y"); + setIcon(promptColIdx, symbolYesIcon); ch = 'Y'; break; case mod: - setPixmap(promptColIdx, list->symbolModPix); - setText(modColIdx, "M"); + setIcon(promptColIdx, symbolModIcon); ch = 'M'; break; default: if (sym_is_choice_value(sym) && type == S_BOOLEAN) - setPixmap(promptColIdx, list->choiceNoPix); + setIcon(promptColIdx, choiceNoIcon); else - setPixmap(promptColIdx, list->symbolNoPix); - setText(noColIdx, "N"); + setIcon(promptColIdx, symbolNoIcon); ch = 'N'; break; } - if (expr != no) - setText(noColIdx, sym_tristate_within_range(sym, no) ? "_" : 0); - if (expr != mod) - setText(modColIdx, sym_tristate_within_range(sym, mod) ? "_" : 0); - if (expr != yes) - setText(yesColIdx, sym_tristate_within_range(sym, yes) ? "_" : 0); setText(dataColIdx, QChar(ch)); break; case S_INT: case S_HEX: case S_STRING: - const char* data; - - data = sym_get_string_value(sym); - - setText(dataColIdx, data); - if (type == S_STRING) - prompt = QString("%1: %2").arg(prompt).arg(data); - else - prompt = QString("(%2) %1").arg(prompt).arg(data); + setText(dataColIdx, sym_get_string_value(sym)); break; } if (!sym_has_value(sym) && visible) - prompt += _(" (NEW)"); + prompt += " (NEW)"; set_prompt: setText(promptColIdx, prompt); } @@ -253,6 +212,17 @@ void ConfigItem::init(void) if (list->mode != fullMode) setExpanded(true); sym_calc_value(menu->sym); + + if (menu->sym) { + enum symbol_type type = menu->sym->type; + + // Allow to edit "int", "hex", and "string" in-place in + // the data column. Unfortunately, you cannot specify + // the flags per column. Set ItemIsEditable for all + // columns here, and check the column in createEditor(). + if (type == S_INT || type == S_HEX || type == S_STRING) + setFlags(flags() | Qt::ItemIsEditable); + } } updateMenu(); } @@ -273,53 +243,67 @@ ConfigItem::~ConfigItem(void) } } -ConfigLineEdit::ConfigLineEdit(ConfigView* parent) - : Parent(parent) +QWidget *ConfigItemDelegate::createEditor(QWidget *parent, + const QStyleOptionViewItem &option, + const QModelIndex &index) const { - connect(this, SIGNAL(editingFinished()), SLOT(hide())); -} + ConfigItem *item; -void ConfigLineEdit::show(ConfigItem* i) -{ - item = i; - if (sym_get_string_value(item->menu->sym)) - setText(QString::fromLocal8Bit(sym_get_string_value(item->menu->sym))); - else - setText(QString::null); - Parent::show(); - setFocus(); + // Only the data column is editable + if (index.column() != dataColIdx) + return nullptr; + + // You cannot edit invisible menus + item = static_cast(index.internalPointer()); + if (!item || !item->menu || !menu_is_visible(item->menu)) + return nullptr; + + return QStyledItemDelegate::createEditor(parent, option, index); } -void ConfigLineEdit::keyPressEvent(QKeyEvent* e) +void ConfigItemDelegate::setModelData(QWidget *editor, + QAbstractItemModel *model, + const QModelIndex &index) const { - switch (e->key()) { - case Qt::Key_Escape: - break; - case Qt::Key_Return: - case Qt::Key_Enter: - sym_set_string_value(item->menu->sym, text().toLatin1()); - parent()->updateList(item); - break; - default: - Parent::keyPressEvent(e); - return; + QLineEdit *lineEdit; + ConfigItem *item; + struct symbol *sym; + bool success; + + lineEdit = qobject_cast(editor); + // If this is not a QLineEdit, use the parent's default. + // (does this happen?) + if (!lineEdit) + goto parent; + + item = static_cast(index.internalPointer()); + if (!item || !item->menu) + goto parent; + + sym = item->menu->sym; + if (!sym) + goto parent; + + success = sym_set_string_value(sym, lineEdit->text().toUtf8().data()); + if (success) { + ConfigList::updateListForAll(); + } else { + QMessageBox::information(editor, "qconf", + "Cannot set the data (maybe due to out of range).\n" + "Setting the old value."); + lineEdit->setText(sym_get_string_value(sym)); } - e->accept(); - parent()->list->setFocus(); - hide(); + +parent: + QStyledItemDelegate::setModelData(editor, model, index); } -ConfigList::ConfigList(ConfigView* p, const char *name) - : Parent(p), +ConfigList::ConfigList(QWidget *parent, const char *name) + : QTreeWidget(parent), updateAll(false), - symbolYesPix(xpm_symbol_yes), symbolModPix(xpm_symbol_mod), symbolNoPix(xpm_symbol_no), - choiceYesPix(xpm_choice_yes), choiceNoPix(xpm_choice_no), - menuPix(xpm_menu), menuInvPix(xpm_menu_inv), menuBackPix(xpm_menuback), voidPix(xpm_void), - showName(false), showRange(false), showData(false), mode(singleMode), optMode(normalOpt), + showName(false), mode(singleMode), optMode(normalOpt), rootEntry(0), headerPopup(0) { - int i; - setObjectName(name); setSortingEnabled(false); setRootIsDecorated(true); @@ -327,26 +311,34 @@ ConfigList::ConfigList(ConfigView* p, const char *name) setVerticalScrollMode(ScrollPerPixel); setHorizontalScrollMode(ScrollPerPixel); - setHeaderLabels(QStringList() << _("Option") << _("Name") << "N" << "M" << "Y" << _("Value")); + setHeaderLabels(QStringList() << "Option" << "Name" << "Value"); - connect(this, SIGNAL(itemSelectionChanged(void)), - SLOT(updateSelection(void))); + connect(this, &ConfigList::itemSelectionChanged, + this, &ConfigList::updateSelection); if (name) { configSettings->beginGroup(name); showName = configSettings->value("/showName", false).toBool(); - showRange = configSettings->value("/showRange", false).toBool(); - showData = configSettings->value("/showData", false).toBool(); optMode = (enum optionMode)configSettings->value("/optionMode", 0).toInt(); configSettings->endGroup(); - connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); + connect(configApp, &QApplication::aboutToQuit, + this, &ConfigList::saveSettings); } - addColumn(promptColIdx); + showColumn(promptColIdx); + + setItemDelegate(new ConfigItemDelegate(this)); + + allLists.append(this); reinit(); } +ConfigList::~ConfigList() +{ + allLists.removeOne(this); +} + bool ConfigList::menuSkip(struct menu *menu) { if (optMode == normalOpt && menu_is_visible(menu)) @@ -360,21 +352,22 @@ bool ConfigList::menuSkip(struct menu *menu) void ConfigList::reinit(void) { - removeColumn(dataColIdx); - removeColumn(yesColIdx); - removeColumn(modColIdx); - removeColumn(noColIdx); - removeColumn(nameColIdx); + hideColumn(nameColIdx); if (showName) - addColumn(nameColIdx); - if (showRange) { - addColumn(noColIdx); - addColumn(modColIdx); - addColumn(yesColIdx); - } - if (showData) - addColumn(dataColIdx); + showColumn(nameColIdx); + + updateListAll(); +} + +void ConfigList::setOptionMode(QAction *action) +{ + if (action == showNormalAction) + optMode = normalOpt; + else if (action == showAllAction) + optMode = allOpt; + else + optMode = promptOpt; updateListAll(); } @@ -384,8 +377,6 @@ void ConfigList::saveSettings(void) if (!objectName().isEmpty()) { configSettings->beginGroup(objectName()); configSettings->setValue("/showName", showName); - configSettings->setValue("/showRange", showRange); - configSettings->setValue("/showData", showData); configSettings->setValue("/optionMode", (int)optMode); configSettings->endGroup(); } @@ -424,15 +415,15 @@ void ConfigList::updateSelection(void) emit menuSelected(menu); } -void ConfigList::updateList(ConfigItem* item) +void ConfigList::updateList() { ConfigItem* last = 0; + ConfigItem *item; if (!rootEntry) { if (mode != listMode) goto update; QTreeWidgetItemIterator it(this); - ConfigItem* item; while (*it) { item = (ConfigItem*)(*it); @@ -454,7 +445,7 @@ void ConfigList::updateList(ConfigItem* item) } if ((mode == singleMode || (mode == symbolMode && !(rootEntry->flags & MENU_ROOT))) && rootEntry->sym && rootEntry->prompt) { - item = last ? last->nextSibling() : firstChild(); + item = last ? last->nextSibling() : nullptr; if (!item) item = new ConfigItem(this, last, rootEntry, true); else @@ -466,11 +457,33 @@ void ConfigList::updateList(ConfigItem* item) return; } update: - updateMenuList(this, rootEntry); + updateMenuList(rootEntry); update(); resizeColumnToContents(0); } +void ConfigList::updateListForAll() +{ + QListIterator it(allLists); + + while (it.hasNext()) { + ConfigList *list = it.next(); + + list->updateList(); + } +} + +void ConfigList::updateListAllForAll() +{ + QListIterator it(allLists); + + while (it.hasNext()) { + ConfigList *list = it.next(); + + list->updateList(); + } +} + void ConfigList::setValue(ConfigItem* item, tristate val) { struct symbol* sym; @@ -491,7 +504,7 @@ void ConfigList::setValue(ConfigItem* item, tristate val) return; if (oldval == no && item->menu->list) item->setExpanded(true); - parent()->updateList(item); + ConfigList::updateListForAll(); break; } } @@ -525,12 +538,9 @@ void ConfigList::changeValue(ConfigItem* item) item->setExpanded(true); } if (oldexpr != newexpr) - parent()->updateList(item); + ConfigList::updateListForAll(); break; - case S_INT: - case S_HEX: - case S_STRING: - parent()->lineEdit->show(item); + default: break; } } @@ -544,11 +554,11 @@ void ConfigList::setRootMenu(struct menu *menu) type = menu && menu->prompt ? menu->prompt->type : P_UNKNOWN; if (type != P_MENU) return; - updateMenuList(this, 0); + updateMenuList(0); rootEntry = menu; updateListAll(); if (currentItem()) { - currentItem()->setSelected(hasFocus()); + setSelected(currentItem(), hasFocus()); scrollToItem(currentItem()); } } @@ -636,7 +646,7 @@ void ConfigList::updateMenuList(ConfigItem *parent, struct menu* menu) last = item; continue; } - hide: +hide: if (item && item->menu == child) { last = parent->firstChild(); if (last == item) @@ -648,7 +658,7 @@ void ConfigList::updateMenuList(ConfigItem *parent, struct menu* menu) } } -void ConfigList::updateMenuList(ConfigList *parent, struct menu* menu) +void ConfigList::updateMenuList(struct menu *menu) { struct menu* child; ConfigItem* item; @@ -657,19 +667,19 @@ void ConfigList::updateMenuList(ConfigList *parent, struct menu* menu) enum prop_type type; if (!menu) { - while (parent->topLevelItemCount() > 0) + while (topLevelItemCount() > 0) { - delete parent->takeTopLevelItem(0); + delete takeTopLevelItem(0); } return; } - last = (ConfigItem*)parent->topLevelItem(0); + last = (ConfigItem *)topLevelItem(0); if (last && !last->goParent) last = 0; for (child = menu->list; child; child = child->next) { - item = last ? last->nextSibling() : (ConfigItem*)parent->topLevelItem(0); + item = last ? last->nextSibling() : (ConfigItem *)topLevelItem(0); type = child->prompt ? child->prompt->type : P_UNKNOWN; switch (mode) { @@ -690,7 +700,7 @@ void ConfigList::updateMenuList(ConfigList *parent, struct menu* menu) if (!child->sym && !child->list && !child->prompt) continue; if (!item || item->menu != child) - item = new ConfigItem(parent, last, child, visible); + item = new ConfigItem(this, last, child, visible); else item->testUpdateMenu(visible); @@ -701,9 +711,9 @@ void ConfigList::updateMenuList(ConfigList *parent, struct menu* menu) last = item; continue; } - hide: +hide: if (item && item->menu == child) { - last = (ConfigItem*)parent->topLevelItem(0); + last = (ConfigItem *)topLevelItem(0); if (last == item) last = 0; else while (last->nextSibling() != item) @@ -745,7 +755,10 @@ void ConfigList::keyPressEvent(QKeyEvent* ev) type = menu->prompt ? menu->prompt->type : P_UNKNOWN; if (type == P_MENU && rootEntry != menu && mode != fullMode && mode != menuMode) { - emit menuSelected(menu); + if (mode == menuMode) + emit menuSelected(menu); + else + emit itemSelected(menu); break; } case Qt::Key_Space: @@ -791,7 +804,7 @@ void ConfigList::mouseReleaseEvent(QMouseEvent* e) idx = header()->logicalIndexAt(x); switch (idx) { case promptColIdx: - icon = item->pixmap(promptColIdx); + icon = item->icon(promptColIdx); if (!icon.isNull()) { int off = header()->sectionPosition(0) + visualRect(indexAt(p)).x() + 4; // 4 is Hardcoded image offset. There might be a way to do it properly. if (x >= off && x < off + icon.availableSizes().first().width()) { @@ -802,22 +815,14 @@ void ConfigList::mouseReleaseEvent(QMouseEvent* e) break; ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; if (ptype == P_MENU && rootEntry != menu && - mode != fullMode && mode != menuMode) + mode != fullMode && mode != menuMode && + mode != listMode) emit menuSelected(menu); else changeValue(item); } } break; - case noColIdx: - setValue(item, no); - break; - case modColIdx: - setValue(item, mod); - break; - case yesColIdx: - setValue(item, yes); - break; case dataColIdx: changeValue(item); break; @@ -837,7 +842,7 @@ void ConfigList::mouseMoveEvent(QMouseEvent* e) void ConfigList::mouseDoubleClickEvent(QMouseEvent* e) { - QPoint p = e->pos(); // TODO: Check if this works(was contentsToViewport). + QPoint p = e->pos(); ConfigItem* item = (ConfigItem*)itemAt(p); struct menu *menu; enum prop_type ptype; @@ -852,9 +857,12 @@ void ConfigList::mouseDoubleClickEvent(QMouseEvent* e) if (!menu) goto skip; ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; - if (ptype == P_MENU && (mode == singleMode || mode == symbolMode)) - emit menuSelected(menu); - else if (menu->sym) + if (ptype == P_MENU && mode != listMode) { + if (mode == singleMode) + emit itemSelected(menu); + else if (mode == symbolMode) + emit menuSelected(menu); + } else if (menu->sym) changeValue(item); skip: @@ -870,7 +878,7 @@ void ConfigList::focusInEvent(QFocusEvent *e) ConfigItem* item = (ConfigItem *)currentItem(); if (item) { - item->setSelected(true); + setSelected(item, true); menu = item->menu; } emit gotFocus(menu); @@ -878,114 +886,38 @@ void ConfigList::focusInEvent(QFocusEvent *e) void ConfigList::contextMenuEvent(QContextMenuEvent *e) { - if (e->y() <= header()->geometry().bottom()) { - if (!headerPopup) { - QAction *action; - - headerPopup = new QMenu(this); - action = new QAction(_("Show Name"), this); - action->setCheckable(true); - connect(action, SIGNAL(toggled(bool)), - parent(), SLOT(setShowName(bool))); - connect(parent(), SIGNAL(showNameChanged(bool)), - action, SLOT(setOn(bool))); - action->setChecked(showName); - headerPopup->addAction(action); - action = new QAction(_("Show Range"), this); - action->setCheckable(true); - connect(action, SIGNAL(toggled(bool)), - parent(), SLOT(setShowRange(bool))); - connect(parent(), SIGNAL(showRangeChanged(bool)), - action, SLOT(setOn(bool))); - action->setChecked(showRange); - headerPopup->addAction(action); - action = new QAction(_("Show Data"), this); - action->setCheckable(true); - connect(action, SIGNAL(toggled(bool)), - parent(), SLOT(setShowData(bool))); - connect(parent(), SIGNAL(showDataChanged(bool)), - action, SLOT(setOn(bool))); - action->setChecked(showData); - headerPopup->addAction(action); - } - headerPopup->exec(e->globalPos()); - e->accept(); - } else - e->ignore(); -} - -ConfigView*ConfigView::viewList; -QAction *ConfigView::showNormalAction; -QAction *ConfigView::showAllAction; -QAction *ConfigView::showPromptAction; - -ConfigView::ConfigView(QWidget* parent, const char *name) - : Parent(parent) -{ - setObjectName(name); - QVBoxLayout *verticalLayout = new QVBoxLayout(this); - verticalLayout->setContentsMargins(0, 0, 0, 0); - - list = new ConfigList(this); - verticalLayout->addWidget(list); - lineEdit = new ConfigLineEdit(this); - lineEdit->hide(); - verticalLayout->addWidget(lineEdit); - - this->nextView = viewList; - viewList = this; -} - -ConfigView::~ConfigView(void) -{ - ConfigView** vp; - - for (vp = &viewList; *vp; vp = &(*vp)->nextView) { - if (*vp == this) { - *vp = nextView; - break; - } + if (!headerPopup) { + QAction *action; + + headerPopup = new QMenu(this); + action = new QAction("Show Name", this); + action->setCheckable(true); + connect(action, &QAction::toggled, + this, &ConfigList::setShowName); + connect(this, &ConfigList::showNameChanged, + action, &QAction::setChecked); + action->setChecked(showName); + headerPopup->addAction(action); } -} -void ConfigView::setOptionMode(QAction *act) -{ - if (act == showNormalAction) - list->optMode = normalOpt; - else if (act == showAllAction) - list->optMode = allOpt; - else - list->optMode = promptOpt; - - list->updateListAll(); + headerPopup->exec(e->globalPos()); + e->accept(); } -void ConfigView::setShowName(bool b) +void ConfigList::setShowName(bool on) { - if (list->showName != b) { - list->showName = b; - list->reinit(); - emit showNameChanged(b); - } -} + if (showName == on) + return; -void ConfigView::setShowRange(bool b) -{ - if (list->showRange != b) { - list->showRange = b; - list->reinit(); - emit showRangeChanged(b); - } + showName = on; + reinit(); + emit showNameChanged(on); } -void ConfigView::setShowData(bool b) -{ - if (list->showData != b) { - list->showData = b; - list->reinit(); - emit showDataChanged(b); - } -} +QList ConfigList::allLists; +QAction *ConfigList::showNormalAction; +QAction *ConfigList::showAllAction; +QAction *ConfigList::showPromptAction; void ConfigList::setAllOpen(bool open) { @@ -998,34 +930,31 @@ void ConfigList::setAllOpen(bool open) } } -void ConfigView::updateList(ConfigItem* item) -{ - ConfigView* v; - - for (v = viewList; v; v = v->nextView) - v->list->updateList(item); -} - -void ConfigView::updateListAll(void) -{ - ConfigView* v; - - for (v = viewList; v; v = v->nextView) - v->list->updateListAll(); -} - ConfigInfoView::ConfigInfoView(QWidget* parent, const char *name) : Parent(parent), sym(0), _menu(0) { setObjectName(name); - + setOpenLinks(false); if (!objectName().isEmpty()) { configSettings->beginGroup(objectName()); setShowDebug(configSettings->value("/showDebug", false).toBool()); configSettings->endGroup(); - connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); + connect(configApp, &QApplication::aboutToQuit, + this, &ConfigInfoView::saveSettings); } + + contextMenu = createStandardContextMenu(); + QAction *action = new QAction("Show Debug Info", contextMenu); + + action->setCheckable(true); + connect(action, &QAction::toggled, + this, &ConfigInfoView::setShowDebug); + connect(this, &ConfigInfoView::showDebugChanged, + action, &QAction::setChecked); + action->setChecked(showDebug()); + contextMenu->addSeparator(); + contextMenu->addAction(action); } void ConfigInfoView::saveSettings(void) @@ -1080,116 +1009,126 @@ void ConfigInfoView::symbolInfo(void) void ConfigInfoView::menuInfo(void) { struct symbol* sym; - QString head, debug, help; + QString info; + QTextStream stream(&info); sym = _menu->sym; if (sym) { if (_menu->prompt) { - head += ""; - head += print_filter(_(_menu->prompt->text)); - head += ""; + stream << ""; + stream << print_filter(_menu->prompt->text); + stream << ""; if (sym->name) { - head += " ("; + stream << " ("; if (showDebug()) - head += QString().sprintf("", sym); - head += print_filter(sym->name); + stream << "name << "\">"; + stream << print_filter(sym->name); if (showDebug()) - head += ""; - head += ")"; + stream << ""; + stream << ")"; } } else if (sym->name) { - head += ""; + stream << ""; if (showDebug()) - head += QString().sprintf("", sym); - head += print_filter(sym->name); + stream << "name << "\">"; + stream << print_filter(sym->name); if (showDebug()) - head += ""; - head += ""; + stream << ""; + stream << ""; } - head += "

"; + stream << "

"; if (showDebug()) - debug = debug_info(sym); + stream << debug_info(sym); struct gstr help_gstr = str_new(); + menu_get_ext_help(_menu, &help_gstr); - help = print_filter(str_get(&help_gstr)); + stream << print_filter(str_get(&help_gstr)); str_free(&help_gstr); } else if (_menu->prompt) { - head += ""; - head += print_filter(_(_menu->prompt->text)); - head += "

"; + stream << ""; + stream << print_filter(_menu->prompt->text); + stream << "

"; if (showDebug()) { if (_menu->prompt->visible.expr) { - debug += "  dep: "; - expr_print(_menu->prompt->visible.expr, expr_print_help, &debug, E_NONE); - debug += "

"; + stream << "  dep: "; + expr_print(_menu->prompt->visible.expr, + expr_print_help, &stream, E_NONE); + stream << "

"; } + + stream << "defined at " << _menu->filename << ":" + << _menu->lineno << "

"; } } - if (showDebug()) - debug += QString().sprintf("defined at %s:%d

", _menu->file->name, _menu->lineno); - setText(head + debug + help); + setText(info); } QString ConfigInfoView::debug_info(struct symbol *sym) { QString debug; + QTextStream stream(&debug); - debug += "type: "; - debug += print_filter(sym_type_name(sym->type)); + stream << "type: "; + stream << print_filter(sym_type_name(sym->type)); if (sym_is_choice(sym)) - debug += " (choice)"; + stream << " (choice)"; debug += "
"; if (sym->rev_dep.expr) { - debug += "reverse dep: "; - expr_print(sym->rev_dep.expr, expr_print_help, &debug, E_NONE); - debug += "
"; + stream << "reverse dep: "; + expr_print(sym->rev_dep.expr, expr_print_help, &stream, E_NONE); + stream << "
"; } for (struct property *prop = sym->prop; prop; prop = prop->next) { switch (prop->type) { case P_PROMPT: case P_MENU: - debug += QString().sprintf("prompt: ", prop->menu); - debug += print_filter(_(prop->text)); - debug += "
"; + stream << "prompt: name << "\">"; + stream << print_filter(prop->text); + stream << "
"; break; case P_DEFAULT: case P_SELECT: case P_RANGE: - case P_ENV: - debug += prop_get_type_name(prop->type); - debug += ": "; - expr_print(prop->expr, expr_print_help, &debug, E_NONE); - debug += "
"; + case P_COMMENT: + case P_IMPLY: + case P_SYMBOL: + stream << prop_get_type_name(prop->type); + stream << ": "; + expr_print(prop->expr, expr_print_help, + &stream, E_NONE); + stream << "
"; break; case P_CHOICE: if (sym_is_choice(sym)) { - debug += "choice: "; - expr_print(prop->expr, expr_print_help, &debug, E_NONE); - debug += "
"; + stream << "choice: "; + expr_print(prop->expr, expr_print_help, + &stream, E_NONE); + stream << "
"; } break; default: - debug += "unknown property: "; - debug += prop_get_type_name(prop->type); - debug += "
"; + stream << "unknown property: "; + stream << prop_get_type_name(prop->type); + stream << "
"; } if (prop->visible.expr) { - debug += "    dep: "; - expr_print(prop->visible.expr, expr_print_help, &debug, E_NONE); - debug += "
"; + stream << "    dep: "; + expr_print(prop->visible.expr, expr_print_help, + &stream, E_NONE); + stream << "
"; } } - debug += "
"; + stream << "
"; return debug; } QString ConfigInfoView::print_filter(const QString &str) { - QRegExp re("[<>&\"\\n]"); + QRegularExpression re("[<>&\"\\n]"); QString res = str; for (int i = 0; (i = res.indexOf(re, i)) >= 0;) { switch (res[i].toLatin1()) { @@ -1220,88 +1159,125 @@ QString ConfigInfoView::print_filter(const QString &str) void ConfigInfoView::expr_print_help(void *data, struct symbol *sym, const char *str) { - QString* text = reinterpret_cast(data); - QString str2 = print_filter(str); + QTextStream *stream = reinterpret_cast(data); if (sym && sym->name && !(sym->flags & SYMBOL_CONST)) { - *text += QString().sprintf("", sym); - *text += str2; - *text += ""; - } else - *text += str2; + *stream << "name << "\">"; + *stream << print_filter(str); + *stream << ""; + } else { + *stream << print_filter(str); + } } -QMenu* ConfigInfoView::createStandardContextMenu(const QPoint & pos) +void ConfigInfoView::clicked(const QUrl &url) { - QMenu* popup = Parent::createStandardContextMenu(pos); - QAction* action = new QAction(_("Show Debug Info"), popup); - action->setCheckable(true); - connect(action, SIGNAL(toggled(bool)), SLOT(setShowDebug(bool))); - connect(this, SIGNAL(showDebugChanged(bool)), action, SLOT(setOn(bool))); - action->setChecked(showDebug()); - popup->addSeparator(); - popup->addAction(action); - return popup; + QByteArray str = url.toEncoded(); + const std::size_t count = str.size(); + char *data = new char[count + 1]; + struct symbol **result; + struct menu *m = NULL; + + if (count < 1) { + delete[] data; + return; + } + + memcpy(data, str.constData(), count); + data[count] = '\0'; + + /* Seek for exact match */ + data[0] = '^'; + strcat(data, "$"); + result = sym_re_search(data); + if (!result) { + delete[] data; + return; + } + + sym = *result; + + /* Seek for the menu which holds the symbol */ + for (struct property *prop = sym->prop; prop; prop = prop->next) { + if (prop->type != P_PROMPT && prop->type != P_MENU) + continue; + m = prop->menu; + break; + } + + if (!m) { + /* Symbol is not visible as a menu */ + symbolInfo(); + emit showDebugChanged(true); + } else { + emit menuSelected(m); + } + + free(result); + delete[] data; } -void ConfigInfoView::contextMenuEvent(QContextMenuEvent *e) +void ConfigInfoView::contextMenuEvent(QContextMenuEvent *event) { - Parent::contextMenuEvent(e); + contextMenu->popup(event->globalPos()); + event->accept(); } -ConfigSearchWindow::ConfigSearchWindow(ConfigMainWindow* parent, const char *name) +ConfigSearchWindow::ConfigSearchWindow(ConfigMainWindow *parent) : Parent(parent), result(NULL) { - setObjectName(name); + setObjectName("search"); setWindowTitle("Search Config"); QVBoxLayout* layout1 = new QVBoxLayout(this); layout1->setContentsMargins(11, 11, 11, 11); layout1->setSpacing(6); - QHBoxLayout* layout2 = new QHBoxLayout(0); + + QHBoxLayout* layout2 = new QHBoxLayout(); layout2->setContentsMargins(0, 0, 0, 0); layout2->setSpacing(6); - layout2->addWidget(new QLabel(_("Find:"), this)); + layout2->addWidget(new QLabel("Find:", this)); editField = new QLineEdit(this); - connect(editField, SIGNAL(returnPressed()), SLOT(search())); + connect(editField, &QLineEdit::returnPressed, + this, &ConfigSearchWindow::search); layout2->addWidget(editField); - searchButton = new QPushButton(_("Search"), this); + searchButton = new QPushButton("Search", this); searchButton->setAutoDefault(false); - connect(searchButton, SIGNAL(clicked()), SLOT(search())); + connect(searchButton, &QPushButton::clicked, + this, &ConfigSearchWindow::search); layout2->addWidget(searchButton); layout1->addLayout(layout2); split = new QSplitter(this); split->setOrientation(Qt::Vertical); - list = new ConfigView(split, name); - list->list->mode = listMode; - info = new ConfigInfoView(split, name); - connect(list->list, SIGNAL(menuChanged(struct menu *)), - info, SLOT(setInfo(struct menu *))); - connect(list->list, SIGNAL(menuChanged(struct menu *)), - parent, SLOT(setMenuLink(struct menu *))); + list = new ConfigList(split, "search"); + list->mode = listMode; + info = new ConfigInfoView(split, "search"); + connect(list, &ConfigList::menuChanged, + info, &ConfigInfoView::setInfo); + connect(list, &ConfigList::menuChanged, + parent, &ConfigMainWindow::setMenuLink); layout1->addWidget(split); - if (name) { - QVariant x, y; - int width, height; - bool ok; + QVariant x, y; + int width, height; + bool ok; - configSettings->beginGroup(name); - width = configSettings->value("/window width", parent->width() / 2).toInt(); - height = configSettings->value("/window height", parent->height() / 2).toInt(); - resize(width, height); - x = configSettings->value("/window x"); - y = configSettings->value("/window y"); - if ((x.isValid())&&(y.isValid())) - move(x.toInt(), y.toInt()); - QList sizes = configSettings->readSizes("/split", &ok); - if (ok) - split->setSizes(sizes); - configSettings->endGroup(); - connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); - } + configSettings->beginGroup("search"); + width = configSettings->value("/window width", parent->width() / 2).toInt(); + height = configSettings->value("/window height", parent->height() / 2).toInt(); + resize(width, height); + x = configSettings->value("/window x"); + y = configSettings->value("/window y"); + if (x.isValid() && y.isValid()) + move(x.toInt(), y.toInt()); + QList sizes = configSettings->readSizes("/split", &ok); + if (ok) + split->setSizes(sizes); + configSettings->endGroup(); + connect(configApp, &QApplication::aboutToQuit, + this, &ConfigSearchWindow::saveSettings); } void ConfigSearchWindow::saveSettings(void) @@ -1324,7 +1300,7 @@ void ConfigSearchWindow::search(void) ConfigItem *lastItem = NULL; free(result); - list->list->clear(); + list->clear(); info->clear(); result = sym_re_search(editField->text().toLatin1()); @@ -1332,7 +1308,7 @@ void ConfigSearchWindow::search(void) return; for (p = result; *p; p++) { for_all_prompts((*p), prop) - lastItem = new ConfigItem(list->list, lastItem, prop->menu, + lastItem = new ConfigItem(list, lastItem, prop->menu, menu_is_visible(prop->menu)); } } @@ -1343,116 +1319,143 @@ void ConfigSearchWindow::search(void) ConfigMainWindow::ConfigMainWindow(void) : searchWindow(0) { - QMenuBar* menu; bool ok = true; QVariant x, y; int width, height; char title[256]; - QDesktopWidget *d = configApp->desktop(); snprintf(title, sizeof(title), "%s%s", rootmenu.prompt->text, "" ); setWindowTitle(title); - width = configSettings->value("/window width", d->width() - 64).toInt(); - height = configSettings->value("/window height", d->height() - 64).toInt(); + QRect g = configApp->primaryScreen()->geometry(); + width = configSettings->value("/window width", g.width() - 64).toInt(); + height = configSettings->value("/window height", g.height() - 64).toInt(); resize(width, height); x = configSettings->value("/window x"); y = configSettings->value("/window y"); if ((x.isValid())&&(y.isValid())) move(x.toInt(), y.toInt()); - split1 = new QSplitter(this); + // set up icons + ConfigItem::symbolYesIcon = QIcon(QPixmap(xpm_symbol_yes)); + ConfigItem::symbolModIcon = QIcon(QPixmap(xpm_symbol_mod)); + ConfigItem::symbolNoIcon = QIcon(QPixmap(xpm_symbol_no)); + ConfigItem::choiceYesIcon = QIcon(QPixmap(xpm_choice_yes)); + ConfigItem::choiceNoIcon = QIcon(QPixmap(xpm_choice_no)); + ConfigItem::menuIcon = QIcon(QPixmap(xpm_menu)); + ConfigItem::menubackIcon = QIcon(QPixmap(xpm_menuback)); + + QWidget *widget = new QWidget(this); + QVBoxLayout *layout = new QVBoxLayout(widget); + setCentralWidget(widget); + + split1 = new QSplitter(widget); split1->setOrientation(Qt::Horizontal); - setCentralWidget(split1); + split1->setChildrenCollapsible(false); - menuView = new ConfigView(split1, "menu"); - menuList = menuView->list; + menuList = new ConfigList(widget, "menu"); - split2 = new QSplitter(split1); + split2 = new QSplitter(widget); + split2->setChildrenCollapsible(false); split2->setOrientation(Qt::Vertical); // create config tree - configView = new ConfigView(split2, "config"); - configList = configView->list; + configList = new ConfigList(widget, "config"); + + helpText = new ConfigInfoView(widget, "help"); - helpText = new ConfigInfoView(split2, "help"); + layout->addWidget(split2); + split2->addWidget(split1); + split1->addWidget(configList); + split1->addWidget(menuList); + split2->addWidget(helpText); setTabOrder(configList, helpText); configList->setFocus(); - menu = menuBar(); - toolBar = new QToolBar("Tools", this); - addToolBar(toolBar); - - backAction = new QAction(QPixmap(xpm_back), _("Back"), this); - connect(backAction, SIGNAL(triggered(bool)), SLOT(goBack())); - backAction->setEnabled(false); - QAction *quitAction = new QAction(_("&Quit"), this); - quitAction->setShortcut(Qt::CTRL + Qt::Key_Q); - connect(quitAction, SIGNAL(triggered(bool)), SLOT(close())); - QAction *loadAction = new QAction(QPixmap(xpm_load), _("&Load"), this); - loadAction->setShortcut(Qt::CTRL + Qt::Key_L); - connect(loadAction, SIGNAL(triggered(bool)), SLOT(loadConfig())); - saveAction = new QAction(QPixmap(xpm_save), _("&Save"), this); - saveAction->setShortcut(Qt::CTRL + Qt::Key_S); - connect(saveAction, SIGNAL(triggered(bool)), SLOT(saveConfig())); + backAction = new QAction(QPixmap(xpm_back), "Back", this); + connect(backAction, &QAction::triggered, + this, &ConfigMainWindow::goBack); + + QAction *quitAction = new QAction("&Quit", this); + quitAction->setShortcut(Qt::CTRL | Qt::Key_Q); + connect(quitAction, &QAction::triggered, + this, &ConfigMainWindow::close); + + QAction *loadAction = new QAction(QPixmap(xpm_load), "&Load", this); + loadAction->setShortcut(Qt::CTRL | Qt::Key_L); + connect(loadAction, &QAction::triggered, + this, &ConfigMainWindow::loadConfig); + + saveAction = new QAction(QPixmap(xpm_save), "&Save", this); + saveAction->setShortcut(Qt::CTRL | Qt::Key_S); + connect(saveAction, &QAction::triggered, + this, &ConfigMainWindow::saveConfig); + conf_set_changed_callback(conf_changed); + // Set saveAction's initial state conf_changed(); - QAction *saveAsAction = new QAction(_("Save &As..."), this); - connect(saveAsAction, SIGNAL(triggered(bool)), SLOT(saveConfigAs())); - QAction *searchAction = new QAction(_("&Find"), this); - searchAction->setShortcut(Qt::CTRL + Qt::Key_F); - connect(searchAction, SIGNAL(triggered(bool)), SLOT(searchConfig())); - singleViewAction = new QAction(QPixmap(xpm_single_view), _("Single View"), this); + configname = xstrdup(conf_get_configname()); + + QAction *saveAsAction = new QAction("Save &As...", this); + connect(saveAsAction, &QAction::triggered, + this, &ConfigMainWindow::saveConfigAs); + QAction *searchAction = new QAction("&Find", this); + searchAction->setShortcut(Qt::CTRL | Qt::Key_F); + connect(searchAction, &QAction::triggered, + this, &ConfigMainWindow::searchConfig); + singleViewAction = new QAction(QPixmap(xpm_single_view), "Single View", this); singleViewAction->setCheckable(true); - connect(singleViewAction, SIGNAL(triggered(bool)), SLOT(showSingleView())); - splitViewAction = new QAction(QPixmap(xpm_split_view), _("Split View"), this); + connect(singleViewAction, &QAction::triggered, + this, &ConfigMainWindow::showSingleView); + splitViewAction = new QAction(QPixmap(xpm_split_view), "Split View", this); splitViewAction->setCheckable(true); - connect(splitViewAction, SIGNAL(triggered(bool)), SLOT(showSplitView())); - fullViewAction = new QAction(QPixmap(xpm_tree_view), _("Full View"), this); + connect(splitViewAction, &QAction::triggered, + this, &ConfigMainWindow::showSplitView); + fullViewAction = new QAction(QPixmap(xpm_tree_view), "Full View", this); fullViewAction->setCheckable(true); - connect(fullViewAction, SIGNAL(triggered(bool)), SLOT(showFullView())); + connect(fullViewAction, &QAction::triggered, + this, &ConfigMainWindow::showFullView); - QAction *showNameAction = new QAction(_("Show Name"), this); + QAction *showNameAction = new QAction("Show Name", this); showNameAction->setCheckable(true); - connect(showNameAction, SIGNAL(toggled(bool)), configView, SLOT(setShowName(bool))); - showNameAction->setChecked(configView->showName()); - QAction *showRangeAction = new QAction(_("Show Range"), this); - showRangeAction->setCheckable(true); - connect(showRangeAction, SIGNAL(toggled(bool)), configView, SLOT(setShowRange(bool))); - QAction *showDataAction = new QAction(_("Show Data"), this); - showDataAction->setCheckable(true); - connect(showDataAction, SIGNAL(toggled(bool)), configView, SLOT(setShowData(bool))); + connect(showNameAction, &QAction::toggled, + configList, &ConfigList::setShowName); + showNameAction->setChecked(configList->showName); QActionGroup *optGroup = new QActionGroup(this); optGroup->setExclusive(true); - connect(optGroup, SIGNAL(triggered(QAction*)), configView, - SLOT(setOptionMode(QAction *))); - connect(optGroup, SIGNAL(triggered(QAction *)), menuView, - SLOT(setOptionMode(QAction *))); - - configView->showNormalAction = new QAction(_("Show Normal Options"), optGroup); - configView->showAllAction = new QAction(_("Show All Options"), optGroup); - configView->showPromptAction = new QAction(_("Show Prompt Options"), optGroup); - configView->showNormalAction->setCheckable(true); - configView->showAllAction->setCheckable(true); - configView->showPromptAction->setCheckable(true); - - QAction *showDebugAction = new QAction( _("Show Debug Info"), this); + connect(optGroup, &QActionGroup::triggered, + configList, &ConfigList::setOptionMode); + connect(optGroup, &QActionGroup::triggered, + menuList, &ConfigList::setOptionMode); + + ConfigList::showNormalAction = new QAction("Show Normal Options", optGroup); + ConfigList::showNormalAction->setCheckable(true); + ConfigList::showAllAction = new QAction("Show All Options", optGroup); + ConfigList::showAllAction->setCheckable(true); + ConfigList::showPromptAction = new QAction("Show Prompt Options", optGroup); + ConfigList::showPromptAction->setCheckable(true); + + QAction *showDebugAction = new QAction("Show Debug Info", this); showDebugAction->setCheckable(true); - connect(showDebugAction, SIGNAL(toggled(bool)), helpText, SLOT(setShowDebug(bool))); + connect(showDebugAction, &QAction::toggled, + helpText, &ConfigInfoView::setShowDebug); showDebugAction->setChecked(helpText->showDebug()); - QAction *showIntroAction = new QAction( _("Introduction"), this); - connect(showIntroAction, SIGNAL(triggered(bool)), SLOT(showIntro())); - QAction *showAboutAction = new QAction( _("About"), this); - connect(showAboutAction, SIGNAL(triggered(bool)), SLOT(showAbout())); + QAction *showIntroAction = new QAction("Introduction", this); + connect(showIntroAction, &QAction::triggered, + this, &ConfigMainWindow::showIntro); + QAction *showAboutAction = new QAction("About", this); + connect(showAboutAction, &QAction::triggered, + this, &ConfigMainWindow::showAbout); // init tool bar + QToolBar *toolBar = addToolBar("Tools"); toolBar->addAction(backAction); toolBar->addSeparator(); toolBar->addAction(loadAction); @@ -1462,53 +1465,55 @@ ConfigMainWindow::ConfigMainWindow(void) toolBar->addAction(splitViewAction); toolBar->addAction(fullViewAction); - // create config menu - QMenu* config = menu->addMenu(_("&File")); - config->addAction(loadAction); - config->addAction(saveAction); - config->addAction(saveAsAction); - config->addSeparator(); - config->addAction(quitAction); + // create file menu + QMenu *menu = menuBar()->addMenu("&File"); + menu->addAction(loadAction); + menu->addAction(saveAction); + menu->addAction(saveAsAction); + menu->addSeparator(); + menu->addAction(quitAction); // create edit menu - QMenu* editMenu = menu->addMenu(_("&Edit")); - editMenu->addAction(searchAction); + menu = menuBar()->addMenu("&Edit"); + menu->addAction(searchAction); // create options menu - QMenu* optionMenu = menu->addMenu(_("&Option")); - optionMenu->addAction(showNameAction); - optionMenu->addAction(showRangeAction); - optionMenu->addAction(showDataAction); - optionMenu->addSeparator(); - optionMenu->addActions(optGroup->actions()); - optionMenu->addSeparator(); - optionMenu->addAction(showDebugAction); + menu = menuBar()->addMenu("&Option"); + menu->addAction(showNameAction); + menu->addSeparator(); + menu->addActions(optGroup->actions()); + menu->addSeparator(); + menu->addAction(showDebugAction); // create help menu - menu->addSeparator(); - QMenu* helpMenu = menu->addMenu(_("&Help")); - helpMenu->addAction(showIntroAction); - helpMenu->addAction(showAboutAction); - - connect(configList, SIGNAL(menuChanged(struct menu *)), - helpText, SLOT(setInfo(struct menu *))); - connect(configList, SIGNAL(menuSelected(struct menu *)), - SLOT(changeMenu(struct menu *))); - connect(configList, SIGNAL(parentSelected()), - SLOT(goBack())); - connect(menuList, SIGNAL(menuChanged(struct menu *)), - helpText, SLOT(setInfo(struct menu *))); - connect(menuList, SIGNAL(menuSelected(struct menu *)), - SLOT(changeMenu(struct menu *))); - - connect(configList, SIGNAL(gotFocus(struct menu *)), - helpText, SLOT(setInfo(struct menu *))); - connect(menuList, SIGNAL(gotFocus(struct menu *)), - helpText, SLOT(setInfo(struct menu *))); - connect(menuList, SIGNAL(gotFocus(struct menu *)), - SLOT(listFocusChanged(void))); - connect(helpText, SIGNAL(menuSelected(struct menu *)), - SLOT(setMenuLink(struct menu *))); + menu = menuBar()->addMenu("&Help"); + menu->addAction(showIntroAction); + menu->addAction(showAboutAction); + + connect(helpText, &ConfigInfoView::anchorClicked, + helpText, &ConfigInfoView::clicked); + + connect(configList, &ConfigList::menuChanged, + helpText, &ConfigInfoView::setInfo); + connect(configList, &ConfigList::menuSelected, + this, &ConfigMainWindow::changeMenu); + connect(configList, &ConfigList::itemSelected, + this, &ConfigMainWindow::changeItens); + connect(configList, &ConfigList::parentSelected, + this, &ConfigMainWindow::goBack); + connect(menuList, &ConfigList::menuChanged, + helpText, &ConfigInfoView::setInfo); + connect(menuList, &ConfigList::menuSelected, + this, &ConfigMainWindow::changeMenu); + + connect(configList, &ConfigList::gotFocus, + helpText, &ConfigInfoView::setInfo); + connect(menuList, &ConfigList::gotFocus, + helpText, &ConfigInfoView::setInfo); + connect(menuList, &ConfigList::gotFocus, + this, &ConfigMainWindow::listFocusChanged); + connect(helpText, &ConfigInfoView::menuSelected, + this, &ConfigMainWindow::setMenuLink); QString listMode = configSettings->value("/listMode", "symbol").toString(); if (listMode == "single") @@ -1530,45 +1535,74 @@ ConfigMainWindow::ConfigMainWindow(void) void ConfigMainWindow::loadConfig(void) { - QString s = QFileDialog::getOpenFileName(this, "", conf_get_configname()); - if (s.isNull()) + QString str; + QByteArray ba; + const char *name; + + str = QFileDialog::getOpenFileName(this, "", configname); + if (str.isNull()) return; - if (conf_read(QFile::encodeName(s))) - QMessageBox::information(this, "qconf", _("Unable to load configuration!")); - ConfigView::updateListAll(); + + ba = str.toLocal8Bit(); + name = ba.data(); + + if (conf_read(name)) + QMessageBox::information(this, "qconf", "Unable to load configuration!"); + + free(configname); + configname = xstrdup(name); + + ConfigList::updateListAllForAll(); } bool ConfigMainWindow::saveConfig(void) { - if (conf_write(NULL)) { - QMessageBox::information(this, "qconf", _("Unable to save configuration!")); + if (conf_write(configname)) { + QMessageBox::information(this, "qconf", "Unable to save configuration!"); return false; } + conf_write_autoconf(0); + return true; } void ConfigMainWindow::saveConfigAs(void) { - QString s = QFileDialog::getSaveFileName(this, "", conf_get_configname()); - if (s.isNull()) + QString str; + QByteArray ba; + const char *name; + + str = QFileDialog::getSaveFileName(this, "", configname); + if (str.isNull()) return; - saveConfig(); + + ba = str.toLocal8Bit(); + name = ba.data(); + + if (conf_write(name)) { + QMessageBox::information(this, "qconf", "Unable to save configuration!"); + } + conf_write_autoconf(0); + + free(configname); + configname = xstrdup(name); } void ConfigMainWindow::searchConfig(void) { if (!searchWindow) - searchWindow = new ConfigSearchWindow(this, "search"); + searchWindow = new ConfigSearchWindow(this); searchWindow->show(); } -void ConfigMainWindow::changeMenu(struct menu *menu) +void ConfigMainWindow::changeItens(struct menu *menu) { configList->setRootMenu(menu); - if (configList->rootEntry->parent == &rootmenu) - backAction->setEnabled(false); - else - backAction->setEnabled(true); +} + +void ConfigMainWindow::changeMenu(struct menu *menu) +{ + menuList->setRootMenu(menu); } void ConfigMainWindow::setMenuLink(struct menu *menu) @@ -1588,22 +1622,26 @@ void ConfigMainWindow::setMenuLink(struct menu *menu) return; list->setRootMenu(parent); break; - case symbolMode: + case menuMode: if (menu->flags & MENU_ROOT) { - configList->setRootMenu(menu); + menuList->setRootMenu(menu); configList->clearSelection(); - list = menuList; - } else { list = configList; + } else { parent = menu_get_parent_menu(menu->parent); if (!parent) return; - item = menuList->findConfigItem(parent); + + /* Select the config view */ + item = configList->findConfigItem(parent); if (item) { - item->setSelected(true); - menuList->scrollToItem(item); + configList->setSelected(item, true); + configList->scrollToItem(item); } - list->setRootMenu(parent); + + menuList->setRootMenu(parent); + menuList->clearSelection(); + list = menuList; } break; case fullMode: @@ -1616,9 +1654,10 @@ void ConfigMainWindow::setMenuLink(struct menu *menu) if (list) { item = list->findConfigItem(menu); if (item) { - item->setSelected(true); + list->setSelected(item, true); list->scrollToItem(item); list->setFocus(); + helpText->setInfo(menu); } } } @@ -1631,25 +1670,10 @@ void ConfigMainWindow::listFocusChanged(void) void ConfigMainWindow::goBack(void) { - ConfigItem* item, *oldSelection; - - configList->setParentMenu(); if (configList->rootEntry == &rootmenu) - backAction->setEnabled(false); - - if (menuList->selectedItems().count() == 0) return; - item = (ConfigItem*)menuList->selectedItems().first(); - oldSelection = item; - while (item) { - if (item->menu == configList->rootEntry) { - oldSelection->setSelected(false); - item->setSelected(true); - break; - } - item = (ConfigItem*)item->parent(); - } + configList->setParentMenu(); } void ConfigMainWindow::showSingleView(void) @@ -1661,7 +1685,9 @@ void ConfigMainWindow::showSingleView(void) fullViewAction->setEnabled(true); fullViewAction->setChecked(false); - menuView->hide(); + backAction->setEnabled(true); + + menuList->hide(); menuList->setRootMenu(0); configList->mode = singleMode; if (configList->rootEntry == &rootmenu) @@ -1680,17 +1706,19 @@ void ConfigMainWindow::showSplitView(void) fullViewAction->setEnabled(true); fullViewAction->setChecked(false); - configList->mode = symbolMode; + backAction->setEnabled(false); + + configList->mode = menuMode; if (configList->rootEntry == &rootmenu) configList->updateListAll(); else configList->setRootMenu(&rootmenu); configList->setAllOpen(true); configApp->processEvents(); - menuList->mode = menuMode; + menuList->mode = symbolMode; menuList->setRootMenu(&rootmenu); menuList->setAllOpen(true); - menuView->show(); + menuList->show(); menuList->setFocus(); } @@ -1703,7 +1731,9 @@ void ConfigMainWindow::showFullView(void) fullViewAction->setEnabled(false); fullViewAction->setChecked(true); - menuView->hide(); + backAction->setEnabled(false); + + menuList->hide(); menuList->setRootMenu(0); configList->mode = fullMode; if (configList->rootEntry == &rootmenu) @@ -1715,7 +1745,6 @@ void ConfigMainWindow::showFullView(void) /* * ask for saving configuration before quitting - * TODO ask only when something changed */ void ConfigMainWindow::closeEvent(QCloseEvent* e) { @@ -1723,11 +1752,21 @@ void ConfigMainWindow::closeEvent(QCloseEvent* e) e->accept(); return; } - QMessageBox mb("qconf", _("Save configuration?"), QMessageBox::Warning, - QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::Cancel | QMessageBox::Escape); - mb.setButtonText(QMessageBox::Yes, _("&Save Changes")); - mb.setButtonText(QMessageBox::No, _("&Discard Changes")); - mb.setButtonText(QMessageBox::Cancel, _("Cancel Exit")); + + QMessageBox mb(QMessageBox::Icon::Warning, "qconf", + "Save configuration?"); + + QPushButton *yb = mb.addButton(QMessageBox::Yes); + QPushButton *db = mb.addButton(QMessageBox::No); + QPushButton *cb = mb.addButton(QMessageBox::Cancel); + + yb->setText("&Save Changes"); + db->setText("&Discard Changes"); + cb->setText("Cancel Exit"); + + mb.setDefaultButton(yb); + mb.setEscapeButton(cb); + switch (mb.exec()) { case QMessageBox::Yes: if (saveConfig()) @@ -1746,28 +1785,40 @@ void ConfigMainWindow::closeEvent(QCloseEvent* e) void ConfigMainWindow::showIntro(void) { - static const QString str = _("Welcome to the qconf graphical configuration tool.\n\n" - "For each option, a blank box indicates the feature is disabled, a check\n" - "indicates it is enabled, and a dot indicates that it is to be compiled\n" - "as a module. Clicking on the box will cycle through the three states.\n\n" - "If you do not see an option (e.g., a device driver) that you believe\n" - "should be present, try turning on Show All Options under the Options menu.\n" - "Although there is no cross reference yet to help you figure out what other\n" - "options must be enabled to support the option you are interested in, you can\n" - "still view the help of a grayed-out option.\n\n" - "Toggling Show Debug Info under the Options menu will show the dependencies,\n" - "which you can then match by examining other options.\n\n"); + static const QString str = + "Welcome to the qconf graphical configuration tool.\n" + "\n" + "For bool and tristate options, a blank box indicates the " + "feature is disabled, a check indicates it is enabled, and a " + "dot indicates that it is to be compiled as a module. Clicking " + "on the box will cycle through the three states. For int, hex, " + "and string options, double-clicking or pressing F2 on the " + "Value cell will allow you to edit the value.\n" + "\n" + "If you do not see an option (e.g., a device driver) that you " + "believe should be present, try turning on Show All Options " + "under the Options menu. Enabling Show Debug Info will help you" + "figure out what other options must be enabled to support the " + "option you are interested in, and hyperlinks will navigate to " + "them.\n" + "\n" + "Toggling Show Debug Info under the Options menu will show the " + "dependencies, which you can then match by examining other " + "options.\n"; QMessageBox::information(this, "qconf", str); } void ConfigMainWindow::showAbout(void) { - static const QString str = _("qconf is Copyright (C) 2002 Roman Zippel .\n" - "Copyright (C) 2015 Boris Barbulovski .\n\n" - "Bug reports and feature request can also be entered at http://bugzilla.kernel.org/\n"); + static const QString str = "qconf is Copyright (C) 2002 Roman Zippel .\n" + "Copyright (C) 2015 Boris Barbulovski .\n" + "\n" + "Bug reports and feature request can also be entered at http://bugzilla.kernel.org/\n" + "\n" + "Qt Version: "; - QMessageBox::information(this, "qconf", str); + QMessageBox::information(this, "qconf", str + qVersion()); } void ConfigMainWindow::saveSettings(void) @@ -1826,7 +1877,7 @@ static const char *progname; static void usage(void) { - printf(_("%s [-s] \n").toLatin1().constData(), progname); + printf("%s [-s] \n", progname); exit(0); } @@ -1835,11 +1886,7 @@ int main(int ac, char** av) ConfigMainWindow* v; const char *name; - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); - progname = av[0]; - configApp = new QApplication(ac, av); if (ac > 1 && av[1][0] == '-') { switch (av[1][1]) { case 's': @@ -1860,6 +1907,8 @@ int main(int ac, char** av) conf_read(NULL); //zconfdump(stdout); + configApp = new QApplication(ac, av); + configSettings = new ConfigSettings(); configSettings->beginGroup("/kconfig/qconf"); v = new ConfigMainWindow(); diff --git a/support/kconfig/qconf.h b/support/kconfig/qconf.h index a40036d1b0..78b0a1dfcd 100644 --- a/support/kconfig/qconf.h +++ b/support/kconfig/qconf.h @@ -1,25 +1,24 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ -#include -#include -#include +#include +#include #include -#include +#include +#include #include #include -#include #include -#include -#include +#include +#include +#include + #include "expr.h" -class ConfigView; class ConfigList; class ConfigItem; -class ConfigLineEdit; class ConfigMainWindow; class ConfigSettings : public QSettings { @@ -30,7 +29,7 @@ public: }; enum colIdx { - promptColIdx, nameColIdx, noColIdx, modColIdx, yesColIdx, dataColIdx, colNr + promptColIdx, nameColIdx, dataColIdx }; enum listMode { singleMode, menuMode, symbolMode, fullMode, listMode @@ -43,13 +42,16 @@ class ConfigList : public QTreeWidget { Q_OBJECT typedef class QTreeWidget Parent; public: - ConfigList(ConfigView* p, const char *name = 0); + ConfigList(QWidget *parent, const char *name = 0); + ~ConfigList(); void reinit(void); - ConfigView* parent(void) const - { - return (ConfigView*)Parent::parent(); - } ConfigItem* findConfigItem(struct menu *); + void setSelected(QTreeWidgetItem *item, bool enable) { + for (int i = 0; i < selectedItems().size(); i++) + selectedItems().at(i)->setSelected(false); + + item->setSelected(enable); + } protected: void keyPressEvent(QKeyEvent *e); @@ -63,61 +65,52 @@ protected: public slots: void setRootMenu(struct menu *menu); - void updateList(ConfigItem *item); + void updateList(); void setValue(ConfigItem* item, tristate val); void changeValue(ConfigItem* item); void updateSelection(void); void saveSettings(void); + void setOptionMode(QAction *action); + void setShowName(bool on); + signals: void menuChanged(struct menu *menu); void menuSelected(struct menu *menu); + void itemSelected(struct menu *menu); void parentSelected(void); void gotFocus(struct menu *); + void showNameChanged(bool on); public: void updateListAll(void) { updateAll = true; - updateList(NULL); + updateList(); updateAll = false; } - ConfigList* listView() - { - return this; - } - ConfigItem* firstChild() const - { - return (ConfigItem *)children().first(); - } - void addColumn(colIdx idx) - { - showColumn(idx); - } - void removeColumn(colIdx idx) - { - hideColumn(idx); - } void setAllOpen(bool open); void setParentMenu(void); bool menuSkip(struct menu *); void updateMenuList(ConfigItem *parent, struct menu*); - void updateMenuList(ConfigList *parent, struct menu*); + void updateMenuList(struct menu *menu); bool updateAll; - QPixmap symbolYesPix, symbolModPix, symbolNoPix; - QPixmap choiceYesPix, choiceNoPix; - QPixmap menuPix, menuInvPix, menuBackPix, voidPix; - - bool showName, showRange, showData; + bool showName; enum listMode mode; enum optionMode optMode; struct menu *rootEntry; QPalette disabledColorGroup; QPalette inactivedColorGroup; QMenu* headerPopup; + + static QList allLists; + static void updateListForAll(); + static void updateListAllForAll(); + + static QAction *showNormalAction, *showAllAction, *showPromptAction; }; class ConfigItem : public QTreeWidgetItem { @@ -140,7 +133,6 @@ public: } ~ConfigItem(void); void init(void); - void okRename(int col); void updateMenu(void); void testUpdateMenu(bool v); ConfigList* listView() const @@ -165,82 +157,36 @@ public: return ret; } - void setText(colIdx idx, const QString& text) - { - Parent::setText(idx, text); - } - QString text(colIdx idx) const - { - return Parent::text(idx); - } - void setPixmap(colIdx idx, const QIcon &icon) - { - Parent::setIcon(idx, icon); - } - const QIcon pixmap(colIdx idx) const - { - return icon(idx); - } // TODO: Implement paintCell ConfigItem* nextItem; struct menu *menu; bool visible; bool goParent; -}; -class ConfigLineEdit : public QLineEdit { - Q_OBJECT - typedef class QLineEdit Parent; -public: - ConfigLineEdit(ConfigView* parent); - ConfigView* parent(void) const - { - return (ConfigView*)Parent::parent(); - } - void show(ConfigItem *i); - void keyPressEvent(QKeyEvent *e); - -public: - ConfigItem *item; + static QIcon symbolYesIcon, symbolModIcon, symbolNoIcon; + static QIcon choiceYesIcon, choiceNoIcon; + static QIcon menuIcon, menubackIcon; }; -class ConfigView : public QWidget { - Q_OBJECT - typedef class QWidget Parent; -public: - ConfigView(QWidget* parent, const char *name = 0); - ~ConfigView(void); - static void updateList(ConfigItem* item); - static void updateListAll(void); - - bool showName(void) const { return list->showName; } - bool showRange(void) const { return list->showRange; } - bool showData(void) const { return list->showData; } -public slots: - void setShowName(bool); - void setShowRange(bool); - void setShowData(bool); - void setOptionMode(QAction *); -signals: - void showNameChanged(bool); - void showRangeChanged(bool); - void showDataChanged(bool); +class ConfigItemDelegate : public QStyledItemDelegate +{ +private: + struct menu *menu; public: - ConfigList* list; - ConfigLineEdit* lineEdit; - - static ConfigView* viewList; - ConfigView* nextView; - - static QAction *showNormalAction; - static QAction *showAllAction; - static QAction *showPromptAction; + ConfigItemDelegate(QObject *parent = nullptr) + : QStyledItemDelegate(parent) {} + QWidget *createEditor(QWidget *parent, + const QStyleOptionViewItem &option, + const QModelIndex &index) const override; + void setModelData(QWidget *editor, QAbstractItemModel *model, + const QModelIndex &index) const override; }; class ConfigInfoView : public QTextBrowser { Q_OBJECT typedef class QTextBrowser Parent; + QMenu *contextMenu; public: ConfigInfoView(QWidget* parent, const char *name = 0); bool showDebug(void) const { return _showDebug; } @@ -249,6 +195,7 @@ public slots: void setInfo(struct menu *menu); void saveSettings(void); void setShowDebug(bool); + void clicked (const QUrl &url); signals: void showDebugChanged(bool); @@ -260,8 +207,7 @@ protected: QString debug_info(struct symbol *sym); static QString print_filter(const QString &str); static void expr_print_help(void *data, struct symbol *sym, const char *str); - QMenu *createStandardContextMenu(const QPoint & pos); - void contextMenuEvent(QContextMenuEvent *e); + void contextMenuEvent(QContextMenuEvent *event); struct symbol *sym; struct menu *_menu; @@ -272,7 +218,7 @@ class ConfigSearchWindow : public QDialog { Q_OBJECT typedef class QDialog Parent; public: - ConfigSearchWindow(ConfigMainWindow* parent, const char *name = 0); + ConfigSearchWindow(ConfigMainWindow *parent); public slots: void saveSettings(void); @@ -282,7 +228,7 @@ protected: QLineEdit* editField; QPushButton* searchButton; QSplitter* split; - ConfigView* list; + ConfigList *list; ConfigInfoView* info; struct symbol **result; @@ -291,12 +237,14 @@ protected: class ConfigMainWindow : public QMainWindow { Q_OBJECT + char *configname; static QAction *saveAction; static void conf_changed(void); public: ConfigMainWindow(void); public slots: void changeMenu(struct menu *); + void changeItens(struct menu *); void setMenuLink(struct menu *); void listFocusChanged(void); void goBack(void); @@ -315,12 +263,9 @@ protected: void closeEvent(QCloseEvent *e); ConfigSearchWindow *searchWindow; - ConfigView *menuView; ConfigList *menuList; - ConfigView *configView; ConfigList *configList; ConfigInfoView *helpText; - QToolBar *toolBar; QAction *backAction; QAction *singleViewAction; QAction *splitViewAction; diff --git a/support/kconfig/streamline_config.pl b/support/kconfig/streamline_config.pl index a2e83ab17d..d51cd7ac15 100755 --- a/support/kconfig/streamline_config.pl +++ b/support/kconfig/streamline_config.pl @@ -1,7 +1,7 @@ #!/usr/bin/env perl +# SPDX-License-Identifier: GPL-2.0 # # Copyright 2005-2009 - Steven Rostedt -# Licensed under the terms of the GNU GPL License version 2 # # It's simple enough to figure out how this works. # If not, then you can ask me at stripconfig at goodmis.org @@ -21,7 +21,7 @@ # 1. Boot up the kernel that you want to stream line the config on. # 2. Change directory to the directory holding the source of the # kernel that you just booted. -# 3. Copy the configuraton file to this directory as .config +# 3. Copy the configuration file to this directory as .config # 4. Have all your devices that you need modules for connected and # operational (make sure that their corresponding modules are loaded) # 5. Run this script redirecting the output to some other file @@ -56,8 +56,6 @@ sub dprint { print STDERR @_; } -my $config = ".config"; - my $uname = `uname -r`; chomp $uname; @@ -145,6 +143,7 @@ my %depends; my %selects; my %prompts; my %objects; +my %config2kfile; my $var; my $iflevel = 0; my @ifdeps; @@ -165,13 +164,13 @@ sub read_kconfig { my $last_source = ""; # Check for any environment variables used - while ($source =~ /\$(\w+)/ && $last_source ne $source) { + while ($source =~ /\$\((\w+)\)/ && $last_source ne $source) { my $env = $1; $last_source = $source; - $source =~ s/\$$env/$ENV{$env}/; + $source =~ s/\$\($env\)/$ENV{$env}/; } - open(my $kinfile, '<', $source) || die "Can't open $kconfig"; + open(my $kinfile, '<', $source) || die "Can't open $source"; while (<$kinfile>) { chomp; @@ -203,6 +202,7 @@ sub read_kconfig { if (/^\s*(menu)?config\s+(\S+)\s*$/) { $state = "NEW"; $config = $2; + $config2kfile{"CONFIG_$config"} = $kconfig; # Add depends for 'if' nesting for (my $i = 0; $i < $iflevel; $i++) { @@ -317,7 +317,7 @@ foreach my $makefile (@makefiles) { $_ = convert_vars($_, %make_vars); # collect objects after obj-$(CONFIG_FOO_BAR) - if (/obj-\$\((CONFIG_[^\)]*)\)\s*[+:]?=\s*(.*)/) { + if (/obj-\$[({](CONFIG_[^})]*)[)}]\s*[+:]?=\s*(.*)/) { $var = $1; $objs = $2; @@ -374,7 +374,7 @@ if (defined($lsmod_file)) { $lsmod = "$dir/lsmod"; last; } -} + } if (!defined($lsmod)) { # try just the path $lsmod = "lsmod"; @@ -481,7 +481,7 @@ sub parse_config_depends # The idea is we look at all the configs that select it. If one # is already in our list of configs to enable, then there's nothing # else to do. If there isn't, we pick the first config that was -# enabled in the orignal config and use that. +# enabled in the original config and use that. sub parse_config_selects { my ($config, $p) = @_; @@ -593,6 +593,23 @@ while ($repeat) { } my %setconfigs; +my @preserved_kconfigs; +if (defined($ENV{'LMC_KEEP'})) { + @preserved_kconfigs = split(/:/,$ENV{LMC_KEEP}); +} + +sub in_preserved_kconfigs { + my $kconfig = $config2kfile{$_[0]}; + if (!defined($kconfig)) { + return 0; + } + foreach my $excl (@preserved_kconfigs) { + if($kconfig =~ /^$excl/) { + return 1; + } + } + return 0; +} # Finally, read the .config file and turn off any module enabled that # we could not find a reason to keep enabled. @@ -612,47 +629,52 @@ foreach my $line (@config_file) { } if (/CONFIG_MODULE_SIG_KEY="(.+)"/) { - my $orig_cert = $1; - my $default_cert = "certs/signing_key.pem"; - - # Check that the logic in this script still matches the one in Kconfig - if (!defined($depends{"MODULE_SIG_KEY"}) || - $depends{"MODULE_SIG_KEY"} !~ /"\Q$default_cert\E"/) { - print STDERR "WARNING: MODULE_SIG_KEY assertion failure, ", - "update needed to ", __FILE__, " line ", __LINE__, "\n"; - print; - } elsif ($orig_cert ne $default_cert && ! -f $orig_cert) { - print STDERR "Module signature verification enabled but ", - "module signing key \"$orig_cert\" not found. Resetting ", - "signing key to default value.\n"; - print "CONFIG_MODULE_SIG_KEY=\"$default_cert\"\n"; - } else { - print; - } - next; + my $orig_cert = $1; + my $default_cert = "certs/signing_key.pem"; + + # Check that the logic in this script still matches the one in Kconfig + if (!defined($depends{"MODULE_SIG_KEY"}) || + $depends{"MODULE_SIG_KEY"} !~ /"\Q$default_cert\E"/) { + print STDERR "WARNING: MODULE_SIG_KEY assertion failure, ", + "update needed to ", __FILE__, " line ", __LINE__, "\n"; + print; + } elsif ($orig_cert ne $default_cert && ! -f $orig_cert) { + print STDERR "Module signature verification enabled but ", + "module signing key \"$orig_cert\" not found. Resetting ", + "signing key to default value.\n"; + print "CONFIG_MODULE_SIG_KEY=\"$default_cert\"\n"; + } else { + print; + } + next; } if (/CONFIG_SYSTEM_TRUSTED_KEYS="(.+)"/) { - my $orig_keys = $1; - - if (! -f $orig_keys) { - print STDERR "System keyring enabled but keys \"$orig_keys\" ", - "not found. Resetting keys to default value.\n"; - print "CONFIG_SYSTEM_TRUSTED_KEYS=\"\"\n"; - } else { - print; - } - next; + my $orig_keys = $1; + + if (! -f $orig_keys) { + print STDERR "System keyring enabled but keys \"$orig_keys\" ", + "not found. Resetting keys to default value.\n"; + print "CONFIG_SYSTEM_TRUSTED_KEYS=\"\"\n"; + } else { + print; + } + next; } if (/^(CONFIG.*)=(m|y)/) { + if (in_preserved_kconfigs($1)) { + dprint "Preserve config $1"; + print; + next; + } if (defined($configs{$1})) { if ($localyesconfig) { - $setconfigs{$1} = 'y'; + $setconfigs{$1} = 'y'; print "$1=y\n"; next; } else { - $setconfigs{$1} = $2; + $setconfigs{$1} = $2; } } elsif ($2 eq "m") { print "# $1 is not set\n"; @@ -680,3 +702,5 @@ foreach my $module (keys(%modules)) { print STDERR "\n"; } } + +# vim: softtabstop=4 diff --git a/support/kconfig/symbol.c b/support/kconfig/symbol.c index f0b2e3b310..81fe1884ef 100644 --- a/support/kconfig/symbol.c +++ b/support/kconfig/symbol.c @@ -1,64 +1,41 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. */ +#include #include #include #include #include -#include +#include "internal.h" #include "lkc.h" struct symbol symbol_yes = { .name = "y", .curr = { "y", yes }, + .menus = LIST_HEAD_INIT(symbol_yes.menus), .flags = SYMBOL_CONST|SYMBOL_VALID, -}, symbol_mod = { +}; + +struct symbol symbol_mod = { .name = "m", .curr = { "m", mod }, + .menus = LIST_HEAD_INIT(symbol_mod.menus), .flags = SYMBOL_CONST|SYMBOL_VALID, -}, symbol_no = { +}; + +struct symbol symbol_no = { .name = "n", .curr = { "n", no }, + .menus = LIST_HEAD_INIT(symbol_no.menus), .flags = SYMBOL_CONST|SYMBOL_VALID, -}, symbol_empty = { - .name = "", - .curr = { "", no }, - .flags = SYMBOL_VALID, }; -struct symbol *sym_defconfig_list; struct symbol *modules_sym; -tristate modules_val; - -struct expr *sym_env_list; - -static void sym_add_default(struct symbol *sym, const char *def) -{ - struct property *prop = prop_alloc(P_DEFAULT, sym); - - prop->expr = expr_alloc_symbol(sym_lookup(def, SYMBOL_CONST)); -} - -void sym_init(void) -{ - struct symbol *sym; - struct utsname uts; - static bool inited = false; - - if (inited) - return; - inited = true; - - uname(&uts); - - sym = sym_lookup("UNAME_RELEASE", 0); - sym->type = S_STRING; - sym->flags |= SYMBOL_AUTO; - sym_add_default(sym, uts.release); -} +static tristate modules_val; +static int sym_warnings; enum symbol_type sym_get_type(struct symbol *sym) { @@ -88,8 +65,6 @@ const char *sym_type_name(enum symbol_type type) return "string"; case S_UNKNOWN: return "unknown"; - case S_OTHER: - break; } return "???"; } @@ -103,15 +78,6 @@ struct property *sym_get_choice_prop(struct symbol *sym) return NULL; } -struct property *sym_get_env_prop(struct symbol *sym) -{ - struct property *prop; - - for_all_properties(sym, prop, P_ENV) - return prop; - return NULL; -} - static struct property *sym_get_default_prop(struct symbol *sym) { struct property *prop; @@ -124,7 +90,7 @@ static struct property *sym_get_default_prop(struct symbol *sym) return NULL; } -static struct property *sym_get_range_prop(struct symbol *sym) +struct property *sym_get_range_prop(struct symbol *sym) { struct property *prop; @@ -155,9 +121,9 @@ static long long sym_get_range_val(struct symbol *sym, int base) static void sym_validate_range(struct symbol *sym) { struct property *prop; + struct symbol *range_sym; int base; long long val, val2; - char str[64]; switch (sym->type) { case S_INT: @@ -173,17 +139,15 @@ static void sym_validate_range(struct symbol *sym) if (!prop) return; val = strtoll(sym->curr.val, NULL, base); - val2 = sym_get_range_val(prop->expr->left.sym, base); + range_sym = prop->expr->left.sym; + val2 = sym_get_range_val(range_sym, base); if (val >= val2) { - val2 = sym_get_range_val(prop->expr->right.sym, base); + range_sym = prop->expr->right.sym; + val2 = sym_get_range_val(range_sym, base); if (val <= val2) return; } - if (sym->type == S_INT) - sprintf(str, "%lld", val2); - else - sprintf(str, "0x%llx", val2); - sym->curr.val = xstrdup(str); + sym->curr.val = range_sym->curr.val; } static void sym_set_changed(struct symbol *sym) @@ -200,9 +164,8 @@ static void sym_set_changed(struct symbol *sym) static void sym_set_all_changed(void) { struct symbol *sym; - int i; - for_all_symbols(i, sym) + for_all_symbols(sym) sym_set_changed(sym); } @@ -259,7 +222,7 @@ static void sym_calc_visibility(struct symbol *sym) sym_set_changed(sym); } tri = no; - if (sym->implied.expr && sym->dir_dep.tri != no) + if (sym->implied.expr) tri = expr_calc_value(sym->implied.expr); if (tri == mod && sym_get_type(sym) == S_BOOLEAN) tri = yes; @@ -352,6 +315,14 @@ static void sym_warn_unmet_dep(struct symbol *sym) " Selected by [m]:\n"); fputs(str_get(&gs), stderr); + sym_warnings++; +} + +bool sym_dep_errors(void) +{ + if (sym_warnings) + return getenv("KCONFIG_WERROR"); + return false; } void sym_calc_value(struct symbol *sym) @@ -377,15 +348,21 @@ void sym_calc_value(struct symbol *sym) oldval = sym->curr; + newval.tri = no; + switch (sym->type) { case S_INT: + newval.val = "0"; + break; case S_HEX: + newval.val = "0x0"; + break; case S_STRING: - newval = symbol_empty.curr; + newval.val = ""; break; case S_BOOLEAN: case S_TRISTATE: - newval = symbol_no.curr; + newval.val = "n"; break; default: sym->curr.val = sym->name; @@ -432,6 +409,8 @@ void sym_calc_value(struct symbol *sym) if (sym->implied.tri != no) { sym->flags |= SYMBOL_WRITE; newval.tri = EXPR_OR(newval.tri, sym->implied.tri); + newval.tri = EXPR_AND(newval.tri, + sym->dir_dep.tri); } } calc_newval: @@ -439,8 +418,7 @@ void sym_calc_value(struct symbol *sym) sym_warn_unmet_dep(sym); newval.tri = EXPR_OR(newval.tri, sym->rev_dep.tri); } - if (newval.tri == mod && - (sym_get_type(sym) == S_BOOLEAN || sym->implied.tri == yes)) + if (newval.tri == mod && sym_get_type(sym) == S_BOOLEAN) newval.tri = yes; break; case S_STRING: @@ -490,7 +468,7 @@ void sym_calc_value(struct symbol *sym) } } - if (sym->flags & SYMBOL_AUTO) + if (sym->flags & SYMBOL_NO_WRITE) sym->flags &= ~SYMBOL_WRITE; if (sym->flags & SYMBOL_NEED_SET_CHOICE_VALUES) @@ -500,11 +478,10 @@ void sym_calc_value(struct symbol *sym) void sym_clear_all_valid(void) { struct symbol *sym; - int i; - for_all_symbols(i, sym) + for_all_symbols(sym) sym->flags &= ~SYMBOL_VALID; - sym_add_change_count(1); + conf_set_changed(true); sym_calc_value(modules_sym); } @@ -522,8 +499,6 @@ bool sym_tristate_within_range(struct symbol *sym, tristate val) return false; if (sym->visible <= sym->rev_dep.tri) return false; - if (sym->implied.tri == yes && val == mod) - return false; if (sym_is_choice_value(sym) && sym->visible == yes) return val == yes; return val >= sym->rev_dep.tri && val <= sym->visible; @@ -733,13 +708,12 @@ const char *sym_get_string_default(struct symbol *sym) { struct property *prop; struct symbol *ds; - const char *str; + const char *str = ""; tristate val; sym_calc_visibility(sym); sym_calc_value(modules_sym); val = symbol_no.curr.tri; - str = symbol_empty.curr.val; /* If symbol has a default value look it up */ prop = sym_get_default_prop(sym); @@ -789,15 +763,17 @@ const char *sym_get_string_default(struct symbol *sym) case yes: return "y"; } case S_INT: + if (!str[0]) + str = "0"; + break; case S_HEX: - return str; - case S_STRING: - return str; - case S_OTHER: - case S_UNKNOWN: + if (!str[0]) + str = "0x0"; + break; + default: break; } - return ""; + return str; } const char *sym_get_string_value(struct symbol *sym) @@ -824,19 +800,12 @@ const char *sym_get_string_value(struct symbol *sym) return (const char *)sym->curr.val; } -bool sym_is_changable(struct symbol *sym) +bool sym_is_changeable(struct symbol *sym) { return sym->visible > sym->rev_dep.tri; } -static unsigned strhash(const char *s) -{ - /* fnv32 hash */ - unsigned hash = 2166136261U; - for (; *s; s++) - hash = (hash ^ *s) * 0x01000193; - return hash; -} +HASHTABLE_DEFINE(sym_hashtable, SYMBOL_HASHSIZE); struct symbol *sym_lookup(const char *name, int flags) { @@ -852,9 +821,9 @@ struct symbol *sym_lookup(const char *name, int flags) case 'n': return &symbol_no; } } - hash = strhash(name) % SYMBOL_HASHSIZE; + hash = strhash(name); - for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) { + hash_for_each_possible(sym_hashtable, symbol, node, hash) { if (symbol->name && !strcmp(symbol->name, name) && (flags ? symbol->flags & flags @@ -871,10 +840,10 @@ struct symbol *sym_lookup(const char *name, int flags) memset(symbol, 0, sizeof(*symbol)); symbol->name = new_name; symbol->type = S_UNKNOWN; - symbol->flags |= flags; + symbol->flags = flags; + INIT_LIST_HEAD(&symbol->menus); - symbol->next = symbol_hash[hash]; - symbol_hash[hash] = symbol; + hash_add(sym_hashtable, &symbol->node, hash); return symbol; } @@ -894,9 +863,9 @@ struct symbol *sym_find(const char *name) case 'n': return &symbol_no; } } - hash = strhash(name) % SYMBOL_HASHSIZE; + hash = strhash(name); - for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) { + hash_for_each_possible(sym_hashtable, symbol, node, hash) { if (symbol->name && !strcmp(symbol->name, name) && !(symbol->flags & SYMBOL_CONST)) @@ -906,102 +875,6 @@ struct symbol *sym_find(const char *name) return symbol; } -/* - * Expand symbol's names embedded in the string given in argument. Symbols' - * name to be expanded shall be prefixed by a '$'. Unknown symbol expands to - * the empty string. - */ -char *sym_expand_string_value(const char *in) -{ - const char *src; - char *res; - size_t reslen; - - /* - * Note: 'in' might come from a token that's about to be - * freed, so make sure to always allocate a new string - */ - reslen = strlen(in) + 1; - res = xmalloc(reslen); - res[0] = '\0'; - - while ((src = strchr(in, '$'))) { - char *p, name[SYMBOL_MAXLENGTH]; - const char *symval = ""; - struct symbol *sym; - size_t newlen; - - strncat(res, in, src - in); - src++; - - p = name; - while (isalnum(*src) || *src == '_') - *p++ = *src++; - *p = '\0'; - - sym = sym_find(name); - if (sym != NULL) { - sym_calc_value(sym); - symval = sym_get_string_value(sym); - } - - newlen = strlen(res) + strlen(symval) + strlen(src) + 1; - if (newlen > reslen) { - reslen = newlen; - res = xrealloc(res, reslen); - } - - strcat(res, symval); - in = src; - } - strcat(res, in); - - return res; -} - -const char *sym_escape_string_value(const char *in) -{ - const char *p; - size_t reslen; - char *res; - size_t l; - - reslen = strlen(in) + strlen("\"\"") + 1; - - p = in; - for (;;) { - l = strcspn(p, "\"\\"); - p += l; - - if (p[0] == '\0') - break; - - reslen++; - p++; - } - - res = xmalloc(reslen); - res[0] = '\0'; - - strcat(res, "\""); - - p = in; - for (;;) { - l = strcspn(p, "\"\\"); - strncat(res, p, l); - p += l; - - if (p[0] == '\0') - break; - - strcat(res, "\\"); - strncat(res, p++, 1); - } - - strcat(res, "\""); - return res; -} - struct sym_match { struct symbol *sym; off_t so, eo; @@ -1052,7 +925,7 @@ struct symbol **sym_re_search(const char *pattern) if (regcomp(&re, pattern, REG_EXTENDED|REG_ICASE)) return NULL; - for_all_symbols(i, sym) { + for_all_symbols(sym) { if (sym->flags & SYMBOL_CONST || !sym->name) continue; if (regexec(&re, sym->name, 1, match, 0)) @@ -1100,7 +973,7 @@ static struct dep_stack { struct dep_stack *prev, *next; struct symbol *sym; struct property *prop; - struct expr *expr; + struct expr **expr; } *check_top; static void dep_stack_insert(struct dep_stack *stack, struct symbol *sym) @@ -1163,39 +1036,50 @@ static void sym_check_print_recursive(struct symbol *last_sym) } if (stack->sym == last_sym) fprintf(stderr, "%s:%d:error: recursive dependency detected!\n", - prop->file->name, prop->lineno); + prop->filename, prop->lineno); - if (stack->expr) { - fprintf(stderr, "%s:%d:\tsymbol %s %s value contains %s\n", - prop->file->name, prop->lineno, + if (sym_is_choice(sym)) { + fprintf(stderr, "%s:%d:\tchoice %s contains symbol %s\n", + menu->filename, menu->lineno, + sym->name ? sym->name : "", + next_sym->name ? next_sym->name : ""); + } else if (sym_is_choice_value(sym)) { + fprintf(stderr, "%s:%d:\tsymbol %s is part of choice %s\n", + menu->filename, menu->lineno, sym->name ? sym->name : "", - prop_get_type_name(prop->type), next_sym->name ? next_sym->name : ""); - } else if (stack->prop) { + } else if (stack->expr == &sym->dir_dep.expr) { fprintf(stderr, "%s:%d:\tsymbol %s depends on %s\n", - prop->file->name, prop->lineno, + prop->filename, prop->lineno, sym->name ? sym->name : "", next_sym->name ? next_sym->name : ""); - } else if (sym_is_choice(sym)) { - fprintf(stderr, "%s:%d:\tchoice %s contains symbol %s\n", - menu->file->name, menu->lineno, + } else if (stack->expr == &sym->rev_dep.expr) { + fprintf(stderr, "%s:%d:\tsymbol %s is selected by %s\n", + prop->filename, prop->lineno, sym->name ? sym->name : "", next_sym->name ? next_sym->name : ""); - } else if (sym_is_choice_value(sym)) { - fprintf(stderr, "%s:%d:\tsymbol %s is part of choice %s\n", - menu->file->name, menu->lineno, + } else if (stack->expr == &sym->implied.expr) { + fprintf(stderr, "%s:%d:\tsymbol %s is implied by %s\n", + prop->filename, prop->lineno, + sym->name ? sym->name : "", + next_sym->name ? next_sym->name : ""); + } else if (stack->expr) { + fprintf(stderr, "%s:%d:\tsymbol %s %s value contains %s\n", + prop->filename, prop->lineno, sym->name ? sym->name : "", + prop_get_type_name(prop->type), next_sym->name ? next_sym->name : ""); } else { - fprintf(stderr, "%s:%d:\tsymbol %s is selected by %s\n", - prop->file->name, prop->lineno, + fprintf(stderr, "%s:%d:\tsymbol %s %s is visible depending on %s\n", + prop->filename, prop->lineno, sym->name ? sym->name : "", + prop_get_type_name(prop->type), next_sym->name ? next_sym->name : ""); } } fprintf(stderr, - "For a resolution refer to Documentation/kbuild/kconfig-language.txt\n" + "For a resolution refer to Documentation/kbuild/kconfig-language.rst\n" "subsection \"Kconfig recursive dependency limitations\"\n" "\n"); @@ -1246,12 +1130,26 @@ static struct symbol *sym_check_sym_deps(struct symbol *sym) dep_stack_insert(&stack, sym); + stack.expr = &sym->dir_dep.expr; + sym2 = sym_check_expr_deps(sym->dir_dep.expr); + if (sym2) + goto out; + + stack.expr = &sym->rev_dep.expr; sym2 = sym_check_expr_deps(sym->rev_dep.expr); if (sym2) goto out; + stack.expr = &sym->implied.expr; + sym2 = sym_check_expr_deps(sym->implied.expr); + if (sym2) + goto out; + + stack.expr = NULL; + for (prop = sym->prop; prop; prop = prop->next) { - if (prop->type == P_CHOICE || prop->type == P_SELECT) + if (prop->type == P_CHOICE || prop->type == P_SELECT || + prop->type == P_IMPLY) continue; stack.prop = prop; sym2 = sym_check_expr_deps(prop->visible.expr); @@ -1259,7 +1157,7 @@ static struct symbol *sym_check_sym_deps(struct symbol *sym) break; if (prop->type != P_DEFAULT || sym_is_choice(sym)) continue; - stack.expr = prop->expr; + stack.expr = &prop->expr; sym2 = sym_check_expr_deps(prop->expr); if (sym2) break; @@ -1337,34 +1235,9 @@ struct symbol *sym_check_deps(struct symbol *sym) sym->flags &= ~SYMBOL_CHECK; } - if (sym2 && sym2 == sym) - sym2 = NULL; - return sym2; } -struct property *prop_alloc(enum prop_type type, struct symbol *sym) -{ - struct property *prop; - struct property **propp; - - prop = xmalloc(sizeof(*prop)); - memset(prop, 0, sizeof(*prop)); - prop->type = type; - prop->sym = sym; - prop->file = current_file; - prop->lineno = zconf_lineno(); - - /* append property to the prop list of symbol */ - if (sym) { - for (propp = &sym->prop; *propp; propp = &(*propp)->next) - ; - *propp = prop; - } - - return prop; -} - struct symbol *prop_get_symbol(struct property *prop) { if (prop->expr && (prop->expr->type == E_SYMBOL || @@ -1378,8 +1251,6 @@ const char *prop_get_type_name(enum prop_type type) switch (type) { case P_PROMPT: return "prompt"; - case P_ENV: - return "env"; case P_COMMENT: return "comment"; case P_MENU: @@ -1401,32 +1272,3 @@ const char *prop_get_type_name(enum prop_type type) } return "unknown"; } - -static void prop_add_env(const char *env) -{ - struct symbol *sym, *sym2; - struct property *prop; - char *p; - - sym = current_entry->sym; - sym->flags |= SYMBOL_AUTO; - for_all_properties(sym, prop, P_ENV) { - sym2 = prop_get_symbol(prop); - if (strcmp(sym2->name, env)) - menu_warn(current_entry, "redefining environment symbol from %s", - sym2->name); - return; - } - - prop = prop_alloc(P_ENV, sym); - prop->expr = expr_alloc_symbol(sym_lookup(env, SYMBOL_CONST)); - - sym_env_list = expr_alloc_one(E_LIST, sym_env_list); - sym_env_list->right.sym = sym; - - p = getenv(env); - if (p) - sym_add_default(sym, p); - else - menu_warn(current_entry, "environment variable %s undefined", env); -} diff --git a/support/kconfig/util.c b/support/kconfig/util.c index 8665f5bb89..439c131b42 100644 --- a/support/kconfig/util.c +++ b/support/kconfig/util.c @@ -1,93 +1,57 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2002-2005 Roman Zippel * Copyright (C) 2002-2005 Sam Ravnborg - * - * Released under the terms of the GNU GPL v2.0. */ #include #include #include + +#include "hashtable.h" #include "lkc.h" +unsigned int strhash(const char *s) +{ + /* fnv32 hash */ + unsigned int hash = 2166136261U; + + for (; *s; s++) + hash = (hash ^ *s) * 0x01000193; + return hash; +} + +/* hash table of all parsed Kconfig files */ +static HASHTABLE_DEFINE(file_hashtable, 1U << 11); + +struct file { + struct hlist_node node; + char name[]; +}; + /* file already present in list? If not add it */ -struct file *file_lookup(const char *name) +const char *file_lookup(const char *name) { struct file *file; - char *file_name = sym_expand_string_value(name); + size_t len; + int hash = strhash(name); - for (file = file_list; file; file = file->next) { - if (!strcmp(name, file->name)) { - free(file_name); - return file; - } - } + hash_for_each_possible(file_hashtable, file, node, hash) + if (!strcmp(name, file->name)) + return file->name; - file = xmalloc(sizeof(*file)); + len = strlen(name); + file = xmalloc(sizeof(*file) + len + 1); memset(file, 0, sizeof(*file)); - file->name = file_name; - file->next = file_list; - file_list = file; - return file; -} + memcpy(file->name, name, len); + file->name[len] = '\0'; -/* write a dependency file as used by kbuild to track dependencies */ -int file_write_dep(const char *name) -{ - char *str; - char buf[PATH_MAX+20], buf2[PATH_MAX+1], dir[PATH_MAX+1]; - struct symbol *sym, *env_sym; - struct expr *e; - struct file *file; - FILE *out; - - if (!name) - name = ".kconfig.d"; - - strcpy(dir, conf_get_configname()); - str = strrchr(dir, '/'); - if (str) - str[1] = 0; - else - dir[0] = 0; - - sprintf(buf, "%s..config.tmp", dir); - out = fopen(buf, "w"); - if (!out) - return 1; - fprintf(out, "deps_config := \\\n"); - for (file = file_list; file; file = file->next) { - if (file->next) - fprintf(out, "\t%s \\\n", file->name); - else - fprintf(out, "\t%s\n", file->name); - } - fprintf(out, "\n%s: \\\n" - "\t$(deps_config)\n\n", conf_get_autoconfig_name()); - - expr_list_for_each_sym(sym_env_list, e, sym) { - struct property *prop; - const char *value; - - prop = sym_get_env_prop(sym); - env_sym = prop_get_symbol(prop); - if (!env_sym) - continue; - value = getenv(env_sym->name); - if (!value) - value = ""; - fprintf(out, "ifneq \"$(%s)\" \"%s\"\n", env_sym->name, value); - fprintf(out, "%s: FORCE\n", conf_get_autoconfig_name()); - fprintf(out, "endif\n"); - } + hash_add(file_hashtable, &file->node, hash); - fprintf(out, "\n$(deps_config): ;\n"); - fclose(out); - sprintf(buf2, "%s%s", dir, name); - rename(buf, buf2); - return 0; -} + str_printf(&autoconf_cmd, "\t%s \\\n", name); + return file->name; +} /* Allocate initial growable string */ struct gstr str_new(void) @@ -103,8 +67,7 @@ struct gstr str_new(void) /* Free storage for growable string */ void str_free(struct gstr *gs) { - if (gs->s) - free(gs->s); + free(gs->s); gs->s = NULL; gs->len = 0; } @@ -135,7 +98,7 @@ void str_printf(struct gstr *gs, const char *fmt, ...) } /* Retrieve value of growable string */ -const char *str_get(struct gstr *gs) +char *str_get(struct gstr *gs) { return gs->s; } @@ -177,3 +140,14 @@ char *xstrdup(const char *s) fprintf(stderr, "Out of memory.\n"); exit(1); } + +char *xstrndup(const char *s, size_t n) +{ + char *p; + + p = strndup(s, n); + if (p) + return p; + fprintf(stderr, "Out of memory.\n"); + exit(1); +} diff --git a/support/kconfig/zconf.l b/support/kconfig/zconf.l deleted file mode 100644 index 045093d827..0000000000 --- a/support/kconfig/zconf.l +++ /dev/null @@ -1,372 +0,0 @@ -%option nostdinit noyywrap never-interactive full ecs -%option 8bit nodefault yylineno -%option noinput -%x COMMAND HELP STRING PARAM -%{ -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include -#include -#include - -#include "lkc.h" - -#define START_STRSIZE 16 - -static struct { - struct file *file; - int lineno; -} current_pos; - -static char *text; -static int text_size, text_asize; - -struct buffer { - struct buffer *parent; - YY_BUFFER_STATE state; -}; - -struct buffer *current_buf; - -static int last_ts, first_ts; - -static void zconf_endhelp(void); -static void zconf_endfile(void); - -static void new_string(void) -{ - text = xmalloc(START_STRSIZE); - text_asize = START_STRSIZE; - text_size = 0; - *text = 0; -} - -static void append_string(const char *str, int size) -{ - int new_size = text_size + size + 1; - if (new_size > text_asize) { - new_size += START_STRSIZE - 1; - new_size &= -START_STRSIZE; - text = xrealloc(text, new_size); - text_asize = new_size; - } - memcpy(text + text_size, str, size); - text_size += size; - text[text_size] = 0; -} - -static void alloc_string(const char *str, int size) -{ - text = xmalloc(size + 1); - memcpy(text, str, size); - text[size] = 0; -} - -static void warn_ignored_character(char chr) -{ - fprintf(stderr, - "%s:%d:warning: ignoring unsupported character '%c'\n", - zconf_curname(), zconf_lineno(), chr); -} -%} - -n [A-Za-z0-9_-] - -%% - int str = 0; - int ts, i; - -[ \t]*#.*\n | -[ \t]*\n { - return T_EOL; -} -[ \t]*#.* - - -[ \t]+ { - BEGIN(COMMAND); -} - -. { - unput(yytext[0]); - BEGIN(COMMAND); -} - - -{ - {n}+ { - const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); - BEGIN(PARAM); - current_pos.file = current_file; - current_pos.lineno = yylineno; - if (id && id->flags & TF_COMMAND) { - yylval.id = id; - return id->token; - } - alloc_string(yytext, yyleng); - yylval.string = text; - return T_WORD; - } - . warn_ignored_character(*yytext); - \n { - BEGIN(INITIAL); - return T_EOL; - } -} - -{ - "&&" return T_AND; - "||" return T_OR; - "(" return T_OPEN_PAREN; - ")" return T_CLOSE_PAREN; - "!" return T_NOT; - "=" return T_EQUAL; - "!=" return T_UNEQUAL; - "<=" return T_LESS_EQUAL; - ">=" return T_GREATER_EQUAL; - "<" return T_LESS; - ">" return T_GREATER; - \"|\' { - str = yytext[0]; - new_string(); - BEGIN(STRING); - } - \n BEGIN(INITIAL); return T_EOL; - ({n}|[/.])+ { - const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); - if (id && id->flags & TF_PARAM) { - yylval.id = id; - return id->token; - } - alloc_string(yytext, yyleng); - yylval.string = text; - return T_WORD; - } - #.* /* comment */ - \\\n ; - [[:blank:]]+ - . warn_ignored_character(*yytext); - <> { - BEGIN(INITIAL); - } -} - -{ - [^'"\\\n]+/\n { - append_string(yytext, yyleng); - yylval.string = text; - return T_WORD_QUOTE; - } - [^'"\\\n]+ { - append_string(yytext, yyleng); - } - \\.?/\n { - append_string(yytext + 1, yyleng - 1); - yylval.string = text; - return T_WORD_QUOTE; - } - \\.? { - append_string(yytext + 1, yyleng - 1); - } - \'|\" { - if (str == yytext[0]) { - BEGIN(PARAM); - yylval.string = text; - return T_WORD_QUOTE; - } else - append_string(yytext, 1); - } - \n { - fprintf(stderr, - "%s:%d:warning: multi-line strings not supported\n", - zconf_curname(), zconf_lineno()); - BEGIN(INITIAL); - return T_EOL; - } - <> { - BEGIN(INITIAL); - } -} - -{ - [ \t]+ { - ts = 0; - for (i = 0; i < yyleng; i++) { - if (yytext[i] == '\t') - ts = (ts & ~7) + 8; - else - ts++; - } - last_ts = ts; - if (first_ts) { - if (ts < first_ts) { - zconf_endhelp(); - return T_HELPTEXT; - } - ts -= first_ts; - while (ts > 8) { - append_string(" ", 8); - ts -= 8; - } - append_string(" ", ts); - } - } - [ \t]*\n/[^ \t\n] { - zconf_endhelp(); - return T_HELPTEXT; - } - [ \t]*\n { - append_string("\n", 1); - } - [^ \t\n].* { - while (yyleng) { - if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t')) - break; - yyleng--; - } - append_string(yytext, yyleng); - if (!first_ts) - first_ts = last_ts; - } - <> { - zconf_endhelp(); - return T_HELPTEXT; - } -} - -<> { - if (current_file) { - zconf_endfile(); - return T_EOL; - } - fclose(yyin); - yyterminate(); -} - -%% -void zconf_starthelp(void) -{ - new_string(); - last_ts = first_ts = 0; - BEGIN(HELP); -} - -static void zconf_endhelp(void) -{ - yylval.string = text; - BEGIN(INITIAL); -} - - -/* - * Try to open specified file with following names: - * ./name - * $(srctree)/name - * The latter is used when srctree is separate from objtree - * when compiling the kernel. - * Return NULL if file is not found. - */ -FILE *zconf_fopen(const char *name) -{ - char *env, fullname[PATH_MAX+1]; - FILE *f; - - f = fopen(name, "r"); - if (!f && name != NULL && name[0] != '/') { - env = getenv(SRCTREE); - if (env) { - sprintf(fullname, "%s/%s", env, name); - f = fopen(fullname, "r"); - } - } - return f; -} - -void zconf_initscan(const char *name) -{ - yyin = zconf_fopen(name); - if (!yyin) { - fprintf(stderr, "can't find file %s\n", name); - exit(1); - } - - current_buf = xmalloc(sizeof(*current_buf)); - memset(current_buf, 0, sizeof(*current_buf)); - - current_file = file_lookup(name); - yylineno = 1; -} - -void zconf_nextfile(const char *name) -{ - struct file *iter; - struct file *file = file_lookup(name); - struct buffer *buf = xmalloc(sizeof(*buf)); - memset(buf, 0, sizeof(*buf)); - - current_buf->state = YY_CURRENT_BUFFER; - yyin = zconf_fopen(file->name); - if (!yyin) { - fprintf(stderr, "%s:%d: can't open file \"%s\"\n", - zconf_curname(), zconf_lineno(), file->name); - exit(1); - } - yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); - buf->parent = current_buf; - current_buf = buf; - - current_file->lineno = yylineno; - file->parent = current_file; - - for (iter = current_file; iter; iter = iter->parent) { - if (!strcmp(iter->name, file->name)) { - fprintf(stderr, - "Recursive inclusion detected.\n" - "Inclusion path:\n" - " current file : %s\n", file->name); - iter = file; - do { - iter = iter->parent; - fprintf(stderr, " included from: %s:%d\n", - iter->name, iter->lineno - 1); - } while (strcmp(iter->name, file->name)); - exit(1); - } - } - - yylineno = 1; - current_file = file; -} - -static void zconf_endfile(void) -{ - struct buffer *parent; - - current_file = current_file->parent; - if (current_file) - yylineno = current_file->lineno; - - parent = current_buf->parent; - if (parent) { - fclose(yyin); - yy_delete_buffer(YY_CURRENT_BUFFER); - yy_switch_to_buffer(parent->state); - } - free(current_buf); - current_buf = parent; -} - -int zconf_lineno(void) -{ - return current_pos.lineno; -} - -const char *zconf_curname(void) -{ - return current_pos.file ? current_pos.file->name : ""; -} diff --git a/support/kconfig/zconf.lex.c_shipped b/support/kconfig/zconf.lex.c_shipped deleted file mode 100644 index 33913d43c7..0000000000 --- a/support/kconfig/zconf.lex.c_shipped +++ /dev/null @@ -1,2500 +0,0 @@ - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 4 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif - -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#ifndef SIZE_MAX -#define SIZE_MAX (~(size_t)0) -#endif - -#endif /* ! C99 */ - -#endif /* ! FLEXINT_H */ - -/* begin standard C++ headers. */ - -/* TODO: this is always defined, so inline it */ -#define yyconst const - -#if defined(__GNUC__) && __GNUC__ >= 3 -#define yynoreturn __attribute__((__noreturn__)) -#else -#define yynoreturn -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an - * integer in range [0..255] for use as an array index. - */ -#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN (yy_start) = 1 + 2 * -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START (((yy_start) - 1) / 2) -#define YYSTATE YY_START -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart( yyin ) -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else -#define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ -#endif - -/* The state buf must be large enough to hold one state per character in the main buffer. - */ -#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -extern int yyleng; - -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - - /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires - * access to the local variable yy_act. Since yyless() is a macro, it would break - * existing scanners that call yyless() from OUTSIDE yylex. - * One obvious solution it to make yy_act a global. I tried that, and saw - * a 5% performance hit in a non-yylineno scanner, because yy_act is - * normally declared as a register variable-- so it is not worth it. - */ - #define YY_LESS_LINENO(n) \ - do { \ - int yyl;\ - for ( yyl = n; yyl < yyleng; ++yyl )\ - if ( yytext[yyl] == '\n' )\ - --yylineno;\ - }while(0) - #define YY_LINENO_REWIND_TO(dst) \ - do {\ - const char *p;\ - for ( p = yy_cp-1; p >= (dst); --p)\ - if ( *p == '\n' )\ - --yylineno;\ - }while(0) - -/* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = (yy_hold_char); \ - YY_RESTORE_YY_MORE_OFFSET \ - (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) -#define unput(c) yyunput( c, (yytext_ptr) ) - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - int yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -/* Stack of input buffers. */ -static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ -static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - * - * Returns the top of the stack, or NULL. - */ -#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ - ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ - : NULL) -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = NULL; -static int yy_init = 0; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart ( FILE *input_file ); -void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); -void yy_delete_buffer ( YY_BUFFER_STATE b ); -void yy_flush_buffer ( YY_BUFFER_STATE b ); -void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); -void yypop_buffer_state ( void ); - -static void yyensure_buffer_stack ( void ); -static void yy_load_buffer_state ( void ); -static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); -#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) - -YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); -YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); - -void *yyalloc ( yy_size_t ); -void *yyrealloc ( void *, yy_size_t ); -void yyfree ( void * ); - -#define yy_new_buffer yy_create_buffer -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! YY_CURRENT_BUFFER ){ \ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } -#define yy_set_bol(at_bol) \ - { \ - if ( ! YY_CURRENT_BUFFER ){\ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) - -/* Begin user sect3 */ - -#define yywrap() (/*CONSTCOND*/1) -#define YY_SKIP_YYWRAP -typedef flex_uint8_t YY_CHAR; - -FILE *yyin = NULL, *yyout = NULL; - -typedef int yy_state_type; - -extern int yylineno; -int yylineno = 1; - -extern char *yytext; -#ifdef yytext_ptr -#undef yytext_ptr -#endif -#define yytext_ptr yytext - -static const flex_int16_t yy_nxt[][18] = - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0 - }, - - { - 11, 12, 13, 14, 12, 12, 15, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12 - }, - - { - 11, 12, 13, 14, 12, 12, 15, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12 - }, - - { - 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, - 16, 18, 16, 16, 16, 16, 16, 16 - }, - - { - 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, - 16, 18, 16, 16, 16, 16, 16, 16 - - }, - - { - 11, 19, 20, 21, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19 - }, - - { - 11, 19, 20, 21, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19 - }, - - { - 11, 22, 22, 23, 22, 24, 22, 22, 24, 22, - 22, 22, 22, 22, 22, 22, 25, 22 - }, - - { - 11, 22, 22, 23, 22, 24, 22, 22, 24, 22, - 22, 22, 22, 22, 22, 22, 25, 22 - }, - - { - 11, 26, 27, 28, 29, 30, 31, 32, 30, 33, - 34, 35, 35, 36, 37, 38, 39, 40 - - }, - - { - 11, 26, 27, 28, 29, 30, 31, 32, 30, 33, - 34, 35, 35, 36, 37, 38, 39, 40 - }, - - { - -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, - -11, -11, -11, -11, -11, -11, -11, -11 - }, - - { - 11, -12, -12, -12, -12, -12, -12, -12, -12, -12, - -12, -12, -12, -12, -12, -12, -12, -12 - }, - - { - 11, -13, 41, 42, -13, -13, 43, -13, -13, -13, - -13, -13, -13, -13, -13, -13, -13, -13 - }, - - { - 11, -14, -14, -14, -14, -14, -14, -14, -14, -14, - -14, -14, -14, -14, -14, -14, -14, -14 - - }, - - { - 11, 44, 44, 45, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44 - }, - - { - 11, -16, -16, -16, -16, -16, -16, -16, -16, -16, - -16, -16, -16, -16, -16, -16, -16, -16 - }, - - { - 11, -17, -17, -17, -17, -17, -17, -17, -17, -17, - -17, -17, -17, -17, -17, -17, -17, -17 - }, - - { - 11, -18, -18, -18, -18, -18, -18, -18, -18, -18, - -18, 46, -18, -18, -18, -18, -18, -18 - }, - - { - 11, 47, 47, -19, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47 - - }, - - { - 11, -20, 48, 49, -20, -20, -20, -20, -20, -20, - -20, -20, -20, -20, -20, -20, -20, -20 - }, - - { - 11, 50, -21, -21, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50 - }, - - { - 11, 51, 51, 52, 51, -22, 51, 51, -22, 51, - 51, 51, 51, 51, 51, 51, -22, 51 - }, - - { - 11, -23, -23, -23, -23, -23, -23, -23, -23, -23, - -23, -23, -23, -23, -23, -23, -23, -23 - }, - - { - 11, -24, -24, -24, -24, -24, -24, -24, -24, -24, - -24, -24, -24, -24, -24, -24, -24, -24 - - }, - - { - 11, 53, 53, 54, 53, 53, 53, 53, 53, 53, - 53, 53, 53, 53, 53, 53, 53, 53 - }, - - { - 11, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26 - }, - - { - 11, -27, 55, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27 - }, - - { - 11, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28 - }, - - { - 11, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, 56, -29, -29, -29 - - }, - - { - 11, -30, -30, -30, -30, -30, -30, -30, -30, -30, - -30, -30, -30, -30, -30, -30, -30, -30 - }, - - { - 11, 57, 57, -31, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57 - }, - - { - 11, -32, -32, -32, -32, -32, -32, 58, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32 - }, - - { - 11, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33 - }, - - { - 11, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34 - - }, - - { - 11, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, 59, 59, -35, -35, -35, -35, -35 - }, - - { - 11, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, 60, -36, -36, -36 - }, - - { - 11, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37 - }, - - { - 11, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, 61, -38, -38, -38 - }, - - { - 11, -39, -39, 62, -39, -39, -39, -39, -39, -39, - -39, -39, -39, -39, -39, -39, -39, -39 - - }, - - { - 11, -40, -40, -40, -40, -40, -40, -40, -40, -40, - -40, -40, -40, -40, -40, -40, -40, 63 - }, - - { - 11, -41, 41, 42, -41, -41, 43, -41, -41, -41, - -41, -41, -41, -41, -41, -41, -41, -41 - }, - - { - 11, -42, -42, -42, -42, -42, -42, -42, -42, -42, - -42, -42, -42, -42, -42, -42, -42, -42 - }, - - { - 11, 44, 44, 45, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44 - }, - - { - 11, 44, 44, 45, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44 - - }, - - { - 11, -45, -45, -45, -45, -45, -45, -45, -45, -45, - -45, -45, -45, -45, -45, -45, -45, -45 - }, - - { - 11, -46, -46, -46, -46, -46, -46, -46, -46, -46, - -46, 46, -46, -46, -46, -46, -46, -46 - }, - - { - 11, 47, 47, -47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47 - }, - - { - 11, -48, 48, 49, -48, -48, -48, -48, -48, -48, - -48, -48, -48, -48, -48, -48, -48, -48 - }, - - { - 11, 50, -49, -49, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50 - - }, - - { - 11, -50, -50, -50, -50, -50, -50, -50, -50, -50, - -50, -50, -50, -50, -50, -50, -50, -50 - }, - - { - 11, 51, 51, 52, 51, -51, 51, 51, -51, 51, - 51, 51, 51, 51, 51, 51, -51, 51 - }, - - { - 11, -52, -52, -52, -52, -52, -52, -52, -52, -52, - -52, -52, -52, -52, -52, -52, -52, -52 - }, - - { - 11, -53, -53, 54, -53, -53, -53, -53, -53, -53, - -53, -53, -53, -53, -53, -53, -53, -53 - }, - - { - 11, -54, -54, -54, -54, -54, -54, -54, -54, -54, - -54, -54, -54, -54, -54, -54, -54, -54 - - }, - - { - 11, -55, 55, -55, -55, -55, -55, -55, -55, -55, - -55, -55, -55, -55, -55, -55, -55, -55 - }, - - { - 11, -56, -56, -56, -56, -56, -56, -56, -56, -56, - -56, -56, -56, -56, -56, -56, -56, -56 - }, - - { - 11, 57, 57, -57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57 - }, - - { - 11, -58, -58, -58, -58, -58, -58, -58, -58, -58, - -58, -58, -58, -58, -58, -58, -58, -58 - }, - - { - 11, -59, -59, -59, -59, -59, -59, -59, -59, -59, - -59, 59, 59, -59, -59, -59, -59, -59 - - }, - - { - 11, -60, -60, -60, -60, -60, -60, -60, -60, -60, - -60, -60, -60, -60, -60, -60, -60, -60 - }, - - { - 11, -61, -61, -61, -61, -61, -61, -61, -61, -61, - -61, -61, -61, -61, -61, -61, -61, -61 - }, - - { - 11, -62, -62, -62, -62, -62, -62, -62, -62, -62, - -62, -62, -62, -62, -62, -62, -62, -62 - }, - - { - 11, -63, -63, -63, -63, -63, -63, -63, -63, -63, - -63, -63, -63, -63, -63, -63, -63, -63 - }, - - } ; - -static yy_state_type yy_get_previous_state ( void ); -static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); -static int yy_get_next_buffer ( void ); -static void yynoreturn yy_fatal_error ( const char* msg ); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - (yytext_ptr) = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - (yy_hold_char) = *yy_cp; \ - *yy_cp = '\0'; \ - (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 37 -#define YY_END_OF_BUFFER 38 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static const flex_int16_t yy_accept[64] = - { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 38, 5, 4, 2, 3, 7, 8, 6, 36, 33, - 35, 28, 32, 31, 30, 26, 25, 21, 13, 20, - 23, 26, 11, 12, 22, 18, 14, 19, 26, 26, - 4, 2, 3, 3, 1, 6, 36, 33, 35, 34, - 28, 27, 30, 29, 25, 15, 23, 9, 22, 16, - 17, 24, 10 - } ; - -static const YY_CHAR yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 4, 5, 6, 1, 1, 7, 8, 9, - 10, 1, 1, 1, 11, 12, 12, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 1, 1, 13, - 14, 15, 1, 1, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 1, 16, 1, 1, 11, 1, 11, 11, 11, 11, - - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 1, 17, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -/* Table of booleans, true if rule could match eol. */ -static const flex_int32_t yy_rule_can_match_eol[38] = - { 0, -1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, }; - -extern int yy_flex_debug; -int yy_flex_debug = 0; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *yytext; -#define YY_NO_INPUT 1 - -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include -#include -#include - -#include "lkc.h" - -#define START_STRSIZE 16 - -static struct { - struct file *file; - int lineno; -} current_pos; - -static char *text; -static int text_size, text_asize; - -struct buffer { - struct buffer *parent; - YY_BUFFER_STATE state; -}; - -struct buffer *current_buf; - -static int last_ts, first_ts; - -static void zconf_endhelp(void); -static void zconf_endfile(void); - -static void new_string(void) -{ - text = xmalloc(START_STRSIZE); - text_asize = START_STRSIZE; - text_size = 0; - *text = 0; -} - -static void append_string(const char *str, int size) -{ - int new_size = text_size + size + 1; - if (new_size > text_asize) { - new_size += START_STRSIZE - 1; - new_size &= -START_STRSIZE; - text = xrealloc(text, new_size); - text_asize = new_size; - } - memcpy(text + text_size, str, size); - text_size += size; - text[text_size] = 0; -} - -static void alloc_string(const char *str, int size) -{ - text = xmalloc(size + 1); - memcpy(text, str, size); - text[size] = 0; -} - -static void warn_ignored_character(char chr) -{ - fprintf(stderr, - "%s:%d:warning: ignoring unsupported character '%c'\n", - zconf_curname(), zconf_lineno(), chr); -} - -#define INITIAL 0 -#define COMMAND 1 -#define HELP 2 -#define STRING 3 -#define PARAM 4 - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include -#endif - -#ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * -#endif - -static int yy_init_globals ( void ); - -/* Accessor methods to globals. - These are made visible to non-reentrant scanners for convenience. */ - -int yylex_destroy ( void ); - -int yyget_debug ( void ); - -void yyset_debug ( int debug_flag ); - -YY_EXTRA_TYPE yyget_extra ( void ); - -void yyset_extra ( YY_EXTRA_TYPE user_defined ); - -FILE *yyget_in ( void ); - -void yyset_in ( FILE * _in_str ); - -FILE *yyget_out ( void ); - -void yyset_out ( FILE * _out_str ); - - int yyget_leng ( void ); - -char *yyget_text ( void ); - -int yyget_lineno ( void ); - -void yyset_lineno ( int _line_number ); - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap ( void ); -#else -extern int yywrap ( void ); -#endif -#endif - -#ifndef YY_NO_UNPUT - - static void yyunput ( int c, char *buf_ptr ); - -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy ( char *, const char *, int ); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen ( const char * ); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput ( void ); -#else -static int input ( void ); -#endif - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else -#define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ -#endif - -/* Copy whatever the last rule matched to the standard output. */ -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - errno=0; \ - while ( (result = (int) read( fileno(yyin), buf, (yy_size_t) max_size )) < 0 ) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(yyin); \ - }\ -\ - -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -#endif - -/* end tables serialization structures and prototypes */ - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int yylex (void); - -#define YY_DECL int yylex (void) -#endif /* !YY_DECL */ - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK /*LINTED*/break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -/** The main scanner function which does all the work. - */ -YY_DECL -{ - yy_state_type yy_current_state; - char *yy_cp, *yy_bp; - int yy_act; - - if ( !(yy_init) ) - { - (yy_init) = 1; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! (yy_start) ) - (yy_start) = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! YY_CURRENT_BUFFER ) { - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); - } - - yy_load_buffer_state( ); - } - - { - - int str = 0; - int ts, i; - - while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ - { - yy_cp = (yy_c_buf_p); - - /* Support of yytext. */ - *yy_cp = (yy_hold_char); - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = (yy_start); -yy_match: - while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 ) - ++yy_cp; - - yy_current_state = -yy_current_state; - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - - YY_DO_BEFORE_ACTION; - - if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) - { - int yyl; - for ( yyl = 0; yyl < yyleng; ++yyl ) - if ( yytext[yyl] == '\n' ) - - yylineno++; -; - } - -do_action: /* This label is used only to access EOF actions. */ - - switch ( yy_act ) - { /* beginning of action switch */ -case 1: -/* rule 1 can match eol */ -case 2: -/* rule 2 can match eol */ -YY_RULE_SETUP -{ - return T_EOL; -} - YY_BREAK -case 3: -YY_RULE_SETUP - - YY_BREAK -case 4: -YY_RULE_SETUP -{ - BEGIN(COMMAND); -} - YY_BREAK -case 5: -YY_RULE_SETUP -{ - unput(yytext[0]); - BEGIN(COMMAND); -} - YY_BREAK - -case 6: -YY_RULE_SETUP -{ - const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); - BEGIN(PARAM); - current_pos.file = current_file; - current_pos.lineno = yylineno; - if (id && id->flags & TF_COMMAND) { - yylval.id = id; - return id->token; - } - alloc_string(yytext, yyleng); - yylval.string = text; - return T_WORD; - } - YY_BREAK -case 7: -YY_RULE_SETUP -warn_ignored_character(*yytext); - YY_BREAK -case 8: -/* rule 8 can match eol */ -YY_RULE_SETUP -{ - BEGIN(INITIAL); - return T_EOL; - } - YY_BREAK - -case 9: -YY_RULE_SETUP -return T_AND; - YY_BREAK -case 10: -YY_RULE_SETUP -return T_OR; - YY_BREAK -case 11: -YY_RULE_SETUP -return T_OPEN_PAREN; - YY_BREAK -case 12: -YY_RULE_SETUP -return T_CLOSE_PAREN; - YY_BREAK -case 13: -YY_RULE_SETUP -return T_NOT; - YY_BREAK -case 14: -YY_RULE_SETUP -return T_EQUAL; - YY_BREAK -case 15: -YY_RULE_SETUP -return T_UNEQUAL; - YY_BREAK -case 16: -YY_RULE_SETUP -return T_LESS_EQUAL; - YY_BREAK -case 17: -YY_RULE_SETUP -return T_GREATER_EQUAL; - YY_BREAK -case 18: -YY_RULE_SETUP -return T_LESS; - YY_BREAK -case 19: -YY_RULE_SETUP -return T_GREATER; - YY_BREAK -case 20: -YY_RULE_SETUP -{ - str = yytext[0]; - new_string(); - BEGIN(STRING); - } - YY_BREAK -case 21: -/* rule 21 can match eol */ -YY_RULE_SETUP -BEGIN(INITIAL); return T_EOL; - YY_BREAK -case 22: -YY_RULE_SETUP -{ - const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); - if (id && id->flags & TF_PARAM) { - yylval.id = id; - return id->token; - } - alloc_string(yytext, yyleng); - yylval.string = text; - return T_WORD; - } - YY_BREAK -case 23: -YY_RULE_SETUP -/* comment */ - YY_BREAK -case 24: -/* rule 24 can match eol */ -YY_RULE_SETUP -; - YY_BREAK -case 25: -YY_RULE_SETUP - - YY_BREAK -case 26: -YY_RULE_SETUP -warn_ignored_character(*yytext); - YY_BREAK -case YY_STATE_EOF(PARAM): -{ - BEGIN(INITIAL); - } - YY_BREAK - -case 27: -/* rule 27 can match eol */ -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ -YY_LINENO_REWIND_TO(yy_cp - 1); -(yy_c_buf_p) = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -{ - append_string(yytext, yyleng); - yylval.string = text; - return T_WORD_QUOTE; - } - YY_BREAK -case 28: -YY_RULE_SETUP -{ - append_string(yytext, yyleng); - } - YY_BREAK -case 29: -/* rule 29 can match eol */ -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ -YY_LINENO_REWIND_TO(yy_cp - 1); -(yy_c_buf_p) = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -{ - append_string(yytext + 1, yyleng - 1); - yylval.string = text; - return T_WORD_QUOTE; - } - YY_BREAK -case 30: -YY_RULE_SETUP -{ - append_string(yytext + 1, yyleng - 1); - } - YY_BREAK -case 31: -YY_RULE_SETUP -{ - if (str == yytext[0]) { - BEGIN(PARAM); - yylval.string = text; - return T_WORD_QUOTE; - } else - append_string(yytext, 1); - } - YY_BREAK -case 32: -/* rule 32 can match eol */ -YY_RULE_SETUP -{ - fprintf(stderr, - "%s:%d:warning: multi-line strings not supported\n", - zconf_curname(), zconf_lineno()); - BEGIN(INITIAL); - return T_EOL; - } - YY_BREAK -case YY_STATE_EOF(STRING): -{ - BEGIN(INITIAL); - } - YY_BREAK - -case 33: -YY_RULE_SETUP -{ - ts = 0; - for (i = 0; i < yyleng; i++) { - if (yytext[i] == '\t') - ts = (ts & ~7) + 8; - else - ts++; - } - last_ts = ts; - if (first_ts) { - if (ts < first_ts) { - zconf_endhelp(); - return T_HELPTEXT; - } - ts -= first_ts; - while (ts > 8) { - append_string(" ", 8); - ts -= 8; - } - append_string(" ", ts); - } - } - YY_BREAK -case 34: -/* rule 34 can match eol */ -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ -YY_LINENO_REWIND_TO(yy_cp - 1); -(yy_c_buf_p) = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -{ - zconf_endhelp(); - return T_HELPTEXT; - } - YY_BREAK -case 35: -/* rule 35 can match eol */ -YY_RULE_SETUP -{ - append_string("\n", 1); - } - YY_BREAK -case 36: -YY_RULE_SETUP -{ - while (yyleng) { - if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t')) - break; - yyleng--; - } - append_string(yytext, yyleng); - if (!first_ts) - first_ts = last_ts; - } - YY_BREAK -case YY_STATE_EOF(HELP): -{ - zconf_endhelp(); - return T_HELPTEXT; - } - YY_BREAK - -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(COMMAND): -{ - if (current_file) { - zconf_endfile(); - return T_EOL; - } - fclose(yyin); - yyterminate(); -} - YY_BREAK -case 37: -YY_RULE_SETUP -YY_FATAL_ERROR( "flex scanner jammed" ); - YY_BREAK - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = (yy_hold_char); - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++(yy_c_buf_p); - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = (yy_c_buf_p); - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_END_OF_FILE: - { - (yy_did_buffer_switch_on_eof) = 0; - - if ( yywrap( ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = - (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - (yy_c_buf_p) = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ - } /* end of user's declarations */ -} /* end of yylex */ - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ -static int yy_get_next_buffer (void) -{ - char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - char *source = (yytext_ptr); - int number_to_move, i; - int ret_val; - - if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; - - else - { - int num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; - - int yy_c_buf_p_offset = - (int) ((yy_c_buf_p) - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - yyrealloc( (void *) b->yy_ch_buf, - (yy_size_t) (b->yy_buf_size + 2) ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = NULL; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - - number_to_move - 1; - - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - if ( (yy_n_chars) == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { - /* Extend the array by 50%, plus the number we really need. */ - int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( - (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); - if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - /* "- 2" to take care of EOB's */ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); - } - - (yy_n_chars) += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; - - (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; -} - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - - static yy_state_type yy_get_previous_state (void) -{ - yy_state_type yy_current_state; - char *yy_cp; - - yy_current_state = (yy_start); - - for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) - { - yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; - } - - return yy_current_state; -} - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) -{ - int yy_is_jam; - - yy_current_state = yy_nxt[yy_current_state][1]; - yy_is_jam = (yy_current_state <= 0); - - return yy_is_jam ? 0 : yy_current_state; -} - -#ifndef YY_NO_UNPUT - - static void yyunput (int c, char * yy_bp ) -{ - char *yy_cp; - - yy_cp = (yy_c_buf_p); - - /* undo effects of setting up yytext */ - *yy_cp = (yy_hold_char); - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - { /* need to shift things up to make room */ - /* +2 for EOB chars. */ - int number_to_move = (yy_n_chars) + 2; - char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; - char *source = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; - - while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = - (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } - - *--yy_cp = (char) c; - - if ( c == '\n' ){ - --yylineno; - } - - (yytext_ptr) = yy_bp; - (yy_hold_char) = *yy_cp; - (yy_c_buf_p) = yy_cp; -} - -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus - static int yyinput (void) -#else - static int input (void) -#endif - -{ - int c; - - *(yy_c_buf_p) = (yy_hold_char); - - if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - /* This was really a NUL. */ - *(yy_c_buf_p) = '\0'; - - else - { /* need more input */ - int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); - ++(yy_c_buf_p); - - switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - yyrestart( yyin ); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { - if ( yywrap( ) ) - return 0; - - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(); -#else - return input(); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = (yytext_ptr) + offset; - break; - } - } - } - - c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ - *(yy_c_buf_p) = '\0'; /* preserve yytext */ - (yy_hold_char) = *++(yy_c_buf_p); - - if ( c == '\n' ) - - yylineno++; -; - - return c; -} -#endif /* ifndef YY_NO_INPUT */ - -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * - * @note This function does not reset the start condition to @c INITIAL . - */ - void yyrestart (FILE * input_file ) -{ - - if ( ! YY_CURRENT_BUFFER ){ - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); - } - - yy_init_buffer( YY_CURRENT_BUFFER, input_file ); - yy_load_buffer_state( ); -} - -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * - */ - void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) -{ - - /* TODO. We should be able to replace this entire function body - * with - * yypop_buffer_state(); - * yypush_buffer_state(new_buffer); - */ - yyensure_buffer_stack (); - if ( YY_CURRENT_BUFFER == new_buffer ) - return; - - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( ); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - (yy_did_buffer_switch_on_eof) = 1; -} - -static void yy_load_buffer_state (void) -{ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - (yy_hold_char) = *(yy_c_buf_p); -} - -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * - * @return the allocated buffer state. - */ - YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) -{ - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer( b, file ); - - return b; -} - -/** Destroy the buffer. - * @param b a buffer created with yy_create_buffer() - * - */ - void yy_delete_buffer (YY_BUFFER_STATE b ) -{ - - if ( ! b ) - return; - - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yyfree( (void *) b->yy_ch_buf ); - - yyfree( (void *) b ); -} - -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a yyrestart() or at EOF. - */ - static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) - -{ - int oerrno = errno; - - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - - /* If b is the current buffer, then yy_init_buffer was _probably_ - * called from yyrestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } - - b->yy_is_interactive = 0; - - errno = oerrno; -} - -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * - */ - void yy_flush_buffer (YY_BUFFER_STATE b ) -{ - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( ); -} - -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * - */ -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) -{ - if (new_buffer == NULL) - return; - - yyensure_buffer_stack(); - - /* This block is copied from yy_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - (yy_buffer_stack_top)++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; -} - -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * - */ -void yypop_buffer_state (void) -{ - if (!YY_CURRENT_BUFFER) - return; - - yy_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - if ((yy_buffer_stack_top) > 0) - --(yy_buffer_stack_top); - - if (YY_CURRENT_BUFFER) { - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; - } -} - -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -static void yyensure_buffer_stack (void) -{ - yy_size_t num_to_alloc; - - if (!(yy_buffer_stack)) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ - (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - - memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - (yy_buffer_stack_max) = num_to_alloc; - (yy_buffer_stack_top) = 0; - return; - } - - if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - yy_size_t grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = (yy_buffer_stack_max) + grow_size; - (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc - ((yy_buffer_stack), - num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - - /* zero only the new slots.*/ - memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); - (yy_buffer_stack_max) = num_to_alloc; - } -} - -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) -{ - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return NULL; - - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); - - b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = NULL; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - yy_switch_to_buffer( b ); - - return b; -} - -/** Setup the input buffer state to scan a string. The next call to yylex() will - * scan from a @e copy of @a str. - * @param yystr a NUL-terminated string to scan - * - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * yy_scan_bytes() instead. - */ -YY_BUFFER_STATE yy_scan_string (const char * yystr ) -{ - - return yy_scan_bytes( yystr, (int) strlen(yystr) ); -} - -/** Setup the input buffer state to scan the given bytes. The next call to yylex() will - * scan from a @e copy of @a bytes. - * @param yybytes the byte buffer to scan - * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) -{ - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = (yy_size_t) (_yybytes_len + 2); - buf = (char *) yyalloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < _yybytes_len; ++i ) - buf[i] = yybytes[i]; - - buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer( buf, n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; -} - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -static void yynoreturn yy_fatal_error (const char* msg ) -{ - fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - yytext[yyleng] = (yy_hold_char); \ - (yy_c_buf_p) = yytext + yyless_macro_arg; \ - (yy_hold_char) = *(yy_c_buf_p); \ - *(yy_c_buf_p) = '\0'; \ - yyleng = yyless_macro_arg; \ - } \ - while ( 0 ) - -/* Accessor methods (get/set functions) to struct members. */ - -/** Get the current line number. - * - */ -int yyget_lineno (void) -{ - - return yylineno; -} - -/** Get the input stream. - * - */ -FILE *yyget_in (void) -{ - return yyin; -} - -/** Get the output stream. - * - */ -FILE *yyget_out (void) -{ - return yyout; -} - -/** Get the length of the current token. - * - */ -int yyget_leng (void) -{ - return yyleng; -} - -/** Get the current token. - * - */ - -char *yyget_text (void) -{ - return yytext; -} - -/** Set the current line number. - * @param _line_number line number - * - */ -void yyset_lineno (int _line_number ) -{ - - yylineno = _line_number; -} - -/** Set the input stream. This does not discard the current - * input buffer. - * @param _in_str A readable stream. - * - * @see yy_switch_to_buffer - */ -void yyset_in (FILE * _in_str ) -{ - yyin = _in_str ; -} - -void yyset_out (FILE * _out_str ) -{ - yyout = _out_str ; -} - -int yyget_debug (void) -{ - return yy_flex_debug; -} - -void yyset_debug (int _bdebug ) -{ - yy_flex_debug = _bdebug ; -} - -static int yy_init_globals (void) -{ - /* Initialization is the same as for the non-reentrant scanner. - * This function is called from yylex_destroy(), so don't allocate here. - */ - - /* We do not touch yylineno unless the option is enabled. */ - yylineno = 1; - - (yy_buffer_stack) = NULL; - (yy_buffer_stack_top) = 0; - (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = NULL; - (yy_init) = 0; - (yy_start) = 0; - -/* Defined in main.c */ -#ifdef YY_STDINIT - yyin = stdin; - yyout = stdout; -#else - yyin = NULL; - yyout = NULL; -#endif - - /* For future reference: Set errno on error, since we are called by - * yylex_init() - */ - return 0; -} - -/* yylex_destroy is for both reentrant and non-reentrant scanners. */ -int yylex_destroy (void) -{ - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - yy_delete_buffer( YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - yypop_buffer_state(); - } - - /* Destroy the stack itself. */ - yyfree((yy_buffer_stack) ); - (yy_buffer_stack) = NULL; - - /* Reset the globals. This is important in a non-reentrant scanner so the next time - * yylex() is called, initialization will occur. */ - yy_init_globals( ); - - return 0; -} - -/* - * Internal utility routines. - */ - -#ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, const char * s2, int n ) -{ - - int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; -} -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (const char * s ) -{ - int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; -} -#endif - -void *yyalloc (yy_size_t size ) -{ - return malloc(size); -} - -void *yyrealloc (void * ptr, yy_size_t size ) -{ - - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return realloc(ptr, size); -} - -void yyfree (void * ptr ) -{ - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ -} - -#define YYTABLES_NAME "yytables" - -void zconf_starthelp(void) -{ - new_string(); - last_ts = first_ts = 0; - BEGIN(HELP); -} - -static void zconf_endhelp(void) -{ - yylval.string = text; - BEGIN(INITIAL); -} - -/* - * Try to open specified file with following names: - * ./name - * $(srctree)/name - * The latter is used when srctree is separate from objtree - * when compiling the kernel. - * Return NULL if file is not found. - */ -FILE *zconf_fopen(const char *name) -{ - char *env, fullname[PATH_MAX+1]; - FILE *f; - - f = fopen(name, "r"); - if (!f && name != NULL && name[0] != '/') { - env = getenv(SRCTREE); - if (env) { - sprintf(fullname, "%s/%s", env, name); - f = fopen(fullname, "r"); - } - } - return f; -} - -void zconf_initscan(const char *name) -{ - yyin = zconf_fopen(name); - if (!yyin) { - fprintf(stderr, "can't find file %s\n", name); - exit(1); - } - - current_buf = xmalloc(sizeof(*current_buf)); - memset(current_buf, 0, sizeof(*current_buf)); - - current_file = file_lookup(name); - yylineno = 1; -} - -void zconf_nextfile(const char *name) -{ - struct file *iter; - struct file *file = file_lookup(name); - struct buffer *buf = xmalloc(sizeof(*buf)); - memset(buf, 0, sizeof(*buf)); - - current_buf->state = YY_CURRENT_BUFFER; - yyin = zconf_fopen(file->name); - if (!yyin) { - fprintf(stderr, "%s:%d: can't open file \"%s\"\n", - zconf_curname(), zconf_lineno(), file->name); - exit(1); - } - yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); - buf->parent = current_buf; - current_buf = buf; - - current_file->lineno = yylineno; - file->parent = current_file; - - for (iter = current_file; iter; iter = iter->parent) { - if (!strcmp(iter->name, file->name)) { - fprintf(stderr, - "Recursive inclusion detected.\n" - "Inclusion path:\n" - " current file : %s\n", file->name); - iter = file; - do { - iter = iter->parent; - fprintf(stderr, " included from: %s:%d\n", - iter->name, iter->lineno - 1); - } while (strcmp(iter->name, file->name)); - exit(1); - } - } - - yylineno = 1; - current_file = file; -} - -static void zconf_endfile(void) -{ - struct buffer *parent; - - current_file = current_file->parent; - if (current_file) - yylineno = current_file->lineno; - - parent = current_buf->parent; - if (parent) { - fclose(yyin); - yy_delete_buffer(YY_CURRENT_BUFFER); - yy_switch_to_buffer(parent->state); - } - free(current_buf); - current_buf = parent; -} - -int zconf_lineno(void) -{ - return current_pos.lineno; -} - -const char *zconf_curname(void) -{ - return current_pos.file ? current_pos.file->name : ""; -} - diff --git a/support/kconfig/zconf.tab.c_shipped b/support/kconfig/zconf.tab.c_shipped deleted file mode 100644 index 4eca5b3135..0000000000 --- a/support/kconfig/zconf.tab.c_shipped +++ /dev/null @@ -1,2488 +0,0 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ - -/* Bison implementation for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -/* As a special exception, you may create a larger work that contains - part or all of the Bison parser skeleton and distribute that work - under terms of your choice, so long as that work isn't itself a - parser generator using the skeleton or a modified version thereof - as a parser skeleton. Alternatively, if you modify or redistribute - the parser skeleton itself, you may (at your option) remove this - special exception, which will cause the skeleton and the resulting - Bison output files to be licensed under the GNU General Public - License without this special exception. - - This special exception was added by the Free Software Foundation in - version 2.2 of Bison. */ - -/* C LALR(1) parser skeleton written by Richard Stallman, by - simplifying the original so-called "semantic" parser. */ - -/* All symbols defined below should begin with yy or YY, to avoid - infringing on user name space. This should be done even for local - variables, as they might otherwise be expanded by user macros. - There are some unavoidable exceptions within include files to - define necessary library symbols; they are noted "INFRINGES ON - USER NAME SPACE" below. */ - -/* Identify Bison output. */ -#define YYBISON 1 - -/* Bison version. */ -#define YYBISON_VERSION "3.0.4" - -/* Skeleton name. */ -#define YYSKELETON_NAME "yacc.c" - -/* Pure parsers. */ -#define YYPURE 0 - -/* Push parsers. */ -#define YYPUSH 0 - -/* Pull parsers. */ -#define YYPULL 1 - - - - -/* Copy the first part of user declarations. */ - - -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include -#include -#include -#include - -#include "lkc.h" - -#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) - -#define PRINTD 0x0001 -#define DEBUG_PARSE 0x0002 - -int cdebug = PRINTD; - -int yylex(void); -static void yyerror(const char *err); -static void zconfprint(const char *err, ...); -static void zconf_error(const char *err, ...); -static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken); - -struct symbol *symbol_hash[SYMBOL_HASHSIZE]; - -static struct menu *current_menu, *current_entry; - - - - -# ifndef YY_NULLPTR -# if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif -# endif - -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 0 -#endif - - -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 1 -#endif -#if YYDEBUG -extern int yydebug; -#endif - -/* Token type. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - T_MAINMENU = 258, - T_MENU = 259, - T_ENDMENU = 260, - T_SOURCE = 261, - T_CHOICE = 262, - T_ENDCHOICE = 263, - T_COMMENT = 264, - T_CONFIG = 265, - T_MENUCONFIG = 266, - T_HELP = 267, - T_HELPTEXT = 268, - T_IF = 269, - T_ENDIF = 270, - T_DEPENDS = 271, - T_OPTIONAL = 272, - T_PROMPT = 273, - T_TYPE = 274, - T_DEFAULT = 275, - T_SELECT = 276, - T_IMPLY = 277, - T_RANGE = 278, - T_VISIBLE = 279, - T_OPTION = 280, - T_ON = 281, - T_WORD = 282, - T_WORD_QUOTE = 283, - T_UNEQUAL = 284, - T_LESS = 285, - T_LESS_EQUAL = 286, - T_GREATER = 287, - T_GREATER_EQUAL = 288, - T_CLOSE_PAREN = 289, - T_OPEN_PAREN = 290, - T_EOL = 291, - T_OR = 292, - T_AND = 293, - T_EQUAL = 294, - T_NOT = 295 - }; -#endif - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - -union YYSTYPE -{ - - - char *string; - struct file *file; - struct symbol *symbol; - struct expr *expr; - struct menu *menu; - const struct kconf_id *id; - - -}; - -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 -#endif - - -extern YYSTYPE yylval; - -int yyparse (void); - - - -/* Copy the second part of user declarations. */ - - -/* Include kconf_id.c here so it can see the token constants. */ -#include "kconf_id.c" - - - -#ifdef short -# undef short -#endif - -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; -#else -typedef unsigned char yytype_uint8; -#endif - -#ifdef YYTYPE_INT8 -typedef YYTYPE_INT8 yytype_int8; -#else -typedef signed char yytype_int8; -#endif - -#ifdef YYTYPE_UINT16 -typedef YYTYPE_UINT16 yytype_uint16; -#else -typedef unsigned short int yytype_uint16; -#endif - -#ifdef YYTYPE_INT16 -typedef YYTYPE_INT16 yytype_int16; -#else -typedef short int yytype_int16; -#endif - -#ifndef YYSIZE_T -# ifdef __SIZE_TYPE__ -# define YYSIZE_T __SIZE_TYPE__ -# elif defined size_t -# define YYSIZE_T size_t -# elif ! defined YYSIZE_T -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# else -# define YYSIZE_T unsigned int -# endif -#endif - -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) - -#ifndef YY_ -# if defined YYENABLE_NLS && YYENABLE_NLS -# if ENABLE_NLS -# include /* INFRINGES ON USER NAME SPACE */ -# define YY_(Msgid) dgettext ("bison-runtime", Msgid) -# endif -# endif -# ifndef YY_ -# define YY_(Msgid) Msgid -# endif -#endif - -#ifndef YY_ATTRIBUTE -# if (defined __GNUC__ \ - && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ - || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C -# define YY_ATTRIBUTE(Spec) __attribute__(Spec) -# else -# define YY_ATTRIBUTE(Spec) /* empty */ -# endif -#endif - -#ifndef YY_ATTRIBUTE_PURE -# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) -#endif - -#ifndef YY_ATTRIBUTE_UNUSED -# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) -#endif - -#if !defined _Noreturn \ - && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) -# if defined _MSC_VER && 1200 <= _MSC_VER -# define _Noreturn __declspec (noreturn) -# else -# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) -# endif -#endif - -/* Suppress unused-variable warnings by "using" E. */ -#if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) -#else -# define YYUSE(E) /* empty */ -#endif - -#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ -/* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ - _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ - _Pragma ("GCC diagnostic pop") -#else -# define YY_INITIAL_VALUE(Value) Value -#endif -#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_END -#endif -#ifndef YY_INITIAL_VALUE -# define YY_INITIAL_VALUE(Value) /* Nothing. */ -#endif - - -#if ! defined yyoverflow || YYERROR_VERBOSE - -/* The parser invokes alloca or malloc; define the necessary symbols. */ - -# ifdef YYSTACK_USE_ALLOCA -# if YYSTACK_USE_ALLOCA -# ifdef __GNUC__ -# define YYSTACK_ALLOC __builtin_alloca -# elif defined __BUILTIN_VA_ARG_INCR -# include /* INFRINGES ON USER NAME SPACE */ -# elif defined _AIX -# define YYSTACK_ALLOC __alloca -# elif defined _MSC_VER -# include /* INFRINGES ON USER NAME SPACE */ -# define alloca _alloca -# else -# define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS -# include /* INFRINGES ON USER NAME SPACE */ - /* Use EXIT_SUCCESS as a witness for stdlib.h. */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -# endif -# endif -# endif -# endif -# endif - -# ifdef YYSTACK_ALLOC - /* Pacify GCC's 'empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) -# ifndef YYSTACK_ALLOC_MAXIMUM - /* The OS might guarantee only one guard page at the bottom of the stack, - and a page size can be as small as 4096 bytes. So we cannot safely - invoke alloca (N) if N exceeds 4096. Use a slightly smaller number - to allow for a few compiler-allocated temporary stack slots. */ -# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ -# endif -# else -# define YYSTACK_ALLOC YYMALLOC -# define YYSTACK_FREE YYFREE -# ifndef YYSTACK_ALLOC_MAXIMUM -# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM -# endif -# if (defined __cplusplus && ! defined EXIT_SUCCESS \ - && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) -# include /* INFRINGES ON USER NAME SPACE */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -# endif -# endif -# ifndef YYMALLOC -# define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS -void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# ifndef YYFREE -# define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS -void free (void *); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# endif -#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ - - -#if (! defined yyoverflow \ - && (! defined __cplusplus \ - || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) - -/* A type that is properly aligned for any stack member. */ -union yyalloc -{ - yytype_int16 yyss_alloc; - YYSTYPE yyvs_alloc; -}; - -/* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) - -/* The size of an array large to enough to hold all stacks, each with - N elements. */ -# define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ - + YYSTACK_GAP_MAXIMUM) - -# define YYCOPY_NEEDED 1 - -/* Relocate STACK from its old location to the new one. The - local variables YYSIZE and YYSTACKSIZE give the old and new number of - elements in the stack, and YYPTR gives the new location of the - stack. Advance YYPTR to a properly aligned location for the next - stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (0) - -#endif - -#if defined YYCOPY_NEEDED && YYCOPY_NEEDED -/* Copy COUNT objects from SRC to DST. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) -# else -# define YYCOPY(Dst, Src, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (Dst)[yyi] = (Src)[yyi]; \ - } \ - while (0) -# endif -# endif -#endif /* !YYCOPY_NEEDED */ - -/* YYFINAL -- State number of the termination state. */ -#define YYFINAL 11 -/* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 325 - -/* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 41 -/* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 52 -/* YYNRULES -- Number of rules. */ -#define YYNRULES 126 -/* YYNSTATES -- Number of states. */ -#define YYNSTATES 206 - -/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned - by yylex, with out-of-bounds checking. */ -#define YYUNDEFTOK 2 -#define YYMAXUTOK 295 - -#define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) - -/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, without out-of-bounds checking. */ -static const yytype_uint8 yytranslate[] = -{ - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40 -}; - -#if YYDEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_uint16 yyrline[] = -{ - 0, 110, 110, 110, 112, 112, 116, 124, 134, 136, - 137, 138, 139, 140, 141, 145, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 153, 154, 155, 156, 157, - 158, 162, 163, 169, 176, 181, 188, 197, 199, 200, - 201, 202, 203, 204, 207, 215, 221, 231, 237, 243, - 249, 252, 254, 267, 268, 273, 283, 288, 296, 299, - 301, 302, 303, 304, 305, 308, 314, 325, 331, 341, - 343, 348, 356, 364, 367, 369, 370, 371, 376, 383, - 388, 396, 399, 401, 402, 403, 406, 415, 422, 427, - 433, 451, 453, 454, 455, 458, 466, 468, 469, 472, - 479, 481, 486, 487, 490, 491, 492, 496, 497, 500, - 501, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 518, 520, 521, 524, 525 -}; -#endif - -#if YYDEBUG || YYERROR_VERBOSE || 0 -/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -static const char *const yytname[] = -{ - "$end", "error", "$undefined", "T_MAINMENU", "T_MENU", "T_ENDMENU", - "T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG", - "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS", - "T_OPTIONAL", "T_PROMPT", "T_TYPE", "T_DEFAULT", "T_SELECT", "T_IMPLY", - "T_RANGE", "T_VISIBLE", "T_OPTION", "T_ON", "T_WORD", "T_WORD_QUOTE", - "T_UNEQUAL", "T_LESS", "T_LESS_EQUAL", "T_GREATER", "T_GREATER_EQUAL", - "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_EOL", "T_OR", "T_AND", "T_EQUAL", - "T_NOT", "$accept", "input", "start", "mainmenu_stmt", - "no_mainmenu_stmt", "stmt_list", "option_name", "common_stmt", - "option_error", "config_entry_start", "config_stmt", - "menuconfig_entry_start", "menuconfig_stmt", "config_option_list", - "config_option", "symbol_option", "symbol_option_list", - "symbol_option_arg", "choice", "choice_entry", "choice_end", - "choice_stmt", "choice_option_list", "choice_option", "choice_block", - "if_entry", "if_end", "if_stmt", "if_block", "menu", "menu_entry", - "menu_end", "menu_stmt", "menu_block", "source_stmt", "comment", - "comment_stmt", "help_start", "help", "depends_list", "depends", - "visibility_list", "visible", "prompt_stmt_opt", "prompt", "end", "nl", - "if_expr", "expr", "nonconst_symbol", "symbol", "word_opt", YY_NULLPTR -}; -#endif - -# ifdef YYPRINT -/* YYTOKNUM[NUM] -- (External) token number corresponding to the - (internal) symbol number NUM (which must be that of a token). */ -static const yytype_uint16 yytoknum[] = -{ - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295 -}; -# endif - -#define YYPACT_NINF -92 - -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-92))) - -#define YYTABLE_NINF -89 - -#define yytable_value_is_error(Yytable_value) \ - 0 - - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -static const yytype_int16 yypact[] = -{ - 20, 33, -92, 16, -92, -92, -92, 21, -92, -92, - 29, -92, 152, 186, -92, -92, 40, 67, 33, 71, - 33, 42, 80, 33, 78, 78, 31, 82, -92, -92, - -92, -92, -92, -92, -92, -92, -92, 120, -92, 131, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, 109, -92, - 118, -92, 128, -92, 129, -92, 141, 142, -92, 31, - 31, 74, -92, 69, -92, 144, 145, 28, 119, 248, - 286, 77, 38, 77, 219, -92, -92, -92, -92, -92, - -92, -7, -92, 31, 31, 40, 52, 52, 52, 52, - 52, 52, -92, -92, 146, 147, 158, 33, 33, 31, - 78, 78, 52, -92, 184, -92, -92, -92, -92, 176, - -92, -92, 162, 33, 33, 78, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, 197, - -92, 272, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, 174, -92, -92, -92, -92, -92, -92, -92, - -92, -92, 31, 197, 178, 197, 59, 197, 197, 52, - 27, 179, -92, -92, 197, 180, 197, 31, -92, 111, - 181, -92, -92, 182, 185, 195, 197, 193, -92, -92, - 208, -92, 209, 113, -92, -92, -92, -92, -92, 211, - 33, -92, -92, -92, -92, -92 -}; - - /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ -static const yytype_uint8 yydefact[] = -{ - 7, 0, 107, 0, 3, 8, 8, 7, 102, 103, - 0, 1, 0, 0, 108, 2, 6, 0, 0, 0, - 0, 125, 0, 0, 0, 0, 0, 0, 16, 21, - 17, 18, 23, 19, 20, 22, 24, 0, 25, 0, - 9, 37, 28, 37, 29, 59, 69, 10, 74, 26, - 96, 82, 11, 30, 91, 27, 12, 15, 0, 104, - 0, 126, 0, 105, 0, 122, 0, 0, 124, 0, - 0, 0, 123, 111, 106, 0, 0, 0, 0, 0, - 0, 0, 91, 0, 0, 78, 86, 55, 87, 33, - 35, 0, 119, 0, 0, 71, 0, 0, 0, 0, - 0, 0, 13, 14, 0, 0, 0, 0, 100, 0, - 0, 0, 0, 51, 0, 43, 42, 38, 39, 0, - 41, 40, 0, 0, 100, 0, 63, 64, 60, 62, - 61, 70, 58, 57, 75, 77, 73, 76, 72, 109, - 98, 0, 97, 83, 85, 81, 84, 80, 93, 94, - 92, 118, 120, 121, 117, 112, 113, 114, 115, 116, - 32, 89, 0, 109, 0, 109, 109, 109, 109, 0, - 0, 0, 90, 67, 109, 0, 109, 0, 99, 0, - 0, 44, 101, 0, 0, 0, 109, 53, 50, 31, - 0, 66, 0, 110, 95, 45, 46, 47, 48, 0, - 0, 52, 65, 68, 49, 54 -}; - - /* YYPGOTO[NTERM-NUM]. */ -static const yytype_int16 yypgoto[] = -{ - -92, -92, 241, -92, -92, 244, -92, -13, -66, -92, - -92, -92, -92, 218, -92, -92, -92, -92, -92, -92, - -92, -69, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, 12, -92, -92, -92, -92, -92, 172, 170, - -64, -92, -92, 148, -1, 34, 1, 139, -68, -21, - -91, -92 -}; - - /* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int16 yydefgoto[] = -{ - -1, 3, 4, 5, 6, 12, 39, 40, 116, 41, - 42, 43, 44, 77, 117, 118, 170, 201, 45, 46, - 132, 47, 79, 128, 80, 48, 136, 49, 81, 50, - 51, 145, 52, 83, 53, 54, 55, 119, 120, 84, - 121, 82, 142, 164, 165, 56, 7, 178, 71, 72, - 73, 62 -}; - - /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_int16 yytable[] = -{ - 10, 91, 92, 66, 67, 154, 155, 156, 157, 158, - 159, 16, 135, 127, 144, 130, 11, 58, 149, 60, - 150, 169, 64, 1, 1, 152, 153, 151, -34, 104, - 93, 94, -34, -34, -34, -34, -34, -34, -34, -34, - 105, 166, -34, -34, 106, -34, 107, 108, 109, 110, - 111, 112, -34, 113, 187, 114, 2, 14, 65, 68, - 8, 9, 139, 188, 115, 2, 69, 131, 134, 61, - 143, 70, 95, 177, 140, 149, 14, 150, 186, 65, - 68, 18, 19, 20, 21, 22, 23, 24, 25, 167, - 168, 26, 27, 137, 179, 146, 93, 94, 96, 97, - 98, 99, 100, 57, 176, 65, 163, 59, 101, 193, - 2, 93, 94, 38, 133, 138, 63, 147, 74, -36, - 104, 75, 174, -36, -36, -36, -36, -36, -36, -36, - -36, 105, 76, -36, -36, 106, -36, 107, 108, 109, - 110, 111, 112, -36, 113, 85, 114, 194, 93, 94, - 93, 94, -4, 17, 86, 115, 18, 19, 20, 21, - 22, 23, 24, 25, 87, 88, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 89, 90, 37, - 102, 103, 160, 161, 162, 171, -5, 17, 38, 172, - 18, 19, 20, 21, 22, 23, 24, 25, 173, 205, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 177, 94, 37, 181, 189, 191, 195, 196, -88, - 104, 197, 38, -88, -88, -88, -88, -88, -88, -88, - -88, 198, 200, -88, -88, 106, -88, -88, -88, -88, - -88, -88, -88, -88, 202, 203, 114, 204, 15, 104, - 13, 129, 141, -56, -56, 148, -56, -56, -56, -56, - 105, 78, -56, -56, 106, 122, 123, 124, 125, 0, - 0, 0, 175, 104, 0, 114, -79, -79, -79, -79, - -79, -79, -79, -79, 126, 0, -79, -79, 106, 0, - 0, 19, 20, 0, 22, 23, 24, 25, 0, 114, - 26, 27, 180, 0, 182, 183, 184, 185, 148, 0, - 0, 0, 0, 190, 0, 192, 0, 0, 0, 0, - 0, 0, 38, 0, 0, 199 -}; - -static const yytype_int16 yycheck[] = -{ - 1, 69, 70, 24, 25, 96, 97, 98, 99, 100, - 101, 10, 81, 79, 83, 79, 0, 18, 84, 20, - 84, 112, 23, 3, 3, 93, 94, 34, 0, 1, - 37, 38, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 109, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 27, 27, 36, 36, 27, 28, - 27, 28, 24, 36, 36, 36, 35, 80, 81, 27, - 83, 40, 71, 14, 36, 141, 36, 141, 169, 27, - 28, 4, 5, 6, 7, 8, 9, 10, 11, 110, - 111, 14, 15, 81, 162, 83, 37, 38, 29, 30, - 31, 32, 33, 36, 125, 27, 107, 36, 39, 177, - 36, 37, 38, 36, 80, 81, 36, 83, 36, 0, - 1, 1, 123, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 1, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 36, 27, 36, 37, 38, - 37, 38, 0, 1, 36, 36, 4, 5, 6, 7, - 8, 9, 10, 11, 36, 36, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 36, 36, 27, - 36, 36, 36, 36, 26, 1, 0, 1, 36, 13, - 4, 5, 6, 7, 8, 9, 10, 11, 36, 200, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 14, 38, 27, 36, 36, 36, 36, 36, 0, - 1, 36, 36, 4, 5, 6, 7, 8, 9, 10, - 11, 36, 39, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 36, 36, 27, 36, 7, 1, - 6, 79, 82, 5, 6, 36, 8, 9, 10, 11, - 12, 43, 14, 15, 16, 17, 18, 19, 20, -1, - -1, -1, 124, 1, -1, 27, 4, 5, 6, 7, - 8, 9, 10, 11, 36, -1, 14, 15, 16, -1, - -1, 5, 6, -1, 8, 9, 10, 11, -1, 27, - 14, 15, 163, -1, 165, 166, 167, 168, 36, -1, - -1, -1, -1, 174, -1, 176, -1, -1, -1, -1, - -1, -1, 36, -1, -1, 186 -}; - - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const yytype_uint8 yystos[] = -{ - 0, 3, 36, 42, 43, 44, 45, 87, 27, 28, - 85, 0, 46, 46, 36, 43, 87, 1, 4, 5, - 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 27, 36, 47, - 48, 50, 51, 52, 53, 59, 60, 62, 66, 68, - 70, 71, 73, 75, 76, 77, 86, 36, 85, 36, - 85, 27, 92, 36, 85, 27, 90, 90, 28, 35, - 40, 89, 90, 91, 36, 1, 1, 54, 54, 63, - 65, 69, 82, 74, 80, 36, 36, 36, 36, 36, - 36, 89, 89, 37, 38, 87, 29, 30, 31, 32, - 33, 39, 36, 36, 1, 12, 16, 18, 19, 20, - 21, 22, 23, 25, 27, 36, 49, 55, 56, 78, - 79, 81, 17, 18, 19, 20, 36, 49, 64, 79, - 81, 48, 61, 86, 48, 62, 67, 73, 86, 24, - 36, 80, 83, 48, 62, 72, 73, 86, 36, 49, - 81, 34, 89, 89, 91, 91, 91, 91, 91, 91, - 36, 36, 26, 85, 84, 85, 89, 90, 90, 91, - 57, 1, 13, 36, 85, 84, 90, 14, 88, 89, - 88, 36, 88, 88, 88, 88, 91, 27, 36, 36, - 88, 36, 88, 89, 36, 36, 36, 36, 36, 88, - 39, 58, 36, 36, 36, 85 -}; - - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint8 yyr1[] = -{ - 0, 41, 42, 42, 43, 43, 44, 45, 46, 46, - 46, 46, 46, 46, 46, 46, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 48, 48, 48, 48, 48, - 48, 49, 49, 50, 51, 52, 53, 54, 54, 54, - 54, 54, 54, 54, 55, 55, 55, 55, 55, 55, - 56, 57, 57, 58, 58, 59, 60, 61, 62, 63, - 63, 63, 63, 63, 63, 64, 64, 64, 64, 65, - 65, 66, 67, 68, 69, 69, 69, 69, 70, 71, - 72, 73, 74, 74, 74, 74, 75, 76, 77, 78, - 79, 80, 80, 80, 80, 81, 82, 82, 82, 83, - 84, 84, 85, 85, 86, 86, 86, 87, 87, 88, - 88, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 90, 91, 91, 92, 92 -}; - - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = -{ - 0, 2, 2, 1, 2, 2, 3, 0, 0, 2, - 2, 2, 2, 4, 4, 3, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 2, 3, 2, 3, 2, 0, 2, 2, - 2, 2, 2, 2, 3, 4, 4, 4, 4, 5, - 3, 0, 3, 0, 2, 3, 2, 1, 3, 0, - 2, 2, 2, 2, 2, 4, 3, 2, 4, 0, - 2, 3, 1, 3, 0, 2, 2, 2, 3, 3, - 1, 3, 0, 2, 2, 2, 3, 3, 2, 2, - 2, 0, 2, 2, 2, 4, 0, 2, 2, 2, - 0, 2, 1, 1, 2, 2, 2, 1, 2, 0, - 2, 1, 3, 3, 3, 3, 3, 3, 3, 2, - 3, 3, 1, 1, 1, 0, 1 -}; - - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab - - -#define YYRECOVERING() (!!yyerrstatus) - -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (yylen); \ - yystate = *yyssp; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (0) - -/* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 - - - -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) - -/* This macro is provided for backward compatibility. */ -#ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -#endif - - -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) - - -/*----------------------------------------. -| Print this symbol's value on YYOUTPUT. | -`----------------------------------------*/ - -static void -yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -{ - FILE *yyo = yyoutput; - YYUSE (yyo); - if (!yyvaluep) - return; -# ifdef YYPRINT - if (yytype < YYNTOKENS) - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# endif - YYUSE (yytype); -} - - -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ - -static void -yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -{ - YYFPRINTF (yyoutput, "%s %s (", - yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); - - yy_symbol_value_print (yyoutput, yytype, yyvaluep); - YYFPRINTF (yyoutput, ")"); -} - -/*------------------------------------------------------------------. -| yy_stack_print -- Print the state stack from its BOTTOM up to its | -| TOP (included). | -`------------------------------------------------------------------*/ - -static void -yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) -{ - YYFPRINTF (stderr, "Stack now"); - for (; yybottom <= yytop; yybottom++) - { - int yybot = *yybottom; - YYFPRINTF (stderr, " %d", yybot); - } - YYFPRINTF (stderr, "\n"); -} - -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (0) - - -/*------------------------------------------------. -| Report that the YYRULE is going to be reduced. | -`------------------------------------------------*/ - -static void -yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) -{ - unsigned long int yylno = yyrline[yyrule]; - int yynrhs = yyr2[yyrule]; - int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); - /* The symbols being reduced. */ - for (yyi = 0; yyi < yynrhs; yyi++) - { - YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, - yystos[yyssp[yyi + 1 - yynrhs]], - &(yyvsp[(yyi + 1) - (yynrhs)]) - ); - YYFPRINTF (stderr, "\n"); - } -} - -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyssp, yyvsp, Rule); \ -} while (0) - -/* Nonzero means print parse trace. It is left uninitialized so that - multiple parsers can coexist. */ -int yydebug; -#else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) -# define YY_STACK_PRINT(Bottom, Top) -# define YY_REDUCE_PRINT(Rule) -#endif /* !YYDEBUG */ - - -/* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH -# define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). - - Do not make this value too large; the results are undefined if - YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) - evaluated with infinite-precision integer arithmetic. */ - -#ifndef YYMAXDEPTH -# define YYMAXDEPTH 10000 -#endif - - -#if YYERROR_VERBOSE - -# ifndef yystrlen -# if defined __GLIBC__ && defined _STRING_H -# define yystrlen strlen -# else -/* Return the length of YYSTR. */ -static YYSIZE_T -yystrlen (const char *yystr) -{ - YYSIZE_T yylen; - for (yylen = 0; yystr[yylen]; yylen++) - continue; - return yylen; -} -# endif -# endif - -# ifndef yystpcpy -# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -static char * -yystpcpy (char *yydest, const char *yysrc) -{ - char *yyd = yydest; - const char *yys = yysrc; - - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif - -# ifndef yytnamerr -/* Copy to YYRES the contents of YYSTR after stripping away unnecessary - quotes and backslashes, so that it's suitable for yyerror. The - heuristic is that double-quoting is unnecessary unless the string - contains an apostrophe, a comma, or backslash (other than - backslash-backslash). YYSTR is taken from yytname. If YYRES is - null, do not copy; instead, return the length of what the result - would have been. */ -static YYSIZE_T -yytnamerr (char *yyres, const char *yystr) -{ - if (*yystr == '"') - { - YYSIZE_T yyn = 0; - char const *yyp = yystr; - - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } - do_not_strip_quotes: ; - } - - if (! yyres) - return yystrlen (yystr); - - return yystpcpy (yyres, yystr) - yyres; -} -# endif - -/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message - about the unexpected token YYTOKEN for the state stack whose top is - YYSSP. - - Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is - not large enough to hold the message. In that case, also set - *YYMSG_ALLOC to the required number of bytes. Return 2 if the - required number of bytes is too large to store. */ -static int -yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, - yytype_int16 *yyssp, int yytoken) -{ - YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - YYSIZE_T yysize = yysize0; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - /* Internationalized format string. */ - const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat. */ - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Number of reported tokens (one for the "unexpected", one per - "expected"). */ - int yycount = 0; - - /* There are many possibilities here to consider: - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yychar) is if - this state is a consistent state with a default action. Thus, - detecting the absence of a lookahead is sufficient to determine - that there is no unexpected or expected token to report. In that - case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is a - consistent state with a default action. There might have been a - previous inconsistent state, consistent state with a non-default - action, or user semantic action that manipulated yychar. - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state merging - (from LALR or IELR) and default reductions corrupt the expected - token list. However, the list is correct for canonical LR with - one exception: it will still contain any token that will not be - accepted due to an error action in a later state. - */ - if (yytoken != YYEMPTY) - { - int yyn = yypact[*yyssp]; - yyarg[yycount++] = yytname[yytoken]; - if (!yypact_value_is_default (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yyx; - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR - && !yytable_value_is_error (yytable[yyx + yyn])) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - break; - } - yyarg[yycount++] = yytname[yyx]; - { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (! (yysize <= yysize1 - && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; - } - } - } - } - - switch (yycount) - { -# define YYCASE_(N, S) \ - case N: \ - yyformat = S; \ - break - YYCASE_(0, YY_("syntax error")); - YYCASE_(1, YY_("syntax error, unexpected %s")); - YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -# undef YYCASE_ - } - - { - YYSIZE_T yysize1 = yysize + yystrlen (yyformat); - if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; - } - - if (*yymsg_alloc < yysize) - { - *yymsg_alloc = 2 * yysize; - if (! (yysize <= *yymsg_alloc - && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) - *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; - return 1; - } - - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - { - char *yyp = *yymsg; - int yyi = 0; - while ((*yyp = *yyformat) != '\0') - if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyformat += 2; - } - else - { - yyp++; - yyformat++; - } - } - return 0; -} -#endif /* YYERROR_VERBOSE */ - -/*-----------------------------------------------. -| Release the memory associated to this symbol. | -`-----------------------------------------------*/ - -static void -yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) -{ - YYUSE (yyvaluep); - if (!yymsg) - yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - switch (yytype) - { - case 60: /* choice_entry */ - - { - fprintf(stderr, "%s:%d: missing end statement for this entry\n", - ((*yyvaluep).menu)->file->name, ((*yyvaluep).menu)->lineno); - if (current_menu == ((*yyvaluep).menu)) - menu_end_menu(); -} - - break; - - case 66: /* if_entry */ - - { - fprintf(stderr, "%s:%d: missing end statement for this entry\n", - ((*yyvaluep).menu)->file->name, ((*yyvaluep).menu)->lineno); - if (current_menu == ((*yyvaluep).menu)) - menu_end_menu(); -} - - break; - - case 71: /* menu_entry */ - - { - fprintf(stderr, "%s:%d: missing end statement for this entry\n", - ((*yyvaluep).menu)->file->name, ((*yyvaluep).menu)->lineno); - if (current_menu == ((*yyvaluep).menu)) - menu_end_menu(); -} - - break; - - - default: - break; - } - YY_IGNORE_MAYBE_UNINITIALIZED_END -} - - - - -/* The lookahead symbol. */ -int yychar; - -/* The semantic value of the lookahead symbol. */ -YYSTYPE yylval; -/* Number of syntax errors so far. */ -int yynerrs; - - -/*----------. -| yyparse. | -`----------*/ - -int -yyparse (void) -{ - int yystate; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - - Refer to the stacks through separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss; - yytype_int16 *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; - - YYSIZE_T yystacksize; - - int yyn; - int yyresult; - /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; - -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -#endif - -#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) - - /* The number of symbols on the RHS of the reduced rule. - Keep to zero when no symbol should be popped. */ - int yylen = 0; - - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - yystacksize = YYINITDEPTH; - - YYDPRINTF ((stderr, "Starting parse\n")); - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - goto yysetstate; - -/*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | -`------------------------------------------------------------*/ - yynewstate: - /* In all cases, when you get here, the value and location stacks - have just been pushed. So pushing a state here evens the stacks. */ - yyssp++; - - yysetstate: - *yyssp = yystate; - - if (yyss + yystacksize - 1 <= yyssp) - { - /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = yyssp - yyss + 1; - -#ifdef yyoverflow - { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yystacksize); - - yyss = yyss1; - yyvs = yyvs1; - } -#else /* no yyoverflow */ -# ifndef YYSTACK_RELOCATE - goto yyexhaustedlab; -# else - /* Extend the stack our own way. */ - if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; - yystacksize *= 2; - if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; - - { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); - } -# endif -#endif /* no yyoverflow */ - - yyssp = yyss + yysize - 1; - yyvsp = yyvs + yysize - 1; - - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); - - if (yyss + yystacksize - 1 <= yyssp) - YYABORT; - } - - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - - if (yystate == YYFINAL) - YYACCEPT; - - goto yybackup; - -/*-----------. -| yybackup. | -`-----------*/ -yybackup: - - /* Do appropriate processing given the current state. Read a - lookahead token if we need one and don't already have one. */ - - /* First try to decide what to do without reference to lookahead token. */ - yyn = yypact[yystate]; - if (yypact_value_is_default (yyn)) - goto yydefault; - - /* Not known => get a lookahead token if don't already have one. */ - - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ - if (yychar == YYEMPTY) - { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = yylex (); - } - - if (yychar <= YYEOF) - { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yytoken = YYTRANSLATE (yychar); - YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); - } - - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - yyn += yytoken; - if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) - goto yydefault; - yyn = yytable[yyn]; - if (yyn <= 0) - { - if (yytable_value_is_error (yyn)) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus) - yyerrstatus--; - - /* Shift the lookahead token. */ - YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the shifted token. */ - yychar = YYEMPTY; - - yystate = yyn; - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END - - goto yynewstate; - - -/*-----------------------------------------------------------. -| yydefault -- do the default action for the current state. | -`-----------------------------------------------------------*/ -yydefault: - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; - - -/*-----------------------------. -| yyreduce -- Do a reduction. | -`-----------------------------*/ -yyreduce: - /* yyn is the number of a rule to reduce with. */ - yylen = yyr2[yyn]; - - /* If YYLEN is nonzero, implement the default value of the action: - '$$ = $1'. - - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. Assigning to YYVAL - unconditionally makes the parser a bit smaller, and it avoids a - GCC warning that YYVAL may be used uninitialized. */ - yyval = yyvsp[1-yylen]; - - - YY_REDUCE_PRINT (yyn); - switch (yyn) - { - case 6: - - { - menu_add_prompt(P_MENU, (yyvsp[-1].string), NULL); -} - - break; - - case 7: - - { - /* - * Hack: Keep the main menu title on the heap so we can safely free it - * later regardless of whether it comes from the 'prompt' in - * mainmenu_stmt or here - */ - menu_add_prompt(P_MENU, xstrdup("Buildroot Configuration"), NULL); -} - - break; - - case 12: - - { zconf_error("unexpected end statement"); } - - break; - - case 13: - - { zconf_error("unknown statement \"%s\"", (yyvsp[-2].string)); } - - break; - - case 14: - - { - zconf_error("unexpected option \"%s\"", (yyvsp[-2].id)->name); -} - - break; - - case 15: - - { zconf_error("invalid statement"); } - - break; - - case 31: - - { zconf_error("unknown option \"%s\"", (yyvsp[-2].string)); } - - break; - - case 32: - - { zconf_error("invalid option"); } - - break; - - case 33: - - { - (yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL; - menu_add_entry((yyvsp[-1].symbol)); - printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), (yyvsp[-1].symbol)->name); -} - - break; - - case 34: - - { - printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 35: - - { - (yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL; - menu_add_entry((yyvsp[-1].symbol)); - printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), (yyvsp[-1].symbol)->name); -} - - break; - - case 36: - - { - if (current_entry->prompt) - current_entry->prompt->type = P_MENU; - else - zconfprint("warning: menuconfig statement without prompt"); - printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 44: - - { - menu_set_type((yyvsp[-2].id)->stype); - printd(DEBUG_PARSE, "%s:%d:type(%u)\n", - zconf_curname(), zconf_lineno(), - (yyvsp[-2].id)->stype); -} - - break; - - case 45: - - { - menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 46: - - { - menu_add_expr(P_DEFAULT, (yyvsp[-2].expr), (yyvsp[-1].expr)); - if ((yyvsp[-3].id)->stype != S_UNKNOWN) - menu_set_type((yyvsp[-3].id)->stype); - printd(DEBUG_PARSE, "%s:%d:default(%u)\n", - zconf_curname(), zconf_lineno(), - (yyvsp[-3].id)->stype); -} - - break; - - case 47: - - { - menu_add_symbol(P_SELECT, (yyvsp[-2].symbol), (yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 48: - - { - menu_add_symbol(P_IMPLY, (yyvsp[-2].symbol), (yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:imply\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 49: - - { - menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[-3].symbol), (yyvsp[-2].symbol)), (yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 52: - - { - const struct kconf_id *id = kconf_id_lookup((yyvsp[-1].string), strlen((yyvsp[-1].string))); - if (id && id->flags & TF_OPTION) { - menu_add_option(id->token, (yyvsp[0].string)); - free((yyvsp[0].string)); - } - else - zconfprint("warning: ignoring unknown option %s", (yyvsp[-1].string)); - free((yyvsp[-1].string)); -} - - break; - - case 53: - - { (yyval.string) = NULL; } - - break; - - case 54: - - { (yyval.string) = (yyvsp[0].string); } - - break; - - case 55: - - { - struct symbol *sym = sym_lookup((yyvsp[-1].string), SYMBOL_CHOICE); - sym->flags |= SYMBOL_AUTO; - menu_add_entry(sym); - menu_add_expr(P_CHOICE, NULL, NULL); - free((yyvsp[-1].string)); - printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 56: - - { - (yyval.menu) = menu_add_menu(); -} - - break; - - case 57: - - { - if (zconf_endtoken((yyvsp[0].id), T_CHOICE, T_ENDCHOICE)) { - menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno()); - } -} - - break; - - case 65: - - { - menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 66: - - { - if ((yyvsp[-2].id)->stype == S_BOOLEAN || (yyvsp[-2].id)->stype == S_TRISTATE) { - menu_set_type((yyvsp[-2].id)->stype); - printd(DEBUG_PARSE, "%s:%d:type(%u)\n", - zconf_curname(), zconf_lineno(), - (yyvsp[-2].id)->stype); - } else - YYERROR; -} - - break; - - case 67: - - { - current_entry->sym->flags |= SYMBOL_OPTIONAL; - printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 68: - - { - if ((yyvsp[-3].id)->stype == S_UNKNOWN) { - menu_add_symbol(P_DEFAULT, (yyvsp[-2].symbol), (yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:default\n", - zconf_curname(), zconf_lineno()); - } else - YYERROR; -} - - break; - - case 71: - - { - printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); - menu_add_entry(NULL); - menu_add_dep((yyvsp[-1].expr)); - (yyval.menu) = menu_add_menu(); -} - - break; - - case 72: - - { - if (zconf_endtoken((yyvsp[0].id), T_IF, T_ENDIF)) { - menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno()); - } -} - - break; - - case 78: - - { - menu_add_entry(NULL); - menu_add_prompt(P_MENU, (yyvsp[-1].string), NULL); - printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 79: - - { - (yyval.menu) = menu_add_menu(); -} - - break; - - case 80: - - { - if (zconf_endtoken((yyvsp[0].id), T_MENU, T_ENDMENU)) { - menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno()); - } -} - - break; - - case 86: - - { - printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), (yyvsp[-1].string)); - zconf_nextfile((yyvsp[-1].string)); - free((yyvsp[-1].string)); -} - - break; - - case 87: - - { - menu_add_entry(NULL); - menu_add_prompt(P_COMMENT, (yyvsp[-1].string), NULL); - printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 89: - - { - printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno()); - zconf_starthelp(); -} - - break; - - case 90: - - { - if (current_entry->help) { - free(current_entry->help); - zconfprint("warning: '%s' defined with more than one help text -- only the last one will be used", - current_entry->sym->name ?: ""); - } - - /* Is the help text empty or all whitespace? */ - if ((yyvsp[0].string)[strspn((yyvsp[0].string), " \f\n\r\t\v")] == '\0') - zconfprint("warning: '%s' defined with blank help text", - current_entry->sym->name ?: ""); - - current_entry->help = (yyvsp[0].string); -} - - break; - - case 95: - - { - menu_add_dep((yyvsp[-1].expr)); - printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno()); -} - - break; - - case 99: - - { - menu_add_visibility((yyvsp[0].expr)); -} - - break; - - case 101: - - { - menu_add_prompt(P_PROMPT, (yyvsp[-1].string), (yyvsp[0].expr)); -} - - break; - - case 104: - - { (yyval.id) = (yyvsp[-1].id); } - - break; - - case 105: - - { (yyval.id) = (yyvsp[-1].id); } - - break; - - case 106: - - { (yyval.id) = (yyvsp[-1].id); } - - break; - - case 109: - - { (yyval.expr) = NULL; } - - break; - - case 110: - - { (yyval.expr) = (yyvsp[0].expr); } - - break; - - case 111: - - { (yyval.expr) = expr_alloc_symbol((yyvsp[0].symbol)); } - - break; - - case 112: - - { (yyval.expr) = expr_alloc_comp(E_LTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } - - break; - - case 113: - - { (yyval.expr) = expr_alloc_comp(E_LEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } - - break; - - case 114: - - { (yyval.expr) = expr_alloc_comp(E_GTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } - - break; - - case 115: - - { (yyval.expr) = expr_alloc_comp(E_GEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } - - break; - - case 116: - - { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } - - break; - - case 117: - - { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); } - - break; - - case 118: - - { (yyval.expr) = (yyvsp[-1].expr); } - - break; - - case 119: - - { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[0].expr)); } - - break; - - case 120: - - { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[-2].expr), (yyvsp[0].expr)); } - - break; - - case 121: - - { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); } - - break; - - case 122: - - { (yyval.symbol) = sym_lookup((yyvsp[0].string), 0); free((yyvsp[0].string)); } - - break; - - case 124: - - { (yyval.symbol) = sym_lookup((yyvsp[0].string), SYMBOL_CONST); free((yyvsp[0].string)); } - - break; - - case 125: - - { (yyval.string) = NULL; } - - break; - - - - default: break; - } - /* User semantic actions sometimes alter yychar, and that requires - that yytoken be updated with the new translation. We take the - approach of translating immediately before every use of yytoken. - One alternative is translating here after every semantic action, - but that translation would be missed if the semantic action invokes - YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or - if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an - incorrect destructor might then be invoked immediately. In the - case of YYERROR or YYBACKUP, subsequent parser actions might lead - to an incorrect destructor call or verbose syntax error message - before the lookahead is translated. */ - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); - - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - - *++yyvsp = yyval; - - /* Now 'shift' the result of the reduction. Determine what state - that goes to, based on the state we popped back to and the rule - number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; - if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTOKENS]; - - goto yynewstate; - - -/*--------------------------------------. -| yyerrlab -- here on detecting error. | -`--------------------------------------*/ -yyerrlab: - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); - - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus) - { - ++yynerrs; -#if ! YYERROR_VERBOSE - yyerror (YY_("syntax error")); -#else -# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ - yyssp, yytoken) - { - char const *yymsgp = YY_("syntax error"); - int yysyntax_error_status; - yysyntax_error_status = YYSYNTAX_ERROR; - if (yysyntax_error_status == 0) - yymsgp = yymsg; - else if (yysyntax_error_status == 1) - { - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); - if (!yymsg) - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - yysyntax_error_status = 2; - } - else - { - yysyntax_error_status = YYSYNTAX_ERROR; - yymsgp = yymsg; - } - } - yyerror (yymsgp); - if (yysyntax_error_status == 2) - goto yyexhaustedlab; - } -# undef YYSYNTAX_ERROR -#endif - } - - - - if (yyerrstatus == 3) - { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ - - if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } - else - { - yydestruct ("Error: discarding", - yytoken, &yylval); - yychar = YYEMPTY; - } - } - - /* Else will try to reuse lookahead token after shifting the error - token. */ - goto yyerrlab1; - - -/*---------------------------------------------------. -| yyerrorlab -- error raised explicitly by YYERROR. | -`---------------------------------------------------*/ -yyerrorlab: - - /* Pacify compilers like GCC when the user code never invokes - YYERROR and the label yyerrorlab therefore never appears in user - code. */ - if (/*CONSTCOND*/ 0) - goto yyerrorlab; - - /* Do not reclaim the symbols of the rule whose action triggered - this YYERROR. */ - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - yystate = *yyssp; - goto yyerrlab1; - - -/*-------------------------------------------------------------. -| yyerrlab1 -- common code for both syntax error and YYERROR. | -`-------------------------------------------------------------*/ -yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ - - for (;;) - { - yyn = yypact[yystate]; - if (!yypact_value_is_default (yyn)) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } - - /* Pop the current state because it cannot handle the error token. */ - if (yyssp == yyss) - YYABORT; - - - yydestruct ("Error: popping", - yystos[yystate], yyvsp); - YYPOPSTACK (1); - yystate = *yyssp; - YY_STACK_PRINT (yyss, yyssp); - } - - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END - - - /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); - - yystate = yyn; - goto yynewstate; - - -/*-------------------------------------. -| yyacceptlab -- YYACCEPT comes here. | -`-------------------------------------*/ -yyacceptlab: - yyresult = 0; - goto yyreturn; - -/*-----------------------------------. -| yyabortlab -- YYABORT comes here. | -`-----------------------------------*/ -yyabortlab: - yyresult = 1; - goto yyreturn; - -#if !defined yyoverflow || YYERROR_VERBOSE -/*-------------------------------------------------. -| yyexhaustedlab -- memory exhaustion comes here. | -`-------------------------------------------------*/ -yyexhaustedlab: - yyerror (YY_("memory exhausted")); - yyresult = 2; - /* Fall through. */ -#endif - -yyreturn: - if (yychar != YYEMPTY) - { - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = YYTRANSLATE (yychar); - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval); - } - /* Do not reclaim the symbols of the rule whose action triggered - this YYABORT or YYACCEPT. */ - YYPOPSTACK (yylen); - YY_STACK_PRINT (yyss, yyssp); - while (yyssp != yyss) - { - yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp); - YYPOPSTACK (1); - } -#ifndef yyoverflow - if (yyss != yyssa) - YYSTACK_FREE (yyss); -#endif -#if YYERROR_VERBOSE - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); -#endif - return yyresult; -} - - - -void conf_parse(const char *name) -{ - const char *tmp; - struct symbol *sym; - int i; - - zconf_initscan(name); - - sym_init(); - _menu_init(); - - if (getenv("ZCONF_DEBUG")) - yydebug = 1; - yyparse(); - if (yynerrs) - exit(1); - if (!modules_sym) - modules_sym = sym_find( "n" ); - - tmp = rootmenu.prompt->text; - rootmenu.prompt->text = _(rootmenu.prompt->text); - rootmenu.prompt->text = sym_expand_string_value(rootmenu.prompt->text); - free((char*)tmp); - - menu_finalize(&rootmenu); - for_all_symbols(i, sym) { - if (sym_check_deps(sym)) - yynerrs++; - } - if (yynerrs) - exit(1); - sym_set_change_count(1); -} - -static const char *zconf_tokenname(int token) -{ - switch (token) { - case T_MENU: return "menu"; - case T_ENDMENU: return "endmenu"; - case T_CHOICE: return "choice"; - case T_ENDCHOICE: return "endchoice"; - case T_IF: return "if"; - case T_ENDIF: return "endif"; - case T_DEPENDS: return "depends"; - case T_VISIBLE: return "visible"; - } - return ""; -} - -static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken) -{ - if (id->token != endtoken) { - zconf_error("unexpected '%s' within %s block", - id->name, zconf_tokenname(starttoken)); - yynerrs++; - return false; - } - if (current_menu->file != current_file) { - zconf_error("'%s' in different file than '%s'", - id->name, zconf_tokenname(starttoken)); - fprintf(stderr, "%s:%d: location of the '%s'\n", - current_menu->file->name, current_menu->lineno, - zconf_tokenname(starttoken)); - yynerrs++; - return false; - } - return true; -} - -static void zconfprint(const char *err, ...) -{ - va_list ap; - - fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); - va_start(ap, err); - vfprintf(stderr, err, ap); - va_end(ap); - fprintf(stderr, "\n"); -} - -static void zconf_error(const char *err, ...) -{ - va_list ap; - - yynerrs++; - fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); - va_start(ap, err); - vfprintf(stderr, err, ap); - va_end(ap); - fprintf(stderr, "\n"); -} - -static void yyerror(const char *err) -{ - fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err); -} - -static void print_quoted_string(FILE *out, const char *str) -{ - const char *p; - int len; - - putc('"', out); - while ((p = strchr(str, '"'))) { - len = p - str; - if (len) - fprintf(out, "%.*s", len, str); - fputs("\\\"", out); - str = p + 1; - } - fputs(str, out); - putc('"', out); -} - -static void print_symbol(FILE *out, struct menu *menu) -{ - struct symbol *sym = menu->sym; - struct property *prop; - - if (sym_is_choice(sym)) - fprintf(out, "\nchoice\n"); - else - fprintf(out, "\nconfig %s\n", sym->name); - switch (sym->type) { - case S_BOOLEAN: - fputs(" bool\n", out); - break; - case S_TRISTATE: - fputs(" tristate\n", out); - break; - case S_STRING: - fputs(" string\n", out); - break; - case S_INT: - fputs(" integer\n", out); - break; - case S_HEX: - fputs(" hex\n", out); - break; - default: - fputs(" ???\n", out); - break; - } - for (prop = sym->prop; prop; prop = prop->next) { - if (prop->menu != menu) - continue; - switch (prop->type) { - case P_PROMPT: - fputs(" prompt ", out); - print_quoted_string(out, prop->text); - if (!expr_is_yes(prop->visible.expr)) { - fputs(" if ", out); - expr_fprint(prop->visible.expr, out); - } - fputc('\n', out); - break; - case P_DEFAULT: - fputs( " default ", out); - expr_fprint(prop->expr, out); - if (!expr_is_yes(prop->visible.expr)) { - fputs(" if ", out); - expr_fprint(prop->visible.expr, out); - } - fputc('\n', out); - break; - case P_CHOICE: - fputs(" #choice value\n", out); - break; - case P_SELECT: - fputs( " select ", out); - expr_fprint(prop->expr, out); - fputc('\n', out); - break; - case P_IMPLY: - fputs( " imply ", out); - expr_fprint(prop->expr, out); - fputc('\n', out); - break; - case P_RANGE: - fputs( " range ", out); - expr_fprint(prop->expr, out); - fputc('\n', out); - break; - case P_MENU: - fputs( " menu ", out); - print_quoted_string(out, prop->text); - fputc('\n', out); - break; - default: - fprintf(out, " unknown prop %d!\n", prop->type); - break; - } - } - if (menu->help) { - int len = strlen(menu->help); - while (menu->help[--len] == '\n') - menu->help[len] = 0; - fprintf(out, " help\n%s\n", menu->help); - } -} - -void zconfdump(FILE *out) -{ - struct property *prop; - struct symbol *sym; - struct menu *menu; - - menu = rootmenu.list; - while (menu) { - if ((sym = menu->sym)) - print_symbol(out, menu); - else if ((prop = menu->prompt)) { - switch (prop->type) { - case P_COMMENT: - fputs("\ncomment ", out); - print_quoted_string(out, prop->text); - fputs("\n", out); - break; - case P_MENU: - fputs("\nmenu ", out); - print_quoted_string(out, prop->text); - fputs("\n", out); - break; - default: - ; - } - if (!expr_is_yes(prop->visible.expr)) { - fputs(" depends ", out); - expr_fprint(prop->visible.expr, out); - fputc('\n', out); - } - } - - if (menu->list) - menu = menu->list; - else if (menu->next) - menu = menu->next; - else while ((menu = menu->parent)) { - if (menu->prompt && menu->prompt->type == P_MENU) - fputs("\nendmenu\n", out); - if (menu->next) { - menu = menu->next; - break; - } - } - } -} - -#include "zconf.lex.c" -#include "util.c" -#include "confdata.c" -#include "expr.c" -#include "symbol.c" -#include "menu.c" -- 2.45.0 From mf at go-sys.de Mon May 13 14:26:12 2024 From: mf at go-sys.de (Michael Fischer) Date: Mon, 13 May 2024 16:26:12 +0200 Subject: [Buildroot] [PATCH] package/gnuplot: bump version to 6.0.0 Message-ID: <20240513142612.21594-1-mf@go-sys.de> 0001-configure-add-without-demo-option: adapt patch to 6.0.0 version Signed-off-by: Michael Fischer --- ...01-configure-add-without-demo-option.patch | 42 +++++++------------ package/gnuplot/gnuplot.hash | 8 ++-- package/gnuplot/gnuplot.mk | 2 +- 3 files changed, 21 insertions(+), 31 deletions(-) diff --git a/package/gnuplot/0001-configure-add-without-demo-option.patch b/package/gnuplot/0001-configure-add-without-demo-option.patch index a557e279bc..4eb9833fe7 100644 --- a/package/gnuplot/0001-configure-add-without-demo-option.patch +++ b/package/gnuplot/0001-configure-add-without-demo-option.patch @@ -8,32 +8,19 @@ Signed-off-by: Thomas Petazzoni Signed-off-by: Vicente Olivert Riera [Michael: adapt patch to 5.4.0 version] Signed-off-by: Michael Fischer +[Michael: adapt patch to 6.0.0 version] +Signed-off-by: Michael Fischer -diff -Naur a/configure.ac b/configure.ac ---- a/configure.ac 2020-07-12 02:29:47.000000000 +0200 -+++ b/configure.ac 2020-08-06 14:21:17.918756893 +0200 -@@ -713,6 +713,17 @@ - [ Define if you want to read .gnuplot from current directory (SECURITY RISK!).]) - fi +--- a/configure.ac 2023-12-19 00:28:58.000000000 +0100 ++++ b/configure.ac 2024-05-13 15:41:18.313920528 +0200 +@@ -715,6 +715,32 @@ + + dnl Process rest of with and enable options +dnl Whether we want to build the doc files +dnl Does nothing here, is passed on to the doc subdir +AC_ARG_ENABLE(doc,dnl +[ --disable-doc do not build doc files]) -+ -+dnl Whether we want to build the demo files -+dnl Does nothing here, is passed on to the demo subdir -+AC_ARG_ENABLE(demo,dnl -+[ --disable-demo do not build demo files]) -+ -+ - dnl Sort help/subtopic tables by row or column - AC_ARG_WITH(row-help,dnl - [ --with-row-help format help and subtopic tables by row (default) -@@ -1095,6 +1106,24 @@ - AC_DEFINE_UNQUOTED([DIST_CONTACT],["$DIST_CONTACT"],[Contact address for modified and binary distributed gnuplot versions]) - fi - +dnl build doc files +if test "$enable_doc" != no; then + AC_CONFIG_SUBDIRS(docs) @@ -43,6 +30,10 @@ diff -Naur a/configure.ac b/configure.ac +fi +AC_SUBST(DOCSUBDIR) + ++dnl Whether we want to build the demo files ++dnl Does nothing here, is passed on to the demo subdir ++AC_ARG_ENABLE(demo,dnl ++[ --disable-demo do not build demo files]) +dnl build demo files +if test "$enable_demo" != no; then + AC_CONFIG_SUBDIRS(demo) @@ -52,12 +43,11 @@ diff -Naur a/configure.ac b/configure.ac +fi +AC_SUBST(DEMOSUBDIR) + - dnl Substitute variables - AC_SUBST(PACKAGE) - AC_SUBST(VERSION_MAJOR) -diff -Naur a/Makefile.am b/Makefile.am ---- a/Makefile.am 2020-03-31 19:28:16.000000000 +0200 -+++ b/Makefile.am 2020-08-06 14:34:12.995097799 +0200 + dnl without-extra-coordinate may leave a hole in "struct coordinate" + AC_ARG_WITH(extra-coordinate,dnl + [ --without-extra-coordinate leave possible hole in struct coordinate],,) +--- a/Makefile.am 2023-12-19 00:28:58.000000000 +0100 ++++ b/Makefile.am 2024-05-13 15:54:21.189906680 +0200 @@ -1,7 +1,7 @@ ## Process this file with automake to produce Makefile.in -*-Makefile-*- AUTOMAKE_OPTIONS = foreign diff --git a/package/gnuplot/gnuplot.hash b/package/gnuplot/gnuplot.hash index 39dacd50a4..dd587a8220 100644 --- a/package/gnuplot/gnuplot.hash +++ b/package/gnuplot/gnuplot.hash @@ -1,6 +1,6 @@ -# From https://sourceforge.net/projects/gnuplot/files/gnuplot/5.4.10/ -md5 334851e63450362bdb95e67fa8a23665 gnuplot-5.4.10.tar.gz -sha1 9981e5b0111c07d376deef571ccc75ce4b4ebbd2 gnuplot-5.4.10.tar.gz +# From https://sourceforge.net/projects/gnuplot/files/gnuplot/6.0.0/ +md5 10246eb96bbf3a151d6eb9bbcc223e4e gnuplot-6.0.0.tar.gz +sha1 3abea0cccad89b0c8fb6619ad51b83a971ee24b9 gnuplot-6.0.0.tar.gz # Locally computed -sha256 975d8c1cc2c41c7cedc4e323aff035d977feb9a97f0296dd2a8a66d197a5b27c gnuplot-5.4.10.tar.gz +sha256 635a28f0993f6ab0d1179e072ad39b8139d07f51237f841d93c6c2ff4b1758ec gnuplot-6.0.0.tar.gz sha256 895928ec0735cca1c8cec42656c7e314a065d0242813bb8693c0c1bf61fd4e4d Copyright diff --git a/package/gnuplot/gnuplot.mk b/package/gnuplot/gnuplot.mk index 91e9bfb9bf..26b2daaf24 100644 --- a/package/gnuplot/gnuplot.mk +++ b/package/gnuplot/gnuplot.mk @@ -4,7 +4,7 @@ # ################################################################################ -GNUPLOT_VERSION = 5.4.10 +GNUPLOT_VERSION = 6.0.0 GNUPLOT_SITE = http://downloads.sourceforge.net/project/gnuplot/gnuplot/$(GNUPLOT_VERSION) GNUPLOT_LICENSE = gnuplot license (open source) GNUPLOT_LICENSE_FILES = Copyright -- 2.20.1 From nick.whitlock at eizo.com Mon May 13 15:59:05 2024 From: nick.whitlock at eizo.com (Nick Whitlock) Date: Mon, 13 May 2024 11:59:05 -0400 Subject: [Buildroot] [PATCH] package/nvidia-driver: bump version to 550.78 Message-ID: <20240513155907.104270-1-nick.whitlock@eizo.com> The NVIDIA drivers now have 64-bit and 32-bit versions bundled into one .run file. A configuration value was also added to check if the user wants to install GTK integration for the NVIDIA driver. The legacy version of libGL.so was removed in favor of the vendor neutral version. This has been confirmed to work on kernel 6.1.4. Signed-off-by: Nick Whitlock --- package/nvidia-driver/Config.in | 3 ++ package/nvidia-driver/nvidia-driver.hash | 7 ++- package/nvidia-driver/nvidia-driver.mk | 69 +++++++++++++----------- 3 files changed, 43 insertions(+), 36 deletions(-) diff --git a/package/nvidia-driver/Config.in b/package/nvidia-driver/Config.in index a8617a939b..0fcce93e28 100644 --- a/package/nvidia-driver/Config.in +++ b/package/nvidia-driver/Config.in @@ -90,4 +90,7 @@ config BR2_PACKAGE_NVIDIA_DRIVER_MODULE provides Unified Memory access to the GPU and CPU memories for CUDA programs. +config BR2_PACKAGE_NVIDIA_DRIVER_GTK + bool "nvidia GTK acceleration" + endif # BR2_PACKAGE_NVIDIA_DRIVER diff --git a/package/nvidia-driver/nvidia-driver.hash b/package/nvidia-driver/nvidia-driver.hash index 620112e6c8..06e3314d53 100644 --- a/package/nvidia-driver/nvidia-driver.hash +++ b/package/nvidia-driver/nvidia-driver.hash @@ -1,4 +1,3 @@ -# Locally computed -sha256 94e399b459659c12b1344e8c8f4f5eee1ed5915ff459fc8bb831c9e1d44677db NVIDIA-Linux-x86-390.151.run -sha256 6e4fd2258465f5d5527fe80abd46de925a30348b4a84658498a6d75caf42c47c NVIDIA-Linux-x86_64-390.151-no-compat32.run -sha256 bd28b0c5aeeb00eb11d3ec6f6f3449d4b3a40100914258332734a53527997526 LICENSE +# Locally computed: +sha256 34070434527ec9d575483e7f11ca078e467e73f6defc54366ecfbdcfe4a3bf73 NVIDIA-Linux-x86_64-550.78.run +sha256 5ac626496a6388d37cdd53e0300525267a4b8c89fb5980da060783afd561faf7 LICENSE diff --git a/package/nvidia-driver/nvidia-driver.mk b/package/nvidia-driver/nvidia-driver.mk index f1217b00aa..9ea97a2a9f 100644 --- a/package/nvidia-driver/nvidia-driver.mk +++ b/package/nvidia-driver/nvidia-driver.mk @@ -4,10 +4,9 @@ # ################################################################################ -NVIDIA_DRIVER_VERSION = 390.151 -NVIDIA_DRIVER_SUFFIX = $(if $(BR2_x86_64),_64) -NVIDIA_DRIVER_SITE = http://download.nvidia.com/XFree86/Linux-x86$(NVIDIA_DRIVER_SUFFIX)/$(NVIDIA_DRIVER_VERSION) -NVIDIA_DRIVER_SOURCE = NVIDIA-Linux-x86$(NVIDIA_DRIVER_SUFFIX)-$(NVIDIA_DRIVER_VERSION)$(if $(BR2_x86_64),-no-compat32).run +NVIDIA_DRIVER_VERSION = 550.78 +NVIDIA_DRIVER_SITE = http://download.nvidia.com/XFree86/Linux-x86_64/$(NVIDIA_DRIVER_VERSION) +NVIDIA_DRIVER_SOURCE = NVIDIA-Linux-x86_64-$(NVIDIA_DRIVER_VERSION).run NVIDIA_DRIVER_LICENSE = NVIDIA Software License NVIDIA_DRIVER_LICENSE_FILES = LICENSE NVIDIA_DRIVER_REDISTRIBUTE = NO @@ -23,30 +22,15 @@ ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_XORG),y) NVIDIA_DRIVER_DEPENDENCIES += mesa3d-headers xlib_libX11 xlib_libXext NVIDIA_DRIVER_PROVIDES += libgl libegl libgles -# libGL.so.$(NVIDIA_DRIVER_VERSION) is the legacy libGL.so library; it -# has been replaced with libGL.so.1.0.0. Installing both is technically -# possible, but great care must be taken to ensure they do not conflict, -# so that EGL still works. The legacy library exposes an NVidia-specific -# API, so it should not be needed, except for legacy, binary-only -# applications (in other words: we don't care). -# -# libGL.so.1.0.0 is the new vendor-neutral library, aimed at replacing -# the old libGL.so.$(NVIDIA_DRIVER_VERSION) library. The latter contains -# NVidia extensions (which is deemed bad now), while the former follows -# the newly-introduced vendor-neutral "dispatching" API/ABI: -# https://github.com/aritger/linux-opengl-abi-proposal/blob/master/linux-opengl-abi-proposal.txt -# However, this is not very useful to us, as we don't support multiple -# GL providers at the same time on the system, which this proposal is -# aimed at supporting. -# -# So we only install the legacy library for now. NVIDIA_DRIVER_LIBS_GL = \ libGLX.so.0 \ - libGL.so.$(NVIDIA_DRIVER_VERSION) \ + libglxserver_nvidia.so.$(NVIDIA_DRIVER_VERSION) \ + libGL.so.1.7.0 \ libGLX_nvidia.so.$(NVIDIA_DRIVER_VERSION) NVIDIA_DRIVER_LIBS_EGL = \ libEGL.so.1.1.0 \ + libEGL.so.$(NVIDIA_DRIVER_VERSION) \ libGLdispatch.so.0 \ libEGL_nvidia.so.$(NVIDIA_DRIVER_VERSION) @@ -57,13 +41,18 @@ NVIDIA_DRIVER_LIBS_GLES = \ libGLESv2_nvidia.so.$(NVIDIA_DRIVER_VERSION) NVIDIA_DRIVER_LIBS_MISC = \ + libnvidia-allocator.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-api.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-cfg.so.$(NVIDIA_DRIVER_VERSION) \ libnvidia-eglcore.so.$(NVIDIA_DRIVER_VERSION) \ - libnvidia-egl-wayland.so.1.0.2 \ + libnvidia-egl-gbm.so.1.1.1 \ + libnvidia-egl-wayland.so.1.1.13 \ + libnvidia-wayland-client.so.$(NVIDIA_DRIVER_VERSION) \ libnvidia-glcore.so.$(NVIDIA_DRIVER_VERSION) \ libnvidia-glsi.so.$(NVIDIA_DRIVER_VERSION) \ - tls/libnvidia-tls.so.$(NVIDIA_DRIVER_VERSION) \ - libvdpau_nvidia.so.$(NVIDIA_DRIVER_VERSION):vdpau/ \ - libnvidia-ml.so.$(NVIDIA_DRIVER_VERSION) + libnvidia-glvkspirv.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-ml.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-rtcore.so.$(NVIDIA_DRIVER_VERSION) NVIDIA_DRIVER_LIBS += \ $(NVIDIA_DRIVER_LIBS_GL) \ @@ -87,13 +76,26 @@ endef # wants to run a third-party program developed under such an agreement). ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_PRIVATE_LIBS),y) NVIDIA_DRIVER_LIBS += \ + libnvidia-fbc.so.$(NVIDIA_DRIVER_VERSION) \ libnvidia-ifr.so.$(NVIDIA_DRIVER_VERSION) \ - libnvidia-fbc.so.$(NVIDIA_DRIVER_VERSION) + libnvidia-ngx.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-opticalflow.so.$(NVIDIA_DRIVER_VERSION) \ + libnvoptix.so.$(NVIDIA_DRIVER_VERSION) +endif + +# Include GTK libraries (if required) +ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_GTK),y) +NVIDIA_DRIVER_LIBS += \ + libnvidia-gtk2.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-gtk3.so.$(NVIDIA_DRIVER_VERSION) endif # We refer to the destination path; the origin file has no directory component NVIDIA_DRIVER_LIBS += \ nvidia_drv.so:xorg/modules/drivers/ \ + libnvidia-pkcs11.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-pkcs11-openssl3.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-tls.so.$(NVIDIA_DRIVER_VERSION) \ libglx.so.$(NVIDIA_DRIVER_VERSION):xorg/modules/extensions/ # libglx needs a symlink according to the driver README. It has no SONAME @@ -107,11 +109,13 @@ endif # X drivers ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_CUDA),y) NVIDIA_DRIVER_LIBS += \ libcuda.so.$(NVIDIA_DRIVER_VERSION) \ - libnvidia-compiler.so.$(NVIDIA_DRIVER_VERSION) \ + libcudadebugger.so.$(NVIDIA_DRIVER_VERSION) \ libnvcuvid.so.$(NVIDIA_DRIVER_VERSION) \ - libnvidia-fatbinaryloader.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-encode.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-gpucomp.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-nvvm.so.$(NVIDIA_DRIVER_VERSION) \ libnvidia-ptxjitcompiler.so.$(NVIDIA_DRIVER_VERSION) \ - libnvidia-encode.so.$(NVIDIA_DRIVER_VERSION) + libvdpau_nvidia.so.$(NVIDIA_DRIVER_VERSION) ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_CUDA_PROGS),y) NVIDIA_DRIVER_PROGS = nvidia-cuda-mps-control nvidia-cuda-mps-server endif @@ -152,8 +156,9 @@ endif # BR2_PACKAGE_NVIDIA_DRIVER_MODULE == y # virtually everywhere, and it is fine enough to provide useful options. # Except it can't extract into an existing (even empty) directory. define NVIDIA_DRIVER_EXTRACT_CMDS - $(SHELL) $(NVIDIA_DRIVER_DL_DIR)/$(NVIDIA_DRIVER_SOURCE) --extract-only --target \ - $(@D)/tmp-extract + $(SHELL) $(NVIDIA_DRIVER_DL_DIR)/$(NVIDIA_DRIVER_SOURCE) --extract-only \ + $(if $(BR2_x86_64),--no-install-compat32-libs) \ + --target $(@D)/tmp-extract chmod u+w -R $(@D) mv $(@D)/tmp-extract/* $(@D)/tmp-extract/.manifest $(@D) rm -rf $(@D)/tmp-extract -- 2.43.0 From vfazio at xes-inc.com Mon May 13 18:03:18 2024 From: vfazio at xes-inc.com (Vincent Fazio) Date: Mon, 13 May 2024 18:03:18 +0000 Subject: [Buildroot] [External] - [PATCH] package/nvidia-driver: bump version to 550.78 In-Reply-To: <20240513155907.104270-1-nick.whitlock@eizo.com> References: <20240513155907.104270-1-nick.whitlock@eizo.com> Message-ID: Nick, All, > -----Original Message----- > From: buildroot On Behalf Of Nick > Whitlock > Sent: Monday, May 13, 2024 10:59 AM > To: buildroot at buildroot.org > Cc: Yann E. MORIN ; Nick Whitlock > > Subject: [External] - [Buildroot] [PATCH] package/nvidia-driver: bump version > to 550.78 > > The NVIDIA drivers now have 64-bit and 32-bit versions bundled > into one .run file. > I believe this was always the case. See the /32 folder in the x86_64 run files for 390.x > A configuration value was also added to check if the user wants > to install GTK integration for the NVIDIA driver. > > The legacy version of libGL.so was removed in favor of the > vendor neutral version. > > This has been confirmed to work on kernel 6.1.4. > > Signed-off-by: Nick Whitlock > --- > package/nvidia-driver/Config.in | 3 ++ > package/nvidia-driver/nvidia-driver.hash | 7 ++- > package/nvidia-driver/nvidia-driver.mk | 69 +++++++++++++----------- > 3 files changed, 43 insertions(+), 36 deletions(-) > > diff --git a/package/nvidia-driver/Config.in b/package/nvidia-driver/Config.in > index a8617a939b..0fcce93e28 100644 > --- a/package/nvidia-driver/Config.in > +++ b/package/nvidia-driver/Config.in > @@ -90,4 +90,7 @@ config BR2_PACKAGE_NVIDIA_DRIVER_MODULE > provides Unified Memory access to the GPU and CPU memories for > CUDA programs. > > +config BR2_PACKAGE_NVIDIA_DRIVER_GTK > + bool "nvidia GTK acceleration" > + > endif # BR2_PACKAGE_NVIDIA_DRIVER > diff --git a/package/nvidia-driver/nvidia-driver.hash b/package/nvidia- > driver/nvidia-driver.hash > index 620112e6c8..06e3314d53 100644 > --- a/package/nvidia-driver/nvidia-driver.hash > +++ b/package/nvidia-driver/nvidia-driver.hash > @@ -1,4 +1,3 @@ > -# Locally computed > -sha256 > 94e399b459659c12b1344e8c8f4f5eee1ed5915ff459fc8bb831c9e1d44677 > db NVIDIA-Linux-x86-390.151.run > -sha256 > 6e4fd2258465f5d5527fe80abd46de925a30348b4a84658498a6d75caf42c4 > 7c NVIDIA-Linux-x86_64-390.151-no-compat32.run > -sha256 > bd28b0c5aeeb00eb11d3ec6f6f3449d4b3a40100914258332734a53527997 > 526 LICENSE > +# Locally computed: > +sha256 > 34070434527ec9d575483e7f11ca078e467e73f6defc54366ecfbdcfe4a3bf7 > 3 NVIDIA-Linux-x86_64-550.78.run > +sha256 > 5ac626496a6388d37cdd53e0300525267a4b8c89fb5980da060783afd561faf > 7 LICENSE > diff --git a/package/nvidia-driver/nvidia-driver.mk b/package/nvidia- > driver/nvidia-driver.mk > index f1217b00aa..9ea97a2a9f 100644 > --- a/package/nvidia-driver/nvidia-driver.mk > +++ b/package/nvidia-driver/nvidia-driver.mk > @@ -4,10 +4,9 @@ > # > > ############################################################ > #################### > > -NVIDIA_DRIVER_VERSION = 390.151 > -NVIDIA_DRIVER_SUFFIX = $(if $(BR2_x86_64),_64) > -NVIDIA_DRIVER_SITE = http://download.nvidia.com/XFree86/Linux- > x86$(NVIDIA_DRIVER_SUFFIX)/$(NVIDIA_DRIVER_VERSION) > -NVIDIA_DRIVER_SOURCE = NVIDIA-Linux-x86$(NVIDIA_DRIVER_SUFFIX)- > $(NVIDIA_DRIVER_VERSION)$(if $(BR2_x86_64),-no-compat32).run I think we did this so that 32bit builds didn't need to: 1) fetch the 64bit bundle 2) handle the /32 subdirectory based on the target bitness If we used the installer's native logic, IIRC, it would install both 32bit and 64bit libraries, hence we stage the files and copy out what we need. > +NVIDIA_DRIVER_VERSION = 550.78 We had some discussions about a bump a year or two ago and there was never any real consensus about what we should do. The challenge, I think, is that the 5xx series drops support for some common NVIDIA products that may be more likely be used in embedded environments (like some of the Wolf GPU products). https://www.nvidia.com/en-us/drivers/unix/legacy-gpu/ At the time, we discussed having different selectable, but mutually exclusive, driver versions so that users could choose the version that provided support for their GPU. I had intended to do this but never found the time. I was also rewriting the installer to be manifest based but that too stalled due to lack of time. > +NVIDIA_DRIVER_SITE = http://download.nvidia.com/XFree86/Linux- > x86_64/$(NVIDIA_DRIVER_VERSION) > +NVIDIA_DRIVER_SOURCE = NVIDIA-Linux-x86_64- > $(NVIDIA_DRIVER_VERSION).run > NVIDIA_DRIVER_LICENSE = NVIDIA Software License > NVIDIA_DRIVER_LICENSE_FILES = LICENSE > NVIDIA_DRIVER_REDISTRIBUTE = NO > @@ -23,30 +22,15 @@ ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_XORG),y) > NVIDIA_DRIVER_DEPENDENCIES += mesa3d-headers xlib_libX11 xlib_libXext > NVIDIA_DRIVER_PROVIDES += libgl libegl libgles > > -# libGL.so.$(NVIDIA_DRIVER_VERSION) is the legacy libGL.so library; it > -# has been replaced with libGL.so.1.0.0. Installing both is technically > -# possible, but great care must be taken to ensure they do not conflict, > -# so that EGL still works. The legacy library exposes an NVidia-specific > -# API, so it should not be needed, except for legacy, binary-only > -# applications (in other words: we don't care). > -# > -# libGL.so.1.0.0 is the new vendor-neutral library, aimed at replacing > -# the old libGL.so.$(NVIDIA_DRIVER_VERSION) library. The latter contains > -# NVidia extensions (which is deemed bad now), while the former follows > -# the newly-introduced vendor-neutral "dispatching" API/ABI: > -# https://github.com/aritger/linux-opengl-abi-proposal/blob/master/linux- > opengl-abi-proposal.txt > -# However, this is not very useful to us, as we don't support multiple > -# GL providers at the same time on the system, which this proposal is > -# aimed at supporting. > -# > -# So we only install the legacy library for now. > NVIDIA_DRIVER_LIBS_GL = \ > libGLX.so.0 \ > - libGL.so.$(NVIDIA_DRIVER_VERSION) \ > + libglxserver_nvidia.so.$(NVIDIA_DRIVER_VERSION) \ > + libGL.so.1.7.0 \ > libGLX_nvidia.so.$(NVIDIA_DRIVER_VERSION) > > NVIDIA_DRIVER_LIBS_EGL = \ > libEGL.so.1.1.0 \ > + libEGL.so.$(NVIDIA_DRIVER_VERSION) \ > libGLdispatch.so.0 \ > libEGL_nvidia.so.$(NVIDIA_DRIVER_VERSION) > > @@ -57,13 +41,18 @@ NVIDIA_DRIVER_LIBS_GLES = \ > libGLESv2_nvidia.so.$(NVIDIA_DRIVER_VERSION) > > NVIDIA_DRIVER_LIBS_MISC = \ > + libnvidia-allocator.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-api.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-cfg.so.$(NVIDIA_DRIVER_VERSION) \ > libnvidia-eglcore.so.$(NVIDIA_DRIVER_VERSION) \ > - libnvidia-egl-wayland.so.1.0.2 \ > + libnvidia-egl-gbm.so.1.1.1 \ > + libnvidia-egl-wayland.so.1.1.13 \ > + libnvidia-wayland-client.so.$(NVIDIA_DRIVER_VERSION) \ > libnvidia-glcore.so.$(NVIDIA_DRIVER_VERSION) \ > libnvidia-glsi.so.$(NVIDIA_DRIVER_VERSION) \ > - tls/libnvidia-tls.so.$(NVIDIA_DRIVER_VERSION) \ > - libvdpau_nvidia.so.$(NVIDIA_DRIVER_VERSION):vdpau/ \ > - libnvidia-ml.so.$(NVIDIA_DRIVER_VERSION) > + libnvidia-glvkspirv.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-ml.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-rtcore.so.$(NVIDIA_DRIVER_VERSION) > > NVIDIA_DRIVER_LIBS += \ > $(NVIDIA_DRIVER_LIBS_GL) \ > @@ -87,13 +76,26 @@ endef > # wants to run a third-party program developed under such an agreement). > ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_PRIVATE_LIBS),y) > NVIDIA_DRIVER_LIBS += \ > + libnvidia-fbc.so.$(NVIDIA_DRIVER_VERSION) \ > libnvidia-ifr.so.$(NVIDIA_DRIVER_VERSION) \ > - libnvidia-fbc.so.$(NVIDIA_DRIVER_VERSION) > + libnvidia-ngx.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-opticalflow.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvoptix.so.$(NVIDIA_DRIVER_VERSION) > +endif > + > +# Include GTK libraries (if required) > +ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_GTK),y) > +NVIDIA_DRIVER_LIBS += \ > + libnvidia-gtk2.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-gtk3.so.$(NVIDIA_DRIVER_VERSION) > endif > > # We refer to the destination path; the origin file has no directory > component > NVIDIA_DRIVER_LIBS += \ > nvidia_drv.so:xorg/modules/drivers/ \ > + libnvidia-pkcs11.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-pkcs11-openssl3.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-tls.so.$(NVIDIA_DRIVER_VERSION) \ > libglx.so.$(NVIDIA_DRIVER_VERSION):xorg/modules/extensions/ > > # libglx needs a symlink according to the driver README. It has no SONAME > @@ -107,11 +109,13 @@ endif # X drivers > ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_CUDA),y) > NVIDIA_DRIVER_LIBS += \ > libcuda.so.$(NVIDIA_DRIVER_VERSION) \ > - libnvidia-compiler.so.$(NVIDIA_DRIVER_VERSION) \ > + libcudadebugger.so.$(NVIDIA_DRIVER_VERSION) \ > libnvcuvid.so.$(NVIDIA_DRIVER_VERSION) \ > - libnvidia-fatbinaryloader.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-encode.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-gpucomp.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-nvvm.so.$(NVIDIA_DRIVER_VERSION) \ > libnvidia-ptxjitcompiler.so.$(NVIDIA_DRIVER_VERSION) \ > - libnvidia-encode.so.$(NVIDIA_DRIVER_VERSION) > + libvdpau_nvidia.so.$(NVIDIA_DRIVER_VERSION) > ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_CUDA_PROGS),y) > NVIDIA_DRIVER_PROGS = nvidia-cuda-mps-control nvidia-cuda-mps-server > endif > @@ -152,8 +156,9 @@ endif # BR2_PACKAGE_NVIDIA_DRIVER_MODULE == > y > # virtually everywhere, and it is fine enough to provide useful options. > # Except it can't extract into an existing (even empty) directory. > define NVIDIA_DRIVER_EXTRACT_CMDS > - $(SHELL) $(NVIDIA_DRIVER_DL_DIR)/$(NVIDIA_DRIVER_SOURCE) -- > extract-only --target \ > - $(@D)/tmp-extract > + $(SHELL) $(NVIDIA_DRIVER_DL_DIR)/$(NVIDIA_DRIVER_SOURCE) -- > extract-only \ > + $(if $(BR2_x86_64),--no-install-compat32-libs) \ > + --target $(@D)/tmp-extract > chmod u+w -R $(@D) > mv $(@D)/tmp-extract/* $(@D)/tmp-extract/.manifest $(@D) > rm -rf $(@D)/tmp-extract > -- > 2.43.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot > CAUTION: This email originated from outside of the organization. Do not click > links or open attachments unless you recognize the sender and know the > content is safe. From thomas.petazzoni at bootlin.com Mon May 13 19:28:41 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:28:41 +0200 Subject: [Buildroot] [git commit] package/basu: new package Message-ID: <20240513192936.3DCDC870EF@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=9fcf0fd80180c6568c0516fa3b8a0d2cf5f1078e branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master basu is the sd-bus library, extracted from systemd. Some projects rely on the sd-bus library for DBus support. However not all systems have systemd or elogind installed. This library provides just sd-bus (and the busctl utility). Signed-off-by: Sergey Bobrenok Signed-off-by: Thomas Petazzoni --- DEVELOPERS | 1 + package/Config.in | 1 + ...-Disable-stack-protection-for-Buildroot-p.patch | 39 ++++++++++++++++++++++ ...c-Use-F_ADD_SEALS-definition-from-missing.patch | 34 +++++++++++++++++++ package/basu/Config.in | 23 +++++++++++++ package/basu/basu.hash | 4 +++ package/basu/basu.mk | 28 ++++++++++++++++ 7 files changed, 130 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index d653648718..ad03c26ea4 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2835,6 +2835,7 @@ F: package/systemd F: support/scripts/pkg-stats N: Sergey Bobrenok +F: package/basu/ F: package/sdbus-cpp/ N: Sergey Matyukevich diff --git a/package/Config.in b/package/Config.in index c29b4a5101..768103e0c4 100644 --- a/package/Config.in +++ b/package/Config.in @@ -2103,6 +2103,7 @@ menu "Other" source "package/armadillo/Config.in" source "package/atf/Config.in" source "package/avro-c/Config.in" + source "package/basu/Config.in" source "package/bctoolbox/Config.in" source "package/bdwgc/Config.in" source "package/belr/Config.in" diff --git a/package/basu/0001-meson.build-Disable-stack-protection-for-Buildroot-p.patch b/package/basu/0001-meson.build-Disable-stack-protection-for-Buildroot-p.patch new file mode 100644 index 0000000000..34dd3b16b9 --- /dev/null +++ b/package/basu/0001-meson.build-Disable-stack-protection-for-Buildroot-p.patch @@ -0,0 +1,39 @@ +From 6133c87299bce32c13dcf1692842ea5f2890c5ad Mon Sep 17 00:00:00 2001 +From: Sergey Bobrenok +Date: Wed, 28 Feb 2024 16:29:17 +0300 +Subject: [PATCH] meson.build: Disable stack protection for Buildroot packaging + +In Buildroot, the SSP flags are passed via the wrapper, and only flags +supported by the toolchain will be used. So the SSP flags can be +safely removed from the build files. + +Fixes: + src/basic/libbasic.a.p/log.c.o: in function `write_to_console.isra.0': + log.c:(.text.write_to_console.isra.0+0x154): undefined reference to `__stack_chk_fail_local' + +Upstream: N/A [Buildroot specific] + +Signed-off-by: Sergey Bobrenok +--- + meson.build | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/meson.build b/meson.build +index 6f79707..51fd400 100644 +--- a/meson.build ++++ b/meson.build +@@ -75,9 +75,6 @@ possible_cc_flags = [ + '-fdiagnostics-show-option', + '-fno-strict-aliasing', + '-fvisibility=hidden', +- '-fstack-protector', +- '-fstack-protector-strong', +- '--param=ssp-buffer-size=4', + ] + + # --as-needed and --no-undefined are provided by meson by default, + +base-commit: 684a41d68cfbb05e38aacb60a8548e21ddfbecdb +-- +2.43.2 + diff --git a/package/basu/0002-memfd-util.c-Use-F_ADD_SEALS-definition-from-missing.patch b/package/basu/0002-memfd-util.c-Use-F_ADD_SEALS-definition-from-missing.patch new file mode 100644 index 0000000000..69e899279f --- /dev/null +++ b/package/basu/0002-memfd-util.c-Use-F_ADD_SEALS-definition-from-missing.patch @@ -0,0 +1,34 @@ +From 8e4960e8b9d11d9be96e83b02bd3b08178ddce1b Mon Sep 17 00:00:00 2001 +From: Sergey Bobrenok +Date: Wed, 28 Feb 2024 20:42:19 +0300 +Subject: [PATCH basu] memfd-util.c: Use F_ADD_SEALS definition from missing.h + +uClibc and glibc (until version 2.27, 2018) implementations don't +support F_ADD_SEALS and other F_SEAL_xxx flags. +'missing.h' was removed from 'memfd-util.c' in 37dbb2fcb ("Remove +useless includes"). + +Upstream: https://lists.sr.ht/~emersion/public-inbox/patches/49899 + +Signed-off-by: Sergey Bobrenok +--- + src/basic/memfd-util.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/basic/memfd-util.c b/src/basic/memfd-util.c +index 89893ba..7e535c6 100644 +--- a/src/basic/memfd-util.c ++++ b/src/basic/memfd-util.c +@@ -7,6 +7,7 @@ + + #include "alloc-util.h" + #include "memfd-util.h" ++#include "missing.h" + + int memfd_set_sealed(int fd) { + #if defined(__FreeBSD__) && __FreeBSD__ < 13 + +base-commit: 684a41d68cfbb05e38aacb60a8548e21ddfbecdb +-- +2.44.0 + diff --git a/package/basu/Config.in b/package/basu/Config.in new file mode 100644 index 0000000000..5875aa7775 --- /dev/null +++ b/package/basu/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_BASU + bool "basu" + depends on BR2_USE_MMU # dbus + depends on BR2_USE_WCHAR # uchar.h + depends on BR2_ENABLE_LOCALE # locale_t + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # __sync_add_and_fetch + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # F_ADD_SEALS + select BR2_PACKAGE_DBUS if !BR2_PACKAGE_DBUS_BROKER # runtime + help + basu is the sd-bus library, extracted from systemd. + + Some projects rely on the sd-bus library for DBus support. + However not all systems have systemd or elogind installed. + This library provides just sd-bus (and the busctl utility). + + https://git.sr.ht/~emersion/basu + +comment "basu needs a toolchain w/ wchar, locale, threads, headers >= 3.17" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_ENABLE_LOCALE || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 diff --git a/package/basu/basu.hash b/package/basu/basu.hash new file mode 100644 index 0000000000..f369286337 --- /dev/null +++ b/package/basu/basu.hash @@ -0,0 +1,4 @@ +# From https://git.sr.ht/~emersion/basu/refs/v0.2.1 +sha256 d9b373a9fcb5d5eb5f6c1c56355f76edb7f2f52bc744570e80604e83455a19bd basu-0.2.1.tar.gz +# Locally computed: +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENSE.LGPL2.1 diff --git a/package/basu/basu.mk b/package/basu/basu.mk new file mode 100644 index 0000000000..7bd1923646 --- /dev/null +++ b/package/basu/basu.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# basu +# +################################################################################ + +BASU_VERSION = 0.2.1 +BASU_SITE = https://git.sr.ht/~emersion/basu/refs/download/v$(BASU_VERSION) +BASU_INSTALL_STAGING = YES +BASU_LICENSE = LGPL-2.1+ +BASU_LICENSE_FILES = LICENSE.LGPL2.1 +BASU_DEPENDENCIES = host-gperf + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +BASU_DEPENDENCIES += libcap +BASU_CONF_OPTS += -Dlibcap=enabled +else +BASU_CONF_OPTS += -Dlibcap=disabled +endif + +ifeq ($(BR2_PACKAGE_AUDIT),y) +BASU_DEPENDENCIES += audit +BASU_CONF_OPTS += -Daudit=enabled +else +BASU_CONF_OPTS += -Daudit=disabled +endif + +$(eval $(meson-package)) From thomas.petazzoni at bootlin.com Mon May 13 19:30:57 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:30:57 +0200 Subject: [Buildroot] [PATCH 1/1] package/basu: new package In-Reply-To: <20240229192138.21843-1-bobrofon@gmail.com> References: <20240229192138.21843-1-bobrofon@gmail.com> Message-ID: <20240513213057.2a0eb060@windsurf> On Thu, 29 Feb 2024 22:21:38 +0300 Sergey Bobrenok wrote: > basu is the sd-bus library, extracted from systemd. > > Some projects rely on the sd-bus library for DBus support. However not > all systems have systemd or elogind installed. This library provides > just sd-bus (and the busctl utility). > > Signed-off-by: Sergey Bobrenok > --- > DEVELOPERS | 1 + > package/Config.in | 1 + > ...ble-stack-protection-for-Buildroot-p.patch | 39 +++++++++++++++++++ > ...-F_ADD_SEALS-definition-from-missing.patch | 34 ++++++++++++++++ > package/basu/Config.in | 23 +++++++++++ > package/basu/basu.hash | 4 ++ > package/basu/basu.mk | 28 +++++++++++++ > 7 files changed, 130 insertions(+) > create mode 100644 package/basu/0001-meson.build-Disable-stack-protection-for-Buildroot-p.patch > create mode 100644 package/basu/0002-memfd-util.c-Use-F_ADD_SEALS-definition-from-missing.patch > create mode 100644 package/basu/Config.in > create mode 100644 package/basu/basu.hash > create mode 100644 package/basu/basu.mk Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 19:35:12 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:35:12 +0200 Subject: [Buildroot] [PATCH 1/1] pacakge/smcroute: bump to version v2.5.7 In-Reply-To: <20240513112205.985165-1-troglobit@gmail.com> References: <20240513112205.985165-1-troglobit@gmail.com> Message-ID: <20240513213512.55e93cb6@windsurf> On Mon, 13 May 2024 13:22:05 +0200 Joachim Wiberg wrote: > Fixes segfault on kernel without IPv6 support. For details, see > https://github.com/troglobit/smcroute/releases/tag/2.5.7 > > Signed-off-by: Joachim Wiberg > --- > package/smcroute/smcroute.hash | 5 ++--- > package/smcroute/smcroute.mk | 2 +- > 2 files changed, 3 insertions(+), 4 deletions(-) Applied to master after fixing the typo in the commit title, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 19:35:52 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:35:52 +0200 Subject: [Buildroot] [PATCH] package/sdl2: bump version to 2.30.3 In-Reply-To: <20240513113936.7471-1-mf@go-sys.de> References: <20240513113936.7471-1-mf@go-sys.de> Message-ID: <20240513213552.5e09055f@windsurf> On Mon, 13 May 2024 13:39:36 +0200 Michael Fischer wrote: > Signed-off-by: Michael Fischer > --- > package/sdl2/sdl2.hash | 4 ++-- > package/sdl2/sdl2.mk | 2 +- > 2 files changed, 3 insertions(+), 3 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 19:36:12 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:36:12 +0200 Subject: [Buildroot] [PATCH] configs/freescale_imx93evk: Update to NXP lf-6.6.3-1.0.0 In-Reply-To: <20240513123442.213242-1-festevam@gmail.com> References: <20240513123442.213242-1-festevam@gmail.com> Message-ID: <20240513213612.6a1dcf2f@windsurf> On Mon, 13 May 2024 09:34:42 -0300 Fabio Estevam wrote: > Update kernel, TF-A and U-Boot repos to the NXP lf-6.6.3-1.0.0 versions. > > Signed-off-by: Fabio Estevam > --- > configs/freescale_imx93evk_defconfig | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 19:36:01 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:36:01 +0200 Subject: [Buildroot] [git commit] configs/freescale_imx93evk: Update to NXP lf-6.6.3-1.0.0 Message-ID: <20240513193617.04CF9870EE@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=22fd54b737d81ceb8b1cb0ccb0896c0b914b02cd branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Update kernel, TF-A and U-Boot repos to the NXP lf-6.6.3-1.0.0 versions. Signed-off-by: Fabio Estevam Signed-off-by: Thomas Petazzoni --- configs/freescale_imx93evk_defconfig | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/configs/freescale_imx93evk_defconfig b/configs/freescale_imx93evk_defconfig index fa16967884..f30bafd9a2 100644 --- a/configs/freescale_imx93evk_defconfig +++ b/configs/freescale_imx93evk_defconfig @@ -1,13 +1,13 @@ BR2_aarch64=y BR2_cortex_a55=y BR2_ARM_FPU_VFPV4D16=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y BR2_GLOBAL_PATCH_DIR="board/freescale/imx93evk/patches" BR2_TARGET_GENERIC_GETTY_PORT="ttyLP0" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/imx9-bootloader-prepare.sh board/freescale/common/imx/post-image.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,linux-imx,lf-6.1.55-2.2.0)/linux-imx-lf-6.1.55-2.2.0.tar.gz" +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,linux-imx,lf-6.6.3-1.0.0)/linux-imx-lf-6.6.3-1.0.0.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="imx_v8" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx93-11x11-evk" @@ -21,13 +21,13 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_ROOTFS_EXT2_SIZE="120M" BR2_TARGET_ARM_TRUSTED_FIRMWARE=y BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL=y -BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,imx-atf,lf-6.1.55-2.2.0)/imx-atf-lf-6.1.55-2.2.0.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,imx-atf,lf-6.6.3-1.0.0)/imx-atf-lf-6.6.3-1.0.0.tar.gz" BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx93" BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_TARBALL=y -BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,uboot-imx,lf-6.1.55-2.2.0)/uboot-imx-lf-6.1.55-2.2.0.tar.gz" +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,nxp-imx,uboot-imx,lf-6.6.3-1.0.0)/uboot-imx-lf-6.6.3-1.0.0.tar.gz" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx93_11x11_evk" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_NEEDS_OPENSSL=y From thomas.petazzoni at bootlin.com Mon May 13 19:31:24 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:31:24 +0200 Subject: [Buildroot] [git commit] package/smcroute: bump to version v2.5.7 Message-ID: <20240513193616.DF7118710E@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=86a5cd42db6acc1ee4f312a55b40ab38f8743d72 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fixes segfault on kernel without IPv6 support. For details, see https://github.com/troglobit/smcroute/releases/tag/2.5.7 Signed-off-by: Joachim Wiberg Signed-off-by: Thomas Petazzoni --- package/smcroute/smcroute.hash | 5 ++--- package/smcroute/smcroute.mk | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/package/smcroute/smcroute.hash b/package/smcroute/smcroute.hash index b472dfbc04..d51745c076 100644 --- a/package/smcroute/smcroute.hash +++ b/package/smcroute/smcroute.hash @@ -1,5 +1,4 @@ -# Hash from https://github.com/troglobit/smcroute/releases/download/2.5.6/smcroute-2.5.6.tar.gz.sha256 -sha256 0be38f617e322daafaa941c02423239f5c117b940cf0f45bacadb6733c4b3916 smcroute-2.5.6.tar.gz - +# Hash from https://github.com/troglobit/smcroute/releases/ generated by GitHub +sha256 7d2c83e11908fe37844fa9b49ae50924555c4e1bb440fb059a95c94e442ea8a5 smcroute-2.5.7.tar.gz # Locally generated sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/smcroute/smcroute.mk b/package/smcroute/smcroute.mk index 0c4f88ab1b..f7476f1100 100644 --- a/package/smcroute/smcroute.mk +++ b/package/smcroute/smcroute.mk @@ -4,7 +4,7 @@ # ################################################################################ -SMCROUTE_VERSION = 2.5.6 +SMCROUTE_VERSION = 2.5.7 SMCROUTE_SITE = https://github.com/troglobit/smcroute/releases/download/$(SMCROUTE_VERSION) SMCROUTE_LICENSE = GPL-2.0+ SMCROUTE_LICENSE_FILES = COPYING From thomas.petazzoni at bootlin.com Mon May 13 19:35:00 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:35:00 +0200 Subject: [Buildroot] [git commit] package/sdl2: bump version to 2.30.3 Message-ID: <20240513193616.EAA548710F@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=19d12dffc4550aaec50b3d2ffcdc67746fff60f4 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Michael Fischer Signed-off-by: Thomas Petazzoni --- package/sdl2/sdl2.hash | 4 ++-- package/sdl2/sdl2.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/sdl2/sdl2.hash b/package/sdl2/sdl2.hash index 3c4b06cf3e..3c72d1d6d1 100644 --- a/package/sdl2/sdl2.hash +++ b/package/sdl2/sdl2.hash @@ -1,4 +1,4 @@ -# Locally calculated after checking http://www.libsdl.org/release/SDL2-2.30.2.tar.gz.sig -sha256 891d66ac8cae51361d3229e3336ebec1c407a8a2a063b61df14f5fdf3ab5ac31 SDL2-2.30.2.tar.gz +# Locally calculated after checking http://www.libsdl.org/release/SDL2-2.30.3.tar.gz.sig +sha256 820440072f8f5b50188c1dae104f2ad25984de268785be40c41a099a510f0aec SDL2-2.30.3.tar.gz # Locally calculated sha256 9b9e1764f06701bcf7ce21e942c682d5921ba0900c6fca760321b1c8837a9662 LICENSE.txt diff --git a/package/sdl2/sdl2.mk b/package/sdl2/sdl2.mk index 70f765f0ea..b5b0fb49e1 100644 --- a/package/sdl2/sdl2.mk +++ b/package/sdl2/sdl2.mk @@ -4,7 +4,7 @@ # ################################################################################ -SDL2_VERSION = 2.30.2 +SDL2_VERSION = 2.30.3 SDL2_SOURCE = SDL2-$(SDL2_VERSION).tar.gz SDL2_SITE = http://www.libsdl.org/release SDL2_LICENSE = Zlib From thomas.petazzoni at bootlin.com Mon May 13 19:36:49 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:36:49 +0200 Subject: [Buildroot] [PATCH] configs/freescale_imx93evk: Update to NXP lf-6.6.3-1.0.0 In-Reply-To: <20240513123442.213242-1-festevam@gmail.com> References: <20240513123442.213242-1-festevam@gmail.com> Message-ID: <20240513213649.5624a768@windsurf> On Mon, 13 May 2024 09:34:42 -0300 Fabio Estevam wrote: > Update kernel, TF-A and U-Boot repos to the NXP lf-6.6.3-1.0.0 versions. > > Signed-off-by: Fabio Estevam > --- > configs/freescale_imx93evk_defconfig | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) BTW, it would be good to make use of BR2_DOWNLOAD_FORCE_CHECK_HASHES=y in this defconfig (and in fact in the other defconfigs you maintain as well!). Thanks! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 19:36:58 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:36:58 +0200 Subject: [Buildroot] [git commit] package/network-manager-openvpn: bump to version 1.11.0 Message-ID: <20240513193737.48B3D87114@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=bd4efc86c90b85fbd5825f6b2eab49790e09f601 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master https://download.gnome.org/sources/NetworkManager-openvpn/1.11/NetworkManager-openvpn-1.11.0.news Signed-off-by: Alex Michel Signed-off-by: Thomas Petazzoni --- package/network-manager-openvpn/network-manager-openvpn.hash | 4 ++-- package/network-manager-openvpn/network-manager-openvpn.mk | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/network-manager-openvpn/network-manager-openvpn.hash b/package/network-manager-openvpn/network-manager-openvpn.hash index 11fb28f8c8..59d03fae2a 100644 --- a/package/network-manager-openvpn/network-manager-openvpn.hash +++ b/package/network-manager-openvpn/network-manager-openvpn.hash @@ -1,4 +1,4 @@ -# From https://download.gnome.org/sources/NetworkManager-openvpn/1.10/NetworkManager-openvpn-1.10.2.sha256sum -sha256 62f0f2a8782221b923f212ac2a8ebbc1002efd6a90ee945dad4adfb56d076d21 NetworkManager-openvpn-1.10.2.tar.xz +# From https://download.gnome.org/sources/NetworkManager-openvpn/1.11/NetworkManager-openvpn-1.11.0.sha256sum +sha256 2128de06f91b33c13d63cdaa6e178bc1ca57fc770cde3bc7c24891f4d9824501 NetworkManager-openvpn-1.11.0.tar.xz # Locally computed sha256 c39e345d992dfba62db265f8c6d6ff1d90c61d92876635ae05adbfa2f45fff46 COPYING diff --git a/package/network-manager-openvpn/network-manager-openvpn.mk b/package/network-manager-openvpn/network-manager-openvpn.mk index ccc86e45f7..f39edf3209 100644 --- a/package/network-manager-openvpn/network-manager-openvpn.mk +++ b/package/network-manager-openvpn/network-manager-openvpn.mk @@ -4,8 +4,8 @@ # ################################################################################ -NETWORK_MANAGER_OPENVPN_VERSION_MAJOR = 1.10 -NETWORK_MANAGER_OPENVPN_VERSION = $(NETWORK_MANAGER_OPENVPN_VERSION_MAJOR).2 +NETWORK_MANAGER_OPENVPN_VERSION_MAJOR = 1.11 +NETWORK_MANAGER_OPENVPN_VERSION = $(NETWORK_MANAGER_OPENVPN_VERSION_MAJOR).0 NETWORK_MANAGER_OPENVPN_SOURCE = NetworkManager-openvpn-$(NETWORK_MANAGER_OPENVPN_VERSION).tar.xz NETWORK_MANAGER_OPENVPN_SITE = https://download.gnome.org/sources/NetworkManager-openvpn/$(NETWORK_MANAGER_OPENVPN_VERSION_MAJOR) NETWORK_MANAGER_OPENVPN_DEPENDENCIES = network-manager openvpn From thomas.petazzoni at bootlin.com Mon May 13 19:37:34 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:37:34 +0200 Subject: [Buildroot] [PATCH 1/1] package/network-manager-openvpn: bump to version 1.11.0 In-Reply-To: References: Message-ID: <20240513213734.38e900ba@windsurf> On Mon, 13 May 2024 12:42:52 +0000 Michel Alex wrote: > https://download.gnome.org/sources/NetworkManager-openvpn/1.11/NetworkManager-openvpn-1.11.0.news > > Signed-off-by: Alex Michel > --- > package/network-manager-openvpn/network-manager-openvpn.hash | 4 ++-- > package/network-manager-openvpn/network-manager-openvpn.mk | 4 ++-- > 2 files changed, 4 insertions(+), 4 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 19:38:09 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:38:09 +0200 Subject: [Buildroot] [git commit] package/gnuplot: bump version to 6.0.0 Message-ID: <20240513194643.EC3438711C@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=5f11ce4aeaba99917778c384b236d267e78a7b29 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master 0001-configure-add-without-demo-option: adapt patch to 6.0.0 version Signed-off-by: Michael Fischer Signed-off-by: Thomas Petazzoni --- .../0001-configure-add-without-demo-option.patch | 42 +++++++++------------- package/gnuplot/gnuplot.hash | 8 ++--- package/gnuplot/gnuplot.mk | 2 +- 3 files changed, 21 insertions(+), 31 deletions(-) diff --git a/package/gnuplot/0001-configure-add-without-demo-option.patch b/package/gnuplot/0001-configure-add-without-demo-option.patch index a557e279bc..4eb9833fe7 100644 --- a/package/gnuplot/0001-configure-add-without-demo-option.patch +++ b/package/gnuplot/0001-configure-add-without-demo-option.patch @@ -8,32 +8,19 @@ Signed-off-by: Thomas Petazzoni Signed-off-by: Vicente Olivert Riera [Michael: adapt patch to 5.4.0 version] Signed-off-by: Michael Fischer +[Michael: adapt patch to 6.0.0 version] +Signed-off-by: Michael Fischer -diff -Naur a/configure.ac b/configure.ac ---- a/configure.ac 2020-07-12 02:29:47.000000000 +0200 -+++ b/configure.ac 2020-08-06 14:21:17.918756893 +0200 -@@ -713,6 +713,17 @@ - [ Define if you want to read .gnuplot from current directory (SECURITY RISK!).]) - fi +--- a/configure.ac 2023-12-19 00:28:58.000000000 +0100 ++++ b/configure.ac 2024-05-13 15:41:18.313920528 +0200 +@@ -715,6 +715,32 @@ + + dnl Process rest of with and enable options +dnl Whether we want to build the doc files +dnl Does nothing here, is passed on to the doc subdir +AC_ARG_ENABLE(doc,dnl +[ --disable-doc do not build doc files]) -+ -+dnl Whether we want to build the demo files -+dnl Does nothing here, is passed on to the demo subdir -+AC_ARG_ENABLE(demo,dnl -+[ --disable-demo do not build demo files]) -+ -+ - dnl Sort help/subtopic tables by row or column - AC_ARG_WITH(row-help,dnl - [ --with-row-help format help and subtopic tables by row (default) -@@ -1095,6 +1106,24 @@ - AC_DEFINE_UNQUOTED([DIST_CONTACT],["$DIST_CONTACT"],[Contact address for modified and binary distributed gnuplot versions]) - fi - +dnl build doc files +if test "$enable_doc" != no; then + AC_CONFIG_SUBDIRS(docs) @@ -43,6 +30,10 @@ diff -Naur a/configure.ac b/configure.ac +fi +AC_SUBST(DOCSUBDIR) + ++dnl Whether we want to build the demo files ++dnl Does nothing here, is passed on to the demo subdir ++AC_ARG_ENABLE(demo,dnl ++[ --disable-demo do not build demo files]) +dnl build demo files +if test "$enable_demo" != no; then + AC_CONFIG_SUBDIRS(demo) @@ -52,12 +43,11 @@ diff -Naur a/configure.ac b/configure.ac +fi +AC_SUBST(DEMOSUBDIR) + - dnl Substitute variables - AC_SUBST(PACKAGE) - AC_SUBST(VERSION_MAJOR) -diff -Naur a/Makefile.am b/Makefile.am ---- a/Makefile.am 2020-03-31 19:28:16.000000000 +0200 -+++ b/Makefile.am 2020-08-06 14:34:12.995097799 +0200 + dnl without-extra-coordinate may leave a hole in "struct coordinate" + AC_ARG_WITH(extra-coordinate,dnl + [ --without-extra-coordinate leave possible hole in struct coordinate],,) +--- a/Makefile.am 2023-12-19 00:28:58.000000000 +0100 ++++ b/Makefile.am 2024-05-13 15:54:21.189906680 +0200 @@ -1,7 +1,7 @@ ## Process this file with automake to produce Makefile.in -*-Makefile-*- AUTOMAKE_OPTIONS = foreign diff --git a/package/gnuplot/gnuplot.hash b/package/gnuplot/gnuplot.hash index 39dacd50a4..dd587a8220 100644 --- a/package/gnuplot/gnuplot.hash +++ b/package/gnuplot/gnuplot.hash @@ -1,6 +1,6 @@ -# From https://sourceforge.net/projects/gnuplot/files/gnuplot/5.4.10/ -md5 334851e63450362bdb95e67fa8a23665 gnuplot-5.4.10.tar.gz -sha1 9981e5b0111c07d376deef571ccc75ce4b4ebbd2 gnuplot-5.4.10.tar.gz +# From https://sourceforge.net/projects/gnuplot/files/gnuplot/6.0.0/ +md5 10246eb96bbf3a151d6eb9bbcc223e4e gnuplot-6.0.0.tar.gz +sha1 3abea0cccad89b0c8fb6619ad51b83a971ee24b9 gnuplot-6.0.0.tar.gz # Locally computed -sha256 975d8c1cc2c41c7cedc4e323aff035d977feb9a97f0296dd2a8a66d197a5b27c gnuplot-5.4.10.tar.gz +sha256 635a28f0993f6ab0d1179e072ad39b8139d07f51237f841d93c6c2ff4b1758ec gnuplot-6.0.0.tar.gz sha256 895928ec0735cca1c8cec42656c7e314a065d0242813bb8693c0c1bf61fd4e4d Copyright diff --git a/package/gnuplot/gnuplot.mk b/package/gnuplot/gnuplot.mk index 91e9bfb9bf..26b2daaf24 100644 --- a/package/gnuplot/gnuplot.mk +++ b/package/gnuplot/gnuplot.mk @@ -4,7 +4,7 @@ # ################################################################################ -GNUPLOT_VERSION = 5.4.10 +GNUPLOT_VERSION = 6.0.0 GNUPLOT_SITE = http://downloads.sourceforge.net/project/gnuplot/gnuplot/$(GNUPLOT_VERSION) GNUPLOT_LICENSE = gnuplot license (open source) GNUPLOT_LICENSE_FILES = Copyright From thomas.petazzoni at bootlin.com Mon May 13 19:47:07 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:47:07 +0200 Subject: [Buildroot] [PATCH] package/gnuplot: bump version to 6.0.0 In-Reply-To: <20240513142612.21594-1-mf@go-sys.de> References: <20240513142612.21594-1-mf@go-sys.de> Message-ID: <20240513214707.510b8f00@windsurf> On Mon, 13 May 2024 16:26:12 +0200 Michael Fischer wrote: > 0001-configure-add-without-demo-option: adapt patch to 6.0.0 version It would be very nice to submit this patch to the upstream gnuplot maintainers :-) > Signed-off-by: Michael Fischer Nevertheless, patch applied, thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 19:48:47 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:48:47 +0200 Subject: [Buildroot] [git commit] package/duma: set HOST_CFLAGS Message-ID: <20240513194859.7ADC687121@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=b8c70f67017ebe08459992ac575ae4989243c232 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Set HOST_CFLAGS to avoid the following build failure raised since bump to version 2.5.21 in commit af2cd694e3903131d6e2f00646adfa83a89a23e2: /usr/bin/gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -mlongcalls -mauto-litpools -O2 -g0 -c createconf.c -o createconf.o gcc: error: unrecognized command-line option '-mlongcalls' gcc: error: unrecognized command-line option '-mauto-litpools' Fixes: af2cd694e3903131d6e2f00646adfa83a89a23e2 - http://autobuild.buildroot.org/results/28be2acc6d58754c7431df81d0b63b30e6af8554 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/duma/duma.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/package/duma/duma.mk b/package/duma/duma.mk index 6bbdf41f4a..80fe8a5d64 100644 --- a/package/duma/duma.mk +++ b/package/duma/duma.mk @@ -20,6 +20,7 @@ define DUMA_BUILD_CMDS $(TARGET_MAKE_ENV) $(MAKE1) $(TARGET_CONFIGURE_OPTS) \ OS=linux \ DUMA_OPTIONS="$(DUMA_OPTIONS)" \ + HOST_CFLAGS="$(HOST_CFLAGS)" \ CPPFLAGS="$(TARGET_CXXFLAGS) -std=c++11" -C $(@D) endef From thomas.petazzoni at bootlin.com Mon May 13 19:48:58 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:48:58 +0200 Subject: [Buildroot] [PATCH 1/1] package/duma: set HOST_CFLAGS In-Reply-To: <20240512203452.836377-1-fontaine.fabrice@gmail.com> References: <20240512203452.836377-1-fontaine.fabrice@gmail.com> Message-ID: <20240513214858.0d76a1ff@windsurf> On Sun, 12 May 2024 22:34:52 +0200 Fabrice Fontaine wrote: > Set HOST_CFLAGS to avoid the following build failure raised since bump > to version 2.5.21 in commit af2cd694e3903131d6e2f00646adfa83a89a23e2: > > /usr/bin/gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -mlongcalls -mauto-litpools -O2 -g0 -c createconf.c -o createconf.o > gcc: error: unrecognized command-line option '-mlongcalls' > gcc: error: unrecognized command-line option '-mauto-litpools' > > Fixes: af2cd694e3903131d6e2f00646adfa83a89a23e2 > - http://autobuild.buildroot.org/results/28be2acc6d58754c7431df81d0b63b30e6af8554 > > Signed-off-by: Fabrice Fontaine > --- > package/duma/duma.mk | 1 + > 1 file changed, 1 insertion(+) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From ju.o at free.fr Mon May 13 19:54:57 2024 From: ju.o at free.fr (Julien Olivain) Date: Mon, 13 May 2024 21:54:57 +0200 Subject: [Buildroot] [PATCH] package/gnuplot: bump version to 6.0.0 In-Reply-To: <20240513142612.21594-1-mf@go-sys.de> References: <20240513142612.21594-1-mf@go-sys.de> Message-ID: <539ed29ae939926055a69e93fe984721@free.fr> Hi Michael, Thanks for your patch! Testing this patch on branch master at commit bd4efc8 with the command: support/testing/run-tests \ -k -d dl -o output_folder \ tests.package.test_gnuplot fails with output: /buildroot/output_folder/TestGnuplot/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-gnueabi/12.3.0/../../.. /../arm-buildroot-linux-gnueabi/bin/ld: history.o: in function 'read_history': history.c:(.text+0x78): undefined reference to 'gp_read_history' Removing --disable-history-file in GNUPLOT_CONF_OPTS workaround the issue. Maybe this is an upstream bug? Could you investigate this please? On 13/05/2024 16:26, Michael Fischer wrote: > 0001-configure-add-without-demo-option: adapt patch to 6.0.0 version > > Signed-off-by: Michael Fischer > --- > ...01-configure-add-without-demo-option.patch | 42 +++++++------------ > package/gnuplot/gnuplot.hash | 8 ++-- > package/gnuplot/gnuplot.mk | 2 +- > 3 files changed, 21 insertions(+), 31 deletions(-) > > diff --git > a/package/gnuplot/0001-configure-add-without-demo-option.patch > b/package/gnuplot/0001-configure-add-without-demo-option.patch > index a557e279bc..4eb9833fe7 100644 > --- a/package/gnuplot/0001-configure-add-without-demo-option.patch > +++ b/package/gnuplot/0001-configure-add-without-demo-option.patch > @@ -8,32 +8,19 @@ Signed-off-by: Thomas Petazzoni > > Signed-off-by: Vicente Olivert Riera > [Michael: adapt patch to 5.4.0 version] > Signed-off-by: Michael Fischer > +[Michael: adapt patch to 6.0.0 version] > +Signed-off-by: Michael Fischer > > -diff -Naur a/configure.ac b/configure.ac > ---- a/configure.ac 2020-07-12 02:29:47.000000000 +0200 > -+++ b/configure.ac 2020-08-06 14:21:17.918756893 +0200 > -@@ -713,6 +713,17 @@ > - [ Define if you want to read .gnuplot from current > directory (SECURITY RISK!).]) > - fi > +--- a/configure.ac 2023-12-19 00:28:58.000000000 +0100 > ++++ b/configure.ac 2024-05-13 15:41:18.313920528 +0200 > +@@ -715,6 +715,32 @@ > + > + dnl Process rest of with and enable options > > +dnl Whether we want to build the doc files > +dnl Does nothing here, is passed on to the doc subdir > +AC_ARG_ENABLE(doc,dnl > +[ --disable-doc do not build doc files]) > -+ > -+dnl Whether we want to build the demo files > -+dnl Does nothing here, is passed on to the demo subdir > -+AC_ARG_ENABLE(demo,dnl > -+[ --disable-demo do not build demo files]) > -+ > -+ > - dnl Sort help/subtopic tables by row or column > - AC_ARG_WITH(row-help,dnl > - [ --with-row-help format help and subtopic tables by row > (default) > -@@ -1095,6 +1106,24 @@ > - AC_DEFINE_UNQUOTED([DIST_CONTACT],["$DIST_CONTACT"],[Contact > address for modified and binary distributed gnuplot versions]) > - fi > - > +dnl build doc files > +if test "$enable_doc" != no; then > + AC_CONFIG_SUBDIRS(docs) > @@ -43,6 +30,10 @@ diff -Naur a/configure.ac b/configure.ac > +fi > +AC_SUBST(DOCSUBDIR) > + > ++dnl Whether we want to build the demo files > ++dnl Does nothing here, is passed on to the demo subdir > ++AC_ARG_ENABLE(demo,dnl > ++[ --disable-demo do not build demo files]) > +dnl build demo files > +if test "$enable_demo" != no; then > + AC_CONFIG_SUBDIRS(demo) > @@ -52,12 +43,11 @@ diff -Naur a/configure.ac b/configure.ac > +fi > +AC_SUBST(DEMOSUBDIR) > + > - dnl Substitute variables > - AC_SUBST(PACKAGE) > - AC_SUBST(VERSION_MAJOR) > -diff -Naur a/Makefile.am b/Makefile.am > ---- a/Makefile.am 2020-03-31 19:28:16.000000000 +0200 > -+++ b/Makefile.am 2020-08-06 14:34:12.995097799 +0200 > + dnl without-extra-coordinate may leave a hole in "struct coordinate" > + AC_ARG_WITH(extra-coordinate,dnl > + [ --without-extra-coordinate leave possible hole in struct > coordinate],,) > +--- a/Makefile.am 2023-12-19 00:28:58.000000000 +0100 > ++++ b/Makefile.am 2024-05-13 15:54:21.189906680 +0200 > @@ -1,7 +1,7 @@ > ## Process this file with automake to produce Makefile.in > -*-Makefile-*- > AUTOMAKE_OPTIONS = foreign > diff --git a/package/gnuplot/gnuplot.hash > b/package/gnuplot/gnuplot.hash > index 39dacd50a4..dd587a8220 100644 > --- a/package/gnuplot/gnuplot.hash > +++ b/package/gnuplot/gnuplot.hash > @@ -1,6 +1,6 @@ > -# From https://sourceforge.net/projects/gnuplot/files/gnuplot/5.4.10/ > -md5 334851e63450362bdb95e67fa8a23665 gnuplot-5.4.10.tar.gz > -sha1 9981e5b0111c07d376deef571ccc75ce4b4ebbd2 gnuplot-5.4.10.tar.gz > +# From https://sourceforge.net/projects/gnuplot/files/gnuplot/6.0.0/ > +md5 10246eb96bbf3a151d6eb9bbcc223e4e gnuplot-6.0.0.tar.gz > +sha1 3abea0cccad89b0c8fb6619ad51b83a971ee24b9 gnuplot-6.0.0.tar.gz > # Locally computed > -sha256 > 975d8c1cc2c41c7cedc4e323aff035d977feb9a97f0296dd2a8a66d197a5b27c > gnuplot-5.4.10.tar.gz > +sha256 > 635a28f0993f6ab0d1179e072ad39b8139d07f51237f841d93c6c2ff4b1758ec > gnuplot-6.0.0.tar.gz > sha256 > 895928ec0735cca1c8cec42656c7e314a065d0242813bb8693c0c1bf61fd4e4d > Copyright > diff --git a/package/gnuplot/gnuplot.mk b/package/gnuplot/gnuplot.mk > index 91e9bfb9bf..26b2daaf24 100644 > --- a/package/gnuplot/gnuplot.mk > +++ b/package/gnuplot/gnuplot.mk > @@ -4,7 +4,7 @@ > # > > ################################################################################ > > -GNUPLOT_VERSION = 5.4.10 > +GNUPLOT_VERSION = 6.0.0 > GNUPLOT_SITE = > http://downloads.sourceforge.net/project/gnuplot/gnuplot/$(GNUPLOT_VERSION) > GNUPLOT_LICENSE = gnuplot license (open source) > GNUPLOT_LICENSE_FILES = Copyright > -- > 2.20.1 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot Best regards, Julien. From thomas.petazzoni at bootlin.com Mon May 13 19:50:21 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:50:21 +0200 Subject: [Buildroot] [git commit] package/gcc-bare-metal: bump to gcc 14.1.0 Message-ID: <20240513195730.E184187132@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=67855e77c18949727e740571550a22495c1e8675 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master See here for changes: https://gcc.gnu.org/gcc-14/changes.html Signed-off-by: Neal Frager Signed-off-by: Thomas Petazzoni --- package/gcc-bare-metal/13.2.0 | 1 - package/gcc-bare-metal/14.1.0 | 1 + package/gcc-bare-metal/gcc-bare-metal.mk | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/gcc-bare-metal/13.2.0 b/package/gcc-bare-metal/13.2.0 deleted file mode 120000 index b7a75dc7dd..0000000000 --- a/package/gcc-bare-metal/13.2.0 +++ /dev/null @@ -1 +0,0 @@ -../gcc/13.2.0/ \ No newline at end of file diff --git a/package/gcc-bare-metal/14.1.0 b/package/gcc-bare-metal/14.1.0 new file mode 120000 index 0000000000..e519bfb6fd --- /dev/null +++ b/package/gcc-bare-metal/14.1.0 @@ -0,0 +1 @@ +../gcc/14.1.0/ \ No newline at end of file diff --git a/package/gcc-bare-metal/gcc-bare-metal.mk b/package/gcc-bare-metal/gcc-bare-metal.mk index 0dfc8d7a5c..2f36b49125 100644 --- a/package/gcc-bare-metal/gcc-bare-metal.mk +++ b/package/gcc-bare-metal/gcc-bare-metal.mk @@ -4,7 +4,7 @@ # ################################################################################ -HOST_GCC_BARE_METAL_VERSION = 13.2.0 +HOST_GCC_BARE_METAL_VERSION = 14.1.0 HOST_GCC_BARE_METAL_SITE = \ https://ftp.gnu.org/gnu/gcc/gcc-$(HOST_GCC_BARE_METAL_VERSION) HOST_GCC_BARE_METAL_SOURCE = gcc-$(HOST_GCC_BARE_METAL_VERSION).tar.xz From thomas.petazzoni at bootlin.com Mon May 13 19:50:07 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:50:07 +0200 Subject: [Buildroot] [git commit] package/newlib-bare-metal: add patch for gcc 14.1.0 Message-ID: <20240513195730.D5D0887131@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=b55d22f822d179ba25b630b50e98e6eeaffbdcfe branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master This patch is needed for building newlib with gcc 14.1.0. Without this patch, the following build error will occur: ../../.././libgloss/microblaze/linux-outbyte.c: In function 'outbyte': ../../.././libgloss/microblaze/linux-outbyte.c:3:9: error: implicit declaration of function '_write' [-Wimplicit-function-declaration] 3 | _write(1, &c, 1); This patch has been submitted upstream: https://patchwork.sourceware.org/project/newlib/patch/20240513062419.2042278-1-neal.frager at amd.com/ Signed-off-by: Neal Frager Signed-off-by: Thomas Petazzoni --- ...-microblaze-fix-read-and-_write-declarati.patch | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/package/newlib-bare-metal/0001-libgloss-microblaze-fix-read-and-_write-declarati.patch b/package/newlib-bare-metal/0001-libgloss-microblaze-fix-read-and-_write-declarati.patch new file mode 100644 index 0000000000..5eacfd3270 --- /dev/null +++ b/package/newlib-bare-metal/0001-libgloss-microblaze-fix-read-and-_write-declarati.patch @@ -0,0 +1,40 @@ +From 1ebecb83607e9c0cc44ad1e518169ae03c0f2d26 Mon Sep 17 00:00:00 2001 +From: Neal Frager +Date: Mon, 13 May 2024 07:22:47 +0100 +Subject: [PATCH] libgloss: microblaze: fix read and _write declarations + +This patch resolves the following build error which occurs with gcc 14.1.0: +../../.././libgloss/microblaze/linux-outbyte.c: In function 'outbyte': +../../.././libgloss/microblaze/linux-outbyte.c:3:9: error: implicit declaration of function '_write' [-Wimplicit-function-declaration] + 3 | _write(1, &c, 1); + +Signed-off-by: Neal Frager +Upstream: https://patchwork.sourceware.org/project/newlib/patch/20240513062419.2042278-1-neal.frager at amd.com/ +--- + libgloss/microblaze/linux-inbyte.c | 2 ++ + libgloss/microblaze/linux-outbyte.c | 2 ++ + 2 files changed, 4 insertions(+) + +diff --git a/libgloss/microblaze/linux-inbyte.c b/libgloss/microblaze/linux-inbyte.c +index 58fdf1957..2f8d33871 100644 +--- a/libgloss/microblaze/linux-inbyte.c ++++ b/libgloss/microblaze/linux-inbyte.c +@@ -1,3 +1,5 @@ ++extern int read (int, char *, int); ++ + int inbyte(void) + { + char ch = 0; +diff --git a/libgloss/microblaze/linux-outbyte.c b/libgloss/microblaze/linux-outbyte.c +index 9d7bc4890..46de511f6 100644 +--- a/libgloss/microblaze/linux-outbyte.c ++++ b/libgloss/microblaze/linux-outbyte.c +@@ -1,3 +1,5 @@ ++extern int _write (int, char *, int); ++ + void outbyte (unsigned char c) + { + _write(1, &c, 1); +-- +2.25.1 + From thomas.petazzoni at bootlin.com Mon May 13 19:58:47 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:58:47 +0200 Subject: [Buildroot] [PATCH v1 1/2] package/newlib-bare-metal: add patch for gcc 14.1.0 In-Reply-To: <20240513064039.2091596-1-neal.frager@amd.com> References: <20240513064039.2091596-1-neal.frager@amd.com> Message-ID: <20240513215847.175987ed@windsurf> Hello, On Mon, 13 May 2024 07:40:38 +0100 Neal Frager via buildroot wrote: > This patch is needed for building newlib with gcc 14.1.0. Without this patch, > the following build error will occur: > > ../../.././libgloss/microblaze/linux-outbyte.c: In function 'outbyte': > ../../.././libgloss/microblaze/linux-outbyte.c:3:9: error: implicit declaration of function '_write' [-Wimplicit-function-declaration] > 3 | _write(1, &c, 1); > > This patch has been submitted upstream: > https://patchwork.sourceware.org/project/newlib/patch/20240513062419.2042278-1-neal.frager at amd.com/ > > Signed-off-by: Neal Frager > --- > ...oblaze-fix-read-and-_write-declarati.patch | 39 +++++++++++++++++++ > 1 file changed, 39 insertions(+) > create mode 100644 package/newlib-bare-metal/4.4.0.20231231/0001-libgloss-microblaze-fix-read-and-_write-declarati.patch > > diff --git a/package/newlib-bare-metal/4.4.0.20231231/0001-libgloss-microblaze-fix-read-and-_write-declarati.patch b/package/newlib-bare-metal/4.4.0.20231231/0001-libgloss-microblaze-fix-read-and-_write-declarati.patch > new file mode 100644 > index 0000000000..8901f60c3c > --- /dev/null > +++ b/package/newlib-bare-metal/4.4.0.20231231/0001-libgloss-microblaze-fix-read-and-_write-declarati.patch This patch should have been directly in package/newlib-bare-metal/, there is no need for a per-version directory. Such subdirectories are only needed when multiple versions of the package are supported (gcc, binutils, gdb, etc.) but not for normal packages that have a fixed version. > @@ -0,0 +1,39 @@ > +From 1ebecb83607e9c0cc44ad1e518169ae03c0f2d26 Mon Sep 17 00:00:00 2001 > +From: Neal Frager > +Date: Mon, 13 May 2024 07:22:47 +0100 > +Subject: [PATCH] libgloss: microblaze: fix read and _write declarations > + > +This patch resolves the following build error which occurs with gcc 14.1.0: > +../../.././libgloss/microblaze/linux-outbyte.c: In function 'outbyte': > +../../.././libgloss/microblaze/linux-outbyte.c:3:9: error: implicit declaration of function '_write' [-Wimplicit-function-declaration] > + 3 | _write(1, &c, 1); > + > +Signed-off-by: Neal Frager The "Upstream:" tag was missing here, and this issue was reported by "make check-package": WARNING: package/newlib-bare-metal/4.4.0.20231231/0001-libgloss-microblaze-fix-read-and-_write-declarati.patch:0: missing Upstream in the header (https://nightly.buildroot.org/#_additional_patch_documentation) I fixed both issues and applied. Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 19:58:55 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:58:55 +0200 Subject: [Buildroot] [PATCH v1 2/2] package/gcc-bare-metal: bump to gcc 14.1.0 In-Reply-To: <20240513064039.2091596-2-neal.frager@amd.com> References: <20240513064039.2091596-1-neal.frager@amd.com> <20240513064039.2091596-2-neal.frager@amd.com> Message-ID: <20240513215855.35919b41@windsurf> On Mon, 13 May 2024 07:40:39 +0100 Neal Frager via buildroot wrote: > See here for changes: > https://gcc.gnu.org/gcc-14/changes.html > > Signed-off-by: Neal Frager > --- > package/gcc-bare-metal/13.2.0 | 1 - > package/gcc-bare-metal/14.1.0 | 1 + > package/gcc-bare-metal/gcc-bare-metal.mk | 2 +- > 3 files changed, 2 insertions(+), 2 deletions(-) > delete mode 120000 package/gcc-bare-metal/13.2.0 > create mode 120000 package/gcc-bare-metal/14.1.0 Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 19:59:25 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:59:25 +0200 Subject: [Buildroot] [PATCH] package/uclibc: fix compile with gcc 14.x In-Reply-To: References: Message-ID: <20240513215925.54d80174@windsurf> On Mon, 13 May 2024 10:17:09 +0200 Waldemar Brodkorb wrote: > Add missing header file. > > Fixes: > http://autobuild.buildroot.net/results/e022040c15e1b1aebc539a0ca0e00b5a1888ccfe > > Signed-off-by: Waldemar Brodkorb > --- > .../0001-futimesat-add-missing-header.patch | 26 +++++++++++++++++++ > 1 file changed, 26 insertions(+) > create mode 100644 package/uclibc/0001-futimesat-add-missing-header.patch Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 19:59:15 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 21:59:15 +0200 Subject: [Buildroot] [git commit] package/uclibc: fix compile with gcc 14.x Message-ID: <20240513195929.4C50787135@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=682b61b5b1557a5006521e513fd3cf1f50a9a439 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Add missing header file. Fixes: http://autobuild.buildroot.net/results/e022040c15e1b1aebc539a0ca0e00b5a1888ccfe Signed-off-by: Waldemar Brodkorb Signed-off-by: Thomas Petazzoni --- .../uclibc/0001-futimesat-add-missing-header.patch | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/package/uclibc/0001-futimesat-add-missing-header.patch b/package/uclibc/0001-futimesat-add-missing-header.patch new file mode 100644 index 0000000000..f8af3290fa --- /dev/null +++ b/package/uclibc/0001-futimesat-add-missing-header.patch @@ -0,0 +1,26 @@ +From 4bcf25e75df857806623ff80924675bf849a60d2 Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Wed, 8 May 2024 10:08:08 +0200 +Subject: [PATCH] futimesat: add missing header + +Signed-off-by: Waldemar Brodkorb +Upstream: https://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/commit/?id=4bcf25e75df857806623ff80924675bf849a60d2 +--- + libc/sysdeps/linux/common/futimesat.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/libc/sysdeps/linux/common/futimesat.c b/libc/sysdeps/linux/common/futimesat.c +index fd19fea7c..bf36550dd 100644 +--- a/libc/sysdeps/linux/common/futimesat.c ++++ b/libc/sysdeps/linux/common/futimesat.c +@@ -7,6 +7,7 @@ + */ + + #include ++#include + #include + + #ifdef __NR_futimesat +-- +2.30.2 + From nick.whitlock at eizo.com Mon May 13 20:03:56 2024 From: nick.whitlock at eizo.com (nick.whitlock at eizo.com) Date: Mon, 13 May 2024 20:03:56 +0000 Subject: [Buildroot] [External] - [PATCH] package/nvidia-driver: bump version to 550.78 In-Reply-To: References: <20240513155907.104270-1-nick.whitlock@eizo.com> Message-ID: Hello, If a selectable (or user-enterable) version number is the consensus, then I'm all for that. There isn't currently a way to use recent NVIDIA discrete GPUs (read: Ampere and up) for GPGPU in embedded spaces until this gets resolved though. -----Original Message----- From: Vincent Fazio Sent: Monday, May 13, 2024 2:03 PM To: ERS Nick Whitlock ; buildroot at buildroot.org Cc: Yann E. MORIN Subject: RE: [External] - [Buildroot] [PATCH] package/nvidia-driver: bump version to 550.78 Nick, All, > -----Original Message----- > From: buildroot On Behalf Of Nick > Whitlock > Sent: Monday, May 13, 2024 10:59 AM > To: buildroot at buildroot.org > Cc: Yann E. MORIN ; Nick Whitlock > > Subject: [External] - [Buildroot] [PATCH] package/nvidia-driver: bump > version to 550.78 > > The NVIDIA drivers now have 64-bit and 32-bit versions bundled into > one .run file. > I believe this was always the case. See the /32 folder in the x86_64 run files for 390.x > A configuration value was also added to check if the user wants to > install GTK integration for the NVIDIA driver. > > The legacy version of libGL.so was removed in favor of the vendor > neutral version. > > This has been confirmed to work on kernel 6.1.4. > > Signed-off-by: Nick Whitlock > --- > package/nvidia-driver/Config.in | 3 ++ > package/nvidia-driver/nvidia-driver.hash | 7 ++- > package/nvidia-driver/nvidia-driver.mk | 69 +++++++++++++----------- > 3 files changed, 43 insertions(+), 36 deletions(-) > > diff --git a/package/nvidia-driver/Config.in > b/package/nvidia-driver/Config.in index a8617a939b..0fcce93e28 100644 > --- a/package/nvidia-driver/Config.in > +++ b/package/nvidia-driver/Config.in > @@ -90,4 +90,7 @@ config BR2_PACKAGE_NVIDIA_DRIVER_MODULE > provides Unified Memory access to the GPU and CPU memories for > CUDA programs. > > +config BR2_PACKAGE_NVIDIA_DRIVER_GTK > + bool "nvidia GTK acceleration" > + > endif # BR2_PACKAGE_NVIDIA_DRIVER > diff --git a/package/nvidia-driver/nvidia-driver.hash > b/package/nvidia- driver/nvidia-driver.hash index > 620112e6c8..06e3314d53 100644 > --- a/package/nvidia-driver/nvidia-driver.hash > +++ b/package/nvidia-driver/nvidia-driver.hash > @@ -1,4 +1,3 @@ > -# Locally computed > -sha256 > 94e399b459659c12b1344e8c8f4f5eee1ed5915ff459fc8bb831c9e1d44677 > db NVIDIA-Linux-x86-390.151.run > -sha256 > 6e4fd2258465f5d5527fe80abd46de925a30348b4a84658498a6d75caf42c4 > 7c NVIDIA-Linux-x86_64-390.151-no-compat32.run > -sha256 > bd28b0c5aeeb00eb11d3ec6f6f3449d4b3a40100914258332734a53527997 > 526 LICENSE > +# Locally computed: > +sha256 > 34070434527ec9d575483e7f11ca078e467e73f6defc54366ecfbdcfe4a3bf7 > 3 NVIDIA-Linux-x86_64-550.78.run > +sha256 > 5ac626496a6388d37cdd53e0300525267a4b8c89fb5980da060783afd561faf > 7 LICENSE > diff --git a/package/nvidia-driver/nvidia-driver.mk b/package/nvidia- > driver/nvidia-driver.mk index f1217b00aa..9ea97a2a9f 100644 > --- a/package/nvidia-driver/nvidia-driver.mk > +++ b/package/nvidia-driver/nvidia-driver.mk > @@ -4,10 +4,9 @@ > # > > ############################################################ > #################### > > -NVIDIA_DRIVER_VERSION = 390.151 > -NVIDIA_DRIVER_SUFFIX = $(if $(BR2_x86_64),_64) -NVIDIA_DRIVER_SITE = > http://download.nvidia.com/XFree86/Linux- > x86$(NVIDIA_DRIVER_SUFFIX)/$(NVIDIA_DRIVER_VERSION) > -NVIDIA_DRIVER_SOURCE = NVIDIA-Linux-x86$(NVIDIA_DRIVER_SUFFIX)- > $(NVIDIA_DRIVER_VERSION)$(if $(BR2_x86_64),-no-compat32).run I think we did this so that 32bit builds didn't need to: 1) fetch the 64bit bundle 2) handle the /32 subdirectory based on the target bitness If we used the installer's native logic, IIRC, it would install both 32bit and 64bit libraries, hence we stage the files and copy out what we need. > +NVIDIA_DRIVER_VERSION = 550.78 We had some discussions about a bump a year or two ago and there was never any real consensus about what we should do. The challenge, I think, is that the 5xx series drops support for some common NVIDIA products that may be more likely be used in embedded environments (like some of the Wolf GPU products). https://www.nvidia.com/en-us/drivers/unix/legacy-gpu/ At the time, we discussed having different selectable, but mutually exclusive, driver versions so that users could choose the version that provided support for their GPU. I had intended to do this but never found the time. I was also rewriting the installer to be manifest based but that too stalled due to lack of time. > +NVIDIA_DRIVER_SITE = http://download.nvidia.com/XFree86/Linux- > x86_64/$(NVIDIA_DRIVER_VERSION) > +NVIDIA_DRIVER_SOURCE = NVIDIA-Linux-x86_64- > $(NVIDIA_DRIVER_VERSION).run > NVIDIA_DRIVER_LICENSE = NVIDIA Software License > NVIDIA_DRIVER_LICENSE_FILES = LICENSE NVIDIA_DRIVER_REDISTRIBUTE = NO > @@ -23,30 +22,15 @@ ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_XORG),y) > NVIDIA_DRIVER_DEPENDENCIES += mesa3d-headers xlib_libX11 xlib_libXext > NVIDIA_DRIVER_PROVIDES += libgl libegl libgles > > -# libGL.so.$(NVIDIA_DRIVER_VERSION) is the legacy libGL.so library; > it -# has been replaced with libGL.so.1.0.0. Installing both is > technically -# possible, but great care must be taken to ensure they > do not conflict, -# so that EGL still works. The legacy library > exposes an NVidia-specific -# API, so it should not be needed, except > for legacy, binary-only -# applications (in other words: we don't care). > -# > -# libGL.so.1.0.0 is the new vendor-neutral library, aimed at > replacing -# the old libGL.so.$(NVIDIA_DRIVER_VERSION) library. The > latter contains -# NVidia extensions (which is deemed bad now), while > the former follows -# the newly-introduced vendor-neutral "dispatching" API/ABI: > -# https://github.com/aritger/linux-opengl-abi-proposal/blob/master/linux- > opengl-abi-proposal.txt > -# However, this is not very useful to us, as we don't support > multiple -# GL providers at the same time on the system, which this > proposal is -# aimed at supporting. > -# > -# So we only install the legacy library for now. > NVIDIA_DRIVER_LIBS_GL = \ > libGLX.so.0 \ > - libGL.so.$(NVIDIA_DRIVER_VERSION) \ > + libglxserver_nvidia.so.$(NVIDIA_DRIVER_VERSION) \ > + libGL.so.1.7.0 \ > libGLX_nvidia.so.$(NVIDIA_DRIVER_VERSION) > > NVIDIA_DRIVER_LIBS_EGL = \ > libEGL.so.1.1.0 \ > + libEGL.so.$(NVIDIA_DRIVER_VERSION) \ > libGLdispatch.so.0 \ > libEGL_nvidia.so.$(NVIDIA_DRIVER_VERSION) > > @@ -57,13 +41,18 @@ NVIDIA_DRIVER_LIBS_GLES = \ > libGLESv2_nvidia.so.$(NVIDIA_DRIVER_VERSION) > > NVIDIA_DRIVER_LIBS_MISC = \ > + libnvidia-allocator.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-api.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-cfg.so.$(NVIDIA_DRIVER_VERSION) \ > libnvidia-eglcore.so.$(NVIDIA_DRIVER_VERSION) \ > - libnvidia-egl-wayland.so.1.0.2 \ > + libnvidia-egl-gbm.so.1.1.1 \ > + libnvidia-egl-wayland.so.1.1.13 \ > + libnvidia-wayland-client.so.$(NVIDIA_DRIVER_VERSION) \ > libnvidia-glcore.so.$(NVIDIA_DRIVER_VERSION) \ > libnvidia-glsi.so.$(NVIDIA_DRIVER_VERSION) \ > - tls/libnvidia-tls.so.$(NVIDIA_DRIVER_VERSION) \ > - libvdpau_nvidia.so.$(NVIDIA_DRIVER_VERSION):vdpau/ \ > - libnvidia-ml.so.$(NVIDIA_DRIVER_VERSION) > + libnvidia-glvkspirv.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-ml.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-rtcore.so.$(NVIDIA_DRIVER_VERSION) > > NVIDIA_DRIVER_LIBS += \ > $(NVIDIA_DRIVER_LIBS_GL) \ > @@ -87,13 +76,26 @@ endef > # wants to run a third-party program developed under such an agreement). > ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_PRIVATE_LIBS),y) > NVIDIA_DRIVER_LIBS += \ > + libnvidia-fbc.so.$(NVIDIA_DRIVER_VERSION) \ > libnvidia-ifr.so.$(NVIDIA_DRIVER_VERSION) \ > - libnvidia-fbc.so.$(NVIDIA_DRIVER_VERSION) > + libnvidia-ngx.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-opticalflow.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvoptix.so.$(NVIDIA_DRIVER_VERSION) > +endif > + > +# Include GTK libraries (if required) ifeq > +($(BR2_PACKAGE_NVIDIA_DRIVER_GTK),y) > +NVIDIA_DRIVER_LIBS += \ > + libnvidia-gtk2.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-gtk3.so.$(NVIDIA_DRIVER_VERSION) > endif > > # We refer to the destination path; the origin file has no directory > component NVIDIA_DRIVER_LIBS += \ > nvidia_drv.so:xorg/modules/drivers/ \ > + libnvidia-pkcs11.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-pkcs11-openssl3.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-tls.so.$(NVIDIA_DRIVER_VERSION) \ > libglx.so.$(NVIDIA_DRIVER_VERSION):xorg/modules/extensions/ > > # libglx needs a symlink according to the driver README. It has no > SONAME @@ -107,11 +109,13 @@ endif # X drivers ifeq > ($(BR2_PACKAGE_NVIDIA_DRIVER_CUDA),y) > NVIDIA_DRIVER_LIBS += \ > libcuda.so.$(NVIDIA_DRIVER_VERSION) \ > - libnvidia-compiler.so.$(NVIDIA_DRIVER_VERSION) \ > + libcudadebugger.so.$(NVIDIA_DRIVER_VERSION) \ > libnvcuvid.so.$(NVIDIA_DRIVER_VERSION) \ > - libnvidia-fatbinaryloader.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-encode.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-gpucomp.so.$(NVIDIA_DRIVER_VERSION) \ > + libnvidia-nvvm.so.$(NVIDIA_DRIVER_VERSION) \ > libnvidia-ptxjitcompiler.so.$(NVIDIA_DRIVER_VERSION) \ > - libnvidia-encode.so.$(NVIDIA_DRIVER_VERSION) > + libvdpau_nvidia.so.$(NVIDIA_DRIVER_VERSION) > ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_CUDA_PROGS),y) > NVIDIA_DRIVER_PROGS = nvidia-cuda-mps-control nvidia-cuda-mps-server > endif @@ -152,8 +156,9 @@ endif # BR2_PACKAGE_NVIDIA_DRIVER_MODULE == > y # virtually everywhere, and it is fine enough to provide useful > options. > # Except it can't extract into an existing (even empty) directory. > define NVIDIA_DRIVER_EXTRACT_CMDS > - $(SHELL) $(NVIDIA_DRIVER_DL_DIR)/$(NVIDIA_DRIVER_SOURCE) -- > extract-only --target \ > - $(@D)/tmp-extract > + $(SHELL) $(NVIDIA_DRIVER_DL_DIR)/$(NVIDIA_DRIVER_SOURCE) -- > extract-only \ > + $(if $(BR2_x86_64),--no-install-compat32-libs) \ > + --target $(@D)/tmp-extract > chmod u+w -R $(@D) > mv $(@D)/tmp-extract/* $(@D)/tmp-extract/.manifest $(@D) > rm -rf $(@D)/tmp-extract > -- > 2.43.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot > CAUTION: This email originated from outside of the organization. Do > not click links or open attachments unless you recognize the sender > and know the content is safe. From thomas.petazzoni at bootlin.com Mon May 13 20:01:43 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:01:43 +0200 Subject: [Buildroot] [git commit] package/libsoup3: bump to 3.5.1 Message-ID: <20240513200757.58FA68713C@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=cd2a8827688b2449b0482b79308830739a7746ab branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master News: https://download.gnome.org/sources/libsoup/3.5/libsoup-3.5.1.news. Signed-off-by: Thomas Devoogdt Signed-off-by: Thomas Petazzoni --- package/libsoup3/libsoup3.hash | 4 ++-- package/libsoup3/libsoup3.mk | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/libsoup3/libsoup3.hash b/package/libsoup3/libsoup3.hash index 11e48b42aa..139771a11e 100644 --- a/package/libsoup3/libsoup3.hash +++ b/package/libsoup3/libsoup3.hash @@ -1,4 +1,4 @@ -# From https://download.gnome.org/sources/libsoup/3.4/libsoup-3.4.4.sha256sum -sha256 291c67725f36ed90ea43efff25064b69c5a2d1981488477c05c481a3b4b0c5aa libsoup-3.4.4.tar.xz +# From https://download.gnome.org/sources/libsoup/3.5/libsoup-3.5.1.sha256sum +sha256 c1d7cfb89832d35c271f37d544f2cfe21fa60ae9faad4a7ac58996ae4031f7ba libsoup-3.5.1.tar.xz # Locally calculated sha256 b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c COPYING diff --git a/package/libsoup3/libsoup3.mk b/package/libsoup3/libsoup3.mk index 10caa5bea4..bc3ae4d0cb 100644 --- a/package/libsoup3/libsoup3.mk +++ b/package/libsoup3/libsoup3.mk @@ -4,8 +4,8 @@ # ################################################################################ -LIBSOUP3_VERSION_MAJOR = 3.4 -LIBSOUP3_VERSION = $(LIBSOUP3_VERSION_MAJOR).4 +LIBSOUP3_VERSION_MAJOR = 3.5 +LIBSOUP3_VERSION = $(LIBSOUP3_VERSION_MAJOR).1 LIBSOUP3_SOURCE = libsoup-$(LIBSOUP3_VERSION).tar.xz LIBSOUP3_SITE = https://download.gnome.org/sources/libsoup/$(LIBSOUP3_VERSION_MAJOR) LIBSOUP3_LICENSE = LGPL-2.0+ From thomas.petazzoni at bootlin.com Mon May 13 20:08:32 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:08:32 +0200 Subject: [Buildroot] [PATCH v1] package/libsoup3: bump to 3.5.1 In-Reply-To: References: Message-ID: <20240513220832.069a1b9b@windsurf> On Mon, 13 May 2024 10:24:19 +0200 Thomas Devoogdt wrote: > News: https://download.gnome.org/sources/libsoup/3.5/libsoup-3.5.1.news. > > Signed-off-by: Thomas Devoogdt > --- > package/libsoup3/libsoup3.hash | 4 ++-- > package/libsoup3/libsoup3.mk | 4 ++-- > 2 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/package/libsoup3/libsoup3.hash b/package/libsoup3/libsoup3.hash > index 11e48b42aa..139771a11e 100644 > --- a/package/libsoup3/libsoup3.hash > +++ b/package/libsoup3/libsoup3.hash > @@ -1,4 +1,4 @@ > -# From https://download.gnome.org/sources/libsoup/3.4/libsoup-3.4.4.sha256sum > -sha256 291c67725f36ed90ea43efff25064b69c5a2d1981488477c05c481a3b4b0c5aa > libsoup-3.4.4.tar.xz > +# From https://download.gnome.org/sources/libsoup/3.5/libsoup-3.5.1.sha256sum > +sha256 c1d7cfb89832d35c271f37d544f2cfe21fa60ae9faad4a7ac58996ae4031f7ba > libsoup-3.5.1.tar.xz Your patch was badly line-wrapped. I'm not sure what happened, but most likely you didn't send it with git send-email? Anyway, I fixed that up locally (because the change was small) and applied to master. Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 20:08:41 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:08:41 +0200 Subject: [Buildroot] [git commit] package/libzenoh-pico: bump to version 0.11.0.1 Message-ID: <20240513201004.8655A87143@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=dfdcc8b0af1bd84788282317a4b77d4cc36b0e7c branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master https://github.com/eclipse-zenoh/zenoh-pico/releases/tag/0.11.0.1 Signed-off-by: Alex Michel Signed-off-by: Thomas Petazzoni --- package/libzenoh-pico/libzenoh-pico.hash | 2 +- package/libzenoh-pico/libzenoh-pico.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/libzenoh-pico/libzenoh-pico.hash b/package/libzenoh-pico/libzenoh-pico.hash index 98f804508f..945d0f9aaf 100644 --- a/package/libzenoh-pico/libzenoh-pico.hash +++ b/package/libzenoh-pico/libzenoh-pico.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 7b615515ac844470ec7806921e8106b2923f6c43e242b34f062954de7560b799 libzenoh-pico-0.10.1-rc.tar.gz +sha256 c259da44aa919919d1129b6a46edb05e2f5f2bf2818f73c27f515e443da9fc83 libzenoh-pico-0.11.0.1.tar.gz sha256 d386df32cf327bbb25abe894277d3d7e0f447bafc59f4ad362615b0136f30db5 LICENSE diff --git a/package/libzenoh-pico/libzenoh-pico.mk b/package/libzenoh-pico/libzenoh-pico.mk index 90dfda6c98..86204de14f 100644 --- a/package/libzenoh-pico/libzenoh-pico.mk +++ b/package/libzenoh-pico/libzenoh-pico.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBZENOH_PICO_VERSION = 0.10.1-rc +LIBZENOH_PICO_VERSION = 0.11.0.1 LIBZENOH_PICO_SITE = $(call github,eclipse-zenoh,zenoh-pico,$(LIBZENOH_PICO_VERSION)) LIBZENOH_PICO_LICENSE = Apache-2.0 or EPL-2.0 LIBZENOH_PICO_LICENSE_FILES = LICENSE From thomas.petazzoni at bootlin.com Mon May 13 20:10:06 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:06 +0200 Subject: [Buildroot] [PATCH 1/1] package/libzenoh-pico: bump to version 0.11.0.1 In-Reply-To: References: Message-ID: <20240513221006.415d4883@windsurf> On Mon, 13 May 2024 08:47:55 +0000 Michel Alex wrote: > https://github.com/eclipse-zenoh/zenoh-pico/releases/tag/0.11.0.1 > > Signed-off-by: Alex Michel > --- > package/libzenoh-pico/libzenoh-pico.hash | 2 +- > package/libzenoh-pico/libzenoh-pico.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From buildroot at heine.tech Mon May 13 20:18:29 2024 From: buildroot at heine.tech (Michael Nosthoff) Date: Mon, 13 May 2024 22:18:29 +0200 Subject: [Buildroot] [PATCH] package/spdlog: bump to 1.14.1 Message-ID: <20240513201831.643211-1-buildroot@heine.tech> - Fixed compatibility issue between c++17 and c++11 https://github.com/gabime/spdlog/releases/tag/v1.14.1 Signed-off-by: Michael Nosthoff --- package/spdlog/spdlog.hash | 2 +- package/spdlog/spdlog.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/spdlog/spdlog.hash b/package/spdlog/spdlog.hash index 7a0f442ab0..16d841769d 100644 --- a/package/spdlog/spdlog.hash +++ b/package/spdlog/spdlog.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 429a6b73ade8285cb21f83bacf89e2821dd1720ea7faa3cb518ffe04b4e00efc spdlog-1.14.0.tar.gz +sha256 1586508029a7d0670dfcb2d97575dcdc242d3868a259742b69f100801ab4e16b spdlog-1.14.1.tar.gz sha256 4ccecab18d1ff0b61174fe3d6c430541625d3ddb865b0d5887db296f883c76e7 LICENSE diff --git a/package/spdlog/spdlog.mk b/package/spdlog/spdlog.mk index c435633f41..6b24357697 100644 --- a/package/spdlog/spdlog.mk +++ b/package/spdlog/spdlog.mk @@ -4,7 +4,7 @@ # ################################################################################ -SPDLOG_VERSION = 1.14.0 +SPDLOG_VERSION = 1.14.1 SPDLOG_SITE = $(call github,gabime,spdlog,v$(SPDLOG_VERSION)) SPDLOG_LICENSE = MIT SPDLOG_LICENSE_FILES = LICENSE -- 2.34.1 From thomas.petazzoni at bootlin.com Mon May 13 20:10:43 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:43 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-filmon: bump version to 21.0.1-Omega Message-ID: <20240513203450.2905C87154@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=40557cfec1d07ef314cfbd5f3c1fb31fdc531128 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-filmon/kodi-pvr-filmon.hash | 2 +- package/kodi-pvr-filmon/kodi-pvr-filmon.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-filmon/kodi-pvr-filmon.hash b/package/kodi-pvr-filmon/kodi-pvr-filmon.hash index d606962ff3..16bb884885 100644 --- a/package/kodi-pvr-filmon/kodi-pvr-filmon.hash +++ b/package/kodi-pvr-filmon/kodi-pvr-filmon.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 ba3f0c6f2b46c6b45750e2148a932279c76bb7a1b49eb3299a19817fef3f6b2d kodi-pvr-filmon-21.0.0-Omega.tar.gz +sha256 d0e1f4b32a31aee3e60b2e7b0c64c7a061ca69232cd2feebf5af77ad5f0a6036 kodi-pvr-filmon-21.0.1-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-filmon/kodi-pvr-filmon.mk b/package/kodi-pvr-filmon/kodi-pvr-filmon.mk index 268e9fad4b..2c3eb8a859 100644 --- a/package/kodi-pvr-filmon/kodi-pvr-filmon.mk +++ b/package/kodi-pvr-filmon/kodi-pvr-filmon.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_FILMON_VERSION = 21.0.0-Omega +KODI_PVR_FILMON_VERSION = 21.0.1-Omega KODI_PVR_FILMON_SITE = $(call github,kodi-pvr,pvr.filmon,$(KODI_PVR_FILMON_VERSION)) KODI_PVR_FILMON_LICENSE = GPL-2.0+ KODI_PVR_FILMON_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:10:41 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:41 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-dvbviewer: bump version to 21.1.1-Omega Message-ID: <20240513203450.1E3A187142@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=f184ecce76f84e115c944a5619571e8fb501358c branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.hash | 2 +- package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.hash b/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.hash index 775942a5c8..0fc03619b3 100644 --- a/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.hash +++ b/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 92ac2f2c28f109320c152173b1d814af93d7da8e1c3df19f57f56dce1706818c kodi-pvr-dvbviewer-21.1.0-Omega.tar.gz +sha256 e12d3a930f0b404a0d7d996b962c4cdc9b1477bbfb8f6af4fcbe23ded05e5fff kodi-pvr-dvbviewer-21.1.1-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.mk b/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.mk index 119e3fe0a2..bb08cf3e6a 100644 --- a/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.mk +++ b/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_DVBVIEWER_VERSION = 21.1.0-Omega +KODI_PVR_DVBVIEWER_VERSION = 21.1.1-Omega KODI_PVR_DVBVIEWER_SITE = $(call github,kodi-pvr,pvr.dvbviewer,$(KODI_PVR_DVBVIEWER_VERSION)) KODI_PVR_DVBVIEWER_LICENSE = GPL-2.0+ KODI_PVR_DVBVIEWER_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:10:39 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:39 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-dvblink: bump version to 21.1.1-Omega Message-ID: <20240513203450.1411387153@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=0eba7f42636426a9524c436fb8c7b21bf311046b branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-dvblink/kodi-pvr-dvblink.hash | 2 +- package/kodi-pvr-dvblink/kodi-pvr-dvblink.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-dvblink/kodi-pvr-dvblink.hash b/package/kodi-pvr-dvblink/kodi-pvr-dvblink.hash index b5ffa066d1..36a320290b 100644 --- a/package/kodi-pvr-dvblink/kodi-pvr-dvblink.hash +++ b/package/kodi-pvr-dvblink/kodi-pvr-dvblink.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 30d2c7087931bfe040a0f859a0c8b2bd20a71a1e5496a95eab055b7b3167df64 kodi-pvr-dvblink-21.1.0-Omega.tar.gz +sha256 53799996d1a241d672d4b0c16eccbf3be2a73d5fcad3bb48feef8f35da79f9ec kodi-pvr-dvblink-21.1.1-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-dvblink/kodi-pvr-dvblink.mk b/package/kodi-pvr-dvblink/kodi-pvr-dvblink.mk index d5146dbbaa..ee334fe82f 100644 --- a/package/kodi-pvr-dvblink/kodi-pvr-dvblink.mk +++ b/package/kodi-pvr-dvblink/kodi-pvr-dvblink.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_DVBLINK_VERSION = 21.1.0-Omega +KODI_PVR_DVBLINK_VERSION = 21.1.1-Omega KODI_PVR_DVBLINK_SITE = $(call github,kodi-pvr,pvr.dvblink,$(KODI_PVR_DVBLINK_VERSION)) KODI_PVR_DVBLINK_LICENSE = GPL-2.0+ KODI_PVR_DVBLINK_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:10:48 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:48 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-hts: bump version to 21.2.3-Omega Message-ID: <20240513203450.414FF87142@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=c6cacfba9bf740ddb259187a758fbe0968d67f40 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-hts/kodi-pvr-hts.hash | 2 +- package/kodi-pvr-hts/kodi-pvr-hts.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-hts/kodi-pvr-hts.hash b/package/kodi-pvr-hts/kodi-pvr-hts.hash index 91b7b00f1a..27aa9a0729 100644 --- a/package/kodi-pvr-hts/kodi-pvr-hts.hash +++ b/package/kodi-pvr-hts/kodi-pvr-hts.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 b2694803be78ee65d1ac8c02ae6631ec9798e5a70906b29c610018f9f33bf7fa kodi-pvr-hts-21.2.1-Omega.tar.gz +sha256 3bb04e48e9eca97fbd72b6285b110f3bebbd842ee7017423aa446259763e0d0b kodi-pvr-hts-21.2.3-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-hts/kodi-pvr-hts.mk b/package/kodi-pvr-hts/kodi-pvr-hts.mk index c67118b428..e1531fa1df 100644 --- a/package/kodi-pvr-hts/kodi-pvr-hts.mk +++ b/package/kodi-pvr-hts/kodi-pvr-hts.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_HTS_VERSION = 21.2.1-Omega +KODI_PVR_HTS_VERSION = 21.2.3-Omega KODI_PVR_HTS_SITE = $(call github,kodi-pvr,pvr.hts,$(KODI_PVR_HTS_VERSION)) KODI_PVR_HTS_LICENSE = GPL-2.0+ KODI_PVR_HTS_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:10:52 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:52 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-mediaportal-tvserver: bump version to 21.0.2-Omega Message-ID: <20240513203450.55ACF87156@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=dd93f19f745943c8302845b5abf1617bf92dfbf6 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- .../kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.hash | 2 +- package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.hash b/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.hash index 5ede84083d..a02ddeb6a5 100644 --- a/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.hash +++ b/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 a0034ffcfb42ce4bc8dbd49c5ef354caa7f41e6e061d1a7f3c42618053ebb469 kodi-pvr-mediaportal-tvserver-21.0.0-Omega.tar.gz +sha256 9e8c92b49433f46ae681055762ca4c152481b258c9163a1119c1ca08d7e9fd7c kodi-pvr-mediaportal-tvserver-21.0.2-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.mk b/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.mk index 01c1e38607..62a30e8cfe 100644 --- a/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.mk +++ b/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_MEDIAPORTAL_TVSERVER_VERSION = 21.0.0-Omega +KODI_PVR_MEDIAPORTAL_TVSERVER_VERSION = 21.0.2-Omega KODI_PVR_MEDIAPORTAL_TVSERVER_SITE = $(call github,kodi-pvr,pvr.mediaportal.tvserver,$(KODI_PVR_MEDIAPORTAL_TVSERVER_VERSION)) KODI_PVR_MEDIAPORTAL_TVSERVER_LICENSE = GPL-2.0+ KODI_PVR_MEDIAPORTAL_TVSERVER_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:10:36 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:36 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-argustv: bump version to 21.0.1-Omega Message-ID: <20240513203450.0803487151@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=3b0a4a8f94a852966a63ab0a6d63971a635c3523 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-argustv/kodi-pvr-argustv.hash | 2 +- package/kodi-pvr-argustv/kodi-pvr-argustv.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-argustv/kodi-pvr-argustv.hash b/package/kodi-pvr-argustv/kodi-pvr-argustv.hash index 604b77c5e3..b04554075e 100644 --- a/package/kodi-pvr-argustv/kodi-pvr-argustv.hash +++ b/package/kodi-pvr-argustv/kodi-pvr-argustv.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 61aef981183c1e834b5a3d69fc02b7db5081b6996d7c0a1667d18eb02f655fd0 kodi-pvr-argustv-21.0.0-Omega.tar.gz +sha256 6ab2952690de934d236cf43a3f42ea19337013d88af305dc1df82b5c1235cff0 kodi-pvr-argustv-21.0.1-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-argustv/kodi-pvr-argustv.mk b/package/kodi-pvr-argustv/kodi-pvr-argustv.mk index 582300afb9..38900e5afc 100644 --- a/package/kodi-pvr-argustv/kodi-pvr-argustv.mk +++ b/package/kodi-pvr-argustv/kodi-pvr-argustv.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_ARGUSTV_VERSION = 21.0.0-Omega +KODI_PVR_ARGUSTV_VERSION = 21.0.1-Omega KODI_PVR_ARGUSTV_SITE = $(call github,kodi-pvr,pvr.argustv,$(KODI_PVR_ARGUSTV_VERSION)) KODI_PVR_ARGUSTV_LICENSE = GPL-2.0+ KODI_PVR_ARGUSTV_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:10:34 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:34 +0200 Subject: [Buildroot] [git commit] package/kodi-peripheral-joystick: bump version to 21.1.15-Omega Message-ID: <20240513203449.F07138714E@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=3c5d453df5309c09122e961e100d69c361c2e41d branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-peripheral-joystick/kodi-peripheral-joystick.hash | 2 +- package/kodi-peripheral-joystick/kodi-peripheral-joystick.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-peripheral-joystick/kodi-peripheral-joystick.hash b/package/kodi-peripheral-joystick/kodi-peripheral-joystick.hash index a192ec62b5..9cea40965f 100644 --- a/package/kodi-peripheral-joystick/kodi-peripheral-joystick.hash +++ b/package/kodi-peripheral-joystick/kodi-peripheral-joystick.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 7a06470ba417758126fcb39701b95d0ae51a51951b68a2985d6ba444ab3e9106 kodi-peripheral-joystick-21.1.11-Omega.tar.gz +sha256 b152c6f17291ede48850bf307e6d619ff803e1b26217ccec532d5c49a3ef7b84 kodi-peripheral-joystick-21.1.15-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-peripheral-joystick/kodi-peripheral-joystick.mk b/package/kodi-peripheral-joystick/kodi-peripheral-joystick.mk index 354932fd99..34ea45855e 100644 --- a/package/kodi-peripheral-joystick/kodi-peripheral-joystick.mk +++ b/package/kodi-peripheral-joystick/kodi-peripheral-joystick.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PERIPHERAL_JOYSTICK_VERSION = 21.1.11-Omega +KODI_PERIPHERAL_JOYSTICK_VERSION = 21.1.15-Omega KODI_PERIPHERAL_JOYSTICK_SITE = $(call github,xbmc,peripheral.joystick,$(KODI_PERIPHERAL_JOYSTICK_VERSION)) KODI_PERIPHERAL_JOYSTICK_LICENSE = GPL-2.0+ KODI_PERIPHERAL_JOYSTICK_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:10:32 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:32 +0200 Subject: [Buildroot] [git commit] package/kodi-inputstream-adaptive: bump version to 21.4.7-Omega Message-ID: <20240513203449.E5C4387142@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=ad26932b386390a5a7125304219ae82c700beac1 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.hash | 2 +- package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.hash b/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.hash index b7a89a8a02..85945c9a54 100644 --- a/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.hash +++ b/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.hash @@ -1,5 +1,5 @@ # Locally computed -sha256 0a1074fe04fb7e9500d578490b4cda12ecfcf433495e15e7bf65861527586167 kodi-inputstream-adaptive-21.4.4-Omega.tar.gz +sha256 0b3a78763ffebef64ac05bcf55951f26e334f7ee8bbe042f885dff288eed466e kodi-inputstream-adaptive-21.4.7-Omega.tar.gz sha256 48632d57fbb6ab8f50cbf4deced5c91e733fa7ff292687c4816b77f28e483df9 LICENSE.md sha256 02f864f3e07456785625968022ce811c5640301bfd2ae70963efea89d306790a LICENSES/README.md sha256 0b7f5dcb3d2c28ff78d999786028930e762df0baa2f52955782e378ec5b636a8 LICENSES/BSD-2-Clause-Views diff --git a/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.mk b/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.mk index e1fe3f37ed..5cc02e45c0 100644 --- a/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.mk +++ b/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_INPUTSTREAM_ADAPTIVE_VERSION = 21.4.4-Omega +KODI_INPUTSTREAM_ADAPTIVE_VERSION = 21.4.7-Omega KODI_INPUTSTREAM_ADAPTIVE_SITE = $(call github,xbmc,inputstream.adaptive,$(KODI_INPUTSTREAM_ADAPTIVE_VERSION)) KODI_INPUTSTREAM_ADAPTIVE_LICENSE = \ BSD-2-Clause-Views \ From thomas.petazzoni at bootlin.com Mon May 13 20:10:54 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:54 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-nextpvr: bump version to 21.1.0-Omega Message-ID: <20240513203450.6094B87142@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=96483861123f13f71561b5e62709e2a528d0e214 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.hash | 2 +- package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.hash b/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.hash index 0c4ca8fcd0..5c65af9597 100644 --- a/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.hash +++ b/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 394ccca4c428e71e18cda4debc14d7eba2b4cc098a290a593ffa76a76c55fc90 kodi-pvr-nextpvr-21.0.2-Omega.tar.gz +sha256 220e292c58d22b3064f1ea6a717341d9d004384791aec8b409d6653b91817085 kodi-pvr-nextpvr-21.1.0-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.mk b/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.mk index f3d615f39b..dc2a7703ce 100644 --- a/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.mk +++ b/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_NEXTPVR_VERSION = 21.0.2-Omega +KODI_PVR_NEXTPVR_VERSION = 21.1.0-Omega KODI_PVR_NEXTPVR_SITE = $(call github,kodi-pvr,pvr.nextpvr,$(KODI_PVR_NEXTPVR_VERSION)) KODI_PVR_NEXTPVR_LICENSE = GPL-2.0+ KODI_PVR_NEXTPVR_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:10:56 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:56 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-njoy: bump version to 21.0.1-Omega Message-ID: <20240513203450.6DD8087151@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=af111ed39648b07d26ec3e9b82c44e9ac6db8a23 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-njoy/kodi-pvr-njoy.hash | 2 +- package/kodi-pvr-njoy/kodi-pvr-njoy.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-njoy/kodi-pvr-njoy.hash b/package/kodi-pvr-njoy/kodi-pvr-njoy.hash index b0fc808aee..c99e92bb9d 100644 --- a/package/kodi-pvr-njoy/kodi-pvr-njoy.hash +++ b/package/kodi-pvr-njoy/kodi-pvr-njoy.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 0c570cebbb117bb0ef93692d653782608b332fc2b4b6d1728b5421ccd1457f72 kodi-pvr-njoy-21.0.0-Omega.tar.gz +sha256 e9768f87857374476766ba8d791793b4e8d1e9d3239149b2142a7b5b3f24b439 kodi-pvr-njoy-21.0.1-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-njoy/kodi-pvr-njoy.mk b/package/kodi-pvr-njoy/kodi-pvr-njoy.mk index 47aa357b11..ab0d371c21 100644 --- a/package/kodi-pvr-njoy/kodi-pvr-njoy.mk +++ b/package/kodi-pvr-njoy/kodi-pvr-njoy.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_NJOY_VERSION = 21.0.0-Omega +KODI_PVR_NJOY_VERSION = 21.0.1-Omega KODI_PVR_NJOY_SITE = $(call github,kodi-pvr,pvr.njoy,$(KODI_PVR_NJOY_VERSION)) KODI_PVR_NJOY_LICENSE = GPL-2.0+ KODI_PVR_NJOY_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:11:07 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:11:07 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-vbox: bump version to 21.1.3-Omega Message-ID: <20240513203450.A44BF8714E@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=ea7c97e3ee8b7bd9a7dc0fa9e86d40ebce7f35f9 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-vbox/kodi-pvr-vbox.hash | 2 +- package/kodi-pvr-vbox/kodi-pvr-vbox.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-vbox/kodi-pvr-vbox.hash b/package/kodi-pvr-vbox/kodi-pvr-vbox.hash index a4fc6f48d2..aec8100c77 100644 --- a/package/kodi-pvr-vbox/kodi-pvr-vbox.hash +++ b/package/kodi-pvr-vbox/kodi-pvr-vbox.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 6909016c3d89b5eddae5098b033e0cce1ea3140e05b4175e1c50611add7ab408 kodi-pvr-vbox-21.1.2-Omega.tar.gz +sha256 becc98a7d3bc8e4a78f775a34851ea1d4962e64ee4d63bbf339ac86cf12a4b95 kodi-pvr-vbox-21.1.3-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-vbox/kodi-pvr-vbox.mk b/package/kodi-pvr-vbox/kodi-pvr-vbox.mk index 5da40d13f1..35ff5fa6c9 100644 --- a/package/kodi-pvr-vbox/kodi-pvr-vbox.mk +++ b/package/kodi-pvr-vbox/kodi-pvr-vbox.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_VBOX_VERSION = 21.1.2-Omega +KODI_PVR_VBOX_VERSION = 21.1.3-Omega KODI_PVR_VBOX_SITE = $(call github,kodi-pvr,pvr.vbox,$(KODI_PVR_VBOX_VERSION)) KODI_PVR_VBOX_LICENSE = GPL-2.0+ KODI_PVR_VBOX_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:10:50 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:50 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-iptvsimple: bump version to 21.8.4-Omega Message-ID: <20240513203450.4B81387154@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=0e85738d0d6d38cfb2e5e10fbcee8445e491bcf4 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.hash | 2 +- package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.hash b/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.hash index 784775388d..872efba754 100644 --- a/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.hash +++ b/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 52108d15f8eaa58d7cd6d87947615758ffebcbf87a00090e71384cff4e59d25d kodi-pvr-iptvsimple-21.8.3-Omega.tar.gz +sha256 287d9fe5ca348f70b7fae96be7de0e0f092e9a00a3e8043c67ad24bd77a9a82d kodi-pvr-iptvsimple-21.8.4-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.mk b/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.mk index 5726ba66ed..67db5793d0 100644 --- a/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.mk +++ b/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_IPTVSIMPLE_VERSION = 21.8.3-Omega +KODI_PVR_IPTVSIMPLE_VERSION = 21.8.4-Omega KODI_PVR_IPTVSIMPLE_SITE = $(call github,kodi-pvr,pvr.iptvsimple,$(KODI_PVR_IPTVSIMPLE_VERSION)) KODI_PVR_IPTVSIMPLE_LICENSE = GPL-2.0+ KODI_PVR_IPTVSIMPLE_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:10:58 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:58 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-octonet: bump version to 21.0.1-Omega Message-ID: <20240513203450.77E0B87154@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=467cea48afe10cb4dc804eb3ea7cc544a1a49fce branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-octonet/kodi-pvr-octonet.hash | 2 +- package/kodi-pvr-octonet/kodi-pvr-octonet.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-octonet/kodi-pvr-octonet.hash b/package/kodi-pvr-octonet/kodi-pvr-octonet.hash index 8262476abd..f62f31cecd 100644 --- a/package/kodi-pvr-octonet/kodi-pvr-octonet.hash +++ b/package/kodi-pvr-octonet/kodi-pvr-octonet.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 88d1df996154b1ae08e7c45c78ede3985aef2e3df2c7c3b2958fa3f3c5e241c9 kodi-pvr-octonet-21.0.0-Omega.tar.gz +sha256 4fd97ff7f0fa021a45958dcd1f922e39dbf5e7366732a74caf782621b97aaa07 kodi-pvr-octonet-21.0.1-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-octonet/kodi-pvr-octonet.mk b/package/kodi-pvr-octonet/kodi-pvr-octonet.mk index 938f0721e6..bbcd78f4c5 100644 --- a/package/kodi-pvr-octonet/kodi-pvr-octonet.mk +++ b/package/kodi-pvr-octonet/kodi-pvr-octonet.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_OCTONET_VERSION = 21.0.0-Omega +KODI_PVR_OCTONET_VERSION = 21.0.1-Omega KODI_PVR_OCTONET_SITE = $(call github,DigitalDevices,pvr.octonet,$(KODI_PVR_OCTONET_VERSION)) KODI_PVR_OCTONET_LICENSE = GPL-2.0+ KODI_PVR_OCTONET_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:11:03 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:11:03 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-plutotv: bump version to 21.3.0-Omega Message-ID: <20240513203450.8E35387136@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=10f7309c4f42b4d81edcba261bb996bf8534be00 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-plutotv/kodi-pvr-plutotv.hash | 2 +- package/kodi-pvr-plutotv/kodi-pvr-plutotv.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-plutotv/kodi-pvr-plutotv.hash b/package/kodi-pvr-plutotv/kodi-pvr-plutotv.hash index 199777c255..bb4826ba66 100644 --- a/package/kodi-pvr-plutotv/kodi-pvr-plutotv.hash +++ b/package/kodi-pvr-plutotv/kodi-pvr-plutotv.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 4503cbed48aefa06470a970d7030d67cbdc7236cabd8de15df4a3681827b32e7 kodi-pvr-plutotv-21.1.0-Omega.tar.gz +sha256 fb026664222af3415bb805c4b2c19d1893f9e05a7d089c2d720a495131d1460d kodi-pvr-plutotv-21.3.0-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-plutotv/kodi-pvr-plutotv.mk b/package/kodi-pvr-plutotv/kodi-pvr-plutotv.mk index e2a3a01116..885ef03e0d 100644 --- a/package/kodi-pvr-plutotv/kodi-pvr-plutotv.mk +++ b/package/kodi-pvr-plutotv/kodi-pvr-plutotv.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_PLUTOTV_VERSION = 21.1.0-Omega +KODI_PVR_PLUTOTV_VERSION = 21.3.0-Omega KODI_PVR_PLUTOTV_SITE = $(call github,kodi-pvr,pvr.plutotv,$(KODI_PVR_PLUTOTV_VERSION)) KODI_PVR_PLUTOTV_LICENSE = GPL-2.0+ KODI_PVR_PLUTOTV_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:11:01 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:11:01 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-pctv: bump version to 21.0.1-Omega Message-ID: <20240513203450.81A2D87153@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=5237f33d1272aef7c9d2e78e10f4557057949302 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-pctv/kodi-pvr-pctv.hash | 2 +- package/kodi-pvr-pctv/kodi-pvr-pctv.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-pctv/kodi-pvr-pctv.hash b/package/kodi-pvr-pctv/kodi-pvr-pctv.hash index a0c6a49e73..bc79a194de 100644 --- a/package/kodi-pvr-pctv/kodi-pvr-pctv.hash +++ b/package/kodi-pvr-pctv/kodi-pvr-pctv.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 671dc89b33d4be8b895d44f74856f8ec49cf8cd174f9f7e502b5a5a6951658d6 kodi-pvr-pctv-21.0.0-Omega.tar.gz +sha256 d695032343a096c214a767f8c13d072035dc38cbda2a3305a91bc40ee7cb7770 kodi-pvr-pctv-21.0.1-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-pctv/kodi-pvr-pctv.mk b/package/kodi-pvr-pctv/kodi-pvr-pctv.mk index 82da3a70f8..d7b7b59b4c 100644 --- a/package/kodi-pvr-pctv/kodi-pvr-pctv.mk +++ b/package/kodi-pvr-pctv/kodi-pvr-pctv.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_PCTV_VERSION = 21.0.0-Omega +KODI_PVR_PCTV_VERSION = 21.0.1-Omega KODI_PVR_PCTV_SITE = $(call github,kodi-pvr,pvr.pctv,$(KODI_PVR_PCTV_VERSION)) KODI_PVR_PCTV_LICENSE = GPL-2.0+ KODI_PVR_PCTV_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:11:12 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:11:12 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-vuplus: bump version to 21.1.2-Omega Message-ID: <20240513203450.B827D87153@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=5dd7363e7f58852c231f42049bf3b0454f51d0f0 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-vuplus/kodi-pvr-vuplus.hash | 2 +- package/kodi-pvr-vuplus/kodi-pvr-vuplus.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-vuplus/kodi-pvr-vuplus.hash b/package/kodi-pvr-vuplus/kodi-pvr-vuplus.hash index 46a0e6c471..d68d5b5be5 100644 --- a/package/kodi-pvr-vuplus/kodi-pvr-vuplus.hash +++ b/package/kodi-pvr-vuplus/kodi-pvr-vuplus.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 f9bd295fda0c21f60989440dfa74ebaf386f5264bf7a045f6c7cc9fd012e7907 kodi-pvr-vuplus-21.1.1-Omega.tar.gz +sha256 5d918e8073a326e2631aac0756ee2c78fddb359980a8dff805ff13d9d9bf48ba kodi-pvr-vuplus-21.1.2-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-vuplus/kodi-pvr-vuplus.mk b/package/kodi-pvr-vuplus/kodi-pvr-vuplus.mk index b6d2c6b5d5..1b70521867 100644 --- a/package/kodi-pvr-vuplus/kodi-pvr-vuplus.mk +++ b/package/kodi-pvr-vuplus/kodi-pvr-vuplus.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_VUPLUS_VERSION = 21.1.1-Omega +KODI_PVR_VUPLUS_VERSION = 21.1.2-Omega KODI_PVR_VUPLUS_SITE = $(call github,kodi-pvr,pvr.vuplus,$(KODI_PVR_VUPLUS_VERSION)) KODI_PVR_VUPLUS_LICENSE = GPL-2.0+ KODI_PVR_VUPLUS_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:11:14 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:11:14 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-waipu: bump version to 21.6.0-Omega Message-ID: <20240513203450.C5A628714E@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=441b788b72c7f75eb3f7e6a0fcc1860372f28939 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-waipu/kodi-pvr-waipu.hash | 2 +- package/kodi-pvr-waipu/kodi-pvr-waipu.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-waipu/kodi-pvr-waipu.hash b/package/kodi-pvr-waipu/kodi-pvr-waipu.hash index 6f9d521601..2c682c884c 100644 --- a/package/kodi-pvr-waipu/kodi-pvr-waipu.hash +++ b/package/kodi-pvr-waipu/kodi-pvr-waipu.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 c595fa830f56b265a94de5a33dd50bdd8ae068ebe0797dd15220ba52adf04fda kodi-pvr-waipu-21.5.0-Omega.tar.gz +sha256 0db467d4986c36efb0c837dd728fc6322d3021fe2d8c93da9355b63f210fa0ca kodi-pvr-waipu-21.6.0-Omega.tar.gz sha256 4202d4fb329f58c83ba921b56d7071e37f7df3f15b3820a3a04ef8eee49f54d2 pvr.waipu/LICENSE.txt diff --git a/package/kodi-pvr-waipu/kodi-pvr-waipu.mk b/package/kodi-pvr-waipu/kodi-pvr-waipu.mk index d82f8f7a2f..4e9f8e00cf 100644 --- a/package/kodi-pvr-waipu/kodi-pvr-waipu.mk +++ b/package/kodi-pvr-waipu/kodi-pvr-waipu.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_WAIPU_VERSION = 21.5.0-Omega +KODI_PVR_WAIPU_VERSION = 21.6.0-Omega KODI_PVR_WAIPU_SITE = $(call github,flubshi,pvr.waipu,$(KODI_PVR_WAIPU_VERSION)) KODI_PVR_WAIPU_LICENSE = GPL-2.0+ KODI_PVR_WAIPU_LICENSE_FILES = pvr.waipu/LICENSE.txt From thomas.petazzoni at bootlin.com Mon May 13 20:10:45 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:10:45 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-hdhomerun: bump version to 21.0.1-Omega Message-ID: <20240513203450.3430287155@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=6670bde37b9fc79fc8953f6ca07ef4a6191ea37a branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.hash | 2 +- package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.hash b/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.hash index 8f24eb7158..c1635b5582 100644 --- a/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.hash +++ b/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 3adbb5da035d714ccdfe9fa08185487fc218dd14464dc3b8242254a852ac1f8a kodi-pvr-hdhomerun-21.0.0-Omega.tar.gz +sha256 5c59d1ca40846b733175ba0f5360b86ea676a64d1a162bdc0faf8e16a8f2dea0 kodi-pvr-hdhomerun-21.0.1-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.mk b/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.mk index e384480f80..5f69f606ef 100644 --- a/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.mk +++ b/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_HDHOMERUN_VERSION = 21.0.0-Omega +KODI_PVR_HDHOMERUN_VERSION = 21.0.1-Omega KODI_PVR_HDHOMERUN_SITE = $(call github,kodi-pvr,pvr.hdhomerun,$(KODI_PVR_HDHOMERUN_VERSION)) KODI_PVR_HDHOMERUN_LICENSE = GPL-2.0+ KODI_PVR_HDHOMERUN_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:11:18 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:11:18 +0200 Subject: [Buildroot] [git commit] package/kodi-skin-confluence: bump version Message-ID: <20240513203450.DC42B87153@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=8fbac15e4c2e730c846c139e8986cc2b56b36018 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-skin-confluence/kodi-skin-confluence.hash | 2 +- package/kodi-skin-confluence/kodi-skin-confluence.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-skin-confluence/kodi-skin-confluence.hash b/package/kodi-skin-confluence/kodi-skin-confluence.hash index ed5aaf1fed..e8098abed4 100644 --- a/package/kodi-skin-confluence/kodi-skin-confluence.hash +++ b/package/kodi-skin-confluence/kodi-skin-confluence.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 f5cd0fe3591feedce016d3aaa8074bb8bc30121feb708b3a07ac87f453974106 kodi-skin-confluence-1995b890238e2737433cbaffd49993753b35eea9.tar.gz +sha256 99b243b7ccb9e0f3e1455e8967f99fd7d98d8924be0d9fe82de12448fe2ecc4e kodi-skin-confluence-f8479bece875313049943fba834e551f6b7d2cf5.tar.gz sha256 89931c1fb1f3716694175763cf3221cfcd63d6935031cf6b4512d17ffe5d9860 LICENSE.txt diff --git a/package/kodi-skin-confluence/kodi-skin-confluence.mk b/package/kodi-skin-confluence/kodi-skin-confluence.mk index af67693496..68d25e184c 100644 --- a/package/kodi-skin-confluence/kodi-skin-confluence.mk +++ b/package/kodi-skin-confluence/kodi-skin-confluence.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_SKIN_CONFLUENCE_VERSION = 1995b890238e2737433cbaffd49993753b35eea9 +KODI_SKIN_CONFLUENCE_VERSION = f8479bece875313049943fba834e551f6b7d2cf5 KODI_SKIN_CONFLUENCE_SITE = $(call github,xbmc,skin.confluence,$(KODI_SKIN_CONFLUENCE_VERSION)) KODI_SKIN_CONFLUENCE_LICENSE = GPL-2.0 KODI_SKIN_CONFLUENCE_LICENSE_FILES = LICENSE.txt From thomas.petazzoni at bootlin.com Mon May 13 20:11:10 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:11:10 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-vdr-vnsi: bump version to 21.1.1-Omega Message-ID: <20240513203450.AE86C87136@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=fc1be9d9f20fb9484be693201ade140da148237d branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.hash | 2 +- package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.hash b/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.hash index 5742851593..1922f7b3cd 100644 --- a/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.hash +++ b/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 5c7317814d18439a36b6dc45e964aa13724ac19b46344d0d9196356f7c42921c kodi-pvr-vdr-vnsi-21.1.0-Omega.tar.gz +sha256 30cde3d04ca47091f92569c4826a959d14fad728699c258014dcde2be3d40db1 kodi-pvr-vdr-vnsi-21.1.1-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.mk b/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.mk index b90c128404..1769cf4d33 100644 --- a/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.mk +++ b/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_VDR_VNSI_VERSION = 21.1.0-Omega +KODI_PVR_VDR_VNSI_VERSION = 21.1.1-Omega KODI_PVR_VDR_VNSI_SITE = $(call github,kodi-pvr,pvr.vdr.vnsi,$(KODI_PVR_VDR_VNSI_VERSION)) KODI_PVR_VDR_VNSI_LICENSE = GPL-2.0+ KODI_PVR_VDR_VNSI_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:11:16 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:11:16 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-wmc: bump version to 21.0.1-Omega Message-ID: <20240513203450.D17EC87142@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=914b67e8c9d560ac24dcbb168bf2d9556fde2fa4 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-wmc/kodi-pvr-wmc.hash | 2 +- package/kodi-pvr-wmc/kodi-pvr-wmc.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-wmc/kodi-pvr-wmc.hash b/package/kodi-pvr-wmc/kodi-pvr-wmc.hash index a6bd5d5dcc..fc04e44b2a 100644 --- a/package/kodi-pvr-wmc/kodi-pvr-wmc.hash +++ b/package/kodi-pvr-wmc/kodi-pvr-wmc.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 40f86146d98b770d4f76b6ea9ce3c9a2942d99b81d49e06ef2ccfef5b1e4c160 kodi-pvr-wmc-21.0.0-Omega.tar.gz +sha256 5008adcd9ce35e965bc172ac98306c0ec4b639182a7026e6ee9b36581516c8a8 kodi-pvr-wmc-21.0.1-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-wmc/kodi-pvr-wmc.mk b/package/kodi-pvr-wmc/kodi-pvr-wmc.mk index 9e601ecd16..81829d5eb4 100644 --- a/package/kodi-pvr-wmc/kodi-pvr-wmc.mk +++ b/package/kodi-pvr-wmc/kodi-pvr-wmc.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_WMC_VERSION = 21.0.0-Omega +KODI_PVR_WMC_VERSION = 21.0.1-Omega KODI_PVR_WMC_SITE = $(call github,kodi-pvr,pvr.wmc,$(KODI_PVR_WMC_VERSION)) KODI_PVR_WMC_LICENSE = GPL-2.0+ KODI_PVR_WMC_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:11:05 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:11:05 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-stalker: bump version to 21.0.1-Omega Message-ID: <20240513203450.9AB0287151@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=500351a2323145cc84c23d434c86a376026346a8 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/kodi-pvr-stalker/kodi-pvr-stalker.hash | 2 +- package/kodi-pvr-stalker/kodi-pvr-stalker.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-stalker/kodi-pvr-stalker.hash b/package/kodi-pvr-stalker/kodi-pvr-stalker.hash index 5944a9d06b..568a2b3824 100644 --- a/package/kodi-pvr-stalker/kodi-pvr-stalker.hash +++ b/package/kodi-pvr-stalker/kodi-pvr-stalker.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 a2cfe5e5acf186e368cd42bf811b217940685695be0e2689a299c80da7d217f4 kodi-pvr-stalker-21.0.0-Omega.tar.gz +sha256 d90b6b5595a820197d097da8ee6698bea786359cfe0bfaeabf4985dbc2af3064 kodi-pvr-stalker-21.0.1-Omega.tar.gz sha256 310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af LICENSE.md diff --git a/package/kodi-pvr-stalker/kodi-pvr-stalker.mk b/package/kodi-pvr-stalker/kodi-pvr-stalker.mk index 14d9058e2a..ed04eefe9d 100644 --- a/package/kodi-pvr-stalker/kodi-pvr-stalker.mk +++ b/package/kodi-pvr-stalker/kodi-pvr-stalker.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_STALKER_VERSION = 21.0.0-Omega +KODI_PVR_STALKER_VERSION = 21.0.1-Omega KODI_PVR_STALKER_SITE = $(call github,kodi-pvr,pvr.stalker,$(KODI_PVR_STALKER_VERSION)) KODI_PVR_STALKER_LICENSE = GPL-2.0+ KODI_PVR_STALKER_LICENSE_FILES = LICENSE.md From thomas.petazzoni at bootlin.com Mon May 13 20:35:23 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:35:23 +0200 Subject: [Buildroot] [PATCH 01/22] package/kodi-inputstream-adaptive: bump version to 21.4.7-Omega In-Reply-To: <20240512181356.2106142-1-bernd@kuhls.net> References: <20240512181356.2106142-1-bernd@kuhls.net> Message-ID: <20240513223523.4fcdf88a@windsurf> On Sun, 12 May 2024 20:13:35 +0200 Bernd Kuhls wrote: > Signed-off-by: Bernd Kuhls > --- > .../kodi-inputstream-adaptive/kodi-inputstream-adaptive.hash | 2 +- > package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Entire series applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 20:35:45 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:35:45 +0200 Subject: [Buildroot] [PATCH] package/gcc: enable obsolete nios2 target In-Reply-To: References: Message-ID: <20240513223545.6b43108d@windsurf> On Sun, 12 May 2024 18:19:15 +0200 Waldemar Brodkorb wrote: > GCC 14.1.0 deprecated NIOS2 so we had to enable it explicitely. > > Signed-off-by: Waldemar Brodkorb > --- > package/gcc/gcc-final/gcc-final.mk | 5 +++++ > package/gcc/gcc-initial/gcc-initial.mk | 5 +++++ > 2 files changed, 10 insertions(+) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 20:35:30 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:35:30 +0200 Subject: [Buildroot] [git commit] package/gcc: enable obsolete nios2 target Message-ID: <20240513203622.5610F87158@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=69cb6259479c548a09aac1140261c17f1cbb86b3 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master GCC 14.1.0 deprecated NIOS2 so we need to enable it explicitely. Signed-off-by: Waldemar Brodkorb Signed-off-by: Thomas Petazzoni --- package/gcc/gcc-final/gcc-final.mk | 5 +++++ package/gcc/gcc-initial/gcc-initial.mk | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/package/gcc/gcc-final/gcc-final.mk b/package/gcc/gcc-final/gcc-final.mk index 99d7047b5f..5feb96b568 100644 --- a/package/gcc/gcc-final/gcc-final.mk +++ b/package/gcc/gcc-final/gcc-final.mk @@ -117,6 +117,11 @@ else HOST_GCC_FINAL_CONF_OPTS += --disable-libgomp endif +# allow to build gcc 14.x +ifeq ($(BR2_nios2),y) +HOST_GCC_FINAL_CONF_OPTS += --enable-obsolete +endif + # End with user-provided options, so that they can override previously # defined options. HOST_GCC_FINAL_CONF_OPTS += \ diff --git a/package/gcc/gcc-initial/gcc-initial.mk b/package/gcc/gcc-initial/gcc-initial.mk index 1f8b76a942..8b4247bdad 100644 --- a/package/gcc/gcc-initial/gcc-initial.mk +++ b/package/gcc/gcc-initial/gcc-initial.mk @@ -42,6 +42,11 @@ HOST_GCC_INITIAL_CONF_OPTS = \ --disable-largefile \ $(call qstrip,$(BR2_EXTRA_GCC_CONFIG_OPTIONS)) +# allow to build gcc 14.x +ifeq ($(BR2_nios2),y) +HOST_GCC_INITIAL_CONF_OPTS += --enable-obsolete +endif + HOST_GCC_INITIAL_CONF_ENV = \ $(HOST_GCC_COMMON_CONF_ENV) From thomas.petazzoni at bootlin.com Mon May 13 20:37:38 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:37:38 +0200 Subject: [Buildroot] [git commit] package/gcc: refactor nios2 obsolete handling into common gcc code Message-ID: <20240513203849.1A0748715D@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=1c8bdef54213640e88b199466d1e504515c1a073 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Commit 69cb6259479c548a09aac1140261c17f1cbb86b3 ("package/gcc: enable obsolete nios2 target") added some handling of nios2 with gcc 14.x, duplicated between gcc-initial and gcc-final. Let's deduplicate this logic into the common package/gcc/gcc.mk code. Signed-off-by: Thomas Petazzoni --- package/gcc/gcc-final/gcc-final.mk | 5 ----- package/gcc/gcc-initial/gcc-initial.mk | 5 ----- package/gcc/gcc.mk | 5 +++++ 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/package/gcc/gcc-final/gcc-final.mk b/package/gcc/gcc-final/gcc-final.mk index 5feb96b568..99d7047b5f 100644 --- a/package/gcc/gcc-final/gcc-final.mk +++ b/package/gcc/gcc-final/gcc-final.mk @@ -117,11 +117,6 @@ else HOST_GCC_FINAL_CONF_OPTS += --disable-libgomp endif -# allow to build gcc 14.x -ifeq ($(BR2_nios2),y) -HOST_GCC_FINAL_CONF_OPTS += --enable-obsolete -endif - # End with user-provided options, so that they can override previously # defined options. HOST_GCC_FINAL_CONF_OPTS += \ diff --git a/package/gcc/gcc-initial/gcc-initial.mk b/package/gcc/gcc-initial/gcc-initial.mk index 8b4247bdad..1f8b76a942 100644 --- a/package/gcc/gcc-initial/gcc-initial.mk +++ b/package/gcc/gcc-initial/gcc-initial.mk @@ -42,11 +42,6 @@ HOST_GCC_INITIAL_CONF_OPTS = \ --disable-largefile \ $(call qstrip,$(BR2_EXTRA_GCC_CONFIG_OPTIONS)) -# allow to build gcc 14.x -ifeq ($(BR2_nios2),y) -HOST_GCC_INITIAL_CONF_OPTS += --enable-obsolete -endif - HOST_GCC_INITIAL_CONF_ENV = \ $(HOST_GCC_COMMON_CONF_ENV) diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk index 94935d79a2..672f9472a9 100644 --- a/package/gcc/gcc.mk +++ b/package/gcc/gcc.mk @@ -293,6 +293,11 @@ HOST_GCC_COMMON_CONF_OPTS += \ --with-long-double-128 endif +# allow to build gcc 14.x +ifeq ($(BR2_nios2),y) +HOST_GCC_COMMON_CONF_OPTS += --enable-obsolete +endif + HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS += -DBR_CROSS_PATH_SUFFIX='".br_real"' # For gcc-initial, we need to tell gcc that the C library will be From thomas.petazzoni at bootlin.com Mon May 13 20:40:39 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:40:39 +0200 Subject: [Buildroot] [PATCH] package/gcc: enable obsolete nios2 target In-Reply-To: References: Message-ID: <20240513224039.6aa3b261@windsurf> On Sun, 12 May 2024 18:19:15 +0200 Waldemar Brodkorb wrote: > +# allow to build gcc 14.x > +ifeq ($(BR2_nios2),y) > +HOST_GCC_FINAL_CONF_OPTS += --enable-obsolete > +endif Dammit, I applied, but in fact, this change should have gone in one single place: package/gcc/gcc.mk, adding to HOST_GCC_COMMON_CONF_OPTS, which is used for both the gcc-initial and gcc-final stage. So I did this as a follow-up commit in https://gitlab.com/buildroot.org/buildroot/-/commit/1c8bdef54213640e88b199466d1e504515c1a073. Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 20:40:48 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:40:48 +0200 Subject: [Buildroot] [git commit] package/zlib-ng: fix riscv build with uclibc Message-ID: <20240513204453.D4F4387163@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=36e417efc85141001df13a1e50f73dae682da4f3 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fix the following riscv build failure with uclibc-ng < 1.0.43 raised since bump to version 2.1.6 in commit 47b6737e841baf8b666ea9f37edc5f169652e88d and https://github.com/zlib-ng/zlib-ng/commit/6ff8b52cefe56a824fae1d53fdd687bcde2e53c9: /home/autobuild/autobuild/instance-2/output-1/build/zlib-ng-2.1.6/arch/riscv/riscv_features.c:4:10: fatal error: sys/auxv.h: No such file or directory 4 | #include | ^~~~~~~~~~~~ Fixes: 47b6737e841baf8b666ea9f37edc5f169652e88d - http://autobuild.buildroot.org/results/06a7d8e59ec4de7c711d3f4a4624f67b97d78afe Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- ...h-riscv-riscv-features-c-fix-uclibc-build.patch | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/package/zlib-ng/0001-arch-riscv-riscv-features-c-fix-uclibc-build.patch b/package/zlib-ng/0001-arch-riscv-riscv-features-c-fix-uclibc-build.patch new file mode 100644 index 0000000000..39cc93f929 --- /dev/null +++ b/package/zlib-ng/0001-arch-riscv-riscv-features-c-fix-uclibc-build.patch @@ -0,0 +1,51 @@ +From 3f35bfccff2d1dacdfe9844712be1e042d028700 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 17 Mar 2024 21:56:53 +0100 +Subject: [PATCH] arch/riscv/riscv_features.c: fix uclibc build + +Fix the following uclibc build failure raised since version 2.1.4 and +https://github.com/zlib-ng/zlib-ng/commit/6ff8b52cefe56a824fae1d53fdd687bcde2e53c9: + +/home/autobuild/autobuild/instance-2/output-1/build/zlib-ng-2.1.6/arch/riscv/riscv_features.c:4:10: fatal error: sys/auxv.h: No such file or directory + 4 | #include + | ^~~~~~~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/06a7d8e59ec4de7c711d3f4a4624f67b97d78afe + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/zlib-ng/zlib-ng/commit/3f35bfccff2d1dacdfe9844712be1e042d028700 +--- + arch/riscv/riscv_features.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/arch/riscv/riscv_features.c b/arch/riscv/riscv_features.c +index 506b480c11..1e3f45e0a7 100644 +--- a/arch/riscv/riscv_features.c ++++ b/arch/riscv/riscv_features.c +@@ -1,9 +1,12 @@ + #include + #include + #include +-#include + #include + ++#if defined(__linux__) && defined(HAVE_SYS_AUXV_H) ++# include ++#endif ++ + #include "../../zbuild.h" + #include "riscv_features.h" + +@@ -33,7 +36,11 @@ void Z_INTERNAL riscv_check_features_compile_time(struct riscv_cpu_features *fea + } + + void Z_INTERNAL riscv_check_features_runtime(struct riscv_cpu_features *features) { ++#if defined(__linux__) && defined(HAVE_SYS_AUXV_H) + unsigned long hw_cap = getauxval(AT_HWCAP); ++#else ++ unsigned long hw_cap = 0; ++#endif + features->has_rvv = hw_cap & ISA_V_HWCAP; + } + From thomas.petazzoni at bootlin.com Mon May 13 20:44:52 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:44:52 +0200 Subject: [Buildroot] [PATCH v2, 1/1] package/zlib-ng: fix riscv build with uclibc In-Reply-To: <20240512101523.35332-1-fontaine.fabrice@gmail.com> References: <20240512101523.35332-1-fontaine.fabrice@gmail.com> Message-ID: <20240513224452.7b22a8a9@windsurf> On Sun, 12 May 2024 12:15:23 +0200 Fabrice Fontaine wrote: > Fix the following riscv build failure with uclibc-ng < 1.0.43 raised > since bump to version 2.1.6 in commit > 47b6737e841baf8b666ea9f37edc5f169652e88d and > https://github.com/zlib-ng/zlib-ng/commit/6ff8b52cefe56a824fae1d53fdd687bcde2e53c9: > > /home/autobuild/autobuild/instance-2/output-1/build/zlib-ng-2.1.6/arch/riscv/riscv_features.c:4:10: fatal error: sys/auxv.h: No such file or directory > 4 | #include > | ^~~~~~~~~~~~ > > Fixes: 47b6737e841baf8b666ea9f37edc5f169652e88d > - http://autobuild.buildroot.org/results/06a7d8e59ec4de7c711d3f4a4624f67b97d78afe > > Signed-off-by: Fabrice Fontaine > --- > Changes v1 -> v2: > - Fix build failure instead of disabling package Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 20:47:39 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:47:39 +0200 Subject: [Buildroot] [git commit] package/qemu: fix typo in help text of BR2_PACKAGE_QEMU_TARGET_RISCV32 Message-ID: <20240513204901.97E3087175@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=e23a44bbcba067935708d9949c23fae9c5814cd0 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master 33-bit was obviously a typo. Signed-off-by: Waldemar Brodkorb Signed-off-by: Thomas Petazzoni --- package/qemu/Config.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/qemu/Config.in b/package/qemu/Config.in index 8d53ced300..91e0de884f 100644 --- a/package/qemu/Config.in +++ b/package/qemu/Config.in @@ -289,7 +289,7 @@ config BR2_PACKAGE_QEMU_TARGET_RISCV32 bool "riscv32" select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM help - RISC-V 33-bit architecture. + RISC-V 32-bit architecture. config BR2_PACKAGE_QEMU_TARGET_RISCV64 bool "riscv64" From thomas.petazzoni at bootlin.com Mon May 13 20:47:18 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:47:18 +0200 Subject: [Buildroot] [git commit] package/qemu: update to 9.0.0 Message-ID: <20240513204901.8CE9187174@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=103a55028c75dace312470ba05a197886c6b6100 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master See here the changes: https://wiki.qemu.org/ChangeLog/9.0 Disable plugins because of compile errors. Patches 0002/0003 are Upstream. Signed-off-by: Waldemar Brodkorb Signed-off-by: Thomas Petazzoni --- .checkpackageignore | 1 - ...u-seccomp.c-add-missing-header-for-CLONE_.patch | 42 ---------------------- ...stall-trace-events-file-only-if-necessary.patch | 30 ---------------- package/qemu/qemu.hash | 2 +- package/qemu/qemu.mk | 4 ++- 5 files changed, 4 insertions(+), 75 deletions(-) diff --git a/.checkpackageignore b/.checkpackageignore index f145e0bd11..7057f91925 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -1340,7 +1340,6 @@ package/python3/0023-Add-an-option-to-disable-uuid-module.patch lib_patch.Upstre package/python3/0024-configure.ac-fixup-CC-print-multiarch-output-for-mus.patch lib_patch.Upstream package/python3/0025-Add-an-option-to-disable-the-berkeleydb-module.patch lib_patch.Upstream package/python3/0026-lib-crypt-uClibc-ng-doesn-t-set-errno-when-encryptio.patch lib_patch.Upstream -package/qemu/0002-softmmu-qemu-seccomp.c-add-missing-header-for-CLONE_.patch lib_patch.Upstream package/qextserialport/0001-Create-a-main-include-file-QExtSerialPort.patch lib_patch.Upstream package/qextserialport/0002-Tell-qmake-to-add-a-pkgconfig-file-to-ease-usage-wit.patch lib_patch.Upstream package/qt5/qt5base/0001-qtbase-Fix-build-error-when-using-EGL.patch lib_patch.Upstream diff --git a/package/qemu/0002-softmmu-qemu-seccomp.c-add-missing-header-for-CLONE_.patch b/package/qemu/0002-softmmu-qemu-seccomp.c-add-missing-header-for-CLONE_.patch deleted file mode 100644 index 91506b14d9..0000000000 --- a/package/qemu/0002-softmmu-qemu-seccomp.c-add-missing-header-for-CLONE_.patch +++ /dev/null @@ -1,42 +0,0 @@ -From df07d3754bdf15e0efac244cfee290c9bac86352 Mon Sep 17 00:00:00 2001 -From: Romain Naour -Date: Mon, 2 May 2022 23:17:46 +0200 -Subject: [PATCH] softmmu/qemu-seccomp.c: add missing header for CLONE_NEWGROUP -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -With seccomp support enabled Qemu 7.0.0 fail to build with the -following error: - -../softmmu/qemu-seccomp.c:116:19: error: ???CLONE_NEWCGROUP??? undeclared here (not in a function) - 116 | FORBID_CLONE_FLAG(CLONE_NEWCGROUP); - | ^~~~~~~~~~~~~~~ -../softmmu/qemu-seccomp.c:73:18: note: in definition of macro ???FORBID_CLONE_FLAG??? - 73 | .datum_a = flag, .datum_b = flag } } - | ^~~~ - -CLONE_NEWCGROUP has been added in Qemu 7.0.0 by commit [1]. - -[1] https://git.qemu.org/?p=qemu.git;a=commitdiff;h=5a2f693f07a1e93ada5277b2fb1530b2698be0fa - -Signed-off-by: Romain Naour ---- - softmmu/qemu-seccomp.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/softmmu/qemu-seccomp.c b/softmmu/qemu-seccomp.c -index deaf8a4ef5..96c83e121f 100644 ---- a/softmmu/qemu-seccomp.c -+++ b/softmmu/qemu-seccomp.c -@@ -21,6 +21,7 @@ - #include - #include - #include "sysemu/seccomp.h" -+#include - #include - - /* For some architectures (notably ARM) cacheflush is not supported until --- -2.35.1 - diff --git a/package/qemu/0003-tracing-install-trace-events-file-only-if-necessary.patch b/package/qemu/0003-tracing-install-trace-events-file-only-if-necessary.patch deleted file mode 100644 index 36bdaa4978..0000000000 --- a/package/qemu/0003-tracing-install-trace-events-file-only-if-necessary.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 5c43da1e4983cc3c209b325a5228b6149e0a0ccf Mon Sep 17 00:00:00 2001 -From: Carlos Santos -Date: Fri, 24 Mar 2023 21:40:22 -0300 -Subject: [PATCH] tracing: install trace events file only if necessary - -It is not useful when configuring with --enable-trace-backends=nop. - -Upstream: https://patchwork.kernel.org/project/qemu-devel/patch/20230408010410.281263-1-casantos at redhat.com/ -Signed-off-by: Carlos Santos -Signed-off-by: Carlos Santos ---- - trace/meson.build | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/trace/meson.build b/trace/meson.build -index 8e80be895c..30b1d942eb 100644 ---- a/trace/meson.build -+++ b/trace/meson.build -@@ -64,7 +64,7 @@ trace_events_all = custom_target('trace-events-all', - input: trace_events_files, - command: [ 'cat', '@INPUT@' ], - capture: true, -- install: true, -+ install: get_option('trace_backends') != [ 'nop' ], - install_dir: qemu_datadir) - - if 'ust' in get_option('trace_backends') --- -2.31.1 - diff --git a/package/qemu/qemu.hash b/package/qemu/qemu.hash index 61e51a923f..2c905d2e77 100644 --- a/package/qemu/qemu.hash +++ b/package/qemu/qemu.hash @@ -1,4 +1,4 @@ # Locally computed, tarball verified with GPG signature -sha256 37ce2ef5e500fb752f681117c68b45118303ea49a7e26bd54080ced54fab7def qemu-8.1.1.tar.xz +sha256 32708ac66c30d8c892633ea968c771c1c76d597d70ddead21a0d22ccf386da69 qemu-9.0.0.tar.xz sha256 6f04ae8364d0079a192b14635f4b1da294ce18724c034c39a6a41d1b09df6100 COPYING sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB diff --git a/package/qemu/qemu.mk b/package/qemu/qemu.mk index ef406dc8e9..8de803dd25 100644 --- a/package/qemu/qemu.mk +++ b/package/qemu/qemu.mk @@ -6,7 +6,7 @@ # When updating the version, check whether the list of supported targets # needs to be updated. -QEMU_VERSION = 8.1.1 +QEMU_VERSION = 9.0.0 QEMU_SOURCE = qemu-$(QEMU_VERSION).tar.xz QEMU_SITE = https://download.qemu.org QEMU_SELINUX_MODULES = qemu virt @@ -320,6 +320,7 @@ define QEMU_CONFIGURE_CMDS --disable-opengl \ --disable-oss \ --disable-pa \ + --disable-plugins \ --disable-rbd \ --disable-sanitizers \ --disable-selinux \ @@ -504,6 +505,7 @@ define HOST_QEMU_CONFIGURE_CMDS --disable-vde \ --disable-vhost-user-blk-server \ --disable-vnc-jpeg \ + --disable-plugins \ --disable-png \ --disable-vnc-sasl \ --enable-slirp \ From thomas.petazzoni at bootlin.com Mon May 13 20:49:49 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:49:49 +0200 Subject: [Buildroot] [PATCH] package/qemu: update to 9.0.0 In-Reply-To: References: Message-ID: <20240513224949.169828d9@windsurf> Hello, On Sun, 12 May 2024 15:20:12 +0200 Waldemar Brodkorb wrote: > diff --git a/package/qemu/0002-softmmu-qemu-seccomp.c-add-missing-header-for-CLONE_.patch b/package/qemu/0002-softmmu-qemu-seccomp.c-add-missing-header-for-CLONE_.patch > deleted file mode 100644 > index 91506b14d9..0000000000 > --- a/package/qemu/0002-softmmu-qemu-seccomp.c-add-missing-header-for-CLONE_.patch > +++ /dev/null The removal of this patch needed a .checkpackageignore change, so I did that. > diff --git a/package/qemu/Config.in b/package/qemu/Config.in > index 8d53ced300..91e0de884f 100644 > --- a/package/qemu/Config.in > +++ b/package/qemu/Config.in > @@ -289,7 +289,7 @@ config BR2_PACKAGE_QEMU_TARGET_RISCV32 > bool "riscv32" > select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM > help > - RISC-V 33-bit architecture. > + RISC-V 32-bit architecture. This typo fix was unrelated to the bump, so it should have been a separate patch. Therefore I made a separate commit. Applied with those changes, thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 20:51:09 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:51:09 +0200 Subject: [Buildroot] [PATCH 1/1] {linux, linux-headers}: bump 4.19.x / 5.{4, 10, 15}.x / 6.{1, 6, 8}.x series In-Reply-To: <20240512181331.2106108-1-bernd@kuhls.net> References: <20240512181331.2106108-1-bernd@kuhls.net> Message-ID: <20240513225109.386a0e4f@windsurf> On Sun, 12 May 2024 20:13:31 +0200 Bernd Kuhls wrote: > Signed-off-by: Bernd Kuhls > --- > linux/Config.in | 2 +- > linux/linux.hash | 14 +++++++------- > package/linux-headers/Config.in.host | 14 +++++++------- > 3 files changed, 15 insertions(+), 15 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 20:50:00 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:50:00 +0200 Subject: [Buildroot] [git commit] package/spdlog: bump to 1.14.1 Message-ID: <20240513205112.F182E8718F@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=0ae5b4ab38d3efd5ca94f05d44594e7892aad949 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master - Fixed compatibility issue between c++17 and c++11 https://github.com/gabime/spdlog/releases/tag/v1.14.1 Signed-off-by: Michael Nosthoff Signed-off-by: Thomas Petazzoni --- package/spdlog/spdlog.hash | 2 +- package/spdlog/spdlog.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/spdlog/spdlog.hash b/package/spdlog/spdlog.hash index 7a0f442ab0..16d841769d 100644 --- a/package/spdlog/spdlog.hash +++ b/package/spdlog/spdlog.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 429a6b73ade8285cb21f83bacf89e2821dd1720ea7faa3cb518ffe04b4e00efc spdlog-1.14.0.tar.gz +sha256 1586508029a7d0670dfcb2d97575dcdc242d3868a259742b69f100801ab4e16b spdlog-1.14.1.tar.gz sha256 4ccecab18d1ff0b61174fe3d6c430541625d3ddb865b0d5887db296f883c76e7 LICENSE diff --git a/package/spdlog/spdlog.mk b/package/spdlog/spdlog.mk index c435633f41..6b24357697 100644 --- a/package/spdlog/spdlog.mk +++ b/package/spdlog/spdlog.mk @@ -4,7 +4,7 @@ # ################################################################################ -SPDLOG_VERSION = 1.14.0 +SPDLOG_VERSION = 1.14.1 SPDLOG_SITE = $(call github,gabime,spdlog,v$(SPDLOG_VERSION)) SPDLOG_LICENSE = MIT SPDLOG_LICENSE_FILES = LICENSE From thomas.petazzoni at bootlin.com Mon May 13 20:50:36 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:50:36 +0200 Subject: [Buildroot] [git commit] {linux, linux-headers}: bump 4.19.x / 5.{4, 10, 15}.x / 6.{1, 6, 8}.x series Message-ID: <20240513205113.07DDB87190@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=a28bc67ce5f37661275c90904db7929c2416dc88 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- linux/Config.in | 2 +- linux/linux.hash | 14 +++++++------- package/linux-headers/Config.in.host | 14 +++++++------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/linux/Config.in b/linux/Config.in index ca6b9a08b0..d3d4c42910 100644 --- a/linux/Config.in +++ b/linux/Config.in @@ -134,7 +134,7 @@ config BR2_LINUX_KERNEL_CUSTOM_REPO_GIT_SUBMODULES config BR2_LINUX_KERNEL_VERSION string - default "6.8.6" if BR2_LINUX_KERNEL_LATEST_VERSION + default "6.8.9" if BR2_LINUX_KERNEL_LATEST_VERSION default "5.10.162-cip24" if BR2_LINUX_KERNEL_LATEST_CIP_VERSION default "5.10.162-cip24-rt10" if BR2_LINUX_KERNEL_LATEST_CIP_RT_VERSION default BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE \ diff --git a/linux/linux.hash b/linux/linux.hash index 7154fc75bf..af82148e80 100644 --- a/linux/linux.hash +++ b/linux/linux.hash @@ -1,13 +1,13 @@ # From https://www.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc -sha256 9e723232d603ab45ebf043c34714c48f277ab195c29abcb8472f2a4c3a5a1995 linux-6.8.6.tar.xz -sha256 639e50060e3c8f23ed017cb10cfeacc6ba88ff5583812bb76859b4cc6a128291 linux-6.6.27.tar.xz -sha256 d3d3c8c44f0f0a870a95bd2823f9d91979d1aa6f266da5d8cccd0c4b15e3115b linux-6.1.86.tar.xz +sha256 f905f1238ea7a8e85314bacf283302e8097006010d25fcea726d0de0ea5bc9b6 linux-6.8.9.tar.xz +sha256 b66a5b863b0f8669448b74ca83bd641a856f164b29956e539bbcb5fdeeab9cc6 linux-6.6.30.tar.xz +sha256 83a3d72e764fceda2c1fc68a4ea6b91253a28da56a688a2b61776b0d19788e1d linux-6.1.90.tar.xz # From https://www.kernel.org/pub/linux/kernel/v5.x/sha256sums.asc -sha256 c85859b86d2e6d1fc91ca1be8b44f24a9b5bb9f86869b04a8665a3a6559126e4 linux-5.15.155.tar.xz -sha256 879ca159c34ea9d3a6775f292cc59c2d3931d57dca00f0bebe2675ea0c82c6a9 linux-5.10.215.tar.xz -sha256 eac7b421a43cd46a3dbebf7c85d075faa7e164d80d215d31fcd35544b6f79ed4 linux-5.4.274.tar.xz +sha256 f9071c83a4fd8b80af026b48cfc1869bfa25883f9148b92b5dc1e1e1e26dd5c6 linux-5.15.158.tar.xz +sha256 e310588c4b23f0959614e60f007afc20e9b1a8f296d682b041fa129f96fbe151 linux-5.10.216.tar.xz +sha256 dad2b068946f0ca0026130d7ab17601d5074d90b381379c4479314d4edf4304c linux-5.4.275.tar.xz # From https://www.kernel.org/pub/linux/kernel/v4.x/sha256sums.asc -sha256 a394fa5ffe321ee43dae9cccc724572f49fbb289875d39ea695adf712e51f74a linux-4.19.312.tar.xz +sha256 a8145e2ecf8437b6d06400c3358a595c47a74443b164890cf12a07d8722539c8 linux-4.19.313.tar.xz # Locally computed sha256 fb0edc3c18e47d2b6974cb0880a0afb5c3fa08f50ee87dfdf24349405ea5f8ae linux-cip-5.10.162-cip24.tar.gz sha256 b5539243f187e3d478d76d44ae13aab83952c94b885ad889df6fa9997e16a441 linux-cip-5.10.162-cip24-rt10.tar.gz diff --git a/package/linux-headers/Config.in.host b/package/linux-headers/Config.in.host index 5fe34456de..d8f48ed0b7 100644 --- a/package/linux-headers/Config.in.host +++ b/package/linux-headers/Config.in.host @@ -415,13 +415,13 @@ endchoice config BR2_DEFAULT_KERNEL_HEADERS string - default "4.19.312" if BR2_KERNEL_HEADERS_4_19 - default "5.4.274" if BR2_KERNEL_HEADERS_5_4 - default "5.10.215" if BR2_KERNEL_HEADERS_5_10 - default "5.15.155" if BR2_KERNEL_HEADERS_5_15 - default "6.1.86" if BR2_KERNEL_HEADERS_6_1 - default "6.6.27" if BR2_KERNEL_HEADERS_6_6 - default "6.8.6" if BR2_KERNEL_HEADERS_6_8 + default "4.19.313" if BR2_KERNEL_HEADERS_4_19 + default "5.4.275" if BR2_KERNEL_HEADERS_5_4 + default "5.10.216" if BR2_KERNEL_HEADERS_5_10 + default "5.15.158" if BR2_KERNEL_HEADERS_5_15 + default "6.1.90" if BR2_KERNEL_HEADERS_6_1 + default "6.6.30" if BR2_KERNEL_HEADERS_6_6 + default "6.8.9" if BR2_KERNEL_HEADERS_6_8 default BR2_DEFAULT_KERNEL_VERSION if BR2_KERNEL_HEADERS_VERSION default "custom" if BR2_KERNEL_HEADERS_CUSTOM_TARBALL default BR2_KERNEL_HEADERS_CUSTOM_REPO_VERSION \ From flavio.tapajos at newtesc.com.br Mon May 13 20:59:02 2024 From: flavio.tapajos at newtesc.com.br (=?UTF-8?q?Fl=C3=A1vio=20Tapaj=C3=B3s?=) Date: Mon, 13 May 2024 17:59:02 -0300 Subject: [Buildroot] [PATCH 1/1] package/python-sqlalchemy: bump version to 2.0.30 Message-ID: <20240513205902.1096057-1-flavio.tapajos@newtesc.com.br> --- package/python-sqlalchemy/python-sqlalchemy.hash | 4 ++-- package/python-sqlalchemy/python-sqlalchemy.mk | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/python-sqlalchemy/python-sqlalchemy.hash b/package/python-sqlalchemy/python-sqlalchemy.hash index 0bc9256c54..d047719d54 100644 --- a/package/python-sqlalchemy/python-sqlalchemy.hash +++ b/package/python-sqlalchemy/python-sqlalchemy.hash @@ -1,5 +1,5 @@ # md5, sha256 from https://pypi.org/pypi/sqlalchemy/json -md5 ea746e69e0702cc8d2c91c5140ce35cc SQLAlchemy-2.0.28.tar.gz -sha256 bd9566b8e58cabd700bc367b60e90d9349cd16f0984973f98a9a09f9c64e86f0 SQLAlchemy-2.0.29.tar.gz +md5 c13a21626c7ae00b42a08880af574e3c SQLAlchemy-2.0.30.tar.gz +sha256 2b1708916730f4830bc69d6f49d37f7698b5bd7530aca7f04f785f8849e95255 SQLAlchemy-2.0.30.tar.gz # Locally computed sha256 checksums sha256 3c0f59ab887d041de6a4e52ffe3e9edb5d9522de909fae9a6cd7adb6e7be3293 LICENSE diff --git a/package/python-sqlalchemy/python-sqlalchemy.mk b/package/python-sqlalchemy/python-sqlalchemy.mk index b7dac92a99..e1180a4e1a 100644 --- a/package/python-sqlalchemy/python-sqlalchemy.mk +++ b/package/python-sqlalchemy/python-sqlalchemy.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_SQLALCHEMY_VERSION = 2.0.29 +PYTHON_SQLALCHEMY_VERSION = 2.0.30 PYTHON_SQLALCHEMY_SOURCE = SQLAlchemy-$(PYTHON_SQLALCHEMY_VERSION).tar.gz -PYTHON_SQLALCHEMY_SITE = https://files.pythonhosted.org/packages/99/04/59971bfc2f192e3b52376ca8d1e134c78d04bc044ef7e04cf10c42d2ce17 +PYTHON_SQLALCHEMY_SITE = https://files.pythonhosted.org/packages/36/d0/0137ebcf0dc230c2e82a621b3af755b8788a2a9dd6fd1b8cd6d5e7f6b00d PYTHON_SQLALCHEMY_SETUP_TYPE = setuptools PYTHON_SQLALCHEMY_LICENSE = MIT PYTHON_SQLALCHEMY_LICENSE_FILES = LICENSE -- 2.45.0 From thomas.petazzoni at bootlin.com Mon May 13 20:59:03 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 22:59:03 +0200 Subject: [Buildroot] [git commit] package/libzenoh-c: new package Message-ID: <20240513205943.A318F87279@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=1b533c2d9ee6247939fb34fbe6550dea0a656ff1 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master This package provides a C binding based on the main Zenoh implementation written in Rust. https://github.com/eclipse-zenoh/zenoh-c Signed-off-by: Alex Michel Signed-off-by: Thomas Petazzoni --- DEVELOPERS | 1 + package/Config.in | 1 + package/libzenoh-c/Config.in | 9 +++++++++ package/libzenoh-c/libzenoh-c.hash | 3 +++ package/libzenoh-c/libzenoh-c.mk | 40 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 54 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index ad03c26ea4..a9deddb343 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -83,6 +83,7 @@ N: Alessandro Partesotti F: package/oatpp/ N: Alex Michel +F: package/libzenoh-c/ F: package/libzenoh-pico/ F: package/network-manager-openvpn/ diff --git a/package/Config.in b/package/Config.in index 768103e0c4..1b6a5b0dab 100644 --- a/package/Config.in +++ b/package/Config.in @@ -2048,6 +2048,7 @@ menu "Networking" source "package/libwebsock/Config.in" source "package/libwebsockets/Config.in" source "package/libyang/Config.in" + source "package/libzenoh-c/Config.in" source "package/libzenoh-pico/Config.in" source "package/lksctp-tools/Config.in" source "package/mbuffer/Config.in" diff --git a/package/libzenoh-c/Config.in b/package/libzenoh-c/Config.in new file mode 100644 index 0000000000..d22807c047 --- /dev/null +++ b/package/libzenoh-c/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBZENOH_C + bool "libzenoh-c" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_RUSTC + help + This package provides a C binding based on the main + Zenoh implementation written in Rust. + + https://github.com/eclipse-zenoh/zenoh-c diff --git a/package/libzenoh-c/libzenoh-c.hash b/package/libzenoh-c/libzenoh-c.hash new file mode 100644 index 0000000000..8331f5cca4 --- /dev/null +++ b/package/libzenoh-c/libzenoh-c.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 c792f0be936ecbb3f759124be28950a01385f4680eaf4f1da55997640899648e libzenoh-c-0.11.0.2-cargo2.tar.gz +sha256 01a44774f7b1a453595c7c6d7f7308284ba6a1059dc49e14dad6647e1d44a338 LICENSE diff --git a/package/libzenoh-c/libzenoh-c.mk b/package/libzenoh-c/libzenoh-c.mk new file mode 100644 index 0000000000..3a50fe6bf1 --- /dev/null +++ b/package/libzenoh-c/libzenoh-c.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# libzenoh-c +# +################################################################################ + +LIBZENOH_C_VERSION = 0.11.0.2 +LIBZENOH_C_SITE = $(call github,eclipse-zenoh,zenoh-c,$(LIBZENOH_C_VERSION)) +LIBZENOH_C_LICENSE = Apache-2.0 or EPL-2.0 +LIBZENOH_C_LICENSE_FILES = LICENSE +LIBZENOH_C_INSTALL_STAGING = YES + +ifeq ($(BR2_ENABLE_DEBUG),y) +LIBZENOH_C_LIB_LOCATION = $(@D)/target/$(RUSTC_TARGET_NAME)/debug +else +LIBZENOH_C_LIB_LOCATION = $(@D)/target/$(RUSTC_TARGET_NAME)/release +endif + +define LIBZENOH_C_INSTALL_FILES + $(INSTALL) -D -m 644 \ + $(LIBZENOH_C_LIB_LOCATION)/libzenohc.so \ + $(1)/usr/lib/libzenohc.so +endef + +# This package does not provide any binaries or examples, and the +# cargo infra does not provide any possibility to disable the --bins +# option in cargo install step, we have to override the +# INSTALL_STAGING_CMDS and the INSTALL_TARGET_CMDS macros. + +define LIBZENOH_C_INSTALL_TARGET_CMDS + $(call LIBZENOH_C_INSTALL_FILES,$(TARGET_DIR)) +endef + +define LIBZENOH_C_INSTALL_STAGING_CMDS + $(call LIBZENOH_C_INSTALL_FILES,$(STAGING_DIR)) + mkdir -p $(STAGING_DIR)/usr/include/ + cp -dpfr $(@D)/include/* $(STAGING_DIR)/usr/include/ +endef + +$(eval $(cargo-package)) From thomas.petazzoni at bootlin.com Mon May 13 21:00:26 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:00:26 +0200 Subject: [Buildroot] [PATCH v5 1/1] package/libzenoh-c: new package In-Reply-To: References: Message-ID: <20240513230026.7ec663d3@windsurf> Hello Alex, On Mon, 13 May 2024 12:30:49 +0000 Michel Alex wrote: > This package provides a C binding based on the main > Zenoh implementation written in Rust. > Because this lib does not provide any binaries or examples, > and the cargo infra does not provide any possibility to > disable the --bins option in cargo install step, we > have to override the INSTALL_STAGING_CMDS and the > INSTALL_TARGET_CMDS macros to prevent failing of the > buildroot installation step. I have moved this explanation as a comment inside the .mk file, next to the install step, and I have applied your patch to our master branch. Thanks a lot, and sorry for the time it took to get your patch integrated! Best regards, Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 21:00:36 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:00:36 +0200 Subject: [Buildroot] [git commit] package/python-sqlalchemy: bump version to 2.0.30 Message-ID: <20240513210212.6ADD7872E7@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=fbd082e0cac44e53a83d62ff5c103fddd7fd6f31 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Thomas Petazzoni --- package/python-sqlalchemy/python-sqlalchemy.hash | 4 ++-- package/python-sqlalchemy/python-sqlalchemy.mk | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/python-sqlalchemy/python-sqlalchemy.hash b/package/python-sqlalchemy/python-sqlalchemy.hash index 0bc9256c54..d047719d54 100644 --- a/package/python-sqlalchemy/python-sqlalchemy.hash +++ b/package/python-sqlalchemy/python-sqlalchemy.hash @@ -1,5 +1,5 @@ # md5, sha256 from https://pypi.org/pypi/sqlalchemy/json -md5 ea746e69e0702cc8d2c91c5140ce35cc SQLAlchemy-2.0.28.tar.gz -sha256 bd9566b8e58cabd700bc367b60e90d9349cd16f0984973f98a9a09f9c64e86f0 SQLAlchemy-2.0.29.tar.gz +md5 c13a21626c7ae00b42a08880af574e3c SQLAlchemy-2.0.30.tar.gz +sha256 2b1708916730f4830bc69d6f49d37f7698b5bd7530aca7f04f785f8849e95255 SQLAlchemy-2.0.30.tar.gz # Locally computed sha256 checksums sha256 3c0f59ab887d041de6a4e52ffe3e9edb5d9522de909fae9a6cd7adb6e7be3293 LICENSE diff --git a/package/python-sqlalchemy/python-sqlalchemy.mk b/package/python-sqlalchemy/python-sqlalchemy.mk index b7dac92a99..e1180a4e1a 100644 --- a/package/python-sqlalchemy/python-sqlalchemy.mk +++ b/package/python-sqlalchemy/python-sqlalchemy.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_SQLALCHEMY_VERSION = 2.0.29 +PYTHON_SQLALCHEMY_VERSION = 2.0.30 PYTHON_SQLALCHEMY_SOURCE = SQLAlchemy-$(PYTHON_SQLALCHEMY_VERSION).tar.gz -PYTHON_SQLALCHEMY_SITE = https://files.pythonhosted.org/packages/99/04/59971bfc2f192e3b52376ca8d1e134c78d04bc044ef7e04cf10c42d2ce17 +PYTHON_SQLALCHEMY_SITE = https://files.pythonhosted.org/packages/36/d0/0137ebcf0dc230c2e82a621b3af755b8788a2a9dd6fd1b8cd6d5e7f6b00d PYTHON_SQLALCHEMY_SETUP_TYPE = setuptools PYTHON_SQLALCHEMY_LICENSE = MIT PYTHON_SQLALCHEMY_LICENSE_FILES = LICENSE From thomas.petazzoni at bootlin.com Mon May 13 21:04:05 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:04:05 +0200 Subject: [Buildroot] [PATCH 1/1] package/python-sqlalchemy: bump version to 2.0.30 In-Reply-To: <20240513205902.1096057-1-flavio.tapajos@newtesc.com.br> References: <20240513205902.1096057-1-flavio.tapajos@newtesc.com.br> Message-ID: <20240513230405.5a3efcaf@windsurf> On Mon, 13 May 2024 17:59:02 -0300 Fl?vio Tapaj?s wrote: > --- > package/python-sqlalchemy/python-sqlalchemy.hash | 4 ++-- > package/python-sqlalchemy/python-sqlalchemy.mk | 4 ++-- > 2 files changed, 4 insertions(+), 4 deletions(-) Your Signed-off-by was missing... but I realized right after pushing, so unfortunately I pushed as-is, without your Signed-off-by :-/ Best regards, Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 21:05:25 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:05:25 +0200 Subject: [Buildroot] [PATCH 1/1] boot/arm-trusted-firmware: add trusted boot option In-Reply-To: <20240410212834.479ac502@windsurf> References: <20240328181247.3009506-1-javad.rahimipetroudi@mind.be> <20240410212834.479ac502@windsurf> Message-ID: <20240513230525.287a3124@windsurf> Hello Javad, Do you have any feedback on the below questions? Thanks! Thomas On Wed, 10 Apr 2024 21:28:34 +0200 Thomas Petazzoni via buildroot wrote: > Hello Javad, > > On Thu, 28 Mar 2024 19:12:47 +0100 > Javad Rahimipetroudi via buildroot wrote: > > > This patch adds the required fields to enable Trusted Board Boot in > > TF-A. The users should provide ROT_KEY private key to build the TF-A in > > this mode. The ROT_KEY is used to sign the FIP image during the TF-A > > build. Furthermore, the source code of the mbedTLS is also used during > > the build process. > > > > Signed-off-by: Javad Rahimipetroudi > > Thanks for this contribution! It looks good, I only have one > doubt/issue with it. > > > +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_TRUSTED_BOOT),y) > > +ARM_TRUSTED_FIRMWARE_TRUSTED_BOOT_ROT_KEY = $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_ROT_KEY)) > > +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += \ > > + TRUSTED_BOARD_BOOT=1 \ > > + MBEDTLS_DIR=$(MBEDTLS_SRCDIR) \ > > This re-use of the mbedtls source code, outside of the mbedtls package > build itself sounded a bit suspicious to me. Indeed, mbedtls being a > dependency of arm-trusted-firmware, it means that > $(MBEDTLS_SRCDIR) will contain an already built mbedtls. Would this be > a problem? > > Looking at the arm-trusted-firmware build logic, it looks like it > isn't: the TF-A build system will rebuild in its own folder the mbedtls > library. However, when I see: > > LIBMBEDTLS_SRCS += $(addprefix ${MBEDTLS_DIR}/library/, \ > aes.c \ > asn1parse.c \ > asn1write.c \ > cipher.c \ > cipher_wrap.c \ > constant_time.c \ > hash_info.c \ > memory_buffer_alloc.c \ > oid.c \ > platform.c \ > platform_util.c \ > bignum.c \ > bignum_core.c \ > gcm.c \ > md.c \ > pk.c \ > pk_wrap.c \ > pkparse.c \ > pkwrite.c \ > sha256.c \ > sha512.c \ > ecdsa.c \ > ecp_curves.c \ > ecp.c \ > rsa.c \ > rsa_alt_helpers.c \ > x509.c \ > x509_crt.c \ > ) > > in the TF-A build system, I'm a bit scared, because it means that there > is a pretty tight coupling between the version of TF-A and the version > of mbedtls. If we update mbedtls to a newer version which has an > additional source file... TF-A would have to be updated accordingly. > This looks a bit "meh" to me. > > However, I don't really have a super great alternative to offer. The > only alternative that I can think of is to have > boot/arm-trusted-firmware/ download/extract its own copy of mbedtls, so > that (1) we control its version independently of the mbedtls package > and (2) we don't poke into the mbedtls source directory. > > Let's see what the other maintainers think of this somewhat special > situation. > > Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 21:13:00 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:13:00 +0200 Subject: [Buildroot] [git commit] package/kvmtool: bump package version to 4d2c017f41 Message-ID: <20240513211740.33B89872F6@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=580f6ef46dfec9db8483eeab8d639b935641289f branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master The current version dates back to 2017 and is lacking riscv support. Bump the version to a more recent one (4d2c017f41) which supports riscv and contains a large number of updates as well a CVE fixes. Since kvmtool does not seems to have releases, just bump to the current git HEAD. Signed-off-by: Cl??ment L??ger Signed-off-by: Thomas Petazzoni --- package/kvmtool/kvmtool.hash | 2 +- package/kvmtool/kvmtool.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kvmtool/kvmtool.hash b/package/kvmtool/kvmtool.hash index f7436dd3c9..63bbb7167c 100644 --- a/package/kvmtool/kvmtool.hash +++ b/package/kvmtool/kvmtool.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 dbc3537e63ebff35bc19bdf6c90d74dad24f9175d8130baba79831ba2ad1788d kvmtool-f77d646ba01d04be5aad9449ac00719c043fe36e-git4.tar.gz +sha256 a8504d8b184cae4e65ff5555cc84a436f3fbbc832a8017e3ca59d997dd5581db kvmtool-4d2c017f41533b0e51e00f689050c26190a15318-git4.tar.gz sha256 0d5bf346df9e635a29dcdddf832dc5b002ca6cdc1c5c9c6c567d2a61bb0c5c15 COPYING diff --git a/package/kvmtool/kvmtool.mk b/package/kvmtool/kvmtool.mk index 2bcd556f9b..7fec6643f8 100644 --- a/package/kvmtool/kvmtool.mk +++ b/package/kvmtool/kvmtool.mk @@ -4,7 +4,7 @@ # ################################################################################ -KVMTOOL_VERSION = f77d646ba01d04be5aad9449ac00719c043fe36e +KVMTOOL_VERSION = 4d2c017f41533b0e51e00f689050c26190a15318 KVMTOOL_SITE = https://git.kernel.org/pub/scm/linux/kernel/git/will/kvmtool.git KVMTOOL_SITE_METHOD = git KVMTOOL_DEPENDENCIES = \ From thomas.petazzoni at bootlin.com Mon May 13 21:13:16 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:13:16 +0200 Subject: [Buildroot] [git commit] package/kvmtool: enable build for riscv Message-ID: <20240513211740.3E50787300@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=cd65b5e7551fe59a663f7c73818ca1777c66c117 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master kvmtool now supports riscv, enable it and select BR2_PACKAGE_DTC which is needed to build it. Signed-off-by: Cl??ment L??ger Signed-off-by: Thomas Petazzoni --- package/kvmtool/Config.in | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/package/kvmtool/Config.in b/package/kvmtool/Config.in index bf19a25376..35225e0150 100644 --- a/package/kvmtool/Config.in +++ b/package/kvmtool/Config.in @@ -6,11 +6,12 @@ config BR2_PACKAGE_KVMTOOL # Only mips big-endian seems to be supported (build breaks) # Should work on powerpc64 but the build breaks with missing types depends on BR2_aarch64 || BR2_arm || BR2_armeb || BR2_i386 || \ - BR2_mips || BR2_x86_64 + BR2_mips || BR2_x86_64 || BR2_riscv # libfdt is only required for DT architectures... # ...but it's not able to build for static targets - depends on !(BR2_STATIC_LIBS && (BR2_aarch64 || BR2_arm || BR2_armeb)) - select BR2_PACKAGE_DTC if BR2_aarch64 || BR2_arm || BR2_armeb + depends on !(BR2_STATIC_LIBS && (BR2_aarch64 || BR2_arm || \ + BR2_armeb || BR2_riscv)) + select BR2_PACKAGE_DTC if BR2_aarch64 || BR2_arm || BR2_armeb || BR2_riscv help kvmtool is a lightweight tool for hosting KVM guests. As a pure virtualization tool it only supports guests using From thomas.petazzoni at bootlin.com Mon May 13 21:18:10 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:18:10 +0200 Subject: [Buildroot] [PATCH 0/2] Update kvmtool and add support for riscv In-Reply-To: <20240327150616.39345-1-cleger@rivosinc.com> References: <20240327150616.39345-1-cleger@rivosinc.com> Message-ID: <20240513231810.4c4b1655@windsurf> Hello Cl?ment, On Wed, 27 Mar 2024 16:06:11 +0100 Cl?ment L?ger wrote: > Bump kvmtool to a recent version (current one dates back to 2017) and > enable riscv support. > > Cl?ment L?ger (2): > package/kvmtool: bump package version to 4d2c017f41 > package/kvmtool: enable build for riscv Thanks, series applied, after tweaking the first patch due to recent changes in the download infrastructure for git-fetched packages. Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 21:19:42 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:19:42 +0200 Subject: [Buildroot] [PATCH] linux-pam: add patch for spurious password expires in 0 days warning In-Reply-To: <20240327140125.154985-1-andreas.hilse@gmail.com> References: <20240327140125.154985-1-andreas.hilse@gmail.com> Message-ID: <20240513231942.2dd93919@windsurf> Hello Andreas, On Wed, 27 Mar 2024 15:01:25 +0100 Andreas Hilse via buildroot wrote: > Buildroot 2024.02 brings updated linux-pam 1.6.0 package which has a > regression, that warns users about their password expiring in 0 days > when logging in, even with password expiration not being active. > There is no newer version released yet. > Patch is working as intended, tested by me. > > Patch taken from linux-pam PR: https://github.com/linux-pam/linux-pam/pull/744 The patch is now upstream, at https://github.com/linux-pam/linux-pam/commit/470b5bdd8fd29d6b35e3a80f9a57bdd4b2438200 Could you adjust the commit title to: package/linux-pam: add patch for spurious password expires in 0 days warning > diff --git a/package/linux-pam/0002-do-not-warn-if-password-aging.patch b/package/linux-pam/0002-do-not-warn-if-password-aging.patch > new file mode 100644 > index 0000000000..7df83bf058 > --- /dev/null > +++ b/package/linux-pam/0002-do-not-warn-if-password-aging.patch > @@ -0,0 +1,27 @@ > +From 470b5bdd8fd29d6b35e3a80f9a57bdd4b2438200 Mon Sep 17 00:00:00 2001 > +From: Tobias Stoeckmann > +Date: Fri, 19 Jan 2024 10:09:00 +0100 > +Subject: [PATCH] pam_unix: do not warn if password aging is disabled > + > +Later checks will print a warning if daysleft is 0. If password > +aging is disabled, leave daysleft at -1. > + > +Resolves: https://github.com/linux-pam/linux-pam/issues/743 > +Fixes: 9ebc14085a3b ("pam_unix: allow disabled password aging") > +Signed-off-by: Tobias Stoeckmann and here, add: Upstream: https://github.com/linux-pam/linux-pam/commit/470b5bdd8fd29d6b35e3a80f9a57bdd4b2438200 followed by your Signed-off-by line ? Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 21:24:04 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:24:04 +0200 Subject: [Buildroot] [git commit] package/flutter-packages: bump version to ab1630b9b9bd1130b4d5d1ac18a588b690fd0fa3 Message-ID: <20240513212456.ABEC387309@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=8c79f4be597d78428126bfdb02eb47c3126f3ebe branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Adam Duskett Signed-off-by: Thomas Petazzoni --- package/flutter-packages/flutter-packages.hash | 2 +- package/flutter-packages/flutter-packages.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/flutter-packages/flutter-packages.hash b/package/flutter-packages/flutter-packages.hash index ea30e7a36d..f266c497e4 100644 --- a/package/flutter-packages/flutter-packages.hash +++ b/package/flutter-packages/flutter-packages.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 8276276e050c1ea45787f74b0f8c915b8cf2162b6af8537ffa9886bd423f2828 flutter-packages-947e34ce9fedcdd6750b54eb1cc74b854b49ab48.tar.gz +sha256 2e1e19713ac74b6e00a6f5ec516e8ccda5e5ba1fc8b249d40abcfe4cb50dff87 flutter-packages-ab1630b9b9bd1130b4d5d1ac18a588b690fd0fa3.tar.gz sha256 89519eca6f7b9529b35bdddd623a58c3af06a88c458dbd6531ddb4675acf75a9 LICENSE diff --git a/package/flutter-packages/flutter-packages.mk b/package/flutter-packages/flutter-packages.mk index 0cc3bdff24..6b1a4371e8 100644 --- a/package/flutter-packages/flutter-packages.mk +++ b/package/flutter-packages/flutter-packages.mk @@ -4,7 +4,7 @@ # ################################################################################ -FLUTTER_PACKAGES_VERSION = 947e34ce9fedcdd6750b54eb1cc74b854b49ab48 +FLUTTER_PACKAGES_VERSION = ab1630b9b9bd1130b4d5d1ac18a588b690fd0fa3 FLUTTER_PACKAGES_SITE = $(call github,flutter,packages,$(FLUTTER_PACKAGES_VERSION)) FLUTTER_PACKAGES_LICENSE = BSD-3-Clause FLUTTER_PACKAGES_LICENSE_FILES = LICENSE From thomas.petazzoni at bootlin.com Mon May 13 21:24:59 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:24:59 +0200 Subject: [Buildroot] [PATCH] package/flutter-packages: bump version to ab1630b9b9bd1130b4d5d1ac18a588b690fd0fa3 In-Reply-To: <20240326174059.499034-1-adam.duskett@amarulasolutions.com> References: <20240326174059.499034-1-adam.duskett@amarulasolutions.com> Message-ID: <20240513232459.47921ffd@windsurf> On Tue, 26 Mar 2024 11:40:59 -0600 Adam Duskett wrote: > Signed-off-by: Adam Duskett > --- > package/flutter-packages/flutter-packages.hash | 2 +- > package/flutter-packages/flutter-packages.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 21:26:41 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:26:41 +0200 Subject: [Buildroot] [git commit] package/musl: enable on s390x Message-ID: <20240513212659.C5F0087316@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=ab990cf58a724a178dbdd55afdb520212f7197c0 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Add s390x musl supported archs. Upstream musl already supports s390x[1]. Tested with qemu_s390s_defconfig: $ output/host/bin/qemu-system-s390x -M s390-ccw-virtio -cpu max,zpci=on -m 4G -smp 2 -kernel output/bzImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append "rootwait root=/dev/vda net.ifnames=0 biosdevname=0" -display none -serial mon:stdio -net nic,model=virtio -net user (...) Welcome to Buildroot buildroot login: root # uname -a Linux buildroot 6.1.44 #2 SMP Sun Feb 18 01:33:42 CET 2024 s390x GNU/Linux # /lib/ld-musl-s390x.so.1 musl libc (s390x) Version 1.2.4 Dynamic Program Loader Usage: /lib/ld-musl-s390x.so.1 [options] [--] pathname [args] [1]: https://git.musl-libc.org/cgit/musl/commit/?id=15094943050eb9a564f409323070e50b40f78816 Signed-off-by: Ga??l PORTAY Signed-off-by: Thomas Petazzoni --- package/musl/Config.in | 1 + 1 file changed, 1 insertion(+) diff --git a/package/musl/Config.in b/package/musl/Config.in index 7fba85bcd9..a6e2af054c 100644 --- a/package/musl/Config.in +++ b/package/musl/Config.in @@ -16,6 +16,7 @@ config BR2_PACKAGE_MUSL_ARCH_SUPPORTS default y if BR2_powerpc64 default y if BR2_powerpc64le default y if BR2_riscv + default y if BR2_s390x default y if BR2_sh default y if BR2_x86_64 depends on !BR2_POWERPC_CPU_HAS_SPE # not supported, build breaks From thomas.petazzoni at bootlin.com Mon May 13 21:27:19 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:27:19 +0200 Subject: [Buildroot] [PATCH 1/1] package/musl: enable on s390x In-Reply-To: <20240218011118.1077002-1-gael.portay@rtone.fr> References: <20240218011118.1077002-1-gael.portay@rtone.fr> Message-ID: <20240513232719.09befc04@windsurf> On Sun, 18 Feb 2024 02:11:17 +0100 Ga?l PORTAY wrote: > Add s390x musl supported archs. Upstream musl already supports s390x[1]. > > Tested with qemu_s390s_defconfig: > > $ output/host/bin/qemu-system-s390x -M s390-ccw-virtio -cpu max,zpci=on -m 4G -smp 2 -kernel output/bzImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append "rootwait root=/dev/vda net.ifnames=0 biosdevname=0" -display none -serial mon:stdio -net nic,model=virtio -net user > (...) > Welcome to Buildroot > buildroot login: root > # uname -a > Linux buildroot 6.1.44 #2 SMP Sun Feb 18 01:33:42 CET 2024 s390x GNU/Linux > # /lib/ld-musl-s390x.so.1 > musl libc (s390x) > Version 1.2.4 > Dynamic Program Loader > Usage: /lib/ld-musl-s390x.so.1 [options] [--] pathname [args] > > [1]: https://git.musl-libc.org/cgit/musl/commit/?id=15094943050eb9a564f409323070e50b40f78816 > > Signed-off-by: Ga?l PORTAY > --- > package/musl/Config.in | 1 + > 1 file changed, 1 insertion(+) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 21:27:37 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:27:37 +0200 Subject: [Buildroot] [git commit] package/slirp4netns: bump to version 1.2.3 Message-ID: <20240513212804.0F29B87321@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=052deababf60838a19f6334bae1746c841eba877 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Raphael Pavlidis Signed-off-by: Thomas Petazzoni --- package/slirp4netns/slirp4netns.hash | 2 +- package/slirp4netns/slirp4netns.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/slirp4netns/slirp4netns.hash b/package/slirp4netns/slirp4netns.hash index e3115c1be0..e310da1af2 100644 --- a/package/slirp4netns/slirp4netns.hash +++ b/package/slirp4netns/slirp4netns.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 b584edde686d3cfbac210cbdb93c4b0ba5d8cc0a6a4d92b9dfc3c5baec99c727 slirp4netns-1.2.0.tar.gz +sha256 acce648fab8fe5f113c41a8fd6d20177708519b4ddaa60f845e1998a17b22ca5 slirp4netns-1.2.3.tar.gz sha256 58db3cfabf8ec806bc060e54ab5466a31de4a3ae80fe4a8aa02fb6b1c053c93f COPYING diff --git a/package/slirp4netns/slirp4netns.mk b/package/slirp4netns/slirp4netns.mk index 7ff594cc44..7fa992af6d 100644 --- a/package/slirp4netns/slirp4netns.mk +++ b/package/slirp4netns/slirp4netns.mk @@ -4,7 +4,7 @@ # ################################################################################ -SLIRP4NETNS_VERSION = 1.2.0 +SLIRP4NETNS_VERSION = 1.2.3 SLIRP4NETNS_SITE = $(call github,rootless-containers,slirp4netns,v$(SLIRP4NETNS_VERSION)) SLIRP4NETNS_LICENSE = GPL-2.0 SLIRP4NETNS_LICENSE_FILES = COPYING From thomas.petazzoni at bootlin.com Mon May 13 21:28:03 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:28:03 +0200 Subject: [Buildroot] [PATCH v1 1/1] package/slirp4netns: bump to version 1.2.3 In-Reply-To: <20240219184827.790288-1-raphael.pavlidis@gmail.com> References: <20240219184827.790288-1-raphael.pavlidis@gmail.com> Message-ID: <20240513232803.1cafa524@windsurf> On Mon, 19 Feb 2024 18:48:27 +0000 Raphael Pavlidis wrote: > Signed-off-by: Raphael Pavlidis > --- > package/slirp4netns/slirp4netns.hash | 2 +- > package/slirp4netns/slirp4netns.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Mon May 13 21:30:14 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Mon, 13 May 2024 23:30:14 +0200 Subject: [Buildroot] [PATCH 1/2] board/orangepi/orangepi-lite: switch to extlinux In-Reply-To: <20240220051926.68559-1-jan.kraval@gmail.com> References: <20240220051926.68559-1-jan.kraval@gmail.com> Message-ID: <20240513233014.3b09e56e@windsurf> On Tue, 20 Feb 2024 06:19:25 +0100 Jan Kraval wrote: > Switch to extlinux instead of U-Boot boot script. Drop custom > boot script and genimage config. Instead use common orangepi > files from board/orangepi/common. > > Signed-off-by: Jan Kraval Thanks for this patch, it looks good, except for one question, below. > @@ -25,15 +29,7 @@ BR2_TARGET_UBOOT_CUSTOM_VERSION=y > BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.10" > BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_lite" > BR2_TARGET_UBOOT_NEEDS_DTC=y > -BR2_TARGET_UBOOT_NEEDS_PYTHON3=y Why is this option being dropped? I don't see how the move to extlinux has anything to do with this. For a given version/configuration of U-Boot (which are not changed in this commit), whether host-python3 is needed or not should not change. Could you clarify? Make sure to test your configuration with ./utils/docker-run, to verify that you are not dependent on system-provided packages. Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From brandon.maier at collins.com Mon May 13 21:30:35 2024 From: brandon.maier at collins.com (Brandon Maier) Date: Mon, 13 May 2024 21:30:35 +0000 Subject: [Buildroot] [PATCH] support/testing/infra/builder.py: fix missing $HOME during build Message-ID: <20240513213035.1738493-1-brandon.maier@collins.com> When running a test that uses host-python-setuptools using the Buildroot Docker image, for example running the following command, > ./utils/docker-run ./support/testing/run-tests -o output -s -k tests.package.test_python_pytest.TestPythonPy3Pytest The build fails with the following error, > File "/home/blmaier/buildroot/output/TestPythonPy3Pytest/build/host-python-setuptools-69.2.0/setuptools/_distutils/dist.py", line 354, in _gen_paths > yield pathlib.Path('~').expanduser() / filename > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > File "/home/blmaier/buildroot/output/TestPythonPy3Pytest/host/lib/python3.11/pathlib.py", line 1385, in expanduser > raise RuntimeError("Could not determine home directory.") > RuntimeError: Could not determine home directory. > > ERROR Backend subprocess exited when trying to invoke get_requires_for_build_wheel Python setuptools is looking for $HOME but failing to find it. Signed-off-by: Brandon Maier --- support/testing/infra/builder.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/support/testing/infra/builder.py b/support/testing/infra/builder.py index a2abb9ed89..295bc7b83d 100644 --- a/support/testing/infra/builder.py +++ b/support/testing/infra/builder.py @@ -52,7 +52,10 @@ class Builder(object): "> end defconfig\n") self.logfile.flush() - env = {"PATH": os.environ["PATH"]} + env = { + "PATH": os.environ["PATH"], + "HOME": os.environ["HOME"] + } env.update(make_extra_env) cmd = ["make", @@ -79,7 +82,11 @@ class Builder(object): in the environment that calls make. e.g. make_extra_env={"BR2_DL_DIR": "/path"} """ - env = {"PATH": os.environ["PATH"]} + env = { + "PATH": os.environ["PATH"], + "HOME": os.environ["HOME"] + } + if "http_proxy" in os.environ: self.logfile.write("Using system proxy: " + os.environ["http_proxy"] + "\n") -- 2.45.0 From ps.report at gmx.net Mon May 13 21:48:32 2024 From: ps.report at gmx.net (Peter Seiderer) Date: Mon, 13 May 2024 23:48:32 +0200 Subject: [Buildroot] [PATCH v1] package/wiringpi: re-add and bump version to 3.4 Message-ID: <20240513214832.18094-1-ps.report@gmx.net> - revert commit 90dd780391 ("package/wiringpi: remove") - bump version to 3.4 - change download URL to github - change home page URL to github - rebased 0001-Adjust-for-buildroot-build.patch - add optional libxcrypt dependency, fix build failure since bump of glibc to version 2.39 - needs kernel headers >= 5.5 for GPIOLINE_FLAG_BIAS_PULL_UP, GPIOLINE_FLAG_BIAS_PULL_DOWN and GPIOLINE_FLAG_BIAS_DISABLE usage Signed-off-by: Peter Seiderer --- Config.in.legacy | 9 -- DEVELOPERS | 1 + package/Config.in | 1 + package/squeezelite/squeezelite.mk | 5 + .../0001-Adjust-for-buildroot-build.patch | 126 ++++++++++++++++++ ...erial-fix-compile-for-missing-baud-d.patch | 47 +++++++ package/wiringpi/Config.in | 16 +++ package/wiringpi/wiringpi.hash | 3 + package/wiringpi/wiringpi.mk | 36 +++++ 9 files changed, 235 insertions(+), 9 deletions(-) create mode 100644 package/wiringpi/0001-Adjust-for-buildroot-build.patch create mode 100644 package/wiringpi/0002-wiringPi-wiringSerial-fix-compile-for-missing-baud-d.patch create mode 100644 package/wiringpi/Config.in create mode 100644 package/wiringpi/wiringpi.hash create mode 100644 package/wiringpi/wiringpi.mk diff --git a/Config.in.legacy b/Config.in.legacy index 46f7a304cb..8d4f488dbd 100644 --- a/Config.in.legacy +++ b/Config.in.legacy @@ -1938,15 +1938,6 @@ config BR2_PACKAGE_KODI_PERIPHERAL_STEAMCONTROLLER comment "Legacy options removed in 2020.05" -config BR2_PACKAGE_WIRINGPI - bool "wiringpi package removed" - select BR2_LEGACY - help - The author of wiringpi has deprecated the package, and - completely removed the git tree that was serving the - sources, with this message: - Please look for alternatives for wiringPi - config BR2_PACKAGE_PYTHON_PYCRYPTO bool "python-pycrypto package removed" select BR2_LEGACY diff --git a/DEVELOPERS b/DEVELOPERS index d653648718..9f7bade097 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2546,6 +2546,7 @@ F: package/fft-eval/ F: package/python-blinker/ F: package/qt5/qt5speech/ F: package/speechd/ +F: package/wiringpi/ N: Peter Thompson F: package/sdl2_gfx/ diff --git a/package/Config.in b/package/Config.in index c29b4a5101..ffb6c69562 100644 --- a/package/Config.in +++ b/package/Config.in @@ -1805,6 +1805,7 @@ menu "Hardware handling" source "package/tslib/Config.in" source "package/uhd/Config.in" source "package/urg/Config.in" + source "package/wiringpi/Config.in" endmenu menu "Javascript" diff --git a/package/squeezelite/squeezelite.mk b/package/squeezelite/squeezelite.mk index b0347c4df9..2ed3d8b769 100644 --- a/package/squeezelite/squeezelite.mk +++ b/package/squeezelite/squeezelite.mk @@ -40,6 +40,11 @@ ifeq ($(BR2_PACKAGE_SQUEEZELITE_VISEXPORT),y) SQUEEZELITE_MAKE_OPTS += -DVISEXPORT endif +ifeq ($(BR2_PACKAGE_WIRINGPI),y) +SQUEEZELITE_DEPENDENCIES += wiringpi +SQUEEZELITE_MAKE_OPTS += -DRPI +endif + define SQUEEZELITE_BUILD_CMDS $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ OPTS="$(SQUEEZELITE_MAKE_OPTS)" -C $(@D) all diff --git a/package/wiringpi/0001-Adjust-for-buildroot-build.patch b/package/wiringpi/0001-Adjust-for-buildroot-build.patch new file mode 100644 index 0000000000..2720c502c1 --- /dev/null +++ b/package/wiringpi/0001-Adjust-for-buildroot-build.patch @@ -0,0 +1,126 @@ +From ebfa5527467ba175cca84afeae244c06e265a508 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Wed, 2 Dec 2015 00:22:26 +0100 +Subject: [PATCH] Adjust for buildroot build. + + - enable CC override + - fix devLib/gpio include path for local build (without installing first) + - change CFLAGS from '=' to '+=' to honour buildroot given flags + - add linker name link for libwiringPiDev and libwiringPi for local linking + (without installing first) + - fix install linker name link (do not link with absolute path) + - add gpio-static linking target + +Signed-off-by: Peter Seiderer + + - Rebased for wiringpi-8d188fa0e00bb8c6ff6eddd07bf92857e9bd533a + +Signed-off-by: Atanas Palavrov + + - Rebased for wiringpi-3.4 +Signed-off-by: Peter Seiderer +--- + devLib/Makefile | 7 ++++--- + gpio/Makefile | 12 ++++++++---- + wiringPi/Makefile | 5 +++-- + 3 files changed, 15 insertions(+), 9 deletions(-) + +diff --git a/devLib/Makefile b/devLib/Makefile +index 611e423..d0c70d0 100644 +--- a/devLib/Makefile ++++ b/devLib/Makefile +@@ -37,9 +37,9 @@ DYNAMIC=libwiringPiDev.so.$(VERSION) + #DEBUG = -g -O0 + DEBUG = -O2 + CC ?= gcc +-INCLUDE = -I. ++INCLUDE = -I../wiringPi + DEFS = -D_GNU_SOURCE +-CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Winline $(INCLUDE) -pipe -fPIC $(EXTRA_CFLAGS) ++CFLAGS += $(DEBUG) $(DEFS) -Wformat=2 -Wall -Winline $(INCLUDE) -pipe -fPIC $(EXTRA_CFLAGS) + + LIBS = + +@@ -69,6 +69,7 @@ $(STATIC): $(OBJ) + $(DYNAMIC): $(OBJ) + $Q echo "[Link (Dynamic)]" + $Q $(CC) -shared -Wl,-soname,libwiringPiDev.so$(WIRINGPI_SONAME_SUFFIX) -o libwiringPiDev.so.$(VERSION) -lpthread $(OBJ) ++ $Q ln -sf libwiringPiDev.so.$(VERSION) libwiringPiDev.so + + .c.o: + $Q echo [Compile] $< +@@ -93,7 +94,7 @@ install: $(DYNAMIC) + $Q echo "[Install Dynamic Lib]" + $Q install -m 0755 -d $(DESTDIR)$(PREFIX)/lib + $Q install -m 0755 libwiringPiDev.so.$(VERSION) $(DESTDIR)$(PREFIX)/lib/libwiringPiDev.so.$(VERSION) +- $Q ln -sf $(DESTDIR)$(PREFIX)/lib/libwiringPiDev.so.$(VERSION) $(DESTDIR)/lib/libwiringPiDev.so ++ $Q ln -sf libwiringPiDev.so.$(VERSION) $(DESTDIR)$(PREFIX)/lib/libwiringPiDev.so + $Q $(LDCONFIG) + + .PHONY: install-static +diff --git a/gpio/Makefile b/gpio/Makefile +index 249bb24..3aa24b7 100644 +--- a/gpio/Makefile ++++ b/gpio/Makefile +@@ -33,10 +33,10 @@ endif + #DEBUG = -g -O0 + DEBUG = -O2 + CC ?= gcc +-INCLUDE = -I$(DESTDIR)$(PREFIX)/include +-CFLAGS = $(DEBUG) -Wall -Wextra $(INCLUDE) -Winline -pipe $(EXTRA_CFLAGS) ++INCLUDE = -I../wiringPi -I../devLib ++CFLAGS += $(DEBUG) -Wall -Wextra $(INCLUDE) -Winline -pipe $(EXTRA_CFLAGS) + +-LDFLAGS = -L$(DESTDIR)$(PREFIX)/lib ++LDFLAGS = -L../wiringPi -L../devLib + LIBS = -lwiringPi -lwiringPiDev -lpthread -lrt -lm -lcrypt + + # May not need to alter anything below this line +@@ -52,9 +52,13 @@ version.h: ../VERSION + $Q echo Need to run newVersion above. + + gpio: $(OBJ) +- $Q echo [Link] ++ $Q echo "[Link (Dynamic)]" + $Q $(CC) -o $@ $(OBJ) $(LDFLAGS) $(LIBS) + ++gpio-static: $(OBJ) ++ $Q echo "[Link (Static)]" ++ $Q $(CC) -static -o gpio $(OBJ) ../wiringPi/libwiringPi.a ../devLib/libwiringPiDev.a -lpthread ++ + .c.o: + $Q echo [Compile] $< + $Q $(CC) -c $(CFLAGS) $< -o $@ +diff --git a/wiringPi/Makefile b/wiringPi/Makefile +index 88fc48e..082bfaf 100644 +--- a/wiringPi/Makefile ++++ b/wiringPi/Makefile +@@ -39,7 +39,7 @@ DEBUG = -O2 + CC ?= gcc + INCLUDE = -I. + DEFS = -D_GNU_SOURCE +-CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Wextra -Winline $(INCLUDE) -pipe -fPIC $(EXTRA_CFLAGS) ++CFLAGS += $(DEBUG) $(DEFS) -Wformat=2 -Wall -Wextra -Winline $(INCLUDE) -pipe -fPIC $(EXTRA_CFLAGS) + #CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Wextra -Wconversion -Winline $(INCLUDE) -pipe -fPIC + + LIBS = -lm -lpthread -lrt -lcrypt +@@ -77,6 +77,7 @@ static: + $(DYNAMIC): $(OBJ) + $Q echo "[Link (Dynamic)]" + $Q $(CC) -shared -Wl,-soname,libwiringPi.so$(WIRINGPI_SONAME_SUFFIX) -o libwiringPi.so.$(VERSION) $(OBJ) $(LIBS) ++ $Q ln -sf libwiringPi.so.$(VERSION) libwiringPi.so + + .c.o: + $Q echo [Compile] $< +@@ -102,7 +103,7 @@ install: $(DYNAMIC) + $Q echo "[Install Dynamic Lib]" + $Q install -m 0755 -d $(DESTDIR)$(PREFIX)/lib + $Q install -m 0755 libwiringPi.so.$(VERSION) $(DESTDIR)$(PREFIX)/lib/libwiringPi.so.$(VERSION) +- $Q ln -sf $(DESTDIR)$(PREFIX)/lib/libwiringPi.so.$(VERSION) $(DESTDIR)/lib/libwiringPi.so ++ $Q ln -sf libwiringPi.so.$(VERSION) $(DESTDIR)$(PREFIX)/lib/libwiringPi.so + $Q $(LDCONFIG) + + .PHONY: check-deb-destdir +-- +2.45.0 + diff --git a/package/wiringpi/0002-wiringPi-wiringSerial-fix-compile-for-missing-baud-d.patch b/package/wiringpi/0002-wiringPi-wiringSerial-fix-compile-for-missing-baud-d.patch new file mode 100644 index 0000000000..c9c4385d48 --- /dev/null +++ b/package/wiringpi/0002-wiringPi-wiringSerial-fix-compile-for-missing-baud-d.patch @@ -0,0 +1,47 @@ +From 1e7a7a625ca20633062406ce525b19d168c356af Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Mon, 20 Mar 2017 20:51:20 +0100 +Subject: [PATCH] wiringPi/wiringSerial: fix compile for missing baud defines + +For sparc-buildroot-linux-uclibc/sysroot/usr/include/asm/termbits.h +containing: + + /* These have totally bogus values and nobody uses them + so far. Later on we'd have to use say 0x10000x and + adjust CBAUD constant and drivers accordingly. + #define B2500000 0x00001010 + #define B3000000 0x00001011 + #define B3500000 0x00001012 + #define B4000000 0x00001013 */ + +Signed-off-by: Peter Seiderer +--- + wiringPi/wiringSerial.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/wiringPi/wiringSerial.c b/wiringPi/wiringSerial.c +index e1587ad..4ac8d1e 100644 +--- a/wiringPi/wiringSerial.c ++++ b/wiringPi/wiringSerial.c +@@ -75,10 +75,18 @@ int serialOpen (const char *device, const int baud) + case 1152000: myBaud = B1152000 ; break ; + case 1500000: myBaud = B1500000 ; break ; + case 2000000: myBaud = B2000000 ; break ; ++#if defined(B2500000) + case 2500000: myBaud = B2500000 ; break ; ++#endif ++#if defined(B3000000) + case 3000000: myBaud = B3000000 ; break ; ++#endif ++#if defined(B3500000) + case 3500000: myBaud = B3500000 ; break ; ++#endif ++#if defined(B4000000) + case 4000000: myBaud = B4000000 ; break ; ++#endif + + default: + return -2 ; +-- +2.11.0 + diff --git a/package/wiringpi/Config.in b/package/wiringpi/Config.in new file mode 100644 index 0000000000..11ef9825a1 --- /dev/null +++ b/package/wiringpi/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_WIRINGPI + bool "wiringpi" + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5 + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC + help + wiringPi libraries (and gpio command) + + https://github.com/WiringPi/WiringPi + +comment "wiringpi needs a toolchain w/ threads, dynamic library, kernel headers >= 5.5" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5 diff --git a/package/wiringpi/wiringpi.hash b/package/wiringpi/wiringpi.hash new file mode 100644 index 0000000000..590d03946c --- /dev/null +++ b/package/wiringpi/wiringpi.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a81219e9ea0ce08295d2fc0457c69c4df0c6d2e846cb5817ba3247f673480d55 wiringpi-3.4.tar.gz +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 COPYING.LESSER diff --git a/package/wiringpi/wiringpi.mk b/package/wiringpi/wiringpi.mk new file mode 100644 index 0000000000..3515634d6d --- /dev/null +++ b/package/wiringpi/wiringpi.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# wiringpi +# +################################################################################ + +WIRINGPI_VERSION = 3.4 +WIRINGPI_SITE = $(call github,WiringPi,WiringPi,$(WIRINGPI_VERSION)) + +WIRINGPI_LICENSE = LGPL-3.0+ +WIRINGPI_LICENSE_FILES = COPYING.LESSER +WIRINGPI_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_LIBXCRYPT),y) +WIRINGPI_DEPENDENCIES += libxcrypt +endif + +define WIRINGPI_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/wiringPi all + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/devLib all + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/gpio all +endef + +define WIRINGPI_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/wiringPi install DESTDIR=$(STAGING_DIR) PREFIX=/usr LDCONFIG=true + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/devLib install DESTDIR=$(STAGING_DIR) PREFIX=/usr LDCONFIG=true +endef + +define WIRINGPI_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/wiringPi install DESTDIR=$(TARGET_DIR) PREFIX=/usr LDCONFIG=true + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/devLib install DESTDIR=$(TARGET_DIR) PREFIX=/usr LDCONFIG=true + $(INSTALL) -D -m 0755 $(@D)/gpio/gpio $(TARGET_DIR)/usr/bin/gpio + $(INSTALL) -D -m 0755 $(@D)/gpio/pintest $(TARGET_DIR)/usr/bin/pintest +endef + +$(eval $(generic-package)) -- 2.45.0 From ps.report at gmx.net Mon May 13 21:49:12 2024 From: ps.report at gmx.net (Peter Seiderer) Date: Mon, 13 May 2024 23:49:12 +0200 Subject: [Buildroot] [PATCH v1] package/dillo: bump version to 3.1.0 Message-ID: <20240513214912.18201-1-ps.report@gmx.net> - bump version to 3.1.0 (for details see [1]) - change download URL to github - change home page URL to github - remove 0001-usr-local-include.patch (no longer needed since upstream commit [2]) - remove 0002-Fix-openssl-detection.patch (no longer applicable) - remove 0003-Support-OpenSSL-1.1.0.patch (original from upstream, no longer applicable) - remove 0004-fix-build-with-gcc-10.patch (no longer applicable) - adjust autreconf comment - determine all autoconf options (with default values) [1] https://github.com/dillo-browser/dillo/releases/tag/v3.1.0 [2] https://github.com/dillo-browser/dillo/commit/3ac33673869b6f1ae1a29a329e5fa5c100bdd562 Signed-off-by: Peter Seiderer --- package/dillo/0001-usr-local-include.patch | 27 ---- .../dillo/0002-Fix-openssl-detection.patch | 29 ---- .../dillo/0003-Support-OpenSSL-1.1.0.patch | 33 ----- .../dillo/0004-fix-build-with-gcc-10.patch | 124 ------------------ package/dillo/Config.in | 2 +- package/dillo/dillo.hash | 2 +- package/dillo/dillo.mk | 23 +++- 7 files changed, 19 insertions(+), 221 deletions(-) delete mode 100644 package/dillo/0001-usr-local-include.patch delete mode 100644 package/dillo/0002-Fix-openssl-detection.patch delete mode 100644 package/dillo/0003-Support-OpenSSL-1.1.0.patch delete mode 100644 package/dillo/0004-fix-build-with-gcc-10.patch diff --git a/package/dillo/0001-usr-local-include.patch b/package/dillo/0001-usr-local-include.patch deleted file mode 100644 index 0c3fed2bfa..0000000000 --- a/package/dillo/0001-usr-local-include.patch +++ /dev/null @@ -1,27 +0,0 @@ -Do not add (possibly poisoned) /usr/local/include and /usr/local/lib -to gcc and ld search paths in configure. - -With BR2_COMPILER_PARANOID_UNSAFE_PATH enabled, poisoned paths result -in hard errors, failing affected configure tests. - -Signed-off-by: Alex Suykov - ---- a/configure.ac -+++ b/configure.ac -@@ -57,16 +57,6 @@ - AC_TYPE_INT32_T - AC_TYPE_UINT32_T - --dnl -------------------------------------- --dnl Check whether to add /usr/local or not --dnl (this is somewhat a religious problem) --dnl -------------------------------------- --dnl --if test "`$CPP -v < /dev/null 2>&1 | grep '/usr/local/include' 2>&1`" = ""; then -- CPPFLAGS="$CPPFLAGS -I/usr/local/include" -- LDFLAGS="$LDFLAGS -L/usr/local/lib" --fi -- - dnl ------------------------------------ - dnl Check for socket libs (AIX, Solaris) - dnl ------------------------------------ diff --git a/package/dillo/0002-Fix-openssl-detection.patch b/package/dillo/0002-Fix-openssl-detection.patch deleted file mode 100644 index 6e5f1d021f..0000000000 --- a/package/dillo/0002-Fix-openssl-detection.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 96dde9dedf806256cdc6cbf5cacbd5c8d74e6288 Mon Sep 17 00:00:00 2001 -From: Jonathan Kimmitt -Date: Thu, 9 Jan 2020 22:01:42 +0100 -Subject: [PATCH] Fix openssl detection - -SSL_library_init is now a define, use OPENSSL_init_ssl instead. - -Signed-off-by: Jonathan Kimmitt -Signed-off-by: Peter Seiderer ---- - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/configure.ac b/configure.ac -index 66b5e9f..206fd53 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -276,7 +276,7 @@ if test "x$enable_ssl" = "xyes"; then - - if test "x$ssl_ok" = "xyes"; then - old_libs="$LIBS" -- AC_CHECK_LIB(ssl, SSL_library_init, ssl_ok=yes, ssl_ok=no, -lcrypto) -+ AC_CHECK_LIB(ssl, OPENSSL_init_ssl, ssl_ok=yes, ssl_ok=no, -lcrypto) - LIBS="$old_libs" - fi - --- -2.24.1 - diff --git a/package/dillo/0003-Support-OpenSSL-1.1.0.patch b/package/dillo/0003-Support-OpenSSL-1.1.0.patch deleted file mode 100644 index 87b9d0dce3..0000000000 --- a/package/dillo/0003-Support-OpenSSL-1.1.0.patch +++ /dev/null @@ -1,33 +0,0 @@ -From ff44d8b2d5211a502afdb3e612dae0e8133b5124 Mon Sep 17 00:00:00 2001 -From: Johannes Hofmann -Date: Thu, 9 Jan 2020 22:07:15 +0100 -Subject: [PATCH] Support OpenSSL 1.1.0 - -taken-from: pkgsrc (Ryo ONODERA) -submitted-by: Jun Ebihara - -Upstream: https://hg.dillo.org/dillo/rev/b171b8610400 -Signed-off-by: Peter Seiderer ---- - dpi/https.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/dpi/https.c b/dpi/https.c -index 766b3af..025cfc4 100644 ---- a/dpi/https.c -+++ b/dpi/https.c -@@ -476,7 +476,11 @@ static int handle_certificate_problem(SSL * ssl_connection) - case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT: - /*Either self signed and untrusted*/ - /*Extract CN from certificate name information*/ -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - if ((cn = strstr(remote_cert->name, "/CN=")) == NULL) { -+#else -+ if ((cn = strstr(X509_get_subject_name(remote_cert), "/CN=")) == NULL) { -+#endif - strcpy(buf, "(no CN given)"); - } else { - char *cn_end; --- -2.24.1 - diff --git a/package/dillo/0004-fix-build-with-gcc-10.patch b/package/dillo/0004-fix-build-with-gcc-10.patch deleted file mode 100644 index 413bccb00b..0000000000 --- a/package/dillo/0004-fix-build-with-gcc-10.patch +++ /dev/null @@ -1,124 +0,0 @@ -fix build with gcc 10 - -gcc 10 is now defaulting to -fno-common resulting in the following build -failures: - -/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/bin/arm-buildroot-linux-gnueabihf-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -g2 -D_FORTIFY_SOURCE=1 -DENABLE_IPV6 -DD_DNS_THREADED -D_REENTRANT -D_THREAD_SAFE -Wall -W -Wno-unused-parameter -Waggregate-return -o dpid dpi.o dpi_socket_dir.o dpid.o dpid_common.o main.o misc_new.o ../dpip/libDpip.a ../dlib/libDlib.a -/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: dpi_socket_dir.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: multiple definition of `dpi_errno'; dpi.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: first defined here -/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: multiple definition of `dpi_errno'; dpi.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: first defined here -/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: dpid_common.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: multiple definition of `dpi_errno'; dpi.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: first defined here -/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:64: multiple definition of `sock_set'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:64: first defined here -/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:61: multiple definition of `services_list'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:61: first defined here -/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:58: multiple definition of `dpi_attr_list'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:58: first defined here -/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:55: multiple definition of `numsocks'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:55: first defined here -/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:52: multiple definition of `numdpis'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:52: first defined here -/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:31: multiple definition of `srs_fd'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:31: first defined here -/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:28: multiple definition of `srs_name'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:28: first defined here -/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: multiple definition of `dpi_errno'; dpi.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: first defined here -/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: misc_new.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: multiple definition of `dpi_errno'; dpi.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: first defined here - -So add missing extern for srs_fd, numdpis, numsocks, dpi_attr_list, -services_list and sock_set - -Also remove srs_name which is never used and give a name to dpi_errno -enum - -Fixes: - - http://autobuild.buildroot.org/results/9c777af97fe50143c6a68f0170fc86c87d8ead3f - -Signed-off-by: Fabrice Fontaine -[Upstream status: sent to jcid at dillo.org] - -diff -r f60d55c02567 dpid/dpid.c ---- a/dpid/dpid.c Fri Oct 05 22:05:08 2018 +0200 -+++ b/dpid/dpid.c Thu Aug 27 18:16:50 2020 +0200 -@@ -38,6 +38,12 @@ - - #define QUEUE 5 - -+int srs_fd; -+int numdpis; -+int numsocks; -+struct dp *dpi_attr_list; -+Dlist *services_list; -+fd_set sock_set; - volatile sig_atomic_t caught_sigchld = 0; - char *SharedKey = NULL; - -diff -r f60d55c02567 dpid/dpid.h ---- a/dpid/dpid.h Fri Oct 05 22:05:08 2018 +0200 -+++ b/dpid/dpid.h Thu Aug 27 18:16:50 2020 +0200 -@@ -25,10 +25,9 @@ - - /*! \TODO: Should read this from dillorc */ - #define SRS_NAME "dpid.srs" --char *srs_name; - - /*! dpid's service request socket file descriptor */ --int srs_fd; -+extern int srs_fd; - - /*! plugin state information - */ -@@ -49,19 +48,19 @@ - }; - - /*! Number of available plugins */ --int numdpis; -+extern int numdpis; - - /*! Number of sockets being watched */ --int numsocks; -+extern int numsocks; - - /*! State information for each plugin. */ --struct dp *dpi_attr_list; -+extern struct dp *dpi_attr_list; - - /*! service served for each plugin */ --Dlist *services_list; -+extern Dlist *services_list; - - /*! Set of sockets watched for connections */ --fd_set sock_set; -+extern fd_set sock_set; - - /*! Set to 1 by the SIGCHLD handler dpi_sigchld */ - extern volatile sig_atomic_t caught_sigchld; -diff -r f60d55c02567 dpid/dpid_common.h ---- a/dpid/dpid_common.h Fri Oct 05 22:05:08 2018 +0200 -+++ b/dpid/dpid_common.h Thu Aug 27 18:16:50 2020 +0200 -@@ -37,10 +37,10 @@ - - - /*! Error codes for dpid */ --enum { -+enum dpi_errno { - no_errors, - dpid_srs_addrinuse /* dpid service request socket address already in use */ --} dpi_errno; -+}; - - /*! Intended for identifying dillo plugins - * and related files -diff -r f60d55c02567 dpid/main.c ---- a/dpid/main.c Fri Oct 05 22:05:08 2018 +0200 -+++ b/dpid/main.c Thu Aug 27 18:16:50 2020 +0200 -@@ -231,7 +231,7 @@ - /* this sleep used to unmask a race condition */ - // sleep(2); - -- dpi_errno = no_errors; -+ enum dpi_errno error_code = no_errors; - - /* Get list of available dpis */ - numdpis = register_all(&dpi_attr_list); -@@ -254,7 +254,7 @@ - - /* Initialise sockets */ - if ((numsocks = init_ids_srs_socket()) == -1) { -- switch (dpi_errno) { -+ switch (error_code) { - case dpid_srs_addrinuse: - MSG_ERR("dpid refuses to start, possibly because:\n"); - MSG_ERR("\t1) An instance of dpid is already running.\n"); diff --git a/package/dillo/Config.in b/package/dillo/Config.in index d06f2d1f51..3aa831ae02 100644 --- a/package/dillo/Config.in +++ b/package/dillo/Config.in @@ -12,7 +12,7 @@ config BR2_PACKAGE_DILLO Enable openssl package to gain https support. - http://www.dillo.org + https://github.com/dillo-browser/dillo comment "dillo needs a toolchain w/ C++" depends on BR2_PACKAGE_XORG7 && BR2_USE_MMU diff --git a/package/dillo/dillo.hash b/package/dillo/dillo.hash index fa46702a63..0a524530e7 100644 --- a/package/dillo/dillo.hash +++ b/package/dillo/dillo.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 db1be16c1c5842ebe07b419aa7c6ef11a45603a75df2877f99635f4f8345148b dillo-3.0.5.tar.bz2 +sha256 3aa2a686648b383417a0c1f575c3d5431d6a2d53f35c2e11bf579cb25b2b45e7 dillo-3.1.0.tar.gz sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/dillo/dillo.mk b/package/dillo/dillo.mk index a6885f5c14..52708ed8ab 100644 --- a/package/dillo/dillo.mk +++ b/package/dillo/dillo.mk @@ -4,22 +4,33 @@ # ################################################################################ -DILLO_VERSION = 3.0.5 -DILLO_SOURCE = dillo-$(DILLO_VERSION).tar.bz2 -DILLO_SITE = http://www.dillo.org/download +DILLO_VERSION = 3.1.0 +DILLO_SITE = $(call github,dillo-browser,dillo,v$(DILLO_VERSION)) DILLO_LICENSE = GPL-3.0+ DILLO_LICENSE_FILES = COPYING -# configure.ac gets patched, so autoreconf is necessary +# no configure file, so autoreconf is necessary DILLO_AUTORECONF = YES DILLO_DEPENDENCIES = fltk zlib \ $(if $(BR2_PACKAGE_LIBICONV),libiconv) DILLO_CONF_ENV = ac_cv_path_FLTK_CONFIG=$(STAGING_DIR)/usr/bin/fltk-config +DILLO_CONF_OPTS = \ + --disable-efence \ + --disable-mbedtls \ + --disable-gprof \ + --disable-insure \ + --enable-ipv6 \ + --enable-cookies \ + --enable-gif \ + --disable-rtfl \ + --enable-xembed \ + --disable-html-tests + ifeq ($(BR2_PACKAGE_OPENSSL),y) -DILLO_CONF_OPTS += --enable-ssl +DILLO_CONF_OPTS += --enable-tls --enable-openssl DILLO_DEPENDENCIES += openssl else -DILLO_CONF_OPTS += --disable-ssl +DILLO_CONF_OPTS += --disable-tls --disable-openssl endif ifeq ($(BR2_PACKAGE_LIBPNG),y) -- 2.45.0 From ps.report at gmx.net Mon May 13 21:52:15 2024 From: ps.report at gmx.net (Peter Seiderer) Date: Mon, 13 May 2024 23:52:15 +0200 Subject: [Buildroot] Fwd: WiringPi is alive again In-Reply-To: References: Message-ID: <20240513235215.4e4fe360@gmx.net> On Sat, 11 May 2024 17:33:30 +0300, "rosver001 at gmail.com" wrote: > Dear developers, > > WiringPi was deprecated some time ago. > https://web.archive.org/web/20220405225008/http://wiringpi.com/wiringpi-deprecated/ > It was removed from Buildroot. > https://github.com/buildroot/buildroot/blob/7763ba7007172ceb5e928ae5902735d727aaa90d/Config.in.legacy > > But currently, WiringPi is alive again, > https://github.com/WiringPi/WiringPi > > Could you, please, write, if it is planned to add WiringPi back in > Buildroot? See [1] for a draft "package/wiringpi: re-add and bump version to 3.4"... Regards, Peter [1] https://lore.kernel.org/buildroot/20240513214832.18094-1-ps.report at gmx.net/T/#u > > Best Regards, > Sverdlov Roman From roykollensvendsen at gmail.com Mon May 13 22:03:06 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:06 +0200 Subject: [Buildroot] [PATCH v4 01/14] package/qt6: bump version to 6.7.0 In-Reply-To: <1934329> References: <1934329> Message-ID: <20240513220328.1085629-1-roykollensvendsen@gmail.com> From: Roy Kollen Svendsen For details see [1], [2], [3], [4], [5], [6], [7], [8] and [9]. [1] https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.5.0/release-note.md [2] https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.5.1/release-note.md [3] https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.5.2/release-note.md [4] https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.5.3/release-note.md [5] https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.6.0/release-note.md [6] https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.6.1/release-note.md [7] https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.6.2/release-note.md [8] https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.6.3/release-note.md [9] https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.7.0/release-note.md We also apply the associated CVE-2024-33861 patch from: https://download.qt.io/archive/qt/6.7/ As Jesse Van Gavere noted: "This is not applicable to 6.4.3, the affected versions are detailed in the bugzilla report below and it's only 6.5.0+ So this seems perfectly valid to go along with the version bump. OpenSUSE report: https://www.suse.com/security/cve/CVE-2024-33861.html Bugzilla report clarifying affected versions https://bugzilla.suse.com/show_bug.cgi?id=1223917" Signed-off-by: Roy Kollen Svendsen --- Changes v3 -> v4: - Explain why the associated CVE-patch should be part of this series (suggested by Thomas) - Squash the CVE-patch into this patch. - Add CVE-ID to QT6BASE_IGNORE_CVES. (suggested by Thomas) package/qt6/qt6.mk | 4 +-- .../0001-Fix-CVE-2024-33861-for-Qt6.7.patch | 36 +++++++++++++++++++ package/qt6/qt6base/qt6base.hash | 4 +-- package/qt6/qt6base/qt6base.mk | 2 +- .../qt6/qt6core5compat/qt6core5compat.hash | 4 +-- package/qt6/qt6serialbus/qt6serialbus.hash | 4 +-- package/qt6/qt6serialport/qt6serialport.hash | 4 +-- package/qt6/qt6svg/qt6svg.hash | 4 +-- 8 files changed, 49 insertions(+), 13 deletions(-) create mode 100644 package/qt6/qt6base/0001-Fix-CVE-2024-33861-for-Qt6.7.patch diff --git a/package/qt6/qt6.mk b/package/qt6/qt6.mk index 1edb252c96..b87cb6748d 100644 --- a/package/qt6/qt6.mk +++ b/package/qt6/qt6.mk @@ -4,8 +4,8 @@ # ################################################################################ -QT6_VERSION_MAJOR = 6.4 -QT6_VERSION = $(QT6_VERSION_MAJOR).3 +QT6_VERSION_MAJOR = 6.7 +QT6_VERSION = $(QT6_VERSION_MAJOR).0 QT6_SOURCE_TARBALL_PREFIX = everywhere-src QT6_SITE = https://download.qt.io/archive/qt/$(QT6_VERSION_MAJOR)/$(QT6_VERSION)/submodules diff --git a/package/qt6/qt6base/0001-Fix-CVE-2024-33861-for-Qt6.7.patch b/package/qt6/qt6base/0001-Fix-CVE-2024-33861-for-Qt6.7.patch new file mode 100644 index 0000000000..f016788017 --- /dev/null +++ b/package/qt6/qt6base/0001-Fix-CVE-2024-33861-for-Qt6.7.patch @@ -0,0 +1,36 @@ +From 7f88945625f560796c86a267086f163e74c1407b Mon Sep 17 00:00:00 2001 +From: Roy Kollen Svendsen +Date: Sun, 12 May 2024 07:15:32 +0200 +Subject: [PATCH] Fix CVE-2024-33861 for Qt6.7 + +Signed-off-by: Roy Kollen Svendsen +Upstream: https://download.qt.io/archive/qt/6.7/CVE-2024-33861-qtbase-6.7.diff +--- + src/corelib/text/qstringconverter.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/corelib/text/qstringconverter.cpp b/src/corelib/text/qstringconverter.cpp +index b5749843..fd45ccf2 100644 +--- a/src/corelib/text/qstringconverter.cpp ++++ b/src/corelib/text/qstringconverter.cpp +@@ -1954,7 +1954,7 @@ struct QStringConverterICU : QStringConverter + const void *context; + ucnv_getToUCallBack(icu_conv, &action, &context); + if (context != state) +- ucnv_setToUCallBack(icu_conv, action, &state, nullptr, nullptr, &err); ++ ucnv_setToUCallBack(icu_conv, action, state, nullptr, nullptr, &err); + + ucnv_toUnicode(icu_conv, &target, targetLimit, &source, sourceLimit, nullptr, flush, &err); + // We did reserve enough space: +@@ -1987,7 +1987,7 @@ struct QStringConverterICU : QStringConverter + const void *context; + ucnv_getFromUCallBack(icu_conv, &action, &context); + if (context != state) +- ucnv_setFromUCallBack(icu_conv, action, &state, nullptr, nullptr, &err); ++ ucnv_setFromUCallBack(icu_conv, action, state, nullptr, nullptr, &err); + + ucnv_fromUnicode(icu_conv, &target, targetLimit, &source, sourceLimit, nullptr, flush, &err); + // We did reserve enough space: +-- +2.45.0 + diff --git a/package/qt6/qt6base/qt6base.hash b/package/qt6/qt6base/qt6base.hash index cb111bd405..0f45826a45 100644 --- a/package/qt6/qt6base/qt6base.hash +++ b/package/qt6/qt6base/qt6base.hash @@ -1,5 +1,5 @@ -# Hash from: https://download.qt.io/official_releases/qt/6.4/6.4.3/submodules/qtbase-everywhere-src-6.4.3.tar.xz.sha256 -sha256 5087c9e5b0165e7bc3c1a4ab176b35d0cd8f52636aea903fa377bdba00891a60 qtbase-everywhere-src-6.4.3.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtbase-everywhere-src-6.7.0.tar.xz.sha256 +sha256 11b2e29e2e52fb0e3b453ea13bbe51a10fdff36e1c192d8868c5a40233b8b254 qtbase-everywhere-src-6.7.0.tar.xz # Hashes for license files sha256 e3ba223bb1423f0aad8c3dfce0fe3148db48926d41e6fbc3afbbf5ff9e1c89cb LICENSES/Apache-2.0.txt diff --git a/package/qt6/qt6base/qt6base.mk b/package/qt6/qt6base/qt6base.mk index 6857725ef5..b8040e395b 100644 --- a/package/qt6/qt6base/qt6base.mk +++ b/package/qt6/qt6base/qt6base.mk @@ -9,7 +9,7 @@ QT6BASE_SITE = $(QT6_SITE) QT6BASE_SOURCE = qtbase-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6BASE_VERSION).tar.xz QT6BASE_CPE_ID_VENDOR = qt QT6BASE_CPE_ID_PRODUCT = qt - +QT6BASE_IGNORE_CVES = CVE-2024-33861 QT6BASE_CMAKE_BACKEND = ninja QT6BASE_LICENSE = \ diff --git a/package/qt6/qt6core5compat/qt6core5compat.hash b/package/qt6/qt6core5compat/qt6core5compat.hash index 0735df3af2..1eb0b5b460 100644 --- a/package/qt6/qt6core5compat/qt6core5compat.hash +++ b/package/qt6/qt6core5compat/qt6core5compat.hash @@ -1,5 +1,5 @@ -# Hash from: https://download.qt.io/official_releases/qt/6.4/6.4.3/submodules/qtserialport-everywhere-src-6.4.3.tar.xz.sha256 -sha256 d4b249abb823d575eee9045c24d924ba8d1276e6be7735b287689991d998aa7a qt5compat-everywhere-src-6.4.3.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qt5compat-everywhere-src-6.7.0.tar.xz.sha256 +sha256 9d49d4fd8345d8a40b63e0b65cd49c1d8286e33a7f1409bf1316763f654e19f5 qt5compat-everywhere-src-6.7.0.tar.xz # Hashes for license files: sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt diff --git a/package/qt6/qt6serialbus/qt6serialbus.hash b/package/qt6/qt6serialbus/qt6serialbus.hash index 98c8931962..17d5090076 100644 --- a/package/qt6/qt6serialbus/qt6serialbus.hash +++ b/package/qt6/qt6serialbus/qt6serialbus.hash @@ -1,5 +1,5 @@ -# Hash from: https://download.qt.io/official_releases/qt/6.4/6.4.3/submodules/qtserialbus-everywhere-src-6.4.3.tar.xz.sha256 -sha256 b6446a7516d1f04e561c00f9c50ce4d39dad72150f067722ba759f00b4b34366 qtserialbus-everywhere-src-6.4.3.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtserialbus-everywhere-src-6.7.0.tar.xz.sha256 +sha256 498193a9860664f8a55f676656c45af179ac13d48184af43fc58ddf795bb76dd qtserialbus-everywhere-src-6.7.0.tar.xz # Hashes for license files: sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt diff --git a/package/qt6/qt6serialport/qt6serialport.hash b/package/qt6/qt6serialport/qt6serialport.hash index 9341978d86..cd51fbe435 100644 --- a/package/qt6/qt6serialport/qt6serialport.hash +++ b/package/qt6/qt6serialport/qt6serialport.hash @@ -1,5 +1,5 @@ -# Hash from: https://download.qt.io/official_releases/qt/6.4/6.4.3/submodules/qtserialport-everywhere-src-6.4.3.tar.xz.sha256 -sha256 5f97ad9067efa39a8a2a39fbbc1e03d2191f305733d9c2f3060f8017ecfc95de qtserialport-everywhere-src-6.4.3.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtserialport-everywhere-src-6.7.0.tar.xz.sha256 +sha256 b1f02a3d8c9cc8ba2ffa7cca3749f1f147d327e8dfc633fd4ec3cb770d7981c9 qtserialport-everywhere-src-6.7.0.tar.xz # Hashes for license files: sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt diff --git a/package/qt6/qt6svg/qt6svg.hash b/package/qt6/qt6svg/qt6svg.hash index bb239cb012..32c1a79a5c 100644 --- a/package/qt6/qt6svg/qt6svg.hash +++ b/package/qt6/qt6svg/qt6svg.hash @@ -1,5 +1,5 @@ -# Hash from: https://download.qt.io/official_releases/qt/6.4/6.4.3/submodules/qtsvg-everywhere-src-6.4.3.tar.xz.sha256 -sha256 88315f886cf81898705e487cedba6e6160724359d23c518c92c333c098879a4a qtsvg-everywhere-src-6.4.3.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtsvg-everywhere-src-6.7.0.tar.xz.sha256 +sha256 1518f40e08ff5e6153a6e26e5b95b033413ac143b70795dc1317e7f73ebf922d qtsvg-everywhere-src-6.7.0.tar.xz # Hashes for license files: sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 22:03:07 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:07 +0200 Subject: [Buildroot] [PATCH v4 02/14] package/qt6/qt6base: add blind option to enable GUI support on host In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <1934329> <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: <20240513220328.1085629-2-roykollensvendsen@gmail.com> From: Roy Kollen Svendsen The Qt6::Gui module is needed when building the 'Qt Shader Baker' (qsb) host tool. Qsb is needed for converting the Qt6 Vulkan GLSL source code to platform specific shader languages which is then later copied to target. For more details take a look at: https://doc.qt.io/qt-6/qtshadertools-overview.html and https://doc.qt.io/qt-6/qshaderbaker.html Signed-off-by: Roy Kollen Svendsen --- package/Config.in.host | 1 + package/qt6/Config.in.host | 5 +++++ package/qt6/qt6base/Config.in.host | 4 ++++ package/qt6/qt6base/qt6base.mk | 7 ++++++- 4 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 package/qt6/Config.in.host create mode 100644 package/qt6/qt6base/Config.in.host diff --git a/package/Config.in.host b/package/Config.in.host index 986b2854d0..cbf54f5752 100644 --- a/package/Config.in.host +++ b/package/Config.in.host @@ -95,6 +95,7 @@ menu "Host utilities" source "package/python3/Config.in.host" source "package/qemu/Config.in.host" source "package/qoriq-rcw/Config.in.host" + source "package/qt6/Config.in.host" source "package/raspberrypi-usbboot/Config.in.host" source "package/rauc/Config.in.host" source "package/riscv-isa-sim/Config.in.host" diff --git a/package/qt6/Config.in.host b/package/qt6/Config.in.host new file mode 100644 index 0000000000..dfe7865c57 --- /dev/null +++ b/package/qt6/Config.in.host @@ -0,0 +1,5 @@ +if BR2_PACKAGE_QT6 + +source "package/qt6/qt6base/Config.in.host" + +endif diff --git a/package/qt6/qt6base/Config.in.host b/package/qt6/qt6base/Config.in.host new file mode 100644 index 0000000000..326c06278e --- /dev/null +++ b/package/qt6/qt6base/Config.in.host @@ -0,0 +1,4 @@ +# Select this if you need host qt6 tools that require the Qt::Gui module (e.g. +# Qt Shader Baker(qsb)). +config BR2_PACKAGE_HOST_QT6BASE_GUI + bool diff --git a/package/qt6/qt6base/qt6base.mk b/package/qt6/qt6base/qt6base.mk index b8040e395b..36ec05b394 100644 --- a/package/qt6/qt6base/qt6base.mk +++ b/package/qt6/qt6base/qt6base.mk @@ -84,7 +84,6 @@ HOST_QT6BASE_DEPENDENCIES = \ host-pcre2 \ host-zlib HOST_QT6BASE_CONF_OPTS = \ - -DFEATURE_gui=OFF \ -DFEATURE_concurrent=OFF \ -DFEATURE_xml=ON \ -DFEATURE_sql=OFF \ @@ -98,6 +97,12 @@ HOST_QT6BASE_CONF_OPTS = \ -DFEATURE_system_pcre2=ON \ -DFEATURE_system_zlib=ON +ifeq ($(BR2_PACKAGE_HOST_QT6BASE_GUI),y) +HOST_QT6BASE_CONF_OPTS += -DFEATURE_gui=ON +else +HOST_QT6BASE_CONF_OPTS += -DFEATURE_gui=OFF +endif + # Conditional blocks below are ordered by alphabetic ordering of the # BR2_PACKAGE_* option. -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 22:03:08 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:08 +0200 Subject: [Buildroot] [PATCH v4 03/14] package/qt6/qt6base: add blind option to enable Network support on host In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <1934329> <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: <20240513220328.1085629-3-roykollensvendsen@gmail.com> From: Roy Kollen Svendsen Qt Network is a required dependency of Qt Tools. Therefor we need a way to enable the Qt Network module when building for host. Signed-off-by: Roy Kollen Svendsen --- package/qt6/qt6base/Config.in.host | 5 +++++ package/qt6/qt6base/qt6base.mk | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/package/qt6/qt6base/Config.in.host b/package/qt6/qt6base/Config.in.host index 326c06278e..286da0ff03 100644 --- a/package/qt6/qt6base/Config.in.host +++ b/package/qt6/qt6base/Config.in.host @@ -2,3 +2,8 @@ # Qt Shader Baker(qsb)). config BR2_PACKAGE_HOST_QT6BASE_GUI bool + +# Select this if you need host qt6 tools that require the Qt::Network module +# (e.g. Qt Tools). +config BR2_PACKAGE_HOST_QT6BASE_NETWORK + bool diff --git a/package/qt6/qt6base/qt6base.mk b/package/qt6/qt6base/qt6base.mk index 36ec05b394..684bb86bc9 100644 --- a/package/qt6/qt6base/qt6base.mk +++ b/package/qt6/qt6base/qt6base.mk @@ -88,7 +88,6 @@ HOST_QT6BASE_CONF_OPTS = \ -DFEATURE_xml=ON \ -DFEATURE_sql=OFF \ -DFEATURE_testlib=OFF \ - -DFEATURE_network=OFF \ -DFEATURE_dbus=OFF \ -DFEATURE_icu=OFF \ -DFEATURE_glib=OFF \ @@ -103,6 +102,12 @@ else HOST_QT6BASE_CONF_OPTS += -DFEATURE_gui=OFF endif +ifeq ($(BR2_PACKAGE_HOST_QT6BASE_NETWORK),y) +HOST_QT6BASE_CONF_OPTS += -DFEATURE_network=ON +else +HOST_QT6BASE_CONF_OPTS += -DFEATURE_network=OFF +endif + # Conditional blocks below are ordered by alphabetic ordering of the # BR2_PACKAGE_* option. -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 22:03:09 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:09 +0200 Subject: [Buildroot] [PATCH v4 04/14] package/qt6/qt6base: add blind option to enable Test support on host In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <1934329> <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: <20240513220328.1085629-4-roykollensvendsen@gmail.com> Signed-off-by: Roy Kollen Svendsen --- Changes v3 -> v4: - This patch was added in v4. Required by patch 9/14. package/qt6/qt6base/Config.in.host | 5 +++++ package/qt6/qt6base/qt6base.mk | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/package/qt6/qt6base/Config.in.host b/package/qt6/qt6base/Config.in.host index 286da0ff03..80bc13c7dc 100644 --- a/package/qt6/qt6base/Config.in.host +++ b/package/qt6/qt6base/Config.in.host @@ -7,3 +7,8 @@ config BR2_PACKAGE_HOST_QT6BASE_GUI # (e.g. Qt Tools). config BR2_PACKAGE_HOST_QT6BASE_NETWORK bool + +# Select this if you need host qt6 tools that require the Qt::Test module +# (e.g. qmltestrunner). +config BR2_PACKAGE_HOST_QT6BASE_TEST + bool diff --git a/package/qt6/qt6base/qt6base.mk b/package/qt6/qt6base/qt6base.mk index 684bb86bc9..b19cce26f8 100644 --- a/package/qt6/qt6base/qt6base.mk +++ b/package/qt6/qt6base/qt6base.mk @@ -87,7 +87,6 @@ HOST_QT6BASE_CONF_OPTS = \ -DFEATURE_concurrent=OFF \ -DFEATURE_xml=ON \ -DFEATURE_sql=OFF \ - -DFEATURE_testlib=OFF \ -DFEATURE_dbus=OFF \ -DFEATURE_icu=OFF \ -DFEATURE_glib=OFF \ @@ -108,6 +107,12 @@ else HOST_QT6BASE_CONF_OPTS += -DFEATURE_network=OFF endif +ifeq ($(BR2_PACKAGE_HOST_QT6BASE_TEST),y) +HOST_QT6BASE_CONF_OPTS += -DFEATURE_testlib=ON +else +HOST_QT6BASE_CONF_OPTS += -DFEATURE_testlib=OFF +endif + # Conditional blocks below are ordered by alphabetic ordering of the # BR2_PACKAGE_* option. -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 22:03:10 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:10 +0200 Subject: [Buildroot] [PATCH v4 05/14] package/qt6/qt6base: add blind option to enable Sql support on host In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <1934329> <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: <20240513220328.1085629-5-roykollensvendsen@gmail.com> Signed-off-by: Roy Kollen Svendsen --- Changes v3 -> v4: - This patch was added in v4. Required by patch 12/14. package/qt6/qt6base/Config.in.host | 5 +++++ package/qt6/qt6base/qt6base.mk | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/package/qt6/qt6base/Config.in.host b/package/qt6/qt6base/Config.in.host index 80bc13c7dc..46fb668817 100644 --- a/package/qt6/qt6base/Config.in.host +++ b/package/qt6/qt6base/Config.in.host @@ -12,3 +12,8 @@ config BR2_PACKAGE_HOST_QT6BASE_NETWORK # (e.g. qmltestrunner). config BR2_PACKAGE_HOST_QT6BASE_TEST bool + +# Select this if you need host qt6 tools that require the Qt::Sql module +# (e.g. qhelpgenerator). +config BR2_PACKAGE_HOST_QT6BASE_SQL + bool diff --git a/package/qt6/qt6base/qt6base.mk b/package/qt6/qt6base/qt6base.mk index b19cce26f8..c927b06482 100644 --- a/package/qt6/qt6base/qt6base.mk +++ b/package/qt6/qt6base/qt6base.mk @@ -86,7 +86,6 @@ HOST_QT6BASE_DEPENDENCIES = \ HOST_QT6BASE_CONF_OPTS = \ -DFEATURE_concurrent=OFF \ -DFEATURE_xml=ON \ - -DFEATURE_sql=OFF \ -DFEATURE_dbus=OFF \ -DFEATURE_icu=OFF \ -DFEATURE_glib=OFF \ @@ -107,6 +106,12 @@ else HOST_QT6BASE_CONF_OPTS += -DFEATURE_network=OFF endif +ifeq ($(BR2_PACKAGE_HOST_QT6BASE_SQL),y) +HOST_QT6BASE_CONF_OPTS += -DFEATURE_sql=ON +else +HOST_QT6BASE_CONF_OPTS += -DFEATURE_sql=OFF +endif + ifeq ($(BR2_PACKAGE_HOST_QT6BASE_TEST),y) HOST_QT6BASE_CONF_OPTS += -DFEATURE_testlib=ON else -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 22:03:11 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:11 +0200 Subject: [Buildroot] [PATCH v4 06/14] package/qt6/qt6shadertools: new package In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <1934329> <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: <20240513220328.1085629-6-roykollensvendsen@gmail.com> From: Roy Kollen Svendsen Signed-off-by: Roy Kollen Svendsen --- package/qt6/Config.in | 1 + package/qt6/qt6shadertools/Config.in | 13 +++++++ .../qt6/qt6shadertools/qt6shadertools.hash | 10 +++++ package/qt6/qt6shadertools/qt6shadertools.mk | 39 +++++++++++++++++++ 4 files changed, 63 insertions(+) create mode 100644 package/qt6/qt6shadertools/Config.in create mode 100644 package/qt6/qt6shadertools/qt6shadertools.hash create mode 100644 package/qt6/qt6shadertools/qt6shadertools.mk diff --git a/package/qt6/Config.in b/package/qt6/Config.in index 276a0217ab..b7e95a6885 100644 --- a/package/qt6/Config.in +++ b/package/qt6/Config.in @@ -47,6 +47,7 @@ source "package/qt6/qt6base/Config.in" source "package/qt6/qt6core5compat/Config.in" source "package/qt6/qt6serialbus/Config.in" source "package/qt6/qt6serialport/Config.in" +source "package/qt6/qt6shadertools/Config.in" source "package/qt6/qt6svg/Config.in" endif diff --git a/package/qt6/qt6shadertools/Config.in b/package/qt6/qt6shadertools/Config.in new file mode 100644 index 0000000000..1b47dc6132 --- /dev/null +++ b/package/qt6/qt6shadertools/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_QT6SHADERTOOLS + bool "qt6shadertools" + select BR2_PACKAGE_HOST_QT6BASE_GUI + select BR2_PACKAGE_QT6BASE_GUI + help + Qt is a cross-platform application and UI framework for + developers using C++. + + The Qt Shader Tools module builds on the SPIR-V Open + Source Ecosystem as described at the Khronos SPIR-V web + site. + + https://doc.qt.io/qt-6/qtshadertools-index.html diff --git a/package/qt6/qt6shadertools/qt6shadertools.hash b/package/qt6/qt6shadertools/qt6shadertools.hash new file mode 100644 index 0000000000..90313163fa --- /dev/null +++ b/package/qt6/qt6shadertools/qt6shadertools.hash @@ -0,0 +1,10 @@ +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtshadertools-everywhere-src-6.7.0.tar.xz.sha256 +sha256 3e13f967c62f0815c901e754cbc472a2e19170da0c7a505230d559615f7998af qtshadertools-everywhere-src-6.7.0.tar.xz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSES/LGPL-3.0-only.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt diff --git a/package/qt6/qt6shadertools/qt6shadertools.mk b/package/qt6/qt6shadertools/qt6shadertools.mk new file mode 100644 index 0000000000..108f409380 --- /dev/null +++ b/package/qt6/qt6shadertools/qt6shadertools.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# qt6shadertools +# +################################################################################ + +QT6SHADERTOOLS_VERSION = $(QT6_VERSION) +QT6SHADERTOOLS_SITE = $(QT6_SITE) +QT6SHADERTOOLS_SOURCE = qtshadertools-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6SHADERTOOLS_VERSION).tar.xz +QT6SHADERTOOLS_INSTALL_STAGING = YES +QT6SHADERTOOLS_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6SHADERTOOLS_CMAKE_BACKEND = ninja + +QT6SHADERTOOLS_LICENSE = \ + GPL-2.0+ or LGPL-3.0, \ + GPL-3.0, GFDL-1.3 no invariants (docs) + +QT6SHADERTOOLS_LICENSE_FILES = \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt + +QT6SHADERTOOLS_CONF_OPTS = \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +QT6SHADERTOOLS_DEPENDENCIES = \ + host-pkgconf \ + qt6base \ + host-qt6shadertools + +HOST_QT6SHADERTOOLS_DEPENDENCIES = \ + host-qt6base + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 22:03:12 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:12 +0200 Subject: [Buildroot] [PATCH v4 07/14] package/qt6/qt6svg: allow building for host In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <1934329> <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: <20240513220328.1085629-7-roykollensvendsen@gmail.com> From: Roy Kollen Svendsen Signed-off-by: Roy Kollen Svendsen --- package/qt6/qt6svg/qt6svg.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/package/qt6/qt6svg/qt6svg.mk b/package/qt6/qt6svg/qt6svg.mk index 25e87dd208..a9d7eaef51 100644 --- a/package/qt6/qt6svg/qt6svg.mk +++ b/package/qt6/qt6svg/qt6svg.mk @@ -37,3 +37,4 @@ QT6SVG_DEPENDENCIES = \ qt6base $(eval $(cmake-package)) +$(eval $(host-cmake-package)) -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 22:03:13 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:13 +0200 Subject: [Buildroot] [PATCH v4 08/14] package/qt6/qt6languageserver: new package In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <1934329> <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: <20240513220328.1085629-8-roykollensvendsen@gmail.com> From: Roy Kollen Svendsen Signed-off-by: Roy Kollen Svendsen --- package/qt6/Config.in | 1 + package/qt6/qt6languageserver/Config.in | 9 +++++ .../qt6languageserver/qt6languageserver.hash | 11 ++++++ .../qt6languageserver/qt6languageserver.mk | 34 +++++++++++++++++++ 4 files changed, 55 insertions(+) create mode 100644 package/qt6/qt6languageserver/Config.in create mode 100644 package/qt6/qt6languageserver/qt6languageserver.hash create mode 100644 package/qt6/qt6languageserver/qt6languageserver.mk diff --git a/package/qt6/Config.in b/package/qt6/Config.in index b7e95a6885..81682af476 100644 --- a/package/qt6/Config.in +++ b/package/qt6/Config.in @@ -45,6 +45,7 @@ if BR2_PACKAGE_QT6 source "package/qt6/qt6base/Config.in" source "package/qt6/qt6core5compat/Config.in" +source "package/qt6/qt6languageserver/Config.in" source "package/qt6/qt6serialbus/Config.in" source "package/qt6/qt6serialport/Config.in" source "package/qt6/qt6shadertools/Config.in" diff --git a/package/qt6/qt6languageserver/Config.in b/package/qt6/qt6languageserver/Config.in new file mode 100644 index 0000000000..8a54ae1911 --- /dev/null +++ b/package/qt6/qt6languageserver/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_QT6LANGUAGESERVER + bool "qt6languageserver" + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt6languageserver module. + + https://doc.qt.io/qt-6/qtlanguageserver-index.html diff --git a/package/qt6/qt6languageserver/qt6languageserver.hash b/package/qt6/qt6languageserver/qt6languageserver.hash new file mode 100644 index 0000000000..2d40426c6f --- /dev/null +++ b/package/qt6/qt6languageserver/qt6languageserver.hash @@ -0,0 +1,11 @@ +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtlanguageserver-everywhere-src-6.7.0.tar.xz.sha256 +sha256 a99ecb342abdf7b7ac24804c89830a7991de95f9402f45a1e337ae851f76c9fc qtlanguageserver-everywhere-src-6.7.0.tar.xz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSES/LGPL-3.0-only.txt +sha256 9b1f50aae6267f9d5e0ceb6775ee86450262c25ec7c0573e151fe5d3f18a4700 LICENSES/LicenseRef-Qt-Commercial.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt diff --git a/package/qt6/qt6languageserver/qt6languageserver.mk b/package/qt6/qt6languageserver/qt6languageserver.mk new file mode 100644 index 0000000000..6f96feb275 --- /dev/null +++ b/package/qt6/qt6languageserver/qt6languageserver.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# qt6languageserver +# +################################################################################ + +QT6LANGUAGESERVER_VERSION = $(QT6_VERSION) +QT6LANGUAGESERVER_SITE = $(QT6_SITE) +QT6LANGUAGESERVER_SOURCE = qtlanguageserver-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6LANGUAGESERVER_VERSION).tar.xz +QT6LANGUAGESERVER_INSTALL_STAGING = YES +QT6LANGUAGESERVER_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6LANGUAGESERVER_CMAKE_BACKEND = ninja + +QT6LANGUAGESERVER_LICENSE = \ + GPL-2.0+ or LGPL-3.0, \ + GPL-3.0, GFDL-1.3 no invariants (docs) + +QT6LANGUAGESERVER_LICENSE_FILES = \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt + +QT6LANGUAGESERVER_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +QT6LANGUAGESERVER_DEPENDENCIES = \ + qt6base + +$(eval $(cmake-package)) -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 22:03:14 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:14 +0200 Subject: [Buildroot] [PATCH v4 09/14] package/qt6/qt6declarative: new package In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <1934329> <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: <20240513220328.1085629-9-roykollensvendsen@gmail.com> From: Roy Kollen Svendsen We add the patch to avoid checking for FEATURE_ssl when FEATURE_network is not available. FEATURE_ssl is defined by the Qt Network module. So we will get the following build failure if the patch is not applied and FEATURE_network=ON: CMake Error at qt6base-6.7.0/cmake/QtFeature.cmake:376 (message): Attempting to evaluate feature ssl but its definition is missing. Either the feature does not exist or a dependency to the module that defines it is missing Call Stack (most recent call first): qt6base-6.7.0/cmake/QtFeature.cmake:141 (qt_evaluate_feature) qt6base-6.7.0/cmake/QtFeature.cmake:180 (qt_internal_evaluate_config_expression) qt6base-6.7.0/cmake/QtFeature.cmake:396 (qt_evaluate_config_expression) qt6base-6.7.0/cmake/QtFeature.cmake:711 (qt_evaluate_feature) qt6base-6.7.0/cmake/QtFeature.cmake:680 (qt_feature_module_end) src/qml/CMakeLists.txt:13 (qt_feature_evaluate_features) To avoid the following build error, we also make sure the host qt6base is built with Testlib enabled: CMake Error at buildroot/output/build/qt6base-6.7.0/cmake/QtToolHelpers.cmake:684 (message): Failed to find the host tool "Qt6::qmltestrunner". It is part of the Qt6QmlTools package, but the package did not contain the tool. Make sure that the host module Qml was built with all features enabled (no explicitly disabled tools). Call Stack (most recent call first): buildroot/output/build/qt6base-6.7.0/cmake/QtToolHelpers.cmake:72 (qt_internal_find_tool) tools/qmltestrunner/CMakeLists.txt:11 (qt_internal_add_tool) Signed-off-by: Roy Kollen Svendsen --- Changes v3 -> v4: - Fix build failure when Testlib enabled for target. (suggested by Jesse) - Squash the 'Fix build with -no-feature-network'-patch into this commit, since no earlier version of the qt6declarative package exist. package/qt6/Config.in | 1 + ...1-Fix-build-with--no-feature-network.patch | 28 ++++++++++ package/qt6/qt6declarative/Config.in | 24 ++++++++ .../qt6/qt6declarative/qt6declarative.hash | 11 ++++ package/qt6/qt6declarative/qt6declarative.mk | 56 +++++++++++++++++++ 5 files changed, 120 insertions(+) create mode 100644 package/qt6/qt6declarative/0001-Fix-build-with--no-feature-network.patch create mode 100644 package/qt6/qt6declarative/Config.in create mode 100644 package/qt6/qt6declarative/qt6declarative.hash create mode 100644 package/qt6/qt6declarative/qt6declarative.mk diff --git a/package/qt6/Config.in b/package/qt6/Config.in index 81682af476..625134d281 100644 --- a/package/qt6/Config.in +++ b/package/qt6/Config.in @@ -45,6 +45,7 @@ if BR2_PACKAGE_QT6 source "package/qt6/qt6base/Config.in" source "package/qt6/qt6core5compat/Config.in" +source "package/qt6/qt6declarative/Config.in" source "package/qt6/qt6languageserver/Config.in" source "package/qt6/qt6serialbus/Config.in" source "package/qt6/qt6serialport/Config.in" diff --git a/package/qt6/qt6declarative/0001-Fix-build-with--no-feature-network.patch b/package/qt6/qt6declarative/0001-Fix-build-with--no-feature-network.patch new file mode 100644 index 0000000000..bef5794229 --- /dev/null +++ b/package/qt6/qt6declarative/0001-Fix-build-with--no-feature-network.patch @@ -0,0 +1,28 @@ +From 8377691a0998fd84e6fc8349a5db450bf2d79164 Mon Sep 17 00:00:00 2001 +From: Tasuku Suzuki +Date: Tue, 21 Nov 2023 23:58:43 +0900 +Subject: Fix build with -no-feature-network + +Change-Id: Ib21012301da6afb5458f707b39a9a8079d93eb93 +Reviewed-by: Ulf Hermann +Upstream: https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=8377691a0998fd84e6fc8349a5db450bf2d79164 +Signed-off-by: Roy Kollen Svendsen +--- + src/qml/configure.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/qml/configure.cmake b/src/qml/configure.cmake +index 2d0434643a..d1ff90bd54 100644 +--- a/src/qml/configure.cmake ++++ b/src/qml/configure.cmake +@@ -82,7 +82,7 @@ qt_feature("qml-ssl" PUBLIC + SECTION "QML" + LABEL "QML SSL support" + PURPOSE "Provides ssl support in QML." +- CONDITION QT_FEATURE_ssl ++ CONDITION QT_FEATURE_qml_network AND QT_FEATURE_ssl + ) + + # On arm and arm64 we need a specialization of cacheFlush() for each OS to be +-- +cgit v1.2.3 diff --git a/package/qt6/qt6declarative/Config.in b/package/qt6/qt6declarative/Config.in new file mode 100644 index 0000000000..1daa645413 --- /dev/null +++ b/package/qt6/qt6declarative/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_QT6DECLARATIVE + bool "qt6declarative" + # Enable host test module to ensure that qmltestrunner is built + select BR2_PACKAGE_HOST_QT6BASE_TEST if BR2_PACKAGE_QT6BASE_TEST + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt6declarative module. + + https://doc.qt.io/qt-6/qtdeclarative-index.html + +if BR2_PACKAGE_QT6DECLARATIVE + +config BR2_PACKAGE_QT6DECLARATIVE_QUICK + bool "quick module" + select BR2_PACKAGE_QT6BASE_GUI + select BR2_PACKAGE_QT6LANGUAGESERVER + select BR2_PACKAGE_QT6SHADERTOOLS + select BR2_PACKAGE_QT6BASE_OPENGL if BR2_PACKAGE_QT6_GL_SUPPORTS + select BR2_PACKAGE_HOST_QT6SVG + select BR2_PACKAGE_HOST_QT6DECLARATIVE + +endif diff --git a/package/qt6/qt6declarative/qt6declarative.hash b/package/qt6/qt6declarative/qt6declarative.hash new file mode 100644 index 0000000000..ae9925509b --- /dev/null +++ b/package/qt6/qt6declarative/qt6declarative.hash @@ -0,0 +1,11 @@ +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtdeclarative-everywhere-src-6.7.0.tar.xz.sha256 +sha256 5a0c39579a74d7cca581162c866ed0887287d4f8d5abff7ab9492d4a58fa9e2c qtdeclarative-everywhere-src-6.7.0.tar.xz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSES/LGPL-3.0-only.txt +sha256 9b1f50aae6267f9d5e0ceb6775ee86450262c25ec7c0573e151fe5d3f18a4700 LICENSES/LicenseRef-Qt-Commercial.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt diff --git a/package/qt6/qt6declarative/qt6declarative.mk b/package/qt6/qt6declarative/qt6declarative.mk new file mode 100644 index 0000000000..2348ff2dae --- /dev/null +++ b/package/qt6/qt6declarative/qt6declarative.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# qt6declaratve +# +################################################################################ + +QT6DECLARATIVE_VERSION = $(QT6_VERSION) +QT6DECLARATIVE_SITE = $(QT6_SITE) +QT6DECLARATIVE_SOURCE = qtdeclarative-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6DECLARATIVE_VERSION).tar.xz +QT6DECLARATIVE_INSTALL_STAGING = YES + +QT6DECLARATIVE_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6DECLARATIVE_CMAKE_BACKEND = ninja + +QT6DECLARATIVE_LICENSE = \ + GPL-2.0+ or LGPL-3.0, \ + GPL-3.0, GFDL-1.3 no invariants (docs) + +QT6DECLARATIVE_LICENSE_FILES = \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt + +QT6DECLARATIVE_CONF_OPTS = \ + -DQT_FEATURE_qml_profiler=OFF \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +HOST_QT6DECLARATIVE_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF \ + -DQT_FEATURE_ssl=OFF + +QT6DECLARATIVE_DEPENDENCIES = \ + host-qt6base \ + host-qt6svg \ + host-qt6shadertools \ + host-qt6declarative \ + qt6base \ + qt6shadertools \ + qt6languageserver \ + qt6svg + +HOST_QT6DECLARATIVE_DEPENDENCIES = \ + host-qt6base \ + host-qt6svg \ + host-qt6shadertools + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 22:03:15 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:15 +0200 Subject: [Buildroot] [PATCH v4 10/14] package/qt6/qt6websockets: new package In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <1934329> <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: <20240513220328.1085629-10-roykollensvendsen@gmail.com> From: Roy Kollen Svendsen Signed-off-by: Roy Kollen Svendsen --- package/qt6/Config.in | 1 + package/qt6/qt6websockets/Config.in | 9 ++++ package/qt6/qt6websockets/qt6websockets.hash | 11 +++++ package/qt6/qt6websockets/qt6websockets.mk | 46 ++++++++++++++++++++ 4 files changed, 67 insertions(+) create mode 100644 package/qt6/qt6websockets/Config.in create mode 100644 package/qt6/qt6websockets/qt6websockets.hash create mode 100644 package/qt6/qt6websockets/qt6websockets.mk diff --git a/package/qt6/Config.in b/package/qt6/Config.in index 625134d281..16f792cff3 100644 --- a/package/qt6/Config.in +++ b/package/qt6/Config.in @@ -51,5 +51,6 @@ source "package/qt6/qt6serialbus/Config.in" source "package/qt6/qt6serialport/Config.in" source "package/qt6/qt6shadertools/Config.in" source "package/qt6/qt6svg/Config.in" +source "package/qt6/qt6websockets/Config.in" endif diff --git a/package/qt6/qt6websockets/Config.in b/package/qt6/qt6websockets/Config.in new file mode 100644 index 0000000000..a201483922 --- /dev/null +++ b/package/qt6/qt6websockets/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_QT6WEBSOCKETS + bool "qt6websockets" + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt6websockets module. + + https://doc.qt.io/qt-6/qtwebsockets-index.html diff --git a/package/qt6/qt6websockets/qt6websockets.hash b/package/qt6/qt6websockets/qt6websockets.hash new file mode 100644 index 0000000000..4e36eb4257 --- /dev/null +++ b/package/qt6/qt6websockets/qt6websockets.hash @@ -0,0 +1,11 @@ +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtwebsockets-everywhere-src-6.7.0.tar.xz.sha256 +sha256 5ffc77da6b36cdf18e04c975a0fbf243968806a93a6291bcd2e9cd0b26139736 qtwebsockets-everywhere-src-6.7.0.tar.xz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSES/LGPL-3.0-only.txt +sha256 9b1f50aae6267f9d5e0ceb6775ee86450262c25ec7c0573e151fe5d3f18a4700 LICENSES/LicenseRef-Qt-Commercial.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt diff --git a/package/qt6/qt6websockets/qt6websockets.mk b/package/qt6/qt6websockets/qt6websockets.mk new file mode 100644 index 0000000000..cc17085d10 --- /dev/null +++ b/package/qt6/qt6websockets/qt6websockets.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# qt6websockets +# +################################################################################ + +QT6WEBSOCKETS_VERSION = $(QT6_VERSION) +QT6WEBSOCKETS_SITE = $(QT6_SITE) +QT6WEBSOCKETS_SOURCE = qtwebsockets-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6WEBSOCKETS_VERSION).tar.xz +QT6WEBSOCKETS_INSTALL_STAGING = YES + +QT6WEBSOCKETS_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6WEBSOCKETS_CMAKE_BACKEND = ninja + +QT6WEBSOCKETS_LICENSE = \ + GPL-2.0+ or LGPL-3.0, \ + GPL-3.0, GFDL-1.3 no invariants (docs) + +QT6WEBSOCKETS_LICENSE_FILES = \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt + +QT6WEBSOCKETS_CONF_OPTS = \ + -DQT_FEATURE_thread=ON \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +HOST_QT6WEBSOCKETS_CONF_OPTS = \ + -DQT_FEATURE_thread=ON \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +QT6WEBSOCKETS_DEPENDENCIES = \ + qt6base \ + qt6declarative \ + host-qt6declarative + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 22:03:16 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:16 +0200 Subject: [Buildroot] [PATCH v4 11/14] package/qt6/qt6wayland: new package In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <1934329> <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: <20240513220328.1085629-11-roykollensvendsen@gmail.com> From: Roy Kollen Svendsen Signed-off-by: Roy Kollen Svendsen --- Changes v3 -> v4: - Fix compositor build by letting this package select libxkbcommon. package/qt6/Config.in | 1 + package/qt6/qt6wayland/Config.in | 25 ++++++++++++ package/qt6/qt6wayland/qt6wayland.hash | 11 ++++++ package/qt6/qt6wayland/qt6wayland.mk | 53 ++++++++++++++++++++++++++ 4 files changed, 90 insertions(+) create mode 100644 package/qt6/qt6wayland/Config.in create mode 100644 package/qt6/qt6wayland/qt6wayland.hash create mode 100644 package/qt6/qt6wayland/qt6wayland.mk diff --git a/package/qt6/Config.in b/package/qt6/Config.in index 16f792cff3..69ce0b3f6a 100644 --- a/package/qt6/Config.in +++ b/package/qt6/Config.in @@ -51,6 +51,7 @@ source "package/qt6/qt6serialbus/Config.in" source "package/qt6/qt6serialport/Config.in" source "package/qt6/qt6shadertools/Config.in" source "package/qt6/qt6svg/Config.in" +source "package/qt6/qt6wayland/Config.in" source "package/qt6/qt6websockets/Config.in" endif diff --git a/package/qt6/qt6wayland/Config.in b/package/qt6/qt6wayland/Config.in new file mode 100644 index 0000000000..a47c9e888c --- /dev/null +++ b/package/qt6/qt6wayland/Config.in @@ -0,0 +1,25 @@ +comment "qt6wayland needs an OpenGL-capable backend" + depends on !BR2_PACKAGE_QT6_GL_SUPPORTS + +config BR2_PACKAGE_QT6WAYLAND + bool "qt6wayland" + depends on BR2_PACKAGE_QT6_GL_SUPPORTS + select BR2_PACKAGE_WAYLAND + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt6wayland module. + + https://doc.qt.io/qt-6/qtwayland-index.html + +if BR2_PACKAGE_QT6WAYLAND + +config BR2_PACKAGE_QT6WAYLAND_COMPOSITOR + bool "Enable compositor (experimental)" + select BR2_PACKAGE_LIBXKBCOMMON + help + The compositor API is still experimental, and not built by + default. + +endif diff --git a/package/qt6/qt6wayland/qt6wayland.hash b/package/qt6/qt6wayland/qt6wayland.hash new file mode 100644 index 0000000000..13a6ba15eb --- /dev/null +++ b/package/qt6/qt6wayland/qt6wayland.hash @@ -0,0 +1,11 @@ +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtwayland-everywhere-src-6.7.0.tar.xz.sha256 +sha256 d73470e4217da388d8cd2a517ee8bb373853f33c569306e80f04397845157aea qtwayland-everywhere-src-6.7.0.tar.xz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSES/LGPL-3.0-only.txt +sha256 9b1f50aae6267f9d5e0ceb6775ee86450262c25ec7c0573e151fe5d3f18a4700 LICENSES/LicenseRef-Qt-Commercial.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt diff --git a/package/qt6/qt6wayland/qt6wayland.mk b/package/qt6/qt6wayland/qt6wayland.mk new file mode 100644 index 0000000000..cf8727287e --- /dev/null +++ b/package/qt6/qt6wayland/qt6wayland.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# qt6wayland +# +################################################################################ + +QT6WAYLAND_VERSION = $(QT6_VERSION) +QT6WAYLAND_SITE = $(QT6_SITE) +QT6WAYLAND_SOURCE = qtwayland-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6WAYLAND_VERSION).tar.xz +QT6WAYLAND_INSTALL_STAGING = YES + +QT6WAYLAND_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6WAYLAND_CMAKE_BACKEND = ninja + +QT6WAYLAND_LICENSE = \ + GPL-2.0+ or LGPL-3.0, \ + GPL-3.0, GFDL-1.3 no invariants (docs) + +QT6WAYLAND_LICENSE_FILES = \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt + +QT6WAYLAND_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF \ + -DFEATURE_wayland_client=ON + +ifeq ($(BR2_PACKAGE_QT6WAYLAND_COMPOSITOR),y) +QT6WAYLAND_CONF_OPTS += -DFEATURE_wayland_server=ON +else +QT6WAYLAND_CONF_OPTS += -DFEATURE_wayland_server=OFF +endif + +HOST_QT6WAYLAND_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +QT6WAYLAND_DEPENDENCIES = \ + qt6base \ + qt6declarative \ + host-qt6wayland \ + wayland \ + host-wayland + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 22:03:18 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:18 +0200 Subject: [Buildroot] [PATCH v4 13/14] package/qt6/qt6virtualkeyboard: new package In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <1934329> <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: <20240513220328.1085629-13-roykollensvendsen@gmail.com> From: Roy Kollen Svendsen Signed-off-by: Roy Kollen Svendsen --- package/qt6/Config.in | 1 + package/qt6/qt6virtualkeyboard/Config.in | 9 ++++ .../qt6virtualkeyboard.hash | 12 +++++ .../qt6virtualkeyboard/qt6virtualkeyboard.mk | 49 +++++++++++++++++++ 4 files changed, 71 insertions(+) create mode 100644 package/qt6/qt6virtualkeyboard/Config.in create mode 100644 package/qt6/qt6virtualkeyboard/qt6virtualkeyboard.hash create mode 100644 package/qt6/qt6virtualkeyboard/qt6virtualkeyboard.mk diff --git a/package/qt6/Config.in b/package/qt6/Config.in index 48366f5fd1..9dbc4b804a 100644 --- a/package/qt6/Config.in +++ b/package/qt6/Config.in @@ -52,6 +52,7 @@ source "package/qt6/qt6serialport/Config.in" source "package/qt6/qt6shadertools/Config.in" source "package/qt6/qt6svg/Config.in" source "package/qt6/qt6tools/Config.in" +source "package/qt6/qt6virtualkeyboard/Config.in" source "package/qt6/qt6wayland/Config.in" source "package/qt6/qt6websockets/Config.in" diff --git a/package/qt6/qt6virtualkeyboard/Config.in b/package/qt6/qt6virtualkeyboard/Config.in new file mode 100644 index 0000000000..59e9dc3595 --- /dev/null +++ b/package/qt6/qt6virtualkeyboard/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_QT6VIRTUALKEYBOARD + bool "qt6virtualkeyboard" + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt6virtualkeyboard module. + + https://doc.qt.io/qt-6/qtvirtualkeyboard-index.html diff --git a/package/qt6/qt6virtualkeyboard/qt6virtualkeyboard.hash b/package/qt6/qt6virtualkeyboard/qt6virtualkeyboard.hash new file mode 100644 index 0000000000..dc9a0f23ab --- /dev/null +++ b/package/qt6/qt6virtualkeyboard/qt6virtualkeyboard.hash @@ -0,0 +1,12 @@ +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtvirtualkeyboard-everywhere-src-6.7.0.tar.xz.sha256 +sha256 d61bb2a18b1b06f64c956b2bde740c90a4bb46c47a99b31462e6e8d278a0cb6a qtvirtualkeyboard-everywhere-src-6.7.0.tar.xz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 9b1f50aae6267f9d5e0ceb6775ee86450262c25ec7c0573e151fe5d3f18a4700 LICENSES/LicenseRef-Qt-Commercial.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt +sha256 05cc719deafd0ab083b03296bb2911de10d116953b626a7629b9ca59938038b1 src/plugins/openwnn/3rdparty/openwnn/NOTICE +sha256 b5830d96fb5a7e7e7ebcc295f352846b4b998e78fdc8f9aa68e134d2e4b39986 src/plugins/pinyin/3rdparty/pinyin/NOTICE +sha256 9400a6128693d2f25653698e695f554660c71efccc8c21af28bf143e35199db6 src/plugins/tcime/3rdparty/tcime/COPYING diff --git a/package/qt6/qt6virtualkeyboard/qt6virtualkeyboard.mk b/package/qt6/qt6virtualkeyboard/qt6virtualkeyboard.mk new file mode 100644 index 0000000000..e49643149e --- /dev/null +++ b/package/qt6/qt6virtualkeyboard/qt6virtualkeyboard.mk @@ -0,0 +1,49 @@ +################################################################################ +# +# qt6virtualkeyboard +# +################################################################################ + +QT6VIRTUALKEYBOARD_VERSION = $(QT6_VERSION) +QT6VIRTUALKEYBOARD_SITE = $(QT6_SITE) +QT6VIRTUALKEYBOARD_SOURCE = qtvirtualkeyboard-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6VIRTUALKEYBOARD_VERSION).tar.xz +QT6VIRTUALKEYBOARD_INSTALL_STAGING = YES + +QT6VIRTUALKEYBOARD_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6VIRTUALKEYBOARD_CMAKE_BACKEND = ninja + +QT6VIRTUALKEYBOARD_LICENSE = \ + GPL-3.0-only, GFDL-1.3 no invariants (docs), \ + BSD-3-Clause + +QT6VIRTUALKEYBOARD_LICENSE_FILES = \ + LICENSES/BSD-3-Clause.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LicenseRef-Qt-Commercial.txt \ + LICENSES/Qt-GPL-exception-1.0.txt \ + src/plugins/openwnn/3rdparty/openwnn/NOTICE \ + src/plugins/pinyin/3rdparty/pinyin/NOTICE \ + src/plugins/tcime/3rdparty/tcime/COPYING + +QT6VIRTUALKEYBOARD_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +HOST_QT6VIRTUALKEYBOARD_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +QT6VIRTUALKEYBOARD_DEPENDENCIES = \ + qt6base \ + qt6declarative \ + qt6svg \ + host-qt6declarative + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 22:03:17 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:17 +0200 Subject: [Buildroot] [PATCH v4 12/14] package/qt6/qt6tools: new package In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <1934329> <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: <20240513220328.1085629-12-roykollensvendsen@gmail.com> From: Roy Kollen Svendsen Signed-off-by: Roy Kollen Svendsen --- Changes v3 -> v4: - Fix build by selecting the Sql module on host so that the required host tool qhelpgenerator is built. package/qt6/Config.in | 1 + package/qt6/qt6tools/Config.in | 13 +++++++++++ package/qt6/qt6tools/qt6tools.hash | 11 +++++++++ package/qt6/qt6tools/qt6tools.mk | 37 ++++++++++++++++++++++++++++++ 4 files changed, 62 insertions(+) create mode 100644 package/qt6/qt6tools/Config.in create mode 100644 package/qt6/qt6tools/qt6tools.hash create mode 100644 package/qt6/qt6tools/qt6tools.mk diff --git a/package/qt6/Config.in b/package/qt6/Config.in index 69ce0b3f6a..48366f5fd1 100644 --- a/package/qt6/Config.in +++ b/package/qt6/Config.in @@ -51,6 +51,7 @@ source "package/qt6/qt6serialbus/Config.in" source "package/qt6/qt6serialport/Config.in" source "package/qt6/qt6shadertools/Config.in" source "package/qt6/qt6svg/Config.in" +source "package/qt6/qt6tools/Config.in" source "package/qt6/qt6wayland/Config.in" source "package/qt6/qt6websockets/Config.in" diff --git a/package/qt6/qt6tools/Config.in b/package/qt6/qt6tools/Config.in new file mode 100644 index 0000000000..6e5298de35 --- /dev/null +++ b/package/qt6/qt6tools/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_QT6TOOLS + bool "qt6tools" + select BR2_PACKAGE_QT6BASE_NETWORK + select BR2_PACKAGE_HOST_QT6BASE_NETWORK + select BR2_PACKAGE_HOST_QT6BASE_SQL + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Qt Tools provides tools facilitate the development + and design of applications. + + https://doc.qt.io/qt-6/qtmodules.html#qt-tools diff --git a/package/qt6/qt6tools/qt6tools.hash b/package/qt6/qt6tools/qt6tools.hash new file mode 100644 index 0000000000..6f2c962740 --- /dev/null +++ b/package/qt6/qt6tools/qt6tools.hash @@ -0,0 +1,11 @@ +# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qttools-everywhere-src-6.7.0.tar.xz.sha256 +sha256 c8da6b239e82fe1e23465cbf0936c0da5a334438d3fb433e19c503cbb1abee7b qttools-everywhere-src-6.7.0.tar.xz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSES/LGPL-3.0-only.txt +sha256 9b1f50aae6267f9d5e0ceb6775ee86450262c25ec7c0573e151fe5d3f18a4700 LICENSES/LicenseRef-Qt-Commercial.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt diff --git a/package/qt6/qt6tools/qt6tools.mk b/package/qt6/qt6tools/qt6tools.mk new file mode 100644 index 0000000000..8779e8c00f --- /dev/null +++ b/package/qt6/qt6tools/qt6tools.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# qt6tools +# +################################################################################ + +QT6TOOLS_VERSION = $(QT6_VERSION) +QT6TOOLS_SITE = $(QT6_SITE) +QT6TOOLS_SOURCE = qttools-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6TOOLS_VERSION).tar.xz +QT6TOOLS_INSTALL_STAGING = YES +QT6TOOLS_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6TOOLS_CMAKE_BACKEND = ninja + +QT6TOOLS_LICENSE = \ + GPL-2.0+ or LGPL-3.0, \ + GPL-3.0, GFDL-1.3 no invariants (docs) + +QT6TOOLS_LICENSE_FILES = \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt + +QT6TOOLS_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +QT6TOOLS_DEPENDENCIES = \ + qt6base \ + qt6declarative \ + host-qt6tools + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) -- 2.45.0 From roykollensvendsen at gmail.com Mon May 13 22:03:19 2024 From: roykollensvendsen at gmail.com (Roy Kollen Svendsen) Date: Tue, 14 May 2024 00:03:19 +0200 Subject: [Buildroot] [PATCH v4 14/14] package/qt6/qt6mqtt: new package In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <1934329> <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: <20240513220328.1085629-14-roykollensvendsen@gmail.com> From: Roy Kollen Svendsen Signed-off-by: Roy Kollen Svendsen --- package/qt6/Config.in | 1 + package/qt6/qt6.mk | 2 ++ package/qt6/qt6mqtt/Config.in | 10 +++++++++ package/qt6/qt6mqtt/qt6mqtt.hash | 8 ++++++++ package/qt6/qt6mqtt/qt6mqtt.mk | 35 ++++++++++++++++++++++++++++++++ 5 files changed, 56 insertions(+) create mode 100644 package/qt6/qt6mqtt/Config.in create mode 100644 package/qt6/qt6mqtt/qt6mqtt.hash create mode 100644 package/qt6/qt6mqtt/qt6mqtt.mk diff --git a/package/qt6/Config.in b/package/qt6/Config.in index 9dbc4b804a..e84806d5e4 100644 --- a/package/qt6/Config.in +++ b/package/qt6/Config.in @@ -47,6 +47,7 @@ source "package/qt6/qt6base/Config.in" source "package/qt6/qt6core5compat/Config.in" source "package/qt6/qt6declarative/Config.in" source "package/qt6/qt6languageserver/Config.in" +source "package/qt6/qt6mqtt/Config.in" source "package/qt6/qt6serialbus/Config.in" source "package/qt6/qt6serialport/Config.in" source "package/qt6/qt6shadertools/Config.in" diff --git a/package/qt6/qt6.mk b/package/qt6/qt6.mk index b87cb6748d..42984f89ee 100644 --- a/package/qt6/qt6.mk +++ b/package/qt6/qt6.mk @@ -9,4 +9,6 @@ QT6_VERSION = $(QT6_VERSION_MAJOR).0 QT6_SOURCE_TARBALL_PREFIX = everywhere-src QT6_SITE = https://download.qt.io/archive/qt/$(QT6_VERSION_MAJOR)/$(QT6_VERSION)/submodules +QT6_GIT = git://code.qt.io + include $(sort $(wildcard package/qt6/*/*.mk)) diff --git a/package/qt6/qt6mqtt/Config.in b/package/qt6/qt6mqtt/Config.in new file mode 100644 index 0000000000..2cda7e53c0 --- /dev/null +++ b/package/qt6/qt6mqtt/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_QT6MQTT + bool "qt6mqtt" + select BR2_PACKAGE_QT6BASE_NETWORK + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt6mqtt module. + + https://doc.qt.io/qt-6/qtmqtt-index.html diff --git a/package/qt6/qt6mqtt/qt6mqtt.hash b/package/qt6/qt6mqtt/qt6mqtt.hash new file mode 100644 index 0000000000..0fad4fe06f --- /dev/null +++ b/package/qt6/qt6mqtt/qt6mqtt.hash @@ -0,0 +1,8 @@ +sha256 94024e3dd6c77feddfbd35520cc1f474d669aad7402f087827221890e07a64d5 qt6mqtt-6.7.0-git4.tar.gz + +# Hashes for license files: +sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt +sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt +sha256 9b1f50aae6267f9d5e0ceb6775ee86450262c25ec7c0573e151fe5d3f18a4700 LICENSES/LicenseRef-Qt-Commercial.txt +sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt diff --git a/package/qt6/qt6mqtt/qt6mqtt.mk b/package/qt6/qt6mqtt/qt6mqtt.mk new file mode 100644 index 0000000000..0405311065 --- /dev/null +++ b/package/qt6/qt6mqtt/qt6mqtt.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# qt6mqtt +# +################################################################################ + +QT6MQTT_VERSION = $(QT6_VERSION) +QT6MQTT_SITE = $(QT6_GIT)/qt/qtmqtt.git + +QT6MQTT_INSTALL_STAGING = YES + +QT6MQTT_SUPPORTS_IN_SOURCE_BUILD = NO + +QT6MQTT_CMAKE_BACKEND = ninja + +QT6MQTT_LICENSE = \ + BSD-3-Clause, GPL-3.0-only, \ + GFDL-1.3-invariants-only (docs) + +QT6MQTT_LICENSE_FILES = \ + LICENSES/BSD-3-Clause.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/Qt-GPL-exception-1.0.txt + +QT6MQTT_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DBUILD_WITH_PCH=OFF \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF + +QT6MQTT_DEPENDENCIES = \ + qt6base + +$(eval $(cmake-package)) -- 2.45.0 From ps.report at gmx.net Mon May 13 22:11:06 2024 From: ps.report at gmx.net (Peter Seiderer) Date: Tue, 14 May 2024 00:11:06 +0200 Subject: [Buildroot] [PATCH v2 1/4] Config.in: do not expand TOPDIR, BASE_DIR and CONFIG_DIR In-Reply-To: <20240513091950.30116-1-ps.report@gmx.net> References: <20240513091950.30116-1-ps.report@gmx.net> Message-ID: <20240514001106.6e9d8206@gmx.net> On Mon, 13 May 2024 11:19:45 +0200, Peter Seiderer via buildroot wrote: > - escape TOPDIR, BASE_DIR and CONFIG_DIR usage to force to not exapnd at > configure time (but at make time), needed for upcoming kconfig update > (see upstream commit [1]) Same is needed for 'ARCH' usage in toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options and toolchain/toolchain-external/toolchain-external-custom/Config.in.options (and support/scripts/gen-bootlin-toolchains)..., additional patch will follow with next patch set iteration... Regards, Peter > > [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=104daea149c45cc84842ce77a9bd6436d19f3dd8 > > Signed-off-by: Peter Seiderer > --- > Changes v1 -> v2: > - new patch (moved escape fixes from 'support/kconfig: reference environment > variables directly (remove 'option env=')' to this extra/preliminary patch) > --- > Config.in | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/Config.in b/Config.in > index b5a94325c4..035900c971 100644 > --- a/Config.in > +++ b/Config.in > @@ -197,7 +197,7 @@ config BR2_DEFCONFIG > > config BR2_DL_DIR > string "Download dir" > - default "$(TOPDIR)/dl" > + default "\$(TOPDIR)/dl" > help > Directory to store all the source files that we need to fetch. > If the Linux shell environment has defined the BR2_DL_DIR > @@ -211,7 +211,7 @@ config BR2_DL_DIR > > config BR2_HOST_DIR > string "Host dir" > - default "$(BASE_DIR)/host" > + default "\$(BASE_DIR)/host" > help > Directory to store all the binary files that are built for the > host. This includes the cross compilation toolchain when > @@ -669,7 +669,7 @@ endchoice > > config BR2_PACKAGE_OVERRIDE_FILE > string "location of a package override file" > - default "$(CONFIG_DIR)/local.mk" > + default "\$(CONFIG_DIR)/local.mk" > help > A package override file is a short makefile that contains > variable definitions of the form _OVERRIDE_SRCDIR, which From jesseevg at gmail.com Mon May 13 22:13:25 2024 From: jesseevg at gmail.com (Jesse Van Gavere) Date: Tue, 14 May 2024 00:13:25 +0200 Subject: [Buildroot] [PATCH v4 01/14] package/qt6: bump version to 6.7.0 In-Reply-To: <20240513220328.1085629-1-roykollensvendsen@gmail.com> References: <20240513220328.1085629-1-roykollensvendsen@gmail.com> Message-ID: Op di 14 mei 2024 om 00:03 schreef Roy Kollen Svendsen < roykollensvendsen at gmail.com>: > From: Roy Kollen Svendsen > > For details see [1], [2], [3], [4], [5], [6], [7], [8] and [9]. > > [1] > https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.5.0/release-note.md > [2] > https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.5.1/release-note.md > [3] > https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.5.2/release-note.md > [4] > https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.5.3/release-note.md > > [5] > https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.6.0/release-note.md > [6] > https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.6.1/release-note.md > [7] > https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.6.2/release-note.md > [8] > https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.6.3/release-note.md > > [9] > https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.7.0/release-note.md > > We also apply the associated CVE-2024-33861 patch from: > > https://download.qt.io/archive/qt/6.7/ > > As Jesse Van Gavere noted: > > "This is not applicable to 6.4.3, the affected versions are detailed in > the bugzilla report below and it's only 6.5.0+ > So this seems perfectly valid to go along with the version bump. > > OpenSUSE report: > https://www.suse.com/security/cve/CVE-2024-33861.html > Bugzilla report clarifying affected versions > https://bugzilla.suse.com/show_bug.cgi?id=1223917" > > Signed-off-by: Roy Kollen Svendsen > --- > Changes v3 -> v4: > - Explain why the associated CVE-patch should be part of this series > (suggested by Thomas) > - Squash the CVE-patch into this patch. > - Add CVE-ID to QT6BASE_IGNORE_CVES. (suggested by Thomas) > > package/qt6/qt6.mk | 4 +-- > .../0001-Fix-CVE-2024-33861-for-Qt6.7.patch | 36 +++++++++++++++++++ > package/qt6/qt6base/qt6base.hash | 4 +-- > package/qt6/qt6base/qt6base.mk | 2 +- > .../qt6/qt6core5compat/qt6core5compat.hash | 4 +-- > package/qt6/qt6serialbus/qt6serialbus.hash | 4 +-- > package/qt6/qt6serialport/qt6serialport.hash | 4 +-- > package/qt6/qt6svg/qt6svg.hash | 4 +-- > 8 files changed, 49 insertions(+), 13 deletions(-) > create mode 100644 > package/qt6/qt6base/0001-Fix-CVE-2024-33861-for-Qt6.7.patch > > diff --git a/package/qt6/qt6.mk b/package/qt6/qt6.mk > index 1edb252c96..b87cb6748d 100644 > --- a/package/qt6/qt6.mk > +++ b/package/qt6/qt6.mk > @@ -4,8 +4,8 @@ > # > > ################################################################################ > > -QT6_VERSION_MAJOR = 6.4 > -QT6_VERSION = $(QT6_VERSION_MAJOR).3 > +QT6_VERSION_MAJOR = 6.7 > +QT6_VERSION = $(QT6_VERSION_MAJOR).0 > QT6_SOURCE_TARBALL_PREFIX = everywhere-src > QT6_SITE = > https://download.qt.io/archive/qt/$(QT6_VERSION_MAJOR)/$(QT6_VERSION)/submodules > > diff --git a/package/qt6/qt6base/0001-Fix-CVE-2024-33861-for-Qt6.7.patch > b/package/qt6/qt6base/0001-Fix-CVE-2024-33861-for-Qt6.7.patch > new file mode 100644 > index 0000000000..f016788017 > --- /dev/null > +++ b/package/qt6/qt6base/0001-Fix-CVE-2024-33861-for-Qt6.7.patch > @@ -0,0 +1,36 @@ > +From 7f88945625f560796c86a267086f163e74c1407b Mon Sep 17 00:00:00 2001 > +From: Roy Kollen Svendsen > +Date: Sun, 12 May 2024 07:15:32 +0200 > +Subject: [PATCH] Fix CVE-2024-33861 for Qt6.7 > + > +Signed-off-by: Roy Kollen Svendsen > > +Upstream: > https://download.qt.io/archive/qt/6.7/CVE-2024-33861-qtbase-6.7.diff > +--- > + src/corelib/text/qstringconverter.cpp | 4 ++-- > + 1 file changed, 2 insertions(+), 2 deletions(-) > + > +diff --git a/src/corelib/text/qstringconverter.cpp > b/src/corelib/text/qstringconverter.cpp > +index b5749843..fd45ccf2 100644 > +--- a/src/corelib/text/qstringconverter.cpp > ++++ b/src/corelib/text/qstringconverter.cpp > +@@ -1954,7 +1954,7 @@ struct QStringConverterICU : QStringConverter > + const void *context; > + ucnv_getToUCallBack(icu_conv, &action, &context); > + if (context != state) > +- ucnv_setToUCallBack(icu_conv, action, &state, nullptr, > nullptr, &err); > ++ ucnv_setToUCallBack(icu_conv, action, state, nullptr, > nullptr, &err); > + > + ucnv_toUnicode(icu_conv, &target, targetLimit, &source, > sourceLimit, nullptr, flush, &err); > + // We did reserve enough space: > +@@ -1987,7 +1987,7 @@ struct QStringConverterICU : QStringConverter > + const void *context; > + ucnv_getFromUCallBack(icu_conv, &action, &context); > + if (context != state) > +- ucnv_setFromUCallBack(icu_conv, action, &state, nullptr, > nullptr, &err); > ++ ucnv_setFromUCallBack(icu_conv, action, state, nullptr, > nullptr, &err); > + > + ucnv_fromUnicode(icu_conv, &target, targetLimit, &source, > sourceLimit, nullptr, flush, &err); > + // We did reserve enough space: > +-- > +2.45.0 > + > diff --git a/package/qt6/qt6base/qt6base.hash > b/package/qt6/qt6base/qt6base.hash > index cb111bd405..0f45826a45 100644 > --- a/package/qt6/qt6base/qt6base.hash > +++ b/package/qt6/qt6base/qt6base.hash > @@ -1,5 +1,5 @@ > -# Hash from: > https://download.qt.io/official_releases/qt/6.4/6.4.3/submodules/qtbase-everywhere-src-6.4.3.tar.xz.sha256 > -sha256 > > 5087c9e5b0165e7bc3c1a4ab176b35d0cd8f52636aea903fa377bdba00891a60 > qtbase-everywhere-src-6.4.3.tar.xz > +# Hash from: > https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtbase-everywhere-src-6.7.0.tar.xz.sha256 > +sha256 > > 11b2e29e2e52fb0e3b453ea13bbe51a10fdff36e1c192d8868c5a40233b8b254 > qtbase-everywhere-src-6.7.0.tar.xz > > # Hashes for license files > sha256 e3ba223bb1423f0aad8c3dfce0fe3148db48926d41e6fbc3afbbf5ff9e1c89cb > LICENSES/Apache-2.0.txt > diff --git a/package/qt6/qt6base/qt6base.mk b/package/qt6/qt6base/ > qt6base.mk > index 6857725ef5..b8040e395b 100644 > --- a/package/qt6/qt6base/qt6base.mk > +++ b/package/qt6/qt6base/qt6base.mk > @@ -9,7 +9,7 @@ QT6BASE_SITE = $(QT6_SITE) > QT6BASE_SOURCE = > qtbase-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6BASE_VERSION).tar.xz > QT6BASE_CPE_ID_VENDOR = qt > QT6BASE_CPE_ID_PRODUCT = qt > - > +QT6BASE_IGNORE_CVES = CVE-2024-33861 > QT6BASE_CMAKE_BACKEND = ninja > > QT6BASE_LICENSE = \ > diff --git a/package/qt6/qt6core5compat/qt6core5compat.hash > b/package/qt6/qt6core5compat/qt6core5compat.hash > index 0735df3af2..1eb0b5b460 100644 > --- a/package/qt6/qt6core5compat/qt6core5compat.hash > +++ b/package/qt6/qt6core5compat/qt6core5compat.hash > @@ -1,5 +1,5 @@ > -# Hash from: > https://download.qt.io/official_releases/qt/6.4/6.4.3/submodules/qtserialport-everywhere-src-6.4.3.tar.xz.sha256 > -sha256 > > d4b249abb823d575eee9045c24d924ba8d1276e6be7735b287689991d998aa7a > qt5compat-everywhere-src-6.4.3.tar.xz > +# Hash from: > https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qt5compat-everywhere-src-6.7.0.tar.xz.sha256 > +sha256 > > 9d49d4fd8345d8a40b63e0b65cd49c1d8286e33a7f1409bf1316763f654e19f5 > qt5compat-everywhere-src-6.7.0.tar.xz > > # Hashes for license files: > sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce > LICENSES/BSD-3-Clause.txt > diff --git a/package/qt6/qt6serialbus/qt6serialbus.hash > b/package/qt6/qt6serialbus/qt6serialbus.hash > index 98c8931962..17d5090076 100644 > --- a/package/qt6/qt6serialbus/qt6serialbus.hash > +++ b/package/qt6/qt6serialbus/qt6serialbus.hash > @@ -1,5 +1,5 @@ > -# Hash from: > https://download.qt.io/official_releases/qt/6.4/6.4.3/submodules/qtserialbus-everywhere-src-6.4.3.tar.xz.sha256 > -sha256 > > b6446a7516d1f04e561c00f9c50ce4d39dad72150f067722ba759f00b4b34366 > qtserialbus-everywhere-src-6.4.3.tar.xz > +# Hash from: > https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtserialbus-everywhere-src-6.7.0.tar.xz.sha256 > +sha256 > > 498193a9860664f8a55f676656c45af179ac13d48184af43fc58ddf795bb76dd > qtserialbus-everywhere-src-6.7.0.tar.xz > > # Hashes for license files: > sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce > LICENSES/BSD-3-Clause.txt > diff --git a/package/qt6/qt6serialport/qt6serialport.hash > b/package/qt6/qt6serialport/qt6serialport.hash > index 9341978d86..cd51fbe435 100644 > --- a/package/qt6/qt6serialport/qt6serialport.hash > +++ b/package/qt6/qt6serialport/qt6serialport.hash > @@ -1,5 +1,5 @@ > -# Hash from: > https://download.qt.io/official_releases/qt/6.4/6.4.3/submodules/qtserialport-everywhere-src-6.4.3.tar.xz.sha256 > -sha256 > > 5f97ad9067efa39a8a2a39fbbc1e03d2191f305733d9c2f3060f8017ecfc95de > qtserialport-everywhere-src-6.4.3.tar.xz > +# Hash from: > https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtserialport-everywhere-src-6.7.0.tar.xz.sha256 > +sha256 > > b1f02a3d8c9cc8ba2ffa7cca3749f1f147d327e8dfc633fd4ec3cb770d7981c9 > qtserialport-everywhere-src-6.7.0.tar.xz > > # Hashes for license files: > sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce > LICENSES/BSD-3-Clause.txt > diff --git a/package/qt6/qt6svg/qt6svg.hash > b/package/qt6/qt6svg/qt6svg.hash > index bb239cb012..32c1a79a5c 100644 > --- a/package/qt6/qt6svg/qt6svg.hash > +++ b/package/qt6/qt6svg/qt6svg.hash > @@ -1,5 +1,5 @@ > -# Hash from: > https://download.qt.io/official_releases/qt/6.4/6.4.3/submodules/qtsvg-everywhere-src-6.4.3.tar.xz.sha256 > -sha256 > > 88315f886cf81898705e487cedba6e6160724359d23c518c92c333c098879a4a > qtsvg-everywhere-src-6.4.3.tar.xz > +# Hash from: > https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/qtsvg-everywhere-src-6.7.0.tar.xz.sha256 > +sha256 > > 1518f40e08ff5e6153a6e26e5b95b033413ac143b70795dc1317e7f73ebf922d > qtsvg-everywhere-src-6.7.0.tar.xz > > # Hashes for license files: > sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce > LICENSES/BSD-3-Clause.txt > -- > 2.45.0 > > Acked-by: Jesse Van Gavere Of course testing a huge module like Qt fully is difficult given all the possible options but with these new iterations I tested them as good as I could and I feel confident this series is good to go as-is, great work Roy. -------------- next part -------------- An HTML attachment was scrubbed... URL: From bugzilla at busybox.net Mon May 13 23:05:41 2024 From: bugzilla at busybox.net (bugzilla at busybox.net) Date: Mon, 13 May 2024 23:05:41 +0000 Subject: [Buildroot] [Bug 16072] New: Make 4.4.1 breaks glibc 2.38 build when cross compiling for arm_hf Message-ID: https://bugs.busybox.net/show_bug.cgi?id=16072 Bug ID: 16072 Summary: Make 4.4.1 breaks glibc 2.38 build when cross compiling for arm_hf Product: buildroot Version: 2024.02.1 Hardware: All OS: Linux Status: NEW Severity: normal Priority: P5 Component: Other Assignee: unassigned at buildroot.uclibc.org Reporter: farhandude at gmail.com CC: buildroot at uclibc.org Target Milestone: --- make 4.4.1 is showing some strange behavior when it comes to handling command line variables. Buildroot passes 'install_root' command line variable to the glibc build, this variable is processed in : buildroot-2024.02.1/output/build/glibc-2.38-44-gd37c2b20a4787463d192b32041c3406c2bd91de0/build/config.make: ... install_root = $(DESTDIR) ... DESTDIR is empty With make 4.4.1, install_root gets overridden in config.make With make 4.2.1, install_root DOES NOT get overridden Due to this overriding, glibc tries to install its artifacts in '/' which fails Farhan -- You are receiving this mail because: You are on the CC list for the bug. From bugzilla at busybox.net Mon May 13 23:08:20 2024 From: bugzilla at busybox.net (bugzilla at busybox.net) Date: Mon, 13 May 2024 23:08:20 +0000 Subject: [Buildroot] [Bug 16072] Make 4.4.1 breaks glibc 2.38 build when cross compiling for arm_hf In-Reply-To: References: Message-ID: https://bugs.busybox.net/show_bug.cgi?id=16072 --- Comment #1 from Farhan Ali --- Just adding this for reference: make command-line variables cannot be overridden with simple assignment: https://www.gnu.org/software/make/manual/html_node/Overriding.html -- You are receiving this mail because: You are on the CC list for the bug. From thomas.petazzoni at bootlin.com Tue May 14 04:03:54 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 14 May 2024 04:03:54 -0000 Subject: [Buildroot] [autobuild.buildroot.net] Daily results for 2024-05-13 Message-ID: Hello, Autobuild statistics for 2024-05-13 =================================== branch | OK | NOK | TIM | TOT | 2024.02.x | 11 | 11 | 0 | 22 | master | 73 | 117 | 0 | 190 | Classification of failures by reason for master ----------------------------------------------- bat-0.24.0 | 6 host-sentry-cli-2.20.3 | 6 unknown | 6 fail2ban-1.0.2 | 5 libressl-3.8.4 | 5 coreutils-9.3 | 4 dust-0.9.0 | 4 ibm-sw-tpm2-5452af422edeff7... | 4 check-11970a7e112dfe243a2e6... | 3 ffmpeg-6.1.1 | 3 gobject-introspection-1.76.1 | 3 libcamera-apps-1.2.1 | 3 libffi-3.4.6 | 3 beecrypt-4.2.1 | 2 bird-2.0.12 | 2 brcm-patchram-plus-95b7b691... | 2 elfutils-0.189 | 2 glibc-2.39-5-ge0910f1d3278f... | 2 host-libxcrypt-4.4.36 | 2 mongodb-4.2.18 | 2 nushell-0.85.0 | 2 openssh-9.7p1 | 2 zlib-ng-2.1.6 | 2 alsa-plugins-1.2.7.1 | 1 atftp-0.8.0 | 1 aubio-152d6819b360c2e7b379e... | 1 bc-1.07.1 | 1 ccrypt-1.11 | 1 cdrkit-1.1.11 | 1 cni-plugins-1.3.0 | 1 dhcp-4.4.3-P1 | 1 docker-compose-2.27.0 | 1 eza-0.18.8 | 1 fcft-3.1.6 | 1 fftw-quad-3.3.10 | 1 flann-1.9.2 | 1 gdal-3.8.2 | 1 glibmm-2.76.0 | 1 gnu-efi-3.0.18 | 1 host-binutils-bare-metal-2.42 | 1 host-heimdal-f4faaeaba371ff... | 1 ledmon-1.0.0 | 1 libdbi-drivers-0bfae6c43134... | 1 libopenh264-2.4.0 | 1 libp11-0.4.12 | 1 librsvg-2.50.9 | 1 libsepol-3.6 | 1 linux-5.10.162-cip24 | 1 linux-5.10.162-cip24-rt10 | 1 lmdb-0.9.31 | 1 ltp-testsuite-20240129 | 1 ola-0.10.9 | 1 p7zip-17.05 | 1 protobuf-21.12 | 1 python-numpy-1.25.0 | 1 qemu-8.1.1 | 1 ripgrep-14.1.0 | 1 rtl8188eu-306f3e62cf7cddf8c... | 1 rtty-8.1.0 | 1 ruby-3.3.0 | 1 skalibs-2.12.0.1 | 1 syslog-ng-4.7.1 | 1 uclibc-1.0.48 | 1 ulog-0389d243352255f6182326... | 1 util-linux-2.39.3 | 1 Detail of failures for master ----------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- microblaze | alsa-plugins-1.2.7.1 | NOK | http://autobuild.buildroot.net/results/909bf62eb8f55956108b1a36949cc79d696b4766 | microblaze | atftp-0.8.0 | NOK | http://autobuild.buildroot.net/results/1ad1a99677ffcc79e412a27d1bf73d6db47474e6 | ORPH or1k | aubio-152d6819b360c2e7b379e... | NOK | http://autobuild.buildroot.net/results/4a5369090f438281eddc9d72448a321cb93f0d65 | arm | bat-0.24.0 | NOK | http://autobuild.buildroot.net/results/cf4351c73737318e2cad205aa0dd38d9250f3362 | x86_64 | bat-0.24.0 | NOK | http://autobuild.buildroot.net/results/b5e78164c5a974f89449ef6db75f732aad8b0f10 | x86_64 | bat-0.24.0 | NOK | http://autobuild.buildroot.net/results/7f27e508756918461eeec3c20eb6245c925c8704 | s390x | bat-0.24.0 | NOK | http://autobuild.buildroot.net/results/1c62a02b616e0764814345e791ef651c5e55925f | aarch64 | bat-0.24.0 | NOK | http://autobuild.buildroot.net/results/0662b21d6aee875a7e576df28d0e4bbf63b4f3d2 | s390x | bat-0.24.0 | NOK | http://autobuild.buildroot.net/results/03629728ec883fc723bcfe58334270f429ac0341 | sparc64 | bc-1.07.1 | NOK | http://autobuild.buildroot.net/results/4d3c0e0a08cd734699cb61412c99d705738e8ab4 | ORPH i686 | beecrypt-4.2.1 | NOK | http://autobuild.buildroot.net/results/27df4be396c8a55c0d831112411687362fad6d80 | ORPH mips64el | beecrypt-4.2.1 | NOK | http://autobuild.buildroot.net/results/244c74ad56a9a51e9f7950ffe511e6e00123518a | ORPH aarch64_be | bird-2.0.12 | NOK | http://autobuild.buildroot.net/results/d43c3f2d4b2e9bd73de878f8e3eb4e783650e210 | arm | bird-2.0.12 | NOK | http://autobuild.buildroot.net/results/31dfb720f1fbb57ad6cb28a45bc651b3f449d09c | mips64el | brcm-patchram-plus-95b7b691... | NOK | http://autobuild.buildroot.net/results/cd28410188e7eee624f8773189b722c2b87c8d26 | arm | brcm-patchram-plus-95b7b691... | NOK | http://autobuild.buildroot.net/results/da6a5b638ecb2863bff0350090176a43e908212f | riscv32 | ccrypt-1.11 | NOK | http://autobuild.buildroot.net/results/096d22a64a7f297bbb7f7f62a2e8d92463726cfb | ORPH mips64el | cdrkit-1.1.11 | NOK | http://autobuild.buildroot.net/results/1ed18a7c92c9399a0ab909e2bb1c813c5f007d9b | arc | check-11970a7e112dfe243a2e6... | NOK | http://autobuild.buildroot.net/results/de473e7b2efb2c3687e74f15c2ceb65dbc534a8a | ORPH arc | check-11970a7e112dfe243a2e6... | NOK | http://autobuild.buildroot.net/results/bc952a7ab70ed0536df4289d88d96b81018b4f3f | ORPH arc | check-11970a7e112dfe243a2e6... | NOK | http://autobuild.buildroot.net/results/5e22e6a10ff03488e81b027b379c0e3234ab6ac6 | ORPH riscv64 | cni-plugins-1.3.0 | NOK | http://autobuild.buildroot.net/results/75577cface981f8b3d81510e2839cb4bd2880893 | powerpc | coreutils-9.3 | NOK | http://autobuild.buildroot.net/results/09853805534e34f47ddbfa741a785041c2f09708 | ORPH aarch64 | coreutils-9.3 | NOK | http://autobuild.buildroot.net/results/6cca8a6adb4a03d79203d95bf03d3a8dd66768ac | ORPH xtensa | coreutils-9.3 | NOK | http://autobuild.buildroot.net/results/c0017e0a415b1fad345d0b672fdbfdda121f63c4 | ORPH powerpc | coreutils-9.3 | NOK | http://autobuild.buildroot.net/results/c1fff43d1f8ff27edf902ce62eb11d23d7938db8 | ORPH sh4a | dhcp-4.4.3-P1 | NOK | http://autobuild.buildroot.net/results/1a73db8c9a4ab153283e46ee5e63fcc273ea0134 | ORPH arm | docker-compose-2.27.0 | NOK | http://autobuild.buildroot.net/results/23babe268017c82a09e092fe39c25c765d543c5f | aarch64 | dust-0.9.0 | NOK | http://autobuild.buildroot.net/results/482e5fd9c32ea41c1a5b2932f136fe03f183c30a | ORPH arm | dust-0.9.0 | NOK | http://autobuild.buildroot.net/results/0052378117b2bdfa6783589e8a453990acc7bc02 | ORPH arm | dust-0.9.0 | NOK | http://autobuild.buildroot.net/results/f82c425a65b7a4e11e705e23eb766f70f0947525 | ORPH powerpc64 | dust-0.9.0 | NOK | http://autobuild.buildroot.net/results/014c2ad1bd0073ee8ac81c9f17cab9e7aff99e5a | ORPH microblazeel | elfutils-0.189 | NOK | http://autobuild.buildroot.net/results/42672c7b220dbc2aeba6cba505f70b5c844e6fa4 | ORPH microblaze | elfutils-0.189 | NOK | http://autobuild.buildroot.net/results/887628c2d977297a3bfdc50fa412051f175d75bf | ORPH sparc64 | eza-0.18.8 | NOK | http://autobuild.buildroot.net/results/fcb42530ab3363f080046d1997f68a514cb86b5c | sh4aeb | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/26717987b0c3fb78793fdfbb436722ab893d26a1 | x86_64 | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/a16e0bcb2e17863807af304ea3aaa5576c76a04a | m68k | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/6f533826c94abdebcf5d2ef91cae71b6e2fddc74 | microblazeel | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/65dd4a9be5698c71fad43f257f5b0f99bf28cee9 | arm | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/ad4cab7bf473a1caccc4c07c5a29744868515466 | aarch64_be | fcft-3.1.6 | NOK | http://autobuild.buildroot.net/results/689928d698001ee5ac8bf83c65a09b07b2d027a9 | arc | ffmpeg-6.1.1 | NOK | http://autobuild.buildroot.net/results/16e1f7f22e79fb91afb29e606d302da275e0736b | arc | ffmpeg-6.1.1 | NOK | http://autobuild.buildroot.net/results/326c9500e4e24902186b20eac91f003cc9ca56ba | microblazeel | ffmpeg-6.1.1 | NOK | http://autobuild.buildroot.net/results/ef351509227b44bb38da7d3a3e2fbde33eaa3054 | powerpc64le | fftw-quad-3.3.10 | NOK | http://autobuild.buildroot.net/results/e87eb4030ffc2a898aadc0aaa8d009971da210a6 | ORPH or1k | flann-1.9.2 | NOK | http://autobuild.buildroot.net/results/459335c193c2ec6c09375ae0c8606c22cb3b042b | microblazeel | gdal-3.8.2 | NOK | http://autobuild.buildroot.net/results/e79265257316bf8b251b7ac78018417ad79f3720 | powerpc64le | glibc-2.39-5-ge0910f1d3278f... | NOK | http://autobuild.buildroot.net/results/7ee0ae41c259272df1494de8a22ffc08b11b86d0 | powerpc64le | glibc-2.39-5-ge0910f1d3278f... | NOK | http://autobuild.buildroot.net/results/29e159d5e744f48e7c0670bde7126c2eb962b154 | i686 | glibmm-2.76.0 | NOK | http://autobuild.buildroot.net/results/279c80f01f385c8f1db92924e8c6e35150fd122f | arm | gnu-efi-3.0.18 | NOK | http://autobuild.buildroot.net/results/1d39f48b7364650602545c86591e173b4332f661 | sparc64 | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/c9d015a3ac1a73e4c5e088f1fba8b0c899755665 | ORPH powerpc | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/71f06ea7957a8949dcbda7200df7d85d1456cdb7 | ORPH m68k | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/37038337af82aeeb8c847e6e763a1482ca14f9c2 | ORPH powerpc64le | host-binutils-bare-metal-2.42 | NOK | http://autobuild.buildroot.net/results/32fc4b1ebe82b4af5b64910da742f316b6cbf736 | aarch64_be | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/a7d1f062fbca59bef691c9f4d8a62a9da82ece07 | ORPH microblazeel | host-libxcrypt-4.4.36 | NOK | http://autobuild.buildroot.net/results/3f53436efd3132c7825be6259d92aac2858c1217 | x86_64 | host-libxcrypt-4.4.36 | NOK | http://autobuild.buildroot.net/results/ea240733c0ea648527cbc53dabee4b9a6be3c42c | mipsel | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/6cc9b8ff7b2ac774d3f3e3ee9ce44db50cfa5a06 | i686 | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/91df45ed46b018bde2bc2ae4b3de090d8ada8207 | mips64el | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/ca213b840c1143142d32896d5d55300de011bad4 | sparc | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/c5942ab630e5e75b4bc6cd1580c7645b3c3602f1 | mipsel | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/7ecc8af43f3b84663a15534f3d9ca749409e5631 | aarch64_be | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/34dc99d049cd70849dbc4c7af7313bc46d3158e2 | powerpc64 | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/b98714ded476b20c2bf17274f57e9e146a97d521 | sparc | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/7e8892af3cde78722a6173d3b5754bb362ffe2e6 | aarch64 | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/b8237fcc08f483ae94bb6b51f90b1016f50cf205 | aarch64 | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/2eeee44f3fccbbd3d5b6d84433d4ae68b7429fd6 | microblaze | ledmon-1.0.0 | NOK | http://autobuild.buildroot.net/results/553e2bbcbb3228284fc35c400dba67e61a9a4c31 | powerpc | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/db7085b2465e33050868e8ea969dc926b7692103 | microblazeel | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/485b5ecc3c58962348b68171268e8b974833703a | xtensa | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/e988121a775645707ebc9c6d3addcb8b2197a3fa | sh4a | libdbi-drivers-0bfae6c43134... | NOK | http://autobuild.buildroot.net/results/0da33b64748b1047e04731373e1b62fff7a61060 | or1k | libffi-3.4.6 | NOK | http://autobuild.buildroot.net/results/3a0f0c6a3bc978cf6756ae7246a40c186799f7f5 | arceb | libffi-3.4.6 | NOK | http://autobuild.buildroot.net/results/c6381284c4bbb90f03a02e2aa7eeab4e8c27b452 | arc | libffi-3.4.6 | NOK | http://autobuild.buildroot.net/results/b1924c8e0a48f8faa2838e311dafb910888e18ef | mipsel | libopenh264-2.4.0 | NOK | http://autobuild.buildroot.net/results/f943c091d6eb01793ee1a42bff76965dd209e161 | s390x | libp11-0.4.12 | NOK | http://autobuild.buildroot.net/results/3a232d5e9220c452542764542623167e001e3fea | ORPH mips64el | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/6c4ad59e943e63342d16f33716cbb165e618a830 | ORPH sh4 | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/ee369b169d3bf79fb6a717ae9e051cff06a8a34a | ORPH sparc | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/3385f0b0955d3b8e178b6becd0e8e1c35d778c0c | ORPH nios2 | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/be37020a0998276432a743917c20d62484cd885a | ORPH microblazeel | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/766c0756f0ed67e42dc77d0878b17186366127fc | ORPH arm | librsvg-2.50.9 | NOK | http://autobuild.buildroot.net/results/d257890b7b5b411daa5b275af1c24463310a4588 | xtensa | libsepol-3.6 | NOK | http://autobuild.buildroot.net/results/71f4a2f0e155cb76c6ab662a77302711de6f6afe | mips | linux-5.10.162-cip24 | NOK | http://autobuild.buildroot.net/results/ab04a76d09d90e14ad782efdd30267d555ccabfc | ORPH powerpc | linux-5.10.162-cip24-rt10 | NOK | http://autobuild.buildroot.net/results/b35fad4ad61da38eb1d480ec1b1e002b66a94dd6 | ORPH arm | lmdb-0.9.31 | NOK | http://autobuild.buildroot.net/results/e2bc8c35a10b6513c5605954e93b5b8a1ec7654b | x86_64 | ltp-testsuite-20240129 | NOK | http://autobuild.buildroot.net/results/0dee595990c7f7eb35f9bb58c111534a8183cc50 | aarch64 | mongodb-4.2.18 | NOK | http://autobuild.buildroot.net/results/59fd3af35c97ae9cea13c4d7ebc563f13effbcfb | arm | mongodb-4.2.18 | NOK | http://autobuild.buildroot.net/results/8090dd7f62ae93fb0a423f809f5e4216cd8f8c2b | s390x | nushell-0.85.0 | NOK | http://autobuild.buildroot.net/results/ba53fe3306c6b515757f34628d3b5be86420639d | ORPH arm | nushell-0.85.0 | NOK | http://autobuild.buildroot.net/results/66a0f5d8f3b5fba846dd843899fbacf9f37abf4e | ORPH sparc | ola-0.10.9 | NOK | http://autobuild.buildroot.net/results/a7f8cab996f21c7a4d490263663aed4fd099297f | mipsel | openssh-9.7p1 | NOK | http://autobuild.buildroot.net/results/592adac624b2fff95286bf8bf67d0cdb6f52a4d1 | ORPH mips | openssh-9.7p1 | NOK | http://autobuild.buildroot.net/results/e415a8ca4a8a9633c3c5bf665f7c7121d5335fa8 | ORPH nios2 | p7zip-17.05 | NOK | http://autobuild.buildroot.net/results/ab46a302ffd985cfa00730ed93fe848734c49cd0 | arc | protobuf-21.12 | NOK | http://autobuild.buildroot.net/results/e7b25b35642f264d52a3b5808a997dc5629da868 | powerpc64 | python-numpy-1.25.0 | NOK | http://autobuild.buildroot.net/results/223c0d0a021b57fba6884577cf6ad8c0801921cb | mipsel | qemu-8.1.1 | NOK | http://autobuild.buildroot.net/results/db6ba3135791a449217115f1b856470e852dac20 | arm | ripgrep-14.1.0 | NOK | http://autobuild.buildroot.net/results/5e9efd3926a97f89c54e8102e4c4542c857ab007 | microblazeel | rtl8188eu-306f3e62cf7cddf8c... | NOK | http://autobuild.buildroot.net/results/493a8ed6c351ac2d04bd838d444744040bbdae3c | powerpc | rtty-8.1.0 | NOK | http://autobuild.buildroot.net/results/2858e9c0a620a07cb8c90728fa35faf582f20fd1 | riscv64 | ruby-3.3.0 | NOK | http://autobuild.buildroot.net/results/215cb9e53b0307b8aa5e154ad0468f134a01d14f | powerpc64 | skalibs-2.12.0.1 | NOK | http://autobuild.buildroot.net/results/101d0e5faeb648e362feba97ad0ad97929958095 | m68k | syslog-ng-4.7.1 | NOK | http://autobuild.buildroot.net/results/63e0abe4b3495e4611778626fd6c051231cfc551 | or1k | uclibc-1.0.48 | NOK | http://autobuild.buildroot.net/results/e4bd08d694c67128ef22cf3afa6ba735c970f7cd | sh4 | ulog-0389d243352255f6182326... | NOK | http://autobuild.buildroot.net/results/3c4d3bd11d7a974312f73f6534d8de9171041df6 | arm | unknown | NOK | http://autobuild.buildroot.net/results/de9592067e2f123acb136bdbcfaefa12d521f6a2 | sh4eb | unknown | NOK | http://autobuild.buildroot.net/results/1bd838d98f20e868e571bd1487f5235eb30d7b0d | arc | unknown | NOK | http://autobuild.buildroot.net/results/af239d90382e22d192b442cfaa4add75daef303f | arceb | unknown | NOK | http://autobuild.buildroot.net/results/f456de809a1654cc22cb72b759ab692b73720292 | mips64el | unknown | NOK | http://autobuild.buildroot.net/results/8f62265a87fe2c5fda640f107f5ead13eb89c9b1 | arm | unknown | NOK | http://autobuild.buildroot.net/results/e15557e76d7beba2d8ae309dfb9f302549d106af | arm | util-linux-2.39.3 | NOK | http://autobuild.buildroot.net/results/7d59e4ebc393afce751546d72ee606f61a2bc54a | ORPH riscv64 | zlib-ng-2.1.6 | NOK | http://autobuild.buildroot.net/results/abbded64d18ed1d3f06921a9763eda09c61a9754 | ORPH riscv64 | zlib-ng-2.1.6 | NOK | http://autobuild.buildroot.net/results/9cf0cbb79327c20b43dd2da6abf9e326d2e0ca69 | ORPH Classification of failures by reason for 2024.02.x -------------------------------------------------- gobject-introspection-1.76.1 | 2 linux-6.6.27 | 2 apcupsd-3.14.14 | 1 bat-0.24.0 | 1 gdal-3.8.2 | 1 pulseaudio-17.0 | 1 qt5base-da6e958319e95fe564d... | 1 reaver-1.6.6 | 1 volk-3.0.0 | 1 Detail of failures for 2024.02.x -------------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- aarch64 | apcupsd-3.14.14 | NOK | http://autobuild.buildroot.net/results/b21dd64b847f69644a798788eeb9c15ddd9fb001 | i586 | bat-0.24.0 | NOK | http://autobuild.buildroot.net/results/072144f81ff0b221dee6cf728f310848cae1fbbf | microblazeel | gdal-3.8.2 | NOK | http://autobuild.buildroot.net/results/cc978a948963a5638ec5ab5c1c0953e0fa458195 | x86_64 | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/dbcd8b6e1c9e1e696f9340e0eafbe736cba5c88d | ORPH sparc64 | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/856f59d515ac8be8debef4a198825adccbea2a03 | ORPH powerpc64 | linux-6.6.27 | NOK | http://autobuild.buildroot.net/results/f0706cd92d2ad4d56c9af636dc3d109b2de571fd | ORPH powerpc64 | linux-6.6.27 | NOK | http://autobuild.buildroot.net/results/517df829f0e9c99489171aec3d455fea85153674 | ORPH mipsel | pulseaudio-17.0 | NOK | http://autobuild.buildroot.net/results/733098c022906d2a207af2f7afc6f0a1f73b3da8 | ORPH arm | qt5base-da6e958319e95fe564d... | NOK | http://autobuild.buildroot.net/results/10d157c2b3f7142da29d38ed1b3f8d34c6b92588 | arceb | reaver-1.6.6 | NOK | http://autobuild.buildroot.net/results/4baf685b6bb962b130274393568a8853d15e986c | powerpc | volk-3.0.0 | NOK | http://autobuild.buildroot.net/results/6aa40628b1d339828b2dbf39462436d3ea9247f4 | Gitlab CI results for 2024-05-13 ================================ Detail of runtime-test failures for master ------------------------------------------ runtime-test | link to the job | orph? --------------------------+---------------------------------------------------------------+------ TestDockerCompose | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833307823 | ORPH ...ilp32dMuslBleedingEdge | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833309173 | ORPH ...iscv32ilp32dMuslStable | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833309174 | ORPH TestMender | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308175 | ORPH TestNu | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308218 | ORPH TestOci | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833307649 | ORPH TestPythonPy3MlDtypes | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308461 | ORPH TestPythonPy3PyAlsa | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308479 | ORPH TestPythonPy3SciPy | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308513 | ORPH TestRust | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308568 | ORPH TestRustBin | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308569 | ORPH TestRustVendoring | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308571 | ORPH -- http://autobuild.buildroot.net From wbx at openadk.org Tue May 14 06:25:03 2024 From: wbx at openadk.org (Waldemar Brodkorb) Date: Tue, 14 May 2024 08:25:03 +0200 Subject: [Buildroot] [PATCH] support: update config.sub/config.guess Message-ID: Signed-off-by: Waldemar Brodkorb --- support/gnuconfig/README.buildroot | 2 +- support/gnuconfig/config.guess | 1233 +++++++++++++++------------- support/gnuconfig/config.sub | 302 +++++-- 3 files changed, 894 insertions(+), 643 deletions(-) diff --git a/support/gnuconfig/README.buildroot b/support/gnuconfig/README.buildroot index 952eea8b10..f34a6566bd 100644 --- a/support/gnuconfig/README.buildroot +++ b/support/gnuconfig/README.buildroot @@ -18,4 +18,4 @@ Run the script 'update' in this directory, and commit the result. The current Buildroot version is based on this commit of the config.git repository (leave alone on its own line, the script updates it): -d7a4dee7cc25e332b990d0a6d9f0ddd42cb33cf5 +948ae97ca5703224bd3eada06b7a69f40dd15a02 diff --git a/support/gnuconfig/config.guess b/support/gnuconfig/config.guess index 8d70ec2b26..f6d217a49f 100755 --- a/support/gnuconfig/config.guess +++ b/support/gnuconfig/config.guess @@ -1,12 +1,14 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2020 Free Software Foundation, Inc. +# Copyright 1992-2024 Free Software Foundation, Inc. -timestamp='2020-09-19' +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2024-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but @@ -27,17 +29,25 @@ timestamp='2020-09-19' # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess # # Please send patches to . +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + + me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] -Output the configuration name of the system \`$me' is run on. +Output the configuration name of the system '$me' is run on. Options: -h, --help print this help, then exit @@ -50,13 +60,13 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2020 Free Software Foundation, Inc. +Copyright 1992-2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" -Try \`$me --help' for more information." +Try '$me --help' for more information." # Parse command line while test $# -gt 0 ; do @@ -84,13 +94,16 @@ if test $# != 0; then exit 1 fi +# Just in case it came from the environment. +GUESS= + # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. +# Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still +# use 'HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. @@ -102,7 +115,7 @@ set_cc_for_build() { # prevent multiple calls if $tmp is already set test "$tmp" && return 0 : "${TMPDIR=/tmp}" - # shellcheck disable=SC2039 + # shellcheck disable=SC2039,SC3028 { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || @@ -112,7 +125,7 @@ set_cc_for_build() { ,,) echo "int x;" > "$dummy.c" for driver in cc gcc c89 c99 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then - CC_FOR_BUILD="$driver" + CC_FOR_BUILD=$driver break fi done @@ -133,38 +146,57 @@ fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -case "$UNAME_SYSTEM" in +case $UNAME_SYSTEM in Linux|GNU|GNU/*) - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - LIBC=gnu + LIBC=unknown set_cc_for_build cat <<-EOF > "$dummy.c" + #if defined(__ANDROID__) + LIBC=android + #else #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc + #elif defined(__GLIBC__) + LIBC=gnu + #elif defined(__LLVM_LIBC__) + LIBC=llvm #else #include + /* First heuristic to detect musl libc. */ #ifdef __DEFINED_va_list LIBC=musl - #else - LIBC=gnu + #endif #endif #endif EOF - eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" + cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "$cc_set_libc" + + # Second heuristic to detect musl libc. + if [ "$LIBC" = unknown ] && + command -v ldd >/dev/null && + ldd --version 2>&1 | grep -q ^musl; then + LIBC=musl + fi + + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + if [ "$LIBC" = unknown ]; then + LIBC=gnu + fi ;; esac # Note: order is significant - the case branches are not exclusive. -case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in +case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, @@ -176,12 +208,12 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ - "/sbin/$sysctl" 2>/dev/null || \ - "/usr/sbin/$sysctl" 2>/dev/null || \ + /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ echo unknown)` - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in + aarch64eb) machine=aarch64_be-unknown ;; armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; @@ -190,13 +222,13 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` - machine="${arch}${endian}"-unknown + machine=${arch}${endian}-unknown ;; - *) machine="$UNAME_MACHINE_ARCH"-unknown ;; + *) machine=$UNAME_MACHINE_ARCH-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in earm*) os=netbsdelf ;; @@ -217,7 +249,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in ;; esac # Determine ABI tags. - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` @@ -228,7 +260,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. - case "$UNAME_VERSION" in + case $UNAME_VERSION in Debian*) release='-gnu' ;; @@ -239,51 +271,57 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "$machine-${os}${release}${abi-}" - exit ;; + GUESS=$machine-${os}${release}${abi-} + ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE + ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE + ;; + *:SecBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE + ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE + ;; *:MidnightBSD:*:*) - echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE + ;; *:ekkoBSD:*:*) - echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE + ;; *:SolidBSD:*:*) - echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE + ;; *:OS108:*:*) - echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE + ;; macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE + ;; *:MirBSD:*:*) - echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE + ;; *:Sortix:*:*) - echo "$UNAME_MACHINE"-unknown-sortix - exit ;; + GUESS=$UNAME_MACHINE-unknown-sortix + ;; *:Twizzler:*:*) - echo "$UNAME_MACHINE"-unknown-twizzler - exit ;; + GUESS=$UNAME_MACHINE-unknown-twizzler + ;; *:Redox:*:*) - echo "$UNAME_MACHINE"-unknown-redox - exit ;; + GUESS=$UNAME_MACHINE-unknown-redox + ;; mips:OSF1:*.*) - echo mips-dec-osf1 - exit ;; + GUESS=mips-dec-osf1 + ;; alpha:OSF1:*:*) + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + trap '' 0 case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` @@ -297,7 +335,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in + case $ALPHA_CPU_TYPE in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") @@ -334,68 +372,69 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; + OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + GUESS=$UNAME_MACHINE-dec-osf$OSF_REL + ;; Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; + GUESS=m68k-unknown-sysv4 + ;; *:[Aa]miga[Oo][Ss]:*:*) - echo "$UNAME_MACHINE"-unknown-amigaos - exit ;; + GUESS=$UNAME_MACHINE-unknown-amigaos + ;; *:[Mm]orph[Oo][Ss]:*:*) - echo "$UNAME_MACHINE"-unknown-morphos - exit ;; + GUESS=$UNAME_MACHINE-unknown-morphos + ;; *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; + GUESS=i370-ibm-openedition + ;; *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; + GUESS=s390-ibm-zvmoe + ;; *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; + GUESS=powerpc-ibm-os400 + ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix"$UNAME_RELEASE" - exit ;; + GUESS=arm-acorn-riscix$UNAME_RELEASE + ;; arm*:riscos:*:*|arm*:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; + GUESS=arm-unknown-riscos + ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; + GUESS=hppa1.1-hitachi-hiuxmpp + ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee at wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; + case `(/bin/universe) 2>/dev/null` in + att) GUESS=pyramid-pyramid-sysv3 ;; + *) GUESS=pyramid-pyramid-bsd ;; + esac + ;; NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; + GUESS=pyramid-pyramid-svr4 + ;; DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; + GUESS=sparc-icl-nx6 + ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; + sparc) GUESS=sparc-icl-nx7 ;; + esac + ;; s390x:SunOS:*:*) - echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL + ;; sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-hal-solaris2$SUN_REL + ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris2$SUN_REL + ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux"$UNAME_RELEASE" - exit ;; + GUESS=i386-pc-auroraux$UNAME_RELEASE + ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) set_cc_for_build SUN_ARCH=i386 @@ -404,47 +443,50 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # This test works for both compilers. if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi - echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$SUN_ARCH-pc-solaris2$SUN_REL + ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris3$SUN_REL + ;; sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in + case `/usr/bin/arch -k` in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" - exit ;; + # Japanese Language versions have a version number like '4.1.3-JL'. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` + GUESS=sparc-sun-sunos$SUN_REL + ;; sun3*:SunOS:*:*) - echo m68k-sun-sunos"$UNAME_RELEASE" - exit ;; + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 - case "`/bin/arch`" in + case `/bin/arch` in sun3) - echo m68k-sun-sunos"$UNAME_RELEASE" + GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun4) - echo sparc-sun-sunos"$UNAME_RELEASE" + GUESS=sparc-sun-sunos$UNAME_RELEASE ;; esac - exit ;; + ;; aushp:SunOS:*:*) - echo sparc-auspex-sunos"$UNAME_RELEASE" - exit ;; + GUESS=sparc-auspex-sunos$UNAME_RELEASE + ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor @@ -454,41 +496,41 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-milan-mint$UNAME_RELEASE + ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-hades-mint$UNAME_RELEASE + ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-unknown-mint$UNAME_RELEASE + ;; m68k:machten:*:*) - echo m68k-apple-machten"$UNAME_RELEASE" - exit ;; + GUESS=m68k-apple-machten$UNAME_RELEASE + ;; powerpc:machten:*:*) - echo powerpc-apple-machten"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-apple-machten$UNAME_RELEASE + ;; RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; + GUESS=mips-dec-mach_bsd4.3 + ;; RISC*:ULTRIX:*:*) - echo mips-dec-ultrix"$UNAME_RELEASE" - exit ;; + GUESS=mips-dec-ultrix$UNAME_RELEASE + ;; VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix"$UNAME_RELEASE" - exit ;; + GUESS=vax-dec-ultrix$UNAME_RELEASE + ;; 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix"$UNAME_RELEASE" - exit ;; + GUESS=clipper-intergraph-clix$UNAME_RELEASE + ;; mips:*:*:UMIPS | mips:*:*:RISCos) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" @@ -516,29 +558,29 @@ EOF dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos"$UNAME_RELEASE" - exit ;; + GUESS=mips-mips-riscos$UNAME_RELEASE + ;; Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; + GUESS=powerpc-motorola-powermax + ;; Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; + GUESS=powerpc-harris-powerunix + ;; m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; + GUESS=m88k-harris-cxux7 + ;; m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; + GUESS=m88k-motorola-sysv4 + ;; m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` @@ -547,44 +589,45 @@ EOF if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ test "$TARGET_BINARY_INTERFACE"x = x then - echo m88k-dg-dgux"$UNAME_RELEASE" + GUESS=m88k-dg-dgux$UNAME_RELEASE else - echo m88k-dg-dguxbcs"$UNAME_RELEASE" + GUESS=m88k-dg-dguxbcs$UNAME_RELEASE fi else - echo i586-dg-dgux"$UNAME_RELEASE" + GUESS=i586-dg-dgux$UNAME_RELEASE fi - exit ;; + ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; + GUESS=m88k-dolphin-sysv3 + ;; M88*:*:R3*:*) # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; + GUESS=m88k-tektronix-sysv3 + ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; + GUESS=m68k-tektronix-bsd + ;; *:IRIX*:*:*) - echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" - exit ;; + IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` + GUESS=mips-sgi-irix$IRIX_REL + ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id + ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; + GUESS=i386-ibm-aix + ;; ia64:AIX:*:*) if test -x /usr/bin/oslevel ; then IBM_REV=`/usr/bin/oslevel` else - IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" - exit ;; + GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV + ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then set_cc_for_build @@ -601,16 +644,16 @@ EOF EOF if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then - echo "$SYSTEM_NAME" + GUESS=$SYSTEM_NAME else - echo rs6000-ibm-aix3.2.5 + GUESS=rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 + GUESS=rs6000-ibm-aix3.2.4 else - echo rs6000-ibm-aix3.2 + GUESS=rs6000-ibm-aix3.2 fi - exit ;; + ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then @@ -619,48 +662,48 @@ EOF IBM_ARCH=powerpc fi if test -x /usr/bin/lslpp ; then - IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else - IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo "$IBM_ARCH"-ibm-aix"$IBM_REV" - exit ;; + GUESS=$IBM_ARCH-ibm-aix$IBM_REV + ;; *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; + GUESS=rs6000-ibm-aix + ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) - echo romp-ibm-bsd4.4 - exit ;; + GUESS=romp-ibm-bsd4.4 + ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 + GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to + ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; + GUESS=rs6000-bull-bosx + ;; DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; + GUESS=m68k-bull-sysv3 + ;; 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; + GUESS=m68k-hp-bsd + ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; + GUESS=m68k-hp-bsd4.4 + ;; 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` - case "$UNAME_MACHINE" in + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + case $UNAME_MACHINE in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if test -x /usr/bin/getconf; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "$sc_cpu_version" in + case $sc_cpu_version in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 - case "$sc_kernel_bits" in + case $sc_kernel_bits in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 @@ -727,12 +770,12 @@ EOF HP_ARCH=hppa64 fi fi - echo "$HP_ARCH"-hp-hpux"$HPUX_REV" - exit ;; + GUESS=$HP_ARCH-hp-hpux$HPUX_REV + ;; ia64:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux"$HPUX_REV" - exit ;; + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + GUESS=ia64-hp-hpux$HPUX_REV + ;; 3050*:HI-UX:*:*) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" @@ -762,36 +805,36 @@ EOF EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; + GUESS=unknown-hitachi-hiuxwe2 + ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) - echo hppa1.1-hp-bsd - exit ;; + GUESS=hppa1.1-hp-bsd + ;; 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; + GUESS=hppa1.0-hp-bsd + ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; + GUESS=hppa1.0-hp-mpeix + ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) - echo hppa1.1-hp-osf - exit ;; + GUESS=hppa1.1-hp-osf + ;; hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; + GUESS=hppa1.0-hp-osf + ;; i*86:OSF1:*:*) if test -x /usr/sbin/sysversion ; then - echo "$UNAME_MACHINE"-unknown-osf1mk + GUESS=$UNAME_MACHINE-unknown-osf1mk else - echo "$UNAME_MACHINE"-unknown-osf1 + GUESS=$UNAME_MACHINE-unknown-osf1 fi - exit ;; + ;; parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; + GUESS=hppa1.1-hp-lites + ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; + GUESS=c1-convex-bsd + ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd @@ -799,17 +842,18 @@ EOF fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; + GUESS=c34-convex-bsd + ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; + GUESS=c38-convex-bsd + ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; + GUESS=c4-convex-bsd + ;; CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=ymp-cray-unicos$CRAY_REL + ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ @@ -817,112 +861,153 @@ EOF -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) - echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=t90-cray-unicos$CRAY_REL + ;; CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=alphaev5-cray-unicosmk$CRAY_REL + ;; CRAY*SV1:*:*:*) - echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=sv1-cray-unicos$CRAY_REL + ;; *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=craynv-cray-unicosmp$CRAY_REL + ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE + ;; sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=sparc-unknown-bsdi$UNAME_RELEASE + ;; *:BSD/OS:*:*) - echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE + ;; arm:FreeBSD:*:*) UNAME_PROCESSOR=`uname -p` set_cc_for_build if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi else - echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf fi - exit ;; + ;; *:FreeBSD:*:*) - UNAME_PROCESSOR=`/usr/bin/uname -p` - case "$UNAME_PROCESSOR" in + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac - echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" - exit ;; + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL + ;; i*:CYGWIN*:*) - echo "$UNAME_MACHINE"-pc-cygwin - exit ;; + GUESS=$UNAME_MACHINE-pc-cygwin + ;; *:MINGW64*:*) - echo "$UNAME_MACHINE"-pc-mingw64 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw64 + ;; *:MINGW*:*) - echo "$UNAME_MACHINE"-pc-mingw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw32 + ;; *:MSYS*:*) - echo "$UNAME_MACHINE"-pc-msys - exit ;; + GUESS=$UNAME_MACHINE-pc-msys + ;; i*:PW*:*) - echo "$UNAME_MACHINE"-pc-pw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-pw32 + ;; + *:SerenityOS:*:*) + GUESS=$UNAME_MACHINE-pc-serenity + ;; *:Interix*:*) - case "$UNAME_MACHINE" in + case $UNAME_MACHINE in x86) - echo i586-pc-interix"$UNAME_RELEASE" - exit ;; + GUESS=i586-pc-interix$UNAME_RELEASE + ;; authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix"$UNAME_RELEASE" - exit ;; + GUESS=x86_64-unknown-interix$UNAME_RELEASE + ;; IA64) - echo ia64-unknown-interix"$UNAME_RELEASE" - exit ;; + GUESS=ia64-unknown-interix$UNAME_RELEASE + ;; esac ;; i*:UWIN*:*) - echo "$UNAME_MACHINE"-pc-uwin - exit ;; + GUESS=$UNAME_MACHINE-pc-uwin + ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-pc-cygwin - exit ;; + GUESS=x86_64-pc-cygwin + ;; prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=powerpcle-unknown-solaris2$SUN_REL + ;; *:GNU:*:*) # the GNU system - echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" - exit ;; + GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` + GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL + ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" - exit ;; + GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC + ;; + x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-pc-managarm-mlibc" + ;; + *:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-unknown-managarm-mlibc" + ;; *:Minix:*:*) - echo "$UNAME_MACHINE"-unknown-minix - exit ;; + GUESS=$UNAME_MACHINE-unknown-minix + ;; aarch64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + set_cc_for_build + CPU=$UNAME_MACHINE + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __ARM_EABI__ + #ifdef __ARM_PCS_VFP + ABI=eabihf + #else + ABI=eabi + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;; + esac + fi + GUESS=$CPU-unknown-linux-$LIBCABI + ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in EV5) UNAME_MACHINE=alphaev5 ;; @@ -935,60 +1020,72 @@ EOF esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; - arc:Linux:*:* | arceb:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; arm*:Linux:*:*) set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi else - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf fi fi - exit ;; + ;; avr32*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; cris:Linux:*:*) - echo "$UNAME_MACHINE"-axis-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; crisv32:Linux:*:*) - echo "$UNAME_MACHINE"-axis-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; e2k:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; frv:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; hexagon:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:Linux:*:*) - echo "$UNAME_MACHINE"-pc-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-pc-linux-$LIBC + ;; ia64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; k1om:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:cos:*:*) + GUESS=$UNAME_MACHINE-unknown-cos + ;; + kvx:mbr:*:*) + GUESS=$UNAME_MACHINE-unknown-mbr + ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m32r*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m68*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; mips:Linux:*:* | mips64:Linux:*:*) set_cc_for_build IS_GLIBC=0 @@ -1033,123 +1130,135 @@ EOF #endif #endif EOF - eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`" + cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` + eval "$cc_set_vars" test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; openrisc*:Linux:*:*) - echo or1k-unknown-linux-"$LIBC" - exit ;; + GUESS=or1k-unknown-linux-$LIBC + ;; or32:Linux:*:* | or1k*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; padre:Linux:*:*) - echo sparc-unknown-linux-"$LIBC" - exit ;; + GUESS=sparc-unknown-linux-$LIBC + ;; parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-"$LIBC" - exit ;; + GUESS=hppa64-unknown-linux-$LIBC + ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; - PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; - *) echo hppa-unknown-linux-"$LIBC" ;; + PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; + PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; + *) GUESS=hppa-unknown-linux-$LIBC ;; esac - exit ;; + ;; ppc64:Linux:*:*) - echo powerpc64-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc64-unknown-linux-$LIBC + ;; ppc:Linux:*:*) - echo powerpc-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc-unknown-linux-$LIBC + ;; ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc64le-unknown-linux-$LIBC + ;; ppcle:Linux:*:*) - echo powerpcle-unknown-linux-"$LIBC" - exit ;; - riscv32:Linux:*:* | riscv64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpcle-unknown-linux-$LIBC + ;; + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; s390:Linux:*:* | s390x:Linux:*:*) - echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-ibm-linux-$LIBC + ;; sh64*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sh*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; tile*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; vax:Linux:*:*) - echo "$UNAME_MACHINE"-dec-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-dec-linux-$LIBC + ;; x86_64:Linux:*:*) set_cc_for_build + CPU=$UNAME_MACHINE LIBCABI=$LIBC if test "$CC_FOR_BUILD" != no_compiler_found; then - if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_X32 >/dev/null - then - LIBCABI="$LIBC"x32 - fi + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __i386__ + ABI=x86 + #else + #ifdef __ILP32__ + ABI=x32 + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + x86) CPU=i686 ;; + x32) LIBCABI=${LIBC}x32 ;; + esac fi - echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI" - exit ;; + GUESS=$CPU-pc-linux-$LIBCABI + ;; xtensa*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; + GUESS=i386-sequent-sysv4 + ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. - echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" - exit ;; + GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION + ;; i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility + # If we were able to find 'uname', then EMX Unix compatibility # is probably installed. - echo "$UNAME_MACHINE"-pc-os2-emx - exit ;; + GUESS=$UNAME_MACHINE-pc-os2-emx + ;; i*86:XTS-300:*:STOP) - echo "$UNAME_MACHINE"-unknown-stop - exit ;; + GUESS=$UNAME_MACHINE-unknown-stop + ;; i*86:atheos:*:*) - echo "$UNAME_MACHINE"-unknown-atheos - exit ;; + GUESS=$UNAME_MACHINE-unknown-atheos + ;; i*86:syllable:*:*) - echo "$UNAME_MACHINE"-pc-syllable - exit ;; + GUESS=$UNAME_MACHINE-pc-syllable + ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=i386-unknown-lynxos$UNAME_RELEASE + ;; i*86:*DOS:*:*) - echo "$UNAME_MACHINE"-pc-msdosdjgpp - exit ;; + GUESS=$UNAME_MACHINE-pc-msdosdjgpp + ;; i*86:*:4.*:*) UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" + GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL else - echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" + GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL fi - exit ;; + ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in @@ -1157,12 +1266,12 @@ EOF *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac - echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}" - exit ;; + GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 @@ -1172,11 +1281,11 @@ EOF && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 - echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" + GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL else - echo "$UNAME_MACHINE"-pc-sysv32 + GUESS=$UNAME_MACHINE-pc-sysv32 fi - exit ;; + ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about @@ -1184,31 +1293,31 @@ EOF # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; + GUESS=i586-pc-msdosdjgpp + ;; Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; + GUESS=i386-pc-mach3 + ;; paragon:*:*:*) - echo i860-intel-osf1 - exit ;; + GUESS=i860-intel-osf1 + ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 + GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 + GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 fi - exit ;; + ;; mini*:CTIX:SYS*5:*) # "miniframe" - echo m68010-convergent-sysv - exit ;; + GUESS=m68010-convergent-sysv + ;; mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; + GUESS=m68k-convergent-sysv + ;; M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; + GUESS=m68k-diab-dnix + ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) @@ -1233,116 +1342,119 @@ EOF /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=m68k-unknown-lynxos$UNAME_RELEASE + ;; mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; + GUESS=m68k-atari-sysv4 + ;; TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=sparc-unknown-lynxos$UNAME_RELEASE + ;; rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=rs6000-unknown-lynxos$UNAME_RELEASE + ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-unknown-lynxos$UNAME_RELEASE + ;; SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv"$UNAME_RELEASE" - exit ;; + GUESS=mips-dde-sysv$UNAME_RELEASE + ;; RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo "$UNAME_MACHINE"-sni-sysv4 + GUESS=$UNAME_MACHINE-sni-sysv4 else - echo ns32k-sni-sysv + GUESS=ns32k-sni-sysv fi - exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + ;; + PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort # says - echo i586-unisys-sysv4 - exit ;; + GUESS=i586-unisys-sysv4 + ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; + GUESS=hppa1.1-stratus-sysv4 + ;; *:*:*:FTX*) # From seanf at swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; + GUESS=i860-stratus-sysv4 + ;; i*86:VOS:*:*) # From Paul.Green at stratus.com. - echo "$UNAME_MACHINE"-stratus-vos - exit ;; + GUESS=$UNAME_MACHINE-stratus-vos + ;; *:VOS:*:*) # From Paul.Green at stratus.com. - echo hppa1.1-stratus-vos - exit ;; + GUESS=hppa1.1-stratus-vos + ;; mc68*:A/UX:*:*) - echo m68k-apple-aux"$UNAME_RELEASE" - exit ;; + GUESS=m68k-apple-aux$UNAME_RELEASE + ;; news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; + GUESS=mips-sony-newsos6 + ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if test -d /usr/nec; then - echo mips-nec-sysv"$UNAME_RELEASE" + GUESS=mips-nec-sysv$UNAME_RELEASE else - echo mips-unknown-sysv"$UNAME_RELEASE" + GUESS=mips-unknown-sysv$UNAME_RELEASE fi - exit ;; + ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; + GUESS=powerpc-be-beos + ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; + GUESS=powerpc-apple-beos + ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; + GUESS=i586-pc-beos + ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; - x86_64:Haiku:*:*) - echo x86_64-unknown-haiku - exit ;; + GUESS=i586-pc-haiku + ;; + ppc:Haiku:*:*) # Haiku running on Apple PowerPC + GUESS=powerpc-apple-haiku + ;; + *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat) + GUESS=$UNAME_MACHINE-unknown-haiku + ;; SX-4:SUPER-UX:*:*) - echo sx4-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx4-nec-superux$UNAME_RELEASE + ;; SX-5:SUPER-UX:*:*) - echo sx5-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx5-nec-superux$UNAME_RELEASE + ;; SX-6:SUPER-UX:*:*) - echo sx6-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx6-nec-superux$UNAME_RELEASE + ;; SX-7:SUPER-UX:*:*) - echo sx7-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx7-nec-superux$UNAME_RELEASE + ;; SX-8:SUPER-UX:*:*) - echo sx8-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx8-nec-superux$UNAME_RELEASE + ;; SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx8r-nec-superux$UNAME_RELEASE + ;; SX-ACE:SUPER-UX:*:*) - echo sxace-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sxace-nec-superux$UNAME_RELEASE + ;; Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-apple-rhapsody$UNAME_RELEASE + ;; *:Rhapsody:*:*) - echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE + ;; arm64:Darwin:*:*) - echo aarch64-apple-darwin"$UNAME_RELEASE" - exit ;; + GUESS=aarch64-apple-darwin$UNAME_RELEASE + ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in @@ -1378,109 +1490,122 @@ EOF # uname -m returns i386 or x86_64 UNAME_PROCESSOR=$UNAME_MACHINE fi - echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE + ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi - echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE + ;; *:QNX:*:4*) - echo i386-pc-qnx - exit ;; + GUESS=i386-pc-qnx + ;; NEO-*:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=neo-tandem-nsk$UNAME_RELEASE + ;; NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nse-tandem-nsk$UNAME_RELEASE + ;; NSR-*:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsr-tandem-nsk$UNAME_RELEASE + ;; NSV-*:NONSTOP_KERNEL:*:*) - echo nsv-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsv-tandem-nsk$UNAME_RELEASE + ;; NSX-*:NONSTOP_KERNEL:*:*) - echo nsx-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsx-tandem-nsk$UNAME_RELEASE + ;; *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; + GUESS=mips-compaq-nonstopux + ;; BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; + GUESS=bs2000-siemens-sysv + ;; DS/*:UNIX_System_V:*:*) - echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE + ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - # shellcheck disable=SC2154 - if test "$cputype" = 386; then + if test "${cputype-}" = 386; then UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" + elif test "x${cputype-}" != x; then + UNAME_MACHINE=$cputype fi - echo "$UNAME_MACHINE"-unknown-plan9 - exit ;; + GUESS=$UNAME_MACHINE-unknown-plan9 + ;; *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; + GUESS=pdp10-unknown-tops10 + ;; *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; + GUESS=pdp10-unknown-tenex + ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; + GUESS=pdp10-dec-tops20 + ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; + GUESS=pdp10-xkl-tops20 + ;; *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; + GUESS=pdp10-unknown-tops20 + ;; *:ITS:*:*) - echo pdp10-unknown-its - exit ;; + GUESS=pdp10-unknown-its + ;; SEI:*:*:SEIUX) - echo mips-sei-seiux"$UNAME_RELEASE" - exit ;; + GUESS=mips-sei-seiux$UNAME_RELEASE + ;; *:DragonFly:*:*) - echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" - exit ;; + DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL + ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "$UNAME_MACHINE" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; + case $UNAME_MACHINE in + A*) GUESS=alpha-dec-vms ;; + I*) GUESS=ia64-dec-vms ;; + V*) GUESS=vax-dec-vms ;; esac ;; *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; + GUESS=i386-pc-xenix + ;; i*86:skyos:*:*) - echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" - exit ;; + SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` + GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL + ;; i*86:rdos:*:*) - echo "$UNAME_MACHINE"-pc-rdos - exit ;; - i*86:AROS:*:*) - echo "$UNAME_MACHINE"-pc-aros - exit ;; + GUESS=$UNAME_MACHINE-pc-rdos + ;; + i*86:Fiwix:*:*) + GUESS=$UNAME_MACHINE-pc-fiwix + ;; + *:AROS:*:*) + GUESS=$UNAME_MACHINE-unknown-aros + ;; x86_64:VMkernel:*:*) - echo "$UNAME_MACHINE"-unknown-esx - exit ;; + GUESS=$UNAME_MACHINE-unknown-esx + ;; amd64:Isilon\ OneFS:*:*) - echo x86_64-unknown-onefs - exit ;; + GUESS=x86_64-unknown-onefs + ;; *:Unleashed:*:*) - echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE + ;; + *:Ironclad:*:*) + GUESS=$UNAME_MACHINE-unknown-ironclad + ;; esac +# Do we have a guess based on uname results? +if test "x$GUESS" != x; then + echo "$GUESS" + exit +fi + # No uname command or uname output not recognized. set_cc_for_build cat > "$dummy.c" </dev/null && SYSTEM_NAME=`$dummy` && +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. @@ -1620,7 +1745,7 @@ test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } echo "$0: unable to guess system type" >&2 -case "$UNAME_MACHINE:$UNAME_SYSTEM" in +case $UNAME_MACHINE:$UNAME_SYSTEM in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&2 <&2 + echo "Invalid configuration '$1': more than four components" >&2 exit 1 ;; *-*-*-*) @@ -134,7 +145,8 @@ case $1 in nto-qnx* | linux-* | uclinux-uclibc* \ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ - | storm-chaos* | os2-emx* | rtmk-nova*) + | storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \ + | windows-* ) basic_machine=$field1 basic_os=$maybe_os ;; @@ -163,6 +175,10 @@ case $1 in basic_machine=$field1 basic_os=$field2 ;; + zephyr*) + basic_machine=$field1-unknown + basic_os=$field2 + ;; # Manufacturers dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ @@ -922,11 +938,13 @@ case $basic_machine in *-*) # shellcheck disable=SC2162 + saved_IFS=$IFS IFS="-" read cpu vendor <&2 + echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2 exit 1 ;; esac @@ -1278,34 +1287,45 @@ esac # Decode manufacturer-specific aliases for certain operating systems. -if test x$basic_os != x +if test x"$basic_os" != x then -# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just +# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just # set os. +obj= case $basic_os in gnu/linux*) kernel=linux - os=`echo $basic_os | sed -e 's|gnu/linux|gnu|'` + os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` + ;; + os2-emx) + kernel=os2 + os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` ;; nto-qnx*) kernel=nto - os=`echo $basic_os | sed -e 's|nto-qnx|qnx|'` + os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` ;; *-*) # shellcheck disable=SC2162 + saved_IFS=$IFS IFS="-" read kernel os <&2 + fi + ;; + *) + echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 + exit 1 + ;; +esac + +case $obj in + aout* | coff* | elf* | pe*) + ;; + '') + # empty is fine + ;; *) - echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 + echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 + exit 1 + ;; +esac + +# Here we handle the constraint that a (synthetic) cpu and os are +# valid only in combination with each other and nowhere else. +case $cpu-$os in + # The "javascript-unknown-ghcjs" triple is used by GHC; we + # accept it here in order to tolerate that, but reject any + # variations. + javascript-ghcjs) + ;; + javascript-* | *-ghcjs) + echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2 exit 1 ;; esac # As a final step for OS-related things, validate the OS-kernel combination # (given a valid OS), if there is a kernel. -case $kernel-$os in - linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* ) +case $kernel-$os-$obj in + linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ + | linux-mlibc*- | linux-musl*- | linux-newlib*- \ + | linux-relibc*- | linux-uclibc*- ) ;; - uclinux-uclibc* ) + uclinux-uclibc*- ) ;; - -dietlibc* | -newlib* | -musl* | -uclibc* ) + managarm-mlibc*- | managarm-kernel*- ) + ;; + windows*-msvc*-) + ;; + -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \ + | -uclibc*- ) # These are just libc implementations, not actual OSes, and thus # require a kernel. - echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 + echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 exit 1 ;; - kfreebsd*-gnu* | kopensolaris*-gnu*) + -kernel*- ) + echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 + exit 1 ;; - nto-qnx*) + *-kernel*- ) + echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 + exit 1 ;; - *-eabi* | *-gnueabi*) + *-msvc*- ) + echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 + exit 1 + ;; + kfreebsd*-gnu*- | kopensolaris*-gnu*-) + ;; + vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) + ;; + nto-qnx*-) + ;; + os2-emx-) ;; - -*) + *-eabi*- | *-gnueabi*-) + ;; + none--*) + # None (no kernel, i.e. freestanding / bare metal), + # can be paired with an machine code file format + ;; + -*-) # Blank kernel with real OS is always fine. ;; - *-*) - echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 + --*) + # Blank kernel and OS with real machine code file format is always fine. + ;; + *-*-*) + echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2 exit 1 ;; esac @@ -1836,7 +1960,7 @@ case $vendor in ;; esac -echo "$cpu-$vendor-${kernel:+$kernel-}$os" +echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" exit # Local variables: -- 2.30.2 From wbx at openadk.org Tue May 14 06:26:09 2024 From: wbx at openadk.org (Waldemar Brodkorb) Date: Tue, 14 May 2024 08:26:09 +0200 Subject: [Buildroot] [PATCH 1/3] arch: add support for loongarch64 Message-ID: Signed-off-by: Waldemar Brodkorb --- arch/Config.in | 12 ++++++++++++ arch/Config.in.loongarch64 | 14 ++++++++++++++ package/glibc/Config.in | 1 + package/musl/Config.in | 1 + 4 files changed, 28 insertions(+) create mode 100644 arch/Config.in.loongarch64 diff --git a/arch/Config.in b/arch/Config.in index f39c33ef7f..070a4aca3a 100644 --- a/arch/Config.in +++ b/arch/Config.in @@ -77,6 +77,14 @@ config BR2_i386 Intel i386 architecture compatible microprocessor http://en.wikipedia.org/wiki/I386 +config BR2_loongarch64 + bool "loongarch64" + select BR2_ARCH_IS_64 + select BR2_USE_MMU + help + Loongarch is a RISC microprocessor from Loongarch Technologies. + https://en.wikipedia.org/wiki/Loongson + config BR2_m68k bool "m68k" # MMU support is set by the subarchitecture file, arch/Config.in.m68k @@ -374,6 +382,10 @@ if BR2_arm || BR2_armeb || BR2_aarch64 || BR2_aarch64_be source "arch/Config.in.arm" endif +if BR2_loongarch64 +source "arch/Config.in.loongarch64" +endif + if BR2_m68k source "arch/Config.in.m68k" endif diff --git a/arch/Config.in.loongarch64 b/arch/Config.in.loongarch64 new file mode 100644 index 0000000000..2b5bac095d --- /dev/null +++ b/arch/Config.in.loongarch64 @@ -0,0 +1,14 @@ +config BR2_ARCH + default "loongarch64" + +config BR2_NORMALIZED_ARCH + default "loongarch" + +config BR2_ENDIAN + default "LITTLE" + +config BR2_READELF_ARCH_NAME + default "LoongArch" + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/package/glibc/Config.in b/package/glibc/Config.in index 81c64083f4..5385e2a855 100644 --- a/package/glibc/Config.in +++ b/package/glibc/Config.in @@ -5,6 +5,7 @@ config BR2_PACKAGE_GLIBC_ARCH_SUPPORTS default y if BR2_aarch64 default y if BR2_aarch64_be default y if BR2_i386 + default y if BR2_loongarch64 default y if BR2_m68k_m68k default y if BR2_mips default y if BR2_mipsel diff --git a/package/musl/Config.in b/package/musl/Config.in index a6e2af054c..70475326f5 100644 --- a/package/musl/Config.in +++ b/package/musl/Config.in @@ -5,6 +5,7 @@ config BR2_PACKAGE_MUSL_ARCH_SUPPORTS default y if BR2_arm default y if BR2_armeb default y if BR2_i386 + default y if BR2_loongarch64 default y if BR2_m68k_m68k default y if BR2_microblaze default y if BR2_mips -- 2.30.2 From wbx at openadk.org Tue May 14 06:27:01 2024 From: wbx at openadk.org (Waldemar Brodkorb) Date: Tue, 14 May 2024 08:27:01 +0200 Subject: [Buildroot] [PATCH 2/3] linux: add support for vmlinux.efi Message-ID: Signed-off-by: Waldemar Brodkorb --- linux/Config.in | 4 ++++ linux/linux.mk | 2 ++ 2 files changed, 6 insertions(+) diff --git a/linux/Config.in b/linux/Config.in index d3d4c42910..8aab953ddf 100644 --- a/linux/Config.in +++ b/linux/Config.in @@ -285,6 +285,10 @@ config BR2_LINUX_KERNEL_VMLINUX_BIN bool "vmlinux.bin" depends on BR2_mips || BR2_mipsel || BR2_sh +config BR2_LINUX_KERNEL_VMLINUX_EFI + bool "vmlinux.efi" + depends on BR2_loongarch64 + config BR2_LINUX_KERNEL_VMLINUX bool "vmlinux" diff --git a/linux/linux.mk b/linux/linux.mk index 16d9f19470..3e0e728656 100644 --- a/linux/linux.mk +++ b/linux/linux.mk @@ -231,6 +231,8 @@ else ifeq ($(BR2_LINUX_KERNEL_IMAGEGZ),y) LINUX_IMAGE_NAME = Image.gz else ifeq ($(BR2_LINUX_KERNEL_LINUX_BIN),y) LINUX_IMAGE_NAME = linux.bin +else ifeq ($(BR2_LINUX_KERNEL_VMLINUX_EFI),y) +LINUX_IMAGE_NAME = vmlinux.efi else ifeq ($(BR2_LINUX_KERNEL_VMLINUX_BIN),y) LINUX_IMAGE_NAME = vmlinux.bin else ifeq ($(BR2_LINUX_KERNEL_VMLINUX),y) -- 2.30.2 From wbx at openadk.org Tue May 14 06:27:54 2024 From: wbx at openadk.org (Waldemar Brodkorb) Date: Tue, 14 May 2024 08:27:54 +0200 Subject: [Buildroot] [PATCH 3/3] configs/qemu_loongarch64: new defconfig Message-ID: Signed-off-by: Waldemar Brodkorb --- .../patches/linux-headers/linux-headers.hash | 2 ++ .../qemu/loongarch64/patches/linux/linux.hash | 2 ++ configs/qemu_loongarch64_defconfig | 27 +++++++++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 board/qemu/loongarch64/patches/linux-headers/linux-headers.hash create mode 100644 board/qemu/loongarch64/patches/linux/linux.hash create mode 100644 configs/qemu_loongarch64_defconfig diff --git a/board/qemu/loongarch64/patches/linux-headers/linux-headers.hash b/board/qemu/loongarch64/patches/linux-headers/linux-headers.hash new file mode 100644 index 0000000000..f3d9c1186a --- /dev/null +++ b/board/qemu/loongarch64/patches/linux-headers/linux-headers.hash @@ -0,0 +1,2 @@ +# From https://cdn.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc +sha256 b66a5b863b0f8669448b74ca83bd641a856f164b29956e539bbcb5fdeeab9cc6 linux-6.6.30.tar.xz diff --git a/board/qemu/loongarch64/patches/linux/linux.hash b/board/qemu/loongarch64/patches/linux/linux.hash new file mode 100644 index 0000000000..f3d9c1186a --- /dev/null +++ b/board/qemu/loongarch64/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# From https://cdn.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc +sha256 b66a5b863b0f8669448b74ca83bd641a856f164b29956e539bbcb5fdeeab9cc6 linux-6.6.30.tar.xz diff --git a/configs/qemu_loongarch64_defconfig b/configs/qemu_loongarch64_defconfig new file mode 100644 index 0000000000..025e9907e2 --- /dev/null +++ b/configs/qemu_loongarch64_defconfig @@ -0,0 +1,27 @@ +# Architecture +BR2_loongarch64=y + +# Filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.30" +BR2_LINUX_KERNEL_DEFCONFIG="loongson3" +BR2_LINUX_KERNEL_VMLINUX_EFI=y + +# Disable network scripts +# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y -- 2.30.2 From thomas.petazzoni at bootlin.com Tue May 14 07:49:44 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 14 May 2024 09:49:44 +0200 Subject: [Buildroot] [PATCH] package: fix filename/hashes of Cargo-fetched packages Message-ID: <20240514074945.2885400-1-thomas.petazzoni@bootlin.com> Commit de5ed8021269e18070b92def5df10f9157bc2085 ("{boot, package}: update hashes for generated archives") forgot to update the filename and hashes of Cargo-fetched packages. This commit therefore updates the incorrect filenames and hashes. It allows to run: make bat-legal-info \ dust-legal-info \ eza-legal-info \ hyperfine-legal-info \ nushell-legal-info \ procs-legal-info \ ripgrep-legal-info \ host-rust-bindgen-legal-info \ host-sentry-cli-legal-info \ tealdeer-legal-info successfully. Also fixes: http://autobuild.buildroot.net/results/1ff5ccf5ee6029669af1413c95827f670ae212b3/ (dust) http://autobuild.buildroot.net/results/f887adebe611f0021d5ee85acb95cced7c8b71c0/ (sentry-cli) http://autobuild.buildroot.net/results/b95093c618eafeb3726513a3ef6199488406093d/ (bat) (and probably some other similar issues) Cc: Yann E. MORIN Cc: Arnout Vandecappelle Signed-off-by: Thomas Petazzoni --- package/bat/bat.hash | 2 +- package/dust/dust.hash | 2 +- package/eza/eza.hash | 2 +- package/hyperfine/hyperfine.hash | 2 +- package/nushell/nushell.hash | 2 +- package/procs/procs.hash | 2 +- package/ripgrep/ripgrep.hash | 2 +- package/rust-bindgen/rust-bindgen.hash | 2 +- package/sentry-cli/sentry-cli.hash | 2 +- package/tealdeer/tealdeer.hash | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package/bat/bat.hash b/package/bat/bat.hash index 775838d921..e80301ff49 100644 --- a/package/bat/bat.hash +++ b/package/bat/bat.hash @@ -1,4 +1,4 @@ # Locally generated -sha256 6a32062aeb76b8d7d4cffbb5b267818ee1f35149af0c35fdb8999cea63e65854 bat-0.24.0-cargo1.tar.gz +sha256 45fcdd6076dc1b45698a7b6c0f4d1f5d9ae676f3ca3b155402ad24680d5b4df6 bat-0.24.0-cargo2.tar.gz sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE-APACHE sha256 dccda9eb9533f5c65624a1106536c6cfde46008d58e60b3faf154e8b9fd5b46e LICENSE-MIT diff --git a/package/dust/dust.hash b/package/dust/dust.hash index 0b2f123080..975ec9664d 100644 --- a/package/dust/dust.hash +++ b/package/dust/dust.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 fffe56f60bb596213edcd054f45e3b611c4b9b7861ff4a1bb9e0721012474032 dust-0.9.0-cargo1.tar.gz +sha256 ace29e85647e7079f9eaa066da9b1368c7200233eb0814442499948b5adeb028 dust-0.9.0-cargo2.tar.gz sha256 aee6e2d13d3a55c7881630c09b41ca7b3b44bb1437b5d36695d22decc3655160 LICENSE diff --git a/package/eza/eza.hash b/package/eza/eza.hash index ddc23f50e2..8765261e7e 100644 --- a/package/eza/eza.hash +++ b/package/eza/eza.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 925347e190028308e8105d5c6aef395fd73cd3ceec2df2bf35b285101e75bf3b eza-0.18.8-cargo1.tar.gz +sha256 709507bd46c1e1c4c14d6e34266355d78ae21fe2525f8bf42089cab36ebf0134 eza-0.18.8-cargo2.tar.gz sha256 2762990c7fbba9d550802a2593c1d857dcd52596bb0f9f192a97e9a7ac5f4f9e LICENCE diff --git a/package/hyperfine/hyperfine.hash b/package/hyperfine/hyperfine.hash index 6806bda9c8..88b8710125 100644 --- a/package/hyperfine/hyperfine.hash +++ b/package/hyperfine/hyperfine.hash @@ -1,4 +1,4 @@ # Locally computed -sha256 e4a945fcd08e93fed47e542383942874960a893a94a60758b7bd208821c623f5 hyperfine-1.18.0-cargo1.tar.gz +sha256 6cbe5673729ba7fd7a1b0b19a54630f93f4fcc29ea7878845f17931d31cd16fb hyperfine-1.18.0-cargo2.tar.gz sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE-APACHE sha256 1dfee18c2ff07ce551de4d6a1d2db158c0380746b488a7f0d08c8e0d3568b7c3 LICENSE-MIT diff --git a/package/nushell/nushell.hash b/package/nushell/nushell.hash index 2fe48557da..c125a6c652 100644 --- a/package/nushell/nushell.hash +++ b/package/nushell/nushell.hash @@ -1,3 +1,3 @@ # Locally generated -sha256 9518d79a04b374c23d4523252080b176e835050b3c6ef8243ee54411a8f8cba4 nushell-0.85.0-cargo1.tar.gz +sha256 9175b7e25a93a35c4f2690a63e7c36ac2dc31a9d762f59de01aac8ac1075b02f nushell-0.85.0-cargo2.tar.gz sha256 2dc1f03f729c21902d869b4d8f8dc528fc730f4c6ad83fc128672bda0ad69196 LICENSE diff --git a/package/procs/procs.hash b/package/procs/procs.hash index e4e3764976..da6b4377e2 100644 --- a/package/procs/procs.hash +++ b/package/procs/procs.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 fe93b0ace885e1342870b49b2ee64f0862fd799395740e5c549f2fd67d14d944 procs-0.14.5-cargo1.tar.gz +sha256 86715967bd378a4c0330708e11714bda2c8ce9f757fb3006073238d77e83e6e1 procs-0.14.5-cargo2.tar.gz sha256 feb87a2e0c305de3464cc44077da5393c52d8ca6362d37427157d04ec6f4510d LICENSE diff --git a/package/ripgrep/ripgrep.hash b/package/ripgrep/ripgrep.hash index c1241106b7..39165770dc 100644 --- a/package/ripgrep/ripgrep.hash +++ b/package/ripgrep/ripgrep.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 e3165367d5d613294f4c47dbb28ac59cda5465529e85bbc7243355e04be376de ripgrep-14.1.0-cargo1.tar.gz +sha256 7e1e66e2e9a7290a0a9445a82886a678ee8b2583b296fb851e1472c7403a681a ripgrep-14.1.0-cargo2.tar.gz sha256 0f96a83840e146e43c0ec96a22ec1f392e0680e6c1226e6f3ba87e0740af850f LICENSE-MIT diff --git a/package/rust-bindgen/rust-bindgen.hash b/package/rust-bindgen/rust-bindgen.hash index 17e6d82337..7b222e577f 100644 --- a/package/rust-bindgen/rust-bindgen.hash +++ b/package/rust-bindgen/rust-bindgen.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 23951b867ea4e24d49e3f74855300e1050ccacb86bca86005ce3307bfc761342 rust-bindgen-0.65.1-cargo1.tar.gz +sha256 618a92ac5e0e855a4e5cb16fb71258c4859679f3f7d7d95c7150e8b09cbbfbde rust-bindgen-0.65.1-cargo2.tar.gz sha256 c23953d9deb0a3312dbeaf6c128a657f3591acee45067612fa68405eaa4525db LICENSE diff --git a/package/sentry-cli/sentry-cli.hash b/package/sentry-cli/sentry-cli.hash index ff2684d110..0335c57cb3 100644 --- a/package/sentry-cli/sentry-cli.hash +++ b/package/sentry-cli/sentry-cli.hash @@ -1,3 +1,3 @@ # locally calculated -sha256 b31e66d4d0e65d9903c50c69565638f16db06420248d65d3d7bd955dc68d829c sentry-cli-2.20.3-cargo1.tar.gz +sha256 997581bca5bdb6f7540ea9d6e1d25f0e9df06fcc338d26ed75fc81f9401d65d4 sentry-cli-2.20.3-cargo2.tar.gz sha256 9503def7b54ceb6e3cd182fd59bc05d3a30d7eae481e65aaba4b495133c83c14 LICENSE diff --git a/package/tealdeer/tealdeer.hash b/package/tealdeer/tealdeer.hash index 94049567be..f5493ec8eb 100644 --- a/package/tealdeer/tealdeer.hash +++ b/package/tealdeer/tealdeer.hash @@ -1,4 +1,4 @@ # Locally generated -sha256 cf4999339cda32314ca42f4553440baa07fdf698e0a6ec254cbc25297f1e603a tealdeer-1.6.1-cargo1.tar.gz +sha256 f0be09eed89d25e44f954e9c25476176d9e4acc15171ae93b5977d7f244851ba tealdeer-1.6.1-cargo2.tar.gz sha256 62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a LICENSE-APACHE sha256 a313b5e62b80a08f3aae0fa62ff3de8482ef55247299eb352ab44f87ef456b1b LICENSE-MIT -- 2.45.0 From thomas.petazzoni at bootlin.com Tue May 14 07:58:15 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 14 May 2024 09:58:15 +0200 Subject: [Buildroot] [PATCH] support: update config.sub/config.guess In-Reply-To: References: Message-ID: <20240514095815.59ab4664@windsurf> On Tue, 14 May 2024 08:25:03 +0200 Waldemar Brodkorb wrote: > Signed-off-by: Waldemar Brodkorb > --- > support/gnuconfig/README.buildroot | 2 +- > support/gnuconfig/config.guess | 1233 +++++++++++++++------------- > support/gnuconfig/config.sub | 302 +++++-- > 3 files changed, 894 insertions(+), 643 deletions(-) Could you share some details on the motivation for this update? Is it just because they are out of date, or it is fixing something specific? Thanks, Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From thomas.petazzoni at bootlin.com Tue May 14 07:59:17 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 14 May 2024 09:59:17 +0200 Subject: [Buildroot] [PATCH 3/3] configs/qemu_loongarch64: new defconfig In-Reply-To: References: Message-ID: <20240514095917.4df6491b@windsurf> Hello, On Tue, 14 May 2024 08:27:54 +0200 Waldemar Brodkorb wrote: > Signed-off-by: Waldemar Brodkorb > --- > .../patches/linux-headers/linux-headers.hash | 2 ++ > .../qemu/loongarch64/patches/linux/linux.hash | 2 ++ > configs/qemu_loongarch64_defconfig | 27 +++++++++++++++++++ > 3 files changed, 31 insertions(+) This needs a readme.txt in board/qemu/, with the proper formatting so that our CI testing can pick up the qemu command line (see other qemu readme.txt). This also needs a DEVELOPERS entry added. Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Tue May 14 08:02:17 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 14 May 2024 10:02:17 +0200 Subject: [Buildroot] [PATCH 1/3] arch: add support for loongarch64 In-Reply-To: References: Message-ID: <20240514100217.35add5c1@windsurf> On Tue, 14 May 2024 08:26:09 +0200 Waldemar Brodkorb wrote: > Signed-off-by: Waldemar Brodkorb > --- > arch/Config.in | 12 ++++++++++++ > arch/Config.in.loongarch64 | 14 ++++++++++++++ > package/glibc/Config.in | 1 + > package/musl/Config.in | 1 + > 4 files changed, 28 insertions(+) > create mode 100644 arch/Config.in.loongarch64 This needs an entry in the DEVELOPERS file. Is this architecture supported in all versions of binutils/gcc/gdb we support? > diff --git a/arch/Config.in.loongarch64 b/arch/Config.in.loongarch64 > new file mode 100644 > index 0000000000..2b5bac095d > --- /dev/null > +++ b/arch/Config.in.loongarch64 > @@ -0,0 +1,14 @@ > +config BR2_ARCH > + default "loongarch64" > + > +config BR2_NORMALIZED_ARCH > + default "loongarch" > + > +config BR2_ENDIAN > + default "LITTLE" > + > +config BR2_READELF_ARCH_NAME > + default "LoongArch" > + Based on the gcc documentation, I see two -march values: ?loongarch64? A generic CPU with 64-bit extensions. ?la464? LoongArch LA464 CPU with LBT, LSX, LASX, LVZ. And also 3 ABIs: ?lp64d? Uses 64-bit general purpose registers and 32/64-bit floating-point registers for parameter passing. Data model is LP64, where ?int? is 32 bits, while ?long int? and pointers are 64 bits. ?lp64f? Uses 64-bit general purpose registers and 32-bit floating-point registers for parameter passing. Data model is LP64, where ?int? is 32 bits, while ?long int? and pointers are 64 bits. ?lp64s? Uses 64-bit general purpose registers and no floating-point registers for parameter passing. Data model is LP64, where ?int? is 32 bits, while ?long int? and pointers are 64 bits. Should we do something about this? Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Tue May 14 08:20:49 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 14 May 2024 10:20:49 +0200 Subject: [Buildroot] [PATCH v2 1/1] package/python-ml-dtypes: bump to version 0.3.2 In-Reply-To: <20240206161715.550268-1-james.hilliard1@gmail.com> References: <20240206161715.550268-1-james.hilliard1@gmail.com> Message-ID: <20240514102049.39a4d771@windsurf> Hello James, On Tue, 6 Feb 2024 09:17:15 -0700 James Hilliard wrote: > Migrate from distutils which is being deprecated to setuptools. > > Drop python-pybind which is no longer required: > https://github.com/jax-ml/ml_dtypes/blob/v0.3.2/CHANGELOG.md#032---2024-01-03 > > Signed-off-by: James Hilliard > --- > Changes v1 -> v2: > - drop pybind > --- > package/python-ml-dtypes/Config.in | 1 - > package/python-ml-dtypes/python-ml-dtypes.hash | 4 ++-- > package/python-ml-dtypes/python-ml-dtypes.mk | 9 ++++----- > 3 files changed, 6 insertions(+), 8 deletions(-) This package fails to build: https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308461 Could you have a look? If you submit a fix, please don't just "fix" the issue, research since when the issue started occurring, so that we know if the issue is affecting one of our stable branches. Thanks a lot! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From wbx at openadk.org Tue May 14 08:21:38 2024 From: wbx at openadk.org (Waldemar Brodkorb) Date: Tue, 14 May 2024 10:21:38 +0200 Subject: [Buildroot] [PATCH v2] support: update config.sub/config.guess Message-ID: This adds support for Loongarch64 support. Signed-off-by: Waldemar Brodkorb --- v1->v2: add motivation requested by Thomas P. --- support/gnuconfig/README.buildroot | 2 +- support/gnuconfig/config.guess | 1233 +++++++++++++++------------- support/gnuconfig/config.sub | 302 +++++-- 3 files changed, 894 insertions(+), 643 deletions(-) diff --git a/support/gnuconfig/README.buildroot b/support/gnuconfig/README.buildroot index 952eea8b10..f34a6566bd 100644 --- a/support/gnuconfig/README.buildroot +++ b/support/gnuconfig/README.buildroot @@ -18,4 +18,4 @@ Run the script 'update' in this directory, and commit the result. The current Buildroot version is based on this commit of the config.git repository (leave alone on its own line, the script updates it): -d7a4dee7cc25e332b990d0a6d9f0ddd42cb33cf5 +948ae97ca5703224bd3eada06b7a69f40dd15a02 diff --git a/support/gnuconfig/config.guess b/support/gnuconfig/config.guess index 8d70ec2b26..f6d217a49f 100755 --- a/support/gnuconfig/config.guess +++ b/support/gnuconfig/config.guess @@ -1,12 +1,14 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2020 Free Software Foundation, Inc. +# Copyright 1992-2024 Free Software Foundation, Inc. -timestamp='2020-09-19' +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2024-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but @@ -27,17 +29,25 @@ timestamp='2020-09-19' # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess # # Please send patches to . +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + + me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] -Output the configuration name of the system \`$me' is run on. +Output the configuration name of the system '$me' is run on. Options: -h, --help print this help, then exit @@ -50,13 +60,13 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2020 Free Software Foundation, Inc. +Copyright 1992-2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" -Try \`$me --help' for more information." +Try '$me --help' for more information." # Parse command line while test $# -gt 0 ; do @@ -84,13 +94,16 @@ if test $# != 0; then exit 1 fi +# Just in case it came from the environment. +GUESS= + # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. +# Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still +# use 'HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. @@ -102,7 +115,7 @@ set_cc_for_build() { # prevent multiple calls if $tmp is already set test "$tmp" && return 0 : "${TMPDIR=/tmp}" - # shellcheck disable=SC2039 + # shellcheck disable=SC2039,SC3028 { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || @@ -112,7 +125,7 @@ set_cc_for_build() { ,,) echo "int x;" > "$dummy.c" for driver in cc gcc c89 c99 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then - CC_FOR_BUILD="$driver" + CC_FOR_BUILD=$driver break fi done @@ -133,38 +146,57 @@ fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -case "$UNAME_SYSTEM" in +case $UNAME_SYSTEM in Linux|GNU|GNU/*) - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - LIBC=gnu + LIBC=unknown set_cc_for_build cat <<-EOF > "$dummy.c" + #if defined(__ANDROID__) + LIBC=android + #else #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc + #elif defined(__GLIBC__) + LIBC=gnu + #elif defined(__LLVM_LIBC__) + LIBC=llvm #else #include + /* First heuristic to detect musl libc. */ #ifdef __DEFINED_va_list LIBC=musl - #else - LIBC=gnu + #endif #endif #endif EOF - eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" + cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "$cc_set_libc" + + # Second heuristic to detect musl libc. + if [ "$LIBC" = unknown ] && + command -v ldd >/dev/null && + ldd --version 2>&1 | grep -q ^musl; then + LIBC=musl + fi + + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + if [ "$LIBC" = unknown ]; then + LIBC=gnu + fi ;; esac # Note: order is significant - the case branches are not exclusive. -case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in +case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, @@ -176,12 +208,12 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ - "/sbin/$sysctl" 2>/dev/null || \ - "/usr/sbin/$sysctl" 2>/dev/null || \ + /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ echo unknown)` - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in + aarch64eb) machine=aarch64_be-unknown ;; armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; @@ -190,13 +222,13 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` - machine="${arch}${endian}"-unknown + machine=${arch}${endian}-unknown ;; - *) machine="$UNAME_MACHINE_ARCH"-unknown ;; + *) machine=$UNAME_MACHINE_ARCH-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in earm*) os=netbsdelf ;; @@ -217,7 +249,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in ;; esac # Determine ABI tags. - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` @@ -228,7 +260,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. - case "$UNAME_VERSION" in + case $UNAME_VERSION in Debian*) release='-gnu' ;; @@ -239,51 +271,57 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "$machine-${os}${release}${abi-}" - exit ;; + GUESS=$machine-${os}${release}${abi-} + ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE + ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE + ;; + *:SecBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE + ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE + ;; *:MidnightBSD:*:*) - echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE + ;; *:ekkoBSD:*:*) - echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE + ;; *:SolidBSD:*:*) - echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE + ;; *:OS108:*:*) - echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE + ;; macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE + ;; *:MirBSD:*:*) - echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE + ;; *:Sortix:*:*) - echo "$UNAME_MACHINE"-unknown-sortix - exit ;; + GUESS=$UNAME_MACHINE-unknown-sortix + ;; *:Twizzler:*:*) - echo "$UNAME_MACHINE"-unknown-twizzler - exit ;; + GUESS=$UNAME_MACHINE-unknown-twizzler + ;; *:Redox:*:*) - echo "$UNAME_MACHINE"-unknown-redox - exit ;; + GUESS=$UNAME_MACHINE-unknown-redox + ;; mips:OSF1:*.*) - echo mips-dec-osf1 - exit ;; + GUESS=mips-dec-osf1 + ;; alpha:OSF1:*:*) + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + trap '' 0 case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` @@ -297,7 +335,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in + case $ALPHA_CPU_TYPE in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") @@ -334,68 +372,69 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; + OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + GUESS=$UNAME_MACHINE-dec-osf$OSF_REL + ;; Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; + GUESS=m68k-unknown-sysv4 + ;; *:[Aa]miga[Oo][Ss]:*:*) - echo "$UNAME_MACHINE"-unknown-amigaos - exit ;; + GUESS=$UNAME_MACHINE-unknown-amigaos + ;; *:[Mm]orph[Oo][Ss]:*:*) - echo "$UNAME_MACHINE"-unknown-morphos - exit ;; + GUESS=$UNAME_MACHINE-unknown-morphos + ;; *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; + GUESS=i370-ibm-openedition + ;; *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; + GUESS=s390-ibm-zvmoe + ;; *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; + GUESS=powerpc-ibm-os400 + ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix"$UNAME_RELEASE" - exit ;; + GUESS=arm-acorn-riscix$UNAME_RELEASE + ;; arm*:riscos:*:*|arm*:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; + GUESS=arm-unknown-riscos + ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; + GUESS=hppa1.1-hitachi-hiuxmpp + ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee at wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; + case `(/bin/universe) 2>/dev/null` in + att) GUESS=pyramid-pyramid-sysv3 ;; + *) GUESS=pyramid-pyramid-bsd ;; + esac + ;; NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; + GUESS=pyramid-pyramid-svr4 + ;; DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; + GUESS=sparc-icl-nx6 + ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; + sparc) GUESS=sparc-icl-nx7 ;; + esac + ;; s390x:SunOS:*:*) - echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL + ;; sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-hal-solaris2$SUN_REL + ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris2$SUN_REL + ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux"$UNAME_RELEASE" - exit ;; + GUESS=i386-pc-auroraux$UNAME_RELEASE + ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) set_cc_for_build SUN_ARCH=i386 @@ -404,47 +443,50 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # This test works for both compilers. if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi - echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$SUN_ARCH-pc-solaris2$SUN_REL + ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris3$SUN_REL + ;; sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in + case `/usr/bin/arch -k` in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" - exit ;; + # Japanese Language versions have a version number like '4.1.3-JL'. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` + GUESS=sparc-sun-sunos$SUN_REL + ;; sun3*:SunOS:*:*) - echo m68k-sun-sunos"$UNAME_RELEASE" - exit ;; + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 - case "`/bin/arch`" in + case `/bin/arch` in sun3) - echo m68k-sun-sunos"$UNAME_RELEASE" + GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun4) - echo sparc-sun-sunos"$UNAME_RELEASE" + GUESS=sparc-sun-sunos$UNAME_RELEASE ;; esac - exit ;; + ;; aushp:SunOS:*:*) - echo sparc-auspex-sunos"$UNAME_RELEASE" - exit ;; + GUESS=sparc-auspex-sunos$UNAME_RELEASE + ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor @@ -454,41 +496,41 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-milan-mint$UNAME_RELEASE + ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-hades-mint$UNAME_RELEASE + ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-unknown-mint$UNAME_RELEASE + ;; m68k:machten:*:*) - echo m68k-apple-machten"$UNAME_RELEASE" - exit ;; + GUESS=m68k-apple-machten$UNAME_RELEASE + ;; powerpc:machten:*:*) - echo powerpc-apple-machten"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-apple-machten$UNAME_RELEASE + ;; RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; + GUESS=mips-dec-mach_bsd4.3 + ;; RISC*:ULTRIX:*:*) - echo mips-dec-ultrix"$UNAME_RELEASE" - exit ;; + GUESS=mips-dec-ultrix$UNAME_RELEASE + ;; VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix"$UNAME_RELEASE" - exit ;; + GUESS=vax-dec-ultrix$UNAME_RELEASE + ;; 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix"$UNAME_RELEASE" - exit ;; + GUESS=clipper-intergraph-clix$UNAME_RELEASE + ;; mips:*:*:UMIPS | mips:*:*:RISCos) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" @@ -516,29 +558,29 @@ EOF dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos"$UNAME_RELEASE" - exit ;; + GUESS=mips-mips-riscos$UNAME_RELEASE + ;; Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; + GUESS=powerpc-motorola-powermax + ;; Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; + GUESS=powerpc-harris-powerunix + ;; m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; + GUESS=m88k-harris-cxux7 + ;; m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; + GUESS=m88k-motorola-sysv4 + ;; m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` @@ -547,44 +589,45 @@ EOF if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ test "$TARGET_BINARY_INTERFACE"x = x then - echo m88k-dg-dgux"$UNAME_RELEASE" + GUESS=m88k-dg-dgux$UNAME_RELEASE else - echo m88k-dg-dguxbcs"$UNAME_RELEASE" + GUESS=m88k-dg-dguxbcs$UNAME_RELEASE fi else - echo i586-dg-dgux"$UNAME_RELEASE" + GUESS=i586-dg-dgux$UNAME_RELEASE fi - exit ;; + ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; + GUESS=m88k-dolphin-sysv3 + ;; M88*:*:R3*:*) # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; + GUESS=m88k-tektronix-sysv3 + ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; + GUESS=m68k-tektronix-bsd + ;; *:IRIX*:*:*) - echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" - exit ;; + IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` + GUESS=mips-sgi-irix$IRIX_REL + ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id + ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; + GUESS=i386-ibm-aix + ;; ia64:AIX:*:*) if test -x /usr/bin/oslevel ; then IBM_REV=`/usr/bin/oslevel` else - IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" - exit ;; + GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV + ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then set_cc_for_build @@ -601,16 +644,16 @@ EOF EOF if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then - echo "$SYSTEM_NAME" + GUESS=$SYSTEM_NAME else - echo rs6000-ibm-aix3.2.5 + GUESS=rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 + GUESS=rs6000-ibm-aix3.2.4 else - echo rs6000-ibm-aix3.2 + GUESS=rs6000-ibm-aix3.2 fi - exit ;; + ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then @@ -619,48 +662,48 @@ EOF IBM_ARCH=powerpc fi if test -x /usr/bin/lslpp ; then - IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else - IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo "$IBM_ARCH"-ibm-aix"$IBM_REV" - exit ;; + GUESS=$IBM_ARCH-ibm-aix$IBM_REV + ;; *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; + GUESS=rs6000-ibm-aix + ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) - echo romp-ibm-bsd4.4 - exit ;; + GUESS=romp-ibm-bsd4.4 + ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 + GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to + ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; + GUESS=rs6000-bull-bosx + ;; DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; + GUESS=m68k-bull-sysv3 + ;; 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; + GUESS=m68k-hp-bsd + ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; + GUESS=m68k-hp-bsd4.4 + ;; 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` - case "$UNAME_MACHINE" in + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + case $UNAME_MACHINE in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if test -x /usr/bin/getconf; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "$sc_cpu_version" in + case $sc_cpu_version in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 - case "$sc_kernel_bits" in + case $sc_kernel_bits in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 @@ -727,12 +770,12 @@ EOF HP_ARCH=hppa64 fi fi - echo "$HP_ARCH"-hp-hpux"$HPUX_REV" - exit ;; + GUESS=$HP_ARCH-hp-hpux$HPUX_REV + ;; ia64:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux"$HPUX_REV" - exit ;; + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + GUESS=ia64-hp-hpux$HPUX_REV + ;; 3050*:HI-UX:*:*) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" @@ -762,36 +805,36 @@ EOF EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; + GUESS=unknown-hitachi-hiuxwe2 + ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) - echo hppa1.1-hp-bsd - exit ;; + GUESS=hppa1.1-hp-bsd + ;; 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; + GUESS=hppa1.0-hp-bsd + ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; + GUESS=hppa1.0-hp-mpeix + ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) - echo hppa1.1-hp-osf - exit ;; + GUESS=hppa1.1-hp-osf + ;; hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; + GUESS=hppa1.0-hp-osf + ;; i*86:OSF1:*:*) if test -x /usr/sbin/sysversion ; then - echo "$UNAME_MACHINE"-unknown-osf1mk + GUESS=$UNAME_MACHINE-unknown-osf1mk else - echo "$UNAME_MACHINE"-unknown-osf1 + GUESS=$UNAME_MACHINE-unknown-osf1 fi - exit ;; + ;; parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; + GUESS=hppa1.1-hp-lites + ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; + GUESS=c1-convex-bsd + ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd @@ -799,17 +842,18 @@ EOF fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; + GUESS=c34-convex-bsd + ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; + GUESS=c38-convex-bsd + ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; + GUESS=c4-convex-bsd + ;; CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=ymp-cray-unicos$CRAY_REL + ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ @@ -817,112 +861,153 @@ EOF -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) - echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=t90-cray-unicos$CRAY_REL + ;; CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=alphaev5-cray-unicosmk$CRAY_REL + ;; CRAY*SV1:*:*:*) - echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=sv1-cray-unicos$CRAY_REL + ;; *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=craynv-cray-unicosmp$CRAY_REL + ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE + ;; sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=sparc-unknown-bsdi$UNAME_RELEASE + ;; *:BSD/OS:*:*) - echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE + ;; arm:FreeBSD:*:*) UNAME_PROCESSOR=`uname -p` set_cc_for_build if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi else - echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf fi - exit ;; + ;; *:FreeBSD:*:*) - UNAME_PROCESSOR=`/usr/bin/uname -p` - case "$UNAME_PROCESSOR" in + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac - echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" - exit ;; + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL + ;; i*:CYGWIN*:*) - echo "$UNAME_MACHINE"-pc-cygwin - exit ;; + GUESS=$UNAME_MACHINE-pc-cygwin + ;; *:MINGW64*:*) - echo "$UNAME_MACHINE"-pc-mingw64 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw64 + ;; *:MINGW*:*) - echo "$UNAME_MACHINE"-pc-mingw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw32 + ;; *:MSYS*:*) - echo "$UNAME_MACHINE"-pc-msys - exit ;; + GUESS=$UNAME_MACHINE-pc-msys + ;; i*:PW*:*) - echo "$UNAME_MACHINE"-pc-pw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-pw32 + ;; + *:SerenityOS:*:*) + GUESS=$UNAME_MACHINE-pc-serenity + ;; *:Interix*:*) - case "$UNAME_MACHINE" in + case $UNAME_MACHINE in x86) - echo i586-pc-interix"$UNAME_RELEASE" - exit ;; + GUESS=i586-pc-interix$UNAME_RELEASE + ;; authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix"$UNAME_RELEASE" - exit ;; + GUESS=x86_64-unknown-interix$UNAME_RELEASE + ;; IA64) - echo ia64-unknown-interix"$UNAME_RELEASE" - exit ;; + GUESS=ia64-unknown-interix$UNAME_RELEASE + ;; esac ;; i*:UWIN*:*) - echo "$UNAME_MACHINE"-pc-uwin - exit ;; + GUESS=$UNAME_MACHINE-pc-uwin + ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-pc-cygwin - exit ;; + GUESS=x86_64-pc-cygwin + ;; prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=powerpcle-unknown-solaris2$SUN_REL + ;; *:GNU:*:*) # the GNU system - echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" - exit ;; + GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` + GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL + ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" - exit ;; + GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC + ;; + x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-pc-managarm-mlibc" + ;; + *:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-unknown-managarm-mlibc" + ;; *:Minix:*:*) - echo "$UNAME_MACHINE"-unknown-minix - exit ;; + GUESS=$UNAME_MACHINE-unknown-minix + ;; aarch64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + set_cc_for_build + CPU=$UNAME_MACHINE + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __ARM_EABI__ + #ifdef __ARM_PCS_VFP + ABI=eabihf + #else + ABI=eabi + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;; + esac + fi + GUESS=$CPU-unknown-linux-$LIBCABI + ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in EV5) UNAME_MACHINE=alphaev5 ;; @@ -935,60 +1020,72 @@ EOF esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; - arc:Linux:*:* | arceb:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; arm*:Linux:*:*) set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi else - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf fi fi - exit ;; + ;; avr32*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; cris:Linux:*:*) - echo "$UNAME_MACHINE"-axis-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; crisv32:Linux:*:*) - echo "$UNAME_MACHINE"-axis-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; e2k:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; frv:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; hexagon:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:Linux:*:*) - echo "$UNAME_MACHINE"-pc-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-pc-linux-$LIBC + ;; ia64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; k1om:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:cos:*:*) + GUESS=$UNAME_MACHINE-unknown-cos + ;; + kvx:mbr:*:*) + GUESS=$UNAME_MACHINE-unknown-mbr + ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m32r*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m68*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; mips:Linux:*:* | mips64:Linux:*:*) set_cc_for_build IS_GLIBC=0 @@ -1033,123 +1130,135 @@ EOF #endif #endif EOF - eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`" + cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` + eval "$cc_set_vars" test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; openrisc*:Linux:*:*) - echo or1k-unknown-linux-"$LIBC" - exit ;; + GUESS=or1k-unknown-linux-$LIBC + ;; or32:Linux:*:* | or1k*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; padre:Linux:*:*) - echo sparc-unknown-linux-"$LIBC" - exit ;; + GUESS=sparc-unknown-linux-$LIBC + ;; parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-"$LIBC" - exit ;; + GUESS=hppa64-unknown-linux-$LIBC + ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; - PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; - *) echo hppa-unknown-linux-"$LIBC" ;; + PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; + PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; + *) GUESS=hppa-unknown-linux-$LIBC ;; esac - exit ;; + ;; ppc64:Linux:*:*) - echo powerpc64-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc64-unknown-linux-$LIBC + ;; ppc:Linux:*:*) - echo powerpc-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc-unknown-linux-$LIBC + ;; ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc64le-unknown-linux-$LIBC + ;; ppcle:Linux:*:*) - echo powerpcle-unknown-linux-"$LIBC" - exit ;; - riscv32:Linux:*:* | riscv64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpcle-unknown-linux-$LIBC + ;; + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; s390:Linux:*:* | s390x:Linux:*:*) - echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-ibm-linux-$LIBC + ;; sh64*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sh*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; tile*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; vax:Linux:*:*) - echo "$UNAME_MACHINE"-dec-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-dec-linux-$LIBC + ;; x86_64:Linux:*:*) set_cc_for_build + CPU=$UNAME_MACHINE LIBCABI=$LIBC if test "$CC_FOR_BUILD" != no_compiler_found; then - if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_X32 >/dev/null - then - LIBCABI="$LIBC"x32 - fi + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __i386__ + ABI=x86 + #else + #ifdef __ILP32__ + ABI=x32 + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + x86) CPU=i686 ;; + x32) LIBCABI=${LIBC}x32 ;; + esac fi - echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI" - exit ;; + GUESS=$CPU-pc-linux-$LIBCABI + ;; xtensa*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; + GUESS=i386-sequent-sysv4 + ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. - echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" - exit ;; + GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION + ;; i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility + # If we were able to find 'uname', then EMX Unix compatibility # is probably installed. - echo "$UNAME_MACHINE"-pc-os2-emx - exit ;; + GUESS=$UNAME_MACHINE-pc-os2-emx + ;; i*86:XTS-300:*:STOP) - echo "$UNAME_MACHINE"-unknown-stop - exit ;; + GUESS=$UNAME_MACHINE-unknown-stop + ;; i*86:atheos:*:*) - echo "$UNAME_MACHINE"-unknown-atheos - exit ;; + GUESS=$UNAME_MACHINE-unknown-atheos + ;; i*86:syllable:*:*) - echo "$UNAME_MACHINE"-pc-syllable - exit ;; + GUESS=$UNAME_MACHINE-pc-syllable + ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=i386-unknown-lynxos$UNAME_RELEASE + ;; i*86:*DOS:*:*) - echo "$UNAME_MACHINE"-pc-msdosdjgpp - exit ;; + GUESS=$UNAME_MACHINE-pc-msdosdjgpp + ;; i*86:*:4.*:*) UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" + GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL else - echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" + GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL fi - exit ;; + ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in @@ -1157,12 +1266,12 @@ EOF *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac - echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}" - exit ;; + GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 @@ -1172,11 +1281,11 @@ EOF && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 - echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" + GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL else - echo "$UNAME_MACHINE"-pc-sysv32 + GUESS=$UNAME_MACHINE-pc-sysv32 fi - exit ;; + ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about @@ -1184,31 +1293,31 @@ EOF # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; + GUESS=i586-pc-msdosdjgpp + ;; Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; + GUESS=i386-pc-mach3 + ;; paragon:*:*:*) - echo i860-intel-osf1 - exit ;; + GUESS=i860-intel-osf1 + ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 + GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 + GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 fi - exit ;; + ;; mini*:CTIX:SYS*5:*) # "miniframe" - echo m68010-convergent-sysv - exit ;; + GUESS=m68010-convergent-sysv + ;; mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; + GUESS=m68k-convergent-sysv + ;; M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; + GUESS=m68k-diab-dnix + ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) @@ -1233,116 +1342,119 @@ EOF /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=m68k-unknown-lynxos$UNAME_RELEASE + ;; mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; + GUESS=m68k-atari-sysv4 + ;; TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=sparc-unknown-lynxos$UNAME_RELEASE + ;; rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=rs6000-unknown-lynxos$UNAME_RELEASE + ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-unknown-lynxos$UNAME_RELEASE + ;; SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv"$UNAME_RELEASE" - exit ;; + GUESS=mips-dde-sysv$UNAME_RELEASE + ;; RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo "$UNAME_MACHINE"-sni-sysv4 + GUESS=$UNAME_MACHINE-sni-sysv4 else - echo ns32k-sni-sysv + GUESS=ns32k-sni-sysv fi - exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + ;; + PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort # says - echo i586-unisys-sysv4 - exit ;; + GUESS=i586-unisys-sysv4 + ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; + GUESS=hppa1.1-stratus-sysv4 + ;; *:*:*:FTX*) # From seanf at swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; + GUESS=i860-stratus-sysv4 + ;; i*86:VOS:*:*) # From Paul.Green at stratus.com. - echo "$UNAME_MACHINE"-stratus-vos - exit ;; + GUESS=$UNAME_MACHINE-stratus-vos + ;; *:VOS:*:*) # From Paul.Green at stratus.com. - echo hppa1.1-stratus-vos - exit ;; + GUESS=hppa1.1-stratus-vos + ;; mc68*:A/UX:*:*) - echo m68k-apple-aux"$UNAME_RELEASE" - exit ;; + GUESS=m68k-apple-aux$UNAME_RELEASE + ;; news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; + GUESS=mips-sony-newsos6 + ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if test -d /usr/nec; then - echo mips-nec-sysv"$UNAME_RELEASE" + GUESS=mips-nec-sysv$UNAME_RELEASE else - echo mips-unknown-sysv"$UNAME_RELEASE" + GUESS=mips-unknown-sysv$UNAME_RELEASE fi - exit ;; + ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; + GUESS=powerpc-be-beos + ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; + GUESS=powerpc-apple-beos + ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; + GUESS=i586-pc-beos + ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; - x86_64:Haiku:*:*) - echo x86_64-unknown-haiku - exit ;; + GUESS=i586-pc-haiku + ;; + ppc:Haiku:*:*) # Haiku running on Apple PowerPC + GUESS=powerpc-apple-haiku + ;; + *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat) + GUESS=$UNAME_MACHINE-unknown-haiku + ;; SX-4:SUPER-UX:*:*) - echo sx4-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx4-nec-superux$UNAME_RELEASE + ;; SX-5:SUPER-UX:*:*) - echo sx5-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx5-nec-superux$UNAME_RELEASE + ;; SX-6:SUPER-UX:*:*) - echo sx6-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx6-nec-superux$UNAME_RELEASE + ;; SX-7:SUPER-UX:*:*) - echo sx7-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx7-nec-superux$UNAME_RELEASE + ;; SX-8:SUPER-UX:*:*) - echo sx8-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx8-nec-superux$UNAME_RELEASE + ;; SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx8r-nec-superux$UNAME_RELEASE + ;; SX-ACE:SUPER-UX:*:*) - echo sxace-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sxace-nec-superux$UNAME_RELEASE + ;; Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-apple-rhapsody$UNAME_RELEASE + ;; *:Rhapsody:*:*) - echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE + ;; arm64:Darwin:*:*) - echo aarch64-apple-darwin"$UNAME_RELEASE" - exit ;; + GUESS=aarch64-apple-darwin$UNAME_RELEASE + ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in @@ -1378,109 +1490,122 @@ EOF # uname -m returns i386 or x86_64 UNAME_PROCESSOR=$UNAME_MACHINE fi - echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE + ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi - echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE + ;; *:QNX:*:4*) - echo i386-pc-qnx - exit ;; + GUESS=i386-pc-qnx + ;; NEO-*:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=neo-tandem-nsk$UNAME_RELEASE + ;; NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nse-tandem-nsk$UNAME_RELEASE + ;; NSR-*:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsr-tandem-nsk$UNAME_RELEASE + ;; NSV-*:NONSTOP_KERNEL:*:*) - echo nsv-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsv-tandem-nsk$UNAME_RELEASE + ;; NSX-*:NONSTOP_KERNEL:*:*) - echo nsx-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsx-tandem-nsk$UNAME_RELEASE + ;; *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; + GUESS=mips-compaq-nonstopux + ;; BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; + GUESS=bs2000-siemens-sysv + ;; DS/*:UNIX_System_V:*:*) - echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE + ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - # shellcheck disable=SC2154 - if test "$cputype" = 386; then + if test "${cputype-}" = 386; then UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" + elif test "x${cputype-}" != x; then + UNAME_MACHINE=$cputype fi - echo "$UNAME_MACHINE"-unknown-plan9 - exit ;; + GUESS=$UNAME_MACHINE-unknown-plan9 + ;; *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; + GUESS=pdp10-unknown-tops10 + ;; *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; + GUESS=pdp10-unknown-tenex + ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; + GUESS=pdp10-dec-tops20 + ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; + GUESS=pdp10-xkl-tops20 + ;; *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; + GUESS=pdp10-unknown-tops20 + ;; *:ITS:*:*) - echo pdp10-unknown-its - exit ;; + GUESS=pdp10-unknown-its + ;; SEI:*:*:SEIUX) - echo mips-sei-seiux"$UNAME_RELEASE" - exit ;; + GUESS=mips-sei-seiux$UNAME_RELEASE + ;; *:DragonFly:*:*) - echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" - exit ;; + DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL + ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "$UNAME_MACHINE" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; + case $UNAME_MACHINE in + A*) GUESS=alpha-dec-vms ;; + I*) GUESS=ia64-dec-vms ;; + V*) GUESS=vax-dec-vms ;; esac ;; *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; + GUESS=i386-pc-xenix + ;; i*86:skyos:*:*) - echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" - exit ;; + SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` + GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL + ;; i*86:rdos:*:*) - echo "$UNAME_MACHINE"-pc-rdos - exit ;; - i*86:AROS:*:*) - echo "$UNAME_MACHINE"-pc-aros - exit ;; + GUESS=$UNAME_MACHINE-pc-rdos + ;; + i*86:Fiwix:*:*) + GUESS=$UNAME_MACHINE-pc-fiwix + ;; + *:AROS:*:*) + GUESS=$UNAME_MACHINE-unknown-aros + ;; x86_64:VMkernel:*:*) - echo "$UNAME_MACHINE"-unknown-esx - exit ;; + GUESS=$UNAME_MACHINE-unknown-esx + ;; amd64:Isilon\ OneFS:*:*) - echo x86_64-unknown-onefs - exit ;; + GUESS=x86_64-unknown-onefs + ;; *:Unleashed:*:*) - echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE + ;; + *:Ironclad:*:*) + GUESS=$UNAME_MACHINE-unknown-ironclad + ;; esac +# Do we have a guess based on uname results? +if test "x$GUESS" != x; then + echo "$GUESS" + exit +fi + # No uname command or uname output not recognized. set_cc_for_build cat > "$dummy.c" </dev/null && SYSTEM_NAME=`$dummy` && +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. @@ -1620,7 +1745,7 @@ test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } echo "$0: unable to guess system type" >&2 -case "$UNAME_MACHINE:$UNAME_SYSTEM" in +case $UNAME_MACHINE:$UNAME_SYSTEM in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&2 <&2 + echo "Invalid configuration '$1': more than four components" >&2 exit 1 ;; *-*-*-*) @@ -134,7 +145,8 @@ case $1 in nto-qnx* | linux-* | uclinux-uclibc* \ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ - | storm-chaos* | os2-emx* | rtmk-nova*) + | storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \ + | windows-* ) basic_machine=$field1 basic_os=$maybe_os ;; @@ -163,6 +175,10 @@ case $1 in basic_machine=$field1 basic_os=$field2 ;; + zephyr*) + basic_machine=$field1-unknown + basic_os=$field2 + ;; # Manufacturers dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ @@ -922,11 +938,13 @@ case $basic_machine in *-*) # shellcheck disable=SC2162 + saved_IFS=$IFS IFS="-" read cpu vendor <&2 + echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2 exit 1 ;; esac @@ -1278,34 +1287,45 @@ esac # Decode manufacturer-specific aliases for certain operating systems. -if test x$basic_os != x +if test x"$basic_os" != x then -# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just +# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just # set os. +obj= case $basic_os in gnu/linux*) kernel=linux - os=`echo $basic_os | sed -e 's|gnu/linux|gnu|'` + os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` + ;; + os2-emx) + kernel=os2 + os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` ;; nto-qnx*) kernel=nto - os=`echo $basic_os | sed -e 's|nto-qnx|qnx|'` + os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` ;; *-*) # shellcheck disable=SC2162 + saved_IFS=$IFS IFS="-" read kernel os <&2 + fi + ;; + *) + echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 + exit 1 + ;; +esac + +case $obj in + aout* | coff* | elf* | pe*) + ;; + '') + # empty is fine + ;; *) - echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 + echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 + exit 1 + ;; +esac + +# Here we handle the constraint that a (synthetic) cpu and os are +# valid only in combination with each other and nowhere else. +case $cpu-$os in + # The "javascript-unknown-ghcjs" triple is used by GHC; we + # accept it here in order to tolerate that, but reject any + # variations. + javascript-ghcjs) + ;; + javascript-* | *-ghcjs) + echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2 exit 1 ;; esac # As a final step for OS-related things, validate the OS-kernel combination # (given a valid OS), if there is a kernel. -case $kernel-$os in - linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* ) +case $kernel-$os-$obj in + linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ + | linux-mlibc*- | linux-musl*- | linux-newlib*- \ + | linux-relibc*- | linux-uclibc*- ) ;; - uclinux-uclibc* ) + uclinux-uclibc*- ) ;; - -dietlibc* | -newlib* | -musl* | -uclibc* ) + managarm-mlibc*- | managarm-kernel*- ) + ;; + windows*-msvc*-) + ;; + -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \ + | -uclibc*- ) # These are just libc implementations, not actual OSes, and thus # require a kernel. - echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 + echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 exit 1 ;; - kfreebsd*-gnu* | kopensolaris*-gnu*) + -kernel*- ) + echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 + exit 1 ;; - nto-qnx*) + *-kernel*- ) + echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 + exit 1 ;; - *-eabi* | *-gnueabi*) + *-msvc*- ) + echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 + exit 1 + ;; + kfreebsd*-gnu*- | kopensolaris*-gnu*-) + ;; + vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) + ;; + nto-qnx*-) + ;; + os2-emx-) ;; - -*) + *-eabi*- | *-gnueabi*-) + ;; + none--*) + # None (no kernel, i.e. freestanding / bare metal), + # can be paired with an machine code file format + ;; + -*-) # Blank kernel with real OS is always fine. ;; - *-*) - echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 + --*) + # Blank kernel and OS with real machine code file format is always fine. + ;; + *-*-*) + echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2 exit 1 ;; esac @@ -1836,7 +1960,7 @@ case $vendor in ;; esac -echo "$cpu-$vendor-${kernel:+$kernel-}$os" +echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" exit # Local variables: -- 2.30.2 From thomas.petazzoni at bootlin.com Tue May 14 08:23:18 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 14 May 2024 10:23:18 +0200 Subject: [Buildroot] [PATCH v1 1/3] package/go-bootstrap-stage2: bump version to go1.19.13 In-Reply-To: <20240307015107.2908128-1-christian@aperture.us> References: <20240307015107.2908128-1-christian@aperture.us> Message-ID: <20240514102318.1cdeba18@windsurf> Hello Christian, On Wed, 6 Mar 2024 17:51:05 -0800 Christian Stewart via buildroot wrote: > Update to the latest 1.19.x version available. > > Signed-off-by: Christian Stewart > --- > package/go-bootstrap-stage2/go-bootstrap-stage2.hash | 2 +- > package/go-bootstrap-stage2/go-bootstrap-stage2.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) I don't think it's this patch causing the issue, but we have a Go build failure in our Gitlab CI: https://gitlab.com/buildroot.org/buildroot/-/jobs/6833307823 Could you have a look? Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Tue May 14 08:58:00 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Tue, 14 May 2024 10:58:00 +0200 Subject: [Buildroot] [PATCH] docs, package/gcc: switch to Gitlab issue tracker Message-ID: <20240514085801.3202503-1-thomas.petazzoni@bootlin.com> Our Bugzilla is so slow and unstable that it has become unusable. Let's switch to using the Gitlab issue tracker instead. There are still lots of references to the Bugzilla bug tracker in our News page at https://buildroot.org/news.html, but these are for older news. Signed-off-by: Thomas Petazzoni --- docs/manual/contribute.adoc | 2 +- docs/manual/resources.adoc | 2 +- docs/website/contribute.html | 2 +- docs/website/support.html | 5 +++-- package/gcc/gcc.mk | 2 +- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/manual/contribute.adoc b/docs/manual/contribute.adoc index 6ff6c15314..c88035597e 100644 --- a/docs/manual/contribute.adoc +++ b/docs/manual/contribute.adoc @@ -25,7 +25,7 @@ for more information on obtaining a Buildroot git tree. === Reproducing, analyzing and fixing bugs A first way of contributing is to have a look at the open bug reports in -the https://bugs.buildroot.org/buglist.cgi?product=buildroot[Buildroot bug +the https://gitlab.com/buildroot.org/buildroot/-/issues[Buildroot bug tracker]. As we strive to keep the bug count as small as possible, all help in reproducing, analyzing and fixing reported bugs is more than welcome. Don't hesitate to add a comment to bug reports reporting your diff --git a/docs/manual/resources.adoc b/docs/manual/resources.adoc index 68b7eb9062..4ef709c317 100644 --- a/docs/manual/resources.adoc +++ b/docs/manual/resources.adoc @@ -40,7 +40,7 @@ better as it will reach more people, both developers and users. Bug tracker:: + Bugs in Buildroot can be reported via the mailing list or alternatively -via the https://bugs.buildroot.org/buglist.cgi?product=buildroot[Buildroot +via the https://gitlab.com/buildroot.org/buildroot/-/issues[Buildroot bugtracker]. Please refer to xref:reporting-bugs[] before creating a bug report. diff --git a/docs/website/contribute.html b/docs/website/contribute.html index aa1cf93f1b..95028ee788 100644 --- a/docs/website/contribute.html +++ b/docs/website/contribute.html @@ -13,7 +13,7 @@
  • Reproducing, analyzing and fixing bugs from our - bug tracker
  • + bug tracker
  • Analyzing and fixing autobuild failures
  • Reviewing and testing patches sent by other developers. See the diff --git a/docs/website/support.html b/docs/website/support.html index 28873c6d76..75551b770e 100644 --- a/docs/website/support.html +++ b/docs/website/support.html @@ -80,8 +80,9 @@
-

If you think you found a bug in Buildroot, you can use the - Bug Tracker to post your bugs and/or +

If you think you found a bug in Buildroot, you + can use the + Bug Tracker to post your bugs and/or participate to find solutions to existing problems.

Note: patches are only accepted through the mailing list.

diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk index 672f9472a9..e4780353cb 100644 --- a/package/gcc/gcc.mk +++ b/package/gcc/gcc.mk @@ -83,7 +83,7 @@ HOST_GCC_COMMON_CONF_OPTS = \ --with-mpc=$(HOST_DIR) \ --with-mpfr=$(HOST_DIR) \ --with-pkgversion="Buildroot $(BR2_VERSION_FULL)" \ - --with-bugurl="http://bugs.buildroot.net/" \ + --with-bugurl="https://gitlab.com/buildroot.org/buildroot/-/issues" \ --without-zstd ifeq ($(BR2_REPRODUCIBLE),y) -- 2.45.0 From andreas.hilse at googlemail.com Tue May 14 09:33:07 2024 From: andreas.hilse at googlemail.com (Andreas Hilse) Date: Tue, 14 May 2024 11:33:07 +0200 Subject: [Buildroot] [PATCH] linux-pam: add patch for spurious password expires in 0 days warning In-Reply-To: <20240513231942.2dd93919@windsurf> References: <20240327140125.154985-1-andreas.hilse@gmail.com> <20240513231942.2dd93919@windsurf> Message-ID: Hello Thomas, There is already a new version 1.6.1 released by linux-pam that contains the bugfix. I guess updating directly would be better. What do you think? Thanks! From andreas.hilse at googlemail.com Tue May 14 09:35:48 2024 From: andreas.hilse at googlemail.com (Andreas Hilse) Date: Tue, 14 May 2024 11:35:48 +0200 Subject: [Buildroot] [PATCH] linux-pam: add patch for spurious password expires in 0 days warning In-Reply-To: References: <20240327140125.154985-1-andreas.hilse@gmail.com> <20240513231942.2dd93919@windsurf> Message-ID: Hello Thomas, Ignore my last mail, the version bump to 1.6.1 has already been committed to master. Thanks! On Tue, May 14, 2024 at 11:33?AM Andreas Hilse wrote: > > Hello Thomas, > > There is already a new version 1.6.1 released by linux-pam that > contains the bugfix. I guess updating directly would be better. > What do you think? > > Thanks! -- Mit freundlichen Gruessen Andreas Hilse From marleen.vos at essensium.com Tue May 14 10:12:44 2024 From: marleen.vos at essensium.com (marleen.vos at essensium.com) Date: Tue, 14 May 2024 12:12:44 +0200 Subject: [Buildroot] [PATCH 1/1] configs/avenger96_defconfig: fix CI build error due to a missing package for uboot Message-ID: <20240514101244.1067520-1-marleen.vos@mind.be> From: Marleen Vos This refers to https://gitlab.com/buildroot.org/buildroot/-/jobs/6813124907 The build error referenced in that link is: error: command 'swig' failed: No such file or directory make[4]: *** [scripts/dtc/pylibfdt/Makefile:33: rebuild] Error 1 make[3]: *** [scripts/Makefile.build:397: scripts/dtc/pylibfdt] Error 2 make[2]: *** [Makefile:2014: scripts_dtc] Error 2 make[1]: *** [package/pkg-generic.mk:283: /builds/buildroot.org/buildroot/output/build/uboot-2024.01/.stamp_built] Error 2 make: *** [Makefile:82: _all] Error 2 BR2_TARGET_UBOOT_NEEDS_PYLIBFDT is added to the avenger96_defconfig in order to resolve the issue Signed-off-by: Marleen Vos --- configs/avenger96_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/avenger96_defconfig b/configs/avenger96_defconfig index f73b654dc8..64cfb3c2b0 100644 --- a/configs/avenger96_defconfig +++ b/configs/avenger96_defconfig @@ -47,6 +47,7 @@ BR2_TARGET_UBOOT_FORMAT_DTB=y BR2_TARGET_UBOOT_FORMAT_CUSTOM=y BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=stm32mp15xx-dhcor-avenger96" +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y # Additional tools BR2_PACKAGE_HOST_GENIMAGE=y -- 2.34.1 From troglobit at gmail.com Tue May 14 10:36:29 2024 From: troglobit at gmail.com (Joachim Wiberg) Date: Tue, 14 May 2024 12:36:29 +0200 Subject: [Buildroot] [PATCH 1/1] package/hostapd: drop duplicate host-pkgconf dependency Message-ID: <20240514103629.2002634-1-troglobit@gmail.com> host-pkgconf already defined as dependency in package ingress. Signed-off-by: Joachim Wiberg --- package/hostapd/hostapd.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/hostapd/hostapd.mk b/package/hostapd/hostapd.mk index 8981d9247e..5756510e1d 100644 --- a/package/hostapd/hostapd.mk +++ b/package/hostapd/hostapd.mk @@ -25,7 +25,7 @@ HOSTAPD_CONFIG_DISABLE = # Try to use openssl if it's already available ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) -HOSTAPD_DEPENDENCIES += host-pkgconf libopenssl +HOSTAPD_DEPENDENCIES += libopenssl HOSTAPD_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs openssl` HOSTAPD_CONFIG_EDITS += 's/\#\(CONFIG_TLS=openssl\)/\1/' else -- 2.34.1 From christian at aperture.us Tue May 14 11:39:46 2024 From: christian at aperture.us (Christian Stewart) Date: Tue, 14 May 2024 04:39:46 -0700 Subject: [Buildroot] [PATCH v1 1/3] package/go-bootstrap-stage2: bump version to go1.19.13 In-Reply-To: <20240514102318.1cdeba18@windsurf> References: <20240307015107.2908128-1-christian@aperture.us> <20240514102318.1cdeba18@windsurf> Message-ID: Hi Thomas, On Tue, May 14, 2024, 1:23?AM Thomas Petazzoni wrote: > Hello Christian, > > On Wed, 6 Mar 2024 17:51:05 -0800 > Christian Stewart via buildroot wrote: > > > Update to the latest 1.19.x version available. > > > > Signed-off-by: Christian Stewart > > --- > > package/go-bootstrap-stage2/go-bootstrap-stage2.hash | 2 +- > > package/go-bootstrap-stage2/go-bootstrap-stage2.mk | 2 +- > > 2 files changed, 2 insertions(+), 2 deletions(-) > > I don't think it's this patch causing the issue, but we have a Go build > failure in our Gitlab CI: > > https://gitlab.com/buildroot.org/buildroot/-/jobs/6833307823 > > Could you have a look? > This looks like we need to pass -buildvcs=false to Go. I'll have a look at submitting a patch for this. Thanks, Christian Stewart -------------- next part -------------- An HTML attachment was scrubbed... URL: From bonet at grenoble.cnrs.fr Tue May 14 12:22:59 2024 From: bonet at grenoble.cnrs.fr (Edgar Bonet) Date: Tue, 14 May 2024 14:22:59 +0200 Subject: [Buildroot] [PATCH 1/1] board/acmesystems/acqua-a5: fix hash of at91bootstrap3 Message-ID: Commit 5b847f88fef7 (board: update hashes for generated achives) updated the file board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash by changing the file name suffix: -git3.tar.gz -> -git4.tar.gz. It did not, however, update the hash itself. Do it now. Fixes: 5b847f88fef768c8e79422db4193533b3a7488ea Signed-off-by: Edgar Bonet --- .../acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash b/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash index 3734f22c95..6edf3d3345 100644 --- a/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash +++ b/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 fef34111a07d9e5aa97b0840355a367f806a17e029583830e9deaa747ce47824 at91bootstrap3-v3.10.3-git4.tar.gz +sha256 5ea2a8fed1ba0024229c6f6d77176679e1b24791bdbce8e285634013d4a93551 at91bootstrap3-v3.10.3-git4.tar.gz -- 2.34.1 From yann.morin.1998 at free.fr Tue May 14 15:33:17 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Tue, 14 May 2024 17:33:17 +0200 Subject: [Buildroot] [git commit] package: fix filename/hashes of Cargo-fetched packages Message-ID: <20240514153349.4C493873AE@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=1dace793ba11fc45c6ae7842a84daa4612ad4279 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Commit de5ed8021269e18070b92def5df10f9157bc2085 ("{boot, package}: update hashes for generated archives") forgot to update the filename and hashes of Cargo-fetched packages. This commit therefore updates the incorrect filenames and hashes. It allows to run: make bat-legal-info \ dust-legal-info \ eza-legal-info \ hyperfine-legal-info \ nushell-legal-info \ procs-legal-info \ ripgrep-legal-info \ host-rust-bindgen-legal-info \ host-sentry-cli-legal-info \ tealdeer-legal-info successfully. Also fixes: http://autobuild.buildroot.net/results/1ff5ccf5ee6029669af1413c95827f670ae212b3/ (dust) http://autobuild.buildroot.net/results/f887adebe611f0021d5ee85acb95cced7c8b71c0/ (sentry-cli) http://autobuild.buildroot.net/results/b95093c618eafeb3726513a3ef6199488406093d/ (bat) (and probably some other similar issues) Cc: Yann E. MORIN Cc: Arnout Vandecappelle Signed-off-by: Thomas Petazzoni Signed-off-by: Yann E. MORIN --- package/bat/bat.hash | 2 +- package/dust/dust.hash | 2 +- package/eza/eza.hash | 2 +- package/hyperfine/hyperfine.hash | 2 +- package/nushell/nushell.hash | 2 +- package/procs/procs.hash | 2 +- package/ripgrep/ripgrep.hash | 2 +- package/rust-bindgen/rust-bindgen.hash | 2 +- package/sentry-cli/sentry-cli.hash | 2 +- package/tealdeer/tealdeer.hash | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package/bat/bat.hash b/package/bat/bat.hash index 775838d921..e80301ff49 100644 --- a/package/bat/bat.hash +++ b/package/bat/bat.hash @@ -1,4 +1,4 @@ # Locally generated -sha256 6a32062aeb76b8d7d4cffbb5b267818ee1f35149af0c35fdb8999cea63e65854 bat-0.24.0-cargo1.tar.gz +sha256 45fcdd6076dc1b45698a7b6c0f4d1f5d9ae676f3ca3b155402ad24680d5b4df6 bat-0.24.0-cargo2.tar.gz sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE-APACHE sha256 dccda9eb9533f5c65624a1106536c6cfde46008d58e60b3faf154e8b9fd5b46e LICENSE-MIT diff --git a/package/dust/dust.hash b/package/dust/dust.hash index 0b2f123080..975ec9664d 100644 --- a/package/dust/dust.hash +++ b/package/dust/dust.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 fffe56f60bb596213edcd054f45e3b611c4b9b7861ff4a1bb9e0721012474032 dust-0.9.0-cargo1.tar.gz +sha256 ace29e85647e7079f9eaa066da9b1368c7200233eb0814442499948b5adeb028 dust-0.9.0-cargo2.tar.gz sha256 aee6e2d13d3a55c7881630c09b41ca7b3b44bb1437b5d36695d22decc3655160 LICENSE diff --git a/package/eza/eza.hash b/package/eza/eza.hash index ddc23f50e2..8765261e7e 100644 --- a/package/eza/eza.hash +++ b/package/eza/eza.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 925347e190028308e8105d5c6aef395fd73cd3ceec2df2bf35b285101e75bf3b eza-0.18.8-cargo1.tar.gz +sha256 709507bd46c1e1c4c14d6e34266355d78ae21fe2525f8bf42089cab36ebf0134 eza-0.18.8-cargo2.tar.gz sha256 2762990c7fbba9d550802a2593c1d857dcd52596bb0f9f192a97e9a7ac5f4f9e LICENCE diff --git a/package/hyperfine/hyperfine.hash b/package/hyperfine/hyperfine.hash index 6806bda9c8..88b8710125 100644 --- a/package/hyperfine/hyperfine.hash +++ b/package/hyperfine/hyperfine.hash @@ -1,4 +1,4 @@ # Locally computed -sha256 e4a945fcd08e93fed47e542383942874960a893a94a60758b7bd208821c623f5 hyperfine-1.18.0-cargo1.tar.gz +sha256 6cbe5673729ba7fd7a1b0b19a54630f93f4fcc29ea7878845f17931d31cd16fb hyperfine-1.18.0-cargo2.tar.gz sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE-APACHE sha256 1dfee18c2ff07ce551de4d6a1d2db158c0380746b488a7f0d08c8e0d3568b7c3 LICENSE-MIT diff --git a/package/nushell/nushell.hash b/package/nushell/nushell.hash index 2fe48557da..c125a6c652 100644 --- a/package/nushell/nushell.hash +++ b/package/nushell/nushell.hash @@ -1,3 +1,3 @@ # Locally generated -sha256 9518d79a04b374c23d4523252080b176e835050b3c6ef8243ee54411a8f8cba4 nushell-0.85.0-cargo1.tar.gz +sha256 9175b7e25a93a35c4f2690a63e7c36ac2dc31a9d762f59de01aac8ac1075b02f nushell-0.85.0-cargo2.tar.gz sha256 2dc1f03f729c21902d869b4d8f8dc528fc730f4c6ad83fc128672bda0ad69196 LICENSE diff --git a/package/procs/procs.hash b/package/procs/procs.hash index e4e3764976..da6b4377e2 100644 --- a/package/procs/procs.hash +++ b/package/procs/procs.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 fe93b0ace885e1342870b49b2ee64f0862fd799395740e5c549f2fd67d14d944 procs-0.14.5-cargo1.tar.gz +sha256 86715967bd378a4c0330708e11714bda2c8ce9f757fb3006073238d77e83e6e1 procs-0.14.5-cargo2.tar.gz sha256 feb87a2e0c305de3464cc44077da5393c52d8ca6362d37427157d04ec6f4510d LICENSE diff --git a/package/ripgrep/ripgrep.hash b/package/ripgrep/ripgrep.hash index c1241106b7..39165770dc 100644 --- a/package/ripgrep/ripgrep.hash +++ b/package/ripgrep/ripgrep.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 e3165367d5d613294f4c47dbb28ac59cda5465529e85bbc7243355e04be376de ripgrep-14.1.0-cargo1.tar.gz +sha256 7e1e66e2e9a7290a0a9445a82886a678ee8b2583b296fb851e1472c7403a681a ripgrep-14.1.0-cargo2.tar.gz sha256 0f96a83840e146e43c0ec96a22ec1f392e0680e6c1226e6f3ba87e0740af850f LICENSE-MIT diff --git a/package/rust-bindgen/rust-bindgen.hash b/package/rust-bindgen/rust-bindgen.hash index 17e6d82337..7b222e577f 100644 --- a/package/rust-bindgen/rust-bindgen.hash +++ b/package/rust-bindgen/rust-bindgen.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 23951b867ea4e24d49e3f74855300e1050ccacb86bca86005ce3307bfc761342 rust-bindgen-0.65.1-cargo1.tar.gz +sha256 618a92ac5e0e855a4e5cb16fb71258c4859679f3f7d7d95c7150e8b09cbbfbde rust-bindgen-0.65.1-cargo2.tar.gz sha256 c23953d9deb0a3312dbeaf6c128a657f3591acee45067612fa68405eaa4525db LICENSE diff --git a/package/sentry-cli/sentry-cli.hash b/package/sentry-cli/sentry-cli.hash index ff2684d110..0335c57cb3 100644 --- a/package/sentry-cli/sentry-cli.hash +++ b/package/sentry-cli/sentry-cli.hash @@ -1,3 +1,3 @@ # locally calculated -sha256 b31e66d4d0e65d9903c50c69565638f16db06420248d65d3d7bd955dc68d829c sentry-cli-2.20.3-cargo1.tar.gz +sha256 997581bca5bdb6f7540ea9d6e1d25f0e9df06fcc338d26ed75fc81f9401d65d4 sentry-cli-2.20.3-cargo2.tar.gz sha256 9503def7b54ceb6e3cd182fd59bc05d3a30d7eae481e65aaba4b495133c83c14 LICENSE diff --git a/package/tealdeer/tealdeer.hash b/package/tealdeer/tealdeer.hash index 94049567be..f5493ec8eb 100644 --- a/package/tealdeer/tealdeer.hash +++ b/package/tealdeer/tealdeer.hash @@ -1,4 +1,4 @@ # Locally generated -sha256 cf4999339cda32314ca42f4553440baa07fdf698e0a6ec254cbc25297f1e603a tealdeer-1.6.1-cargo1.tar.gz +sha256 f0be09eed89d25e44f954e9c25476176d9e4acc15171ae93b5977d7f244851ba tealdeer-1.6.1-cargo2.tar.gz sha256 62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a LICENSE-APACHE sha256 a313b5e62b80a08f3aae0fa62ff3de8482ef55247299eb352ab44f87ef456b1b LICENSE-MIT From yann.morin.1998 at free.fr Tue May 14 15:35:18 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Tue, 14 May 2024 17:35:18 +0200 Subject: [Buildroot] [PATCH] package: fix filename/hashes of Cargo-fetched packages In-Reply-To: <20240514074945.2885400-1-thomas.petazzoni@bootlin.com> References: <20240514074945.2885400-1-thomas.petazzoni@bootlin.com> Message-ID: Thomas, All, On 2024-05-14 09:49 +0200, Thomas Petazzoni spake thusly: > Commit de5ed8021269e18070b92def5df10f9157bc2085 ("{boot, package}: > update hashes for generated archives") forgot to update the filename > and hashes of Cargo-fetched packages. No idea how on Earth I totally missed that... :-/ > This commit therefore updates the incorrect filenames and hashes. It > allows to run: > > make bat-legal-info \ > dust-legal-info \ > eza-legal-info \ > hyperfine-legal-info \ > nushell-legal-info \ > procs-legal-info \ > ripgrep-legal-info \ > host-rust-bindgen-legal-info \ > host-sentry-cli-legal-info \ > tealdeer-legal-info > > successfully. > > Also fixes: > > http://autobuild.buildroot.net/results/1ff5ccf5ee6029669af1413c95827f670ae212b3/ (dust) > http://autobuild.buildroot.net/results/f887adebe611f0021d5ee85acb95cced7c8b71c0/ (sentry-cli) > http://autobuild.buildroot.net/results/b95093c618eafeb3726513a3ef6199488406093d/ (bat) > (and probably some other similar issues) > > Cc: Yann E. MORIN > Cc: Arnout Vandecappelle > Signed-off-by: Thomas Petazzoni Applied to master, thanks for cleaning up after my mess... Regards, Yann E. MORIN. > --- > package/bat/bat.hash | 2 +- > package/dust/dust.hash | 2 +- > package/eza/eza.hash | 2 +- > package/hyperfine/hyperfine.hash | 2 +- > package/nushell/nushell.hash | 2 +- > package/procs/procs.hash | 2 +- > package/ripgrep/ripgrep.hash | 2 +- > package/rust-bindgen/rust-bindgen.hash | 2 +- > package/sentry-cli/sentry-cli.hash | 2 +- > package/tealdeer/tealdeer.hash | 2 +- > 10 files changed, 10 insertions(+), 10 deletions(-) > > diff --git a/package/bat/bat.hash b/package/bat/bat.hash > index 775838d921..e80301ff49 100644 > --- a/package/bat/bat.hash > +++ b/package/bat/bat.hash > @@ -1,4 +1,4 @@ > # Locally generated > -sha256 6a32062aeb76b8d7d4cffbb5b267818ee1f35149af0c35fdb8999cea63e65854 bat-0.24.0-cargo1.tar.gz > +sha256 45fcdd6076dc1b45698a7b6c0f4d1f5d9ae676f3ca3b155402ad24680d5b4df6 bat-0.24.0-cargo2.tar.gz > sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE-APACHE > sha256 dccda9eb9533f5c65624a1106536c6cfde46008d58e60b3faf154e8b9fd5b46e LICENSE-MIT > diff --git a/package/dust/dust.hash b/package/dust/dust.hash > index 0b2f123080..975ec9664d 100644 > --- a/package/dust/dust.hash > +++ b/package/dust/dust.hash > @@ -1,3 +1,3 @@ > # Locally computed > -sha256 fffe56f60bb596213edcd054f45e3b611c4b9b7861ff4a1bb9e0721012474032 dust-0.9.0-cargo1.tar.gz > +sha256 ace29e85647e7079f9eaa066da9b1368c7200233eb0814442499948b5adeb028 dust-0.9.0-cargo2.tar.gz > sha256 aee6e2d13d3a55c7881630c09b41ca7b3b44bb1437b5d36695d22decc3655160 LICENSE > diff --git a/package/eza/eza.hash b/package/eza/eza.hash > index ddc23f50e2..8765261e7e 100644 > --- a/package/eza/eza.hash > +++ b/package/eza/eza.hash > @@ -1,3 +1,3 @@ > # Locally computed > -sha256 925347e190028308e8105d5c6aef395fd73cd3ceec2df2bf35b285101e75bf3b eza-0.18.8-cargo1.tar.gz > +sha256 709507bd46c1e1c4c14d6e34266355d78ae21fe2525f8bf42089cab36ebf0134 eza-0.18.8-cargo2.tar.gz > sha256 2762990c7fbba9d550802a2593c1d857dcd52596bb0f9f192a97e9a7ac5f4f9e LICENCE > diff --git a/package/hyperfine/hyperfine.hash b/package/hyperfine/hyperfine.hash > index 6806bda9c8..88b8710125 100644 > --- a/package/hyperfine/hyperfine.hash > +++ b/package/hyperfine/hyperfine.hash > @@ -1,4 +1,4 @@ > # Locally computed > -sha256 e4a945fcd08e93fed47e542383942874960a893a94a60758b7bd208821c623f5 hyperfine-1.18.0-cargo1.tar.gz > +sha256 6cbe5673729ba7fd7a1b0b19a54630f93f4fcc29ea7878845f17931d31cd16fb hyperfine-1.18.0-cargo2.tar.gz > sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE-APACHE > sha256 1dfee18c2ff07ce551de4d6a1d2db158c0380746b488a7f0d08c8e0d3568b7c3 LICENSE-MIT > diff --git a/package/nushell/nushell.hash b/package/nushell/nushell.hash > index 2fe48557da..c125a6c652 100644 > --- a/package/nushell/nushell.hash > +++ b/package/nushell/nushell.hash > @@ -1,3 +1,3 @@ > # Locally generated > -sha256 9518d79a04b374c23d4523252080b176e835050b3c6ef8243ee54411a8f8cba4 nushell-0.85.0-cargo1.tar.gz > +sha256 9175b7e25a93a35c4f2690a63e7c36ac2dc31a9d762f59de01aac8ac1075b02f nushell-0.85.0-cargo2.tar.gz > sha256 2dc1f03f729c21902d869b4d8f8dc528fc730f4c6ad83fc128672bda0ad69196 LICENSE > diff --git a/package/procs/procs.hash b/package/procs/procs.hash > index e4e3764976..da6b4377e2 100644 > --- a/package/procs/procs.hash > +++ b/package/procs/procs.hash > @@ -1,3 +1,3 @@ > # Locally computed > -sha256 fe93b0ace885e1342870b49b2ee64f0862fd799395740e5c549f2fd67d14d944 procs-0.14.5-cargo1.tar.gz > +sha256 86715967bd378a4c0330708e11714bda2c8ce9f757fb3006073238d77e83e6e1 procs-0.14.5-cargo2.tar.gz > sha256 feb87a2e0c305de3464cc44077da5393c52d8ca6362d37427157d04ec6f4510d LICENSE > diff --git a/package/ripgrep/ripgrep.hash b/package/ripgrep/ripgrep.hash > index c1241106b7..39165770dc 100644 > --- a/package/ripgrep/ripgrep.hash > +++ b/package/ripgrep/ripgrep.hash > @@ -1,3 +1,3 @@ > # Locally calculated > -sha256 e3165367d5d613294f4c47dbb28ac59cda5465529e85bbc7243355e04be376de ripgrep-14.1.0-cargo1.tar.gz > +sha256 7e1e66e2e9a7290a0a9445a82886a678ee8b2583b296fb851e1472c7403a681a ripgrep-14.1.0-cargo2.tar.gz > sha256 0f96a83840e146e43c0ec96a22ec1f392e0680e6c1226e6f3ba87e0740af850f LICENSE-MIT > diff --git a/package/rust-bindgen/rust-bindgen.hash b/package/rust-bindgen/rust-bindgen.hash > index 17e6d82337..7b222e577f 100644 > --- a/package/rust-bindgen/rust-bindgen.hash > +++ b/package/rust-bindgen/rust-bindgen.hash > @@ -1,3 +1,3 @@ > # Locally calculated > -sha256 23951b867ea4e24d49e3f74855300e1050ccacb86bca86005ce3307bfc761342 rust-bindgen-0.65.1-cargo1.tar.gz > +sha256 618a92ac5e0e855a4e5cb16fb71258c4859679f3f7d7d95c7150e8b09cbbfbde rust-bindgen-0.65.1-cargo2.tar.gz > sha256 c23953d9deb0a3312dbeaf6c128a657f3591acee45067612fa68405eaa4525db LICENSE > diff --git a/package/sentry-cli/sentry-cli.hash b/package/sentry-cli/sentry-cli.hash > index ff2684d110..0335c57cb3 100644 > --- a/package/sentry-cli/sentry-cli.hash > +++ b/package/sentry-cli/sentry-cli.hash > @@ -1,3 +1,3 @@ > # locally calculated > -sha256 b31e66d4d0e65d9903c50c69565638f16db06420248d65d3d7bd955dc68d829c sentry-cli-2.20.3-cargo1.tar.gz > +sha256 997581bca5bdb6f7540ea9d6e1d25f0e9df06fcc338d26ed75fc81f9401d65d4 sentry-cli-2.20.3-cargo2.tar.gz > sha256 9503def7b54ceb6e3cd182fd59bc05d3a30d7eae481e65aaba4b495133c83c14 LICENSE > diff --git a/package/tealdeer/tealdeer.hash b/package/tealdeer/tealdeer.hash > index 94049567be..f5493ec8eb 100644 > --- a/package/tealdeer/tealdeer.hash > +++ b/package/tealdeer/tealdeer.hash > @@ -1,4 +1,4 @@ > # Locally generated > -sha256 cf4999339cda32314ca42f4553440baa07fdf698e0a6ec254cbc25297f1e603a tealdeer-1.6.1-cargo1.tar.gz > +sha256 f0be09eed89d25e44f954e9c25476176d9e4acc15171ae93b5977d7f244851ba tealdeer-1.6.1-cargo2.tar.gz > sha256 62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a LICENSE-APACHE > sha256 a313b5e62b80a08f3aae0fa62ff3de8482ef55247299eb352ab44f87ef456b1b LICENSE-MIT > -- > 2.45.0 > -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Tue May 14 15:39:06 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Tue, 14 May 2024 17:39:06 +0200 Subject: [Buildroot] [git commit] board/acmesystems/acqua-a5: fix hash of at91bootstrap3 Message-ID: <20240514153934.BB5BE873BD@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=31c39632856ecd38d3597793e8273786d4f0614f branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Commit 5b847f88fef7 (board: update hashes for generated achives) updated the file board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash by changing the file name suffix: -git3.tar.gz -> -git4.tar.gz. It did not, however, update the hash itself. Do it now. Fixes: 5b847f88fef768c8e79422db4193533b3a7488ea Signed-off-by: Edgar Bonet Signed-off-by: Yann E. MORIN --- board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash b/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash index 3734f22c95..6edf3d3345 100644 --- a/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash +++ b/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 fef34111a07d9e5aa97b0840355a367f806a17e029583830e9deaa747ce47824 at91bootstrap3-v3.10.3-git4.tar.gz +sha256 5ea2a8fed1ba0024229c6f6d77176679e1b24791bdbce8e285634013d4a93551 at91bootstrap3-v3.10.3-git4.tar.gz From yann.morin.1998 at free.fr Tue May 14 15:41:00 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Tue, 14 May 2024 17:41:00 +0200 Subject: [Buildroot] [PATCH 1/1] board/acmesystems/acqua-a5: fix hash of at91bootstrap3 In-Reply-To: References: Message-ID: Edgar, All, On 2024-05-14 14:22 +0200, Edgar Bonet spake thusly: > Commit 5b847f88fef7 (board: update hashes for generated achives) updated > the file > > board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash > > by changing the file name suffix: -git3.tar.gz -> -git4.tar.gz. It did > not, however, update the hash itself. Do it now. I knew I would miss some things here and there. I hoped I wouldd not, but I knew I would... > Fixes: 5b847f88fef768c8e79422db4193533b3a7488ea > Signed-off-by: Edgar Bonet Applied to master, thanks for fixing my mess! Regards, Yann E. MORIN. > --- > .../acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash b/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash > index 3734f22c95..6edf3d3345 100644 > --- a/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash > +++ b/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash > @@ -1,2 +1,2 @@ > # Locally calculated > -sha256 fef34111a07d9e5aa97b0840355a367f806a17e029583830e9deaa747ce47824 at91bootstrap3-v3.10.3-git4.tar.gz > +sha256 5ea2a8fed1ba0024229c6f6d77176679e1b24791bdbce8e285634013d4a93551 at91bootstrap3-v3.10.3-git4.tar.gz > -- > 2.34.1 > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From james.hilliard1 at gmail.com Tue May 14 15:42:50 2024 From: james.hilliard1 at gmail.com (James Hilliard) Date: Tue, 14 May 2024 09:42:50 -0600 Subject: [Buildroot] [PATCH 1/1] package/python-ml-dtypes: skip dependency check Message-ID: <20240514154250.1453970-1-james.hilliard1@gmail.com> This package pins overly strict numpy dependency versions apparently for compatibility reasons that don't appear relevant to buildroot. This package also appears to pin an overly strict setuptools version for unclear reasons. See: https://github.com/jax-ml/ml_dtypes/blob/v0.3.2/pyproject.toml#L51-L55 To fix this lets just set the --skip-dependency-check build option and ignore the build dependency version mismatches since they don't appear to cause any build issues. This error was introduced when we migrated setuptools to pep517 in 8937db8dd595e0988751e5dbb568e870b07b39cc. Signed-off-by: James Hilliard --- package/python-ml-dtypes/python-ml-dtypes.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/package/python-ml-dtypes/python-ml-dtypes.mk b/package/python-ml-dtypes/python-ml-dtypes.mk index 676137ecf1..8097265078 100644 --- a/package/python-ml-dtypes/python-ml-dtypes.mk +++ b/package/python-ml-dtypes/python-ml-dtypes.mk @@ -10,6 +10,7 @@ PYTHON_ML_DTYPES_SITE = https://files.pythonhosted.org/packages/39/7d/8d85fcba86 PYTHON_ML_DTYPES_LICENSE = Apache-2.0 PYTHON_ML_DTYPES_LICENSE_FILES = LICENSE PYTHON_ML_DTYPES_SETUP_TYPE = setuptools +PYTHON_ML_DTYPES_BUILD_OPTS = --skip-dependency-check PYTHON_ML_DTYPES_DEPENDENCIES = \ host-python-numpy \ -- 2.34.1 From yann.morin.1998 at free.fr Tue May 14 15:43:06 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Tue, 14 May 2024 17:43:06 +0200 Subject: [Buildroot] [git commit] configs/avenger96_defconfig: fix CI build error due to a missing package for uboot Message-ID: <20240514154403.D03EE873C2@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=9764258aaf0ef78ffd83e17d26959613b04b2944 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master This refers to https://gitlab.com/buildroot.org/buildroot/-/jobs/6813124907 The build error referenced in that link is: error: command 'swig' failed: No such file or directory make[4]: *** [scripts/dtc/pylibfdt/Makefile:33: rebuild] Error 1 make[3]: *** [scripts/Makefile.build:397: scripts/dtc/pylibfdt] Error 2 make[2]: *** [Makefile:2014: scripts_dtc] Error 2 make[1]: *** [package/pkg-generic.mk:283: /builds/buildroot.org/buildroot/output/build/uboot-2024.01/.stamp_built] Error 2 make: *** [Makefile:82: _all] Error 2 BR2_TARGET_UBOOT_NEEDS_PYLIBFDT is added to the avenger96_defconfig in order to resolve the issue Signed-off-by: Marleen Vos Signed-off-by: Yann E. MORIN --- configs/avenger96_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/avenger96_defconfig b/configs/avenger96_defconfig index f73b654dc8..64cfb3c2b0 100644 --- a/configs/avenger96_defconfig +++ b/configs/avenger96_defconfig @@ -47,6 +47,7 @@ BR2_TARGET_UBOOT_FORMAT_DTB=y BR2_TARGET_UBOOT_FORMAT_CUSTOM=y BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=stm32mp15xx-dhcor-avenger96" +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y # Additional tools BR2_PACKAGE_HOST_GENIMAGE=y From yann.morin.1998 at free.fr Tue May 14 15:49:14 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Tue, 14 May 2024 17:49:14 +0200 Subject: [Buildroot] [PATCH 1/1] configs/avenger96_defconfig: fix CI build error due to a missing package for uboot In-Reply-To: <20240514101244.1067520-1-marleen.vos@mind.be> References: <20240514101244.1067520-1-marleen.vos@mind.be> Message-ID: Marleen, All, On 2024-05-14 12:12 +0200, Marleen Vos via buildroot spake thusly: > From: Marleen Vos > > This refers to https://gitlab.com/buildroot.org/buildroot/-/jobs/6813124907 > The build error referenced in that link is: > > error: command 'swig' failed: No such file or directory > make[4]: *** [scripts/dtc/pylibfdt/Makefile:33: rebuild] Error 1 > make[3]: *** [scripts/Makefile.build:397: scripts/dtc/pylibfdt] Error 2 > make[2]: *** [Makefile:2014: scripts_dtc] Error 2 > make[1]: *** [package/pkg-generic.mk:283: /builds/buildroot.org/buildroot/output/build/uboot-2024.01/.stamp_built] Error 2 > make: *** [Makefile:82: _all] Error 2 > > BR2_TARGET_UBOOT_NEEDS_PYLIBFDT is added to the avenger96_defconfig in order to resolve the issue > > Signed-off-by: Marleen Vos Applied to master, thanks. While you're looking at this defconfig, could look into adding hashes for the custom versions it uses? See for example: 5efa5e9023 configs/armadeus_apf27: add hashes for Linux/U-Boot Regards, Yann E. MORIN. > --- > configs/avenger96_defconfig | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/configs/avenger96_defconfig b/configs/avenger96_defconfig > index f73b654dc8..64cfb3c2b0 100644 > --- a/configs/avenger96_defconfig > +++ b/configs/avenger96_defconfig > @@ -47,6 +47,7 @@ BR2_TARGET_UBOOT_FORMAT_DTB=y > BR2_TARGET_UBOOT_FORMAT_CUSTOM=y > BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" > BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=stm32mp15xx-dhcor-avenger96" > +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y > > # Additional tools > BR2_PACKAGE_HOST_GENIMAGE=y > -- > 2.34.1 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From james.hilliard1 at gmail.com Tue May 14 16:00:51 2024 From: james.hilliard1 at gmail.com (James Hilliard) Date: Tue, 14 May 2024 10:00:51 -0600 Subject: [Buildroot] [PATCH v4 1/1] package/cloudflared: new package Message-ID: <20240514160051.1540342-1-james.hilliard1@gmail.com> Signed-off-by: James Hilliard --- Changes v3 -> v4: - update to version 2024.4.1 Changes v2 -> v3: - fix version Changes v1 -> v2: - fix Config.in syntax/section --- package/Config.in | 1 + package/cloudflared/Config.in | 7 +++++++ package/cloudflared/cloudflared.hash | 3 +++ package/cloudflared/cloudflared.mk | 14 ++++++++++++++ 4 files changed, 25 insertions(+) create mode 100644 package/cloudflared/Config.in create mode 100644 package/cloudflared/cloudflared.hash create mode 100644 package/cloudflared/cloudflared.mk diff --git a/package/Config.in b/package/Config.in index 1b6a5b0dab..db9230bf85 100644 --- a/package/Config.in +++ b/package/Config.in @@ -2386,6 +2386,7 @@ endif source "package/cfm/Config.in" source "package/chrony/Config.in" source "package/civetweb/Config.in" + source "package/cloudflared/Config.in" source "package/connman/Config.in" source "package/connman-gtk/Config.in" source "package/conntrack-tools/Config.in" diff --git a/package/cloudflared/Config.in b/package/cloudflared/Config.in new file mode 100644 index 0000000000..3a1a715dc7 --- /dev/null +++ b/package/cloudflared/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_CLOUDFLARED + bool "cloudflared" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + help + Cloudflare Tunnel client (formerly Argo Tunnel). + + https://github.com/cloudflare/cloudflared diff --git a/package/cloudflared/cloudflared.hash b/package/cloudflared/cloudflared.hash new file mode 100644 index 0000000000..adaf107a22 --- /dev/null +++ b/package/cloudflared/cloudflared.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 11bed2bd793cc03775aa6270797ed328434bc982e09fd3597e267590f28d2436 cloudflared-2024.4.1-go2.tar.gz +sha256 58d1e17ffe5109a7ae296caafcadfdbe6a7d176f0bc4ab01e12a689b0499d8bd LICENSE diff --git a/package/cloudflared/cloudflared.mk b/package/cloudflared/cloudflared.mk new file mode 100644 index 0000000000..819cfd5e64 --- /dev/null +++ b/package/cloudflared/cloudflared.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# cloudflared +# +################################################################################ + +CLOUDFLARED_VERSION = 2024.4.1 +CLOUDFLARED_SITE = $(call github,cloudflare,cloudflared,$(CLOUDFLARED_VERSION)) +CLOUDFLARED_LICENSE = Apache-2.0 +CLOUDFLARED_LICENSE_FILES = LICENSE +CLOUDFLARED_BUILD_TARGETS = cmd/cloudflared +CLOUDFLARED_LDFLAGS = -X main.Version=$(CLOUDFLARED_VERSION) + +$(eval $(golang-package)) -- 2.34.1 From wbx at openadk.org Tue May 14 16:15:11 2024 From: wbx at openadk.org (Waldemar Brodkorb) Date: Tue, 14 May 2024 18:15:11 +0200 Subject: [Buildroot] [PATCHv2 1/3] arch: add support for loongarch64 Message-ID: Loongarch is a RISC microprocessor from Loongarch Technologies. - at the moment we only support lp64d ABI - binutils 2.40 is too old so disable it for loongarch64 - gcc 12.x is too old to compile a Linux kernel, so disable it for loongarch64 - gdb versions work fine Signed-off-by: Waldemar Brodkorb --- v1->v2: - added me to DEVELOPERS file requested by Thomas P. - check older binutils/gcc/gdb for support requested by Thomas P. --- DEVELOPERS | 1 + arch/Config.in | 12 ++++++++++++ arch/Config.in.loongarch64 | 14 ++++++++++++++ package/binutils/Config.in.host | 1 + package/gcc/Config.in.host | 2 ++ package/glibc/Config.in | 1 + package/musl/Config.in | 1 + 7 files changed, 32 insertions(+) create mode 100644 arch/Config.in.loongarch64 diff --git a/DEVELOPERS b/DEVELOPERS index a9deddb343..9e299e7e66 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -3203,6 +3203,7 @@ N: Wade Berrier F: package/ngrep/ N: Waldemar Brodkorb +F: arch/Config.in.loongarch64 F: board/qemu/riscv32-virt/ F: configs/qemu_riscv32_nommu_virt_defconfig F: package/asterisk/ diff --git a/arch/Config.in b/arch/Config.in index f39c33ef7f..070a4aca3a 100644 --- a/arch/Config.in +++ b/arch/Config.in @@ -77,6 +77,14 @@ config BR2_i386 Intel i386 architecture compatible microprocessor http://en.wikipedia.org/wiki/I386 +config BR2_loongarch64 + bool "loongarch64" + select BR2_ARCH_IS_64 + select BR2_USE_MMU + help + Loongarch is a RISC microprocessor from Loongarch Technologies. + https://en.wikipedia.org/wiki/Loongson + config BR2_m68k bool "m68k" # MMU support is set by the subarchitecture file, arch/Config.in.m68k @@ -374,6 +382,10 @@ if BR2_arm || BR2_armeb || BR2_aarch64 || BR2_aarch64_be source "arch/Config.in.arm" endif +if BR2_loongarch64 +source "arch/Config.in.loongarch64" +endif + if BR2_m68k source "arch/Config.in.m68k" endif diff --git a/arch/Config.in.loongarch64 b/arch/Config.in.loongarch64 new file mode 100644 index 0000000000..2b5bac095d --- /dev/null +++ b/arch/Config.in.loongarch64 @@ -0,0 +1,14 @@ +config BR2_ARCH + default "loongarch64" + +config BR2_NORMALIZED_ARCH + default "loongarch" + +config BR2_ENDIAN + default "LITTLE" + +config BR2_READELF_ARCH_NAME + default "LoongArch" + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/package/binutils/Config.in.host b/package/binutils/Config.in.host index cb65f5f5e4..89e36d6047 100644 --- a/package/binutils/Config.in.host +++ b/package/binutils/Config.in.host @@ -14,6 +14,7 @@ choice config BR2_BINUTILS_VERSION_2_40_X bool "binutils 2.40" + depends on !BR2_loongarch64 config BR2_BINUTILS_VERSION_2_41_X bool "binutils 2.41" diff --git a/package/gcc/Config.in.host b/package/gcc/Config.in.host index 2324561a3e..a0377cc0a3 100644 --- a/package/gcc/Config.in.host +++ b/package/gcc/Config.in.host @@ -30,6 +30,8 @@ config BR2_GCC_VERSION_12_X depends on !BR2_POWERPC_CPU_HAS_SPE # ARC HS48 rel 31 only supported by gcc arc fork. depends on !BR2_archs4x_rel31 + # too old to compile Linux Kernel + depends on !BR2_loongarch64 select BR2_TOOLCHAIN_GCC_AT_LEAST_12 config BR2_GCC_VERSION_13_X diff --git a/package/glibc/Config.in b/package/glibc/Config.in index 81c64083f4..5385e2a855 100644 --- a/package/glibc/Config.in +++ b/package/glibc/Config.in @@ -5,6 +5,7 @@ config BR2_PACKAGE_GLIBC_ARCH_SUPPORTS default y if BR2_aarch64 default y if BR2_aarch64_be default y if BR2_i386 + default y if BR2_loongarch64 default y if BR2_m68k_m68k default y if BR2_mips default y if BR2_mipsel diff --git a/package/musl/Config.in b/package/musl/Config.in index a6e2af054c..70475326f5 100644 --- a/package/musl/Config.in +++ b/package/musl/Config.in @@ -5,6 +5,7 @@ config BR2_PACKAGE_MUSL_ARCH_SUPPORTS default y if BR2_arm default y if BR2_armeb default y if BR2_i386 + default y if BR2_loongarch64 default y if BR2_m68k_m68k default y if BR2_microblaze default y if BR2_mips -- 2.30.2 From wbx at openadk.org Tue May 14 16:16:19 2024 From: wbx at openadk.org (Waldemar Brodkorb) Date: Tue, 14 May 2024 18:16:19 +0200 Subject: [Buildroot] [PATCHv2 2/3] linux: add support for vmlinux.efi Message-ID: Signed-off-by: Waldemar Brodkorb --- v1->v2: - no changes --- linux/Config.in | 4 ++++ linux/linux.mk | 2 ++ 2 files changed, 6 insertions(+) diff --git a/linux/Config.in b/linux/Config.in index d3d4c42910..8aab953ddf 100644 --- a/linux/Config.in +++ b/linux/Config.in @@ -285,6 +285,10 @@ config BR2_LINUX_KERNEL_VMLINUX_BIN bool "vmlinux.bin" depends on BR2_mips || BR2_mipsel || BR2_sh +config BR2_LINUX_KERNEL_VMLINUX_EFI + bool "vmlinux.efi" + depends on BR2_loongarch64 + config BR2_LINUX_KERNEL_VMLINUX bool "vmlinux" diff --git a/linux/linux.mk b/linux/linux.mk index 16d9f19470..3e0e728656 100644 --- a/linux/linux.mk +++ b/linux/linux.mk @@ -231,6 +231,8 @@ else ifeq ($(BR2_LINUX_KERNEL_IMAGEGZ),y) LINUX_IMAGE_NAME = Image.gz else ifeq ($(BR2_LINUX_KERNEL_LINUX_BIN),y) LINUX_IMAGE_NAME = linux.bin +else ifeq ($(BR2_LINUX_KERNEL_VMLINUX_EFI),y) +LINUX_IMAGE_NAME = vmlinux.efi else ifeq ($(BR2_LINUX_KERNEL_VMLINUX_BIN),y) LINUX_IMAGE_NAME = vmlinux.bin else ifeq ($(BR2_LINUX_KERNEL_VMLINUX),y) -- 2.30.2 From wbx at openadk.org Tue May 14 16:18:36 2024 From: wbx at openadk.org (Waldemar Brodkorb) Date: Tue, 14 May 2024 18:18:36 +0200 Subject: [Buildroot] [PATCHv2 3/3] configs/qemu_loongarch64: new defconfig Message-ID: Signed-off-by: Waldemar Brodkorb --- v1->v2: - add me to DEVELOPERS file as requested by Thomas P. - add the missing readme.txt file requested by Thomas P. --- DEVELOPERS | 2 ++ .../patches/linux-headers/linux-headers.hash | 2 ++ .../qemu/loongarch64/patches/linux/linux.hash | 2 ++ board/qemu/loongarch64/readme.txt | 11 ++++++++ configs/qemu_loongarch64_defconfig | 27 +++++++++++++++++++ 5 files changed, 44 insertions(+) create mode 100644 board/qemu/loongarch64/patches/linux-headers/linux-headers.hash create mode 100644 board/qemu/loongarch64/patches/linux/linux.hash create mode 100644 board/qemu/loongarch64/readme.txt create mode 100644 configs/qemu_loongarch64_defconfig diff --git a/DEVELOPERS b/DEVELOPERS index 9e299e7e66..fa933b8742 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -3204,7 +3204,9 @@ F: package/ngrep/ N: Waldemar Brodkorb F: arch/Config.in.loongarch64 +F: board/qemu/loongarch64/ F: board/qemu/riscv32-virt/ +F: configs/qemu_loongarch64_defconfig F: configs/qemu_riscv32_nommu_virt_defconfig F: package/asterisk/ F: package/libjwt/ diff --git a/board/qemu/loongarch64/patches/linux-headers/linux-headers.hash b/board/qemu/loongarch64/patches/linux-headers/linux-headers.hash new file mode 100644 index 0000000000..f3d9c1186a --- /dev/null +++ b/board/qemu/loongarch64/patches/linux-headers/linux-headers.hash @@ -0,0 +1,2 @@ +# From https://cdn.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc +sha256 b66a5b863b0f8669448b74ca83bd641a856f164b29956e539bbcb5fdeeab9cc6 linux-6.6.30.tar.xz diff --git a/board/qemu/loongarch64/patches/linux/linux.hash b/board/qemu/loongarch64/patches/linux/linux.hash new file mode 100644 index 0000000000..f3d9c1186a --- /dev/null +++ b/board/qemu/loongarch64/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# From https://cdn.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc +sha256 b66a5b863b0f8669448b74ca83bd641a856f164b29956e539bbcb5fdeeab9cc6 linux-6.6.30.tar.xz diff --git a/board/qemu/loongarch64/readme.txt b/board/qemu/loongarch64/readme.txt new file mode 100644 index 0000000000..3d49ba57f4 --- /dev/null +++ b/board/qemu/loongarch64/readme.txt @@ -0,0 +1,11 @@ +Qemu does not bundle the BIOS file QEMU_EFI.fd. You need to build it: +https://github.com/tianocore/edk2-platforms/tree/master/Platform/Loongson/LoongArchQemuPkg#readme + +For a binary you can download it from here: +https://debug.openadk.org/QEMU_EFI.fd + +Run the emulation with: + + qemu-system-loongarch64 -M virt -bios QEMU_EFI.fd -append "console=ttyS0,115200" -kernel output/images/vmlinux.efi -nographic # qemu_loongarch64_defconfig + +The login prompt will appear in the terminal that started Qemu. diff --git a/configs/qemu_loongarch64_defconfig b/configs/qemu_loongarch64_defconfig new file mode 100644 index 0000000000..025e9907e2 --- /dev/null +++ b/configs/qemu_loongarch64_defconfig @@ -0,0 +1,27 @@ +# Architecture +BR2_loongarch64=y + +# Filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.30" +BR2_LINUX_KERNEL_DEFCONFIG="loongson3" +BR2_LINUX_KERNEL_VMLINUX_EFI=y + +# Disable network scripts +# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set + +# host-qemu for gitlab testing +BR2_PACKAGE_HOST_QEMU=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y -- 2.30.2 From kadambini.nema at gmail.com Tue May 14 16:52:51 2024 From: kadambini.nema at gmail.com (Kadambini Nema) Date: Tue, 14 May 2024 09:52:51 -0700 Subject: [Buildroot] [PATCH 1/1] package/ustreamer: bump version to 6.11 Message-ID: <20240514165251.511634-1-kadambini.nema@gmail.com> changelog - https://github.com/pikvm/ustreamer/compare/v5.51...v6.11 Signed-off-by: Kadambini Nema --- package/ustreamer/ustreamer.hash | 2 +- package/ustreamer/ustreamer.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/ustreamer/ustreamer.hash b/package/ustreamer/ustreamer.hash index d3f603e0c8..7c70f0195f 100644 --- a/package/ustreamer/ustreamer.hash +++ b/package/ustreamer/ustreamer.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 88f107e02a0b5c6493d55ed1bce0c85f66ce83d2bc0271ff6319ad593c6584bc ustreamer-5.51.tar.gz +sha256 80ab01eeaa81c7d8e9c7f62304287d176fd729cb12ca5adb2e181b5a3da79216 ustreamer-6.11.tar.gz sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE diff --git a/package/ustreamer/ustreamer.mk b/package/ustreamer/ustreamer.mk index dc8577b5e9..5b73e387d6 100644 --- a/package/ustreamer/ustreamer.mk +++ b/package/ustreamer/ustreamer.mk @@ -4,7 +4,7 @@ # ################################################################################ -USTREAMER_VERSION = 5.51 +USTREAMER_VERSION = 6.11 USTREAMER_SITE = $(call github,pikvm,ustreamer,v$(USTREAMER_VERSION)) USTREAMER_LICENSE = GPL-3.0+ USTREAMER_LICENSE_FILES = LICENSE -- 2.25.1 From fontaine.fabrice at gmail.com Tue May 14 17:20:32 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Tue, 14 May 2024 19:20:32 +0200 Subject: [Buildroot] [PATCH 1/1] package/cjson: security bump to version 1.7.18 Message-ID: <20240514172032.3581-1-fontaine.fabrice@gmail.com> Add NULL check to cJSON_SetValuestring() (CVE-2024-31755) https://github.com/DaveGamble/cJSON/releases/tag/v1.7.18 Signed-off-by: Fabrice Fontaine --- package/cjson/cjson.hash | 2 +- package/cjson/cjson.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/cjson/cjson.hash b/package/cjson/cjson.hash index 305dc0d7b8..e07ae0f7bf 100644 --- a/package/cjson/cjson.hash +++ b/package/cjson/cjson.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 c91d1eeb7175c50d49f6ba2a25e69b46bd05cffb798382c19bfb202e467ec51c cjson-1.7.17.tar.gz +sha256 3aa806844a03442c00769b83e99970be70fbef03735ff898f4811dd03b9f5ee5 cjson-1.7.18.tar.gz sha256 a36dda207c36db5818729c54e7ad4e8b0c6fba847491ba64f372c1a2037b6d5c LICENSE diff --git a/package/cjson/cjson.mk b/package/cjson/cjson.mk index 4719a3dc9b..35304ec618 100644 --- a/package/cjson/cjson.mk +++ b/package/cjson/cjson.mk @@ -4,7 +4,7 @@ # ################################################################################ -CJSON_VERSION = 1.7.17 +CJSON_VERSION = 1.7.18 CJSON_SITE = $(call github,DaveGamble,cjson,v$(CJSON_VERSION)) CJSON_INSTALL_STAGING = YES CJSON_LICENSE = MIT -- 2.43.0 From fontaine.fabrice at gmail.com Tue May 14 17:21:42 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Tue, 14 May 2024 19:21:42 +0200 Subject: [Buildroot] [PATCH 1/1] package/libnpth: fix gnupg2 build with uclibc Message-ID: <20240514172142.4449-1-fontaine.fabrice@gmail.com> Fix the following build failure of gnupg2 raised since bump to version 1.7 in commit 3ef4d24192b20bd1eb5e34c9fa2a6aa5bde91f91 and https://git.gnupg.org/cgi-bin/gitweb.cgi?p=npth.git;a=commitdiff;h=02ce6b2d27f91ed6285e4e92d99c21bcc7823c9b: /home/autobuild/autobuild/instance-2/output-1/host/lib/gcc/armeb-buildroot-linux-uclibcgnueabi/13.2.0/../../../../armeb-buildroot-linux-uclibcgnueabi/bin/ld: /home/autobuild/autobuild/instance-2/output-1/host/bin/../armeb-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libnpth.so: undefined reference to `busy_wait_for' Fixes: 3ef4d24192b20bd1eb5e34c9fa2a6aa5bde91f91 - http://autobuild.buildroot.org/results/9a27ffde79598a39b4fd55c716978d32d0beb924 Signed-off-by: Fabrice Fontaine --- ..._rwlock_timedrdlock-is-not-supported.patch | 51 +++++++++++++++++++ .../libnpth/0003-Fix-previous-commit.patch | 39 ++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 package/libnpth/0002-Return-a-run-time-error-if-npth_rwlock_timedrdlock-is-not-supported.patch create mode 100644 package/libnpth/0003-Fix-previous-commit.patch diff --git a/package/libnpth/0002-Return-a-run-time-error-if-npth_rwlock_timedrdlock-is-not-supported.patch b/package/libnpth/0002-Return-a-run-time-error-if-npth_rwlock_timedrdlock-is-not-supported.patch new file mode 100644 index 0000000000..0d9b38e4ce --- /dev/null +++ b/package/libnpth/0002-Return-a-run-time-error-if-npth_rwlock_timedrdlock-is-not-supported.patch @@ -0,0 +1,51 @@ +From 01f03a91c9bd63910995aeef412beb3ca6dc9a67 Mon Sep 17 00:00:00 2001 +From: NIIBE Yutaka +Date: Tue, 7 May 2024 13:45:47 +0900 +Subject: [PATCH] Return a run-time error if npth_rwlock_timedrdlock is not + supported. + +* src/npth.c (npth_rwlock_timedrdlock): Return ENOSYS if not +supported. +(npth_rwlock_timedwrlock): Use HAVE_PTHREAD_RWLOCK_TRYWRLOCK. + +-- + +GnuPG-bug-id: 7109 +Fixed-commit: 363c370bd35dd0bb4e5636b2d4f06ea88c658794 +Signed-off-by: NIIBE Yutaka + +Upstream: https://git.gnupg.org/cgi-bin/gitweb.cgi?p=npth.git;a=commit;h=01f03a91c9bd63910995aeef412beb3ca6dc9a67 +Signed-off-by: Fabrice Fontaine +--- + src/npth.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/npth.c b/src/npth.c +index c0ff8da..f02540c 100644 +--- a/src/npth.c ++++ b/src/npth.c +@@ -488,9 +488,11 @@ npth_rwlock_timedrdlock (npth_rwlock_t *rwlock, const struct timespec *abstime) + ENTER(); + #if HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK + err = pthread_rwlock_timedrdlock (rwlock, abstime); +-#else ++#elif HAVE_PTHREAD_RWLOCK_TRYRDLOCK + err = busy_wait_for ((trylock_func_t) pthread_rwlock_tryrdlock, rwlock, + abstime); ++#else ++ err = ENOSYS; + #endif + LEAVE(); + return err; +@@ -533,7 +535,7 @@ npth_rwlock_timedwrlock (npth_rwlock_t *rwlock, const struct timespec *abstime) + ENTER(); + #if HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK + err = pthread_rwlock_timedwrlock (rwlock, abstime); +-#elif HAVE_PTHREAD_RWLOCK_TRYRDLOCK ++#elif HAVE_PTHREAD_RWLOCK_TRYWRLOCK + err = busy_wait_for ((trylock_func_t) pthread_rwlock_trywrlock, rwlock, + abstime); + #else +-- +2.30.2 + diff --git a/package/libnpth/0003-Fix-previous-commit.patch b/package/libnpth/0003-Fix-previous-commit.patch new file mode 100644 index 0000000000..5f3ce06bf6 --- /dev/null +++ b/package/libnpth/0003-Fix-previous-commit.patch @@ -0,0 +1,39 @@ +From 75c68399ef3bbb5d024f2a60474a7214fa479016 Mon Sep 17 00:00:00 2001 +From: NIIBE Yutaka +Date: Mon, 13 May 2024 11:13:23 +0900 +Subject: [PATCH] Fix previous commit. + +Signed-off-by: NIIBE Yutaka + +Upstream: https://git.gnupg.org/cgi-bin/gitweb.cgi?p=npth.git;a=commit;h=75c68399ef3bbb5d024f2a60474a7214fa479016 +Signed-off-by: Fabrice Fontaine +--- + src/npth.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/src/npth.c b/src/npth.c +index f02540c..8dced17 100644 +--- a/src/npth.c ++++ b/src/npth.c +@@ -178,6 +178,18 @@ static int initialized_or_any_threads; + typedef int (*trylock_func_t) (void *); + + #ifndef HAVE_PTHREAD_MUTEX_TIMEDLOCK ++#define REQUIRE_THE_BUSY_WAIT_FOR_IMPLEMENTATION 1 ++#endif ++ ++#if !HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK && HAVE_PTHREAD_RWLOCK_TRYRDLOCK ++#define REQUIRE_THE_BUSY_WAIT_FOR_IMPLEMENTATION 1 ++#endif ++ ++#if !HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK && HAVE_PTHREAD_RWLOCK_TRYWRLOCK ++#define REQUIRE_THE_BUSY_WAIT_FOR_IMPLEMENTATION 1 ++#endif ++ ++#if REQUIRE_THE_BUSY_WAIT_FOR_IMPLEMENTATION + static int + busy_wait_for (trylock_func_t trylock, void *lock, + const struct timespec *abstime) +-- +2.30.2 + -- 2.43.0 From fontaine.fabrice at gmail.com Tue May 14 17:24:38 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Tue, 14 May 2024 19:24:38 +0200 Subject: [Buildroot] [PATCH 1/1] package/libedit: set LIBEDIT_CPE_ID_VALID Message-ID: <20240514172438.68998-1-fontaine.fabrice@gmail.com> cpe:2.3:a:libedit_project:libedit is a valid CPE identifier for this package: https://nvd.nist.gov/products/cpe/detail/42ACF08B-DD62-48D3-8568-32DAFD116956 Signed-off-by: Fabrice Fontaine --- package/libedit/libedit.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/package/libedit/libedit.mk b/package/libedit/libedit.mk index ea7f98fdbd..98e29a9b1a 100644 --- a/package/libedit/libedit.mk +++ b/package/libedit/libedit.mk @@ -10,6 +10,7 @@ LIBEDIT_INSTALL_STAGING = YES LIBEDIT_DEPENDENCIES = ncurses LIBEDIT_LICENSE = BSD-3-Clause LIBEDIT_LICENSE_FILES = COPYING +LIBEDIT_CPE_ID_VALID = YES # We're patching configure.ac LIBEDIT_AUTORECONF = YES -- 2.43.0 From ju.o at free.fr Tue May 14 17:26:54 2024 From: ju.o at free.fr (Julien Olivain) Date: Tue, 14 May 2024 19:26:54 +0200 Subject: [Buildroot] [PATCH 1/1] package/python-ml-dtypes: skip dependency check In-Reply-To: <20240514154250.1453970-1-james.hilliard1@gmail.com> References: <20240514154250.1453970-1-james.hilliard1@gmail.com> Message-ID: <4e9d5bc99a30a885dddb8aba6145f56d@free.fr> Hi James, Thanks for the patch! I successfully tested it on branch master at commit 9764258 with command: support/testing/run-tests \ -d dl -o output_folder \ tests.package.test_python_ml_dtypes On 14/05/2024 17:42, James Hilliard wrote: > This package pins overly strict numpy dependency versions apparently > for compatibility reasons that don't appear relevant to buildroot. > > This package also appears to pin an overly strict setuptools version > for unclear reasons. > > See: > https://github.com/jax-ml/ml_dtypes/blob/v0.3.2/pyproject.toml#L51-L55 > > To fix this lets just set the --skip-dependency-check build option and > ignore the build dependency version mismatches since they don't appear > to cause any build issues. > > This error was introduced when we migrated setuptools to pep517 in > 8937db8dd595e0988751e5dbb568e870b07b39cc. > > Signed-off-by: James Hilliard Tested-by: Julien Olivain > --- > package/python-ml-dtypes/python-ml-dtypes.mk | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/package/python-ml-dtypes/python-ml-dtypes.mk > b/package/python-ml-dtypes/python-ml-dtypes.mk > index 676137ecf1..8097265078 100644 > --- a/package/python-ml-dtypes/python-ml-dtypes.mk > +++ b/package/python-ml-dtypes/python-ml-dtypes.mk > @@ -10,6 +10,7 @@ PYTHON_ML_DTYPES_SITE = > https://files.pythonhosted.org/packages/39/7d/8d85fcba86 > PYTHON_ML_DTYPES_LICENSE = Apache-2.0 > PYTHON_ML_DTYPES_LICENSE_FILES = LICENSE > PYTHON_ML_DTYPES_SETUP_TYPE = setuptools > +PYTHON_ML_DTYPES_BUILD_OPTS = --skip-dependency-check > > PYTHON_ML_DTYPES_DEPENDENCIES = \ > host-python-numpy \ > -- > 2.34.1 Best regards, Julien. From fontaine.fabrice at gmail.com Tue May 14 17:39:19 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Tue, 14 May 2024 19:39:19 +0200 Subject: [Buildroot] [PATCH 1/1] package/gnuplot: fix readline dependency Message-ID: <20240514173919.318237-1-fontaine.fabrice@gmail.com> --without-readline is interpreted as --with-readline=builtin since bump to version 5.4.0 in commit 263da09323e83bb3d6552b70b739523b66459df8 and https://github.com/gnuplot/gnuplot/commit/b492ea63bd604081ffb9dee3843e295b0b29df85 so add a mandatory dependency to readline or libedit to gnuplot As a side-effect, this will avoid the following build failure with builtin readline raised since bump to version 6.0.0 in commit 5f11ce4aeaba99917778c384b236d267e78a7b29: /home/autobuild/autobuild/instance-14/output-1/host/lib/gcc/arm-buildroot-linux-gnueabi/13.2.0/../../../../arm-buildroot-linux-gnueabi/bin/ld: history.o: in function `read_history': history.c:(.text+0xa8): undefined reference to `gp_read_history' Fixes: 5f11ce4aeaba99917778c384b236d267e78a7b29 - http://autobuild.buildroot.org/results/5e45dd8f9071694110c8481f222b9b07b6a97ef3 Signed-off-by: Fabrice Fontaine --- package/gnuplot/Config.in | 1 + package/gnuplot/gnuplot.mk | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/package/gnuplot/Config.in b/package/gnuplot/Config.in index 603c194fe5..8068a7283b 100644 --- a/package/gnuplot/Config.in +++ b/package/gnuplot/Config.in @@ -1,5 +1,6 @@ config BR2_PACKAGE_GNUPLOT bool "gnuplot" + select BR2_PACKAGE_READLINE if !BR2_PACKAGE_LIBEDIT help A portable command-line driven graphing utility. diff --git a/package/gnuplot/gnuplot.mk b/package/gnuplot/gnuplot.mk index 26b2daaf24..e34dd2a60b 100644 --- a/package/gnuplot/gnuplot.mk +++ b/package/gnuplot/gnuplot.mk @@ -41,8 +41,9 @@ endif ifeq ($(BR2_PACKAGE_READLINE),y) GNUPLOT_CONF_OPTS += --with-readline=gnu GNUPLOT_DEPENDENCIES += readline -else -GNUPLOT_CONF_OPTS += --without-readline +else ifeq ($(BR2_PACKAGE_LIBEDIT),y) +GNUPLOT_CONF_OPTS += --with-readline=bsd +GNUPLOT_DEPENDENCIES += libedit endif # Remove Javascript scripts, lua scripts, PostScript files -- 2.43.0 From peter at korsgaard.com Tue May 14 19:50:19 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Tue, 14 May 2024 21:50:19 +0200 Subject: [Buildroot] [PATCH 2/2] configs/openblocks_a6_defconfig: add hashes for Linux / headers In-Reply-To: <20240514195019.4113851-1-peter@korsgaard.com> References: <20240514195019.4113851-1-peter@korsgaard.com> Message-ID: <20240514195019.4113851-2-peter@korsgaard.com> And enable BR2_DOWNLOAD_FORCE_CHECK_HASHES. Generated by utils/add-custom-hashes, with the (redundant) linux-headers.hash replaced by a symlink. Signed-off-by: Peter Korsgaard --- board/openblocks/a6/patches/linux-headers/linux-headers.hash | 1 + board/openblocks/a6/patches/linux/linux.hash | 2 ++ configs/openblocks_a6_defconfig | 2 ++ 3 files changed, 5 insertions(+) create mode 120000 board/openblocks/a6/patches/linux-headers/linux-headers.hash create mode 100644 board/openblocks/a6/patches/linux/linux.hash diff --git a/board/openblocks/a6/patches/linux-headers/linux-headers.hash b/board/openblocks/a6/patches/linux-headers/linux-headers.hash new file mode 120000 index 0000000000..5808d92afe --- /dev/null +++ b/board/openblocks/a6/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/openblocks/a6/patches/linux/linux.hash b/board/openblocks/a6/patches/linux/linux.hash new file mode 100644 index 0000000000..b207306a2b --- /dev/null +++ b/board/openblocks/a6/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 0820fdb7971c6974338081c11fbf2dc869870501e7bdcac4d0ed58ba1f57b61c linux-4.14.336.tar.xz diff --git a/configs/openblocks_a6_defconfig b/configs/openblocks_a6_defconfig index 69b75f5043..6a816597ac 100644 --- a/configs/openblocks_a6_defconfig +++ b/configs/openblocks_a6_defconfig @@ -3,6 +3,8 @@ BR2_arm=y BR2_arm926t=y # system +BR2_GLOBAL_PATCH_DIR="board/openblocks/a6/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y BR2_TARGET_GENERIC_HOSTNAME="openblocks-a6" BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" BR2_SYSTEM_DHCP="eth0" -- 2.39.2 From peter at korsgaard.com Tue May 14 19:50:18 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Tue, 14 May 2024 21:50:18 +0200 Subject: [Buildroot] [PATCH 1/2] configs/openblocks_a6_defconfig: bump Linux to fix binutils 2.41 build Message-ID: <20240514195019.4113851-1-peter@korsgaard.com> Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6813125272 The Linux kernel fails to build since commit e88225ed882 (package/binutils: make 2.41 the default version): arch/arm/mm/proc-feroceon.S: Assembler messages: arch/arm/mm/proc-feroceon.S:587: Error: junk at end of line, first unrecognized character is `#' make[3]: *** [scripts/Makefile.build:430: arch/arm/mm/proc-feroceon.o] Error 1 make[3]: *** Waiting for unfinished jobs.... Fix the build by bumping the kernel to 4.14.336, which includes commit 3ab03df64f77 (ARM: 8933/1: replace Sun/Solaris style flag on section directive): https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-4.14.y&id=3ab03df64f7754728a2257c47775a70a88428331 Signed-off-by: Peter Korsgaard --- configs/openblocks_a6_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/openblocks_a6_defconfig b/configs/openblocks_a6_defconfig index 2238c0940c..69b75f5043 100644 --- a/configs/openblocks_a6_defconfig +++ b/configs/openblocks_a6_defconfig @@ -17,7 +17,7 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y # kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.253" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.336" BR2_LINUX_KERNEL_DEFCONFIG="mvebu_v5" BR2_LINUX_KERNEL_APPENDED_UIMAGE=y BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" -- 2.39.2 From yann.morin.1998 at free.fr Tue May 14 20:21:19 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Tue, 14 May 2024 22:21:19 +0200 Subject: [Buildroot] [PATCH] package/python-*: fix hashes for cargo-vendored python packages Message-ID: <20240514202119.3685539-1-yann.morin.1998@free.fr> The recent commits that touched vendoring and hashes, totally missed the non-native vendored packages, like python packages that contain rust code, and are thus cargo-vendored. The issue in this case, is that we need to download the archive as it is hosted and known to PyPI, but store it locally with our vendoring suffix. This is inherently conflicting. Fortunately, the PyPI webserver will ignore the query part of the URL, so we can request the archive known to PyPI, and append an arbitrary query, that is automatically constructed with the actual filename we will use to store it. Basically, an URL for a python package like: https://pypi.org.pkg/pkg-hash/pkg-vesion.tar.gz can be turned into: https://pypi.org.pkg/pkg-hash/pkg-vesion.tar.gz?buildroot-path=filename/python-pkg-version-cargo2.tar.gz This way, we can use out default _SOURCE value, and construct a _SITE that contains the actual package URL, with an arbtrary query. NOTE: this is a stop-gap measure, to quickly fix those packages, while waiting for a generic solution that works in all cases, not just with PyPI. NOTE-2: of course, if PyPI changes its policy, and no longer ignored the query part, this is going to break again. Hence the need for a generic solution... Reported-by: Thomas Petazzoni Signed-off-by: Yann E. MORIN --- package/python-bcrypt/python-bcrypt.hash | 2 +- package/python-bcrypt/python-bcrypt.mk | 5 +++-- package/python-cryptography/python-cryptography.hash | 2 +- package/python-cryptography/python-cryptography.mk | 5 +++-- package/python-maturin/python-maturin.hash | 2 +- package/python-maturin/python-maturin.mk | 5 +++-- package/python-orjson/python-orjson.hash | 2 +- package/python-orjson/python-orjson.mk | 5 +++-- package/python-pydantic-core/python-pydantic-core.hash | 2 +- package/python-pydantic-core/python-pydantic-core.mk | 5 +++-- package/python-rpds-py/python-rpds-py.hash | 2 +- package/python-rpds-py/python-rpds-py.mk | 5 +++-- package/python-rtoml/python-rtoml.hash | 2 +- package/python-rtoml/python-rtoml.mk | 5 +++-- 14 files changed, 28 insertions(+), 21 deletions(-) diff --git a/package/python-bcrypt/python-bcrypt.hash b/package/python-bcrypt/python-bcrypt.hash index e148078699..8e660a158b 100644 --- a/package/python-bcrypt/python-bcrypt.hash +++ b/package/python-bcrypt/python-bcrypt.hash @@ -1,4 +1,4 @@ # Locally calculated after vendoring -sha256 d64daee0af1afe137718674e67a49b8bb791842aab265b588a6d68d44a449c70 bcrypt-4.0.1.tar.gz +sha256 f0b2c7d5d79a6537e3d291b07d2be70dd122a15ea871854d4ce95b447c6873a5 python-bcrypt-4.0.1-cargo2.tar.gz # Locally computed sha256 checksums sha256 8173d5c29b4f956d532781d2b86e4e30f83e6b7878dce18c919451d6ba707c90 LICENSE diff --git a/package/python-bcrypt/python-bcrypt.mk b/package/python-bcrypt/python-bcrypt.mk index cbd6855d9c..f3137401d7 100644 --- a/package/python-bcrypt/python-bcrypt.mk +++ b/package/python-bcrypt/python-bcrypt.mk @@ -5,8 +5,9 @@ ################################################################################ PYTHON_BCRYPT_VERSION = 4.0.1 -PYTHON_BCRYPT_SOURCE = bcrypt-$(PYTHON_BCRYPT_VERSION).tar.gz -PYTHON_BCRYPT_SITE = https://files.pythonhosted.org/packages/8c/ae/3af7d006aacf513975fd1948a6b4d6f8b4a307f8a244e1a3d3774b297aad +PYTHON_BCRYPT_SOURCE_PYPI = bcrypt-$(PYTHON_BCRYPT_VERSION).tar.gz +PYTHON_BCRYPT_SITE_PYPI = https://files.pythonhosted.org/packages/8c/ae/3af7d006aacf513975fd1948a6b4d6f8b4a307f8a244e1a3d3774b297aad +PYTHON_BCRYPT_SITE = $(PYTHON_BCRYPT_SITE_PYPI)/$(PYTHON_BCRYPT_SOURCE_PYPI)?buildroot-path=filename PYTHON_BCRYPT_SETUP_TYPE = setuptools PYTHON_BCRYPT_LICENSE = Apache-2.0 PYTHON_BCRYPT_LICENSE_FILES = LICENSE diff --git a/package/python-cryptography/python-cryptography.hash b/package/python-cryptography/python-cryptography.hash index e083014750..5fbf69a208 100644 --- a/package/python-cryptography/python-cryptography.hash +++ b/package/python-cryptography/python-cryptography.hash @@ -1,5 +1,5 @@ # Locally calculated after vendoring -sha256 405c9a6271e1a088ea0b432bc2094e2e8baadb2241e192ce9c73a7cc9793b127 cryptography-39.0.2.tar.gz +sha256 b55c6c011ba4bb803de0b557f40f1765bab9f63240e93516daaf75c3c68e6618 python-cryptography-39.0.2-cargo2.tar.gz # Locally computed sha256 checksums sha256 43dad2cc752ab721cd9a9f36ece70fb53ab7713551f2d3d8694d8e8c5a06d6e2 LICENSE sha256 aac73b3148f6d1d7111dbca32099f68d26c644c6813ae1e4f05f6579aa2663fe LICENSE.APACHE diff --git a/package/python-cryptography/python-cryptography.mk b/package/python-cryptography/python-cryptography.mk index 07c88ec3da..1cbccd0d5c 100644 --- a/package/python-cryptography/python-cryptography.mk +++ b/package/python-cryptography/python-cryptography.mk @@ -5,8 +5,9 @@ ################################################################################ PYTHON_CRYPTOGRAPHY_VERSION = 39.0.2 -PYTHON_CRYPTOGRAPHY_SOURCE = cryptography-$(PYTHON_CRYPTOGRAPHY_VERSION).tar.gz -PYTHON_CRYPTOGRAPHY_SITE = https://files.pythonhosted.org/packages/fa/f3/f4b8c175ea9a1de650b0085858059050b7953a93d66c97ed89b93b232996 +PYTHON_CRYPTOGRAPHY_SOURCE_PYPI = cryptography-$(PYTHON_CRYPTOGRAPHY_VERSION).tar.gz +PYTHON_CRYPTOGRAPHY_SITE_PYPI = https://files.pythonhosted.org/packages/fa/f3/f4b8c175ea9a1de650b0085858059050b7953a93d66c97ed89b93b232996 +PYTHON_CRYPTOGRAPHY_SITE = $(PYTHON_CRYPTOGRAPHY_SITE_PYPI)/$(PYTHON_CRYPTOGRAPHY_SOURCE_PYPI)?buildroot-path=filename PYTHON_CRYPTOGRAPHY_SETUP_TYPE = setuptools-rust PYTHON_CRYPTOGRAPHY_LICENSE = Apache-2.0 or BSD-3-Clause PYTHON_CRYPTOGRAPHY_LICENSE_FILES = LICENSE LICENSE.APACHE LICENSE.BSD diff --git a/package/python-maturin/python-maturin.hash b/package/python-maturin/python-maturin.hash index be6167afea..9807260ebd 100644 --- a/package/python-maturin/python-maturin.hash +++ b/package/python-maturin/python-maturin.hash @@ -1,5 +1,5 @@ # Locally calculated after vendoring -sha256 3757ed29fbaa87a7dde95dade795ea80f099a867343e920ccc471f75d141a6fa maturin-1.4.0.tar.gz +sha256 53d51f5e2decca9af248748684aefa9245910757f19ae147dcf566172ecb0907 python-maturin-1.4.0-cargo2.tar.gz # Locally computed sha256 checksums sha256 a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2 license-apache sha256 ea7882c559733766ad08343bde1d1ec80a4967c03a738fb8e0058ef6289f7b7c license-mit diff --git a/package/python-maturin/python-maturin.mk b/package/python-maturin/python-maturin.mk index 91507468a2..37479dd7e7 100644 --- a/package/python-maturin/python-maturin.mk +++ b/package/python-maturin/python-maturin.mk @@ -5,8 +5,9 @@ ################################################################################ PYTHON_MATURIN_VERSION = 1.4.0 -PYTHON_MATURIN_SOURCE = maturin-$(PYTHON_MATURIN_VERSION).tar.gz -PYTHON_MATURIN_SITE = https://files.pythonhosted.org/packages/20/90/43a3aa35f037e91582ec7516a92084a71f84e89e39ef580813bed072b154 +PYTHON_MATURIN_SOURCE_PYPI = maturin-$(PYTHON_MATURIN_VERSION).tar.gz +PYTHON_MATURIN_SITE_PYPI = https://files.pythonhosted.org/packages/20/90/43a3aa35f037e91582ec7516a92084a71f84e89e39ef580813bed072b154 +PYTHON_MATURIN_SITE = $(PYTHON_MATURIN_SITE_PYPI)/$(PYTHON_MATURIN_SOURCE_PYPI)?buildroot-path=filename PYTHON_MATURIN_SETUP_TYPE = setuptools-rust PYTHON_MATURIN_LICENSE = Apache-2.0 or MIT PYTHON_MATURIN_LICENSE_FILES = license-apache license-mit diff --git a/package/python-orjson/python-orjson.hash b/package/python-orjson/python-orjson.hash index 0e9b93f311..c010097fc7 100644 --- a/package/python-orjson/python-orjson.hash +++ b/package/python-orjson/python-orjson.hash @@ -1,5 +1,5 @@ # Locally calculated after vendoring -sha256 245a1ad9a8f926273787e91f7d7e14b4b357e263a215d8c96dd2039b3cddc238 orjson-3.9.10.tar.gz +sha256 30dbdd4ebd62a40b6f13a3c741bb215004778c17fd951d0ce5812a7c34476b09 python-orjson-3.9.10-cargo2.tar.gz # Locally computed sha256 checksums sha256 a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2 LICENSE-APACHE sha256 23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3 LICENSE-MIT diff --git a/package/python-orjson/python-orjson.mk b/package/python-orjson/python-orjson.mk index a2e8a50468..dd538acb0a 100644 --- a/package/python-orjson/python-orjson.mk +++ b/package/python-orjson/python-orjson.mk @@ -5,8 +5,9 @@ ################################################################################ PYTHON_ORJSON_VERSION = 3.9.10 -PYTHON_ORJSON_SOURCE = orjson-$(PYTHON_ORJSON_VERSION).tar.gz -PYTHON_ORJSON_SITE = https://files.pythonhosted.org/packages/72/75/642688bf5d99131fe8cf603f4ef9f26e4b1c6ed8f7f5c7e6fb31def54fb7 +PYTHON_ORJSON_SOURCE_PYPI = orjson-$(PYTHON_ORJSON_VERSION).tar.gz +PYTHON_ORJSON_SITE_PYPI = https://files.pythonhosted.org/packages/72/75/642688bf5d99131fe8cf603f4ef9f26e4b1c6ed8f7f5c7e6fb31def54fb7 +PYTHON_ORJSON_SITE = $(PYTHON_ORJSON_SITE_PYPI)/$(PYTHON_ORJSON_SOURCE_PYPI)?buildroot-path=filename PYTHON_ORJSON_SETUP_TYPE = maturin PYTHON_ORJSON_LICENSE = Apache-2.0 or MIT PYTHON_ORJSON_LICENSE_FILES = LICENSE-APACHE LICENSE-MIT diff --git a/package/python-pydantic-core/python-pydantic-core.hash b/package/python-pydantic-core/python-pydantic-core.hash index 817595ba8c..b5d975cb3b 100644 --- a/package/python-pydantic-core/python-pydantic-core.hash +++ b/package/python-pydantic-core/python-pydantic-core.hash @@ -1,4 +1,4 @@ # Locally calculated after vendoring -sha256 032fff43cdec54ac579bbdda1a09163e89634c729c1a8163340601a5dfc55eb3 pydantic_core-2.14.6.tar.gz +sha256 23f5e10872d9c3d49ebc1fcbd317612eb63d65a7afd88dbef8d23cb63d830cb4 python-pydantic-core-2.14.6-cargo2.tar.gz # Locally computed sha256 checksums sha256 2afdd30d54b4d62b6f488a6bcc1546e84ec5061f13f4209c03d012348783795a LICENSE diff --git a/package/python-pydantic-core/python-pydantic-core.mk b/package/python-pydantic-core/python-pydantic-core.mk index 8b6e0053e4..38128ebe46 100644 --- a/package/python-pydantic-core/python-pydantic-core.mk +++ b/package/python-pydantic-core/python-pydantic-core.mk @@ -5,8 +5,9 @@ ################################################################################ PYTHON_PYDANTIC_CORE_VERSION = 2.14.6 -PYTHON_PYDANTIC_CORE_SOURCE = pydantic_core-$(PYTHON_PYDANTIC_CORE_VERSION).tar.gz -PYTHON_PYDANTIC_CORE_SITE = https://files.pythonhosted.org/packages/b2/7d/8304d8471cfe4288f95a3065ebda56f9790d087edc356ad5bd83c89e2d79 +PYTHON_PYDANTIC_CORE_SOURCE_PYPI = pydantic_core-$(PYTHON_PYDANTIC_CORE_VERSION).tar.gz +PYTHON_PYDANTIC_CORE_SITE_PYPI = https://files.pythonhosted.org/packages/b2/7d/8304d8471cfe4288f95a3065ebda56f9790d087edc356ad5bd83c89e2d79 +PYTHON_PYDANTIC_CORE_SITE = $(PYTHON_PYDANTIC_CORE_SITE_PYPI)/$(PYTHON_PYDANTIC_CORE_SOURCE_PYPI)?buildroot-path=filename PYTHON_PYDANTIC_CORE_SETUP_TYPE = maturin PYTHON_PYDANTIC_CORE_LICENSE = MIT PYTHON_PYDANTIC_CORE_LICENSE_FILES = LICENSE diff --git a/package/python-rpds-py/python-rpds-py.hash b/package/python-rpds-py/python-rpds-py.hash index 62b508ae6b..3071f60df7 100644 --- a/package/python-rpds-py/python-rpds-py.hash +++ b/package/python-rpds-py/python-rpds-py.hash @@ -1,4 +1,4 @@ # Locally calculated after vendoring -sha256 d9b542bf5321495737005a78d9fbf40541b898d1e2b3309cbe36a2431977be8b rpds_py-0.18.1.tar.gz +sha256 c16ec7e898efa0302cde6ac3c83ef8a2400f865d44941085b4f87784325fb89a python-rpds-py-0.18.1-cargo2.tar.gz # Locally computed sha256 checksums sha256 314e4e91be3baa93c0fb4bccc9e4e97cd643eb839b065af921782c2175fe9909 LICENSE diff --git a/package/python-rpds-py/python-rpds-py.mk b/package/python-rpds-py/python-rpds-py.mk index c38f749521..398ac6682b 100644 --- a/package/python-rpds-py/python-rpds-py.mk +++ b/package/python-rpds-py/python-rpds-py.mk @@ -5,8 +5,9 @@ ################################################################################ PYTHON_RPDS_PY_VERSION = 0.18.1 -PYTHON_RPDS_PY_SOURCE = rpds_py-$(PYTHON_RPDS_PY_VERSION).tar.gz -PYTHON_RPDS_PY_SITE = https://files.pythonhosted.org/packages/2d/aa/e7c404bdee1db7be09860dff423d022ffdce9269ec8e6532cce09ee7beea +PYTHON_RPDS_PY_SOURCE_PYPI = rpds_py-$(PYTHON_RPDS_PY_VERSION).tar.gz +PYTHON_RPDS_PY_SITE_PYPI = https://files.pythonhosted.org/packages/2d/aa/e7c404bdee1db7be09860dff423d022ffdce9269ec8e6532cce09ee7beea +PYTHON_RPDS_PY_SITE = $(PYTHON_RPDS_PY_SITE_PYPI)/$(PYTHON_RPDS_PY_SOURCE_PYPI)?buildroot-path=filename PYTHON_RPDS_PY_SETUP_TYPE = maturin PYTHON_RPDS_PY_LICENSE = MIT PYTHON_RPDS_PY_LICENSE_FILES = LICENSE diff --git a/package/python-rtoml/python-rtoml.hash b/package/python-rtoml/python-rtoml.hash index 59f17d9d62..dae1badcf3 100644 --- a/package/python-rtoml/python-rtoml.hash +++ b/package/python-rtoml/python-rtoml.hash @@ -1,4 +1,4 @@ # Locally calculated after vendoring -sha256 987d3d9e9d56761b17c3e4e172937cbcc793bf24b0ebb2730647a9a2cf86c789 rtoml-0.10.0.tar.gz +sha256 624cc1ff2b3fdea42aeee3a4d1537d37431ec001870dfee1e04a12bd3076a2d3 python-rtoml-0.10.0-cargo2.tar.gz # Locally computed sha256 checksums sha256 cd5ffde80e6d3286a2e2e5f02fb2cb07b823931ca368e7c735a6c5f5aebe7103 LICENSE diff --git a/package/python-rtoml/python-rtoml.mk b/package/python-rtoml/python-rtoml.mk index 16f9dea573..d5de20f832 100644 --- a/package/python-rtoml/python-rtoml.mk +++ b/package/python-rtoml/python-rtoml.mk @@ -5,8 +5,9 @@ ################################################################################ PYTHON_RTOML_VERSION = 0.10.0 -PYTHON_RTOML_SOURCE = rtoml-$(PYTHON_RTOML_VERSION).tar.gz -PYTHON_RTOML_SITE = https://files.pythonhosted.org/packages/ca/b2/0e77a00e75ed582ec1c4c3a9e1eeed886a15c195bcce87b7daf1171c4115 +PYTHON_RTOML_SOURCE_PYPI = rtoml-$(PYTHON_RTOML_VERSION).tar.gz +PYTHON_RTOML_SITE_PYPI = https://files.pythonhosted.org/packages/ca/b2/0e77a00e75ed582ec1c4c3a9e1eeed886a15c195bcce87b7daf1171c4115 +PYTHON_RTOML_SITE = $(PYTHON_RTOML_SITE_PYPI)/$(PYTHON_RTOML_SOURCE_PYPI)?buildroot-path=filename PYTHON_RTOML_SETUP_TYPE = maturin PYTHON_RTOML_LICENSE = MIT PYTHON_RTOML_LICENSE_FILES = LICENSE -- 2.44.0 From thomas at devoogdt.com Tue May 14 20:23:37 2024 From: thomas at devoogdt.com (Thomas Devoogdt) Date: Tue, 14 May 2024 22:23:37 +0200 Subject: [Buildroot] [PATCH v1] package/libopenssl: fix build for the bootlin-riscv32-glibc toolchain Message-ID: <20240514202337.3934490-1-thomas@devoogdt.com> Seen while using the ./utils/test-pkg utility. /home/thomas/br-test-pkg/bootlin-riscv32-glibc/host/opt/ext-toolchain/bin/../lib/gcc/riscv32-buildroot-linux-gnu/13.2.0/../../../../riscv32-buildroot-linux-gnu/bin/ld: crypto/legacy-dso-riscvcap.o: in function `OPENSSL_cpuid_setup': riscvcap.c:(.text.startup+0x190): undefined reference to `riscv_vlen_asm' Signed-off-by: Thomas Devoogdt --- ...Implement-riscv_vlen_asm-for-riscv32.patch | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 package/libopenssl/0004-Implement-riscv_vlen_asm-for-riscv32.patch diff --git a/package/libopenssl/0004-Implement-riscv_vlen_asm-for-riscv32.patch b/package/libopenssl/0004-Implement-riscv_vlen_asm-for-riscv32.patch new file mode 100644 index 0000000000..5de3221172 --- /dev/null +++ b/package/libopenssl/0004-Implement-riscv_vlen_asm-for-riscv32.patch @@ -0,0 +1,50 @@ +From 84f1acab51e159366b8cf97635ed97f8f0b6564a Mon Sep 17 00:00:00 2001 +From: Hongren Zheng +Date: Fri, 26 Apr 2024 06:03:43 +0000 +Subject: [PATCH] Implement riscv_vlen_asm for riscv32 + +riscvcap.c: undefined reference to 'riscv_vlen_asm' + +Reviewed-by: Paul Dale +Reviewed-by: Tomas Mraz +(Merged from https://github.com/openssl/openssl/pull/24270) + +/home/thomas/br-test-pkg/bootlin-riscv32-glibc/host/opt/ext-toolchain/bin/../lib/gcc/riscv32-buildroot-linux-gnu/13.2.0/../../../../riscv32-buildroot-linux-gnu/bin/ld: crypto/legacy-dso-riscvcap.o: in function `OPENSSL_cpuid_setup': +riscvcap.c:(.text.startup+0x190): undefined reference to `riscv_vlen_asm' + +Upstream: https://github.com/openssl/openssl/commit/87314d24c4f025df1ebf47dc527cc8a96bef354a +Signed-off-by: Thomas Devoogdt +--- + crypto/riscv32cpuid.pl | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +diff --git a/crypto/riscv32cpuid.pl b/crypto/riscv32cpuid.pl +index 20694e7de7..ac1c043ec9 100644 +--- a/crypto/riscv32cpuid.pl ++++ b/crypto/riscv32cpuid.pl +@@ -84,5 +84,22 @@ OPENSSL_cleanse: + ___ + } + ++{ ++my ($ret) = ('a0'); ++$code .= <<___; ++################################################################################ ++# size_t riscv_vlen_asm(void) ++# Return VLEN (i.e. the length of a vector register in bits). ++.p2align 3 ++.globl riscv_vlen_asm ++.type riscv_vlen_asm,\@function ++riscv_vlen_asm: ++ csrr $ret, vlenb ++ slli $ret, $ret, 3 ++ ret ++.size riscv_vlen_asm,.-riscv_vlen_asm ++___ ++} ++ + print $code; + close STDOUT or die "error closing STDOUT: $!"; +-- +2.34.1 + -- 2.34.1 From bonet at grenoble.cnrs.fr Tue May 14 20:28:31 2024 From: bonet at grenoble.cnrs.fr (Edgar Bonet) Date: Tue, 14 May 2024 22:28:31 +0200 Subject: [Buildroot] Nginx fails to build with GCC 14 Message-ID: <5647a701-8c5a-4ce6-92c3-3c252e1cd91b@grenoble.cnrs.fr> Hello all! Building nginx with GCC 14 fails at the configure step with: ./configure: error: libatomic_ops library was not found. Steps to reproduce: git checkout 9764258aaf0e # master as of 2024-05-14 make clean make defconfig utils/config --enable GCC_VERSION_14_X utils/config --enable PACKAGE_NGINX make olddefconfig make If the option GCC_VERSION_14_X is omitted (we then default to GCC 13), the build succeeds. Looking at output/build/nginx-1.24.0/objs/autoconf.err, it appears the error is not caused by a missing library, but by an unrelated ?incompatible pointer type? error on the test program: ... checking for atomic_ops library objs/autotest.c: In function 'main': objs/autotest.c:9:48: error: passing argument 1 of 'AO_compare_and_swap' from incompatible pointer type [-Wincompatible-pointer-types] I did not dig this much further. However, I noticed that the file package/nginx/nginx.mk contains this comment: # disable external libatomic_ops because its detection fails. which makes me wonder why ./configure is probing for the library anyway. Regards, Edgar Bonet. From thomas at devoogdt.com Tue May 14 20:33:47 2024 From: thomas at devoogdt.com (Thomas Devoogdt) Date: Tue, 14 May 2024 22:33:47 +0200 Subject: [Buildroot] [PATCH v2] package/fluent-bit: bump to v3.0.3 In-Reply-To: <20240420185958.4165997-1-thomas@devoogdt.com> References: <20240420185958.4165997-1-thomas@devoogdt.com> Message-ID: <20240514203347.4107730-1-thomas@devoogdt.com> Release Notes: - https://fluentbit.io/announcements/v3.0.1 - https://fluentbit.io/announcements/v3.0.2 - https://fluentbit.io/announcements/v3.0.3 Signed-off-by: Thomas Devoogdt --- v2: bump from v3.0.2 to v3.0.3 --- package/fluent-bit/fluent-bit.hash | 2 +- package/fluent-bit/fluent-bit.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/fluent-bit/fluent-bit.hash b/package/fluent-bit/fluent-bit.hash index cc9c976d60..a53f6dba51 100644 --- a/package/fluent-bit/fluent-bit.hash +++ b/package/fluent-bit/fluent-bit.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 e70ae5be2f0ca1cb842a1c8d2762437907c522765f79b5c0c391eaa1b57c9f4c fluent-bit-3.0.0.tar.gz +sha256 2f3b82e8b7802fe92625009531592f12d500ff61a02ecf4cd27e0f138a6dc566 fluent-bit-3.0.3.tar.gz sha256 0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594 LICENSE diff --git a/package/fluent-bit/fluent-bit.mk b/package/fluent-bit/fluent-bit.mk index 33054bea66..b235c3abf4 100644 --- a/package/fluent-bit/fluent-bit.mk +++ b/package/fluent-bit/fluent-bit.mk @@ -4,7 +4,7 @@ # ################################################################################ -FLUENT_BIT_VERSION = 3.0.0 +FLUENT_BIT_VERSION = 3.0.3 FLUENT_BIT_SITE = $(call github,fluent,fluent-bit,v$(FLUENT_BIT_VERSION)) FLUENT_BIT_LICENSE = Apache-2.0 FLUENT_BIT_LICENSE_FILES = LICENSE -- 2.34.1 From peter at korsgaard.com Tue May 14 21:02:27 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Tue, 14 May 2024 23:02:27 +0200 Subject: [Buildroot] [PATCH 1/1] package/cjson: security bump to version 1.7.18 In-Reply-To: <20240514172032.3581-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Tue, 14 May 2024 19:20:32 +0200") References: <20240514172032.3581-1-fontaine.fabrice@gmail.com> Message-ID: <87a5kst8d8.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > Add NULL check to cJSON_SetValuestring() (CVE-2024-31755) > https://github.com/DaveGamble/cJSON/releases/tag/v1.7.18 > Signed-off-by: Fabrice Fontaine Committed, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Tue May 14 21:01:04 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Tue, 14 May 2024 23:01:04 +0200 Subject: [Buildroot] [git commit] package/cjson: security bump to version 1.7.18 Message-ID: <20240514210348.9D6BF873CE@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=0c091c15ea22d0f5b1e2114bc56e16d77d77247c branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Add NULL check to cJSON_SetValuestring() (CVE-2024-31755) https://github.com/DaveGamble/cJSON/releases/tag/v1.7.18 Signed-off-by: Fabrice Fontaine Signed-off-by: Peter Korsgaard --- package/cjson/cjson.hash | 2 +- package/cjson/cjson.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/cjson/cjson.hash b/package/cjson/cjson.hash index 305dc0d7b8..e07ae0f7bf 100644 --- a/package/cjson/cjson.hash +++ b/package/cjson/cjson.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 c91d1eeb7175c50d49f6ba2a25e69b46bd05cffb798382c19bfb202e467ec51c cjson-1.7.17.tar.gz +sha256 3aa806844a03442c00769b83e99970be70fbef03735ff898f4811dd03b9f5ee5 cjson-1.7.18.tar.gz sha256 a36dda207c36db5818729c54e7ad4e8b0c6fba847491ba64f372c1a2037b6d5c LICENSE diff --git a/package/cjson/cjson.mk b/package/cjson/cjson.mk index 4719a3dc9b..35304ec618 100644 --- a/package/cjson/cjson.mk +++ b/package/cjson/cjson.mk @@ -4,7 +4,7 @@ # ################################################################################ -CJSON_VERSION = 1.7.17 +CJSON_VERSION = 1.7.18 CJSON_SITE = $(call github,DaveGamble,cjson,v$(CJSON_VERSION)) CJSON_INSTALL_STAGING = YES CJSON_LICENSE = MIT From peter at korsgaard.com Tue May 14 21:26:13 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Tue, 14 May 2024 23:26:13 +0200 Subject: [Buildroot] [PATCH 1/1] package/libedit: set LIBEDIT_CPE_ID_VALID In-Reply-To: <20240514172438.68998-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Tue, 14 May 2024 19:24:38 +0200") References: <20240514172438.68998-1-fontaine.fabrice@gmail.com> Message-ID: <875xvgt79m.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > cpe:2.3:a:libedit_project:libedit is a valid CPE identifier for this > package: > https://nvd.nist.gov/products/cpe/detail/42ACF08B-DD62-48D3-8568-32DAFD116956 > Signed-off-by: Fabrice Fontaine Committed, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Tue May 14 21:26:01 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Tue, 14 May 2024 23:26:01 +0200 Subject: [Buildroot] [git commit] package/libedit: set LIBEDIT_CPE_ID_VALID Message-ID: <20240514212627.D6CF1873D5@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=300cb3dc16efeb592bddcb8be07310c21c2c0d7a branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master cpe:2.3:a:libedit_project:libedit is a valid CPE identifier for this package: https://nvd.nist.gov/products/cpe/detail/42ACF08B-DD62-48D3-8568-32DAFD116956 Signed-off-by: Fabrice Fontaine Signed-off-by: Peter Korsgaard --- package/libedit/libedit.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/package/libedit/libedit.mk b/package/libedit/libedit.mk index ea7f98fdbd..98e29a9b1a 100644 --- a/package/libedit/libedit.mk +++ b/package/libedit/libedit.mk @@ -10,6 +10,7 @@ LIBEDIT_INSTALL_STAGING = YES LIBEDIT_DEPENDENCIES = ncurses LIBEDIT_LICENSE = BSD-3-Clause LIBEDIT_LICENSE_FILES = COPYING +LIBEDIT_CPE_ID_VALID = YES # We're patching configure.ac LIBEDIT_AUTORECONF = YES From bernd at kuhls.net Tue May 14 21:54:02 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:54:02 +0200 Subject: [Buildroot] [PATCH 1/5] package/bc: fix build with gcc 14.x Message-ID: <20240514215406.2866563-1-bernd@kuhls.net> Fixes: http://autobuild.buildroot.net/results/4d3/4d3c0e0a08cd734699cb61412c99d705738e8ab4/ Signed-off-by: Bernd Kuhls --- ...and-write-errors-on-input-and-output.patch | 41 ++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/package/bc/0002-notice-read-and-write-errors-on-input-and-output.patch b/package/bc/0002-notice-read-and-write-errors-on-input-and-output.patch index cc72e5cd69..87654e3c14 100644 --- a/package/bc/0002-notice-read-and-write-errors-on-input-and-output.patch +++ b/package/bc/0002-notice-read-and-write-errors-on-input-and-output.patch @@ -26,6 +26,10 @@ Origin: other Bug-Debian: http://bugs.debian.org/488735 Signed-off-by: Matthew Weber +Signed-off-by: Bernd Kuhls +[Bernd: + Updated to incorporate changes by Matthias Klose + on 2024-03-13 that fix Debian bug https://bugs.debian.org/1065375] --- bc/execute.c | 10 +++++++++- bc/main.c | 3 +++ @@ -276,6 +280,14 @@ diff --git a/dc/dc.c b/dc/dc.c index 6a2bb26..ccdb1c2 100644 --- a/dc/dc.c +++ b/dc/dc.c +@@ -45,6 +45,7 @@ + #include + #include "dc.h" + #include "dc-proto.h" ++#include "number.h" + + #ifndef EXIT_SUCCESS /* C89 */ + # define EXIT_SUCCESS 0 @@ -59,6 +59,7 @@ static void bug_report_info DC_DECLVOID() { @@ -304,6 +316,14 @@ diff --git a/dc/eval.c b/dc/eval.c index 05a3d9e..6c54e61 100644 --- a/dc/eval.c +++ b/dc/eval.c +@@ -41,6 +41,7 @@ + #endif + #include "dc.h" + #include "dc-proto.h" ++#include "number.h" + + typedef enum {DC_FALSE, DC_TRUE} dc_boolean; + @@ -97,12 +97,15 @@ static int input_pushback; static int input_fil DC_DECLVOID() @@ -512,6 +532,14 @@ diff --git a/dc/misc.c b/dc/misc.c index cd23602..cd910b8 100644 --- a/dc/misc.c +++ b/dc/misc.c +@@ -47,6 +47,7 @@ + #include + #include "dc.h" + #include "dc-proto.h" ++#include "number.h" + + #ifndef EXIT_FAILURE /* C89 */ + # define EXIT_FAILURE 1 @@ -89,6 +89,7 @@ dc_show_id DC_DECLARG((fp, id, suffix)) fprintf(fp, "'%c' (%#o)%s", (unsigned int) id, id, suffix); else @@ -593,8 +621,11 @@ diff --git a/dc/stack.c b/dc/stack.c index 49422df..174411d 100644 --- a/dc/stack.c +++ b/dc/stack.c -@@ -35,7 +35,10 @@ +@@ -33,9 +33,13 @@ + #include "dc.h" + #include "dc-proto.h" #include "dc-regdef.h" ++#include "number.h" /* an oft-used error message: */ -#define Empty_Stack fprintf(stderr, "%s: stack empty\n", progname) @@ -657,6 +688,14 @@ diff --git a/dc/string.c b/dc/string.c index dee9169..389d899 100644 --- a/dc/string.c +++ b/dc/string.c +@@ -45,6 +45,7 @@ + #endif + #include "dc.h" + #include "dc-proto.h" ++#include "number.h" + + /* here is the completion of the dc_string type: */ + struct dc_string { @@ -94,6 +94,7 @@ dc_out_str DC_DECLARG((value, discard_flag)) dc_discard discard_flag DC_DECLEND { -- 2.39.2 From bernd at kuhls.net Tue May 14 21:54:03 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:54:03 +0200 Subject: [Buildroot] [PATCH 2/5] package/rrdtool: fix build with gcc 14.x In-Reply-To: <20240514215406.2866563-1-bernd@kuhls.net> References: <20240514215406.2866563-1-bernd@kuhls.net> Message-ID: <20240514215406.2866563-2-bernd@kuhls.net> Signed-off-by: Bernd Kuhls --- .../0001-Constify-argv-fix-warnings.patch | 1586 +++++++++++++++++ 1 file changed, 1586 insertions(+) create mode 100644 package/rrdtool/0001-Constify-argv-fix-warnings.patch diff --git a/package/rrdtool/0001-Constify-argv-fix-warnings.patch b/package/rrdtool/0001-Constify-argv-fix-warnings.patch new file mode 100644 index 0000000000..e41e729a0e --- /dev/null +++ b/package/rrdtool/0001-Constify-argv-fix-warnings.patch @@ -0,0 +1,1586 @@ +From b76e3c578f1e9f582e9c28f50d82b1f569602075 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michal=20Such=C3=A1nek?= +Date: Fri, 5 Jan 2024 15:31:48 +0100 +Subject: [PATCH] Constify argv, fix warnings. (#1242) + +* Fix perl warnings + + - cast POPs to void to avoid unused value warning + - declare functions that don't set RETVAL as returning void + +Signed-off-by: Michal Suchanek + +* Constify argv + +rrd has no business modifying the string pointed to by passed agrv, and +as far as gcc can see it does indeed not modify them because it compiles +with const argv. + +This fixes warnings when passing const strings into rrd, and avoids the +need to duplicate all strings in the tcl bindings. + +This fixes warnings like these: +[ 3s] prog/sensord/rrd.c: In function 'rrdInit': +[ 3s] prog/sensord/rrd.c:302:40: warning: cast discards 'const' qualifier from pointer target type [-Wcast-qual] +[ 3s] 302 | ret = rrd_create(argc, (char**) argv); +[ 3s] | ^ +[ 3s] prog/sensord/rrd.c: In function 'rrdUpdate': +[ 3s] prog/sensord/rrd.c:458:42: warning: cast discards 'const' qualifier from pointer target type [-Wcast-qual] +[ 3s] 458 | if ((ret = rrd_update(3, (char **) /* WEAK */ argv))) { +[ 3s] | ^ + +Signed-off-by: Michal Suchanek + +* tcl: Do not duplicate const strings + +--------- + +Signed-off-by: Michal Suchanek + +Upstream: https://github.com/oetiker/rrdtool-1.x/commit/b76e3c578f1e9f582e9c28f50d82b1f569602075 + +Signed-off-by: Bernd Kuhls +--- + CHANGES | 3 ++ + bindings/lua/rrdlua.c | 25 +++++----- + bindings/perl-shared/RRDs.xs | 36 +++++++------- + bindings/python/rrdtoolmodule.c | 38 +++++++-------- + bindings/ruby/main.c | 10 ++-- + bindings/tcl/tclrrd.c | 84 ++++++++------------------------- + src/optparse.c | 14 +++--- + src/optparse.h | 6 +-- + src/rrd.h | 38 +++++++-------- + src/rrd_cgi.c | 24 +++++----- + src/rrd_create.c | 2 +- + src/rrd_daemon.c | 12 ++--- + src/rrd_dump.c | 4 +- + src/rrd_fetch.c | 2 +- + src/rrd_first.c | 2 +- + src/rrd_flushcached.c | 2 +- + src/rrd_graph.c | 6 +-- + src/rrd_graph.h | 4 +- + src/rrd_graph_helper.c | 2 +- + src/rrd_info.c | 2 +- + src/rrd_last.c | 2 +- + src/rrd_lastupdate.c | 2 +- + src/rrd_list.c | 6 +-- + src/rrd_modify.c | 2 +- + src/rrd_modify.h | 2 +- + src/rrd_resize.c | 4 +- + src/rrd_restore.c | 2 +- + src/rrd_tool.c | 26 +++++----- + src/rrd_tune.c | 2 +- + src/rrd_update.c | 4 +- + src/rrd_xport.c | 2 +- + src/rrdupdate.c | 7 +-- + 32 files changed, 168 insertions(+), 209 deletions(-) + +diff --git a/bindings/lua/rrdlua.c b/bindings/lua/rrdlua.c +index d1a700641..2095c3b5b 100644 +--- a/bindings/lua/rrdlua.c ++++ b/bindings/lua/rrdlua.c +@@ -37,8 +37,8 @@ + extern void rrd_freemem(void *mem); + + extern int luaopen_rrd (lua_State * L); +-typedef int (*RRD_FUNCTION)(int, char **); +-typedef rrd_info_t *(RRD_FUNCTION_V)(int, char **); ++typedef int (*RRD_FUNCTION)(int, const char **); ++typedef rrd_info_t *(RRD_FUNCTION_V)(int, const char **); + + /**********************************************************/ + +@@ -49,9 +49,9 @@ static void reset_rrd_state(void) + rrd_clear_error(); + } + +-static char **make_argv(const char *cmd, lua_State * L) ++static const char **make_argv(const char *cmd, lua_State * L) + { +- char **argv; ++ const char **argv; + int i; + int argc = lua_gettop(L) + 1; + +@@ -60,13 +60,12 @@ static char **make_argv(const char *cmd, lua_State * L) + luaL_error(L, "Can't allocate memory for arguments array", cmd); + + /* fprintf(stderr, "Args:\n"); */ +- argv[0] = (char *) cmd; /* Dummy arg. Cast to (char *) because rrd */ +- /* functions don't expect (const * char) */ ++ argv[0] = cmd; + /* fprintf(stderr, "%s\n", argv[0]); */ + for (i=1; i + #include "../../src/rrd_tool.h" + #include "../../src/rrd_format.h" ++#include "../../src/unused.h" + + /* support pre-8.4 tcl */ + +@@ -41,47 +42,39 @@ extern int Tclrrd_SafeInit( + * Hence, we need to do some preparation before + * calling the rrd library functions. + */ +-static char **getopt_init( ++static const char **getopt_init( + int argc, + CONST84 char *argv[]) + { +- char **argv2; ++ const char **argv2; + int i; + + argv2 = calloc(argc, sizeof(char *)); + for (i = 0; i < argc; i++) { +- argv2[i] = strdup(argv[i]); ++ argv2[i] = argv[i]; + } + return argv2; + } + + static void getopt_cleanup( +- int argc, +- char **argv2) ++ int UNUSED(argc), ++ const char **argv2) + { +- int i; +- +- for (i = 0; i < argc; i++) { +- if (argv2[i] != NULL) { +- free(argv2[i]); +- } +- } +- free(argv2); ++ free((void *)argv2); + } + + static void getopt_free_element( +- char *argv2[], ++ const char *argv2[], + int argn) + { + if (argv2[argn] != NULL) { +- free(argv2[argn]); + argv2[argn] = NULL; + } + } + + static void getopt_squieeze( + int *argc, +- char *argv2[]) ++ const char *argv2[]) + { + int i, null_i = 0, argc_tmp = *argc; + +@@ -104,7 +97,7 @@ static int Rrd_Create( + CONST84 char *argv[]) + { + int argv_i; +- char **argv2; ++ const char **argv2; + char *parsetime_error = NULL; + time_t last_up = time(NULL) - 10; + long int long_tmp; +@@ -295,7 +288,7 @@ static int Rrd_Flushcached( + return TCL_ERROR; + } + +- rrd_flushcached(argc, (char**)argv); ++ rrd_flushcached(argc, argv); + + if (rrd_test_error()) { + Tcl_AppendResult(interp, "RRD Error: ", +@@ -380,7 +373,7 @@ static int Rrd_Update( + CONST84 char *argv[]) + { + int argv_i; +- char **argv2, *template = NULL; ++ const char **argv2, *template = NULL; + + argv2 = getopt_init(argc, argv); + +@@ -391,16 +384,10 @@ static int Rrd_Update( + Tcl_AppendResult(interp, "RRD Error: option '", + argv2[argv_i - 1], "' needs an argument", + (char *) NULL); +- if (template != NULL) { +- free(template); +- } + getopt_cleanup(argc, argv2); + return TCL_ERROR; + } +- if (template != NULL) { +- free(template); +- } +- template = strdup(argv2[argv_i]); ++ template = argv2[argv_i]; + getopt_free_element(argv2, argv_i - 1); + getopt_free_element(argv2, argv_i); + } else if (!strcmp(argv2[argv_i], "--")) { +@@ -409,9 +396,6 @@ static int Rrd_Update( + } else if (argv2[argv_i][0] == '-') { + Tcl_AppendResult(interp, "RRD Error: unknown option '", + argv2[argv_i], "'", (char *) NULL); +- if (template != NULL) { +- free(template); +- } + getopt_cleanup(argc, argv2); + return TCL_ERROR; + } +@@ -422,18 +406,12 @@ static int Rrd_Update( + if (argc < 2) { + Tcl_AppendResult(interp, "RRD Error: needs rrd filename", + (char *) NULL); +- if (template != NULL) { +- free(template); +- } + getopt_cleanup(argc, argv2); + return TCL_ERROR; + } + + rrd_update_r(argv2[1], template, argc - 2, (const char **)argv2 + 2); + +- if (template != NULL) { +- free(template); +- } + getopt_cleanup(argc, argv2); + + if (rrd_test_error()) { +@@ -454,7 +432,6 @@ static int Rrd_Info( + { + int status = TCL_OK; + rrd_info_t *data; +- char **argv2; + + /* TODO: support for rrdcached */ + if (argc != 2) { +@@ -463,9 +440,7 @@ static int Rrd_Info( + return TCL_ERROR; + } + +- argv2 = getopt_init(argc, argv); +- +- data = rrd_info_r(argv2[1]); ++ data = rrd_info_r(argv[1]); + + if (data) { + Tcl_SetObjResult(interp, convert_info(data)); +@@ -477,7 +452,6 @@ static int Rrd_Info( + status = TCL_ERROR; + } + +- getopt_cleanup(argc, argv2); + return status; + } + +@@ -488,7 +462,6 @@ static int Rrd_Lastupdate( + CONST84 char *argv[]) + { + time_t last_update; +- char **argv2; + char **ds_namv; + char **last_ds; + char s[30]; +@@ -502,8 +475,7 @@ static int Rrd_Lastupdate( + return TCL_ERROR; + } + +- argv2 = getopt_init(argc, argv); +- if (rrd_lastupdate_r(argv2[1], &last_update, ++ if (rrd_lastupdate_r(argv[1], &last_update, + &ds_cnt, &ds_namv, &last_ds) == 0) { + listPtr = Tcl_GetObjResult(interp); + for (i = 0; i < ds_cnt; i++) { +@@ -527,7 +499,6 @@ static int Rrd_Lastupdate( + free(ds_namv); + } + } +- getopt_cleanup(argc, argv2); + return TCL_OK; + } + +@@ -543,10 +514,8 @@ static int Rrd_Fetch( + char **ds_namv; + Tcl_Obj *listPtr; + char s[30]; +- char **argv2; + +- argv2 = getopt_init(argc, argv); +- if (rrd_fetch(argc, argv2, &start, &end, &step, ++ if (rrd_fetch(argc, argv, &start, &end, &step, + &ds_cnt, &ds_namv, &data) != -1) { + datai = data; + listPtr = Tcl_GetObjResult(interp); +@@ -562,7 +531,6 @@ static int Rrd_Fetch( + free(ds_namv); + free(data); + } +- getopt_cleanup(argc, argv2); + + if (rrd_test_error()) { + Tcl_AppendResult(interp, "RRD Error: ", +@@ -590,7 +558,7 @@ static int Rrd_Graph( + int rc, xsize, ysize; + double ymin, ymax; + char dimensions[50]; +- char **argv2; ++ const char **argv2; + CONST84 char *save; + + /* +@@ -692,11 +660,7 @@ static int Rrd_Tune( + int argc, + CONST84 char *argv[]) + { +- char **argv2; +- +- argv2 = getopt_init(argc, argv); +- rrd_tune(argc, argv2); +- getopt_cleanup(argc, argv2); ++ rrd_tune(argc, argv); + + if (rrd_test_error()) { + Tcl_AppendResult(interp, "RRD Error: ", +@@ -716,11 +680,7 @@ static int Rrd_Resize( + int argc, + CONST84 char *argv[]) + { +- char **argv2; +- +- argv2 = getopt_init(argc, argv); +- rrd_resize(argc, argv2); +- getopt_cleanup(argc, argv2); ++ rrd_resize(argc, argv); + + if (rrd_test_error()) { + Tcl_AppendResult(interp, "RRD Error: ", +@@ -740,11 +700,7 @@ static int Rrd_Restore( + int argc, + CONST84 char *argv[]) + { +- char **argv2; +- +- argv2 = getopt_init(argc, argv); +- rrd_restore(argc, argv2); +- getopt_cleanup(argc, argv2); ++ rrd_restore(argc, argv); + + if (rrd_test_error()) { + Tcl_AppendResult(interp, "RRD Error: ", +diff --git a/src/optparse.c b/src/optparse.c +index 9040ba8b2..79a3efe11 100644 +--- a/src/optparse.c ++++ b/src/optparse.c +@@ -10,7 +10,7 @@ + #define options_argv(i) \ + ((i) < options->argc ? options->argv[i] : NULL) + +-void optparse_init(struct optparse *options, int argc, char **argv) ++void optparse_init(struct optparse *options, int argc, const char **argv) + { + options->argv = argv; + options->argc = argc; +@@ -42,7 +42,7 @@ is_longopt(const char *arg) + static void + permute(struct optparse *options, int index) + { +- char *nonoption = options->argv[index]; ++ const char *nonoption = options->argv[index]; + for (int i = index; i < options->optind - 1; i++) + options->argv[i] = options->argv[i + 1]; + options->argv[options->optind - 1] = nonoption; +@@ -67,7 +67,7 @@ int optparse(struct optparse *options, const char *optstring) + options->errmsg[0] = '\0'; + options->optopt = 0; + options->optarg = NULL; +- char *option = options_argv(options->optind); ++ const char *option = options_argv(options->optind); + if (option == NULL) { + return -1; + } else if (is_dashdash(option)) { +@@ -88,7 +88,7 @@ int optparse(struct optparse *options, const char *optstring) + option += options->subopt + 1; + options->optopt = option[0]; + int type = argtype(optstring, option[0]); +- char *next = options_argv(options->optind + 1); ++ const char *next = options_argv(options->optind + 1); + switch (type) { + case -1: + opterror(options, "invalid option -- '%c'", option[0]); +@@ -128,10 +128,10 @@ int optparse(struct optparse *options, const char *optstring) + return 0; + } + +-char *optparse_arg(struct optparse *options) ++const char *optparse_arg(struct optparse *options) + { + options->subopt = 0; +- char *option = options->argv[options->optind]; ++ const char *option = options->argv[options->optind]; + if (option != NULL) + options->optind++; + return option; +@@ -222,7 +222,7 @@ optparse_long(struct optparse *options, + int *longindex) + { + // printf("%i < %i\n",options->optind,options->argc); +- char *option = options_argv(options->optind); ++ const char *option = options_argv(options->optind); + if (option == NULL) { + return -1; + } else if (is_dashdash(option)) { +diff --git a/src/optparse.h b/src/optparse.h +index c4b0ec19c..7a0bb3885 100644 +--- a/src/optparse.h ++++ b/src/optparse.h +@@ -44,7 +44,7 @@ + */ + + struct optparse { +- char **argv; ++ const char **argv; + int argc; + int permute; + int optind; +@@ -65,7 +65,7 @@ struct optparse_long { + /** + * Initializes the parser state. + */ +-void optparse_init(struct optparse *options, int argc, char **argv); ++void optparse_init(struct optparse *options, int argc, const char **argv); + + /** + * Read the next option in the argv array. +@@ -98,6 +98,6 @@ optparse_long(struct optparse *options, + * subcommand returned by optparse_arg(). This function allows you to + * ignore the value of optind. + */ +-char *optparse_arg(struct optparse *options); ++const char *optparse_arg(struct optparse *options); + + #endif +diff --git a/src/rrd.h b/src/rrd.h +index 184887ccc..b40f9a449 100644 +--- a/src/rrd.h ++++ b/src/rrd.h +@@ -155,10 +155,10 @@ extern "C" { + /* main function blocks */ + int rrd_create( + int, +- char **); ++ const char **); + rrd_info_t *rrd_info( + int, +- char **); ++ const char **); + rrd_info_t *rrd_info_push( + rrd_info_t *, + char *, +@@ -170,19 +170,19 @@ extern "C" { + rrd_info_t *); + char *rrd_list( + int, +- char **); ++ const char **); + char *rrd_list_r( + int, +- char *dirname); ++ const char *dirname); + int rrd_update( + int, +- char **); ++ const char **); + rrd_info_t *rrd_update_v( + int, +- char **); ++ const char **); + int rrd_graph( + int, +- char **, ++ const char **, + char ***, + int *, + int *, +@@ -191,11 +191,11 @@ extern "C" { + double *); + rrd_info_t *rrd_graph_v( + int, +- char **); ++ const char **); + + int rrd_fetch( + int, +- char **, ++ const char **, + time_t *, + time_t *, + unsigned long *, +@@ -204,32 +204,32 @@ extern "C" { + rrd_value_t **); + int rrd_restore( + int, +- char **); ++ const char **); + int rrd_dump( + int, +- char **); ++ const char **); + int rrd_tune( + int, +- char **); ++ const char **); + time_t rrd_last( + int, +- char **); ++ const char **); + int rrd_lastupdate( + int argc, +- char **argv); ++ const char **argv); + time_t rrd_first( + int, +- char **); ++ const char **); + int rrd_resize( + int, +- char **); ++ const char **); + char *rrd_strversion( + void); + double rrd_version( + void); + int rrd_xport( + int, +- char **, ++ const char **, + int *, + time_t *, + time_t *, +@@ -239,7 +239,7 @@ extern "C" { + rrd_value_t **); + int rrd_flushcached( + int argc, +- char **argv); ++ const char **argv); + + void rrd_freemem( + void *mem); +@@ -323,7 +323,7 @@ extern "C" { + const char **argv); + int rrd_dump_opt_r( + const char *filename, +- char *outname, ++ const char *outname, + int opt_noheader); + int rrd_dump_r( + const char *filename, +diff --git a/src/rrd_cgi.c b/src/rrd_cgi.c +index b82c310db..14a4f511a 100644 +--- a/src/rrd_cgi.c ++++ b/src/rrd_cgi.c +@@ -102,7 +102,7 @@ static char *rrdstrip( + static char *scanargs( + char *line, + int *argc, +- char ***args); ++ const char ***args); + + /* format at-time specified times using strftime */ + static char *printstrftime( +@@ -317,7 +317,7 @@ static const char *putvar( + } + + /* expand those RRD:* directives that can be used recursively */ +-static char *rrd_expand_vars( ++static const char *rrd_expand_vars( + char *buffer) + { + int i; +@@ -434,7 +434,7 @@ static int readfile( + + int main( + int argc, +- char *argv[]) ++ const char *argv[]) + { + char *buffer; + long i; +@@ -926,7 +926,7 @@ static char *drawgraph( + } + calfree(); + if (rrd_graph +- (argc + 1, (char **) args - 1, &calcpr, &xsize, &ysize, NULL, &ymin, ++ (argc + 1, args - 1, &calcpr, &xsize, &ysize, NULL, &ymin, + &ymax) != -1) { + return stralloc(calcpr[0]); + } else { +@@ -973,7 +973,7 @@ static char *printtimelast( + /* not raising argc in step with args - 1 since the last argument + will be used below for strftime */ + +- last = rrd_last(argc, (char **) args - 1); ++ last = rrd_last(argc, args - 1); + if (rrd_test_error()) { + char err[4096]; + +@@ -1027,7 +1027,7 @@ static char *printtimenow( + static char *scanargs( + char *line, + int *argument_count, +- char ***arguments) ++ const char ***arguments) + { + char *getP; /* read cursor */ + char *putP; /* write cursor */ +@@ -1039,8 +1039,8 @@ static char *scanargs( + + /* local array of arguments while parsing */ + int argc = 1; +- char **argv; +- char **argv_tmp; /* temp variable for realloc() */ ++ const char **argv; ++ const char **argv_tmp; /* temp variable for realloc() */ + + #ifdef DEBUG_PARSER + printf("<-- scanargs(%s) -->\n", line); +@@ -1051,7 +1051,7 @@ static char *scanargs( + + /* create initial argument array of char pointers */ + argsz = 32; +- argv = (char **) malloc(argsz * sizeof(char *)); ++ argv = malloc(argsz * sizeof(char *)); + if (!argv) { + return NULL; + } +@@ -1146,7 +1146,7 @@ static char *scanargs( + if (argc == argsz - 2) { + /* resize argument array */ + argsz *= 2; +- argv_tmp = (char **) rrd_realloc(argv, argsz * sizeof(char *)); ++ argv_tmp = rrd_realloc(argv, argsz * sizeof(char *)); + if (*argv_tmp == NULL) { + return NULL; + } +@@ -1213,7 +1213,7 @@ static int parse( + /* the name of the vairable ... */ + char *val; + long valln; +- char **args; ++ const char **args; + char *end; + long end_offset; + int argc; +@@ -1264,7 +1264,7 @@ static int parse( + /* make sure we do not shrink the mallocd block */ + size_t newbufsize = i + strlen(end) + valln + 1; + +- *buf = (char *) rrd_realloc(*buf, newbufsize); ++ *buf = rrd_realloc(*buf, newbufsize); + + if (*buf == NULL) { + perror("Realoc buf:"); +diff --git a/src/rrd_create.c b/src/rrd_create.c +index f9bad0866..919b4195a 100644 +--- a/src/rrd_create.c ++++ b/src/rrd_create.c +@@ -76,7 +76,7 @@ static void parseGENERIC_DS( + + int rrd_create( + int argc, +- char **argv) ++ const char **argv) + { + struct optparse_long longopts[] = { + {"start", 'b', OPTPARSE_REQUIRED}, +diff --git a/src/rrd_daemon.c b/src/rrd_daemon.c +index 751798aa1..21c38a11d 100644 +--- a/src/rrd_daemon.c ++++ b/src/rrd_daemon.c +@@ -1877,7 +1877,7 @@ static int handle_request_tune( + HANDLER_PROTO) + { /* {{{ */ + int status; +- char** argv = NULL; ++ const char** argv = NULL; + int argc, argc_tmp; + char* i; + int rc; +@@ -1916,7 +1916,7 @@ static int handle_request_tune( + goto done; + } + +- if ((argv = (char **) malloc(argc * sizeof(char*))) == NULL) { ++ if ((argv = malloc(argc * sizeof(char*))) == NULL) { + rc = send_response(sock, RESP_ERR, "%s\n", rrd_strerror(ENOMEM)); + goto done; + } +@@ -1927,7 +1927,7 @@ static int handle_request_tune( + argc_tmp += 1; + } + +- status = rrd_tune_r(file, argc, (const char **)argv); ++ status = rrd_tune_r(file, argc, argv); + if (status != 0) { + rc = send_response(sock, RESP_ERR, "Got error %s\n", rrd_get_error()); + goto done; +@@ -1935,7 +1935,7 @@ static int handle_request_tune( + rc = send_response(sock, RESP_OK, "Success\n"); + done: + free(file); +- free(argv); ++ free((void *)argv); + return rc; + } + +@@ -4505,7 +4505,7 @@ static int cleanup( + + static int read_options( + int argc, +- char **argv) ++ const char **argv) + { /* {{{ */ + struct optparse_long longopts[] = { + {NULL, 'a', OPTPARSE_REQUIRED}, +@@ -5050,7 +5050,7 @@ static int read_options( + + int main( + int argc, +- char **argv) ++ const char **argv) + { + int status; + +diff --git a/src/rrd_dump.c b/src/rrd_dump.c +index a4490d594..c58e0ee4a 100644 +--- a/src/rrd_dump.c ++++ b/src/rrd_dump.c +@@ -497,7 +497,7 @@ static size_t rrd_dump_opt_cb_fileout( + + int rrd_dump_opt_r( + const char *filename, +- char *outname, ++ const char *outname, + int opt_noheader) + { + FILE *out_file; +@@ -543,7 +543,7 @@ int rrd_dump_r( + + int rrd_dump( + int argc, +- char **argv) ++ const char **argv) + { + int opt; + struct optparse_long longopts[] = { +diff --git a/src/rrd_fetch.c b/src/rrd_fetch.c +index c739bfc45..54780f19b 100644 +--- a/src/rrd_fetch.c ++++ b/src/rrd_fetch.c +@@ -61,7 +61,7 @@ + + int rrd_fetch( + int argc, +- char **argv, ++ const char **argv, + time_t *start, + time_t *end, /* which time frame do you want ? + * will be changed to represent reality */ +diff --git a/src/rrd_first.c b/src/rrd_first.c +index a696c5c38..f3dde5404 100644 +--- a/src/rrd_first.c ++++ b/src/rrd_first.c +@@ -13,7 +13,7 @@ + + time_t rrd_first( + int argc, +- char **argv) ++ const char **argv) + { + struct optparse_long longopts[] = { + {"rraindex", 129, OPTPARSE_REQUIRED}, +diff --git a/src/rrd_flushcached.c b/src/rrd_flushcached.c +index 090bca749..3bf6cd29d 100644 +--- a/src/rrd_flushcached.c ++++ b/src/rrd_flushcached.c +@@ -22,7 +22,7 @@ + #include "rrd_tool.h" + #include "rrd_client.h" + +-int rrd_flushcached (int argc, char **argv) ++int rrd_flushcached (int argc, const char **argv) + { + struct optparse_long longopts[] = { + {"daemon", 'd', OPTPARSE_REQUIRED}, +diff --git a/src/rrd_graph.c b/src/rrd_graph.c +index b32d45085..46511e9a3 100644 +--- a/src/rrd_graph.c ++++ b/src/rrd_graph.c +@@ -4607,7 +4607,7 @@ int scan_for_col( + /* Now just a wrapper around rrd_graph_v */ + int rrd_graph( + int argc, +- char **argv, ++ const char **argv, + char ***prdata, + int *xsize, + int *ysize, +@@ -4690,7 +4690,7 @@ int rrd_graph( + + rrd_info_t *rrd_graph_v( + int argc, +- char **argv) ++ const char **argv) + { + image_desc_t im; + rrd_info_t *grinfo; +@@ -4953,7 +4953,7 @@ void rrd_graph_init( + + void rrd_graph_options( + int argc, +- char *argv[], ++ const char **argv, + struct optparse *poptions, + image_desc_t *im) + { +diff --git a/src/rrd_graph.h b/src/rrd_graph.h +index 4df32ec66..083cf3800 100644 +--- a/src/rrd_graph.h ++++ b/src/rrd_graph.h +@@ -473,12 +473,12 @@ void time_clean( + + void rrd_graph_options( + int, +- char **, ++ const char **, + struct optparse *, + image_desc_t *); + void rrd_graph_script( + int, +- char **, ++ const char **, + image_desc_t *const, + int); + int rrd_graph_color( +diff --git a/src/rrd_graph_helper.c b/src/rrd_graph_helper.c +index 99cdefa65..ba90e1a6c 100644 +--- a/src/rrd_graph_helper.c ++++ b/src/rrd_graph_helper.c +@@ -1952,7 +1952,7 @@ static int parse_xport( + + void rrd_graph_script( + int argc, +- char *argv[], ++ const char **argv, + image_desc_t *const im, + int optno) + { +diff --git a/src/rrd_info.c b/src/rrd_info.c +index c0c6f68c7..eb0d4e4de 100644 +--- a/src/rrd_info.c ++++ b/src/rrd_info.c +@@ -82,7 +82,7 @@ rrd_info_t + + rrd_info_t *rrd_info( + int argc, +- char **argv) ++ const char **argv) + { + struct optparse_long longopts[] = { + {"daemon", 'd', OPTPARSE_REQUIRED}, +diff --git a/src/rrd_last.c b/src/rrd_last.c +index 026a1e828..1aae72512 100644 +--- a/src/rrd_last.c ++++ b/src/rrd_last.c +@@ -11,7 +11,7 @@ + + time_t rrd_last( + int argc, +- char **argv) ++ const char **argv) + { + char *opt_daemon = NULL; + time_t lastupdate; +diff --git a/src/rrd_lastupdate.c b/src/rrd_lastupdate.c +index ab30dcf67..4f7f4770e 100644 +--- a/src/rrd_lastupdate.c ++++ b/src/rrd_lastupdate.c +@@ -14,7 +14,7 @@ + #include "rrd_client.h" + #include + +-int rrd_lastupdate (int argc, char **argv) ++int rrd_lastupdate (int argc, const char **argv) + { + struct optparse_long longopts[] = { + {"daemon", 'd', OPTPARSE_REQUIRED}, +diff --git a/src/rrd_list.c b/src/rrd_list.c +index e743b9b7d..6e96220ea 100644 +--- a/src/rrd_list.c ++++ b/src/rrd_list.c +@@ -37,7 +37,7 @@ static char *move_past_prefix(const char *prefix, const char *string) + return (char *)&(string[index]); + } + +-static char *rrd_list_rec(int recursive, char *root, char *dirname) ++static char *rrd_list_rec(int recursive, const char *root, const char *dirname) + { + #define SANE_ASPRINTF2(_dest_str, _format, ...) \ + if (asprintf(&_dest_str, _format, __VA_ARGS__) == -1) { \ +@@ -138,7 +138,7 @@ static char *rrd_list_rec(int recursive, char *root, char *dirname) + return out; + } + +-char *rrd_list_r(int recursive, char *dirname) ++char *rrd_list_r(int recursive, const char *dirname) + { + #define SANE_ASPRINTF(_dest_str, _format, ...) \ + if (asprintf(&_dest_str, _format, __VA_ARGS__) == -1) { \ +@@ -240,7 +240,7 @@ char *rrd_list_r(int recursive, char *dirname) + return rrd_list_rec(recursive, dirname, dirname); + } + +-char *rrd_list(int argc, char **argv) ++char *rrd_list(int argc, const char **argv) + { + char *opt_daemon = NULL; + int status; +diff --git a/src/rrd_modify.c b/src/rrd_modify.c +index a2b07f640..70ac9e77f 100644 +--- a/src/rrd_modify.c ++++ b/src/rrd_modify.c +@@ -1297,7 +1297,7 @@ static int add_rras(const rrd_t *in, rrd_t *out, const int *ds_map, + } + + int handle_modify(const rrd_t *in, const char *outfilename, +- int argc, char **argv, int optidx, ++ int argc, const char **argv, int optidx, + int newstep) { + // parse add/remove options + int rc = -1; +diff --git a/src/rrd_modify.h b/src/rrd_modify.h +index 52d8789be..64a39926e 100644 +--- a/src/rrd_modify.h ++++ b/src/rrd_modify.h +@@ -28,7 +28,7 @@ typedef struct { + } rra_mod_op_t; + + int handle_modify(const rrd_t *in, const char *outfilename, +- int argc, char **argv, int optind, ++ int argc, const char **argv, int optind, + int newstep); + + typedef union { +diff --git a/src/rrd_resize.c b/src/rrd_resize.c +index fb75d81ff..742e6d141 100644 +--- a/src/rrd_resize.c ++++ b/src/rrd_resize.c +@@ -12,9 +12,9 @@ + + int rrd_resize( + int argc, +- char **argv) ++ const char **argv) + { +- char *infilename, outfilename[11] = "resize.rrd"; ++ const char *infilename, outfilename[11] = "resize.rrd"; + rrd_t rrdold, rrdnew; + rrd_value_t buffer; + int version; +diff --git a/src/rrd_restore.c b/src/rrd_restore.c +index 85d481e0c..ebef5efe8 100644 +--- a/src/rrd_restore.c ++++ b/src/rrd_restore.c +@@ -1378,7 +1378,7 @@ int write_file( + + int rrd_restore( + int argc, +- char **argv) ++ const char **argv) + { + struct optparse_long longopts[] = { + {"range-check", 'r', OPTPARSE_NONE}, +diff --git a/src/rrd_tool.c b/src/rrd_tool.c +index cc6119d9a..56321ee1a 100644 +--- a/src/rrd_tool.c ++++ b/src/rrd_tool.c +@@ -22,16 +22,16 @@ + + + static void PrintUsage( +- char *cmd); ++ const char *cmd); + static int CountArgs( + char *aLine); + static int CreateArgs( ++ const char *, + char *, +- char *, +- char **); ++ const char **); + static int HandleInputLine( + int, +- char **, ++ const char **, + FILE *); + int RemoteMode = 0; + int ChangeRoot = 0; +@@ -42,7 +42,7 @@ int ChangeRoot = 0; + + + static void PrintUsage( +- char *cmd) ++ const char *cmd) + { + + #ifdef BUILD_DATE +@@ -443,11 +443,11 @@ static char *fgetslong( + + int main( + int argc, +- char *argv[]) ++ const char *argv[]) + { +- char **myargv; ++ const char **myargv; + char *aLine; +- char *firstdir = ""; ++ const char *firstdir = ""; + + #ifdef MUST_DISABLE_SIGFPE + signal(SIGFPE, SIG_IGN); +@@ -526,7 +526,7 @@ int main( + printf("ERROR: not enough arguments\n"); + continue; + } +- if ((myargv = (char **) malloc((argc + 1) * ++ if ((myargv = malloc((argc + 1) * + sizeof(char *))) == NULL) { + perror("malloc"); + exit(1); +@@ -572,7 +572,7 @@ int main( + resolving them portably is not really simple. */ + static int HandleInputLine( + int argc, +- char **argv, ++ const char **argv, + FILE * out) + { + #if defined(HAVE_OPENDIR) && defined (HAVE_READDIR) +@@ -887,12 +887,12 @@ static int CountArgs( + * CreateArgs - take a string (aLine) and tokenize + */ + static int CreateArgs( +- char *pName, ++ const char *pName, + char *aLine, +- char **argv) ++ const char **argv) + { + char *getP, *putP; +- char **pargv = argv; ++ const char **pargv = argv; + char Quote = 0; + int inArg = 0; + int len; +diff --git a/src/rrd_tune.c b/src/rrd_tune.c +index 198817f37..dd3f3f7cb 100644 +--- a/src/rrd_tune.c ++++ b/src/rrd_tune.c +@@ -71,7 +71,7 @@ static int set_hwsmootharg( + + int rrd_tune( + int argc, +- char **argv) ++ const char **argv) + { + char *opt_daemon = NULL; + const char *in_filename = NULL; +diff --git a/src/rrd_update.c b/src/rrd_update.c +index fbbe2820a..bb9a0602c 100644 +--- a/src/rrd_update.c ++++ b/src/rrd_update.c +@@ -299,7 +299,7 @@ static void initialize_time( + + rrd_info_t *rrd_update_v( + int argc, +- char **argv) ++ const char **argv) + { + struct optparse_long longopts[] = { + {"template", 't', OPTPARSE_REQUIRED}, +@@ -674,7 +674,7 @@ static int rrd_template_update(const char *filename, /* {{{ */ + + int rrd_update( + int argc, +- char **argv) ++ const char **argv) + { + struct optparse_long longopts[] = { + {"template", 't', OPTPARSE_REQUIRED}, +diff --git a/src/rrd_xport.c b/src/rrd_xport.c +index d15d33dd9..93c02f926 100644 +--- a/src/rrd_xport.c ++++ b/src/rrd_xport.c +@@ -73,7 +73,7 @@ static int rrd_xport_format_addprints( + + int rrd_xport( + int argc, +- char **argv, ++ const char **argv, + int UNUSED(*xsize), + time_t *start, + time_t *end, /* which time frame do you want ? +diff --git a/src/rrdupdate.c b/src/rrdupdate.c +index cbbf48cc1..e368516c8 100644 +--- a/src/rrdupdate.c ++++ b/src/rrdupdate.c +@@ -20,19 +20,20 @@ int main( + int argc, + char **argv) + { ++ const char **cargv = (const char **)argv; + char *name=basename(argv[0]); + rrd_info_t *info; + + if (!strcmp(name, "rrdcreate")) { +- rrd_create(argc, argv); ++ rrd_create(argc, cargv); + } + else if (!strcmp(name, "rrdinfo")) { +- info=rrd_info(argc, argv); ++ info=rrd_info(argc, cargv); + rrd_info_print(info); + rrd_info_free(info); + } + else { +- rrd_update(argc, argv); ++ rrd_update(argc, cargv); + } + + if (rrd_test_error()) { -- 2.39.2 From bernd at kuhls.net Tue May 14 21:54:04 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:54:04 +0200 Subject: [Buildroot] [PATCH 3/5] package/collectd: fix build with gcc 14.x In-Reply-To: <20240514215406.2866563-1-bernd@kuhls.net> References: <20240514215406.2866563-1-bernd@kuhls.net> Message-ID: <20240514215406.2866563-3-bernd@kuhls.net> Signed-off-by: Bernd Kuhls --- ...c-nut-c-detect-int-types-required-by.patch | 153 ++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 package/collectd/0003-configure.ac-src-nut-c-detect-int-types-required-by.patch diff --git a/package/collectd/0003-configure.ac-src-nut-c-detect-int-types-required-by.patch b/package/collectd/0003-configure.ac-src-nut-c-detect-int-types-required-by.patch new file mode 100644 index 0000000000..f08dc1b731 --- /dev/null +++ b/package/collectd/0003-configure.ac-src-nut-c-detect-int-types-required-by.patch @@ -0,0 +1,153 @@ +From d409ffa2a64cac3fc2abe2bb86ec3a80cb34d0a6 Mon Sep 17 00:00:00 2001 +From: Jim Klimov +Date: Wed, 31 Aug 2022 11:40:01 +0200 +Subject: [PATCH] configure.ac, src/nut.c: detect int types required by NUT API + we build against + +Either use the stricter int types required by NUT headers since v2.8.0 release, +or the relaxed (arch-dependent) types required by older NUT releases - depending +on which NUT API version the collectd is building against at the moment. + +Inspired by discussion at https://github.com/networkupstools/nut/issues/1638 + +Upstream: https://github.com/collectd/collectd/commit/d409ffa2a64cac3fc2abe2bb86ec3a80cb34d0a6 + +Signed-off-by: Bernd Kuhls +--- + configure.ac | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++ + src/nut.c | 4 +-- + 2 files changed, 102 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 1737aff316..f88ed26505 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -5881,6 +5881,106 @@ if test "x$with_libupsclient" = "xyes"; then + CPPFLAGS="$SAVE_CPPFLAGS" + fi + ++if test "x$with_libupsclient" = "xyes"; then ++ dnl The m4 script logic below is modelled after NUT_FUNC_GETNAMEINFO_ARGTYPES ++ dnl further originating in curl autoconf scripts or beyond. See there for an ++ dnl example of general-case logic to handle matching of numerous possible ++ dnl data types for each argument in supported API variants. ++ dnl Note: techically compiler complains here not about int types themselves, ++ dnl but about pointers to such data. We know "out of band" that e.g. NUT ++ dnl change to "size_t" happened at once for all arguments in the API, so ++ dnl simplify the handling here and now with that assumption. ++ AC_LANG_PUSH([C]) ++ SAVE_CPPFLAGS="$CPPFLAGS" ++ SAVE_LDFLAGS="$LDFLAGS" ++ SAVE_CFLAGS="$CFLAGS" ++ CPPFLAGS="$CPPFLAGS $with_libupsclient_cflags" ++ LDFLAGS="$LDFLAGS $with_libupsclient_libs" ++ CFLAGS="$CFLAGS $with_libupsclient_cflags" ++ if test "x$GCC" = "xyes"; then ++ CFLAGS="$CFLAGS -Wall -Werror" ++ fi ++ ++ dnl upscli_splitname() *is* there forever (2007 or older) ++ dnl but int types e.g. "port" changed in NUT 2.8.0 ++ dnl Also this is the UPSCONN_t::port field type: ++ AC_CACHE_CHECK([int type of port argument for NUT upscli_splitname], ++ [collectd_cv_func_upscli_splitname_args], [ ++ collectd_cv_func_upscli_splitname_args="unknown" ++ for port_arg in 'uint16_t' 'int' ; do ++ AC_COMPILE_IFELSE([ ++ AC_LANG_PROGRAM([ ++#include ++/* int upscli_splitname(const char *buf, char **upsname, char **hostname, *port); */ ++ ],[ ++const char *origname = "ups at localhost:3493"; ++$port_arg port=0; ++char *hostname; ++char *upsname; ++int res = upscli_splitname(origname, &upsname, &hostname, &port); ++return(res); ++ ]) ++ ],[ ++ collectd_cv_func_upscli_splitname_args="$port_arg" ++ break ++ ]) ++ done ++ ]) ++ ++ AS_IF([test x"$collectd_cv_func_upscli_splitname_args" = xunknown], ++ [AC_MSG_WARN([Can not find proper port type for upscli_splitname()]) ++ with_libupsclient="no (required data types for NUT API were not detected)"], ++ [AC_DEFINE_UNQUOTED(NUT_PORT_TYPE, $collectd_cv_func_upscli_splitname_args, ++ [Define to the integer type for TCP/IP ports used by NUT API we build against]) ++ ]) ++ ++ ++ AC_CACHE_CHECK([int type of length/numbering arguments for NUT upscli_list_next], ++ [collectd_cv_func_upscli_list_next_args], [ ++ collectd_cv_func_upscli_list_next_args="unknown" ++ for size_arg in 'size_t' 'unsigned int' 'int' ; do ++ AC_COMPILE_IFELSE([ ++ AC_LANG_PROGRAM([ ++#include ++/* int upscli_list_next(UPSCONN_t *ups, numq, const char **query, *numa, char ***answer); */ ++ ++#if HAVE_UPSCONN_T ++typedef UPSCONN_t collectd_upsconn_t; ++#elif HAVE_UPSCONN ++typedef UPSCONN collectd_upsconn_t; ++#else ++#error "Unable to determine the UPS connection type." ++#endif ++ ],[ ++$size_arg query_num=0; ++$size_arg answer_num=0; ++const char * query; ++char** answer; ++collectd_upsconn_t ups; ++int res = upscli_list_next(&ups, query_num, &query, &answer_num, &answer); ++return(res); ++ ]) ++ ],[ ++ collectd_cv_func_upscli_list_next_args="$size_arg" ++ break ++ ]) ++ done ++ ]) ++ ++ AS_IF([test x"$collectd_cv_func_upscli_list_next_args" = xunknown], ++ [AC_MSG_WARN([Can not find proper type for array sizes and string lengths used by upscli_list_next()]) ++ with_libupsclient="no (required data types for NUT API were not detected)"], ++ [AC_DEFINE_UNQUOTED(NUT_SIZE_TYPE, $collectd_cv_func_upscli_list_next_args, ++ [Define to the integer type for array sizes and string lengths used by NUT API we build against]) ++ ]) ++ ++ ++ CPPFLAGS="$SAVE_CPPFLAGS" ++ LDFLAGS="$SAVE_LDFLAGS" ++ CFLAGS="$SAVE_CFLAGS" ++ AC_LANG_POP([C]) ++fi ++ + if test "x$with_libupsclient" = "xyes"; then + BUILD_WITH_LIBUPSCLIENT_CFLAGS="$with_libupsclient_cflags" + BUILD_WITH_LIBUPSCLIENT_LIBS="$with_libupsclient_libs" +diff --git a/src/nut.c b/src/nut.c +index a9a6c98380..1a29438b07 100644 +--- a/src/nut.c ++++ b/src/nut.c +@@ -46,7 +46,7 @@ struct nut_ups_s { + collectd_upsconn_t *conn; + char *upsname; + char *hostname; +- int port; ++ NUT_PORT_TYPE port; + nut_ups_t *next; + }; + +@@ -250,7 +250,7 @@ static int nut_read(user_data_t *user_data) { + const char *query[3] = {"VAR", ups->upsname, NULL}; + unsigned int query_num = 2; + char **answer; +- unsigned int answer_num; ++ NUT_SIZE_TYPE answer_num; + int status; + + /* (Re-)Connect if we have no connection */ -- 2.39.2 From bernd at kuhls.net Tue May 14 21:54:05 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:54:05 +0200 Subject: [Buildroot] [PATCH 4/5] package/sofia-sip: fix build with gcc 14.x In-Reply-To: <20240514215406.2866563-1-bernd@kuhls.net> References: <20240514215406.2866563-1-bernd@kuhls.net> Message-ID: <20240514215406.2866563-4-bernd@kuhls.net> Signed-off-by: Bernd Kuhls --- ...mpatible-pointer-type-in-sip_basic-c.patch | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 package/sofia-sip/0001-Fix-incompatible-pointer-type-in-sip_basic-c.patch diff --git a/package/sofia-sip/0001-Fix-incompatible-pointer-type-in-sip_basic-c.patch b/package/sofia-sip/0001-Fix-incompatible-pointer-type-in-sip_basic-c.patch new file mode 100644 index 0000000000..7f890fd27b --- /dev/null +++ b/package/sofia-sip/0001-Fix-incompatible-pointer-type-in-sip_basic-c.patch @@ -0,0 +1,27 @@ +From 46b02f0655af0a9594e805f09a8ee99278f84777 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Tomi=20L=C3=A4hteenm=C3=A4ki?= +Date: Mon, 19 Feb 2024 09:06:20 +0200 +Subject: [PATCH] Fix incompatible pointer type in sip_basic.c + +Closes #248 + +Upstream: https://github.com/freeswitch/sofia-sip/pull/249 + +Signed-off-by: Bernd Kuhls +--- + libsofia-sip-ua/sip/sip_basic.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libsofia-sip-ua/sip/sip_basic.c b/libsofia-sip-ua/sip/sip_basic.c +index 3444fb25..82e824e3 100644 +--- a/libsofia-sip-ua/sip/sip_basic.c ++++ b/libsofia-sip-ua/sip/sip_basic.c +@@ -2901,7 +2901,7 @@ issize_t sip_identity_d(su_home_t *home, sip_header_t *h, char *s, isize_t slen) + ext = strchr(ppt, ';'); + + if (ext) { +- msg_param_t *params = su_alloc(home, sizeof(msg_param_t)); ++ msg_param_t const *params = su_alloc(home, sizeof(msg_param_t)); + if (msg_params_d(home, &ext, ¶ms) >= 0) { + id->id_info_params = params; + } -- 2.39.2 From bernd at kuhls.net Tue May 14 21:54:06 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:54:06 +0200 Subject: [Buildroot] [PATCH 5/5] package/unixodbc: fix build with gcc 14.x In-Reply-To: <20240514215406.2866563-1-bernd@kuhls.net> References: <20240514215406.2866563-1-bernd@kuhls.net> Message-ID: <20240514215406.2866563-5-bernd@kuhls.net> Signed-off-by: Bernd Kuhls --- ...r-Fix-incompatible-pointer-to-intege.patch | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 package/unixodbc/0001-PostgreSQL-driver-Fix-incompatible-pointer-to-intege.patch diff --git a/package/unixodbc/0001-PostgreSQL-driver-Fix-incompatible-pointer-to-intege.patch b/package/unixodbc/0001-PostgreSQL-driver-Fix-incompatible-pointer-to-intege.patch new file mode 100644 index 0000000000..8efe6dae4e --- /dev/null +++ b/package/unixodbc/0001-PostgreSQL-driver-Fix-incompatible-pointer-to-intege.patch @@ -0,0 +1,49 @@ +From 45f501e1be2db6b017cc242c79bfb9de32b332a1 Mon Sep 17 00:00:00 2001 +From: Florian Weimer +Date: Mon, 29 Jan 2024 08:27:29 +0100 +Subject: [PATCH] PostgreSQL driver: Fix incompatible pointer-to-integer types + +These result in out-of-bounds stack writes on 64-bit architectures +(caller has 4 bytes, callee writes 8 bytes), and seem to have gone +unnoticed on little-endian architectures (although big-endian +architectures must be broken). + +This change is required to avoid a build failure with GCC 14. + +Upstream: https://github.com/lurcher/unixODBC/commit/45f501e1be2db6b017cc242c79bfb9de32b332a1 + +Signed-off-by: Bernd Kuhls +--- + Drivers/Postgre7.1/info.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/Drivers/Postgre7.1/info.c b/Drivers/Postgre7.1/info.c +index 63ac91f..2216ecd 100644 +--- a/Drivers/Postgre7.1/info.c ++++ b/Drivers/Postgre7.1/info.c +@@ -1779,14 +1779,14 @@ char *table_name; + char index_name[MAX_INFO_STRING]; + short fields_vector[8]; + char isunique[10], isclustered[10]; +-SDWORD index_name_len, fields_vector_len; ++SQLLEN index_name_len, fields_vector_len; + TupleNode *row; + int i; + HSTMT hcol_stmt; + StatementClass *col_stmt, *indx_stmt; + char column_name[MAX_INFO_STRING], relhasrules[MAX_INFO_STRING]; + char **column_names = 0; +-Int4 column_name_len; ++SQLLEN column_name_len; + int total_columns = 0; + char error = TRUE; + ConnInfo *ci; +@@ -2136,7 +2136,7 @@ HSTMT htbl_stmt; + StatementClass *tbl_stmt; + char tables_query[STD_STATEMENT_LEN]; + char attname[MAX_INFO_STRING]; +-SDWORD attname_len; ++SQLLEN attname_len; + char pktab[MAX_TABLE_LEN + 1]; + Int2 result_cols; + -- 2.39.2 From bernd at kuhls.net Tue May 14 21:55:16 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:55:16 +0200 Subject: [Buildroot] [PATCH 1/4] package/intel-mediadriver: bump version to 24.2.2 Message-ID: <20240514215519.2866643-1-bernd@kuhls.net> Signed-off-by: Bernd Kuhls --- package/intel-mediadriver/intel-mediadriver.hash | 2 +- package/intel-mediadriver/intel-mediadriver.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/intel-mediadriver/intel-mediadriver.hash b/package/intel-mediadriver/intel-mediadriver.hash index fcc7b9dfbb..8a23f9cd7e 100644 --- a/package/intel-mediadriver/intel-mediadriver.hash +++ b/package/intel-mediadriver/intel-mediadriver.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 94dfcc4d2e6f75d0b9b9a5c95c1ff5d69178440888ff2ab98ec095d4adf8e955 intel-media-24.2.1.tar.gz +sha256 7d0d43e201706ab2dc62741b7873d52dc3779a7b1187b5a321cd0a37223b2b8c intel-media-24.2.2.tar.gz sha256 74979d5aaee78b8da82e3aafd415a216b6131dfff6d95d6930927c8a4e3bded3 LICENSE.md diff --git a/package/intel-mediadriver/intel-mediadriver.mk b/package/intel-mediadriver/intel-mediadriver.mk index c1a9c54c61..f074261bbc 100644 --- a/package/intel-mediadriver/intel-mediadriver.mk +++ b/package/intel-mediadriver/intel-mediadriver.mk @@ -6,7 +6,7 @@ # based on https://software.intel.com/en-us/articles/build-and-debug-open-source-media-stack -INTEL_MEDIADRIVER_VERSION = 24.2.1 +INTEL_MEDIADRIVER_VERSION = 24.2.2 INTEL_MEDIADRIVER_SITE = https://github.com/intel/media-driver/archive INTEL_MEDIADRIVER_SOURCE= intel-media-$(INTEL_MEDIADRIVER_VERSION).tar.gz INTEL_MEDIADRIVER_LICENSE = MIT, BSD-3-Clause -- 2.39.2 From bernd at kuhls.net Tue May 14 21:55:17 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:55:17 +0200 Subject: [Buildroot] [PATCH 2/4] package/libvpl: bump version to 2.11.0 In-Reply-To: <20240514215519.2866643-1-bernd@kuhls.net> References: <20240514215519.2866643-1-bernd@kuhls.net> Message-ID: <20240514215519.2866643-2-bernd@kuhls.net> Signed-off-by: Bernd Kuhls --- package/libvpl/libvpl.hash | 2 +- package/libvpl/libvpl.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/libvpl/libvpl.hash b/package/libvpl/libvpl.hash index 19407e01ba..f8a89f962b 100644 --- a/package/libvpl/libvpl.hash +++ b/package/libvpl/libvpl.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 ad956ea7ecf14614325f59dfb44cc5ba08e2fcac373342d61c7db152ac651253 libvpl-2.10.2.tar.gz +sha256 3e322ba6b3593da03e1cfdb8062f9f1545f6d9b1de39e36876de5934b26737d2 libvpl-2.11.0.tar.gz sha256 bf1cfac2e2792b6e1e995ce103d70796aecaf2ec7e4c5fe5474f7acec7b4a677 LICENSE diff --git a/package/libvpl/libvpl.mk b/package/libvpl/libvpl.mk index 34cd40cb4c..b8ebfd2b59 100644 --- a/package/libvpl/libvpl.mk +++ b/package/libvpl/libvpl.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBVPL_VERSION = 2.10.2 +LIBVPL_VERSION = 2.11.0 LIBVPL_SITE = $(call github,intel,libvpl,v$(LIBVPL_VERSION)) LIBVPL_LICENSE = MIT LIBVPL_LICENSE_FILES = LICENSE -- 2.39.2 From bernd at kuhls.net Tue May 14 21:55:18 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:55:18 +0200 Subject: [Buildroot] [PATCH 3/4] package/onevpl-intel-gpu: rename package to intel-vpl-gpu-rt In-Reply-To: <20240514215519.2866643-1-bernd@kuhls.net> References: <20240514215519.2866643-1-bernd@kuhls.net> Message-ID: <20240514215519.2866643-3-bernd@kuhls.net> Upstream renamed the package and moved the github repo: https://github.com/intel/vpl-gpu-rt/commit/74dbcc6240e8315ad927f642a5d733e6a515a1d4 Signed-off-by: Bernd Kuhls --- Config.in.legacy | 8 ++++++++ DEVELOPERS | 2 +- package/Config.in | 2 +- .../Config.in | 13 +++++++------ .../intel-vpl-gpu-rt.hash} | 2 +- package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.mk | 15 +++++++++++++++ package/onevpl-intel-gpu/onevpl-intel-gpu.mk | 15 --------------- 7 files changed, 33 insertions(+), 24 deletions(-) rename package/{onevpl-intel-gpu => intel-vpl-gpu-rt}/Config.in (69%) rename package/{onevpl-intel-gpu/onevpl-intel-gpu.hash => intel-vpl-gpu-rt/intel-vpl-gpu-rt.hash} (80%) create mode 100644 package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.mk delete mode 100644 package/onevpl-intel-gpu/onevpl-intel-gpu.mk diff --git a/Config.in.legacy b/Config.in.legacy index 46f7a304cb..6dac729f95 100644 --- a/Config.in.legacy +++ b/Config.in.legacy @@ -146,6 +146,14 @@ endif comment "Legacy options removed in 2024.05" +config BR2_PACKAGE_ONEVPL_INTEL_GPU + bool "onevpl-intel-gpu has been renamed" + select BR2_LEGACY + select BR2_PACKAGE_INTEL_VPL_GPU_RT + help + The onevpl-intel-gpu package has been renamed to + intel-vpl-gpu-rt. + config BR2_GCC_VERSION_11_X bool "gcc 11.x support removed" select BR2_LEGACY diff --git a/DEVELOPERS b/DEVELOPERS index fbd1209830..c870863609 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -384,6 +384,7 @@ F: package/intel-gmmlib/ F: package/intel-mediadriver/ F: package/intel-mediasdk/ F: package/intel-microcode/ +F: package/intel-vpl-gpu-rt/ F: package/jsoncpp/ F: package/kodi* F: package/lame/ @@ -455,7 +456,6 @@ F: package/monero/ F: package/mpg123/ F: package/ntp/ F: package/nut/ -F: package/onevpl-intel-gpu/ F: package/opus/ F: package/p2pool/ F: package/pciutils/ diff --git a/package/Config.in b/package/Config.in index 2d826b45dc..e3eadc2ff5 100644 --- a/package/Config.in +++ b/package/Config.in @@ -1665,6 +1665,7 @@ menu "Graphics" source "package/intel-gmmlib/Config.in" source "package/intel-mediadriver/Config.in" source "package/intel-mediasdk/Config.in" + source "package/intel-vpl-gpu-rt/Config.in" source "package/irrlicht/Config.in" source "package/jasper/Config.in" source "package/jbig2dec/Config.in" @@ -1711,7 +1712,6 @@ menu "Graphics" source "package/libvpl/Config.in" source "package/libwpe/Config.in" source "package/menu-cache/Config.in" - source "package/onevpl-intel-gpu/Config.in" source "package/opencl-clhpp/Config.in" source "package/opencv3/Config.in" source "package/opencv4/Config.in" diff --git a/package/onevpl-intel-gpu/Config.in b/package/intel-vpl-gpu-rt/Config.in similarity index 69% rename from package/onevpl-intel-gpu/Config.in rename to package/intel-vpl-gpu-rt/Config.in index 740e954ee5..da26ea6aa5 100644 --- a/package/onevpl-intel-gpu/Config.in +++ b/package/intel-vpl-gpu-rt/Config.in @@ -1,5 +1,5 @@ -config BR2_PACKAGE_ONEVPL_INTEL_GPU - bool "onevpl-intel-gpu" +config BR2_PACKAGE_INTEL_VPL_GPU_RT + bool "intel-vpl-gpu-rt" depends on BR2_x86_64 # intel-mediadriver depends on BR2_PACKAGE_LIBVPL_ARCH_SUPPORTS # libvpl depends on BR2_INSTALL_LIBSTDCPP # libvpl @@ -12,12 +12,13 @@ config BR2_PACKAGE_ONEVPL_INTEL_GPU select BR2_PACKAGE_LIBVA select BR2_PACKAGE_LIBVPL help - Intel? oneVPL GPU Runtime is a Runtime implementation of - oneVPL API for Intel Gen GPUs, starting with Tiger Lake. + Intel? Video Processing Library (Intel? VPL) GPU Runtime is a + Runtime implementation of Intel? VPL API for Intel Gen GPUs, + starting with Tiger Lake. - https://github.com/oneapi-src/oneVPL-intel-gpu + https://github.com/intel/vpl-gpu-rt -comment "onevpl-intel-gpu needs a toolchain w/ dynamic library, gcc >= 7, C++, NPTL" +comment "intel-vpl-gpu-rt needs a toolchain w/ dynamic library, gcc >= 7, C++, NPTL" depends on BR2_x86_64 depends on BR2_PACKAGE_LIBVPL_ARCH_SUPPORTS depends on BR2_TOOLCHAIN_HAS_SYNC_1 diff --git a/package/onevpl-intel-gpu/onevpl-intel-gpu.hash b/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.hash similarity index 80% rename from package/onevpl-intel-gpu/onevpl-intel-gpu.hash rename to package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.hash index 59b1c5a23c..6b57b4674c 100644 --- a/package/onevpl-intel-gpu/onevpl-intel-gpu.hash +++ b/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 b261d87d91a56a6a462f6a129ddd97945a49637995ee6aa67ebd9b26c0a3c1a0 onevpl-intel-gpu-24.2.1.tar.gz +sha256 b261d87d91a56a6a462f6a129ddd97945a49637995ee6aa67ebd9b26c0a3c1a0 intel-vpl-gpu-rt-24.2.1.tar.gz sha256 c31c3cc5fd66d1250dbca1c3d9011a9f874537442ac71c8de80f2f0fed13f297 LICENSE diff --git a/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.mk b/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.mk new file mode 100644 index 0000000000..e3ca68926e --- /dev/null +++ b/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# intel-vpl-gpu-rt +# +################################################################################ + +INTEL_VPL_GPU_RT_VERSION = 24.2.1 +INTEL_VPL_GPU_RT_SITE = $(call github,intel,vpl-gpu-rt,intel-onevpl-$(INTEL_VPL_GPU_RT_VERSION)) +INTEL_VPL_GPU_RT_LICENSE = MIT +INTEL_VPL_GPU_RT_LICENSE_FILES = LICENSE +INTEL_VPL_GPU_RT_CPE_ID_VENDOR = intel +INTEL_VPL_GPU_RT_CPE_ID_PRODUCT = onevpl_gpu_runtime +INTEL_VPL_GPU_RT_DEPENDENCIES = libva libvpl + +$(eval $(cmake-package)) diff --git a/package/onevpl-intel-gpu/onevpl-intel-gpu.mk b/package/onevpl-intel-gpu/onevpl-intel-gpu.mk deleted file mode 100644 index a68e628182..0000000000 --- a/package/onevpl-intel-gpu/onevpl-intel-gpu.mk +++ /dev/null @@ -1,15 +0,0 @@ -################################################################################ -# -# onevpl-intel-gpu -# -################################################################################ - -ONEVPL_INTEL_GPU_VERSION = 24.2.1 -ONEVPL_INTEL_GPU_SITE = $(call github,oneapi-src,oneVPL-intel-gpu,intel-onevpl-$(ONEVPL_INTEL_GPU_VERSION)) -ONEVPL_INTEL_GPU_LICENSE = MIT -ONEVPL_INTEL_GPU_LICENSE_FILES = LICENSE -ONEVPL_INTEL_GPU_CPE_ID_VENDOR = intel -ONEVPL_INTEL_GPU_CPE_ID_PRODUCT = onevpl_gpu_runtime -ONEVPL_INTEL_GPU_DEPENDENCIES = libva libvpl - -$(eval $(cmake-package)) -- 2.39.2 From bernd at kuhls.net Tue May 14 21:55:19 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:55:19 +0200 Subject: [Buildroot] [PATCH 4/4] package/intel-vpl-gpu-rt: bump version to 24.2.2 In-Reply-To: <20240514215519.2866643-1-bernd@kuhls.net> References: <20240514215519.2866643-1-bernd@kuhls.net> Message-ID: <20240514215519.2866643-4-bernd@kuhls.net> Signed-off-by: Bernd Kuhls --- package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.hash | 2 +- package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.hash b/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.hash index 6b57b4674c..ea0bc0ae24 100644 --- a/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.hash +++ b/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 b261d87d91a56a6a462f6a129ddd97945a49637995ee6aa67ebd9b26c0a3c1a0 intel-vpl-gpu-rt-24.2.1.tar.gz +sha256 fc83bdea13a176812744e4c4c731b2387f03eafaa7375816a60555718a2b4dce intel-vpl-gpu-rt-24.2.2.tar.gz sha256 c31c3cc5fd66d1250dbca1c3d9011a9f874537442ac71c8de80f2f0fed13f297 LICENSE diff --git a/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.mk b/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.mk index e3ca68926e..2570646359 100644 --- a/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.mk +++ b/package/intel-vpl-gpu-rt/intel-vpl-gpu-rt.mk @@ -4,7 +4,7 @@ # ################################################################################ -INTEL_VPL_GPU_RT_VERSION = 24.2.1 +INTEL_VPL_GPU_RT_VERSION = 24.2.2 INTEL_VPL_GPU_RT_SITE = $(call github,intel,vpl-gpu-rt,intel-onevpl-$(INTEL_VPL_GPU_RT_VERSION)) INTEL_VPL_GPU_RT_LICENSE = MIT INTEL_VPL_GPU_RT_LICENSE_FILES = LICENSE -- 2.39.2 From bernd at kuhls.net Tue May 14 21:55:46 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:55:46 +0200 Subject: [Buildroot] [PATCH 1/1] package/kodi-pvr-waipu: bump version to 21.6.1-Omega Message-ID: <20240514215546.2866676-1-bernd@kuhls.net> Signed-off-by: Bernd Kuhls --- package/kodi-pvr-waipu/kodi-pvr-waipu.hash | 2 +- package/kodi-pvr-waipu/kodi-pvr-waipu.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-waipu/kodi-pvr-waipu.hash b/package/kodi-pvr-waipu/kodi-pvr-waipu.hash index 2c682c884c..6377f36e80 100644 --- a/package/kodi-pvr-waipu/kodi-pvr-waipu.hash +++ b/package/kodi-pvr-waipu/kodi-pvr-waipu.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 0db467d4986c36efb0c837dd728fc6322d3021fe2d8c93da9355b63f210fa0ca kodi-pvr-waipu-21.6.0-Omega.tar.gz +sha256 96c558f02d820c43994da05a89693f3e787c2adb8faa2ff28127a6e97d33525c kodi-pvr-waipu-21.6.1-Omega.tar.gz sha256 4202d4fb329f58c83ba921b56d7071e37f7df3f15b3820a3a04ef8eee49f54d2 pvr.waipu/LICENSE.txt diff --git a/package/kodi-pvr-waipu/kodi-pvr-waipu.mk b/package/kodi-pvr-waipu/kodi-pvr-waipu.mk index 4e9f8e00cf..222abcaa1b 100644 --- a/package/kodi-pvr-waipu/kodi-pvr-waipu.mk +++ b/package/kodi-pvr-waipu/kodi-pvr-waipu.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_WAIPU_VERSION = 21.6.0-Omega +KODI_PVR_WAIPU_VERSION = 21.6.1-Omega KODI_PVR_WAIPU_SITE = $(call github,flubshi,pvr.waipu,$(KODI_PVR_WAIPU_VERSION)) KODI_PVR_WAIPU_LICENSE = GPL-2.0+ KODI_PVR_WAIPU_LICENSE_FILES = pvr.waipu/LICENSE.txt -- 2.39.2 From bernd at kuhls.net Tue May 14 21:56:15 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:56:15 +0200 Subject: [Buildroot] [PATCH 1/1] package/{mesa3d, mesa3d-headers}: bump version to 24.0.7 Message-ID: <20240514215615.2866697-1-bernd@kuhls.net> Release notes: https://lists.freedesktop.org/archives/mesa-announce/2024-May/000758.html Signed-off-by: Bernd Kuhls --- package/mesa3d-headers/mesa3d-headers.mk | 2 +- package/mesa3d/mesa3d.hash | 6 +++--- package/mesa3d/mesa3d.mk | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package/mesa3d-headers/mesa3d-headers.mk b/package/mesa3d-headers/mesa3d-headers.mk index e1f6211e17..e35774a942 100644 --- a/package/mesa3d-headers/mesa3d-headers.mk +++ b/package/mesa3d-headers/mesa3d-headers.mk @@ -12,7 +12,7 @@ endif # Not possible to directly refer to mesa3d variables, because of # first/second expansion trickery... -MESA3D_HEADERS_VERSION = 24.0.6 +MESA3D_HEADERS_VERSION = 24.0.7 MESA3D_HEADERS_SOURCE = mesa-$(MESA3D_HEADERS_VERSION).tar.xz MESA3D_HEADERS_SITE = https://archive.mesa3d.org MESA3D_HEADERS_DL_SUBDIR = mesa3d diff --git a/package/mesa3d/mesa3d.hash b/package/mesa3d/mesa3d.hash index fb3df96555..f2c25464f4 100644 --- a/package/mesa3d/mesa3d.hash +++ b/package/mesa3d/mesa3d.hash @@ -1,5 +1,5 @@ -# From https://lists.freedesktop.org/archives/mesa-announce/2024-April/000755.html -sha256 8b7a92dbe6468c18f2383700135b5fe9de836cdf0cc8fd7dbae3c7110237d604 mesa-24.0.6.tar.xz -sha512 60fcc77132c3cb0c98e650d97d3324bfd18abe7f8f8a3aa5209f71b2fddd94510f939bbf5272b2241749307184d5badde9da4842be57ce13f5760875885ea6fc mesa-24.0.6.tar.xz +# From https://lists.freedesktop.org/archives/mesa-announce/2024-May/000758.html +sha256 7454425f1ed4a6f1b5b107e1672b30c88b22ea0efea000ae2c7d96db93f6c26a mesa-24.0.7.tar.xz +sha512 77b0fae80ab0a07e2e528c113eadef0e3004b8df3e6e98fffe6fc2d8ac39f5ce7fa38ebe5c2ae32bfbac993dd7cbe288ace18ebb03cf2fb445fe7114f74dd45c mesa-24.0.7.tar.xz # License sha256 a00275a53178e2645fb65be99a785c110513446a5071ff2c698ed260ad917d75 docs/license.rst diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk index 39cbb4c23b..6bccdaed04 100644 --- a/package/mesa3d/mesa3d.mk +++ b/package/mesa3d/mesa3d.mk @@ -5,7 +5,7 @@ ################################################################################ # When updating the version, please also update mesa3d-headers -MESA3D_VERSION = 24.0.6 +MESA3D_VERSION = 24.0.7 MESA3D_SOURCE = mesa-$(MESA3D_VERSION).tar.xz MESA3D_SITE = https://archive.mesa3d.org MESA3D_LICENSE = MIT, SGI, Khronos -- 2.39.2 From bernd at kuhls.net Tue May 14 21:56:36 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:56:36 +0200 Subject: [Buildroot] [PATCH 1/1] package/squid: security bump version to 6.9 Message-ID: <20240514215636.2866720-1-bernd@kuhls.net> Fixes CVE-2024-25111: https://github.com/squid-cache/squid/security/advisories/GHSA-72c2-c3wm-8qxc Signed-off-by: Bernd Kuhls --- package/squid/squid.hash | 6 +++--- package/squid/squid.mk | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/squid/squid.hash b/package/squid/squid.hash index 4a8ea5d550..ed78933306 100644 --- a/package/squid/squid.hash +++ b/package/squid/squid.hash @@ -1,6 +1,6 @@ -# From http://www.squid-cache.org/Versions/v6/squid-6.6.tar.xz.asc -md5 5a41134ee1b7e75f62088acdec92d2ca squid-6.6.tar.xz -sha1 f05e06a9dd3bf7501d2844e43d9ae1bd00e9edcc squid-6.6.tar.xz +# From http://www.squid-cache.org/Versions/v6/squid-6.9.tar.xz.asc +md5 4888e9dc75c0daa0ed526b34c055cb67 squid-6.9.tar.xz +sha1 5e73b30116ce7111589cc2b1c9bfe3c17efa2e75 squid-6.9.tar.xz # Locally calculated sha256 55bd7f9f4898153161ea1228998acb551bf840832b9e5b90fc8ecd2942420318 squid-6.6.tar.xz sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/squid/squid.mk b/package/squid/squid.mk index e325c63cb0..60eca397ec 100644 --- a/package/squid/squid.mk +++ b/package/squid/squid.mk @@ -4,7 +4,7 @@ # ################################################################################ -SQUID_VERSION = 6.6 +SQUID_VERSION = 6.9 SQUID_SOURCE = squid-$(SQUID_VERSION).tar.xz SQUID_SITE = http://www.squid-cache.org/Versions/v6 SQUID_LICENSE = GPL-2.0+ -- 2.39.2 From bernd at kuhls.net Tue May 14 21:57:12 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:57:12 +0200 Subject: [Buildroot] [PATCH 1/1] package/php: bump version to 8.3.7 Message-ID: <20240514215712.2866745-1-bernd@kuhls.net> Removed patch which is included in this release. Changelog: https://www.php.net/ChangeLog-8.php#PHP_8_3 Release notes: https://news-web.php.net/php.announce/427 Signed-off-by: Bernd Kuhls --- ...ll_stack.c-fix-build-without-pthread.patch | 39 ------------------- package/php/php.hash | 2 +- package/php/php.mk | 2 +- 3 files changed, 2 insertions(+), 41 deletions(-) delete mode 100644 package/php/0006-Zend-zend_call_stack.c-fix-build-without-pthread.patch diff --git a/package/php/0006-Zend-zend_call_stack.c-fix-build-without-pthread.patch b/package/php/0006-Zend-zend_call_stack.c-fix-build-without-pthread.patch deleted file mode 100644 index 10b0083655..0000000000 --- a/package/php/0006-Zend-zend_call_stack.c-fix-build-without-pthread.patch +++ /dev/null @@ -1,39 +0,0 @@ -From c3e37c438a11d59d858fcc7b46eac00a8074972b Mon Sep 17 00:00:00 2001 -From: Fabrice Fontaine -Date: Sat, 30 Mar 2024 17:51:55 +0100 -Subject: [PATCH] Zend/zend_call_stack.c: fix build without pthread - -Fix the following build failure without pthread raised since version -8.3.0 and -https://github.com/php/php-src/commit/a11c8a30399e90c17c287b9656c0077bc5131c9c: - -/home/buildroot/instance-0/output-1/build/php-8.3.4/Zend/zend_call_stack.c:39:11: fatal error: pthread.h: No such file or directory - 39 | # include - | ^~~~~~~~~~~ - -Fixes: - - http://autobuild.buildroot.org/results/a4ef648a9da50b26ed56d5d490e4cf5a1bfff970 - -Signed-off-by: Fabrice Fontaine -Upstream: https://github.com/php/php-src/pull/13843 ---- - Zend/zend_call_stack.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/Zend/zend_call_stack.c b/Zend/zend_call_stack.c -index 97cbed9041..97de938a0f 100644 ---- a/Zend/zend_call_stack.c -+++ b/Zend/zend_call_stack.c -@@ -35,7 +35,8 @@ - # include - # endif - #endif /* ZEND_WIN32 */ --#if defined(__linux__) || defined(__FreeBSD__) || defined(__APPLE__) || defined(__OpenBSD__) -+#if (defined(HAVE_PTHREAD_GETATTR_NP) && defined(HAVE_PTHREAD_ATTR_GETSTACK)) || \ -+ defined(__FreeBSD__) || defined(__APPLE__) || defined(__OpenBSD__) - # include - #endif - #ifdef __FreeBSD__ --- -2.43.0 - diff --git a/package/php/php.hash b/package/php/php.hash index 4378d7ed07..9b25eabd32 100644 --- a/package/php/php.hash +++ b/package/php/php.hash @@ -1,5 +1,5 @@ # From https://www.php.net/downloads.php -sha256 53c8386b2123af97626d3438b3e4058e0c5914cb74b048a6676c57ac647f5eae php-8.3.6.tar.xz +sha256 d53433c1ca6b2c8741afa7c524272e6806c1e895e5912a058494fea89988570a php-8.3.7.tar.xz # License file sha256 b42e4df5e50e6ecda1047d503d6d91d71032d09ed1027ba1ef29eed26f890c5a LICENSE diff --git a/package/php/php.mk b/package/php/php.mk index 5b26ec90e2..ad2d901dfd 100644 --- a/package/php/php.mk +++ b/package/php/php.mk @@ -4,7 +4,7 @@ # ################################################################################ -PHP_VERSION = 8.3.6 +PHP_VERSION = 8.3.7 PHP_SITE = https://www.php.net/distributions PHP_SOURCE = php-$(PHP_VERSION).tar.xz PHP_INSTALL_STAGING = YES -- 2.39.2 From bernd at kuhls.net Tue May 14 21:57:48 2024 From: bernd at kuhls.net (Bernd Kuhls) Date: Tue, 14 May 2024 23:57:48 +0200 Subject: [Buildroot] [PATCH 1/1] package/cmake: bump version to 3.29.2 Message-ID: <20240514215748.2866768-1-bernd@kuhls.net> Release notes: https://cmake.org/cmake/help/latest/release/3.29.html https://www.kitware.com/cmake-3-29-0-available-for-download/ https://www.kitware.com/cmake-3-29-1-available-for-download/ https://www.kitware.com/cmake-3-29-2-available-for-download/ Updated license hash due to copyright year bump: https://gitlab.kitware.com/cmake/cmake/-/commit/4bc97565d0f97fa1a840d56ab58be46ccad175e0 and updated zlib version: https://gitlab.kitware.com/cmake/cmake/-/commit/6c2bed54f6610405e1a37aa48ff0f8d25f198076 Signed-off-by: Bernd Kuhls --- package/cmake/Config.in.host | 5 +++++ package/cmake/cmake.hash | 6 +++--- package/cmake/cmake.mk | 4 ++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/package/cmake/Config.in.host b/package/cmake/Config.in.host index c38bb9daaa..6865ce1557 100644 --- a/package/cmake/Config.in.host +++ b/package/cmake/Config.in.host @@ -51,10 +51,15 @@ config BR2_HOST_CMAKE_AT_LEAST_3_28 bool select BR2_HOST_CMAKE_AT_LEAST_3_27 +config BR2_HOST_CMAKE_AT_LEAST_3_29 + bool + select BR2_HOST_CMAKE_AT_LEAST_3_28 + # This order guarantees that the highest version is set, as kconfig # stops affecting a value on the first matching default. config BR2_HOST_CMAKE_AT_LEAST string + default "3.29" if BR2_HOST_CMAKE_AT_LEAST_3_29 default "3.28" if BR2_HOST_CMAKE_AT_LEAST_3_28 default "3.27" if BR2_HOST_CMAKE_AT_LEAST_3_27 default "3.26" if BR2_HOST_CMAKE_AT_LEAST_3_26 diff --git a/package/cmake/cmake.hash b/package/cmake/cmake.hash index 74b4a0a3a8..ebf2d2552d 100644 --- a/package/cmake/cmake.hash +++ b/package/cmake/cmake.hash @@ -1,5 +1,5 @@ -# From https://cmake.org/files/v3.28/cmake-3.28.3-SHA-256.txt -sha256 72b7570e5c8593de6ac4ab433b73eab18c5fb328880460c86ce32608141ad5c1 cmake-3.28.3.tar.gz +# From https://cmake.org/files/v3.29/cmake-3.29.2-SHA-256.txt +sha256 36db4b6926aab741ba6e4b2ea2d99c9193222132308b4dc824d4123cb730352e cmake-3.29.2.tar.gz # Locally calculated -sha256 4a01ccf2dc580ba570d02bc015bbe0ec92f1f318717aae9540ba841ba7946756 Copyright.txt +sha256 0676e30827684487aa0ea8f72f01e9460a6320fa34a2888df0ad1dd3e8a06eb8 Copyright.txt diff --git a/package/cmake/cmake.mk b/package/cmake/cmake.mk index 49d1f9fea5..8b71d55fe5 100644 --- a/package/cmake/cmake.mk +++ b/package/cmake/cmake.mk @@ -5,8 +5,8 @@ ################################################################################ # When updating the version, please also update BR2_HOST_CMAKE_AT_LEAST_X_Y -CMAKE_VERSION_MAJOR = 3.28 -CMAKE_VERSION = $(CMAKE_VERSION_MAJOR).3 +CMAKE_VERSION_MAJOR = 3.29 +CMAKE_VERSION = $(CMAKE_VERSION_MAJOR).2 CMAKE_SITE = https://cmake.org/files/v$(CMAKE_VERSION_MAJOR) CMAKE_LICENSE = BSD-3-Clause CMAKE_LICENSE_FILES = Copyright.txt -- 2.39.2 From christian at aperture.us Tue May 14 23:38:41 2024 From: christian at aperture.us (Christian Stewart) Date: Tue, 14 May 2024 16:38:41 -0700 Subject: [Buildroot] [PATCH v1 1/3] package/go-bootstrap-stage2: bump version to go1.19.13 In-Reply-To: References: <20240307015107.2908128-1-christian@aperture.us> <20240514102318.1cdeba18@windsurf> Message-ID: Hi Thomas, On Tue, May 14, 2024 at 4:39?AM Christian Stewart wrote: > On Tue, May 14, 2024, 1:23?AM Thomas Petazzoni wrote: >> >> I don't think it's this patch causing the issue, but we have a Go build >> failure in our Gitlab CI: >> >> https://gitlab.com/buildroot.org/buildroot/-/jobs/6833307823 >> >> Could you have a look? > > This looks like we need to pass -buildvcs=false to Go. I'll have a look at submitting a patch for this. I found this commit in Go which fixed & added a test to ensure that -buildvcs=false is set when GOROOT_BOOTSTRAP is set (which it was in the failing job). commit 42a46206b97ca7cf4246d3c1230a70cf42ad5bb0 Author: Bryan C. Mills Date: Fri Sep 9 17:29:12 2022 -0400 cmd/go: omit VCS stamping during bootstrap cmd/dist can't easily hard-code -buildvcs=false because not all versions of cmd/go supported for bootstrapping recognize that flag. However, we don't want to stamp the bootstrap binaries: the stamping is redundant with the VERSION file writted during bootstrapping (which is why it is normally omitted for standard-library packages and commands), and it may also interfere with building the Go repo from a source tarball or zip file. Fixes #54852. Change-Id: If223f094af137c4c202d6bf622619bd2da397ec4 Reviewed-on: https://go-review.googlesource.com/c/go/+/432435 See: https://github.com/golang/go/commit/42a46206b97ca7cf4246d3c1230a70cf42ad5bb0 However it seems that bootstrap step is failing due to -buildvcs=false not being set. I will try to debug further. This could be a Go regression. Best regards, Christian Stewart From wangdong115 at foxmail.com Wed May 15 00:52:31 2024 From: wangdong115 at foxmail.com (Dong Wang) Date: Wed, 15 May 2024 08:52:31 +0800 Subject: [Buildroot] [PATCH] configs/friendlyarm_nanopi_neo_defconfig: new defconfig Message-ID: This patch adds a new defconfig for the NanoPi NEO board made by FriendlyARM. This board is based on the Allwinner H3 SoC. See: https://wiki.friendlyelec.com/wiki/index.php/NanoPi_NEO . This patch uses the mainline kernel and u-boot for the board. The configurations are based on the previously dropped defconfig maintained by Yann E. MORIN . Signed-off-by: Dong Wang --- DEVELOPERS | 4 +++ board/friendlyarm/nanopi-neo/boot.cmd | 5 +++ board/friendlyarm/nanopi-neo/genimage.cfg | 36 +++++++++++++++++++ board/friendlyarm/nanopi-neo/readme.txt | 41 +++++++++++++++++++++ configs/friendlyarm_nanopi_neo_defconfig | 44 +++++++++++++++++++++++ 5 files changed, 130 insertions(+) create mode 100644 board/friendlyarm/nanopi-neo/boot.cmd create mode 100644 board/friendlyarm/nanopi-neo/genimage.cfg create mode 100644 board/friendlyarm/nanopi-neo/readme.txt create mode 100644 configs/friendlyarm_nanopi_neo_defconfig diff --git a/DEVELOPERS b/DEVELOPERS index a9deddb343..13439b9892 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -858,6 +858,10 @@ F: package/logsurfer/ N: Dominik Michael Rauh F: package/gdal/ +N: Dong Wang +F: board/friendlyarm/nanopi-neo +F: configs/friendlyarm_nanopi_neo_defconfig + N: Doug Kehn F: package/nss-pam-ldapd/ F: package/sp-oops-extract/ diff --git a/board/friendlyarm/nanopi-neo/boot.cmd b/board/friendlyarm/nanopi-neo/boot.cmd new file mode 100644 index 0000000000..8c199ed480 --- /dev/null +++ b/board/friendlyarm/nanopi-neo/boot.cmd @@ -0,0 +1,5 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait panic=10 + +load mmc 0:1 ${fdt_addr_r} ${fdtfile} +load mmc 0:1 ${kernel_addr_r} zImage +bootz ${kernel_addr_r} - ${fdt_addr_r} diff --git a/board/friendlyarm/nanopi-neo/genimage.cfg b/board/friendlyarm/nanopi-neo/genimage.cfg new file mode 100644 index 0000000000..4cfd8c8fc2 --- /dev/null +++ b/board/friendlyarm/nanopi-neo/genimage.cfg @@ -0,0 +1,36 @@ +# Minimal SD card image for the NanoPi NEO. +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-h3-nanopi-neo.dtb", + "boot.scr" + } + } + + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = false + image = "u-boot-sunxi-with-spl.bin" + offset = 8K + size = 1000K # 1MB - 8KB(offset) - 16KB(GPT) + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/board/friendlyarm/nanopi-neo/readme.txt b/board/friendlyarm/nanopi-neo/readme.txt new file mode 100644 index 0000000000..cfe7714a41 --- /dev/null +++ b/board/friendlyarm/nanopi-neo/readme.txt @@ -0,0 +1,41 @@ +Nanopi NEO + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the NanoPi NEO. With the current configuration +it will bring-up the board, and allow access through the serial console. + +FriendlyARM Nanopi NEO link: +https://wiki.friendlyelec.com/wiki/index.php/NanoPi_NEO + +How to build +============ + + $ make friendlyarm_nanopi_neo_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SD card in your Nanopi NEO and power it up. The console +is on the debug TTL UART, 115200 8N1. + +Ethernet +========== + + # udhcpc -i eth0 + +Enjoy! diff --git a/configs/friendlyarm_nanopi_neo_defconfig b/configs/friendlyarm_nanopi_neo_defconfig new file mode 100644 index 0000000000..a725553258 --- /dev/null +++ b/configs/friendlyarm_nanopi_neo_defconfig @@ -0,0 +1,44 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 6.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="nanopi-neo" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the NanoPi NEO" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.30" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun8i-h3-nanopi-neo" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Image +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/friendlyarm/nanopi-neo/genimage.cfg" + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nanopi_neo" +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" + +# Host utilities +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/friendlyarm/nanopi-neo/boot.cmd" -- 2.25.1 From thomas.petazzoni at bootlin.com Wed May 15 04:02:00 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Wed, 15 May 2024 04:02:00 -0000 Subject: [Buildroot] [autobuild.buildroot.net] Daily results for 2024-05-14 Message-ID: Hello, Autobuild statistics for 2024-05-14 =================================== branch | OK | NOK | TIM | TOT | 2024.02.x | 14 | 11 | 0 | 25 | master | 54 | 95 | 1 | 150 | Classification of failures by reason for master ----------------------------------------------- gobject-introspection-1.76.1 | 5 fail2ban-1.0.2 | 4 host-sentry-cli-2.20.3 | 4 linux-6.8.9 | 4 bat-0.24.0 | 3 dust-0.9.0 | 3 ffmpeg-6.1.1 | 3 libsepol-3.6 | 3 unknown | 3 check-11970a7e112dfe243a2e6... | 2 containerd-1.7.14 | 2 frr-8.5.4 | 2 host-cmake-3.28.3 | 2 host-gcc-initial-13.2.0 | 2 ibm-sw-tpm2-5452af422edeff7... | 2 libopenssl-3.3.0 | 2 libressl-3.8.4 | 2 mongodb-4.2.18 | 2 proj-9.3.0 | 2 shadow-4.14.5 | 2 sofia-sip-1.13.17 | 2 uclibc-1.0.48 | 2 zeek-4.1.1 | 2 aer-inject-9bd5e2c7886fca72... | 1 android-tools-4.2.2+git2013... | 1 bandwidthd-2.0.1-auto-r11 | 1 brltty-6.6 | 1 busybox-1.36.1 | 1 clang-15.0.3 | 1 crun-1.12 | 1 eza-0.18.8 | 1 foot-1.16.2 | 1 freetype-2.13.2 | 1 gnuplot-6.0.0 | 1 gobject-introspection | 1 google-breakpad-f49c2f1a202... | 1 host-babeltrace2-2.0.4 | 1 host-binutils-2.42 | 1 host-clang-15.0.3 | 1 host-heimdal-f4faaeaba371ff... | 1 host-libxcrypt-4.4.36 | 1 host-perl-5.38.2 | 1 jack2-1.9.22 | 1 libarchive-3.7.3 | 1 libglib2-2.76.1 | 1 libunistring-1.2 | 1 lighttpd-1.4.76 | 1 linux-5.10.162-cip24 | 1 mediastreamer-4.4.8 | 1 openssh-9.7p1 | 1 pistache-3ec9d7c4f8b828fdd3... | 1 pppd-e1266c76d1ad39f98f1167... | 1 procs-0.14.5 | 1 python-grpcio-1.60.0 | 1 python-remi-2022.7.27 | 1 rtl8188eu-306f3e62cf7cddf8c... | 1 syslog-ng-4.7.1 | 1 ustreamer-5.51 | 1 volk-3.0.0 | 1 Detail of failures for master ----------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- aarch64 | aer-inject-9bd5e2c7886fca72... | NOK | http://autobuild.buildroot.net/results/d8e310a8dcfcfec772569524d3b497cece72041f | ORPH powerpc64le | android-tools-4.2.2+git2013... | NOK | http://autobuild.buildroot.net/results/84725c06965a567844e569048ab7edaa18544f20 | nios2 | bandwidthd-2.0.1-auto-r11 | NOK | http://autobuild.buildroot.net/results/73e96e7b91b61bf844e48483f00664467c25d094 | arm | bat-0.24.0 | NOK | http://autobuild.buildroot.net/results/c0d1dbfbba40a1ac45490f1206813551473f2925 | aarch64 | bat-0.24.0 | NOK | http://autobuild.buildroot.net/results/a8b8af030b8e805af61fd54a593d53e063b1d5c9 | powerpc64le | bat-0.24.0 | NOK | http://autobuild.buildroot.net/results/b95093c618eafeb3726513a3ef6199488406093d | microblazeel | brltty-6.6 | NOK | http://autobuild.buildroot.net/results/6244f79e95663ed73b6b27e742cda8df04bf79be | sparc64 | busybox-1.36.1 | NOK | http://autobuild.buildroot.net/results/f550fd18fabca5f7380ca58ba0d958eb0929f1d9 | ORPH sparc | check-11970a7e112dfe243a2e6... | NOK | http://autobuild.buildroot.net/results/44c63e9d6dac525915afdaf06b46c53f6d23c411 | ORPH arm | check-11970a7e112dfe243a2e6... | NOK | http://autobuild.buildroot.net/results/e69d3b2d27dd2eae309e0b7ee84a9fa0844ba351 | ORPH arm | clang-15.0.3 | NOK | http://autobuild.buildroot.net/results/f3f24315569104a20bfa623123535368c3e9612d | riscv64 | containerd-1.7.14 | NOK | http://autobuild.buildroot.net/results/545596fda62b07a8e631482c08e7ff52f4c18f68 | riscv64 | containerd-1.7.14 | NOK | http://autobuild.buildroot.net/results/dd7bf68f083919bf2a2ce406a565b1b3cc3661d2 | arc | crun-1.12 | NOK | http://autobuild.buildroot.net/results/57c0e17ef553671c2d18cd09fa713b84363ee6f2 | x86_64 | dust-0.9.0 | NOK | http://autobuild.buildroot.net/results/276bb6df59fe03ec8a615138d3d3a394ca25bd83 | ORPH x86_64 | dust-0.9.0 | NOK | http://autobuild.buildroot.net/results/1ff5ccf5ee6029669af1413c95827f670ae212b3 | ORPH aarch64 | dust-0.9.0 | NOK | http://autobuild.buildroot.net/results/af80c50816f99302132dc462d4522dfd5651abcd | ORPH powerpc | eza-0.18.8 | NOK | http://autobuild.buildroot.net/results/345131affd11212013e44cc1148707241f01bd7e | i686 | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/c4514660730a747c41674ac9ff33fc47ffa90c38 | powerpc64le | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/967f1ec7b8df68d75bd13fbddace23058bafc21b | sparc64 | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/c0c0d01042dec1f1e03ad559daa79abcecaf5a9b | microblaze | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/bec408fbd9079990b3a61091801258685cd10acf | arc | ffmpeg-6.1.1 | NOK | http://autobuild.buildroot.net/results/70f2bebe3668f5502e14213f9643ef9208fe8b72 | arc | ffmpeg-6.1.1 | NOK | http://autobuild.buildroot.net/results/bdc391abb4d82af0169989e90251df3af685e3ec | microblazeel | ffmpeg-6.1.1 | NOK | http://autobuild.buildroot.net/results/d89675316f0a285c35ddcfec0c1bd6a9e5a55d9f | or1k | foot-1.16.2 | NOK | http://autobuild.buildroot.net/results/11f0c5aca2ed80936b4f7d4d02bf4c163bc54896 | powerpc64 | freetype-2.13.2 | NOK | http://autobuild.buildroot.net/results/05325577496480ba1df26e9ce32c14206c7c5a1f | arc | frr-8.5.4 | NOK | http://autobuild.buildroot.net/results/082a03cfe45468caea1e3b8b101f0496759c6c39 | xtensa | frr-8.5.4 | NOK | http://autobuild.buildroot.net/results/190cf9865381021dcdd4d5d7743b000bcb8e450b | arm | gnuplot-6.0.0 | NOK | http://autobuild.buildroot.net/results/5e45dd8f9071694110c8481f222b9b07b6a97ef3 | microblazeel | gobject-introspection | TIM | http://autobuild.buildroot.net/results/dad14e5982bbf314a2a002324848d812195a915c | mips | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/32a46af0747d90d7c155557386b886e8baef8714 | ORPH sh4a | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/3bf4a45f7d7a468806130bf56ca4f2ce7294c505 | ORPH powerpc | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/ab0f2408b87772094fc894cf06699176a12ad3aa | ORPH mips | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/98950b448343f90971c877f4c4c61e5a81306680 | ORPH powerpc | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/9997c6a23199a8a459c54cd16f380f7276bbecf5 | ORPH mipsel | google-breakpad-f49c2f1a202... | NOK | http://autobuild.buildroot.net/results/6c5a22fb173714a45bf7f6e83f125a0ca36fb12a | m68k | host-babeltrace2-2.0.4 | NOK | http://autobuild.buildroot.net/results/07e37804d82407f9da6b8c21588ea19464621c43 | sh4eb | host-binutils-2.42 | NOK | http://autobuild.buildroot.net/results/7ebcabf81fe366f0f903b6f31e18a02f9ff947cd | arm | host-clang-15.0.3 | NOK | http://autobuild.buildroot.net/results/5f6fb1f26e8c41caa076538d20e5b4a017842ace | s390x | host-cmake-3.28.3 | NOK | http://autobuild.buildroot.net/results/4942fff06169b5bb54e70a6161b1dd841e6aef7c | s390x | host-cmake-3.28.3 | NOK | http://autobuild.buildroot.net/results/abd3e4172cf81fd6241f99290e6fff3f03ff1135 | sh4 | host-gcc-initial-13.2.0 | NOK | http://autobuild.buildroot.net/results/35fda8c98376fb0ad4371e2bf9d5179e436655d6 | i686 | host-gcc-initial-13.2.0 | NOK | http://autobuild.buildroot.net/results/32ffaab89a065fd04cf058eba9c11322458e3e82 | m68k | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/71623199789ad3bdf4dc54ae487b4ab2f4b7a9dd | ORPH microblazeel | host-libxcrypt-4.4.36 | NOK | http://autobuild.buildroot.net/results/0bb4169b22d706ef049b9f2b84e735c6bf94ca8d | sparc64 | host-perl-5.38.2 | NOK | http://autobuild.buildroot.net/results/c8744837fe9aeb0ab5430cdd721c8267adccee45 | aarch64 | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/50d7d973a84ef21c0bbcfff5e6dc3f1840370756 | mips64 | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/606a6f342699ba838f90aa36c5d78f5bbb3392b3 | arm | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/7b26a88a6fbed1775d9c1dbefae4938d93331930 | powerpc64 | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/f887adebe611f0021d5ee85acb95cced7c8b71c0 | m68k | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/1402723300998ee82b1ad890edae039a4124e8f2 | i686 | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/f612d7eb76a422500315ad9db44a861e21c8a4d4 | xtensa | jack2-1.9.22 | NOK | http://autobuild.buildroot.net/results/56dccf0918883b1348e89dd8b892c4f6f5a0b0f5 | aarch64 | libarchive-3.7.3 | NOK | http://autobuild.buildroot.net/results/59535c80b4b4606ccd97cb81c5843d97b8e6358a | arc | libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/7627f12fa32279ad3c93bd95e3710bb2ccf0ed64 | riscv32 | libopenssl-3.3.0 | NOK | http://autobuild.buildroot.net/results/1459a9a290d6b673c64957b5779f8ab54d2f4017 | ORPH microblaze | libopenssl-3.3.0 | NOK | http://autobuild.buildroot.net/results/551fad2f8233527c3fdd895fdfb23ab972f71117 | ORPH mips64el | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/cd3b72271b0870094c9dbb66a734706405710115 | ORPH powerpc | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/bba0104bb685ef4146030575f83aab30e81eb5d7 | ORPH xtensa | libsepol-3.6 | NOK | http://autobuild.buildroot.net/results/a8d59f266aa1ca3ce9c487dfa285e6593525d4ad | xtensa | libsepol-3.6 | NOK | http://autobuild.buildroot.net/results/7377f40fbcb34061060a79923e1f1d6934d1b879 | xtensa | libsepol-3.6 | NOK | http://autobuild.buildroot.net/results/7be215baf7309584a4244db65fd0c858007854fe | s390x | libunistring-1.2 | NOK | http://autobuild.buildroot.net/results/8edad730753b150ca7f927f9d4de572358df8779 | sparc64 | lighttpd-1.4.76 | NOK | http://autobuild.buildroot.net/results/8a03607d5b9732a91a354b2b30705c1892deefb9 | ORPH mips64 | linux-5.10.162-cip24 | NOK | http://autobuild.buildroot.net/results/f9016262a689789c09fcf626c2a425bfed6d98cb | ORPH aarch64_be | linux-6.8.9 | NOK | http://autobuild.buildroot.net/results/02bf1cba1b212a843ef67639450c4016d514a735 | ORPH powerpc | linux-6.8.9 | NOK | http://autobuild.buildroot.net/results/05abb6d7f6a1bef436ea830cd8a784c60ec858a9 | ORPH sh4aeb | linux-6.8.9 | NOK | http://autobuild.buildroot.net/results/52dc932b03b913ef10acf7bb8a6efef650f8bbae | ORPH mips | linux-6.8.9 | NOK | http://autobuild.buildroot.net/results/155fcfa46a2203cf46543ee703b354b15d3bf640 | ORPH sh4 | mediastreamer-4.4.8 | NOK | http://autobuild.buildroot.net/results/23850a40ff4881f19d6e6147a14538ea52013d09 | ORPH aarch64 | mongodb-4.2.18 | NOK | http://autobuild.buildroot.net/results/6633c7261dc1b3d38d281a7c39e31fdf8be1330f | arm | mongodb-4.2.18 | NOK | http://autobuild.buildroot.net/results/420b8ed7228730dcfeabfeaa70810411c209dd80 | arm | openssh-9.7p1 | NOK | http://autobuild.buildroot.net/results/c5fbf4ab7df24fde5fdec285a2dbd2c04ea9c7fd | ORPH arm | pistache-3ec9d7c4f8b828fdd3... | NOK | http://autobuild.buildroot.net/results/1f5f18713d078482cd9995cb71da08303a30ded4 | ORPH sparc | pppd-e1266c76d1ad39f98f1167... | NOK | http://autobuild.buildroot.net/results/5085556e465c0cfea87dc7114f45e0d96927398f | arm | procs-0.14.5 | NOK | http://autobuild.buildroot.net/results/abac4127dc8a0519235487d3aa75b7f9900769d4 | sparc64 | proj-9.3.0 | NOK | http://autobuild.buildroot.net/results/442c6f7bedf2870692e9f60c10b03e28d9aed1f3 | microblaze | proj-9.3.0 | NOK | http://autobuild.buildroot.net/results/a94dfcd4f765e128a715b00d9032d45033aa4713 | i686 | python-grpcio-1.60.0 | NOK | http://autobuild.buildroot.net/results/056a97b5242052327b44dfc297ea29024f225ca9 | aarch64_be | python-remi-2022.7.27 | NOK | http://autobuild.buildroot.net/results/967658872018b40dd0123d4d09cbd1cb03bf626b | x86_64 | rtl8188eu-306f3e62cf7cddf8c... | NOK | http://autobuild.buildroot.net/results/c91828d666f9ad7e7976362c443b29da57af5d8a | arm | shadow-4.14.5 | NOK | http://autobuild.buildroot.net/results/cfdf4ea064df4839424026483d4e3d222df4da46 | arm | shadow-4.14.5 | NOK | http://autobuild.buildroot.net/results/5cb62733e7d8e5021321010a71d0034066ba821c | arm | sofia-sip-1.13.17 | NOK | http://autobuild.buildroot.net/results/a6d872ea2033636794df6decc055f19889f4fdb7 | i686 | sofia-sip-1.13.17 | NOK | http://autobuild.buildroot.net/results/3a07c946fafa2b8f4a5a03e9538240ca95b18dca | nios2 | syslog-ng-4.7.1 | NOK | http://autobuild.buildroot.net/results/cf36fb119224ba50a768dbe363d4c381f76eb476 | i686 | uclibc-1.0.48 | NOK | http://autobuild.buildroot.net/results/9f586db6f6890adb2b0f6426b728d08330581ddc | arceb | uclibc-1.0.48 | NOK | http://autobuild.buildroot.net/results/d9b924bdea3fd61060fa0e961c12534c1fff80de | powerpc64 | unknown | NOK | http://autobuild.buildroot.net/results/17c66958cad99e446a17604b77676198e2a8944e | riscv32 | unknown | NOK | http://autobuild.buildroot.net/results/d5fd03ce95ad58847da2ab4234bee6824449d67b | m68k | unknown | NOK | http://autobuild.buildroot.net/results/d8c4c7693c3f7bfb69a5a34346ac1bbb3b7151e9 | i686 | ustreamer-5.51 | NOK | http://autobuild.buildroot.net/results/db08277684ff03b7b655b9be46962ba31d071dda | powerpc | volk-3.0.0 | NOK | http://autobuild.buildroot.net/results/e3282218e8894e3e88c7d1917bec9df81402b067 | aarch64 | zeek-4.1.1 | NOK | http://autobuild.buildroot.net/results/d7e5cd34918c6e1e1bb0b0c60519acc891fbb79a | arm | zeek-4.1.1 | NOK | http://autobuild.buildroot.net/results/35de0516a2c3389378a21413922f2f75dda5c638 | Classification of failures by reason for 2024.02.x -------------------------------------------------- bird-2.0.12 | 2 elfutils-0.189 | 1 host-heimdal-f4faaeaba371ff... | 1 ipmitool-1_8_19 | 1 libcamera-apps-1.2.1 | 1 libopenssl-3.2.1 | 1 mariadb-10.11.6 | 1 python-grpcio-1.60.0 | 1 shadow-4.14.3 | 1 unknown | 1 Detail of failures for 2024.02.x -------------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- sparc | bird-2.0.12 | NOK | http://autobuild.buildroot.net/results/86cd548229c12ab4519c1d3f212e64e6eab97b90 | mipsel | bird-2.0.12 | NOK | http://autobuild.buildroot.net/results/c4a2f201ee306dab6f8b6374f7be10989200496f | microblaze | elfutils-0.189 | NOK | http://autobuild.buildroot.net/results/de00407df5d84ea4f0f6daab9a5baf85a3bbff85 | ORPH x86_64 | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/a4c7d1b7149d37948cbf65c29a13d0331c7fc3d3 | ORPH armeb | ipmitool-1_8_19 | NOK | http://autobuild.buildroot.net/results/df4d58a0623f36ccef1d8739644f224d5d7cf34c | microblazeel | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/d5e475f90c0ef086829cbe0561916f42e689ff79 | arm | libopenssl-3.2.1 | NOK | http://autobuild.buildroot.net/results/ba1474dda768b10084814b94704aefd6dba6f706 | ORPH mips | mariadb-10.11.6 | NOK | http://autobuild.buildroot.net/results/44807e6038dd4d9cd9042fe7f102ac8367e555a0 | ORPH aarch64_be | python-grpcio-1.60.0 | NOK | http://autobuild.buildroot.net/results/f5b32e918a48f06083aa78b3f819846ef439af1a | mips64el | shadow-4.14.3 | NOK | http://autobuild.buildroot.net/results/24ff25dd917bde2b14f6b3a25ed0291e37cc8184 | i686 | unknown | NOK | http://autobuild.buildroot.net/results/2aa593264fe9563b7fe92d0df5d207770e7d3edd | Gitlab CI results for 2024-05-14 ================================ Detail of runtime-test failures for master ------------------------------------------ runtime-test | link to the job | orph? --------------------------+---------------------------------------------------------------+------ TestDockerCompose | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833307823 | ORPH ...ilp32dMuslBleedingEdge | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833309173 | ORPH ...iscv32ilp32dMuslStable | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833309174 | ORPH TestMender | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308175 | ORPH TestNu | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308218 | ORPH TestOci | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833307649 | ORPH TestPythonPy3MlDtypes | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308461 | ORPH TestPythonPy3PyAlsa | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308479 | ORPH TestPythonPy3SciPy | https://gitlab.com/buildroot.org/buildroot/-/jobs/6844560339 | ORPH TestRust | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308568 | ORPH TestRustBin | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308569 | ORPH TestRustVendoring | https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308571 | ORPH -- http://autobuild.buildroot.net From peter at korsgaard.com Wed May 15 06:05:25 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:05:25 +0200 Subject: [Buildroot] [PATCH 1/1] package/ustreamer: bump version to 6.11 In-Reply-To: <20240514165251.511634-1-kadambini.nema@gmail.com> (Kadambini Nema's message of "Tue, 14 May 2024 09:52:51 -0700") References: <20240514165251.511634-1-kadambini.nema@gmail.com> Message-ID: <871q63txsq.fsf@dell.be.48ers.dk> >>>>> "Kadambini" == Kadambini Nema writes: > changelog - https://github.com/pikvm/ustreamer/compare/v5.51...v6.11 > Signed-off-by: Kadambini Nema Committed, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 06:06:11 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:06:11 +0200 Subject: [Buildroot] [PATCH 1/1] package/{mesa3d, mesa3d-headers}: bump version to 24.0.7 In-Reply-To: <20240514215615.2866697-1-bernd@kuhls.net> (Bernd Kuhls's message of "Tue, 14 May 2024 23:56:15 +0200") References: <20240514215615.2866697-1-bernd@kuhls.net> Message-ID: <87wmnvsj70.fsf@dell.be.48ers.dk> >>>>> "Bernd" == Bernd Kuhls writes: > Release notes: > https://lists.freedesktop.org/archives/mesa-announce/2024-May/000758.html > Signed-off-by: Bernd Kuhls Committed, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 06:08:39 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:08:39 +0200 Subject: [Buildroot] [PATCH 1/1] package/squid: security bump version to 6.9 In-Reply-To: <20240514215636.2866720-1-bernd@kuhls.net> (Bernd Kuhls's message of "Tue, 14 May 2024 23:56:36 +0200") References: <20240514215636.2866720-1-bernd@kuhls.net> Message-ID: <87seyjsj2w.fsf@dell.be.48ers.dk> >>>>> "Bernd" == Bernd Kuhls writes: > Fixes CVE-2024-25111: > https://github.com/squid-cache/squid/security/advisories/GHSA-72c2-c3wm-8qxc > Signed-off-by: Bernd Kuhls > --- > package/squid/squid.hash | 6 +++--- > package/squid/squid.mk | 2 +- > 2 files changed, 4 insertions(+), 4 deletions(-) > diff --git a/package/squid/squid.hash b/package/squid/squid.hash > index 4a8ea5d550..ed78933306 100644 > --- a/package/squid/squid.hash > +++ b/package/squid/squid.hash > @@ -1,6 +1,6 @@ > -# From http://www.squid-cache.org/Versions/v6/squid-6.6.tar.xz.asc > -md5 5a41134ee1b7e75f62088acdec92d2ca squid-6.6.tar.xz > -sha1 f05e06a9dd3bf7501d2844e43d9ae1bd00e9edcc squid-6.6.tar.xz > +# From http://www.squid-cache.org/Versions/v6/squid-6.9.tar.xz.asc > +md5 4888e9dc75c0daa0ed526b34c055cb67 squid-6.9.tar.xz > +sha1 5e73b30116ce7111589cc2b1c9bfe3c17efa2e75 squid-6.9.tar.xz > # Locally calculated > sha256 55bd7f9f4898153161ea1228998acb551bf840832b9e5b90fc8ecd2942420318 squid-6.6.tar.xz You forgot to update the sha256. Committed with that fixed, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 06:11:25 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:11:25 +0200 Subject: [Buildroot] [PATCH 1/1] package/gnuplot: fix readline dependency In-Reply-To: <20240514173919.318237-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Tue, 14 May 2024 19:39:19 +0200") References: <20240514173919.318237-1-fontaine.fabrice@gmail.com> Message-ID: <87o797siya.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > --without-readline is interpreted as --with-readline=builtin since bump > to version 5.4.0 in commit 263da09323e83bb3d6552b70b739523b66459df8 and > https://github.com/gnuplot/gnuplot/commit/b492ea63bd604081ffb9dee3843e295b0b29df85 > so add a mandatory dependency to readline or libedit to gnuplot > As a side-effect, this will avoid the following build failure with > builtin readline raised since bump to version 6.0.0 in commit > 5f11ce4aeaba99917778c384b236d267e78a7b29: > /home/autobuild/autobuild/instance-14/output-1/host/lib/gcc/arm-buildroot-linux-gnueabi/13.2.0/../../../../arm-buildroot-linux-gnueabi/bin/ld: > history.o: in function `read_history': > history.c:(.text+0xa8): undefined reference to `gp_read_history' > Fixes: 5f11ce4aeaba99917778c384b236d267e78a7b29 > - http://autobuild.buildroot.org/results/5e45dd8f9071694110c8481f222b9b07b6a97ef3 > Signed-off-by: Fabrice Fontaine Committed, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 06:12:55 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:12:55 +0200 Subject: [Buildroot] [PATCH v2] package/fluent-bit: bump to v3.0.3 In-Reply-To: <20240514203347.4107730-1-thomas@devoogdt.com> (Thomas Devoogdt's message of "Tue, 14 May 2024 22:33:47 +0200") References: <20240420185958.4165997-1-thomas@devoogdt.com> <20240514203347.4107730-1-thomas@devoogdt.com> Message-ID: <87jzjvsivs.fsf@dell.be.48ers.dk> >>>>> "Thomas" == Thomas Devoogdt writes: > Release Notes: > - https://fluentbit.io/announcements/v3.0.1 > - https://fluentbit.io/announcements/v3.0.2 > - https://fluentbit.io/announcements/v3.0.3 > Signed-off-by: Thomas Devoogdt > --- > v2: bump from v3.0.2 to v3.0.3 Committed, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 06:14:24 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:14:24 +0200 Subject: [Buildroot] [PATCH 1/1] package/libnpth: fix gnupg2 build with uclibc In-Reply-To: <20240514172142.4449-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Tue, 14 May 2024 19:21:42 +0200") References: <20240514172142.4449-1-fontaine.fabrice@gmail.com> Message-ID: <87frujsitb.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > Fix the following build failure of gnupg2 raised since bump to version > 1.7 in commit 3ef4d24192b20bd1eb5e34c9fa2a6aa5bde91f91 and > https://git.gnupg.org/cgi-bin/gitweb.cgi?p=npth.git;a=commitdiff;h=02ce6b2d27f91ed6285e4e92d99c21bcc7823c9b: > /home/autobuild/autobuild/instance-2/output-1/host/lib/gcc/armeb-buildroot-linux-uclibcgnueabi/13.2.0/../../../../armeb-buildroot-linux-uclibcgnueabi/bin/ld: > /home/autobuild/autobuild/instance-2/output-1/host/bin/../armeb-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libnpth.so: > undefined reference to `busy_wait_for' > Fixes: 3ef4d24192b20bd1eb5e34c9fa2a6aa5bde91f91 > - http://autobuild.buildroot.org/results/9a27ffde79598a39b4fd55c716978d32d0beb924 > Signed-off-by: Fabrice Fontaine Committed, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 06:14:47 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:14:47 +0200 Subject: [Buildroot] [PATCH 1/1] package/kodi-pvr-waipu: bump version to 21.6.1-Omega In-Reply-To: <20240514215546.2866676-1-bernd@kuhls.net> (Bernd Kuhls's message of "Tue, 14 May 2024 23:55:46 +0200") References: <20240514215546.2866676-1-bernd@kuhls.net> Message-ID: <87bk57siso.fsf@dell.be.48ers.dk> >>>>> "Bernd" == Bernd Kuhls writes: > Signed-off-by: Bernd Kuhls Committed, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 06:15:51 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:15:51 +0200 Subject: [Buildroot] [PATCH 1/1] package/php: bump version to 8.3.7 In-Reply-To: <20240514215712.2866745-1-bernd@kuhls.net> (Bernd Kuhls's message of "Tue, 14 May 2024 23:57:12 +0200") References: <20240514215712.2866745-1-bernd@kuhls.net> Message-ID: <877cfvsiqw.fsf@dell.be.48ers.dk> >>>>> "Bernd" == Bernd Kuhls writes: > Removed patch which is included in this release. > Changelog: https://www.php.net/ChangeLog-8.php#PHP_8_3 > Release notes: https://news-web.php.net/php.announce/427 > Signed-off-by: Bernd Kuhls Committed, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 06:04:17 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:04:17 +0200 Subject: [Buildroot] [git commit] package/{mesa3d, mesa3d-headers}: bump version to 24.0.7 Message-ID: <20240515061605.9B37387146@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=4b18f32e5d9c3537a05405201092d65148b1bdbf branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Release notes: https://lists.freedesktop.org/archives/mesa-announce/2024-May/000758.html Signed-off-by: Bernd Kuhls Signed-off-by: Peter Korsgaard --- package/mesa3d-headers/mesa3d-headers.mk | 2 +- package/mesa3d/mesa3d.hash | 6 +++--- package/mesa3d/mesa3d.mk | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package/mesa3d-headers/mesa3d-headers.mk b/package/mesa3d-headers/mesa3d-headers.mk index e1f6211e17..e35774a942 100644 --- a/package/mesa3d-headers/mesa3d-headers.mk +++ b/package/mesa3d-headers/mesa3d-headers.mk @@ -12,7 +12,7 @@ endif # Not possible to directly refer to mesa3d variables, because of # first/second expansion trickery... -MESA3D_HEADERS_VERSION = 24.0.6 +MESA3D_HEADERS_VERSION = 24.0.7 MESA3D_HEADERS_SOURCE = mesa-$(MESA3D_HEADERS_VERSION).tar.xz MESA3D_HEADERS_SITE = https://archive.mesa3d.org MESA3D_HEADERS_DL_SUBDIR = mesa3d diff --git a/package/mesa3d/mesa3d.hash b/package/mesa3d/mesa3d.hash index fb3df96555..f2c25464f4 100644 --- a/package/mesa3d/mesa3d.hash +++ b/package/mesa3d/mesa3d.hash @@ -1,5 +1,5 @@ -# From https://lists.freedesktop.org/archives/mesa-announce/2024-April/000755.html -sha256 8b7a92dbe6468c18f2383700135b5fe9de836cdf0cc8fd7dbae3c7110237d604 mesa-24.0.6.tar.xz -sha512 60fcc77132c3cb0c98e650d97d3324bfd18abe7f8f8a3aa5209f71b2fddd94510f939bbf5272b2241749307184d5badde9da4842be57ce13f5760875885ea6fc mesa-24.0.6.tar.xz +# From https://lists.freedesktop.org/archives/mesa-announce/2024-May/000758.html +sha256 7454425f1ed4a6f1b5b107e1672b30c88b22ea0efea000ae2c7d96db93f6c26a mesa-24.0.7.tar.xz +sha512 77b0fae80ab0a07e2e528c113eadef0e3004b8df3e6e98fffe6fc2d8ac39f5ce7fa38ebe5c2ae32bfbac993dd7cbe288ace18ebb03cf2fb445fe7114f74dd45c mesa-24.0.7.tar.xz # License sha256 a00275a53178e2645fb65be99a785c110513446a5071ff2c698ed260ad917d75 docs/license.rst diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk index 39cbb4c23b..6bccdaed04 100644 --- a/package/mesa3d/mesa3d.mk +++ b/package/mesa3d/mesa3d.mk @@ -5,7 +5,7 @@ ################################################################################ # When updating the version, please also update mesa3d-headers -MESA3D_VERSION = 24.0.6 +MESA3D_VERSION = 24.0.7 MESA3D_SOURCE = mesa-$(MESA3D_VERSION).tar.xz MESA3D_SITE = https://archive.mesa3d.org MESA3D_LICENSE = MIT, SGI, Khronos From peter at korsgaard.com Wed May 15 05:56:45 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 07:56:45 +0200 Subject: [Buildroot] [git commit] package/ustreamer: bump version to 6.11 Message-ID: <20240515061605.8C59487149@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=c6c173dadb7b44ba4af92237d05503b8e83e51dc branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master changelog - https://github.com/pikvm/ustreamer/compare/v5.51...v6.11 Signed-off-by: Kadambini Nema Signed-off-by: Peter Korsgaard --- package/ustreamer/ustreamer.hash | 2 +- package/ustreamer/ustreamer.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/ustreamer/ustreamer.hash b/package/ustreamer/ustreamer.hash index d3f603e0c8..7c70f0195f 100644 --- a/package/ustreamer/ustreamer.hash +++ b/package/ustreamer/ustreamer.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 88f107e02a0b5c6493d55ed1bce0c85f66ce83d2bc0271ff6319ad593c6584bc ustreamer-5.51.tar.gz +sha256 80ab01eeaa81c7d8e9c7f62304287d176fd729cb12ca5adb2e181b5a3da79216 ustreamer-6.11.tar.gz sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE diff --git a/package/ustreamer/ustreamer.mk b/package/ustreamer/ustreamer.mk index dc8577b5e9..5b73e387d6 100644 --- a/package/ustreamer/ustreamer.mk +++ b/package/ustreamer/ustreamer.mk @@ -4,7 +4,7 @@ # ################################################################################ -USTREAMER_VERSION = 5.51 +USTREAMER_VERSION = 6.11 USTREAMER_SITE = $(call github,pikvm,ustreamer,v$(USTREAMER_VERSION)) USTREAMER_LICENSE = GPL-3.0+ USTREAMER_LICENSE_FILES = LICENSE From peter at korsgaard.com Wed May 15 06:07:22 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:07:22 +0200 Subject: [Buildroot] [git commit] package/squid: security bump version to 6.9 Message-ID: <20240515061605.A83C987157@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=58ccc55bff54d4c6c289a2d348f18b1b6dfde62d branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fixes CVE-2024-25111: https://github.com/squid-cache/squid/security/advisories/GHSA-72c2-c3wm-8qxc Signed-off-by: Bernd Kuhls [Peter: update sha256 hash] Signed-off-by: Peter Korsgaard --- package/squid/squid.hash | 8 ++++---- package/squid/squid.mk | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package/squid/squid.hash b/package/squid/squid.hash index 4a8ea5d550..e5017ae5cd 100644 --- a/package/squid/squid.hash +++ b/package/squid/squid.hash @@ -1,6 +1,6 @@ -# From http://www.squid-cache.org/Versions/v6/squid-6.6.tar.xz.asc -md5 5a41134ee1b7e75f62088acdec92d2ca squid-6.6.tar.xz -sha1 f05e06a9dd3bf7501d2844e43d9ae1bd00e9edcc squid-6.6.tar.xz +# From http://www.squid-cache.org/Versions/v6/squid-6.9.tar.xz.asc +md5 4888e9dc75c0daa0ed526b34c055cb67 squid-6.9.tar.xz +sha1 5e73b30116ce7111589cc2b1c9bfe3c17efa2e75 squid-6.9.tar.xz # Locally calculated -sha256 55bd7f9f4898153161ea1228998acb551bf840832b9e5b90fc8ecd2942420318 squid-6.6.tar.xz +sha256 1ad72d46e1cb556e9561214f0fb181adb87c7c47927ef69bc8acd68a03f61882 squid-6.9.tar.xz sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/squid/squid.mk b/package/squid/squid.mk index e325c63cb0..60eca397ec 100644 --- a/package/squid/squid.mk +++ b/package/squid/squid.mk @@ -4,7 +4,7 @@ # ################################################################################ -SQUID_VERSION = 6.6 +SQUID_VERSION = 6.9 SQUID_SOURCE = squid-$(SQUID_VERSION).tar.xz SQUID_SITE = http://www.squid-cache.org/Versions/v6 SQUID_LICENSE = GPL-2.0+ From peter at korsgaard.com Wed May 15 06:12:16 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:12:16 +0200 Subject: [Buildroot] [git commit] package/fluent-bit: bump to v3.0.3 Message-ID: <20240515061605.C874787149@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=15820bc0cd668fa9e1db78d29a3c44cb1e6cf717 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Release Notes: - https://fluentbit.io/announcements/v3.0.1 - https://fluentbit.io/announcements/v3.0.2 - https://fluentbit.io/announcements/v3.0.3 Signed-off-by: Thomas Devoogdt Signed-off-by: Peter Korsgaard --- package/fluent-bit/fluent-bit.hash | 2 +- package/fluent-bit/fluent-bit.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/fluent-bit/fluent-bit.hash b/package/fluent-bit/fluent-bit.hash index cc9c976d60..a53f6dba51 100644 --- a/package/fluent-bit/fluent-bit.hash +++ b/package/fluent-bit/fluent-bit.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 e70ae5be2f0ca1cb842a1c8d2762437907c522765f79b5c0c391eaa1b57c9f4c fluent-bit-3.0.0.tar.gz +sha256 2f3b82e8b7802fe92625009531592f12d500ff61a02ecf4cd27e0f138a6dc566 fluent-bit-3.0.3.tar.gz sha256 0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594 LICENSE diff --git a/package/fluent-bit/fluent-bit.mk b/package/fluent-bit/fluent-bit.mk index 33054bea66..b235c3abf4 100644 --- a/package/fluent-bit/fluent-bit.mk +++ b/package/fluent-bit/fluent-bit.mk @@ -4,7 +4,7 @@ # ################################################################################ -FLUENT_BIT_VERSION = 3.0.0 +FLUENT_BIT_VERSION = 3.0.3 FLUENT_BIT_SITE = $(call github,fluent,fluent-bit,v$(FLUENT_BIT_VERSION)) FLUENT_BIT_LICENSE = Apache-2.0 FLUENT_BIT_LICENSE_FILES = LICENSE From peter at korsgaard.com Wed May 15 06:10:25 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:10:25 +0200 Subject: [Buildroot] [git commit] package/gnuplot: fix readline dependency Message-ID: <20240515061605.B78CF8714A@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=93864cef0b1ec94c44498a4edd31de92725b28b2 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master --without-readline is interpreted as --with-readline=builtin since bump to version 5.4.0 in commit 263da09323e83bb3d6552b70b739523b66459df8 and https://github.com/gnuplot/gnuplot/commit/b492ea63bd604081ffb9dee3843e295b0b29df85 so add a mandatory dependency to readline or libedit to gnuplot As a side-effect, this will avoid the following build failure with builtin readline raised since bump to version 6.0.0 in commit 5f11ce4aeaba99917778c384b236d267e78a7b29: /home/autobuild/autobuild/instance-14/output-1/host/lib/gcc/arm-buildroot-linux-gnueabi/13.2.0/../../../../arm-buildroot-linux-gnueabi/bin/ld: history.o: in function `read_history': history.c:(.text+0xa8): undefined reference to `gp_read_history' Fixes: 5f11ce4aeaba99917778c384b236d267e78a7b29 - http://autobuild.buildroot.org/results/5e45dd8f9071694110c8481f222b9b07b6a97ef3 Signed-off-by: Fabrice Fontaine Signed-off-by: Peter Korsgaard --- package/gnuplot/Config.in | 1 + package/gnuplot/gnuplot.mk | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/package/gnuplot/Config.in b/package/gnuplot/Config.in index 603c194fe5..8068a7283b 100644 --- a/package/gnuplot/Config.in +++ b/package/gnuplot/Config.in @@ -1,5 +1,6 @@ config BR2_PACKAGE_GNUPLOT bool "gnuplot" + select BR2_PACKAGE_READLINE if !BR2_PACKAGE_LIBEDIT help A portable command-line driven graphing utility. diff --git a/package/gnuplot/gnuplot.mk b/package/gnuplot/gnuplot.mk index 26b2daaf24..e34dd2a60b 100644 --- a/package/gnuplot/gnuplot.mk +++ b/package/gnuplot/gnuplot.mk @@ -41,8 +41,9 @@ endif ifeq ($(BR2_PACKAGE_READLINE),y) GNUPLOT_CONF_OPTS += --with-readline=gnu GNUPLOT_DEPENDENCIES += readline -else -GNUPLOT_CONF_OPTS += --without-readline +else ifeq ($(BR2_PACKAGE_LIBEDIT),y) +GNUPLOT_CONF_OPTS += --with-readline=bsd +GNUPLOT_DEPENDENCIES += libedit endif # Remove Javascript scripts, lua scripts, PostScript files From peter at korsgaard.com Wed May 15 06:15:16 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:15:16 +0200 Subject: [Buildroot] [git commit] package/php: bump version to 8.3.7 Message-ID: <20240515061605.ED7EE87149@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=932b52fad87d79d9f26a343edafe2981079de16e branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Removed patch which is included in this release. Changelog: https://www.php.net/ChangeLog-8.php#PHP_8_3 Release notes: https://news-web.php.net/php.announce/427 Signed-off-by: Bernd Kuhls Signed-off-by: Peter Korsgaard --- ...nd_call_stack.c-fix-build-without-pthread.patch | 39 ---------------------- package/php/php.hash | 2 +- package/php/php.mk | 2 +- 3 files changed, 2 insertions(+), 41 deletions(-) diff --git a/package/php/0006-Zend-zend_call_stack.c-fix-build-without-pthread.patch b/package/php/0006-Zend-zend_call_stack.c-fix-build-without-pthread.patch deleted file mode 100644 index 10b0083655..0000000000 --- a/package/php/0006-Zend-zend_call_stack.c-fix-build-without-pthread.patch +++ /dev/null @@ -1,39 +0,0 @@ -From c3e37c438a11d59d858fcc7b46eac00a8074972b Mon Sep 17 00:00:00 2001 -From: Fabrice Fontaine -Date: Sat, 30 Mar 2024 17:51:55 +0100 -Subject: [PATCH] Zend/zend_call_stack.c: fix build without pthread - -Fix the following build failure without pthread raised since version -8.3.0 and -https://github.com/php/php-src/commit/a11c8a30399e90c17c287b9656c0077bc5131c9c: - -/home/buildroot/instance-0/output-1/build/php-8.3.4/Zend/zend_call_stack.c:39:11: fatal error: pthread.h: No such file or directory - 39 | # include - | ^~~~~~~~~~~ - -Fixes: - - http://autobuild.buildroot.org/results/a4ef648a9da50b26ed56d5d490e4cf5a1bfff970 - -Signed-off-by: Fabrice Fontaine -Upstream: https://github.com/php/php-src/pull/13843 ---- - Zend/zend_call_stack.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/Zend/zend_call_stack.c b/Zend/zend_call_stack.c -index 97cbed9041..97de938a0f 100644 ---- a/Zend/zend_call_stack.c -+++ b/Zend/zend_call_stack.c -@@ -35,7 +35,8 @@ - # include - # endif - #endif /* ZEND_WIN32 */ --#if defined(__linux__) || defined(__FreeBSD__) || defined(__APPLE__) || defined(__OpenBSD__) -+#if (defined(HAVE_PTHREAD_GETATTR_NP) && defined(HAVE_PTHREAD_ATTR_GETSTACK)) || \ -+ defined(__FreeBSD__) || defined(__APPLE__) || defined(__OpenBSD__) - # include - #endif - #ifdef __FreeBSD__ --- -2.43.0 - diff --git a/package/php/php.hash b/package/php/php.hash index 4378d7ed07..9b25eabd32 100644 --- a/package/php/php.hash +++ b/package/php/php.hash @@ -1,5 +1,5 @@ # From https://www.php.net/downloads.php -sha256 53c8386b2123af97626d3438b3e4058e0c5914cb74b048a6676c57ac647f5eae php-8.3.6.tar.xz +sha256 d53433c1ca6b2c8741afa7c524272e6806c1e895e5912a058494fea89988570a php-8.3.7.tar.xz # License file sha256 b42e4df5e50e6ecda1047d503d6d91d71032d09ed1027ba1ef29eed26f890c5a LICENSE diff --git a/package/php/php.mk b/package/php/php.mk index 5b26ec90e2..ad2d901dfd 100644 --- a/package/php/php.mk +++ b/package/php/php.mk @@ -4,7 +4,7 @@ # ################################################################################ -PHP_VERSION = 8.3.6 +PHP_VERSION = 8.3.7 PHP_SITE = https://www.php.net/distributions PHP_SOURCE = php-$(PHP_VERSION).tar.xz PHP_INSTALL_STAGING = YES From peter at korsgaard.com Wed May 15 06:13:08 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:13:08 +0200 Subject: [Buildroot] [git commit] package/libnpth: fix gnupg2 build with uclibc Message-ID: <20240515061605.D60268715C@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=ad64ddd4f306eb787ce98263148a91b3386be570 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fix the following build failure of gnupg2 raised since bump to version 1.7 in commit 3ef4d24192b20bd1eb5e34c9fa2a6aa5bde91f91 and https://git.gnupg.org/cgi-bin/gitweb.cgi?p=npth.git;a=commitdiff;h=02ce6b2d27f91ed6285e4e92d99c21bcc7823c9b: /home/autobuild/autobuild/instance-2/output-1/host/lib/gcc/armeb-buildroot-linux-uclibcgnueabi/13.2.0/../../../../armeb-buildroot-linux-uclibcgnueabi/bin/ld: /home/autobuild/autobuild/instance-2/output-1/host/bin/../armeb-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libnpth.so: undefined reference to `busy_wait_for' Fixes: 3ef4d24192b20bd1eb5e34c9fa2a6aa5bde91f91 - http://autobuild.buildroot.org/results/9a27ffde79598a39b4fd55c716978d32d0beb924 Signed-off-by: Fabrice Fontaine Signed-off-by: Peter Korsgaard --- ...-npth_rwlock_timedrdlock-is-not-supported.patch | 51 ++++++++++++++++++++++ package/libnpth/0003-Fix-previous-commit.patch | 39 +++++++++++++++++ 2 files changed, 90 insertions(+) diff --git a/package/libnpth/0002-Return-a-run-time-error-if-npth_rwlock_timedrdlock-is-not-supported.patch b/package/libnpth/0002-Return-a-run-time-error-if-npth_rwlock_timedrdlock-is-not-supported.patch new file mode 100644 index 0000000000..0d9b38e4ce --- /dev/null +++ b/package/libnpth/0002-Return-a-run-time-error-if-npth_rwlock_timedrdlock-is-not-supported.patch @@ -0,0 +1,51 @@ +From 01f03a91c9bd63910995aeef412beb3ca6dc9a67 Mon Sep 17 00:00:00 2001 +From: NIIBE Yutaka +Date: Tue, 7 May 2024 13:45:47 +0900 +Subject: [PATCH] Return a run-time error if npth_rwlock_timedrdlock is not + supported. + +* src/npth.c (npth_rwlock_timedrdlock): Return ENOSYS if not +supported. +(npth_rwlock_timedwrlock): Use HAVE_PTHREAD_RWLOCK_TRYWRLOCK. + +-- + +GnuPG-bug-id: 7109 +Fixed-commit: 363c370bd35dd0bb4e5636b2d4f06ea88c658794 +Signed-off-by: NIIBE Yutaka + +Upstream: https://git.gnupg.org/cgi-bin/gitweb.cgi?p=npth.git;a=commit;h=01f03a91c9bd63910995aeef412beb3ca6dc9a67 +Signed-off-by: Fabrice Fontaine +--- + src/npth.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/npth.c b/src/npth.c +index c0ff8da..f02540c 100644 +--- a/src/npth.c ++++ b/src/npth.c +@@ -488,9 +488,11 @@ npth_rwlock_timedrdlock (npth_rwlock_t *rwlock, const struct timespec *abstime) + ENTER(); + #if HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK + err = pthread_rwlock_timedrdlock (rwlock, abstime); +-#else ++#elif HAVE_PTHREAD_RWLOCK_TRYRDLOCK + err = busy_wait_for ((trylock_func_t) pthread_rwlock_tryrdlock, rwlock, + abstime); ++#else ++ err = ENOSYS; + #endif + LEAVE(); + return err; +@@ -533,7 +535,7 @@ npth_rwlock_timedwrlock (npth_rwlock_t *rwlock, const struct timespec *abstime) + ENTER(); + #if HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK + err = pthread_rwlock_timedwrlock (rwlock, abstime); +-#elif HAVE_PTHREAD_RWLOCK_TRYRDLOCK ++#elif HAVE_PTHREAD_RWLOCK_TRYWRLOCK + err = busy_wait_for ((trylock_func_t) pthread_rwlock_trywrlock, rwlock, + abstime); + #else +-- +2.30.2 + diff --git a/package/libnpth/0003-Fix-previous-commit.patch b/package/libnpth/0003-Fix-previous-commit.patch new file mode 100644 index 0000000000..5f3ce06bf6 --- /dev/null +++ b/package/libnpth/0003-Fix-previous-commit.patch @@ -0,0 +1,39 @@ +From 75c68399ef3bbb5d024f2a60474a7214fa479016 Mon Sep 17 00:00:00 2001 +From: NIIBE Yutaka +Date: Mon, 13 May 2024 11:13:23 +0900 +Subject: [PATCH] Fix previous commit. + +Signed-off-by: NIIBE Yutaka + +Upstream: https://git.gnupg.org/cgi-bin/gitweb.cgi?p=npth.git;a=commit;h=75c68399ef3bbb5d024f2a60474a7214fa479016 +Signed-off-by: Fabrice Fontaine +--- + src/npth.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/src/npth.c b/src/npth.c +index f02540c..8dced17 100644 +--- a/src/npth.c ++++ b/src/npth.c +@@ -178,6 +178,18 @@ static int initialized_or_any_threads; + typedef int (*trylock_func_t) (void *); + + #ifndef HAVE_PTHREAD_MUTEX_TIMEDLOCK ++#define REQUIRE_THE_BUSY_WAIT_FOR_IMPLEMENTATION 1 ++#endif ++ ++#if !HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK && HAVE_PTHREAD_RWLOCK_TRYRDLOCK ++#define REQUIRE_THE_BUSY_WAIT_FOR_IMPLEMENTATION 1 ++#endif ++ ++#if !HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK && HAVE_PTHREAD_RWLOCK_TRYWRLOCK ++#define REQUIRE_THE_BUSY_WAIT_FOR_IMPLEMENTATION 1 ++#endif ++ ++#if REQUIRE_THE_BUSY_WAIT_FOR_IMPLEMENTATION + static int + busy_wait_for (trylock_func_t trylock, void *lock, + const struct timespec *abstime) +-- +2.30.2 + From peter at korsgaard.com Wed May 15 06:14:44 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 08:14:44 +0200 Subject: [Buildroot] [git commit] package/kodi-pvr-waipu: bump version to 21.6.1-Omega Message-ID: <20240515061605.E0AAA8715D@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=3f3c22d1bf2e2923eae88f1997925c38aeb49f28 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Bernd Kuhls Signed-off-by: Peter Korsgaard --- package/kodi-pvr-waipu/kodi-pvr-waipu.hash | 2 +- package/kodi-pvr-waipu/kodi-pvr-waipu.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/kodi-pvr-waipu/kodi-pvr-waipu.hash b/package/kodi-pvr-waipu/kodi-pvr-waipu.hash index 2c682c884c..6377f36e80 100644 --- a/package/kodi-pvr-waipu/kodi-pvr-waipu.hash +++ b/package/kodi-pvr-waipu/kodi-pvr-waipu.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 0db467d4986c36efb0c837dd728fc6322d3021fe2d8c93da9355b63f210fa0ca kodi-pvr-waipu-21.6.0-Omega.tar.gz +sha256 96c558f02d820c43994da05a89693f3e787c2adb8faa2ff28127a6e97d33525c kodi-pvr-waipu-21.6.1-Omega.tar.gz sha256 4202d4fb329f58c83ba921b56d7071e37f7df3f15b3820a3a04ef8eee49f54d2 pvr.waipu/LICENSE.txt diff --git a/package/kodi-pvr-waipu/kodi-pvr-waipu.mk b/package/kodi-pvr-waipu/kodi-pvr-waipu.mk index 4e9f8e00cf..222abcaa1b 100644 --- a/package/kodi-pvr-waipu/kodi-pvr-waipu.mk +++ b/package/kodi-pvr-waipu/kodi-pvr-waipu.mk @@ -4,7 +4,7 @@ # ################################################################################ -KODI_PVR_WAIPU_VERSION = 21.6.0-Omega +KODI_PVR_WAIPU_VERSION = 21.6.1-Omega KODI_PVR_WAIPU_SITE = $(call github,flubshi,pvr.waipu,$(KODI_PVR_WAIPU_VERSION)) KODI_PVR_WAIPU_LICENSE = GPL-2.0+ KODI_PVR_WAIPU_LICENSE_FILES = pvr.waipu/LICENSE.txt From bugzilla at busybox.net Wed May 15 06:22:12 2024 From: bugzilla at busybox.net (bugzilla at busybox.net) Date: Wed, 15 May 2024 06:22:12 +0000 Subject: [Buildroot] [Bug 16075] New: Cannot use linux kernel extensions from external tree (building zfs into kernel) Message-ID: https://bugs.busybox.net/show_bug.cgi?id=16075 Bug ID: 16075 Summary: Cannot use linux kernel extensions from external tree (building zfs into kernel) Product: buildroot Version: 2024.02.1 Hardware: All OS: Linux Status: NEW Severity: normal Priority: P5 Component: Other Assignee: unassigned at buildroot.uclibc.org Reporter: mscdex at mscdex.net CC: buildroot at uclibc.org Target Milestone: --- I'm wanting to build zfs into the kernel, so after reading through the documentation it seemed like the best way to go about it would be through Buildroot's Linux kernel extension mechanism. I already have an existing, working external tree, so according to the documentation I added a `linux/Config.ext.in` and `linux/linux-ext-zfs-inkernel.mk` to my external tree. Re-running `make menuconfig` and navigating to the Linux Extensions section shows both the built-in Buildroot extensions and my new extension. However, after I select my extension and save the Buildroot configuration, just about every make target except `menuconfig` fails with: linux/linux.mk:646: *** Package 'linux' defined a second time in 'linux/'; previous definition was in '/home/foo/buildroot-external/linux/'. Stop. make: *** [Makefile:23: _all] Error 2 I tried explicitly adding a reference to the Config.ext.in in my external tree's Config.in and adding a reference to the linux-ext-zfs-inkernel.mk in my external tree's external.mk, but that did not make any difference. For what it's worth here are the contents of the two files (there may be issues with them as I obviously haven't been able to test them yet): linux/Config.ext.in: config BR2_LINUX_KERNEL_EXT_ZFS_INKERNEL bool "In-kernel ZFS" help In-kernel ZFS module linux/linux-ext-zfs-inkernel.mk: ZFS_INKERNEL_VERSION = 2.2.2 ZFS_INKERNEL_SOURCE = https://github.com/openzfs/zfs/releases/download/zfs-$(ZFS_INKERNEL_VERSION) ZFS_INKERNEL_INSTALL_STAGING = NO ZFS_INKERNEL_INSTALL_TARGET = NO define ZFS_INKERNEL_COPY_BUILTIN cd $(ZFS_INKERNEL_BUILDDIR) && ./copy-builtin $(LINUX_DIR) endef ZFS_INKERNEL_POST_CONFIGURE_HOOKS += ZFS_INKERNEL_COPY_BUILTIN LINUX_EXTENSIONS += zfs-inkernel ZFS_INKERNEL_CONF_OPTS = \ --with-linux=$(LINUX_DIR) \ --enable-linux-builtin ZFS_INKERNEL_MAKE = true $(eval $(autotools-package)) -- You are receiving this mail because: You are on the CC list for the bug. From sebastien.szymanski at armadeus.com Wed May 15 10:02:09 2024 From: sebastien.szymanski at armadeus.com (=?UTF-8?q?S=C3=A9bastien=20Szymanski?=) Date: Wed, 15 May 2024 12:02:09 +0200 Subject: [Buildroot] [PATCH v2 1/1] package/nxp-bt-wifi-firmware: new package Message-ID: <20240515100209.24769-1-sebastien.szymanski@armadeus.com> This package provides firmwares for NXP WiFi + Bluetooth chipsets. It is named "nxp-bt-wifi-firmware" so that it is not confused with the package firmware-imx. Signed-off-by: S?bastien Szymanski --- Changes for v2: - rename the package nxp-bt-wifi-firwmare package/Config.in | 1 + package/nxp-bt-wifi-firmware/Config.in | 62 +++++++++++++++++++ .../nxp-bt-wifi-firmware.hash | 3 + .../nxp-bt-wifi-firmware.mk | 32 ++++++++++ 4 files changed, 98 insertions(+) create mode 100644 package/nxp-bt-wifi-firmware/Config.in create mode 100644 package/nxp-bt-wifi-firmware/nxp-bt-wifi-firmware.hash create mode 100644 package/nxp-bt-wifi-firmware/nxp-bt-wifi-firmware.mk diff --git a/package/Config.in b/package/Config.in index 1b6a5b0dabb8..da0853b46c81 100644 --- a/package/Config.in +++ b/package/Config.in @@ -452,6 +452,7 @@ menu "Firmware" source "package/brcmfmac_sdio-firmware-rpi/Config.in" source "package/linux-firmware/Config.in" source "package/murata-cyw-fw/Config.in" + source "package/nxp-bt-wifi-firmware/Config.in" source "package/odroidc2-firmware/Config.in" source "package/qcom-db410c-firmware/Config.in" source "package/qoriq-fm-ucode/Config.in" diff --git a/package/nxp-bt-wifi-firmware/Config.in b/package/nxp-bt-wifi-firmware/Config.in new file mode 100644 index 000000000000..21a84289c918 --- /dev/null +++ b/package/nxp-bt-wifi-firmware/Config.in @@ -0,0 +1,62 @@ +config BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE + bool "nxp-bt-wifi-firmware" + help + Firmwares for NXP Bluetooth / WiFi chipsets based modules + + https://github.com/nxp-imx/imx-firmware + +if BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE + +config BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_8801 + bool "8801 (SD)" + help + NXP 8801 module firmware files. + +config BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_8987 + bool "8987 (SD)" + help + NXP 8987 module firmware files. + +config BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_8997 + bool "8997" + help + NXP 8997 module firmware files. + +choice + prompt "8997 WiFi interface" if BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_8997 + +config BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_8997_SD + bool "SD" + +config BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_8997_PCIE + bool "PCIe" + +endchoice + +config BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_9098 + bool "9098" + help + NXP 9098 module firmware files. + +choice + prompt "9098 WiFi interface" if BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_9098 + +config BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_9098_SD + bool "SD" + +config BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_9098_PCIE + bool "PCIe" + +endchoice + +config BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_IW416 + bool "IW416 (SD)" + help + NXP IW416 module firmware files. + +config BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_IW612 + bool "IW612 (SD)" + help + NXP IW612 module firmware files. + +endif diff --git a/package/nxp-bt-wifi-firmware/nxp-bt-wifi-firmware.hash b/package/nxp-bt-wifi-firmware/nxp-bt-wifi-firmware.hash new file mode 100644 index 000000000000..d45456c895b6 --- /dev/null +++ b/package/nxp-bt-wifi-firmware/nxp-bt-wifi-firmware.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2feba2969db7b6fc86aa0a13a0993ca241e155c23c0024c41316e67924778f5f nxp-bt-wifi-firmware-lf-6.6.3_1.0.0.tar.gz +sha256 3827bf3548bfd9de73bf51fbdd7a8c674dcecfb249cfa1a7cf17bd2dc4e08a8c LICENSE.txt diff --git a/package/nxp-bt-wifi-firmware/nxp-bt-wifi-firmware.mk b/package/nxp-bt-wifi-firmware/nxp-bt-wifi-firmware.mk new file mode 100644 index 000000000000..afdc060b1b92 --- /dev/null +++ b/package/nxp-bt-wifi-firmware/nxp-bt-wifi-firmware.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# nxp-bt-wifi-firmware +# +################################################################################ + +NXP_BT_WIFI_FIRMWARE_VERSION = lf-6.6.3_1.0.0 +NXP_BT_WIFI_FIRMWARE_SITE = $(call github,nxp-imx,imx-firmware,$(NXP_BT_WIFI_FIRMWARE_VERSION)) +NXP_BT_WIFI_FIRMWARE_LICENSE = NXP Software License Agreement +NXP_BT_WIFI_FIRMWARE_LICENSE_FILES = LICENSE.txt +NXP_BT_WIFI_FIRMWARE_REDISTRIBUTE = NO + +NXP_BT_WIFI_FIRMWARE_FILES_$(BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_8801) += FwImage_8801_SD +NXP_BT_WIFI_FIRMWARE_FILES_$(BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_8987) += FwImage_8987 +NXP_BT_WIFI_FIRMWARE_FILES_$(BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_8997_SD) += FwImage_8997_SD +NXP_BT_WIFI_FIRMWARE_FILES_$(BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_8997_PCIE) += FwImage_8997 +NXP_BT_WIFI_FIRMWARE_FILES_$(BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_9098_SD) += FwImage_9098_SD +NXP_BT_WIFI_FIRMWARE_FILES_$(BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_9098_PCIE) += FwImage_9098_PCIE +NXP_BT_WIFI_FIRMWARE_FILES_$(BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_IW416) += FwImage_IW416_SD +NXP_BT_WIFI_FIRMWARE_FILES_$(BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE_IW612) += FwImage_IW612_SD + +define NXP_BT_WIFI_FIRMWARE_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/nxp/wifi_mod_para.conf \ + $(TARGET_DIR)/lib/firmware/nxp/wifi_mod_para.conf + $(INSTALL) -m 0644 -D $(@D)/nxp/mfguart/helper_uart_3000000.bin \ + $(TARGET_DIR)/lib/firmware/nxp/helper_uart_3000000.bin + $(foreach f,$(NXP_BT_WIFI_FIRMWARE_FILES_y), \ + $(INSTALL) -m 0644 -D $(@D)/nxp/$(f)/* $(TARGET_DIR)/lib/firmware/nxp/ + ) +endef + +$(eval $(generic-package)) -- 2.43.2 From wbx at openadk.org Wed May 15 10:40:50 2024 From: wbx at openadk.org (Waldemar Brodkorb) Date: Wed, 15 May 2024 12:40:50 +0200 Subject: [Buildroot] [PATCH] package/uclibc: fix compile issue with gcc 14.x Message-ID: Fixes: http://autobuild.buildroot.net/results/d9b924bdea3fd61060fa0e961c12534c1fff80de Signed-off-by: Waldemar Brodkorb --- .../0002-fix-kernel_stat64-definition.patch | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 package/uclibc/0002-fix-kernel_stat64-definition.patch diff --git a/package/uclibc/0002-fix-kernel_stat64-definition.patch b/package/uclibc/0002-fix-kernel_stat64-definition.patch new file mode 100644 index 0000000000..5a87586af8 --- /dev/null +++ b/package/uclibc/0002-fix-kernel_stat64-definition.patch @@ -0,0 +1,35 @@ +From 186878405324e96f61d896a149f623e0c792c972 Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Tue, 14 May 2024 23:18:56 -0700 +Subject: [PATCH] fix kernel_stat64 definition + +The commit 74ca8d6f5d2e ("remove UCLIBC_HAS_LFS") removed conditional +compilation dependent on __UCLIBC_HAS_LFS__, assuming it to be always +defined, but removed the wrong branch in the definition of +kernel_stat64. +Fix kernel_stat64 definition to be stat64. + +Signed-off-by: Max Filippov +Tested-by: Chris Packham +Signed-off-by: Waldemar Brodkorb +Upstream: https://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/commit/?id=186878405324e96f61d896a149f623e0c792c972 +--- + libc/sysdeps/linux/common-generic/bits/kernel_stat.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libc/sysdeps/linux/common-generic/bits/kernel_stat.h b/libc/sysdeps/linux/common-generic/bits/kernel_stat.h +index 7a97bb4d7..e874a4a9f 100644 +--- a/libc/sysdeps/linux/common-generic/bits/kernel_stat.h ++++ b/libc/sysdeps/linux/common-generic/bits/kernel_stat.h +@@ -18,7 +18,7 @@ + * However that requires more #ifndef in relevant wrappers, + * further uglifying them + */ +-#define kernel_stat64 stat ++#define kernel_stat64 stat64 + + #endif /* _BITS_STAT_STRUCT_H */ + +-- +2.30.2 + -- 2.30.2 From festevam at gmail.com Wed May 15 11:08:09 2024 From: festevam at gmail.com (Fabio Estevam) Date: Wed, 15 May 2024 08:08:09 -0300 Subject: [Buildroot] [PATCH v2 1/1] package/nxp-bt-wifi-firmware: new package In-Reply-To: <20240515100209.24769-1-sebastien.szymanski@armadeus.com> References: <20240515100209.24769-1-sebastien.szymanski@armadeus.com> Message-ID: Hi S?bastien, On Wed, May 15, 2024 at 7:02?AM S?bastien Szymanski wrote: > > This package provides firmwares for NXP WiFi + Bluetooth chipsets. > It is named "nxp-bt-wifi-firmware" so that it is not confused with the > package firmware-imx. Thanks for the path. Is there support in Buildroot for the https://github.com/nxp-imx/mwifiex kernel modules too? I want to test the IW612 Wifi on the imx93-evk board. Thanks, Fabio Estevam From peter at korsgaard.com Wed May 15 13:22:30 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 15:22:30 +0200 Subject: [Buildroot] [PATCH v2 1/1] kconfig/lxdialog: fix check() with GCC14 In-Reply-To: (Yann E. MORIN's message of "Tue, 30 Apr 2024 20:01:10 +0200") References: <20240408211609.2423619-1-robimarko@gmail.com> Message-ID: <8734qjryzt.fsf@dell.be.48ers.dk> >>>>> "Yann" == Yann E MORIN writes: > Robert, All, > On 2024-04-08 23:16 +0200, Robert Marko spake thusly: >> GCC14 now treats implicit int types as error so when check() from >> check-lxdialog.sh is called to check whether we can link against ncurses >> it will fail silently and the help text indicating to install ncurses is >> printed. >> >> However, this is not due to missing ncurses but once the stderr redirect >> to /dev/null is removed we can see the root cause: >> :2:1: error: return type defaults to ?int? [-Wimplicit-int] >> >> So, in order for menuconfig to work with GCC14 lets just specify the >> return type of main() as int. > I've also added a little note that there is no commit from the kernel > tree that we can backport, because the kernel tree no longer has that > script. >> Signed-off-by: Robert Marko >> Reviewed-by: Petr Vorel >> Tested-by: Petr Vorel > Applied to master with the little note abouve added, thanks. Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 13:24:02 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 15:24:02 +0200 Subject: [Buildroot] [PATCH] support/testing: TestATFAllwinner: add missing openssl dependency In-Reply-To: (Romain Naour's message of "Tue, 30 Apr 2024 23:41:14 +0200") References: <20240424195943.527542-1-romain.naour@smile.fr> Message-ID: <87y18bqkct.fsf@dell.be.48ers.dk> >>>>> "Romain" == Romain Naour writes: > Le 24/04/2024 ? 21:59, Romain Naour a ?crit?: >> The commit [1] updated the u-boot version with the one used by >> orangepi_zero_plus2_defconfig but the dependency on openssl >> was forgotten. >> >> Fixes: >> https://gitlab.com/buildroot.org/buildroot/-/jobs/6703221868 >> >> [1] eb16148dddc6be39b0d850181c2461fdaba1ee6f >> >> Signed-off-by: Romain Naour Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 13:25:28 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 15:25:28 +0200 Subject: [Buildroot] [PATCH] support/testing: TestF2FS: update kernel to 4.19.310 In-Reply-To: <20240424201033.550180-1-romain.naour@smile.fr> (Romain Naour's message of "Wed, 24 Apr 2024 22:10:33 +0200") References: <20240424201033.550180-1-romain.naour@smile.fr> Message-ID: <87ttizqkaf.fsf@dell.be.48ers.dk> >>>>> "Romain" == Romain Naour writes: > Since the toolchain Bootlin update to 2023.11-1 [1], the arm Linux > kernel build is broken with binutils >= 2.41 with: > arch/arm/mm/proc-v7.S: Assembler messages: > arch/arm/mm/proc-v7.S:640: Error: junk at end of line, first unrecognized character is `#' > A similar issue has already be fixed for qemu m68k [2]. > Bump to the latest kernel 4.19 that already include the backport > of 790756c7e022 ("ARM: 8933/1: replace Sun/Solaris style flag on section directive") > [1] 7e0e6e3b8618ab942f25b11ee72fbc5a4deefdf1 > [2] a1ce9474e40f731f327035d8c0962abb16f00ff7 > Fixes: > https://gitlab.com/buildroot.org/buildroot/-/jobs/6703222383 > Signed-off-by: Romain Naour Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 13:23:39 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 15:23:39 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] support/testing: TestATFAllwinner: add missing openssl dependency Message-ID: <20240515132757.D0F2387321@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=c8a229c85015b1a44911b5daa30238dcf925c72c branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x The commit [1] updated the u-boot version with the one used by orangepi_zero_plus2_defconfig but the dependency on openssl was forgotten. Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6703221868 [1] eb16148dddc6be39b0d850181c2461fdaba1ee6f Signed-off-by: Romain Naour (cherry picked from commit bc75b09b1c18541abaa47fc34eab44e91e2018ca) Signed-off-by: Peter Korsgaard --- support/testing/tests/boot/test_atf.py | 1 + 1 file changed, 1 insertion(+) diff --git a/support/testing/tests/boot/test_atf.py b/support/testing/tests/boot/test_atf.py index 352725e721..b0e7696e86 100644 --- a/support/testing/tests/boot/test_atf.py +++ b/support/testing/tests/boot/test_atf.py @@ -19,6 +19,7 @@ class TestATFAllwinner(infra.basetest.BRTest): BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.10" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_zero_plus2" BR2_TARGET_UBOOT_NEEDS_DTC=y + BR2_TARGET_UBOOT_NEEDS_OPENSSL=y BR2_TARGET_UBOOT_NEEDS_PYTHON3=y BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y From peter at korsgaard.com Wed May 15 13:25:16 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 15:25:16 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] support/testing: TestF2FS: update kernel to 4.19.310 Message-ID: <20240515132757.DC13087323@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=0b892513d02a3ce7cfb30127764652f676a28ffe branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Since the toolchain Bootlin update to 2023.11-1 [1], the arm Linux kernel build is broken with binutils >= 2.41 with: arch/arm/mm/proc-v7.S: Assembler messages: arch/arm/mm/proc-v7.S:640: Error: junk at end of line, first unrecognized character is `#' A similar issue has already be fixed for qemu m68k [2]. Bump to the latest kernel 4.19 that already include the backport of 790756c7e022 ("ARM: 8933/1: replace Sun/Solaris style flag on section directive") [1] 7e0e6e3b8618ab942f25b11ee72fbc5a4deefdf1 [2] a1ce9474e40f731f327035d8c0962abb16f00ff7 Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6703222383 Signed-off-by: Romain Naour (cherry picked from commit 7e126bd38d5eedb49cd29699c1afe8b53edd71e0) Signed-off-by: Peter Korsgaard --- support/testing/tests/fs/test_f2fs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/support/testing/tests/fs/test_f2fs.py b/support/testing/tests/fs/test_f2fs.py index 425fbe31ca..826077ac94 100644 --- a/support/testing/tests/fs/test_f2fs.py +++ b/support/testing/tests/fs/test_f2fs.py @@ -20,7 +20,7 @@ class TestF2FS(infra.basetest.BRTest): # BR2_TARGET_ROOTFS_TAR is not set BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y - BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.204" + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.310" BR2_LINUX_KERNEL_USE_DEFCONFIG=y BR2_LINUX_KERNEL_DEFCONFIG="vexpress" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}" From peter at korsgaard.com Wed May 15 13:18:09 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 15:18:09 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] kconfig/lxdialog: fix check() with GCC14 Message-ID: <20240515132757.C629B87320@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=f5a347c1dc11297f57d1b33aaf4f9c936fa2d241 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x GCC14 now treats implicit int types as error so when check() from check-lxdialog.sh is called to check whether we can link against ncurses it will fail silently and the help text indicating to install ncurses is printed. However, this is not due to missing ncurses but once the stderr redirect to /dev/null is removed we can see the root cause: :2:1: error: return type defaults to ???int??? [-Wimplicit-int] So, in order for menuconfig to work with GCC14 lets just specify the return type of main() as int. Npte that the upstream kconfig in the linux kernel source tree no longer carries or uses the check-lxdialog.sh script since commit 1c5af5cf9308 (kconfig: refactor ncurses package checks for building mconf and nconf), so there is no commit we can backport to our kconfig copy. Signed-off-by: Robert Marko Reviewed-by: Petr Vorel Tested-by: Petr Vorel [yann.morin.1998 at free.fr: add note about upstream kernel] Signed-off-by: Yann E. MORIN (cherry picked from commit a6210d28dbf66b2f0a42d945711dfd93c7329feb) Signed-off-by: Peter Korsgaard --- support/kconfig/lxdialog/check-lxdialog.sh | 2 +- .../22-kconfig-lxdialog-fix-check-with-GCC14.patch | 43 ++++++++++++++++++++++ support/kconfig/patches/series | 1 + 3 files changed, 45 insertions(+), 1 deletion(-) diff --git a/support/kconfig/lxdialog/check-lxdialog.sh b/support/kconfig/lxdialog/check-lxdialog.sh index 16cd9a3186..27d6c30a57 100755 --- a/support/kconfig/lxdialog/check-lxdialog.sh +++ b/support/kconfig/lxdialog/check-lxdialog.sh @@ -48,7 +48,7 @@ trap "rm -f $tmp" 0 1 2 3 15 check() { $cc -x c - -o $tmp 2>/dev/null <<'EOF' #include CURSES_LOC -main() {} +int main() {} EOF if [ $? != 0 ]; then echo " *** Unable to find the ncurses libraries or the" 1>&2 diff --git a/support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch b/support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch new file mode 100644 index 0000000000..41081bb45d --- /dev/null +++ b/support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch @@ -0,0 +1,43 @@ +From 3ae91337b53fa3ccf0bad7f181fcaf483fab22ee Mon Sep 17 00:00:00 2001 +From: Robert Marko +Date: Wed, 3 Apr 2024 14:18:07 +0200 +Subject: [PATCH] kconfig/lxdialog: fix check() with GCC14 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +GCC14 now treats implicit int types as error so when check() from +check-lxdialog.sh is called to check whether we can link against ncurses +it will fail silently and the help text indicating to install ncurses is +printed. + +However, this is not due to missing ncurses but once the stderr redirect +to /dev/null is removed we can see the root cause: +:2:1: error: return type defaults to ???int??? [-Wimplicit-int] + +So, in order for menuconfig to work with GCC14 lets just specify the +return type of main() as int. + +Signed-off-by: Robert Marko +Reviewed-by: Petr Vorel +Tested-by: Petr Vorel +--- + kconfig/lxdialog/check-lxdialog.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/kconfig/lxdialog/check-lxdialog.sh b/kconfig/lxdialog/check-lxdialog.sh +index 16cd9a3186..27d6c30a57 100755 +--- a/kconfig/lxdialog/check-lxdialog.sh ++++ b/kconfig/lxdialog/check-lxdialog.sh +@@ -48,7 +48,7 @@ trap "rm -f $tmp" 0 1 2 3 15 + check() { + $cc -x c - -o $tmp 2>/dev/null <<'EOF' + #include CURSES_LOC +-main() {} ++int main() {} + EOF + if [ $? != 0 ]; then + echo " *** Unable to find the ncurses libraries or the" 1>&2 +-- +2.44.0 + diff --git a/support/kconfig/patches/series b/support/kconfig/patches/series index e5a6f69d8f..f120e323b7 100644 --- a/support/kconfig/patches/series +++ b/support/kconfig/patches/series @@ -10,3 +10,4 @@ 19-merge_config.sh-add-br2-external-support.patch 20-merge_config.sh-Allow-to-define-config-prefix.patch 21-Avoid-false-positive-matches-from-comment-lines.patch +22-kconfig-lxdialog-fix-check-with-GCC14.patch From peter at korsgaard.com Wed May 15 13:34:31 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 15:34:31 +0200 Subject: [Buildroot] [PATCH 1/1] configs/wandboard: uboot needs openssl In-Reply-To: <20240412195346.1563030-1-ju.o@free.fr> (Julien Olivain's message of "Fri, 12 Apr 2024 21:53:46 +0200") References: <20240412195346.1563030-1-ju.o@free.fr> Message-ID: <87pltnqjvc.fsf@dell.be.48ers.dk> >>>>> "Julien" == Julien Olivain writes: > Fixes: > https://gitlab.com/buildroot.org/buildroot/-/jobs/6609466641 > Signed-off-by: Julien Olivain Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 13:34:14 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 15:34:14 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] configs/wandboard: uboot needs openssl Message-ID: <20240515133441.EBB1E87358@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=cd987cbcc13f4f6fa74be0b4dde511bc1642a31e branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6609466641 Signed-off-by: Julien Olivain Reviewed-by: Fabio Estevam Signed-off-by: Romain Naour (cherry picked from commit ffe920b6447a9138cd679f98ecffccbcae0d107c) Signed-off-by: Peter Korsgaard --- configs/wandboard_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/wandboard_defconfig b/configs/wandboard_defconfig index 522173b8ed..b110c292dd 100644 --- a/configs/wandboard_defconfig +++ b/configs/wandboard_defconfig @@ -26,6 +26,7 @@ BR2_TARGET_UBOOT_CUSTOM_VERSION=y BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="wandboard" BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y BR2_TARGET_UBOOT_SPL=y BR2_TARGET_UBOOT_SPL_NAME="SPL" From romain.naour at smile.fr Wed May 15 14:01:32 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 15 May 2024 16:01:32 +0200 Subject: [Buildroot] [PATCH 1/1] package/python-ml-dtypes: skip dependency check In-Reply-To: <4e9d5bc99a30a885dddb8aba6145f56d@free.fr> References: <20240514154250.1453970-1-james.hilliard1@gmail.com> <4e9d5bc99a30a885dddb8aba6145f56d@free.fr> Message-ID: <888f8476-9bc2-409d-a35d-bb93282627d0@smile.fr> Hello James, Julien, All, Le 14/05/2024 ? 19:26, Julien Olivain a ?crit?: > Hi James, > > Thanks for the patch! > > I successfully tested it on branch master at commit 9764258 with command: > > ??? support/testing/run-tests \ > ??????? -d dl -o output_folder \ > ??????? tests.package.test_python_ml_dtypes > > On 14/05/2024 17:42, James Hilliard wrote: >> This package pins overly strict numpy dependency versions apparently >> for compatibility reasons that don't appear relevant to buildroot. >> >> This package also appears to pin an overly strict setuptools version >> for unclear reasons. I looked at this issue last week with the same conclusions... I was able to fix the setuptools version check but it was sill failing with numpy check (it seems numpy dependency is never found while cross-compiling). >> >> See: >> https://github.com/jax-ml/ml_dtypes/blob/v0.3.2/pyproject.toml#L51-L55 >> >> To fix this lets just set the --skip-dependency-check build option and >> ignore the build dependency version mismatches since they don't appear >> to cause any build issues. Maybe we should avoid using --skip-dependency-check option too easily. We could miss any new dependency used by further release? >> >> This error was introduced when we migrated setuptools to pep517 in >> 8937db8dd595e0988751e5dbb568e870b07b39cc. >> >> Signed-off-by: James Hilliard > > Tested-by: Julien Olivain > >> --- >> ?package/python-ml-dtypes/python-ml-dtypes.mk | 1 + >> ?1 file changed, 1 insertion(+) >> >> diff --git a/package/python-ml-dtypes/python-ml-dtypes.mk >> b/package/python-ml-dtypes/python-ml-dtypes.mk >> index 676137ecf1..8097265078 100644 >> --- a/package/python-ml-dtypes/python-ml-dtypes.mk >> +++ b/package/python-ml-dtypes/python-ml-dtypes.mk >> @@ -10,6 +10,7 @@ PYTHON_ML_DTYPES_SITE = >> https://files.pythonhosted.org/packages/39/7d/8d85fcba86 >> ?PYTHON_ML_DTYPES_LICENSE = Apache-2.0 >> ?PYTHON_ML_DTYPES_LICENSE_FILES = LICENSE >> ?PYTHON_ML_DTYPES_SETUP_TYPE = setuptools We could add a comment here to explain why we skip-dependency-check here. Best regards, Romain >> +PYTHON_ML_DTYPES_BUILD_OPTS = --skip-dependency-check >> >> ?PYTHON_ML_DTYPES_DEPENDENCIES = \ >> ???? host-python-numpy \ >> -- >> 2.34.1 > > Best regards, > > Julien. > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot From romain.naour at smile.fr Wed May 15 14:12:46 2024 From: romain.naour at smile.fr (Romain Naour) Date: Wed, 15 May 2024 16:12:46 +0200 Subject: [Buildroot] [PATCH] package/python-ml-dtypes: remove python-pybind from C++ dependency comment Message-ID: <20240515141246.44580-1-romain.naour@smile.fr> python-pybind dependency has been removed since the version bump to 0.3.2 [1] [1] 06e1a3620e5268951be089d2b150c1802de7de4c Signed-off-by: Romain Naour --- package/python-ml-dtypes/Config.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/python-ml-dtypes/Config.in b/package/python-ml-dtypes/Config.in index 58c218b214..7dce2fea42 100644 --- a/package/python-ml-dtypes/Config.in +++ b/package/python-ml-dtypes/Config.in @@ -1,7 +1,7 @@ config BR2_PACKAGE_PYTHON_ML_DTYPES bool "python-ml-dtypes" depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS - depends on BR2_INSTALL_LIBSTDCPP # python-pybind, python-numpy + depends on BR2_INSTALL_LIBSTDCPP # python-numpy depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL # python-numpy depends on BR2_TOOLCHAIN_GCC_AT_LEAST_9 # python-numpy depends on BR2_HOST_GCC_AT_LEAST_9 # host-python-numpy -- 2.44.0 From peter at korsgaard.com Wed May 15 14:44:15 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 16:44:15 +0200 Subject: [Buildroot] [PATCH] configs/sipeed_licheepi_nano_defconfig: fix missing linux headers In-Reply-To: <20240402210856.67418-1-gero.schwaericke@posteo.de> ("Gero =?utf-8?Q?Schw=C3=A4ricke=22's?= message of "Tue, 2 Apr 2024 21:08:52 +0000") References: <20240402210856.67418-1-gero.schwaericke@posteo.de> Message-ID: <87le4bqgn4.fsf@dell.be.48ers.dk> >>>>> "Gero" == Gero Schw?ricke writes: > The build failed with: > Incorrect selection of kernel headers: expected 6.8.x, got 6.5.x > Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6498278078 > Signed-off-by: Gero Schw?ricke Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 14:32:59 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 16:32:59 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] configs/sipeed_licheepi_nano_defconfig: fix missing linux headers Message-ID: <20240515144426.DFEA287390@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=f113543d83d57f9c5ef621e03b4934e2623e20f4 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x The build failed with: Incorrect selection of kernel headers: expected 6.8.x, got 6.5.x Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6498278078 Signed-off-by: Gero Schw??ricke Signed-off-by: Romain Naour (cherry picked from commit f5aac04c362b593011ce245549d4bfc3311dbe9d) Signed-off-by: Peter Korsgaard --- configs/sipeed_licheepi_nano_defconfig | 3 +++ 1 file changed, 3 insertions(+) diff --git a/configs/sipeed_licheepi_nano_defconfig b/configs/sipeed_licheepi_nano_defconfig index 8be26165d9..6eb4a3069d 100644 --- a/configs/sipeed_licheepi_nano_defconfig +++ b/configs/sipeed_licheepi_nano_defconfig @@ -9,6 +9,9 @@ BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/sipeed/licheepi_nano/genimage.cfg" +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_5=y + # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y From peter at korsgaard.com Wed May 15 14:59:02 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 16:59:02 +0200 Subject: [Buildroot] [PATCH] package/libvncserver: correct WITH_THREADS=ON/OFF logic Message-ID: <20240515145903.363218-1-peter@korsgaard.com> Commit ee59023794f5540e5 (package/libvncserver: bump to version 0.9.12) changes the package from autotools to cmake and accidently inverted the threads logic. The reason this was not noticed is that the build system verifies if threads support works and otherwise disables it even when -DWITH_THREADS=ON is passed, E.G. for a nothread configuration: cmake ... -DWITH_THREADS=ON ... .. -- Performing Test CMAKE_HAVE_LIBC_PTHREAD -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed -- Looking for pthread_create in pthreads -- Looking for pthread_create in pthreads - not found -- Looking for pthread_create in pthread -- Looking for pthread_create in pthread - not found Signed-off-by: Peter Korsgaard --- package/libvncserver/libvncserver.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/libvncserver/libvncserver.mk b/package/libvncserver/libvncserver.mk index 3a15a82d08..082f838f12 100644 --- a/package/libvncserver/libvncserver.mk +++ b/package/libvncserver/libvncserver.mk @@ -22,7 +22,7 @@ LIBVNCSERVER_CONF_OPTS += \ -DWITH_SDL=OFF \ -DWITH_TESTS=OFF -ifneq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) LIBVNCSERVER_CONF_OPTS += -DWITH_THREADS=ON else LIBVNCSERVER_CONF_OPTS += -DWITH_THREADS=OFF -- 2.39.2 From peter at korsgaard.com Wed May 15 15:01:20 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 17:01:20 +0200 Subject: [Buildroot] [buildroot/buildroot] Repair libvncserver .mk file error (PR #141) In-Reply-To: (Thomas Petazzoni's message of "Mon, 13 May 2024 23:49:55 -0700") References: Message-ID: <87h6ezqfun.fsf@dell.be.48ers.dk> >>>>> "Thomas" == Thomas Petazzoni writes: > Closed #141. But the issue looks real, so I've posted a patch for it: https://patchwork.ozlabs.org/project/buildroot/patch/20240515145903.363218-1-peter at korsgaard.com/ -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 15:10:09 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 17:10:09 +0200 Subject: [Buildroot] [PATCH] configs/raspberrypizero2w_defconfig: fix typo in headers series option In-Reply-To: <20240403222513.1267595-1-gero.schwaericke@posteo.de> ("Gero =?utf-8?Q?Schw=C3=A4ricke=22's?= message of "Wed, 3 Apr 2024 22:24:44 +0000") References: <20240403222513.1267595-1-gero.schwaericke@posteo.de> Message-ID: <87cypnqffy.fsf@dell.be.48ers.dk> >>>>> "Gero" == Gero Schw?ricke writes: > The build for this defconfig fails with: > Incorrect selection of kernel headers: expected 6.8.x, got 6.1.x > Found with the following command while trying to find boards that have > missing custom headers series: > grep --null --recursive --files-without-match "BR2_TOOLCHAIN_EXTERNAL=y" ./configs \ > | xargs --null grep --null --files-with-matches "BR2_LINUX_KERNEL_CUSTOM_.*=y" \ > | xargs --null grep --null --files-without-match "BR2_KERNEL_HEADERS_[0-9]\+_[0-9]\+=y"\ > | xargs --null grep --files-without-match "BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_[0-9]\+_[0-9]\+=y" > ./configs/mangopi_mq1rdw2_defconfig # patch pending > ./configs/raspberrypizero2w_defconfig > ./configs/sipeed_licheepi_nano_defconfig # patch pending > Signed-off-by: Gero Schw?ricke Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 15:09:37 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 17:09:37 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] configs/raspberrypizero2w_defconfig: fix typo in headers series option Message-ID: <20240515151102.0EB5A873AB@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=e036a25271ceedb8b9839437832c3bccd2075e14 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x The build for this defconfig fails with: Incorrect selection of kernel headers: expected 6.8.x, got 6.1.x Found with the following command while trying to find boards that have missing custom headers series: grep --null --recursive --files-without-match "BR2_TOOLCHAIN_EXTERNAL=y" ./configs \ | xargs --null grep --null --files-with-matches "BR2_LINUX_KERNEL_CUSTOM_.*=y" \ | xargs --null grep --null --files-without-match "BR2_KERNEL_HEADERS_[0-9]\+_[0-9]\+=y"\ | xargs --null grep --files-without-match "BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_[0-9]\+_[0-9]\+=y" ./configs/mangopi_mq1rdw2_defconfig # patch pending ./configs/raspberrypizero2w_defconfig ./configs/sipeed_licheepi_nano_defconfig # patch pending Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6712162631 Signed-off-by: Gero Schw??ricke [Romain: add gitlab-ci link] Signed-off-by: Romain Naour (cherry picked from commit dc18b639c93f972246fce345b43dc091d07d35ca) Signed-off-by: Peter Korsgaard --- configs/raspberrypizero2w_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/raspberrypizero2w_defconfig b/configs/raspberrypizero2w_defconfig index 1bf335c076..e152889f2d 100644 --- a/configs/raspberrypizero2w_defconfig +++ b/configs/raspberrypizero2w_defconfig @@ -3,7 +3,7 @@ BR2_cortex_a53=y BR2_ARM_FPU_NEON_VFPV4=y # Linux headers same as kernel, 6.1 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6.1=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y BR2_TOOLCHAIN_BUILDROOT_CXX=y From james.hilliard1 at gmail.com Wed May 15 15:10:54 2024 From: james.hilliard1 at gmail.com (James Hilliard) Date: Wed, 15 May 2024 09:10:54 -0600 Subject: [Buildroot] [PATCH 1/1] package/python-ml-dtypes: skip dependency check In-Reply-To: <888f8476-9bc2-409d-a35d-bb93282627d0@smile.fr> References: <20240514154250.1453970-1-james.hilliard1@gmail.com> <4e9d5bc99a30a885dddb8aba6145f56d@free.fr> <888f8476-9bc2-409d-a35d-bb93282627d0@smile.fr> Message-ID: On Wed, May 15, 2024 at 8:01?AM Romain Naour wrote: > > Hello James, Julien, All, > > Le 14/05/2024 ? 19:26, Julien Olivain a ?crit : > > Hi James, > > > > Thanks for the patch! > > > > I successfully tested it on branch master at commit 9764258 with command: > > > > support/testing/run-tests \ > > -d dl -o output_folder \ > > tests.package.test_python_ml_dtypes > > > > On 14/05/2024 17:42, James Hilliard wrote: > >> This package pins overly strict numpy dependency versions apparently > >> for compatibility reasons that don't appear relevant to buildroot. > >> > >> This package also appears to pin an overly strict setuptools version > >> for unclear reasons. > > I looked at this issue last week with the same conclusions... > I was able to fix the setuptools version check but it was sill failing with > numpy check (it seems numpy dependency is never found while cross-compiling). > > >> > >> See: > >> https://github.com/jax-ml/ml_dtypes/blob/v0.3.2/pyproject.toml#L51-L55 > >> > >> To fix this lets just set the --skip-dependency-check build option and > >> ignore the build dependency version mismatches since they don't appear > >> to cause any build issues. > > Maybe we should avoid using --skip-dependency-check option too easily. We could > miss any new dependency used by further release? Yeah, we shouldn't use it unless we have a good reason for it, I think this qualifies. > > >> > >> This error was introduced when we migrated setuptools to pep517 in > >> 8937db8dd595e0988751e5dbb568e870b07b39cc. > >> > >> Signed-off-by: James Hilliard > > > > Tested-by: Julien Olivain > > > >> --- > >> package/python-ml-dtypes/python-ml-dtypes.mk | 1 + > >> 1 file changed, 1 insertion(+) > >> > >> diff --git a/package/python-ml-dtypes/python-ml-dtypes.mk > >> b/package/python-ml-dtypes/python-ml-dtypes.mk > >> index 676137ecf1..8097265078 100644 > >> --- a/package/python-ml-dtypes/python-ml-dtypes.mk > >> +++ b/package/python-ml-dtypes/python-ml-dtypes.mk > >> @@ -10,6 +10,7 @@ PYTHON_ML_DTYPES_SITE = > >> https://files.pythonhosted.org/packages/39/7d/8d85fcba86 > >> PYTHON_ML_DTYPES_LICENSE = Apache-2.0 > >> PYTHON_ML_DTYPES_LICENSE_FILES = LICENSE > >> PYTHON_ML_DTYPES_SETUP_TYPE = setuptools > > We could add a comment here to explain why we skip-dependency-check here. Well we haven't really been doing that on other packages using this flag, and packages specifying overly strict/unnecessary build dependencies in some way is generally always the reason for this flag for any packages using it. > > Best regards, > Romain > > >> +PYTHON_ML_DTYPES_BUILD_OPTS = --skip-dependency-check > >> > >> PYTHON_ML_DTYPES_DEPENDENCIES = \ > >> host-python-numpy \ > >> -- > >> 2.34.1 > > > > Best regards, > > > > Julien. > > _______________________________________________ > > buildroot mailing list > > buildroot at buildroot.org > > https://lists.buildroot.org/mailman/listinfo/buildroot > From peter at korsgaard.com Wed May 15 15:28:20 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 17:28:20 +0200 Subject: [Buildroot] [PATCH] configs/pc_x86_64_{bios, efi}_defconfig: add wireless regdb In-Reply-To: <20240330212200.794927-1-aladyshev22@gmail.com> (Konstantin Aladyshev's message of "Sun, 31 Mar 2024 00:22:00 +0300") References: <20240330212200.794927-1-aladyshev22@gmail.com> Message-ID: <878r0bqeln.fsf@dell.be.48ers.dk> >>>>> "Konstantin" == Konstantin Aladyshev writes: > Wireless regulatory database lists the allowed radio frequencies for > each local jurisdiction. Since linux-4.15 the kernel supports loading > the files regulatory.db/regulatory.db.p7s directly from the > /lib/firmware directory. Currently this package is not enabled and > kernel complains with the following message on every boot: > """ > platform regulatory.0: Direct firmware load for regulatory.db failed > with error -2 > cfg80211: failed to load regulatory.db > """ > Add wireless regulatory database package to fix the issue. > Signed-off-by: Konstantin Aladyshev Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 15:29:47 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 17:29:47 +0200 Subject: [Buildroot] [PATCH 1/1] package/fluidsynth: bump to version 2.3.5 In-Reply-To: <20240401191720.141576-1-ju.o@free.fr> (Julien Olivain's message of "Mon, 1 Apr 2024 21:17:20 +0200") References: <20240401191720.141576-1-ju.o@free.fr> Message-ID: <874jazqej8.fsf@dell.be.48ers.dk> >>>>> "Julien" == Julien Olivain writes: > For change log since v2.3.4, see: > - https://github.com/FluidSynth/fluidsynth/releases/tag/v2.3.5 > Signed-off-by: Julien Olivain Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 15:30:50 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 17:30:50 +0200 Subject: [Buildroot] [PATCH 1/1] package/apcupsd: set ac_cv_path_SHUTDOWN In-Reply-To: <20240330221122.1112448-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sat, 30 Mar 2024 23:11:22 +0100") References: <20240330221122.1112448-1-fontaine.fabrice@gmail.com> Message-ID: <87zfsrozx1.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > Set ac_cv_path_SHUTDOWN to /sbin/shutdown to avoid the following build > failure when shutdown is not available on host raised since the addition > of the package in commit d12b63b741586b89c4017551308c43512a617287: > configure: error: Missing required tool; need any one of: shutdown shutdown.bsd > Fixes: d12b63b741586b89c4017551308c43512a617287 > - http://autobuild.buildroot.org/results/a8bbb5ced8343e08070361f260050de422144710 > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Wed May 15 15:27:31 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 17:27:31 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] configs/pc_x86_64_{bios, efi}_defconfig: add wireless regdb Message-ID: <20240515153113.8F2C1873D5@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=3c14bcebcb657fee1bed615a6b8073add9a0975b branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Wireless regulatory database lists the allowed radio frequencies for each local jurisdiction. Since linux-4.15 the kernel supports loading the files regulatory.db/regulatory.db.p7s directly from the /lib/firmware directory. Currently this package is not enabled and kernel complains with the following message on every boot: """ platform regulatory.0: Direct firmware load for regulatory.db failed with error -2 cfg80211: failed to load regulatory.db """ Add wireless regulatory database package to fix the issue. Signed-off-by: Konstantin Aladyshev Signed-off-by: Thomas Petazzoni (cherry picked from commit 16e9f514905a12caab1d1b308dd95f8b79977828) Signed-off-by: Peter Korsgaard --- configs/pc_x86_64_bios_defconfig | 1 + configs/pc_x86_64_efi_defconfig | 1 + 2 files changed, 2 insertions(+) diff --git a/configs/pc_x86_64_bios_defconfig b/configs/pc_x86_64_bios_defconfig index 6032544d2d..cba92ad93d 100644 --- a/configs/pc_x86_64_bios_defconfig +++ b/configs/pc_x86_64_bios_defconfig @@ -62,3 +62,4 @@ BR2_PACKAGE_ACPID=y BR2_PACKAGE_CONNMAN=y BR2_PACKAGE_CONNMAN_CLIENT=y BR2_PACKAGE_CONNMAN_WIFI=y +BR2_PACKAGE_WIRELESS_REGDB=y diff --git a/configs/pc_x86_64_efi_defconfig b/configs/pc_x86_64_efi_defconfig index afb652f3fc..fe6686b4a2 100644 --- a/configs/pc_x86_64_efi_defconfig +++ b/configs/pc_x86_64_efi_defconfig @@ -63,3 +63,4 @@ BR2_PACKAGE_ACPID=y BR2_PACKAGE_CONNMAN=y BR2_PACKAGE_CONNMAN_CLIENT=y BR2_PACKAGE_CONNMAN_WIFI=y +BR2_PACKAGE_WIRELESS_REGDB=y From peter at korsgaard.com Wed May 15 15:30:35 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 17:30:35 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/apcupsd: set ac_cv_path_SHUTDOWN Message-ID: <20240515153113.A99AF873D7@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=bb7a0c27d4bca705089f7d17d5a6c302545f2539 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Set ac_cv_path_SHUTDOWN to /sbin/shutdown to avoid the following build failure when shutdown is not available on host raised since the addition of the package in commit d12b63b741586b89c4017551308c43512a617287: configure: error: Missing required tool; need any one of: shutdown shutdown.bsd Fixes: d12b63b741586b89c4017551308c43512a617287 - http://autobuild.buildroot.org/results/a8bbb5ced8343e08070361f260050de422144710 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni (cherry picked from commit 640a79000b028eef3f54ba18e450c27bbeea9f56) Signed-off-by: Peter Korsgaard --- package/apcupsd/apcupsd.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/package/apcupsd/apcupsd.mk b/package/apcupsd/apcupsd.mk index 97e6d6a558..43a016678d 100644 --- a/package/apcupsd/apcupsd.mk +++ b/package/apcupsd/apcupsd.mk @@ -11,6 +11,7 @@ APCUPSD_LICENSE_FILES = COPYING APCUPSD_CPE_ID_VENDOR = apcupsd APCUPSD_SELINUX_MODULES = apache apcupsd APCUPSD_CONF_OPTS = --disable-test +APCUPSD_CONF_ENV = ac_cv_path_SHUTDOWN=/sbin/shutdown ifneq ($(BR2_PACKAGE_APCUPSD_MODBUS_USB)$(BR2_PACKAGE_APCUPSD_USB),) APCUPSD_CONF_ENV += ac_cv_path_usbcfg=$(STAGING_DIR)/usr/bin/libusb-config From peter at korsgaard.com Wed May 15 15:29:33 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Wed, 15 May 2024 17:29:33 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/fluidsynth: bump to version 2.3.5 Message-ID: <20240515153113.9CBA6873D6@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=8811a2d0ebaff24bb6e94da1897378c52ebf24b9 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x For change log since v2.3.4, see: - https://github.com/FluidSynth/fluidsynth/releases/tag/v2.3.5 Signed-off-by: Julien Olivain Signed-off-by: Thomas Petazzoni (cherry picked from commit 0215a6d6f68e03909f54f4bbb160161b8d80503d) Signed-off-by: Peter Korsgaard --- package/fluidsynth/fluidsynth.hash | 2 +- package/fluidsynth/fluidsynth.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/fluidsynth/fluidsynth.hash b/package/fluidsynth/fluidsynth.hash index 824f246a2c..91d8778cbf 100644 --- a/package/fluidsynth/fluidsynth.hash +++ b/package/fluidsynth/fluidsynth.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 1529ef5bc3b9ef3adc2a7964505912f7305103e269e50cc0316f500b22053ac9 fluidsynth-2.3.4.tar.gz +sha256 f89e8e983ecfb4a5b4f5d8c2b9157ed18d15ed2e36246fa782f18abaea550e0d fluidsynth-2.3.5.tar.gz sha256 9b872a8a070b8ad329c4bd380fb1bf0000f564c75023ec8e1e6803f15364b9e9 LICENSE diff --git a/package/fluidsynth/fluidsynth.mk b/package/fluidsynth/fluidsynth.mk index 4317c6e460..ef05b6a569 100644 --- a/package/fluidsynth/fluidsynth.mk +++ b/package/fluidsynth/fluidsynth.mk @@ -4,7 +4,7 @@ # ################################################################################ -FLUIDSYNTH_VERSION = 2.3.4 +FLUIDSYNTH_VERSION = 2.3.5 FLUIDSYNTH_SITE = $(call github,FluidSynth,fluidsynth,v$(FLUIDSYNTH_VERSION)) FLUIDSYNTH_LICENSE = LGPL-2.1+ FLUIDSYNTH_LICENSE_FILES = LICENSE From bonet at grenoble.cnrs.fr Wed May 15 15:31:15 2024 From: bonet at grenoble.cnrs.fr (Edgar Bonet) Date: Wed, 15 May 2024 17:31:15 +0200 Subject: [Buildroot] Nginx fails to build with GCC 14 In-Reply-To: <5647a701-8c5a-4ce6-92c3-3c252e1cd91b@grenoble.cnrs.fr> References: <5647a701-8c5a-4ce6-92c3-3c252e1cd91b@grenoble.cnrs.fr> Message-ID: <4c9e89d1-48f6-48a7-b7af-0d429e2256cc@grenoble.cnrs.fr> Hello all! On 2024-05-14, I wrote: > Building nginx with GCC 14 fails at the configure step with: > > ./configure: error: libatomic_ops library was not found. It turns out the issue is in a tiny test program that the configure script tries to compile in order to probe for the atomic_ops library. The compilation fails on an ?incompatible pointer type? error. Up to GCC 13, implicitly casting between incompatible pointer types only issued a warning. Since GCC 14, this is an error.[1] I fixed the issue with the meta-patch (patch adding a patch) below. May I now submit this to buildroot? Should I instead attempt to upstream the inner patch before submitting here the meta-patch? Any comments on these patches are welcome. Regards, Edgar. [1] https://gcc.gnu.org/gcc-14/porting_to.html#incompatible-pointer-types -- >8 -- Subject: [PATCH 1/1] package/nginx: fix compile error in configure script Building with GCC 14 fails at the configure step with: ./configure: error: libatomic_ops library was not found. The error is not caused by a missing library, but by an unrelated "incompatible pointer type" error in the test program: ... checking for atomic_ops library objs/autotest.c: In function 'main': objs/autotest.c:9:48: error: passing argument 1 of 'AO_compare_and_swap' from incompatible pointer type [-Wincompatible-pointer-types] This used to be a warning, but it is an error since GCC 14.[1] Fix this by patching the test program in order to use the correct pointer types. [1] https://gcc.gnu.org/gcc-14/porting_to.html#incompatible-pointer-types Signed-off-by: Edgar Bonet --- ...ix-compile-error-in-configure-script.patch | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 package/nginx/0011-Fix-compile-error-in-configure-script.patch diff --git a/package/nginx/0011-Fix-compile-error-in-configure-script.patch b/package/nginx/0011-Fix-compile-error-in-configure-script.patch new file mode 100644 index 0000000000..f8160a1da2 --- /dev/null +++ b/package/nginx/0011-Fix-compile-error-in-configure-script.patch @@ -0,0 +1,40 @@ +From e1bcac837f6aeabc4ddece06ecbcf2bcca8dd651 Mon Sep 17 00:00:00 2001 +From: Edgar Bonet +Date: Wed, 15 May 2024 16:35:27 +0200 +Subject: [PATCH] Fix compile error in configure script + +Building with GCC 14 fails at the configure step with: + + ./configure: error: libatomic_ops library was not found. + +The error is not caused by a missing library, but by an unrelated +"incompatible pointer type" error in the test program: + + ... + checking for atomic_ops library + objs/autotest.c: In function 'main': + objs/autotest.c:9:48: error: passing argument 1 of 'AO_compare_and_swap' from incompatible pointer type [-Wincompatible-pointer-types] + +Fix the error by using the correct pointer types. + +Signed-off-by: Edgar Bonet +--- + auto/lib/libatomic/conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/auto/lib/libatomic/conf b/auto/lib/libatomic/conf +index d1e484a..0f12b9c 100644 +--- a/auto/lib/libatomic/conf ++++ b/auto/lib/libatomic/conf +@@ -20,7 +20,7 @@ else + #include " + ngx_feature_path= + ngx_feature_libs="-latomic_ops" +- ngx_feature_test="long n = 0; ++ ngx_feature_test="volatile size_t n = 0; + if (!AO_compare_and_swap(&n, 0, 1)) + return 1; + if (AO_fetch_and_add(&n, 1) != 1) +-- +2.34.1 + -- 2.34.1 From fontaine.fabrice at gmail.com Wed May 15 16:25:01 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Wed, 15 May 2024 18:25:01 +0200 Subject: [Buildroot] [PATCH 1/1] package/syslog-ng: fix libcurl build without C++ Message-ID: <20240515162501.1086749-1-fontaine.fabrice@gmail.com> Fix the following libcurl build failure without C++ raised since bump to version 4.7.1 in commit 105f0398c76f3288b2668e0b3ec722b2ebe55a0b and https://github.com/syslog-ng/syslog-ng/commit/86feed7bff068a48be477a5b702ca24abc441d70: configure: error: C++ support is mandatory when the cloud-auth module is enabled. Fixes: 105f0398c76f3288b2668e0b3ec722b2ebe55a0b - http://autobuild.buildroot.org/results/cf36fb119224ba50a768dbe363d4c381f76eb476 Signed-off-by: Fabrice Fontaine --- package/syslog-ng/syslog-ng.mk | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/package/syslog-ng/syslog-ng.mk b/package/syslog-ng/syslog-ng.mk index 4f9a455e81..57ee46ce05 100644 --- a/package/syslog-ng/syslog-ng.mk +++ b/package/syslog-ng/syslog-ng.mk @@ -61,8 +61,13 @@ endif ifeq ($(BR2_PACKAGE_LIBCURL),y) SYSLOG_NG_DEPENDENCIES += libcurl -SYSLOG_NG_CONF_OPTS += --enable-http --enable-cloud-auth +SYSLOG_NG_CONF_OPTS += --enable-http SYSLOG_NG_CONF_OPTS += --with-libcurl="$(STAGING_DIR)/usr" +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) +SYSLOG_NG_CONF_OPTS += --enable-cloud-auth +else +SYSLOG_NG_CONF_OPTS += --disable-cloud-auth +endif else SYSLOG_NG_CONF_OPTS += --disable-http --disable-cloud-auth endif -- 2.43.0 From fontaine.fabrice at gmail.com Wed May 15 16:26:26 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Wed, 15 May 2024 18:26:26 +0200 Subject: [Buildroot] [PATCH 1/1] package/p11-kit: fix build with gcc 14 Message-ID: <20240515162627.1087686-1-fontaine.fabrice@gmail.com> Fix the following build failure with gcc 14: p11-kit/import-object.c: In function 'add_attrs_pubkey_rsa': p11-kit/import-object.c:223:62: error: passing argument 3 of 'p11_asn1_read' from incompatible pointer type [-Wincompatible-pointer-types] 223 | attr_modulus.pValue = p11_asn1_read (asn, "modulus", &attr_modulus.ulValueLen); | ^~~~~~~~~~~~~~~~~~~~~~~~ | | | long unsigned int * Fixes: - http://autobuild.buildroot.org/results/41508a057568ad715e9e00a67adfc3867445d6c1 Signed-off-by: Fabrice Fontaine --- ...teger-truncation-on-32-bit-platforms.patch | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 package/p11-kit/0001-import-object-Avoid-integer-truncation-on-32-bit-platforms.patch diff --git a/package/p11-kit/0001-import-object-Avoid-integer-truncation-on-32-bit-platforms.patch b/package/p11-kit/0001-import-object-Avoid-integer-truncation-on-32-bit-platforms.patch new file mode 100644 index 0000000000..03f54b4408 --- /dev/null +++ b/package/p11-kit/0001-import-object-Avoid-integer-truncation-on-32-bit-platforms.patch @@ -0,0 +1,109 @@ +From d49c92c8420db6ee4c88515bdb014f68f4d471d9 Mon Sep 17 00:00:00 2001 +From: Daiki Ueno +Date: Sat, 2 Dec 2023 09:24:01 +0900 +Subject: [PATCH] import-object: Avoid integer truncation on 32-bit platforms +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The build fails when compiling for 32-bit platforms with +-Werror=incompatible-pointer-types: + + CFLAGS="-m32 -march=i686 -Werror=incompatible-pointer-types -Werror=implicit -Werror=int-conversion" setarch i686 -- meson setup _build + setarch i686 -- meson compile -C _build -v + ... + + ../p11-kit/import-object.c: In function ?add_attrs_pubkey_rsa?: + ../p11-kit/import-object.c:223:62: error: passing argument 3 of ?p11_asn1_read? from incompatible pointer type [-Werror=incompatible-pointer-types] + 223 | attr_modulus.pValue = p11_asn1_read (asn, "modulus", &attr_modulus.ulValueLen); + | ^~~~~~~~~~~~~~~~~~~~~~~~ + | | + | long unsigned int * + +Reported by Sam James in: +https://github.com/p11-glue/p11-kit/issues/608 + +Signed-off-by: Daiki Ueno + +Upstream: https://github.com/p11-glue/p11-kit/commit/d49c92c8420db6ee4c88515bdb014f68f4d471d9 +Signed-off-by: Fabrice Fontaine +--- + p11-kit/import-object.c | 30 +++++++++++++++++++++++++++--- + 1 file changed, 27 insertions(+), 3 deletions(-) + +diff --git a/p11-kit/import-object.c b/p11-kit/import-object.c +index feee0765..fb47b964 100644 +--- a/p11-kit/import-object.c ++++ b/p11-kit/import-object.c +@@ -55,6 +55,7 @@ + #endif + + #include ++#include + #include + #include + #include +@@ -201,6 +202,7 @@ add_attrs_pubkey_rsa (CK_ATTRIBUTE *attrs, + CK_ATTRIBUTE attr_encrypt = { CKA_ENCRYPT, &tval, sizeof (tval) }; + CK_ATTRIBUTE attr_modulus = { CKA_MODULUS, }; + CK_ATTRIBUTE attr_exponent = { CKA_PUBLIC_EXPONENT, }; ++ size_t len = 0; + + pubkey = p11_asn1_read (info, "subjectPublicKey", &pubkey_len); + if (pubkey == NULL) { +@@ -220,17 +222,31 @@ add_attrs_pubkey_rsa (CK_ATTRIBUTE *attrs, + goto cleanup; + } + +- attr_modulus.pValue = p11_asn1_read (asn, "modulus", &attr_modulus.ulValueLen); ++ attr_modulus.pValue = p11_asn1_read (asn, "modulus", &len); + if (attr_modulus.pValue == NULL) { + p11_message (_("failed to obtain modulus")); + goto cleanup; + } ++#if ULONG_MAX < SIZE_MAX ++ if (len > ULONG_MAX) { ++ p11_message (_("failed to obtain modulus")); ++ goto cleanup; ++ } ++#endif ++ attr_modulus.ulValueLen = len; + +- attr_exponent.pValue = p11_asn1_read (asn, "publicExponent", &attr_exponent.ulValueLen); ++ attr_exponent.pValue = p11_asn1_read (asn, "publicExponent", &len); + if (attr_exponent.pValue == NULL) { + p11_message (_("failed to obtain exponent")); + goto cleanup; + } ++#if ULONG_MAX < SIZE_MAX ++ if (len > ULONG_MAX) { ++ p11_message (_("failed to obtain exponent")); ++ goto cleanup; ++ } ++#endif ++ attr_exponent.ulValueLen = len; + + result = p11_attrs_build (attrs, &attr_key_type, &attr_encrypt, &attr_modulus, &attr_exponent, NULL); + if (result == NULL) { +@@ -260,12 +276,20 @@ add_attrs_pubkey_ec (CK_ATTRIBUTE *attrs, + CK_ATTRIBUTE attr_key_type = { CKA_KEY_TYPE, &key_type, sizeof (key_type) }; + CK_ATTRIBUTE attr_ec_params = { CKA_EC_PARAMS, }; + CK_ATTRIBUTE attr_ec_point = { CKA_EC_POINT, }; ++ size_t len = 0; + +- attr_ec_params.pValue = p11_asn1_read (info, "algorithm.parameters", &attr_ec_params.ulValueLen); ++ attr_ec_params.pValue = p11_asn1_read (info, "algorithm.parameters", &len); + if (attr_ec_params.pValue == NULL) { + p11_message (_("failed to obtain EC parameters")); + goto cleanup; + } ++#if ULONG_MAX < SIZE_MAX ++ if (len > ULONG_MAX) { ++ p11_message (_("failed to obtain EC parameters")); ++ goto cleanup; ++ } ++#endif ++ attr_ec_params.ulValueLen = len; + + /* subjectPublicKey is read as BIT STRING value which contains + * EC point data. We need to DER encode this data as OCTET STRING. -- 2.43.0 From arnout at mind.be Wed May 15 16:37:38 2024 From: arnout at mind.be (Arnout Vandecappelle) Date: Wed, 15 May 2024 18:37:38 +0200 Subject: [Buildroot] [PATCH 1/1] board/acmesystems/acqua-a5: fix hash of at91bootstrap3 In-Reply-To: References: Message-ID: <370e62b0-78e1-40fb-a363-aa0adff93993@mind.be> On 14/05/2024 17:41, Yann E. MORIN wrote: > Edgar, All, > > On 2024-05-14 14:22 +0200, Edgar Bonet spake thusly: >> Commit 5b847f88fef7 (board: update hashes for generated achives) updated >> the file >> >> board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash >> >> by changing the file name suffix: -git3.tar.gz -> -git4.tar.gz. It did >> not, however, update the hash itself. Do it now. > > I knew I would miss some things here and there. I hoped I wouldd not, > but I knew I would... That one was on me though: there was a merge conflict in that file and it seems I messed it up... Regards, Arnout > >> Fixes: 5b847f88fef768c8e79422db4193533b3a7488ea >> Signed-off-by: Edgar Bonet > > Applied to master, thanks for fixing my mess! > > Regards, > Yann E. MORIN. > >> --- >> .../acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash b/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash >> index 3734f22c95..6edf3d3345 100644 >> --- a/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash >> +++ b/board/acmesystems/acqua-a5/patches/at91bootstrap3/at91bootstrap3.hash >> @@ -1,2 +1,2 @@ >> # Locally calculated >> -sha256 fef34111a07d9e5aa97b0840355a367f806a17e029583830e9deaa747ce47824 at91bootstrap3-v3.10.3-git4.tar.gz >> +sha256 5ea2a8fed1ba0024229c6f6d77176679e1b24791bdbce8e285634013d4a93551 at91bootstrap3-v3.10.3-git4.tar.gz >> -- >> 2.34.1 >> _______________________________________________ >> buildroot mailing list >> buildroot at buildroot.org >> https://lists.buildroot.org/mailman/listinfo/buildroot > From bugzilla at busybox.net Wed May 15 16:45:30 2024 From: bugzilla at busybox.net (bugzilla at busybox.net) Date: Wed, 15 May 2024 16:45:30 +0000 Subject: [Buildroot] [Bug 16075] Cannot use linux kernel extensions from external tree (building zfs into kernel) In-Reply-To: References: Message-ID: https://bugs.busybox.net/show_bug.cgi?id=16075 --- Comment #1 from Arnout Vandecappelle --- Is it possible that you have `include */*.mk` in your external.mk? This will include your `linux/linux-ext-zfs-inkernel.mk` in the "main" buildroot include, but it should only be included in the linux-extensions-specific section in buildroot linux/linux.mk: include $(sort $(wildcard $(foreach ext,$(BR2_EXTERNAL_DIRS), \ $(ext)/linux/linux-ext-*.mk))) -- You are receiving this mail because: You are on the CC list for the bug. From dario.binacchi at amarulasolutions.com Wed May 15 16:49:12 2024 From: dario.binacchi at amarulasolutions.com (Dario Binacchi) Date: Wed, 15 May 2024 18:49:12 +0200 Subject: [Buildroot] [PATCH 1/1] package/zxing-cpp: add options for enabling readers and/or writers Message-ID: <20240515164912.104672-1-dario.binacchi@amarulasolutions.com> The patch allows you to choose whether to build encoding (BUILD_WRITERS), decoding (BUILD_READERS) or both. This way, it's possible to keep the library size at minimum. By default, to ensure backward compatibility, both are compiled. Signed-off-by: Dario Binacchi --- package/zxing-cpp/Config.in | 27 +++++++++++++++++++++++++++ package/zxing-cpp/zxing-cpp.mk | 14 ++++++++++++-- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/package/zxing-cpp/Config.in b/package/zxing-cpp/Config.in index b72a00ec35f9..f5883045fb1a 100644 --- a/package/zxing-cpp/Config.in +++ b/package/zxing-cpp/Config.in @@ -17,3 +17,30 @@ config BR2_PACKAGE_ZXING_CPP compiles the C++ port. https://github.com/zxing-cpp/zxing-cpp + +if BR2_PACKAGE_ZXING_CPP + +choice + prompt "readers/writers support" + default BR2_PACKAGE_ZXING_CPP_READERS_AND_WRITERS + help + Select what you want to enable and then compile + +config BR2_PACKAGE_ZXING_CPP_READERS + bool "readers only" + help + Build with only readers (decoders) support + +config BR2_PACKAGE_ZXING_CPP_WRITERS + bool "writers only" + help + Build with only writers (encoders) support + +config BR2_PACKAGE_ZXING_CPP_READERS_AND_WRITERS + bool "readers and writers" + help + Build with readers and writers support + +endchoice + +endif # BR2_PACKAGE_ZXING_CPP diff --git a/package/zxing-cpp/zxing-cpp.mk b/package/zxing-cpp/zxing-cpp.mk index 86a1ef96806d..c37769ea5d6b 100644 --- a/package/zxing-cpp/zxing-cpp.mk +++ b/package/zxing-cpp/zxing-cpp.mk @@ -12,8 +12,6 @@ ZXING_CPP_INSTALL_STAGING = YES ZXING_CPP_SUPPORTS_IN_SOURCE_BUILD = NO ZXING_CPP_DEPENDENCIES = host-pkgconf stb ZXING_CPP_CONF_OPTS = \ - -DBUILD_READERS=ON \ - -DBUILD_WRITERS=ON \ -DBUILD_BLACKBOX_TESTS=OFF \ -DBUILD_UNIT_TESTS=OFF \ -DBUILD_DEPENDENCIES=LOCAL @@ -28,4 +26,16 @@ else ZXING_CPP_CONF_OPTS += -DBUILD_PYTHON_MODULE=OFF endif +ifeq ($(BR2_PACKAGE_ZXING_CPP_READERS)$(BR2_PACKAGE_ZXING_CPP_READERS_AND_WRITERS),y) +ZXING_CPP_CONF_OPTS += -DBUILD_READERS=ON +else +ZXING_CPP_CONF_OPTS += -DBUILD_READERS=OFF +endif + +ifeq ($(BR2_PACKAGE_ZXING_CPP_WRITERS)$(BR2_PACKAGE_ZXING_CPP_READERS_AND_WRITERS),y) +ZXING_CPP_CONF_OPTS += -DBUILD_WRITERS=ON +else +ZXING_CPP_CONF_OPTS += -DBUILD_WRITERS=OFF +endif + $(eval $(cmake-package)) -- 2.43.0 From fontaine.fabrice at gmail.com Wed May 15 18:10:47 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Wed, 15 May 2024 20:10:47 +0200 Subject: [Buildroot] [PATCH 1/1] package/ustreamer: fix uclibc build Message-ID: <20240515181047.1254290-1-fontaine.fabrice@gmail.com> Fix the following uclibc build failure raised since bump to version 6.11 in commit c6c173dadb7b44ba4af92237d05503b8e83e51dc and https://github.com/pikvm/ustreamer/commit/2d6716aa4762151f0fb1b900d3cd3295d328cab6: In file included from libs/base64.h:25, from libs/base64.c:23: libs/types.h:30:9: error: unknown type name 'ssize_t' 30 | typedef ssize_t sz; | ^~~~~~~ Fixes: c6c173dadb7b44ba4af92237d05503b8e83e51dc - http://autobuild.buildroot.org/results/24498049d7beb4afaaf9f9a0c2fc0bcd26a3ee04 Signed-off-by: Fabrice Fontaine --- ...src-libs-types.h-include-sys-types.h.patch | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 package/ustreamer/0001-src-libs-types.h-include-sys-types.h.patch diff --git a/package/ustreamer/0001-src-libs-types.h-include-sys-types.h.patch b/package/ustreamer/0001-src-libs-types.h-include-sys-types.h.patch new file mode 100644 index 0000000000..82fe596963 --- /dev/null +++ b/package/ustreamer/0001-src-libs-types.h-include-sys-types.h.patch @@ -0,0 +1,36 @@ +From 6c24c9ea610e7cc0e47d1e7124697098d5ef365e Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 15 May 2024 19:56:49 +0200 +Subject: [PATCH] src/libs/types.h: include sys/types.h (#273) + +Include sys/types.h to avoid the following uclibc build failure since +version 5.52 and +https://github.com/pikvm/ustreamer/commit/2d6716aa4762151f0fb1b900d3cd3295d328cab6: + +In file included from libs/base64.h:25, + from libs/base64.c:23: +libs/types.h:30:9: error: unknown type name 'ssize_t' + 30 | typedef ssize_t sz; + | ^~~~~~~ + +Fixes: + - http://autobuild.buildroot.org/results/24498049d7beb4afaaf9f9a0c2fc0bcd26a3ee04 + +Signed-off-by: Fabrice Fontaine +Upstream: https://github.com/pikvm/ustreamer/commit/6c24c9ea610e7cc0e47d1e7124697098d5ef365e +--- + src/libs/types.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/libs/types.h b/src/libs/types.h +index 54e42325..b35bbaea 100644 +--- a/src/libs/types.h ++++ b/src/libs/types.h +@@ -24,6 +24,7 @@ + #include + #include + #include ++#include + + + typedef long long sll; -- 2.43.0 From bugzilla at busybox.net Wed May 15 19:12:21 2024 From: bugzilla at busybox.net (bugzilla at busybox.net) Date: Wed, 15 May 2024 19:12:21 +0000 Subject: [Buildroot] [Bug 16075] Cannot use linux kernel extensions from external tree (building zfs into kernel) In-Reply-To: References: Message-ID: https://bugs.busybox.net/show_bug.cgi?id=16075 Yann E. MORIN changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |INVALID CC| |yann.morin.1998 at free.fr --- Comment #2 from Yann E. MORIN --- mscdex, All, You are calling the autotools-package macro in your linux externsion; that is going to create an actual package, which is what is actually causing you trouble. The linux-ext file should be limited exactly to defining the linux extension. Downloading the sources for the extension should be done in a separate package. See for example the fbtft linux extension, which is simple enough to be a good example. Regards, Yann E. MORIN. -- You are receiving this mail because: You are on the CC list for the bug. From arnout at mind.be Wed May 15 19:19:32 2024 From: arnout at mind.be (Arnout Vandecappelle) Date: Wed, 15 May 2024 21:19:32 +0200 Subject: [Buildroot] Nginx fails to build with GCC 14 In-Reply-To: <4c9e89d1-48f6-48a7-b7af-0d429e2256cc@grenoble.cnrs.fr> References: <5647a701-8c5a-4ce6-92c3-3c252e1cd91b@grenoble.cnrs.fr> <4c9e89d1-48f6-48a7-b7af-0d429e2256cc@grenoble.cnrs.fr> Message-ID: Hi Edgar, On 15/05/2024 17:31, Edgar Bonet wrote: > Hello all! > > On 2024-05-14, I wrote: >> Building nginx with GCC 14 fails at the configure step with: >> >> ./configure: error: libatomic_ops library was not found. > > It turns out the issue is in a tiny test program that the configure > script tries to compile in order to probe for the atomic_ops library. > The compilation fails on an ?incompatible pointer type? error. Up to > GCC 13, implicitly casting between incompatible pointer types only > issued a warning. Since GCC 14, this is an error.[1] > > I fixed the issue with the meta-patch (patch adding a patch) below. May > I now submit this to buildroot? Sure you can! The only thing missing is that the patch should have an Upstream: tag with the URL of the PR or whatever you made to send the patch upstream. > Should I instead attempt to upstream the > inner patch before submitting here the meta-patch? Not instead, but in addition. It can take a long time before the patch has been accepted upstream and there's a new release. > Any comments on these > patches are welcome. > > Regards, > > Edgar. > > [1] https://gcc.gnu.org/gcc-14/porting_to.html#incompatible-pointer-types > > -- >8 -- > Subject: [PATCH 1/1] package/nginx: fix compile error in configure script > > Building with GCC 14 fails at the configure step with: > > ./configure: error: libatomic_ops library was not found. > > The error is not caused by a missing library, but by an unrelated > "incompatible pointer type" error in the test program: > > ... > checking for atomic_ops library > objs/autotest.c: In function 'main': > objs/autotest.c:9:48: error: passing argument 1 of 'AO_compare_and_swap' from incompatible pointer type [-Wincompatible-pointer-types] > > This used to be a warning, but it is an error since GCC 14.[1] > > Fix this by patching the test program in order to use the correct > pointer types. > > [1] https://gcc.gnu.org/gcc-14/porting_to.html#incompatible-pointer-types > > Signed-off-by: Edgar Bonet > --- > ...ix-compile-error-in-configure-script.patch | 40 +++++++++++++++++++ > 1 file changed, 40 insertions(+) > create mode 100644 package/nginx/0011-Fix-compile-error-in-configure-script.patch > > diff --git a/package/nginx/0011-Fix-compile-error-in-configure-script.patch b/package/nginx/0011-Fix-compile-error-in-configure-script.patch > new file mode 100644 > index 0000000000..f8160a1da2 > --- /dev/null > +++ b/package/nginx/0011-Fix-compile-error-in-configure-script.patch > @@ -0,0 +1,40 @@ > +From e1bcac837f6aeabc4ddece06ecbcf2bcca8dd651 Mon Sep 17 00:00:00 2001 > +From: Edgar Bonet > +Date: Wed, 15 May 2024 16:35:27 +0200 > +Subject: [PATCH] Fix compile error in configure script > + > +Building with GCC 14 fails at the configure step with: > + > + ./configure: error: libatomic_ops library was not found. > + > +The error is not caused by a missing library, but by an unrelated > +"incompatible pointer type" error in the test program: > + > + ... > + checking for atomic_ops library > + objs/autotest.c: In function 'main': > + objs/autotest.c:9:48: error: passing argument 1 of 'AO_compare_and_swap' from incompatible pointer type [-Wincompatible-pointer-types] > + > +Fix the error by using the correct pointer types. > + > +Signed-off-by: Edgar Bonet > +--- > + auto/lib/libatomic/conf | 2 +- > + 1 file changed, 1 insertion(+), 1 deletion(-) > + > +diff --git a/auto/lib/libatomic/conf b/auto/lib/libatomic/conf > +index d1e484a..0f12b9c 100644 > +--- a/auto/lib/libatomic/conf > ++++ b/auto/lib/libatomic/conf > +@@ -20,7 +20,7 @@ else > + #include " > + ngx_feature_path= > + ngx_feature_libs="-latomic_ops" > +- ngx_feature_test="long n = 0; > ++ ngx_feature_test="volatile size_t n = 0; The interface actually defines it as AO_t, so perhaps use that instead of volatile size_t? Regards, Arnout > + if (!AO_compare_and_swap(&n, 0, 1)) > + return 1; > + if (AO_fetch_and_add(&n, 1) != 1) > +-- > +2.34.1 > + From dario.binacchi at amarulasolutions.com Wed May 15 21:07:15 2024 From: dario.binacchi at amarulasolutions.com (Dario Binacchi) Date: Wed, 15 May 2024 23:07:15 +0200 Subject: [Buildroot] [PATCH 1/1] package/uuu: bump to version 1.5.181 Message-ID: <20240515210715.643355-1-dario.binacchi@amarulasolutions.com> This is a hot fix for version 1.5.179. Release notes: https://github.com/nxp-imx/mfgtools/releases/tag/uuu_1.5.181 Signed-off-by: Dario Binacchi --- package/uuu/uuu.hash | 2 +- package/uuu/uuu.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/uuu/uuu.hash b/package/uuu/uuu.hash index cc78f6785b83..787bf7d48705 100644 --- a/package/uuu/uuu.hash +++ b/package/uuu/uuu.hash @@ -1,3 +1,3 @@ # locally computed -sha256 6742a0c3b1e5b3b892963473f65e2770462f3bf2871424b800ffa0ed159feb84 uuu_source-uuu_1.5.179.tar.gz +sha256 5e3bab017cf1b7a6a85d0cd46c0de6660de9b93fb24b0a21d8ecc4fb9f663e2c uuu_source-uuu_1.5.181.tar.gz sha256 cc8d47f7b9260f6669ecd41c24554c552f17581d81ee8fc602c6d23edb8bf495 LICENSE diff --git a/package/uuu/uuu.mk b/package/uuu/uuu.mk index b633bd70dbea..056b2a8c52db 100644 --- a/package/uuu/uuu.mk +++ b/package/uuu/uuu.mk @@ -4,7 +4,7 @@ # ################################################################################ -UUU_VERSION = 1.5.179 +UUU_VERSION = 1.5.181 UUU_SOURCE = uuu_source-uuu_$(UUU_VERSION).tar.gz UUU_SITE = https://github.com/NXPmicro/mfgtools/releases/download/uuu_$(UUU_VERSION) UUU_LICENSE = BSD 3-Clause "New" or "Revised" License -- 2.43.0 From thomas.petazzoni at bootlin.com Thu May 16 03:57:58 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Thu, 16 May 2024 03:57:58 -0000 Subject: [Buildroot] [autobuild.buildroot.net] Daily results for 2024-05-15 Message-ID: Hello, Autobuild statistics for 2024-05-15 =================================== branch | OK | NOK | TIM | TOT | 2024.02.x | 12 | 6 | 1 | 19 | master | 32 | 54 | 1 | 87 | Classification of failures by reason for master ----------------------------------------------- fail2ban-1.0.2 | 5 linux-6.8.9 | 4 elfutils-0.189 | 3 mariadb-10.11.6 | 3 unknown | 3 coreutils-9.3 | 2 fcft-3.1.6 | 2 ibm-sw-tpm2-5452af422edeff7... | 2 uclibc-1.0.48 | 2 ustreamer-6.11 | 2 check-11970a7e112dfe243a2e6... | 1 containerd-1.7.14 | 1 ffmpeg-6.1.1 | 1 fftw-quad-3.3.10 | 1 flatbuffers-23.5.26 | 1 gnu-efi-3.0.18 | 1 gobject-introspection | 1 kvmtool-4d2c017f41533b0e51e... | 1 libcamera-apps-1.2.1 | 1 libffi-3.4.6 | 1 libmemcached-1.1.4 | 1 librsvg-2.50.9 | 1 libzenoh-c-0.11.0.2 | 1 linux-5.10.162-cip24 | 1 lxc-5.0.3 | 1 micropython-1.22.0 | 1 p11-kit-0.25.3 | 1 pcsc-lite-2.1.0 | 1 pppd-e1266c76d1ad39f98f1167... | 1 python-grpcio-1.60.0 | 1 python-ml-dtypes-0.3.2 | 1 python-remi-2022.7.27 | 1 qemu-9.0.0 | 1 rtty-8.1.0 | 1 sofia-sip-1.13.17 | 1 ulog-0389d243352255f6182326... | 1 util-linux-2.39.3 | 1 Detail of failures for master ----------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- xtensa | check-11970a7e112dfe243a2e6... | NOK | http://autobuild.buildroot.net/results/d2c4a1cfd03e1bec74e1a7aaf43a89828d1faee6 | ORPH riscv64 | containerd-1.7.14 | NOK | http://autobuild.buildroot.net/results/c3c6c96e837b5f38fce04db5a762a5be13b9e213 | sparc | coreutils-9.3 | NOK | http://autobuild.buildroot.net/results/d35ae64ece19b6458bf4699e806f7c017fbb6d75 | ORPH arm | coreutils-9.3 | NOK | http://autobuild.buildroot.net/results/1aab17839876eb1ad32b619d0161b763e63285e9 | ORPH microblazeel | elfutils-0.189 | NOK | http://autobuild.buildroot.net/results/779e13b93de99f19f2cfd660025f9cb88618de51 | ORPH microblazeel | elfutils-0.189 | NOK | http://autobuild.buildroot.net/results/747368203b869b329195fc8319adcdff9f0e30e4 | ORPH microblazeel | elfutils-0.189 | NOK | http://autobuild.buildroot.net/results/0ac3e848d78f50a7f2323ef7bd534a37a5ffa7a7 | ORPH x86_64 | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/4385ce7b933cf789851a1a761d6410a829868acb | s390x | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/34bdb953b358a19329a8cb94fabea8977373280e | arm | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/71edad7e4cd59ff4fa85df029b37bed0accfea35 | mipsel | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/c463c808814cb439e7697b1d51807cd462ede0b8 | sh4 | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/fe426fb1a22c25ad37735787ed437783a60a5a8b | mips | fcft-3.1.6 | NOK | http://autobuild.buildroot.net/results/749cefdfe6fff5b649c6c71d222b5ae0f13ed219 | mips | fcft-3.1.6 | NOK | http://autobuild.buildroot.net/results/b8faa8243f6267eaf3f01c2b1f205b9602047ffa | microblazeel | ffmpeg-6.1.1 | NOK | http://autobuild.buildroot.net/results/5ec36917e6bb40381df3888b971a5ff8235f2eb4 | powerpc64 | fftw-quad-3.3.10 | NOK | http://autobuild.buildroot.net/results/9d533cd9299d7915a050c5c983d43840b99f966c | ORPH m68k | flatbuffers-23.5.26 | NOK | http://autobuild.buildroot.net/results/6d837c5827d678d02cdbcbdf788234100ff42f00 | arm | gnu-efi-3.0.18 | NOK | http://autobuild.buildroot.net/results/7dbc7938a065d663fec96f78203e3411f5b4dd61 | microblaze | gobject-introspection | TIM | http://autobuild.buildroot.net/results/8665453e2f4f9cfe49008764bdf8e43907c004a3 | mips64el | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/713ea2e42659f2b38796d13f54f8ac1195e497ba | arm | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/fe8ff9766bc1014b20fce29da49ac6adc2658f56 | mips | kvmtool-4d2c017f41533b0e51e... | NOK | http://autobuild.buildroot.net/results/bf0fb0087ca52f43433519fc91d8c7d95b2b66da | ORPH sparc64 | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/0cf3e4d0e9c799f6c36c2a71f8e4dc4492ddb5b4 | arceb | libffi-3.4.6 | NOK | http://autobuild.buildroot.net/results/c22e6482f89863d3de4ab2cb2c1ab7638b57ad97 | x86_64 | libmemcached-1.1.4 | NOK | http://autobuild.buildroot.net/results/e55888dce2965e6bdb12b5fc96fb9c5607816373 | ORPH arm | librsvg-2.50.9 | NOK | http://autobuild.buildroot.net/results/971330325f60fc9178bd6c113c849ebaaa06c921 | sparc64 | libzenoh-c-0.11.0.2 | NOK | http://autobuild.buildroot.net/results/e07b1b902358bfb4357268e58fe496b2bb8a43ea | riscv64 | linux-5.10.162-cip24 | NOK | http://autobuild.buildroot.net/results/afb3f4362c82b105af1f36e25dbdc7fa1cb7ac21 | ORPH nios2 | linux-6.8.9 | NOK | http://autobuild.buildroot.net/results/2e4dfe88482a5aa657f276a9cdf1a762107400d1 | ORPH xtensa | linux-6.8.9 | NOK | http://autobuild.buildroot.net/results/c8f5bb9281d2511364cf0904f674c803da6f8d8f | ORPH nios2 | linux-6.8.9 | NOK | http://autobuild.buildroot.net/results/3754c830b6a5c9fabef5c3f1b3522e0990646f3b | ORPH aarch64_be | linux-6.8.9 | NOK | http://autobuild.buildroot.net/results/e533d74bb784807e0eac0d6207f30e7544474af9 | ORPH aarch64_be | lxc-5.0.3 | NOK | http://autobuild.buildroot.net/results/19fa05b628b48d220bbda4a194ab799d55f5a9bc | sparc | mariadb-10.11.6 | NOK | http://autobuild.buildroot.net/results/55dbb4ea1fe60338d88bff3108031acead8308ae | ORPH mips | mariadb-10.11.6 | NOK | http://autobuild.buildroot.net/results/2c9771fe9c49340ba51f3358473c90d7d337336b | ORPH aarch64 | mariadb-10.11.6 | NOK | http://autobuild.buildroot.net/results/29022a29f6e60106260bd221bd097da714d1b3f6 | ORPH aarch64_be | micropython-1.22.0 | NOK | http://autobuild.buildroot.net/results/69942accc66c812155f55770b559b9dbe4f8f5e6 | sh4aeb | p11-kit-0.25.3 | NOK | http://autobuild.buildroot.net/results/41508a057568ad715e9e00a67adfc3867445d6c1 | ORPH microblazeel | pcsc-lite-2.1.0 | NOK | http://autobuild.buildroot.net/results/99dd6dc579397885ecc98520bd266e96243d6c08 | ORPH sparc | pppd-e1266c76d1ad39f98f1167... | NOK | http://autobuild.buildroot.net/results/474c0f974f0af222bee2e36f742d07c782e1001e | mips | python-grpcio-1.60.0 | NOK | http://autobuild.buildroot.net/results/f7abf52918f34fe5be8583e9aca3e4597e58a3f7 | arc | python-ml-dtypes-0.3.2 | NOK | http://autobuild.buildroot.net/results/996b112b1b6a000d87725a47241c5b3a46a05cac | arc | python-remi-2022.7.27 | NOK | http://autobuild.buildroot.net/results/6c834de6e9d5ed2b9bc47aa971ff4412bdd954ec | powerpc64le | qemu-9.0.0 | NOK | http://autobuild.buildroot.net/results/714cb84ed46a6c0ac97638fe159fa614025ec584 | x86_64 | rtty-8.1.0 | NOK | http://autobuild.buildroot.net/results/ab8faf450a3f4dded07f1b0177ce63299878364c | sparc | sofia-sip-1.13.17 | NOK | http://autobuild.buildroot.net/results/0d5f402c42d3ecc4445fd8e7ccfeb28186da9336 | m68k | uclibc-1.0.48 | NOK | http://autobuild.buildroot.net/results/e4e9227f8f1b9b9db48eb5b4fa20f1f456b01d9d | arceb | uclibc-1.0.48 | NOK | http://autobuild.buildroot.net/results/2edf086945e9725b75be75108f085b567cc069b4 | nios2 | ulog-0389d243352255f6182326... | NOK | http://autobuild.buildroot.net/results/500121e7a73259e409b017a0382859f4ece23882 | sparc64 | unknown | NOK | http://autobuild.buildroot.net/results/3846cb7f8b06062d98a983758535d39ca3df2360 | s390x | unknown | NOK | http://autobuild.buildroot.net/results/dd6529e5fb479fbf5d47ee0c1dab57cb0bc3eba1 | or1k | unknown | NOK | http://autobuild.buildroot.net/results/e8997e1750e5cb73941543e1a1766602f53ec203 | m68k | ustreamer-6.11 | NOK | http://autobuild.buildroot.net/results/24498049d7beb4afaaf9f9a0c2fc0bcd26a3ee04 | m68k | ustreamer-6.11 | NOK | http://autobuild.buildroot.net/results/a7c02225eee9d37ca0904a20080a1a6393ebff0f | arm | util-linux-2.39.3 | NOK | http://autobuild.buildroot.net/results/fb1feb47f2660882fa53f66bacc63e191fd52175 | ORPH Classification of failures by reason for 2024.02.x -------------------------------------------------- heirloom-mailx | 1 host-heimdal-f4faaeaba371ff... | 1 host-sentry-cli-2.20.3 | 1 libressl-3.8.4 | 1 ncmpc-0.49 | 1 proj-9.3.0 | 1 shadow-4.14.3 | 1 Detail of failures for 2024.02.x -------------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- arm | heirloom-mailx | TIM | http://autobuild.buildroot.net/results/25e162c69e25f1ceddf1786d2ce27abc03b3b89f | mipsel | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/65a0f6fc9ac14d3727b8b4c5006c6717636724a3 | ORPH mips64el | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/9e147f97f4097d10adc8b46770ffaebcc1271e77 | powerpc | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/a651a679d0a57c8c388ac169c2ece3549de3b469 | ORPH aarch64 | ncmpc-0.49 | NOK | http://autobuild.buildroot.net/results/24ad8e4cfec1a2c8193467f3641b094457c5f4c1 | aarch64_be | proj-9.3.0 | NOK | http://autobuild.buildroot.net/results/b19c11a17b9be6b28320238c8d517900104fdb41 | arm | shadow-4.14.3 | NOK | http://autobuild.buildroot.net/results/0ad9d22ac220a93704eb46133351c8462b325b50 | -- http://autobuild.buildroot.net From Alex.Michel at wiedemann-group.com Thu May 16 06:48:51 2024 From: Alex.Michel at wiedemann-group.com (Michel Alex) Date: Thu, 16 May 2024 06:48:51 +0000 Subject: [Buildroot] package/libzenoh-c: bump to version 0.11.0.3 Message-ID: https://github.com/eclipse-zenoh/zenoh-c/releases/tag/0.11.0.3 Signed-off-by: Alex Michel --- package/libzenoh-c/libzenoh-c.hash | 2 +- package/libzenoh-c/libzenoh-c.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/libzenoh-c/libzenoh-c.hash b/package/libzenoh-c/libzenoh-c.hash index 8331f5cca4..852e785ead 100644 --- a/package/libzenoh-c/libzenoh-c.hash +++ b/package/libzenoh-c/libzenoh-c.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 c792f0be936ecbb3f759124be28950a01385f4680eaf4f1da55997640899648e libzenoh-c-0.11.0.2-cargo2.tar.gz +sha256 03ff32bfd11e39a1634d5abe0e69599ec988c63115682a17a5e7d021f3c1e9e8 libzenoh-c-0.11.0.3.tar.gz sha256 01a44774f7b1a453595c7c6d7f7308284ba6a1059dc49e14dad6647e1d44a338 LICENSE diff --git a/package/libzenoh-c/libzenoh-c.mk b/package/libzenoh-c/libzenoh-c.mk index 3a50fe6bf1..07c153e328 100644 --- a/package/libzenoh-c/libzenoh-c.mk +++ b/package/libzenoh-c/libzenoh-c.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBZENOH_C_VERSION = 0.11.0.2 +LIBZENOH_C_VERSION = 0.11.0.3 LIBZENOH_C_SITE = $(call github,eclipse-zenoh,zenoh-c,$(LIBZENOH_C_VERSION)) LIBZENOH_C_LICENSE = Apache-2.0 or EPL-2.0 LIBZENOH_C_LICENSE_FILES = LICENSE -- 2.34.1 From romain.naour at smile.fr Thu May 16 07:07:45 2024 From: romain.naour at smile.fr (Romain Naour) Date: Thu, 16 May 2024 09:07:45 +0200 Subject: [Buildroot] [PATCH v1 1/3] package/go-bootstrap-stage2: bump version to go1.19.13 In-Reply-To: References: <20240307015107.2908128-1-christian@aperture.us> <20240514102318.1cdeba18@windsurf> Message-ID: Hello Christian, All, Le 15/05/2024 ? 01:38, Christian Stewart via buildroot a ?crit?: > Hi Thomas, > > On Tue, May 14, 2024 at 4:39?AM Christian Stewart wrote: >> On Tue, May 14, 2024, 1:23?AM Thomas Petazzoni wrote: >>> >>> I don't think it's this patch causing the issue, but we have a Go build >>> failure in our Gitlab CI: >>> >>> https://gitlab.com/buildroot.org/buildroot/-/jobs/6833307823 >>> >>> Could you have a look? >> >> This looks like we need to pass -buildvcs=false to Go. I'll have a look at submitting a patch for this. > > I found this commit in Go which fixed & added a test to ensure that > -buildvcs=false is set when GOROOT_BOOTSTRAP is set (which it was in > the failing job). > > commit 42a46206b97ca7cf4246d3c1230a70cf42ad5bb0 > Author: Bryan C. Mills > Date: Fri Sep 9 17:29:12 2022 -0400 > > cmd/go: omit VCS stamping during bootstrap > > cmd/dist can't easily hard-code -buildvcs=false because not all > versions of cmd/go supported for bootstrapping recognize that flag. > > However, we don't want to stamp the bootstrap binaries: the stamping > is redundant with the VERSION file writted during bootstrapping (which > is why it is normally omitted for standard-library packages and > commands), and it may also interfere with building the Go repo from a > source tarball or zip file. > > Fixes #54852. > > Change-Id: If223f094af137c4c202d6bf622619bd2da397ec4 > Reviewed-on: https://go-review.googlesource.com/c/go/+/432435 > > See: https://github.com/golang/go/commit/42a46206b97ca7cf4246d3c1230a70cf42ad5bb0 > > However it seems that bootstrap step is failing due to -buildvcs=false > not being set. > > I will try to debug further. This could be a Go regression. I tried to reproduce using docker-run script but the build succeed. Actually this issue remind me the issue we had with newer git release and how gitlab checks out the repository: https://gitlab.com/buildroot.org/buildroot/-/commit/a016b693f7830f3c8ae815851d3204b8b6e99821 Indeed, within gitlab-ci build context the build fail due to the ownership of the (buildroot) git tree. is go ignore the .gitconfig file somehow ? Anyway, go should not try to use git to retrieve some info since we are not in the go repository. I applied the same patch "fix go-bootstrap when parent dir contains invalid .git" from [1] to go-bootstrap-stage3 [1] https://gitlab.com/buildroot.org/buildroot/-/commit/bc8e70a08ba083d978c828e31442a7645c9099d7 And the build succeed on gitlab-ci: https://gitlab.com/kubu93/buildroot/-/jobs/6860670292 Best regards, Romain > > Best regards, > Christian Stewart > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot From friedtj at free.fr Thu May 16 08:34:21 2024 From: friedtj at free.fr (friedtj at free.fr) Date: Thu, 16 May 2024 10:34:21 +0200 (CEST) Subject: [Buildroot] [PATCH 1/1] package/gnuradio: add optional IIO support to GNU Radio In-Reply-To: <20240512095911.17df30df@windsurf> References: <1392555888.1047670733.1711087389627.JavaMail.zimbra@free.fr> <1322751925.1056008247.1711141112983.JavaMail.zimbra@free.fr> <20240512095911.17df30df@windsurf> Message-ID: <1829902423.330785126.1715848461667.JavaMail.zimbra@free.fr> Indeed libiio dependency must be activated. The following patch aims at providing optional IIO support in GNU Radio since it is now included and no longer an external package: Signed-off-by: Jean-Michel Friedt --- package/gnuradio/Config.in | 7 +++++++ package/gnuradio/gnuradio.mk | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/package/gnuradio/Config.in b/package/gnuradio/Config.in index be997e91e2..78bee9e221 100644 --- a/package/gnuradio/Config.in +++ b/package/gnuradio/Config.in @@ -136,6 +136,13 @@ config BR2_PACKAGE_GNURADIO_FILTER help Filter signal processing blocks +config BR2_PACKAGE_GNURADIO_IIO + bool "gr-iio support" + select BR2_PACKAGE_LIBIIO + select BR2_PACKAGE_GNURADIO_BLOCKS + help + IIO support + config BR2_PACKAGE_GNURADIO_NETWORK bool "gr-network support" select BR2_PACKAGE_GNURADIO_BLOCKS diff --git a/package/gnuradio/gnuradio.mk b/package/gnuradio/gnuradio.mk index 4e82c9e129..bdaab86f35 100644 --- a/package/gnuradio/gnuradio.mk +++ b/package/gnuradio/gnuradio.mk @@ -112,6 +112,13 @@ else GNURADIO_CONF_OPTS += -DENABLE_GR_NETWORK=OFF endif +ifeq ($(BR2_PACKAGE_GNURADIO_IIO),y) +GNURADIO_CONF_OPTS += -DENABLE_GR_IIO=ON +GNURADIO_DEPENDENCIES += libiio +else +GNURADIO_CONF_OPTS += -DENABLE_GR_IIO=OFF +endif + ifeq ($(BR2_PACKAGE_GNURADIO_PYTHON),y) GNURADIO_DEPENDENCIES += python3 python-pybind \ host-python-numpy host-python-packaging -- 2.43.0 Thanks, ----- Mail original ----- De: "Thomas Petazzoni" ?: "friedtj" Cc: "buildroot" Envoy?: Dimanche 12 Mai 2024 09:59:11 Objet: Re: [Buildroot] package/gnuradio: activate gr-iio Hello Jean-Michel, On Fri, 22 Mar 2024 21:58:32 +0100 (CET) friedtj at free.fr wrote: > From e26989cc30d4476d7384e62064cfa6486706bf8b Mon Sep 17 00:00:00 2001 > From: JM Friedt > Date: Fri, 22 Mar 2024 20:55:44 +0000 > Subject: [PATCH 1/1] package/gnuradio: add IIO as optional feature of GNU Radio I'm not sure what happened, but your patch is badly formatted. Also your Signed-off-by line is missing. > +config BR2_PACKAGE_GNURADIO_IIO > + bool "gr-iio support" > + select BR2_PACKAGE_LIBIIO Since you select libiio... > + select BR2_PACKAGE_GNURADIO_BLOCKS > + help > + IIO support > + > config BR2_PACKAGE_GNURADIO_NETWORK > bool "gr-network support" > select BR2_PACKAGE_GNURADIO_BLOCKS > diff --git a/package/gnuradio/gnuradio.mk b/package/gnuradio/gnuradio.mk > index 4e82c9e129..2267e7561a 100644 > --- a/package/gnuradio/gnuradio.mk > +++ b/package/gnuradio/gnuradio.mk > @@ -112,6 +112,12 @@ else > GNURADIO_CONF_OPTS += -DENABLE_GR_NETWORK=OFF > endif > > +ifeq ($(BR2_PACKAGE_GNURADIO_IIO),y) > +GNURADIO_CONF_OPTS += -DENABLE_GR_IIO=ON don't you need libiio as a build dependency? > +else > +GNURADIO_CONF_OPTS += -DENABLE_GR_IIO=OFF > +endif Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From bonet at grenoble.cnrs.fr Thu May 16 08:38:10 2024 From: bonet at grenoble.cnrs.fr (Edgar Bonet) Date: Thu, 16 May 2024 10:38:10 +0200 Subject: [Buildroot] Nginx fails to build with GCC 14 In-Reply-To: References: <5647a701-8c5a-4ce6-92c3-3c252e1cd91b@grenoble.cnrs.fr> <4c9e89d1-48f6-48a7-b7af-0d429e2256cc@grenoble.cnrs.fr> Message-ID: Hello Arnout, all! > the patch should have an Upstream: tag with the URL of the PR or > whatever you made to send the patch upstream. OK. I guess I will have to learn some basic mercurial commands, as the Nginx developers expect patches to be submitted in ?HG changeset patch? format... > > ++ ngx_feature_test="volatile size_t n = 0; > > The interface actually defines it as AO_t, so perhaps use that instead > of volatile size_t? Oh right! I hadn't even checked the API. Will use AO_t. Thanks! Edgar. From christian at aperture.us Thu May 16 09:06:48 2024 From: christian at aperture.us (Christian Stewart) Date: Thu, 16 May 2024 02:06:48 -0700 Subject: [Buildroot] [PATCH v1 1/3] package/go-bootstrap-stage2: bump version to go1.19.13 In-Reply-To: References: <20240307015107.2908128-1-christian@aperture.us> <20240514102318.1cdeba18@windsurf> Message-ID: Romain, On Thu, May 16, 2024, 12:07?AM Romain Naour wrote: > Hello Christian, All, > > Le 15/05/2024 ? 01:38, Christian Stewart via buildroot a ?crit : > Anyway, go should not try to use git to retrieve some info since we are > not in > the go repository. > > I applied the same patch "fix go-bootstrap when parent dir contains invalid > .git" from [1] to go-bootstrap-stage3 > > [1] > > https://gitlab.com/buildroot.org/buildroot/-/commit/bc8e70a08ba083d978c828e31442a7645c9099d7 > > And the build succeed on gitlab-ci: > https://gitlab.com/kubu93/buildroot/-/jobs/6860670292 > > Best regards, > Romain > Ah yes, a year ago (July 2023) I encountered this issue, added the patch to buildroot, sent the patch upstream: https://go-review.googlesource.com/c/go/+/513835#message-3e06cf20e68b78655fd3aa2af4a192e45bb29e63 - had review comments on that CL, but never got around to updating / resubmitting it :( Good to know that worked! Best regards, Christian Stewart -------------- next part -------------- An HTML attachment was scrubbed... URL: From peter at korsgaard.com Thu May 16 09:27:02 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 11:27:02 +0200 Subject: [Buildroot] [PATCH] utils/check-package: new check for Buildroot's defconfig files In-Reply-To: <20240501215127.2d729695@windsurf> (Thomas Petazzoni via buildroot's message of "Wed, 1 May 2024 21:51:27 +0200") References: <20240331203403.815497-1-yann.morin.1998@free.fr> <20240501215127.2d729695@windsurf> Message-ID: <87v83ep0nt.fsf@dell.be.48ers.dk> >>>>> "Thomas" == Thomas Petazzoni via buildroot writes: > On Sun, 31 Mar 2024 22:34:03 +0200 > "Yann E. MORIN" wrote: >> Now that we do have support for checking hashes for custom versions >> (for the few packages for which we do support custom versions, like the >> kernel, some bootloaders...), we want to ensure that our defconfig >> files, when they enable one or more such custom version, do enable >> checking the hashes for those versions, and thus we want to require all >> our defconfigs do enable BR2_DOWNLOAD_FORCE_CHECK_HASHES. >> >> Add a check for that condition. >> >> We need to be careful that we only check Buildroot's defconfig, whether >> in-tree or in a br2-external, and not kernel or other kconfig-based >> defconfig files, like those in board/ sub-directories. So we only match >> defconfig files that are in a configs/ directory, whether at the >> toplevel (for in-tree defconfigs), or not (for br2-external defconfigs). I wonder if it really makes sense to enforce this for br2-external defconfigs, as it is basically a question about policy and they are "out of our hands". Depending on the use case it may or may not make sense for those defconfigs to use hashes. E.G. at $WORK I have a br2-external tree where check-package is used to ensure that the packages are well behaved (E.G. do not negatively impact the rest), but E.G. the kernel is downloaded from a trusted git server and changed often, so the overhead of maintaining hashes of the (buildroot internally generated) tarball is quite annoying. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 16 09:28:01 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 11:28:01 +0200 Subject: [Buildroot] [PATCH 1/1] package/coreutils: drop gmp optional dependency In-Reply-To: <20240330185620.995961-1-fontaine.fabrice@gmail.com> (Fabrice Fontaine's message of "Sat, 30 Mar 2024 19:56:20 +0100") References: <20240330185620.995961-1-fontaine.fabrice@gmail.com> Message-ID: <87r0e2p0m6.fsf@dell.be.48ers.dk> >>>>> "Fabrice" == Fabrice Fontaine writes: > libgmp is included in coreutils (through bootstrap.conf) since bump to > version 9.0 in commit 2ee43bad85693d1c96e14f5b39ccb13a8982f50a and > https://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=13046444888a7e96f48d28fdd5a6ffe03d4ab036: > configure: WARNING: unrecognized options: --disable-gtk-doc, > --disable-gtk-doc-html, --disable-doc, --disable-docs, > --disable-documentation, --with-xmlto, --with-fop, --enable-ipv6, > --enable-static, --enable-shared, --without-gmp > Fixes: 2ee43bad85693d1c96e14f5b39ccb13a8982f50a > Signed-off-by: Fabrice Fontaine Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 16 09:41:06 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 11:41:06 +0200 Subject: [Buildroot] [PATCH 1/1] support/testing: add iperf runtime test In-Reply-To: <20240420105441.35505-1-ju.o@free.fr> (Julien Olivain's message of "Sat, 20 Apr 2024 12:54:41 +0200") References: <20240420105441.35505-1-ju.o@free.fr> Message-ID: <87msoqp00d.fsf@dell.be.48ers.dk> >>>>> "Julien" == Julien Olivain writes: > Signed-off-by: Julien Olivain Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From bonet at grenoble.cnrs.fr Thu May 16 10:06:50 2024 From: bonet at grenoble.cnrs.fr (Edgar Bonet) Date: Thu, 16 May 2024 12:06:50 +0200 Subject: [Buildroot] [PATCH 1/1] package/nginx: fix compile error in configure script Message-ID: <1ed351b7-0e04-436d-9ce3-ca70f4d3ff74@grenoble.cnrs.fr> Building with GCC 14 fails at the configure step with: ./configure: error: libatomic_ops library was not found. The error is not caused by a missing library, but by an unrelated "incompatible pointer type" error in the test program: ... checking for atomic_ops library objs/autotest.c: In function 'main': objs/autotest.c:9:48: error: passing argument 1 of 'AO_compare_and_swap' from incompatible pointer type [-Wincompatible-pointer-types] This used to be a warning, but it is an error since GCC 14.[1] Fix this by patching the test program in order to use the correct pointer types. [1] https://gcc.gnu.org/gcc-14/porting_to.html#incompatible-pointer-types Signed-off-by: Edgar Bonet --- ...ix-compile-error-in-configure-script.patch | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 package/nginx/0011-Fix-compile-error-in-configure-script.patch diff --git a/package/nginx/0011-Fix-compile-error-in-configure-script.patch b/package/nginx/0011-Fix-compile-error-in-configure-script.patch new file mode 100644 index 0000000000..2e719928ce --- /dev/null +++ b/package/nginx/0011-Fix-compile-error-in-configure-script.patch @@ -0,0 +1,41 @@ +From e1bcac837f6aeabc4ddece06ecbcf2bcca8dd651 Mon Sep 17 00:00:00 2001 +From: Edgar Bonet +Date: Thu, 16 May 2024 11:15:10 +0200 +Subject: [PATCH] Fix compile error in configure script + +Building with GCC 14 fails at the configure step with: + + ./configure: error: libatomic_ops library was not found. + +The error is not caused by a missing library, but by an unrelated +"incompatible pointer type" error in the test program: + + ... + checking for atomic_ops library + objs/autotest.c: In function 'main': + objs/autotest.c:9:48: error: passing argument 1 of 'AO_compare_and_swap' from incompatible pointer type [-Wincompatible-pointer-types] + +Fix the error by using the correct pointer types. + +Signed-off-by: Edgar Bonet +Upstream: https://mailman.nginx.org/pipermail/nginx-devel/2024-May/LF5H73UPOIS64TVQUN5N6S2A4IACBRPT.html +--- + auto/lib/libatomic/conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/auto/lib/libatomic/conf b/auto/lib/libatomic/conf +index d1e484a..0f12b9c 100644 +--- a/auto/lib/libatomic/conf ++++ b/auto/lib/libatomic/conf +@@ -20,7 +20,7 @@ else + #include " + ngx_feature_path= + ngx_feature_libs="-latomic_ops" +- ngx_feature_test="long n = 0; ++ ngx_feature_test="AO_t n = 0; + if (!AO_compare_and_swap(&n, 0, 1)) + return 1; + if (AO_fetch_and_add(&n, 1) != 1) +-- +2.34.1 + -- 2.34.1 From jonhenrik at qbee.io Thu May 16 10:51:18 2024 From: jonhenrik at qbee.io (=?UTF-8?q?Jon=20Henrik=20Bj=C3=B8rnstad?=) Date: Thu, 16 May 2024 12:51:18 +0200 Subject: [Buildroot] [PATCH 1/1] package/qbee-agent: bump version to 2024.19 Message-ID: <20240516105118.3064532-1-jonhenrik@qbee.io> Signed-off-by: Jon Henrik Bj?rnstad --- package/qbee-agent/qbee-agent.hash | 2 +- package/qbee-agent/qbee-agent.mk | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/qbee-agent/qbee-agent.hash b/package/qbee-agent/qbee-agent.hash index 8e9e7230ea..69fab1d0c3 100644 --- a/package/qbee-agent/qbee-agent.hash +++ b/package/qbee-agent/qbee-agent.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 d329d6d1c885ec4d410ab8c5f93320ab603cef860311a6b392edd5b903039a81 qbee-agent-2024.09-go2.tar.gz +sha256 7bf7c341bf48310c48ed34b970f64b6556197e6de707d3fa8e92d2b5141d0c20 qbee-agent-2024.19-go2.tar.gz sha256 02d07d96be99eb042b01ba650079a440ce26a78c5e0e1e8060c33a8c9e200404 LICENSE diff --git a/package/qbee-agent/qbee-agent.mk b/package/qbee-agent/qbee-agent.mk index 30219eebdc..711c152031 100644 --- a/package/qbee-agent/qbee-agent.mk +++ b/package/qbee-agent/qbee-agent.mk @@ -5,12 +5,12 @@ ################################################################################ # keep QBEE_AGENT_COMMIT_ID in sync when updating -QBEE_AGENT_VERSION = 2024.09 +QBEE_AGENT_VERSION = 2024.19 QBEE_AGENT_SITE = $(call github,qbee-io,qbee-agent,$(QBEE_AGENT_VERSION)) QBEE_AGENT_LICENSE = Apache-2.0 QBEE_AGENT_LICENSE_FILES = LICENSE -QBEE_AGENT_COMMIT_ID = c30d43b8e64cfef960cee9475b58ae083e4ad246 +QBEE_AGENT_COMMIT_ID = 9d0ed1bc1bab18c75a73dbacc2026e86113c97aa QBEE_AGENT_GOMOD = go.qbee.io/agent -- 2.25.1 From jonhenrik at qbee.io Thu May 16 11:00:40 2024 From: jonhenrik at qbee.io (=?UTF-8?Q?Jon_Henrik_Bj=C3=B8rnstad?=) Date: Thu, 16 May 2024 13:00:40 +0200 Subject: [Buildroot] [PATCH 1/1] package/qbee-agent: new package In-Reply-To: <20240512120544.002e958a@windsurf> References: <20240305093839.3152030-1-jonhenrik@qbee.io> <20240305093839.3152030-2-jonhenrik@qbee.io> <20240512120544.002e958a@windsurf> Message-ID: Hi Thomas, Thank you very much for the feedback and reviewing my patch. As this patch was for an older version of the qbee-agent, I have today submitted a patch to bump the version. With kind regards, Jon Henrik Bj?rnstad On Sun, May 12, 2024 at 12:05?PM Thomas Petazzoni < thomas.petazzoni at bootlin.com> wrote: > Hello Jon, > > Thanks for your patch, and sorry for the long delay in getting back to > you. I have applied your patch, with some fixes (see below). > > On Tue, 5 Mar 2024 10:38:39 +0100 > Jon Henrik Bj?rnstad via buildroot wrote: > > > diff --git a/package/qbee-agent/Config.in b/package/qbee-agent/Config.in > > new file mode 100644 > > index 0000000000..02e35827ef > > --- /dev/null > > +++ b/package/qbee-agent/Config.in > > @@ -0,0 +1,17 @@ > > +config BR2_PACKAGE_QBEE_AGENT > > + bool "qbee-agent" > > + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS > > + select BR2_PACKAGE_IPTABLES # runtime > > + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # runtime > > + select BR2_PACKAGE_SHADOW # runtime > > + select BR2_PACKAGE_BASH # runtime > > When you select something, you need to replicate the "depends on" of > the thing you are selecting. So here: > > + depends on BR2_USE_MMU # bash > + depends on !BR2_STATIC_LIBS # shadow > + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 # shadow > > > + help > > + Qbee is a device management platform that comprise > > + of an open-source agent and a hosted SaaS backend. > > + This config installs pre-built static binaries made > > + with the official public signing key for qbee.io. The > > + binaries will work seamlessly with the qbee.io device > > + management backend. > > + > > + https://github.com/qbee-io/qbee-agent > > + https://qbee.io > > And you need to add a Config.in comment about those dependencies: > > +comment "qbee-agent needs a toolchain w/ headers >= 4.14, dynamic library" > + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS > + depends on BR2_USE_MMU > + depends on BR2_STATIC_LIBS || \ > + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 > > > diff --git a/package/qbee-agent/qbee-agent.hash > b/package/qbee-agent/qbee-agent.hash > > new file mode 100644 > > index 0000000000..1c6a361ff6 > > --- /dev/null > > +++ b/package/qbee-agent/qbee-agent.hash > > @@ -0,0 +1,3 @@ > > +# Locally calculated > > +sha256 > b1b5a6d4e18fbd8536d05616c632f10ef309d26036a19c5ce28d0635c45d8cab > qbee-agent-2024.09.tar.gz > > I had to update the hash and the filename, due to the recent changes in > the download infrastructure (not your fault, the changes were committed > very recently). > > > +sha256 > 02d07d96be99eb042b01ba650079a440ce26a78c5e0e1e8060c33a8c9e200404 LICENSE > > diff --git a/package/qbee-agent/qbee-agent.mk b/package/qbee-agent/ > qbee-agent.mk > > new file mode 100644 > > index 0000000000..66037195c1 > > --- /dev/null > > +++ b/package/qbee-agent/qbee-agent.mk > > @@ -0,0 +1,35 @@ > > > +################################################################################ > > +# > > +# qbee-agent package > > +# > > > +################################################################################ > > + > > +QBEE_AGENT_VERSION = 2024.09 > > Added a comment above this line, saying that QBEE_AGENT_COMMIT_ID > should be kept in sync. > > > +QBEE_AGENT_SITE = $(call > github,qbee-io,qbee-agent,$(QBEE_AGENT_VERSION)) > > +QBEE_AGENT_LICENSE = Apache-2.0 > > +QBEE_AGENT_LICENSE_FILES = LICENSE > > + > > +QBEE_AGENT_COMMIT_ID = c30d43b8e64cfef960cee9475b58ae083e4ad246 > > + > > +QBEE_AGENT_GOMOD = go.qbee.io/agent > > + > > +QBEE_AGENT_LDFLAGS = -s -w \ > > + -X $(QBEE_AGENT_GOMOD)/app.Version=$(QBEE_AGENT_VERSION) \ > > + -X $(QBEE_AGENT_GOMOD)/app.Commit=$(QBEE_AGENT_COMMIT_ID) > > + > > +define QBEE_AGENT_INSTALL_TARGET_CMDS > > + $(INSTALL) -m 0755 $(@D)/bin/qbee-agent > $(TARGET_DIR)/usr/bin/qbee-agent > > + $(INSTALL) -D -m 0600 $(@D)/package/share/ssl/ca.cert > $(TARGET_DIR)/etc/qbee/ppkeys/ca.cert > > +endef > > As suggested by Yann E. Morin in a previous iteration, I dropped the > installation of the binary from there, and turned this into a > post-install target hook. Indeed, the golang-package infrastructure > already takes care of installing the binary. > > Thanks a lot! > > Thomas > -- > Thomas Petazzoni, co-owner and CEO, Bootlin > Embedded Linux and Kernel engineering and training > https://bootlin.com > -------------- next part -------------- An HTML attachment was scrubbed... URL: From peter at korsgaard.com Thu May 16 11:02:28 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 13:02:28 +0200 Subject: [Buildroot] [PATCH 1/1] support/testing: add fwts runtime test In-Reply-To: <20240420132817.1352847-1-ju.o@free.fr> (Julien Olivain's message of "Sat, 20 Apr 2024 15:28:17 +0200") References: <20240420132817.1352847-1-ju.o@free.fr> Message-ID: <87ikzeow8r.fsf@dell.be.48ers.dk> >>>>> "Julien" == Julien Olivain writes: > Signed-off-by: Julien Olivain Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 16 11:02:37 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 13:02:37 +0200 Subject: [Buildroot] [PATCH 1/2] package/fwts: update _SITE url to use https In-Reply-To: <20240420143618.1809745-1-ju.o@free.fr> (Julien Olivain's message of "Sat, 20 Apr 2024 16:36:17 +0200") References: <20240420143618.1809745-1-ju.o@free.fr> Message-ID: <87eda2ow8i.fsf@dell.be.48ers.dk> >>>>> "Julien" == Julien Olivain writes: > The http URL redirects to https. This commit updates this URL to > directly use https. > Signed-off-by: Julien Olivain Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 16 11:08:34 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 13:08:34 +0200 Subject: [Buildroot] [PATCH] package/linux-pam: bump to version 1.6.1 In-Reply-To: <20240426071304.2564147-1-sairon@sairon.cz> ("Jan =?utf-8?B?xIxlcm3DoWsiJ3M=?= message of "Fri, 26 Apr 2024 09:13:03 +0200") References: <20240426071304.2564147-1-sairon@sairon.cz> Message-ID: <87a5kqovyl.fsf@dell.be.48ers.dk> >>>>> "Jan" == Jan ?erm?k writes: > Bump to latest version, fixing couple of bugs. Remove patch already > included in this release. > https://github.com/linux-pam/linux-pam/releases/tag/v1.6.1 > Signed-off-by: Jan ?erm?k Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 16 09:27:46 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 11:27:46 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/coreutils: drop gmp optional dependency Message-ID: <20240516110928.2449E8740B@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=f2eb2273170e9d12e44fd56c707e54ddc245b949 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x libgmp is included in coreutils (through bootstrap.conf) since bump to version 9.0 in commit 2ee43bad85693d1c96e14f5b39ccb13a8982f50a and https://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=13046444888a7e96f48d28fdd5a6ffe03d4ab036: configure: WARNING: unrecognized options: --disable-gtk-doc, --disable-gtk-doc-html, --disable-doc, --disable-docs, --disable-documentation, --with-xmlto, --with-fop, --enable-ipv6, --enable-static, --enable-shared, --without-gmp Fixes: 2ee43bad85693d1c96e14f5b39ccb13a8982f50a Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni (cherry picked from commit 16463a00affa0ba4814e583bcd544174528f371e) Signed-off-by: Peter Korsgaard --- package/coreutils/coreutils.mk | 6 ------ 1 file changed, 6 deletions(-) diff --git a/package/coreutils/coreutils.mk b/package/coreutils/coreutils.mk index e9cb7b67cb..846d4fa567 100644 --- a/package/coreutils/coreutils.mk +++ b/package/coreutils/coreutils.mk @@ -75,12 +75,6 @@ ifeq ($(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y) COREUTILS_CONF_OPTS += --with-libintl-prefix=$(STAGING_DIR)/usr endif -ifeq ($(BR2_PACKAGE_GMP),y) -COREUTILS_DEPENDENCIES += gmp -else -COREUTILS_CONF_OPTS += --without-gmp -endif - ifeq ($(BR2_PACKAGE_LIBCAP),y) COREUTILS_DEPENDENCIES += libcap else From peter at korsgaard.com Thu May 16 09:35:30 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 11:35:30 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] support/testing: add iperf runtime test Message-ID: <20240516110928.30D83873D4@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=1f383f120e5f32c597d767ed202bc10a88f99898 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: Julien Olivain Signed-off-by: Thomas Petazzoni (cherry picked from commit 6317f6c9a4107d3409530b653c5900bff17ffb6e) Signed-off-by: Peter Korsgaard --- DEVELOPERS | 1 + support/testing/tests/package/test_iperf.py | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index a2a2c56a13..cab7258cb1 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -1789,6 +1789,7 @@ F: support/testing/tests/package/test_gzip.py F: support/testing/tests/package/test_highway.py F: support/testing/tests/package/test_hwloc.py F: support/testing/tests/package/test_iozone.py +F: support/testing/tests/package/test_iperf.py F: support/testing/tests/package/test_iperf3.py F: support/testing/tests/package/test_iptables.py F: support/testing/tests/package/test_jailhouse.py diff --git a/support/testing/tests/package/test_iperf.py b/support/testing/tests/package/test_iperf.py new file mode 100644 index 0000000000..31f04d9896 --- /dev/null +++ b/support/testing/tests/package/test_iperf.py @@ -0,0 +1,23 @@ +import os + +import infra.basetest + + +class TestIperf(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_IPERF=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + self.assertRunOk("iperf --version") + self.assertRunOk("iperf -s -D") + self.assertRunOk("iperf -c 127.0.0.1 -t 3") From peter at korsgaard.com Thu May 16 09:41:54 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 11:41:54 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/fwts: update _SITE url to use https Message-ID: <20240516110928.4CC948740E@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=48275e431f5f3ba3ef1c1290d3b28d5c31821172 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x The http URL redirects to https. This commit updates this URL to directly use https. Signed-off-by: Julien Olivain Signed-off-by: Thomas Petazzoni (cherry picked from commit 2aa3a23bbe755ef73af7dfbb65dd8ec60c8c1865) Signed-off-by: Peter Korsgaard --- package/fwts/fwts.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/fwts/fwts.mk b/package/fwts/fwts.mk index f06609777d..a3f91ee495 100644 --- a/package/fwts/fwts.mk +++ b/package/fwts/fwts.mk @@ -6,7 +6,7 @@ FWTS_VERSION = 23.07.00 FWTS_SOURCE = fwts-V$(FWTS_VERSION).tar.gz -FWTS_SITE = http://fwts.ubuntu.com/release +FWTS_SITE = https://fwts.ubuntu.com/release FWTS_STRIP_COMPONENTS = 0 FWTS_LICENSE = GPL-2.0, LGPL-2.1, Custom FWTS_LICENSE_FILES = debian/copyright From peter at korsgaard.com Thu May 16 09:41:28 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 11:41:28 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] support/testing: add fwts runtime test Message-ID: <20240516110928.3F19E8740D@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=2b8ca3cfbeb221a787c60d705f1670be8da2e539 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: Julien Olivain Signed-off-by: Thomas Petazzoni (cherry picked from commit 7c1faf997f868586a40a9cb6f03166d85a67b8f8) Signed-off-by: Peter Korsgaard --- DEVELOPERS | 1 + support/testing/tests/package/test_fwts.py | 67 ++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index cab7258cb1..8f58b47fe0 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -1777,6 +1777,7 @@ F: support/testing/tests/package/test_file/ F: support/testing/tests/package/test_fluidsynth.py F: support/testing/tests/package/test_fluidsynth/ F: support/testing/tests/package/test_fping.py +F: support/testing/tests/package/test_fwts.py F: support/testing/tests/package/test_gawk.py F: support/testing/tests/package/test_ghostscript.py F: support/testing/tests/package/test_ghostscript/ diff --git a/support/testing/tests/package/test_fwts.py b/support/testing/tests/package/test_fwts.py new file mode 100644 index 0000000000..ef792136c2 --- /dev/null +++ b/support/testing/tests/package/test_fwts.py @@ -0,0 +1,67 @@ +import os + +import infra.basetest + + +class TestFwts(infra.basetest.BRTest): + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_4=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_TARGET_ROOTFS_EXT2_SIZE="128M" + BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/aarch64-sbsa/assemble-flash-images support/scripts/genimage.sh" + BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/qemu/aarch64-sbsa/genimage.cfg" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.28" + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y + BR2_TARGET_EDK2=y + BR2_TARGET_EDK2_PLATFORM_QEMU_SBSA=y + BR2_TARGET_GRUB2=y + BR2_TARGET_GRUB2_ARM64_EFI=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.9" + BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="qemu_sbsa" + BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y + BR2_PACKAGE_FWTS=y + BR2_PACKAGE_FWTS_EFI_RUNTIME_MODULE=y + BR2_PACKAGE_HOST_GENIMAGE=y + BR2_PACKAGE_HOST_DOSFSTOOLS=y + BR2_PACKAGE_HOST_MTOOLS=y + """ + + def test_run(self): + hda = os.path.join(self.builddir, "images", "disk.img") + flash0 = os.path.join(self.builddir, "images", "SBSA_FLASH0.fd") + flash1 = os.path.join(self.builddir, "images", "SBSA_FLASH1.fd") + self.emulator.boot(arch="aarch64", + options=["-M", "sbsa-ref", + "-cpu", "cortex-a57", + "-m", "512M", + "-pflash", flash0, + "-pflash", flash1, + "-hda", hda]) + self.emulator.login() + + # Check the program can execute. + self.assertRunOk("fwts --version") + + # We run a simple UEFI runtime service variable interface test + # suite. Those tests are using the fwts efi_runtime kernel + # module. + self.assertRunOk("fwts -q uefirtvariable", timeout=30) + + # The previous fwts invocation is expected to have created a + # "results.log" report. We check the file exists and contains + # a known header string. + expected_str = "Results generated by fwts:" + cmd = f"grep -F '{expected_str}' results.log" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + self.assertTrue(out[0].startswith(expected_str)) From peter at korsgaard.com Thu May 16 11:07:27 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 13:07:27 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] package/linux-pam: bump to version 1.6.1 Message-ID: <20240516110928.5BE258740B@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=4415daf635e56f55993eafdd196864ebab5b6d3c branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Bump to latest version, fixing couple of bugs. Remove patch already included in this release. https://github.com/linux-pam/linux-pam/releases/tag/v1.6.1 Signed-off-by: Jan ??erm??k Signed-off-by: Thomas Petazzoni (cherry picked from commit 0d394c39b8f26ba6e65771cd4afdcc4fac0ed0e8) Signed-off-by: Peter Korsgaard --- .../0001-pam_namespace-include-stdint-h.patch | 42 ---------------------- package/linux-pam/linux-pam.hash | 4 +-- package/linux-pam/linux-pam.mk | 2 +- 3 files changed, 3 insertions(+), 45 deletions(-) diff --git a/package/linux-pam/0001-pam_namespace-include-stdint-h.patch b/package/linux-pam/0001-pam_namespace-include-stdint-h.patch deleted file mode 100644 index 5eda619505..0000000000 --- a/package/linux-pam/0001-pam_namespace-include-stdint-h.patch +++ /dev/null @@ -1,42 +0,0 @@ -From cc9d40b7cdbd3e15ccaa324a0dda1680ef9dea13 Mon Sep 17 00:00:00 2001 -From: Jacob Heider -Date: Wed, 17 Jan 2024 11:49:26 -0500 -Subject: [PATCH] pam_namespace: include stdint.h - -pam_namespace.c makes use of SIZE_MAX but doesn't include stdint.h, -resulting in the following build failures on 1.6.0: - - pam_namespace.c: In function 'process_line': - pam_namespace.c:649:41: error: 'SIZE_MAX' undeclared (first use in this function) - 649 | if (count > UINT_MAX || count > SIZE_MAX / sizeof(uid_t)) { - | ^~~~~~~~ - pam_namespace.c:41:1: note: 'SIZE_MAX' is defined in header ''; did you forget to '#include '? - 40 | #include "argv_parse.h" - +++ |+#include - 41 | - pam_namespace.c:649:41: note: each undeclared identifier is reported only once for each function it appears in - 649 | if (count > UINT_MAX || count > SIZE_MAX / sizeof(uid_t)) { - | ^~~~~~~~ - -Fixes: v1.6.0~100 ("pam_namespace: validate amount of uids in config") -Resolves: https://github.com/linux-pam/linux-pam/issues/733 - -Upstream: https://github.com/linux-pam/linux-pam/commit/cc9d40b7cdbd3e15ccaa324a0dda1680ef9dea13 -Signed-off-by: Fabrice Fontaine ---- - modules/pam_namespace/pam_namespace.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/modules/pam_namespace/pam_namespace.c b/modules/pam_namespace/pam_namespace.c -index f72d67189..b16731c22 100644 ---- a/modules/pam_namespace/pam_namespace.c -+++ b/modules/pam_namespace/pam_namespace.c -@@ -34,6 +34,8 @@ - - #define _ATFILE_SOURCE - -+#include "config.h" -+#include - #include "pam_cc_compat.h" - #include "pam_inline.h" - #include "pam_namespace.h" diff --git a/package/linux-pam/linux-pam.hash b/package/linux-pam/linux-pam.hash index cd882715cb..353613e6e6 100644 --- a/package/linux-pam/linux-pam.hash +++ b/package/linux-pam/linux-pam.hash @@ -1,6 +1,6 @@ # Locally computed hashes after checking signature at -# https://github.com/linux-pam/linux-pam/releases/download/v1.6.0/Linux-PAM-1.6.0.tar.xz.asc +# https://github.com/linux-pam/linux-pam/releases/download/v1.6.1/Linux-PAM-1.6.1.tar.xz.asc # signed with the key 8C6BFD92EE0F42EDF91A6A736D1A7F052E5924BB -sha256 fff4a34e5bbee77e2e8f1992f27631e2329bcbf8a0563ddeb5c3389b4e3169ad Linux-PAM-1.6.0.tar.xz +sha256 f8923c740159052d719dbfc2a2f81942d68dd34fcaf61c706a02c9b80feeef8e Linux-PAM-1.6.1.tar.xz # Locally computed sha256 133d98e7a2ab3ffd330b4debb0bfc10fea21e4b2b5a5b09de2e924293be5ff08 Copyright diff --git a/package/linux-pam/linux-pam.mk b/package/linux-pam/linux-pam.mk index 89a46e81df..a205d67c54 100644 --- a/package/linux-pam/linux-pam.mk +++ b/package/linux-pam/linux-pam.mk @@ -4,7 +4,7 @@ # ################################################################################ -LINUX_PAM_VERSION = 1.6.0 +LINUX_PAM_VERSION = 1.6.1 LINUX_PAM_SOURCE = Linux-PAM-$(LINUX_PAM_VERSION).tar.xz LINUX_PAM_SITE = https://github.com/linux-pam/linux-pam/releases/download/v$(LINUX_PAM_VERSION) LINUX_PAM_INSTALL_STAGING = YES From Alex.Michel at wiedemann-group.com Thu May 16 11:59:11 2024 From: Alex.Michel at wiedemann-group.com (Michel Alex) Date: Thu, 16 May 2024 11:59:11 +0000 Subject: [Buildroot] [PATCH 1/1] package/libzenoh-pico: bump version to 0.11.0.3 Message-ID: https://github.com/eclipse-zenoh/zenoh-pico/releases Signed-off-by: Alex Michel --- package/libzenoh-pico/libzenoh-pico.hash | 2 +- package/libzenoh-pico/libzenoh-pico.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/libzenoh-pico/libzenoh-pico.hash b/package/libzenoh-pico/libzenoh-pico.hash index 945d0f9aaf..9ea45969aa 100644 --- a/package/libzenoh-pico/libzenoh-pico.hash +++ b/package/libzenoh-pico/libzenoh-pico.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 c259da44aa919919d1129b6a46edb05e2f5f2bf2818f73c27f515e443da9fc83 libzenoh-pico-0.11.0.1.tar.gz +sha256 a5bc5cae6fd4ade3d69d8a2ed0aef89f4c8f752f79d74b7462f5bb3437680b72 libzenoh-pico-0.11.0.3.tar.gz sha256 d386df32cf327bbb25abe894277d3d7e0f447bafc59f4ad362615b0136f30db5 LICENSE diff --git a/package/libzenoh-pico/libzenoh-pico.mk b/package/libzenoh-pico/libzenoh-pico.mk index 86204de14f..9163ba30ad 100644 --- a/package/libzenoh-pico/libzenoh-pico.mk +++ b/package/libzenoh-pico/libzenoh-pico.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBZENOH_PICO_VERSION = 0.11.0.1 +LIBZENOH_PICO_VERSION = 0.11.0.3 LIBZENOH_PICO_SITE = $(call github,eclipse-zenoh,zenoh-pico,$(LIBZENOH_PICO_VERSION)) LIBZENOH_PICO_LICENSE = Apache-2.0 or EPL-2.0 LIBZENOH_PICO_LICENSE_FILES = LICENSE -- 2.34.1 From peter at korsgaard.com Thu May 16 12:22:56 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 14:22:56 +0200 Subject: [Buildroot] [PATCH 1/1] DEVELOPERS: add myself for Armadeus boards In-Reply-To: <20240418133035.30749-1-sebastien.szymanski@armadeus.com> (=?utf-8?Q?=22S=C3=A9bastien?= Szymanski"'s message of "Thu, 18 Apr 2024 15:30:35 +0200") References: <20240418133035.30749-1-sebastien.szymanski@armadeus.com> Message-ID: <875xveosin.fsf@dell.be.48ers.dk> >>>>> "S?bastien" == S?bastien Szymanski writes: > Signed-off-by: S?bastien Szymanski Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 16 12:24:48 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 14:24:48 +0200 Subject: [Buildroot] [PATCH] DEVELOPERS: remove Sebastian Weyer In-Reply-To: <20240501211300.1590881-1-romain.naour@smile.fr> (Romain Naour's message of "Wed, 1 May 2024 23:12:43 +0200") References: <20240501211300.1590881-1-romain.naour@smile.fr> Message-ID: <871q62osfj.fsf@dell.be.48ers.dk> >>>>> "Romain" == Romain Naour writes: > Sebastian email address at Smile is bouncing, so drop it > from the DEVELOPERS file. > Signed-off-by: Romain Naour Committed to 2024.02.x, thanks. -- Bye, Peter Korsgaard From peter at korsgaard.com Thu May 16 12:24:31 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 14:24:31 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] DEVELOPERS: remove Sebastian Weyer Message-ID: <20240516122509.B397687415@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=99eafd1cc66fabeb8b5e7c12cfb97b7c6b9781a9 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Sebastian email address at Smile is bouncing, so drop it from the DEVELOPERS file. Signed-off-by: Romain Naour Signed-off-by: Yann E. MORIN (cherry picked from commit 7b973daac3f24ffce0246c5bbf80541499d86189) Signed-off-by: Peter Korsgaard --- DEVELOPERS | 8 -------- 1 file changed, 8 deletions(-) diff --git a/DEVELOPERS b/DEVELOPERS index 88c266293b..6a1ec436ff 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2752,14 +2752,6 @@ F: support/misc/toolchainfile.cmake.in N: Sam Voss F: package/ripgrep/ -N: Sebastian Weyer -F: package/amlogic-boot-fip/ -F: package/nushell/ -F: package/rust-bindgen/ -F: package/spirv-headers/ -F: support/testing/tests/package/sample_nu.nu -F: support/testing/tests/package/test_nu.py - N: S??bastien Szymanski F: board/armadeus/ F: configs/armadeus* From peter at korsgaard.com Thu May 16 12:22:40 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Thu, 16 May 2024 14:22:40 +0200 Subject: [Buildroot] [git commit branch/2024.02.x] DEVELOPERS: add myself for Armadeus boards Message-ID: <20240516122509.A762A87414@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=27e7c199cf14804e038c5b550e050c76ec27ac9b branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.02.x Signed-off-by: S??bastien Szymanski Signed-off-by: Romain Naour (cherry picked from commit 74c0cf2152415ab99c93d4d03acd7bfec39fd511) Signed-off-by: Peter Korsgaard --- DEVELOPERS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index 8f58b47fe0..88c266293b 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2761,6 +2761,8 @@ F: support/testing/tests/package/sample_nu.nu F: support/testing/tests/package/test_nu.py N: S??bastien Szymanski +F: board/armadeus/ +F: configs/armadeus* F: package/mmc-utils/ F: package/python-flask-jsonrpc/ F: package/python-flask-login/ From dario.binacchi at amarulasolutions.com Thu May 16 15:52:12 2024 From: dario.binacchi at amarulasolutions.com (Dario Binacchi) Date: Thu, 16 May 2024 17:52:12 +0200 Subject: [Buildroot] [PATCH 1/1] configs/qemu_sparc_ss10_defconfig: fix linux hash Message-ID: <20240516155212.975737-1-dario.binacchi@amarulasolutions.com> The patch fixes "make legal-info" for qemu_sparc_ss10 configuration: >>> host-gcc-initial 13.2.0 Collecting legal info COPYING: OK (sha256: 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c) COPYING3: OK (sha256: 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903) COPYING.LIB: OK (sha256: a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861) COPYING3.LIB: OK (sha256: a853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c) ERROR: No hash found for linux-6.8.6.tar.xz Signed-off-by: Dario Binacchi --- .../qemu/sparc-ss10/patches/linux-headers/linux-headers.hash | 1 + board/qemu/sparc-ss10/patches/linux/linux.hash | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) create mode 120000 board/qemu/sparc-ss10/patches/linux-headers/linux-headers.hash diff --git a/board/qemu/sparc-ss10/patches/linux-headers/linux-headers.hash b/board/qemu/sparc-ss10/patches/linux-headers/linux-headers.hash new file mode 120000 index 000000000000..5808d92afe89 --- /dev/null +++ b/board/qemu/sparc-ss10/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/qemu/sparc-ss10/patches/linux/linux.hash b/board/qemu/sparc-ss10/patches/linux/linux.hash index 762f8575e7e7..9d0d5466ca17 100644 --- a/board/qemu/sparc-ss10/patches/linux/linux.hash +++ b/board/qemu/sparc-ss10/patches/linux/linux.hash @@ -1,2 +1,2 @@ -# From https://cdn.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc -sha256 1973e6fc3e8617fc8b0e24b33180449f1a39fa6a607f8dba61cf91b4c5bba466 linux-6.8.6.tar.gz +# sha256 locally computed +sha256 9e723232d603ab45ebf043c34714c48f277ab195c29abcb8472f2a4c3a5a1995 linux-6.8.6.tar.xz -- 2.43.0 From bonet at grenoble.cnrs.fr Thu May 16 15:56:41 2024 From: bonet at grenoble.cnrs.fr (Edgar Bonet) Date: Thu, 16 May 2024 17:56:41 +0200 Subject: [Buildroot] Support external toolchains based on gcc 14 Message-ID: Hello all! Last July, right before support for gcc 13 was added for buildroot's internal toolchain in 3009095ba8 (package/gcc: add support for gcc 13), the support was added for the external toolchain in dfbd1aae23 (toolchain/toolchain-external/toolchain-external-custom: add gcc 13 version selection). Last week, support for gcc 14 has been added for the internal toolchain in 5eb0203cb0 (package/gcc: add version 14.x), but this is still lacking for the external toolchain. Is this an oversight? Should I just wait? Should I instead submit a patch equivalent to dfbd1aae23 for gcc 14? Regards, Edgar. From fontaine.fabrice at gmail.com Thu May 16 16:31:44 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Thu, 16 May 2024 18:31:44 +0200 Subject: [Buildroot] [PATCH 1/1] package/putty: security bump to version 0.81 Message-ID: <20240516163144.640424-1-fontaine.fabrice@gmail.com> The only change between 0.80 and 0.81 is one security fix: - ECDSA signatures using 521-bit keys (the NIST P521 curve, otherwise known as ecdsa-sha2-nistp521) were generated with biased random numbers. This permits an attacker in possession of a few dozen signatures to RECOVER THE PRIVATE KEY. Any 521-bit ECDSA private key that PuTTY or Pageant has used to sign anything should be considered compromised. This vulnerability has the identifier CVE-2024-31497. Update hash of LICENCE file (update in year with https://git.tartarus.org/?p=simon/putty.git;a=commit;h=f2f28ac0386eebbd45ea605818d31d62d219f589) https://lists.tartarus.org/pipermail/putty-announce/2024/000038.html Signed-off-by: Fabrice Fontaine --- package/putty/putty.hash | 8 ++++---- package/putty/putty.mk | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package/putty/putty.hash b/package/putty/putty.hash index 84569a31e5..30b749c47b 100644 --- a/package/putty/putty.hash +++ b/package/putty/putty.hash @@ -1,7 +1,7 @@ # Hashes from: http://the.earth.li/~sgtatham/putty/0.80/{sha1,sha256,sha512}sums -sha1 9c4a96f63ee3e927472191c935cc89228693c03a putty-0.80.tar.gz -sha256 2013c83a721b1753529e9090f7c3830e8fe4c80a070ccce764539badb3f67081 putty-0.80.tar.gz -sha512 c8a6b6fa54ecd8bcf4ec274fef51343dd9996e6458b250b5555c4dc88ded25e87f97277da482c29858510e65635112d541f559ab683635bd950572d850129f90 putty-0.80.tar.gz +sha1 8c88d871855d3730a0473bb1cb1006654e73b680 putty-0.81.tar.gz +sha256 cb8b00a94f453494e345a3df281d7a3ed26bb0dd7e36264f145206f8857639fe putty-0.81.tar.gz +sha512 d86f2fd0e126b18275d58cf64334b3b27c450899a1c2be2502de9faa2ef58f7fc8efc5d45f25c8395623f1e21917aa02407343bb2fee44c4c00b9f81267d5ecd putty-0.81.tar.gz # Locally calculated -sha256 7ede37f344ee03436c155a375ecb6cdb42a77105baa6e7804bf43260dc4a0c54 LICENCE +sha256 e0410341c5e45f7479c28d79298edbf615589cdfc115b2d69683d4ccd0425ce0 LICENCE diff --git a/package/putty/putty.mk b/package/putty/putty.mk index bff6e78074..617518e647 100644 --- a/package/putty/putty.mk +++ b/package/putty/putty.mk @@ -4,7 +4,7 @@ # ################################################################################ -PUTTY_VERSION = 0.80 +PUTTY_VERSION = 0.81 PUTTY_SITE = http://the.earth.li/~sgtatham/putty/$(PUTTY_VERSION) PUTTY_LICENSE = MIT PUTTY_LICENSE_FILES = LICENCE -- 2.43.0 From fontaine.fabrice at gmail.com Thu May 16 16:32:45 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Thu, 16 May 2024 18:32:45 +0200 Subject: [Buildroot] [PATCH 1/1] package/frotz: fix build with gcc 14 Message-ID: <20240516163245.641115-1-fontaine.fabrice@gmail.com> Drop -std=c99 from CFLAGS to avoid the following build failure with gcc 14: fastmem.c: In function 'z_restore': fastmem.c:842:36: error: implicit declaration of function 'strdup'; did you mean 'strcmp'? [-Wimplicit-function-declaration] 842 | f_setup.aux_name = strdup(default_name); | ^~~~~~ | strcmp Fixes: - http://autobuild.buildroot.org/results/df3b3b98265ec3a75578614746b2d1426c90e125 Signed-off-by: Fabrice Fontaine --- package/frotz/frotz.mk | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package/frotz/frotz.mk b/package/frotz/frotz.mk index 5af235137c..807c800be9 100644 --- a/package/frotz/frotz.mk +++ b/package/frotz/frotz.mk @@ -20,8 +20,7 @@ endif define FROTZ_BUILD_CMDS $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) PREFIX=/usr CONFIG_DIR=/etc \ - SOUND_TYPE=none CURSES="$(FROTZ_CURSES)" USE_UTF8=$(FROTZ_UTF8) \ - CFLAGS="$(TARGET_CFLAGS) -std=c99" + SOUND_TYPE=none CURSES="$(FROTZ_CURSES)" USE_UTF8=$(FROTZ_UTF8) endef define FROTZ_INSTALL_TARGET_CMDS -- 2.43.0 From thomas at devoogdt.com Thu May 16 17:33:19 2024 From: thomas at devoogdt.com (Thomas Devoogdt) Date: Thu, 16 May 2024 19:33:19 +0200 Subject: [Buildroot] [PATCH 1/1] package/syslog-ng: fix libcurl build without C++ Message-ID: Hi Fabrice, All, I saw a very similar issue when using libressl. https://github.com/syslog-ng/syslog-ng/issues/4923 Perhaps, the usage of libopenssl should also be added to the condition. Kr, Thomas -------------- next part -------------- An HTML attachment was scrubbed... URL: From fontaine.fabrice at gmail.com Thu May 16 18:13:56 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Thu, 16 May 2024 20:13:56 +0200 Subject: [Buildroot] [PATCH 1/1] package/syslog-ng: fix libcurl build without C++ In-Reply-To: References: Message-ID: Hello Thomas, Le jeu. 16 mai 2024 ? 19:33, Thomas Devoogdt a ?crit : > > Hi Fabrice, All, > > > I saw a very similar issue when using libressl. > https://github.com/syslog-ng/syslog-ng/issues/4923 > > Perhaps, the usage of libopenssl should also be added to the condition. It is a different issue. I think it would be better to fix the build with libressl rather than adding a libopenssl condition. I will look into it when I have some free time. > > > Kr, > > Thomas Best Regards, Fabrice From huth at tuxfamily.org Thu May 16 19:25:58 2024 From: huth at tuxfamily.org (Thomas Huth) Date: Thu, 16 May 2024 21:25:58 +0200 Subject: [Buildroot] [PATCH 1/1] package/frotz: fix build with gcc 14 In-Reply-To: <20240516163245.641115-1-fontaine.fabrice@gmail.com> References: <20240516163245.641115-1-fontaine.fabrice@gmail.com> Message-ID: <20240516212558.035e6aed@fedora> Am Thu, 16 May 2024 18:32:45 +0200 schrieb Fabrice Fontaine : > Drop -std=c99 from CFLAGS to avoid the following build failure with gcc > 14: > > fastmem.c: In function 'z_restore': > fastmem.c:842:36: error: implicit declaration of function 'strdup'; did you mean 'strcmp'? [-Wimplicit-function-declaration] > 842 | f_setup.aux_name = strdup(default_name); > | ^~~~~~ > | strcmp I'm pretty sure there was originally was a reason for using -std=c99 here ... could we maybe use -std=gnu99 instead of removing it? Thomas From giulio.benetti at benettiengineering.com Thu May 16 19:33:07 2024 From: giulio.benetti at benettiengineering.com (Giulio Benetti) Date: Thu, 16 May 2024 21:33:07 +0200 Subject: [Buildroot] [PATCH] package/harfbuzz: bump to version 8.5.0 Message-ID: <20240516193307.465413-1-giulio.benetti@benettiengineering.com> Signed-off-by: Giulio Benetti --- package/harfbuzz/harfbuzz.hash | 2 +- package/harfbuzz/harfbuzz.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/harfbuzz/harfbuzz.hash b/package/harfbuzz/harfbuzz.hash index 1ea54e8ee9..d5fc1ae096 100644 --- a/package/harfbuzz/harfbuzz.hash +++ b/package/harfbuzz/harfbuzz.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 af4ea73e25ab748c8c063b78c2f88e48833db9b2ac369e29bd115702e789755e harfbuzz-8.4.0.tar.xz +sha256 77e4f7f98f3d86bf8788b53e6832fb96279956e1c3961988ea3d4b7ca41ddc27 harfbuzz-8.5.0.tar.xz sha256 ba8f810f2455c2f08e2d56bb49b72f37fcf68f1f4fade38977cfd7372050ad64 COPYING diff --git a/package/harfbuzz/harfbuzz.mk b/package/harfbuzz/harfbuzz.mk index 848fac4dd6..3beac5e836 100644 --- a/package/harfbuzz/harfbuzz.mk +++ b/package/harfbuzz/harfbuzz.mk @@ -4,7 +4,7 @@ # ################################################################################ -HARFBUZZ_VERSION = 8.4.0 +HARFBUZZ_VERSION = 8.5.0 HARFBUZZ_SITE = https://github.com/harfbuzz/harfbuzz/releases/download/$(HARFBUZZ_VERSION) HARFBUZZ_SOURCE = harfbuzz-$(HARFBUZZ_VERSION).tar.xz HARFBUZZ_LICENSE = MIT, ISC (ucdn library) -- 2.34.1 From marc.murphy at sancloud.com Thu May 16 20:18:22 2024 From: marc.murphy at sancloud.com (Marc Murphy) Date: Thu, 16 May 2024 20:18:22 +0000 Subject: [Buildroot] [PATCH 1/1] package/ti-k3-r5-loader: support patching in same way as u-boot Message-ID: >From ed5da96fa289155a362e6415de39a461e18935e8 Mon Sep 17 00:00:00 2001 From: Marc Murphy Date: Thu, 16 May 2024 17:09:14 +0100 Subject: [PATCH 1/1] package/ti-k3-r5-loader: support patching in same way as u-boot Signed-off-by: Marc Murphy --- boot/ti-k3-r5-loader/Config.in | 12 ++++++++++++ boot/ti-k3-r5-loader/ti-k3-r5-loader.mk | 19 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/boot/ti-k3-r5-loader/Config.in b/boot/ti-k3-r5-loader/Config.in index c276528fad..0e26a15369 100644 --- a/boot/ti-k3-r5-loader/Config.in +++ b/boot/ti-k3-r5-loader/Config.in @@ -69,6 +69,18 @@ config BR2_TARGET_TI_K3_R5_LOADER_VERSION if BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_GIT || \ BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_HG || \ BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_SVN + +config BR2_TARGET_TI_K3_R5_LOADER_PATCH + string "Custom U-Boot patches" + default "" + help + A space-separated list of patches to apply to U-Boot. + Each patch can be described as an URL, a local file path, + or a directory. In the case of a directory, all files + matching *.patch in the directory will be applied. + + Most users may leave this empty + choice prompt "U-Boot Configuration" default BR2_TARGET_TI_K3_R5_LOADER_USE_DEFCONFIG diff --git a/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk b/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk index 98a6d473f1..b45f30b4b0 100644 --- a/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk +++ b/boot/ti-k3-r5-loader/ti-k3-r5-loader.mk @@ -60,6 +60,25 @@ TI_K3_R5_LOADER_KCONFIG_DEPENDENCIES = \ $(BR2_BISON_HOST_DEPENDENCY) \ $(BR2_FLEX_HOST_DEPENDENCY) +# Analogous code exists in linux/linux.mk. Basically, the generic +# package infrastructure handles downloading and applying remote +# patches. Local patches are handled depending on whether they are +# directories or files. +TI_K3_R5_LOADER_PATCHES = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_PATCH)) +TI_K3_R5_LOADER_PATCH = $(filter ftp://% http://% https://%,$(TI_K3_R5_LOADER_PATCHES)) + +define TI_K3_R5_LOADER_APPLY_LOCAL_PATCHES + for p in $(filter-out ftp://% http://% https://%,$(TI_K3_R5_LOADER_PATCHES)) ; do \ + if test -d $$p ; then \ + $(APPLY_PATCHES) $(@D) $$p \*.patch || exit 1 ; \ + else \ + $(APPLY_PATCHES) $(@D) `dirname $$p` `basename $$p` || exit 1; \ + fi \ + done +endef + +TI_K3_R5_LOADER_POST_PATCH_HOOKS += TI_K3_R5_LOADER_APPLY_LOCAL_PATCHES + ifeq ($(BR2_TARGET_TI_K3_R5_LOADER_USE_DEFCONFIG),y) TI_K3_R5_LOADER_KCONFIG_DEFCONFIG = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_BOARD_DEFCONFIG))_defconfig else ifeq ($(BR2_TARGET_TI_K3_R5_LOADER_USE_CUSTOM_CONFIG),y) -- 2.25.1 From fontaine.fabrice at gmail.com Thu May 16 20:38:02 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Thu, 16 May 2024 22:38:02 +0200 Subject: [Buildroot] [PATCH 1/1] package/frotz: fix build with gcc 14 In-Reply-To: <20240516212558.035e6aed@fedora> References: <20240516163245.641115-1-fontaine.fabrice@gmail.com> <20240516212558.035e6aed@fedora> Message-ID: Le jeu. 16 mai 2024 ? 21:26, Thomas Huth a ?crit : > > Am Thu, 16 May 2024 18:32:45 +0200 > schrieb Fabrice Fontaine : > > > Drop -std=c99 from CFLAGS to avoid the following build failure with gcc > > 14: > > > > fastmem.c: In function 'z_restore': > > fastmem.c:842:36: error: implicit declaration of function 'strdup'; did you mean 'strcmp'? [-Wimplicit-function-declaration] > > 842 | f_setup.aux_name = strdup(default_name); > > | ^~~~~~ > > | strcmp > > I'm pretty sure there was originally was a reason for using -std=c99 here > ... could we maybe use -std=gnu99 instead of removing it? Sure, I'll let you test it and send a v2 ;-) > > Thomas Best Regards, Fabrice From bugzilla at busybox.net Fri May 17 03:31:37 2024 From: bugzilla at busybox.net (bugzilla at busybox.net) Date: Fri, 17 May 2024 03:31:37 +0000 Subject: [Buildroot] [Bug 16078] New: ClamAV: FD_PASSING test fails when it should not. Message-ID: https://bugs.busybox.net/show_bug.cgi?id=16078 Bug ID: 16078 Summary: ClamAV: FD_PASSING test fails when it should not. Product: buildroot Version: 2024.02 Hardware: PC OS: Linux Status: NEW Severity: normal Priority: P5 Component: Other Assignee: unassigned at buildroot.uclibc.org Reporter: craig.anderson at instrumental.com CC: buildroot at uclibc.org Target Milestone: --- In ClamAV, there is a CMake test for whether or not the system supports FD_PASSING. In the file CheckFDPassing.cmake, on line 77: if("${test_compile_result}" AND ("${test_run_result}" EQUAL 0)) This fails on: - Host running Ubuntu 22.04 on a late model Intel PC (x86-64). - Target is the same as the host. because $test_run_result is "ON", not 0. $test_run_result is 0 when ClamAV is compiled on the same build machine, but outside of Buildroot. My workaround is to change the line to: if("${test_compile_result}" AND (("${test_run_result}" STREQUAL "ON") OR (("${test_run_result}" EQUAL 0)))) which just accept "ON" as passing. -- You are receiving this mail because: You are on the CC list for the bug. From thomas.petazzoni at bootlin.com Fri May 17 04:10:36 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Fri, 17 May 2024 04:10:36 -0000 Subject: [Buildroot] [autobuild.buildroot.net] Daily results for 2024-05-16 Message-ID: Hello, Autobuild statistics for 2024-05-16 =================================== branch | OK | NOK | TIM | TOT | 2024.02.x | 12 | 3 | 1 | 16 | master | 42 | 60 | 1 | 103 | Classification of failures by reason for master ----------------------------------------------- ibm-sw-tpm2-5452af422edeff7... | 5 fail2ban-1.0.2 | 4 ffmpeg-6.1.1 | 3 libcamera-apps-1.2.1 | 3 libressl-3.8.4 | 3 uclibc-1.0.48 | 3 check-11970a7e112dfe243a2e6... | 2 elfutils-0.189 | 2 host-heimdal-f4faaeaba371ff... | 2 libopenssl-3.3.0 | 2 python-remi-2022.7.27 | 2 apr-1.7.2 | 1 atftp-0.8.0 | 1 attr-2.5.2 | 1 bcc-0.29.1 | 1 binutils-arc-2023.09-release | 1 containerd-1.7.14 | 1 coreutils-9.3 | 1 cwiid-fadf11e89b579bcc0336a... | 1 fcft-3.1.6 | 1 foot-1.16.2 | 1 frotz-2.54 | 1 glibc-2.39-5-ge0910f1d3278f... | 1 gobject-introspection | 1 gobject-introspection-1.76.1 | 1 google-breakpad-f49c2f1a202... | 1 host-fakeroot-1.34 | 1 host-libxcrypt-4.4.36 | 1 jack2-1.9.22 | 1 libffi-3.4.6 | 1 libglib2-2.76.1 | 1 libsepol-3.6 | 1 libzenoh-c-0.11.0.2 | 1 lighttpd-1.4.76 | 1 lmdb-0.9.31 | 1 pppd-e1266c76d1ad39f98f1167... | 1 python-grpcio-1.60.0 | 1 python-ml-dtypes-0.3.2 | 1 unknown | 1 util-linux-2.39.3 | 1 wtfutil-0.41.0 | 1 Detail of failures for master ----------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- mips | apr-1.7.2 | NOK | http://autobuild.buildroot.net/results/e786f09835d42d51016d34c08a0317f0568e138b | mipsel | atftp-0.8.0 | NOK | http://autobuild.buildroot.net/results/85e69042575b41872a1fb7c6116b1ef6264cf245 | ORPH m68k | attr-2.5.2 | NOK | http://autobuild.buildroot.net/results/4937606c9b35fe0db2355c18eacc0bbbf28f6879 | aarch64 | bcc-0.29.1 | NOK | http://autobuild.buildroot.net/results/9e56559236a77ac08ceb55734bd65cef40c643dd | arc | binutils-arc-2023.09-release | NOK | http://autobuild.buildroot.net/results/3d5372333966470a71d94c5b33841d705d9dbd0d | mipsel | check-11970a7e112dfe243a2e6... | NOK | http://autobuild.buildroot.net/results/4b49b32308fd90b486b871d4de1a52296cad6d4a | ORPH riscv64 | check-11970a7e112dfe243a2e6... | NOK | http://autobuild.buildroot.net/results/ca2de9b3f86e7e04db165f3d00a28a7912070e13 | ORPH riscv64 | containerd-1.7.14 | NOK | http://autobuild.buildroot.net/results/680c7f2579c2d3e37716569b4b9c9fd9817ce9b1 | sh4 | coreutils-9.3 | NOK | http://autobuild.buildroot.net/results/1a967f48e595ae4ab24d90db0b29233220faa82e | ORPH armeb | cwiid-fadf11e89b579bcc0336a... | NOK | http://autobuild.buildroot.net/results/cd232f0cf0a58078a9206a7001fb236a8bca001a | microblazeel | elfutils-0.189 | NOK | http://autobuild.buildroot.net/results/fe5103021593860dcfa2fb410616878d82548afd | ORPH arc | elfutils-0.189 | NOK | http://autobuild.buildroot.net/results/42f943db2c548edbaae6b3761c5702bcad78d358 | ORPH mipsel | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/cabb8637dd487520d3815d7cf2a59aca12814bed | x86_64 | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/2c6d3949e0f7852a8684d2fb4a1ee32cd94c60d0 | mipsel | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/21f309a3e7c02801b1cf7d83b6fc4d550b1cead4 | nios2 | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/e64959ca190e2e80aa43ff9015c6b818f4345e86 | arm | fcft-3.1.6 | NOK | http://autobuild.buildroot.net/results/ee60b2e5ce69204011709cf39bb2b28dd6924e53 | arc | ffmpeg-6.1.1 | NOK | http://autobuild.buildroot.net/results/f3c8a55f032029a9c707056e1e99839a926dcddd | microblazeel | ffmpeg-6.1.1 | NOK | http://autobuild.buildroot.net/results/2c1e1dbaa91573c03e38516a575c63cc23686050 | arc | ffmpeg-6.1.1 | NOK | http://autobuild.buildroot.net/results/35f8a0fc690c3c7c31fb825cd3eb0ae482886de9 | microblazeel | foot-1.16.2 | NOK | http://autobuild.buildroot.net/results/25e3dece446a257d8fe71c0dd56ee1b4a925b037 | powerpc64 | frotz-2.54 | NOK | http://autobuild.buildroot.net/results/df3b3b98265ec3a75578614746b2d1426c90e125 | arceb | glibc-2.39-5-ge0910f1d3278f... | NOK | http://autobuild.buildroot.net/results/6331c9a4aadea9717edee4cc558cc7b84931a048 | microblazeel | gobject-introspection | TIM | http://autobuild.buildroot.net/results/1cfbdedfbaa2a4cfe5f57266a98b678894a81bdc | x86_64 | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/77f5d7b53e66a2630f902cbdaa688de850365576 | ORPH mipsel | google-breakpad-f49c2f1a202... | NOK | http://autobuild.buildroot.net/results/0698a6241cb16244e946639db0cef2a96305d7a1 | powerpc64 | host-fakeroot-1.34 | NOK | http://autobuild.buildroot.net/results/05c147fdcfb1e289b58a9f96029d66ba63549dda | ORPH or1k | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/f179d9a04c7dbafe0ffb07127695e6bcc6e9c222 | ORPH m68k | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/bdbaf48acd6096e9175e8581dee9a884a3350930 | ORPH microblaze | host-libxcrypt-4.4.36 | NOK | http://autobuild.buildroot.net/results/143c1cc922f74efd73c0cf083a9ff53c4df7a913 | sparc64 | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/5bccb37415366f91a18b2e17068c93dfe6139168 | sh4 | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/40fb799b809bbb78d7593ae35eb3258456034e50 | aarch64 | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/dd533736658b192b261646717d0816d337dcfd43 | x86_64 | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/ab36266240dcfb414aaf991c9ce78ba03e73de8f | powerpc | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/db2cecb5aee1eea0ada3e7dbdbf47b95e95985a3 | xtensa | jack2-1.9.22 | NOK | http://autobuild.buildroot.net/results/637c833054eff5cb9d2c1f1a86dbfdc0e2d2ea5a | xtensa | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/aeb4ad28cb9afa32366fa9cbf7e807a31038c454 | nios2 | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/fa250f553a909c51676fbb78fb09c0a58559222d | sparc64 | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/6bbee2a3085cfd734fd9eab2e820f7101169dbfd | arc | libffi-3.4.6 | NOK | http://autobuild.buildroot.net/results/64b54c77a6a7d447215f7cc57e4d3d10ca9d5a42 | arceb | libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/b784c6efa64ef3e8bbf9e145551bc5f4c09ed3b9 | riscv32 | libopenssl-3.3.0 | NOK | http://autobuild.buildroot.net/results/c81c16457ce94c2b0714fa686885fa71217e32e6 | ORPH riscv32 | libopenssl-3.3.0 | NOK | http://autobuild.buildroot.net/results/fd1ba2d6d32f16e24f56787a044027d07ef3347b | ORPH sh4a | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/eb3b1c27d668cd8dc1b3a6695d088d52662f49e0 | ORPH mips64el | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/d5f581e6de14ad8b7ed15f4c0f7fa76339f9cf99 | ORPH sparc | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/d7ba3cc7ca46154229662e0547f48452ef564df2 | ORPH xtensa | libsepol-3.6 | NOK | http://autobuild.buildroot.net/results/a98fc78ee627640ccab6bc29d369db1908b5c7e0 | sparc64 | libzenoh-c-0.11.0.2 | NOK | http://autobuild.buildroot.net/results/b603bc339bc98b668660b2d373203c7bb2fc8708 | sparc | lighttpd-1.4.76 | NOK | http://autobuild.buildroot.net/results/e55c1d8f1fe3cf41f45276a03f0728061a39c3dc | ORPH aarch64_be | lmdb-0.9.31 | NOK | http://autobuild.buildroot.net/results/f7968dc64acabb6c590b9bf044dc019931ceafe0 | sparc64 | pppd-e1266c76d1ad39f98f1167... | NOK | http://autobuild.buildroot.net/results/219f1c40166dd2565f57ac1a7ce10e2d8e8004cb | arm | python-grpcio-1.60.0 | NOK | http://autobuild.buildroot.net/results/f03c60e7d53b7dd2f8e2bff1bdd4f06caf9c57a1 | arm | python-ml-dtypes-0.3.2 | NOK | http://autobuild.buildroot.net/results/5f257e845d628a9ae413eb2214e43a949d7bf50a | mips64el | python-remi-2022.7.27 | NOK | http://autobuild.buildroot.net/results/e1a76f36539ad03810bf6043dd36eb06b97d926d | arm | python-remi-2022.7.27 | NOK | http://autobuild.buildroot.net/results/2ea048cf9c352b6e9586d9b8e3e5316ea5180675 | xtensa | uclibc-1.0.48 | NOK | http://autobuild.buildroot.net/results/e041904250f0caaf1406615128900df9e735074f | arceb | uclibc-1.0.48 | NOK | http://autobuild.buildroot.net/results/6740038faaedef4f51a278adf604633c2618d2c7 | or1k | uclibc-1.0.48 | NOK | http://autobuild.buildroot.net/results/0802ce57f9c6f0bab3c0c65e582a23d6707e8fcf | sparc64 | unknown | NOK | http://autobuild.buildroot.net/results/97bb411091a74d8f05eb15d70e65a56b9bbe0b2c | arm | util-linux-2.39.3 | NOK | http://autobuild.buildroot.net/results/14963cc3f41a2cc426555ad474cb6c2b51d4fdc4 | ORPH riscv64 | wtfutil-0.41.0 | NOK | http://autobuild.buildroot.net/results/90002a1bfdc0de651539f9c12e19b92f93e9af8e | Classification of failures by reason for 2024.02.x -------------------------------------------------- check-11970a7e112dfe243a2e6... | 1 coreutils-9.3 | 1 flutter-engine | 1 util-linux-2.39.3 | 1 Detail of failures for 2024.02.x -------------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- m68k | check-11970a7e112dfe243a2e6... | NOK | http://autobuild.buildroot.net/results/e517fc67ac48e3f54cfcb181c32cc5038b35e620 | ORPH microblazeel | coreutils-9.3 | NOK | http://autobuild.buildroot.net/results/6cda7102d54c9d17bb9dc2cba42f136e71a46beb | ORPH aarch64 | flutter-engine | TIM | http://autobuild.buildroot.net/results/c2715f788576324c718826ba3c69cd153b905248 | mips64el | util-linux-2.39.3 | NOK | http://autobuild.buildroot.net/results/52369f7e37502e15c0a6ba774602089ac3902125 | ORPH -- http://autobuild.buildroot.net From thomas.petazzoni at bootlin.com Fri May 17 07:06:19 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Fri, 17 May 2024 09:06:19 +0200 Subject: [Buildroot] Support external toolchains based on gcc 14 In-Reply-To: References: Message-ID: <20240517090619.2469de46@windsurf> On Thu, 16 May 2024 17:56:41 +0200 Edgar Bonet wrote: > Last July, right before support for gcc 13 was added for buildroot's > internal toolchain in 3009095ba8 (package/gcc: add support for gcc 13), > the support was added for the external toolchain in dfbd1aae23 > (toolchain/toolchain-external/toolchain-external-custom: add gcc 13 > version selection). > > Last week, support for gcc 14 has been added for the internal toolchain > in 5eb0203cb0 (package/gcc: add version 14.x), but this is still lacking > for the external toolchain. Is this an oversight? Should I just wait? > Should I instead submit a patch equivalent to dfbd1aae23 for gcc 14? You can indeed submit an equivalent patch for gcc 14, it would be very welcome! Best regards, Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From thomas.petazzoni at bootlin.com Fri May 17 07:08:48 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Fri, 17 May 2024 09:08:48 +0200 Subject: [Buildroot] [PATCH 1/1] package/zxing-cpp: add options for enabling readers and/or writers In-Reply-To: <20240515164912.104672-1-dario.binacchi@amarulasolutions.com> References: <20240515164912.104672-1-dario.binacchi@amarulasolutions.com> Message-ID: <20240517090848.4fdbc89b@windsurf> Hello, On Wed, 15 May 2024 18:49:12 +0200 Dario Binacchi wrote: > +if BR2_PACKAGE_ZXING_CPP > + > +choice > + prompt "readers/writers support" > + default BR2_PACKAGE_ZXING_CPP_READERS_AND_WRITERS > + help > + Select what you want to enable and then compile > + > +config BR2_PACKAGE_ZXING_CPP_READERS > + bool "readers only" > + help > + Build with only readers (decoders) support > + > +config BR2_PACKAGE_ZXING_CPP_WRITERS > + bool "writers only" > + help > + Build with only writers (encoders) support > + > +config BR2_PACKAGE_ZXING_CPP_READERS_AND_WRITERS > + bool "readers and writers" > + help > + Build with readers and writers support > + > +endchoice I don't think this should be a choice. Instead, it should be like this: if BR2_PACKAGE_ZXING_CPP config BR2_PACKAGE_ZXING_CPP_READERS bool "readers support" default y help Build with readers (decoders) support config BR2_PACKAGE_ZXING_CPP_WRITERS bool "writers support" default y help Build with writers (encoders) support endif Could you rework your patch accordingly? Thanks a lot! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From bonet at grenoble.cnrs.fr Fri May 17 07:18:25 2024 From: bonet at grenoble.cnrs.fr (Edgar Bonet) Date: Fri, 17 May 2024 09:18:25 +0200 Subject: [Buildroot] [PATCH 1/1] toolchain/toolchain-external/toolchain-external-custom: add gcc 14 version selection Message-ID: This patch allows to use an external toolchain based on gcc 14. Signed-off-by: Edgar Bonet --- .../toolchain-external-custom/Config.in.options | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/toolchain/toolchain-external/toolchain-external-custom/Config.in.options b/toolchain/toolchain-external/toolchain-external-custom/Config.in.options index f7825cb88e..1c4b0d2554 100644 --- a/toolchain/toolchain-external/toolchain-external-custom/Config.in.options +++ b/toolchain/toolchain-external/toolchain-external-custom/Config.in.options @@ -46,6 +46,10 @@ choice Set to the gcc version that is used by your external toolchain. +config BR2_TOOLCHAIN_EXTERNAL_GCC_14 + bool "14.x" + select BR2_TOOLCHAIN_GCC_AT_LEAST_14 + config BR2_TOOLCHAIN_EXTERNAL_GCC_13 bool "13.x" select BR2_TOOLCHAIN_GCC_AT_LEAST_13 -- 2.34.1 From huth at tuxfamily.org Fri May 17 08:20:07 2024 From: huth at tuxfamily.org (Thomas Huth) Date: Fri, 17 May 2024 10:20:07 +0200 Subject: [Buildroot] [PATCH v2] package/frotz: fix build with gcc 14 Message-ID: <20240517082007.312904-1-huth@tuxfamily.org> Change -std=c99 into -std=gnu99 in the CFLAGS to avoid the following build failure with gcc 14: fastmem.c: In function 'z_restore': fastmem.c:842:36: error: implicit declaration of function 'strdup'; did you mean 'strcmp'? [-Wimplicit-function-declaration] 842 | f_setup.aux_name = strdup(default_name); | ^~~~~~ | strcmp Fixes: - http://autobuild.buildroot.org/results/df3b3b98265ec3a75578614746b2d1426c90e125 Reported-by: Fabrice Fontaine Signed-off-by: Thomas Huth --- v2: Use gnu99 instead of removing c99 package/frotz/frotz.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/frotz/frotz.mk b/package/frotz/frotz.mk index 5af235137c..4c477c396d 100644 --- a/package/frotz/frotz.mk +++ b/package/frotz/frotz.mk @@ -21,7 +21,7 @@ endif define FROTZ_BUILD_CMDS $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) PREFIX=/usr CONFIG_DIR=/etc \ SOUND_TYPE=none CURSES="$(FROTZ_CURSES)" USE_UTF8=$(FROTZ_UTF8) \ - CFLAGS="$(TARGET_CFLAGS) -std=c99" + CFLAGS="$(TARGET_CFLAGS) -std=gnu99" endef define FROTZ_INSTALL_TARGET_CMDS -- 2.44.0 From sebastien.szymanski at armadeus.com Fri May 17 08:32:20 2024 From: sebastien.szymanski at armadeus.com (=?UTF-8?Q?S=C3=A9bastien_Szymanski?=) Date: Fri, 17 May 2024 10:32:20 +0200 Subject: [Buildroot] [PATCH v2 1/1] package/nxp-bt-wifi-firmware: new package In-Reply-To: References: <20240515100209.24769-1-sebastien.szymanski@armadeus.com> Message-ID: <0ff11f55-6ae4-4206-a9e4-9f8cc5c68f0e@armadeus.com> Hi Fabio, On 5/15/24 13:08, Fabio Estevam wrote: > Hi S?bastien, > > On Wed, May 15, 2024 at 7:02?AM S?bastien Szymanski > wrote: >> >> This package provides firmwares for NXP WiFi + Bluetooth chipsets. >> It is named "nxp-bt-wifi-firmware" so that it is not confused with the >> package firmware-imx. > > Thanks for the path. :) > > Is there support in Buildroot for the > https://github.com/nxp-imx/mwifiex kernel modules too? Nope. I did test it but out of the buildroot tree. I have also tested the in-kernel mwifiex driver. Regards, > > I want to test the IW612 Wifi on the imx93-evk board. > > Thanks, > > Fabio Estevam -- S?bastien Szymanski, Armadeus Systems Software engineer From yegorslists at googlemail.com Fri May 17 12:00:57 2024 From: yegorslists at googlemail.com (yegorslists at googlemail.com) Date: Fri, 17 May 2024 14:00:57 +0200 Subject: [Buildroot] [PATCH] package/ntp: fix build with GCC 14.x Message-ID: <20240517120057.3736694-1-yegorslists@googlemail.com> From: Yegor Yefremov Fix pthread_detach() detection that is broken when building with GCC 14.x. The patch is taken from a Gentoo repository: https://gitweb.gentoo.org/repo/gentoo.git/diff/net-misc/ntp/files/ntp-4.2.8_p15-configure-clang16.patch?id=56ef5ce33891feec34cd0c39a0a774a81a587dc7 Bonus: refresh the 0002-ntp-syscalls-fallback.patch file. Signed-off-by: Yegor Yefremov --- package/ntp/0002-ntp-syscalls-fallback.patch | 9 ++++--- .../ntp/0003-fix-pthread-detach-check.patch | 27 +++++++++++++++++++ 2 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 package/ntp/0003-fix-pthread-detach-check.patch diff --git a/package/ntp/0002-ntp-syscalls-fallback.patch b/package/ntp/0002-ntp-syscalls-fallback.patch index 535fc93dfd..46704b9d3f 100644 --- a/package/ntp/0002-ntp-syscalls-fallback.patch +++ b/package/ntp/0002-ntp-syscalls-fallback.patch @@ -8,10 +8,11 @@ Signed-off-by: James Knight configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -diff --git a/configure.ac b/configure.ac ---- a/configure.ac -+++ b/configure.ac -@@ -1523,11 +1523,11 @@ AC_CACHE_CHECK( +Index: ntp-4.2.8p17/configure.ac +=================================================================== +--- ntp-4.2.8p17.orig/configure.ac ++++ ntp-4.2.8p17/configure.ac +@@ -1472,11 +1472,11 @@ AC_CACHE_CHECK( [ntp_cv_var_ntp_syscalls], [ ntp_cv_var_ntp_syscalls=no diff --git a/package/ntp/0003-fix-pthread-detach-check.patch b/package/ntp/0003-fix-pthread-detach-check.patch new file mode 100644 index 0000000000..c61b6cc736 --- /dev/null +++ b/package/ntp/0003-fix-pthread-detach-check.patch @@ -0,0 +1,27 @@ +fix pthread_detach check + +Refrence: + https://gitweb.gentoo.org/repo/gentoo.git/diff/net-misc/ntp/files/ntp-4.2.8_p15-configure-clang16.patch?id=56ef5ce33891feec34cd0c39a0a774a81a587dc7 + +Signed-off-by: Yegor Yefremov +--- + sntp/m4/openldap-thread-check.m4 | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +Index: ntp-4.2.8p17/sntp/m4/openldap-thread-check.m4 +=================================================================== +--- ntp-4.2.8p17.orig/sntp/m4/openldap-thread-check.m4 ++++ ntp-4.2.8p17/sntp/m4/openldap-thread-check.m4 +@@ -262,10 +262,8 @@ pthread_rwlock_t rwlock; + dnl save the flags + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + #include +-#ifndef NULL +-#define NULL (void*)0 +-#endif +-]], [[pthread_detach(NULL);]])],[ol_cv_func_pthread_detach=yes],[ol_cv_func_pthread_detach=no]) ++pthread_t thread; ++]], [[pthread_detach(thread);]])],[ol_cv_func_pthread_detach=yes],[ol_cv_func_pthread_detach=no]) + ]) + + if test $ol_cv_func_pthread_detach = no ; then -- 2.34.1 From jarkko at kernel.org Fri May 17 13:20:35 2024 From: jarkko at kernel.org (Jarkko Sakkinen) Date: Fri, 17 May 2024 16:20:35 +0300 Subject: [Buildroot] [PATCH 0/4] swtpm and libtpms host packages Message-ID: <20240517132039.7124-1-jarkko@kernel.org> Add swtpm and libtpms host packages. Jarkko Sakkinen (4): package/quota: Update DEVELOPERS address package/json-glib: add host build package/libtpms: add host package package/swtpm: add host package DEVELOPERS | 4 +++- package/Config.in | 1 + package/Config.in.host | 1 + package/json-glib/json-glib.mk | 12 ++++++++++++ package/libtpms/Config.in | 20 ++++++++++++++++++++ package/libtpms/libtpms.hash | 2 ++ package/libtpms/libtpms.mk | 17 +++++++++++++++++ package/swtpm/Config.in.host | 16 ++++++++++++++++ package/swtpm/swtpm.hash | 2 ++ package/swtpm/swtpm.mk | 17 +++++++++++++++++ 10 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 package/libtpms/Config.in create mode 100644 package/libtpms/libtpms.hash create mode 100644 package/libtpms/libtpms.mk create mode 100644 package/swtpm/Config.in.host create mode 100644 package/swtpm/swtpm.hash create mode 100644 package/swtpm/swtpm.mk -- 2.45.0 From jarkko at kernel.org Fri May 17 13:20:36 2024 From: jarkko at kernel.org (Jarkko Sakkinen) Date: Fri, 17 May 2024 16:20:36 +0300 Subject: [Buildroot] [PATCH 1/4] package/quota: Update DEVELOPERS address In-Reply-To: <20240517132039.7124-1-jarkko@kernel.org> References: <20240517132039.7124-1-jarkko@kernel.org> Message-ID: <20240517132039.7124-2-jarkko@kernel.org> Signed-off-by: Jarkko Sakkinen --- DEVELOPERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEVELOPERS b/DEVELOPERS index a9deddb343..52c9b84a9d 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -1518,7 +1518,7 @@ F: package/zip/ N: Jared Bents F: package/libvirt/ -N: Jarkko Sakkinen +N: Jarkko Sakkinen F: package/quota/ N: Jason Pruitt -- 2.45.0 From jarkko at kernel.org Fri May 17 13:20:37 2024 From: jarkko at kernel.org (Jarkko Sakkinen) Date: Fri, 17 May 2024 16:20:37 +0300 Subject: [Buildroot] [PATCH 2/4] package/json-glib: add host build In-Reply-To: <20240517132039.7124-1-jarkko@kernel.org> References: <20240517132039.7124-1-jarkko@kernel.org> Message-ID: <20240517132039.7124-3-jarkko@kernel.org> Signed-off-by: Jarkko Sakkinen --- package/json-glib/json-glib.mk | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/package/json-glib/json-glib.mk b/package/json-glib/json-glib.mk index cd53f24cee..ffdc76f2c1 100644 --- a/package/json-glib/json-glib.mk +++ b/package/json-glib/json-glib.mk @@ -18,19 +18,31 @@ JSON_GLIB_DEPENDENCIES = \ host-pkgconf \ libglib2 +HOST_JSON_GLIB_DEPENDENCIES = \ + $(HOST_NLS_DEPENDENCIES) \ + host-pkgconf \ + host-libglib2 + ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) JSON_GLIB_CONF_OPTS += -Dintrospection=enabled JSON_GLIB_DEPENDENCIES += gobject-introspection +HOST_JSON_GLIB_CONF_OPTS += -Dintrospection=enabled +HOST_JSON_GLIB_DEPENDENCIES += gobject-introspection else JSON_GLIB_CONF_OPTS += -Dintrospection=disabled +HOST_JSON_GLIB_CONF_OPTS += -Dintrospection=disabled endif ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) JSON_GLIB_CONF_OPTS += -Dnls=enabled +HOST_JSON_GLIB_CONF_OPTS += -Dnls=enabled else JSON_GLIB_CONF_OPTS += -Dnls=disabled +HOST_JSON_GLIB_CONF_OPTS += -Dnls=disabled endif JSON_GLIB_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) +HOST_JSON_GLIB_LDFLAGS = $(HOST_LDFLAGS) $(HOST_NLS_LIBS) $(eval $(meson-package)) +$(eval $(host-meson-package)) -- 2.45.0 From jarkko at kernel.org Fri May 17 13:20:38 2024 From: jarkko at kernel.org (Jarkko Sakkinen) Date: Fri, 17 May 2024 16:20:38 +0300 Subject: [Buildroot] [PATCH 3/4] package/libtpms: add host package In-Reply-To: <20240517132039.7124-1-jarkko@kernel.org> References: <20240517132039.7124-1-jarkko@kernel.org> Message-ID: <20240517132039.7124-4-jarkko@kernel.org> Libtpms is a library that targets the integration of TPM functionality into hypervisors, primarily into Qemu. Libtpms provides a very narrow public API for this purpose so that integration is possible. Only the minimum of necessary APIs are made publicly available. Link: https://github.com/stefanberger/libtpms Signed-off-by: Jarkko Sakkinen --- DEVELOPERS | 1 + package/Config.in | 1 + package/libtpms/Config.in | 20 ++++++++++++++++++++ package/libtpms/libtpms.hash | 2 ++ package/libtpms/libtpms.mk | 17 +++++++++++++++++ 5 files changed, 41 insertions(+) create mode 100644 package/libtpms/Config.in create mode 100644 package/libtpms/libtpms.hash create mode 100644 package/libtpms/libtpms.mk diff --git a/DEVELOPERS b/DEVELOPERS index 52c9b84a9d..db0dc702a8 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -1519,6 +1519,7 @@ N: Jared Bents F: package/libvirt/ N: Jarkko Sakkinen +F: package/libtpms/ F: package/quota/ N: Jason Pruitt diff --git a/package/Config.in b/package/Config.in index 1b6a5b0dab..30b76349ec 100644 --- a/package/Config.in +++ b/package/Config.in @@ -1569,6 +1569,7 @@ menu "Crypto" source "package/libssh/Config.in" source "package/libssh2/Config.in" source "package/libtomcrypt/Config.in" + source "package/libtpms/Config.in" source "package/libuecc/Config.in" source "package/libxcrypt/Config.in" source "package/mbedtls/Config.in" diff --git a/package/libtpms/Config.in b/package/libtpms/Config.in new file mode 100644 index 0000000000..d5ae47375a --- /dev/null +++ b/package/libtpms/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_LIBTPMS + bool "libtpms" + select BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBTOOL + help + Libtpms is a library that targets the integration of TPM + functionality into hypervisors, primarily into Qemu. Libtpms + provides a very narrow public API for this purpose so that + integration is possible. Only the minimum of necessary APIs + are made publicly available. + + It is assumed that the user of libtpms is familiar with the + concepts of the Trusted Platform Module (TPM). For the + interaction with libtpms it is necessary to know how to + construct valid TPM commands and to be able to parse their + results. It is not within the scope of libtpms's documentation + to provide background on this. See the section on references + below. + + https://github.com/stefanberger/libtpms/wiki diff --git a/package/libtpms/libtpms.hash b/package/libtpms/libtpms.hash new file mode 100644 index 0000000000..1026aaa4f4 --- /dev/null +++ b/package/libtpms/libtpms.hash @@ -0,0 +1,2 @@ +sha256 2807466f1563ebe45fdd12dd26e501e8a0c4fbb99c7c428fbb508789efd221c0 libtpms-0.9.6.tar.gz +sha256 82f1e6bae374bb6a9d4f4596767fd33e499718d560de140fd9f3d402cc5e41fb LICENSE diff --git a/package/libtpms/libtpms.mk b/package/libtpms/libtpms.mk new file mode 100644 index 0000000000..c588b2892c --- /dev/null +++ b/package/libtpms/libtpms.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# libtpms +# +################################################################################ + +LIBTPMS_VERSION = 0.9.6 +LIBTPMS_SITE = $(call github,stefanberger,libtpms,v$(LIBTPMS_VERSION)) +LIBTPMS_LICENSE = BSD-4-Clause +LIBTPMS_LICENSE_FILES = LICENSE +LIBTPMS_INSTALL_STAGING = YES +LIBTPMS_AUTORECONF = YES + +HOST_LIBTPMS_DEPENDENCIES = host-libtool host-pkgconf host-libopenssl +HOST_LIBTPMS_CONF_OPTS = --with-openssl -with-tpm2 + +$(eval $(host-autotools-package)) -- 2.45.0 From jarkko at kernel.org Fri May 17 13:20:39 2024 From: jarkko at kernel.org (Jarkko Sakkinen) Date: Fri, 17 May 2024 16:20:39 +0300 Subject: [Buildroot] [PATCH 4/4] package/swtpm: add host package In-Reply-To: <20240517132039.7124-1-jarkko@kernel.org> References: <20240517132039.7124-1-jarkko@kernel.org> Message-ID: <20240517132039.7124-5-jarkko@kernel.org> The SWTPM package provides TPM emulators with different front-end interfaces to libtpms. TPM emulators provide socket interfaces (TCP/IP and Unix) and the Linux CUSE interface for the creation of multiple native /dev/vtpm* devices. Link: https://gitlab.com/jarkkojs/linux-tpmdd-test Signed-off-by: Jarkko Sakkinen --- DEVELOPERS | 1 + package/Config.in.host | 1 + package/swtpm/Config.in.host | 16 ++++++++++++++++ package/swtpm/swtpm.hash | 2 ++ package/swtpm/swtpm.mk | 17 +++++++++++++++++ 5 files changed, 37 insertions(+) create mode 100644 package/swtpm/Config.in.host create mode 100644 package/swtpm/swtpm.hash create mode 100644 package/swtpm/swtpm.mk diff --git a/DEVELOPERS b/DEVELOPERS index db0dc702a8..732002f85b 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -1521,6 +1521,7 @@ F: package/libvirt/ N: Jarkko Sakkinen F: package/libtpms/ F: package/quota/ +F: package/swtpm/ N: Jason Pruitt F: package/librtlsdr/ diff --git a/package/Config.in.host b/package/Config.in.host index 986b2854d0..0cf9dc3897 100644 --- a/package/Config.in.host +++ b/package/Config.in.host @@ -110,6 +110,7 @@ menu "Host utilities" source "package/starfive-spltool/Config.in.host" source "package/sunxi-tools/Config.in.host" source "package/swig/Config.in.host" + source "package/swtpm/Config.in.host" source "package/swugenerator/Config.in.host" source "package/systemd/Config.in.host" source "package/tegrarcm/Config.in.host" diff --git a/package/swtpm/Config.in.host b/package/swtpm/Config.in.host new file mode 100644 index 0000000000..264f74e458 --- /dev/null +++ b/package/swtpm/Config.in.host @@ -0,0 +1,16 @@ +config BR2_PACKAGE_HOST_SWTPM + bool "host swtpm" + select BR2_PACKAGE_JSON_GLIB + select BR2_PACKAGE_LIBOPENSSL + select BR2_PACKAGE_LIBTASN1 + select BR2_PACKAGE_LIBTOOL + select BR2_PACKAGE_LIBTPMS + help + Compiles SWTPM software TPM emulator for the host. + + The SWTPM package provides TPM emulators with different + front-end interfaces to libtpms. TPM emulators provide socket + interfaces (TCP/IP and Unix) and the Linux CUSE interface for + the creation of multiple native /dev/vtpm* devices. + + https://github.com/stefanberger/swtpm/wiki diff --git a/package/swtpm/swtpm.hash b/package/swtpm/swtpm.hash new file mode 100644 index 0000000000..934d3b6ee0 --- /dev/null +++ b/package/swtpm/swtpm.hash @@ -0,0 +1,2 @@ +sha256 b281b4e8c39f68e1928675f788abc70072e4081152e129144359a8c5c304c06b swtpm-0.8.2.tar.gz +sha256 19d27d6e96d07022e5e688f75c974f1ceb9aae9e90e0fccae68666d02099cc4b LICENSE diff --git a/package/swtpm/swtpm.mk b/package/swtpm/swtpm.mk new file mode 100644 index 0000000000..29c8e37c47 --- /dev/null +++ b/package/swtpm/swtpm.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# swtpm +# +################################################################################ + +SWTPM_VERSION = 0.8.2 +SWTPM_SITE = $(call github,stefanberger,swtpm,v$(SWTPM_VERSION)) +SWTPM_LICENSE = BSD-4-Clause +SWTPM_LICENSE_FILES = LICENSE +SWTPM_AUTORECONF = YES + +HOST_SWTPM_DEPENDENCIES = host-m4 host-libtool host-pkgconf host-json-glib \ + host-libopenssl host-libtasn1 host-libtpms +HOST_SWTPM_CONF_OPTS = --with-openssl --without-seccomp + +$(eval $(host-autotools-package)) -- 2.45.0 From yann.morin.1998 at free.fr Fri May 17 13:39:00 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 17 May 2024 15:39:00 +0200 Subject: [Buildroot] [PATCH 2/4] package/json-glib: add host build In-Reply-To: <20240517132039.7124-3-jarkko@kernel.org> References: <20240517132039.7124-1-jarkko@kernel.org> <20240517132039.7124-3-jarkko@kernel.org> Message-ID: Jarkko, All, Thanks for these patches; please find comments below. On 2024-05-17 16:20 +0300, Jarkko Sakkinen spake thusly: > Signed-off-by: Jarkko Sakkinen > --- > package/json-glib/json-glib.mk | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/package/json-glib/json-glib.mk b/package/json-glib/json-glib.mk > index cd53f24cee..ffdc76f2c1 100644 > --- a/package/json-glib/json-glib.mk > +++ b/package/json-glib/json-glib.mk > @@ -18,19 +18,31 @@ JSON_GLIB_DEPENDENCIES = \ > host-pkgconf \ > libglib2 > > +HOST_JSON_GLIB_DEPENDENCIES = \ > + $(HOST_NLS_DEPENDENCIES) \ > + host-pkgconf \ > + host-libglib2 > + > ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) > JSON_GLIB_CONF_OPTS += -Dintrospection=enabled > JSON_GLIB_DEPENDENCIES += gobject-introspection > +HOST_JSON_GLIB_CONF_OPTS += -Dintrospection=enabled BR2_PACKAGE_GOBJECT_INTROSPECTION (the condition for this block) is a target setting, so it semantically does not make sense to protect the host variant with that condition. Usually, for host variants, we do not have conditional compilation of features; either the feature is needed to run on the host, in which case we always enable it, or it is not needed, in which case we always disable it. The only case where we would have such an option for such a feature, is when the feature needs a lot of dependencies, or time-consuming dependencies (e.g. needs LLVM!). GOI is probably a good reasong to add such an option, *iff* introspection is needed on the host, which I doubt is. > +HOST_JSON_GLIB_DEPENDENCIES += gobject-introspection Here, you instruct a host variant to depend on a target variant, which is usually not what you intended. And indeed, I believe here you'd need a dependency on host-gobject-introspection. I guess it worked ion your case, because gobject-introspection has a dependency on host-gobject-introspection, so that pulled it in for you. Still, this is probably not correct. So, my proposal would be to always disable GOI unconditionally in the host variant, unless there are cases where it is required, in which case we always enable it. Unless there is actually a reason that the host variant has the same feature set as the target variant, in which case it should be explained in the commit log. > else > JSON_GLIB_CONF_OPTS += -Dintrospection=disabled > +HOST_JSON_GLIB_CONF_OPTS += -Dintrospection=disabled > endif > > ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) > JSON_GLIB_CONF_OPTS += -Dnls=enabled > +HOST_JSON_GLIB_CONF_OPTS += -Dnls=enabled > else > JSON_GLIB_CONF_OPTS += -Dnls=disabled > +HOST_JSON_GLIB_CONF_OPTS += -Dnls=disabled > endif Ditto: the BR2_SYSTEM_ENABLE_NLS option drives NLS support for the target, not for the host. For the host, we assume it is never needed, and it is already forcefully disabled in the autotools-package infra: https://gitlab.com/buildroot.org/buildroot/-/blob/master/package/pkg-autotools.mk#L196 > JSON_GLIB_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) > +HOST_JSON_GLIB_LDFLAGS = $(HOST_LDFLAGS) $(HOST_NLS_LIBS) HOST_NLS_LIBS is never defined anywhere, so this is basically a noop. ;-) Regards, Yann E. MORIN. > $(eval $(meson-package)) > +$(eval $(host-meson-package)) > -- > 2.45.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Fri May 17 13:44:14 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 17 May 2024 15:44:14 +0200 Subject: [Buildroot] [PATCH 3/4] package/libtpms: add host package In-Reply-To: <20240517132039.7124-4-jarkko@kernel.org> References: <20240517132039.7124-1-jarkko@kernel.org> <20240517132039.7124-4-jarkko@kernel.org> Message-ID: Jarkko, All, On 2024-05-17 16:20 +0300, Jarkko Sakkinen spake thusly: > Libtpms is a library that targets the integration of TPM functionality > into hypervisors, primarily into Qemu. Libtpms provides a very narrow > public API for this purpose so that integration is possible. Only the > minimum of necessary APIs are made publicly available. > > Link: https://github.com/stefanberger/libtpms > Signed-off-by: Jarkko Sakkinen > --- [--SNIP--] > diff --git a/package/libtpms/Config.in b/package/libtpms/Config.in > new file mode 100644 > index 0000000000..d5ae47375a > --- /dev/null > +++ b/package/libtpms/Config.in > @@ -0,0 +1,20 @@ > +config BR2_PACKAGE_LIBTPMS BR2_PACKAGE_LIBTPMS is for target package; for the host variant, you'd have to name it BR2_PACKAGE_HOST_LIBTPMS. The Config.in is sourced from ackage/Config.in, too, which is for target packages. > + bool "libtpms" > + select BR2_PACKAGE_LIBOPENSSL > + select BR2_PACKAGE_LIBTOOL It even selects target packages. However [0]... [--SNIP--] > diff --git a/package/libtpms/libtpms.mk b/package/libtpms/libtpms.mk > new file mode 100644 > index 0000000000..c588b2892c > --- /dev/null > +++ b/package/libtpms/libtpms.mk > @@ -0,0 +1,17 @@ > +################################################################################ > +# > +# libtpms > +# > +################################################################################ > + > +LIBTPMS_VERSION = 0.9.6 > +LIBTPMS_SITE = $(call github,stefanberger,libtpms,v$(LIBTPMS_VERSION)) > +LIBTPMS_LICENSE = BSD-4-Clause > +LIBTPMS_LICENSE_FILES = LICENSE > +LIBTPMS_INSTALL_STAGING = YES > +LIBTPMS_AUTORECONF = YES > + > +HOST_LIBTPMS_DEPENDENCIES = host-libtool host-pkgconf host-libopenssl > +HOST_LIBTPMS_CONF_OPTS = --with-openssl -with-tpm2 > + > +$(eval $(host-autotools-package)) [0]... you've made it a host-only package. So it means that if one enable BR2_PACKAGE_LIBTPMS in the menuconfig, there will be no libtpms available in the target. For host packages that only provide a library used by other host packages, we usually do not add a Kconfig symbol at all, and just rely on the _DEPENDENCIES to bring in the library. Regards, Yann E. MORIN. > -- > 2.45.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Fri May 17 13:52:46 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 17 May 2024 15:52:46 +0200 Subject: [Buildroot] [PATCH 4/4] package/swtpm: add host package In-Reply-To: <20240517132039.7124-5-jarkko@kernel.org> References: <20240517132039.7124-1-jarkko@kernel.org> <20240517132039.7124-5-jarkko@kernel.org> Message-ID: Jarkko, All, On 2024-05-17 16:20 +0300, Jarkko Sakkinen spake thusly: > The SWTPM package provides TPM emulators with different front-end > interfaces to libtpms. TPM emulators provide socket interfaces (TCP/IP and > Unix) and the Linux CUSE interface for the creation of multiple native > /dev/vtpm* devices. > > Link: https://gitlab.com/jarkkojs/linux-tpmdd-test > Signed-off-by: Jarkko Sakkinen [--SNIP--] > diff --git a/package/swtpm/Config.in.host b/package/swtpm/Config.in.host > new file mode 100644 > index 0000000000..264f74e458 > --- /dev/null > +++ b/package/swtpm/Config.in.host > @@ -0,0 +1,16 @@ > +config BR2_PACKAGE_HOST_SWTPM This is a host package (by name, and sourced from Config.in.host), so... > + bool "host swtpm" > + select BR2_PACKAGE_JSON_GLIB > + select BR2_PACKAGE_LIBOPENSSL > + select BR2_PACKAGE_LIBTASN1 > + select BR2_PACKAGE_LIBTOOL > + select BR2_PACKAGE_LIBTPMS ... it should select target packages. Usually, unless there is a good reason, we do not expose in menuconfig, host packages that only provide libraries used by other host packages. [--SNIP--] > diff --git a/package/swtpm/swtpm.mk b/package/swtpm/swtpm.mk > new file mode 100644 > index 0000000000..29c8e37c47 > --- /dev/null > +++ b/package/swtpm/swtpm.mk > @@ -0,0 +1,17 @@ > +################################################################################ > +# > +# swtpm > +# > +################################################################################ > + > +SWTPM_VERSION = 0.8.2 > +SWTPM_SITE = $(call github,stefanberger,swtpm,v$(SWTPM_VERSION)) > +SWTPM_LICENSE = BSD-4-Clause > +SWTPM_LICENSE_FILES = LICENSE > +SWTPM_AUTORECONF = YES > + > +HOST_SWTPM_DEPENDENCIES = host-m4 host-libtool host-pkgconf host-json-glib \ > + host-libopenssl host-libtasn1 host-libtpms Lists should be alphabetically sorted, and long lists should be one-item per line: HOST_SWTPM_DEPENDENCIES = \ host-json-glib \ host-libopenssl \ host-libtasn1 \ host-libtool \ host-libtpms \ host-m4 \ host-pkgconf host-m4 is usualy only required when you need to autoreconf, in which case it is automatically pulled in (because _AUTORECONF pulls in host-autoconf in _DEPENDENCIES, which in turns pulls in host-m4). And as you do indeed autoreconf, there is no reason to explicitly pul it in, unless swtpm does have explicit m4 scripts besides those in the autotools machinery. Regards, Yann E. MORIN. > +HOST_SWTPM_CONF_OPTS = --with-openssl --without-seccomp > + > +$(eval $(host-autotools-package)) > -- > 2.45.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From peter at korsgaard.com Fri May 17 14:14:13 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Fri, 17 May 2024 16:14:13 +0200 Subject: [Buildroot] [PATCH] package/procps-ng/S02sysctl: pass SYSCTL_ARGS before -p argument for busybox Message-ID: <20240517141413.1716448-1-peter@korsgaard.com> The busybox sysctl applet expects all arguments after -p to be filenames to read: sysctl -p file -h sysctl: -h: No such file or directory VS: sysctl -h -p file sysctl: invalid option -- 'h' BusyBox v1.36.1 (2024-05-17 15:27:21 CEST) multi-call binary. Usage: sysctl [-enq] { -a | -p [FILE]... | [-w] [KEY[=VALUE]]... } Show/set kernel parameters -e Don't warn about unknown keys -n Don't show key names -q Quiet -a Show all values -p Set values from FILEs (default /etc/sysctl.conf) -w Set values This seems to be the intented behaviour: https://git.busybox.net/busybox/tree/procps/sysctl.c#n317 Notice: The procps-ng variant is happy with both: sysctl -p file -h Usage: sysctl [options] [variable[=value] ...] VS: sysctl -h -p file Usage: sysctl [options] [variable[=value] ...] So pass SYSCTL_ARGS before the -p args so custom sysctl arguments can be passed. Signed-off-by: Peter Korsgaard --- package/procps-ng/S02sysctl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/procps-ng/S02sysctl b/package/procps-ng/S02sysctl index 85d9ed50d0..c202833ab8 100644 --- a/package/procps-ng/S02sysctl +++ b/package/procps-ng/S02sysctl @@ -43,7 +43,7 @@ run_logger() { break } echo "* Applying $file ..." - /sbin/sysctl -p "$file" $SYSCTL_ARGS || prog_status="FAIL" + /sbin/sysctl $SYSCTL_ARGS -p "$file" || prog_status="FAIL" done 2>&1 >&3 | /usr/bin/logger -t sysctl -p kern.err } 3>&1 | /usr/bin/logger -t sysctl -p kern.info } @@ -60,7 +60,7 @@ run_std() { break } echo "* Applying $file ..." - /sbin/sysctl -p "$file" $SYSCTL_ARGS || prog_status="FAIL" + /sbin/sysctl $SYSCTL_ARGS -p "$file" || prog_status="FAIL" done } } -- 2.39.2 From yann.morin.1998 at free.fr Fri May 17 14:25:09 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 17 May 2024 16:25:09 +0200 Subject: [Buildroot] [PATCH] package/ruby: build host-ruby with yaml support In-Reply-To: <20240207180620.298393-1-peter@korsgaard.com> References: <20240207180620.298393-1-peter@korsgaard.com> Message-ID: Peter, All, On 2024-02-07 19:06 +0100, Peter Korsgaard spake thusly: > webkitgtk/wpewebkit needs a host-ruby with yaml support, otherwise the build > fails with errors like: > > cd /home/peko/source/buildroot/output/build/webkitgtk-2.42.2/Source/WebCore && \ > /home/peko/source/buildroot/output/host/bin/ruby \ > /home/peko/source/buildroot/output/build/webkitgtk-2.42.2/Source/WebCore/Scripts/GenerateSettings.rb \ > --outputDir /home/peko/source/buildroot/output/build/webkitgtk-2.42.2/WebCore/DerivedSources \ > --template /home/peko/source/buildroot/output/build/webkitgtk-2.42.2/Source/WebCore/Scripts/SettingsTemplates/InternalSettingsGenerated.cpp.erb \ > --template /home/peko/source/buildroot/output/build/webkitgtk-2.42.2/Source/WebCore/Scripts/SettingsTemplates/InternalSettingsGenerated.idl.erb \ > --template /home/peko/source/buildroot/output/build/webkitgtk-2.42.2/Source/WebCore/Scripts/SettingsTemplates/InternalSettingsGenerated.h.erb \ > --template /home/peko/source/buildroot/output/build/webkitgtk-2.42.2/Source/WebCore/Scripts/SettingsTemplates/Settings.cpp.erb \ > --template /home/peko/source/buildroot/output/build/webkitgtk-2.42.2/Source/WebCore/Scripts/SettingsTemplates/Settings.h.erb \ > /home/peko/source/buildroot/output/build/webkitgtk-2.42.2/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml \ > /home/peko/source/buildroot/output/build/webkitgtk-2.42.2/Source/WebCore/page/Settings.yaml > /home/peko/source/buildroot/output/host/lib/ruby/3.3.0/yaml.rb:3: warning: It seems your ruby installation is missing psych (for YAML output). > To eliminate this warning, please install libyaml and reinstall your ruby. > > We do not currently have any Config.in.host options for ruby or libyaml, but > given how small/fast libyaml is to build just do it unconditionally. > > Signed-off-by: Peter Korsgaard Applied to master, thanks. Regards, Yann E. MORIN. > --- > package/ruby/ruby.mk | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/package/ruby/ruby.mk b/package/ruby/ruby.mk > index 4b9ce80e67..00fa0e0f65 100644 > --- a/package/ruby/ruby.mk > +++ b/package/ruby/ruby.mk > @@ -20,7 +20,7 @@ RUBY_LICENSE_FILES = LEGAL COPYING BSDL > RUBY_CPE_ID_VENDOR = ruby-lang > > RUBY_DEPENDENCIES = host-pkgconf host-ruby > -HOST_RUBY_DEPENDENCIES = host-pkgconf host-openssl > +HOST_RUBY_DEPENDENCIES = host-libyaml host-pkgconf host-openssl > RUBY_MAKE_ENV = $(TARGET_MAKE_ENV) > RUBY_CONF_OPTS = \ > --disable-install-doc \ > -- > 2.39.2 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Fri May 17 14:23:06 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 17 May 2024 16:23:06 +0200 Subject: [Buildroot] [git commit] package/ruby: build host-ruby with yaml support Message-ID: <20240517142732.5B32A87422@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=95093854e4c6ce69ee54df17fce20417312a3d0a branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master webkitgtk/wpewebkit needs a host-ruby with yaml support, otherwise the build fails with errors like: cd /home/peko/source/buildroot/output/build/webkitgtk-2.42.2/Source/WebCore && \ /home/peko/source/buildroot/output/host/bin/ruby \ /home/peko/source/buildroot/output/build/webkitgtk-2.42.2/Source/WebCore/Scripts/GenerateSettings.rb \ --outputDir /home/peko/source/buildroot/output/build/webkitgtk-2.42.2/WebCore/DerivedSources \ --template /home/peko/source/buildroot/output/build/webkitgtk-2.42.2/Source/WebCore/Scripts/SettingsTemplates/InternalSettingsGenerated.cpp.erb \ --template /home/peko/source/buildroot/output/build/webkitgtk-2.42.2/Source/WebCore/Scripts/SettingsTemplates/InternalSettingsGenerated.idl.erb \ --template /home/peko/source/buildroot/output/build/webkitgtk-2.42.2/Source/WebCore/Scripts/SettingsTemplates/InternalSettingsGenerated.h.erb \ --template /home/peko/source/buildroot/output/build/webkitgtk-2.42.2/Source/WebCore/Scripts/SettingsTemplates/Settings.cpp.erb \ --template /home/peko/source/buildroot/output/build/webkitgtk-2.42.2/Source/WebCore/Scripts/SettingsTemplates/Settings.h.erb \ /home/peko/source/buildroot/output/build/webkitgtk-2.42.2/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml \ /home/peko/source/buildroot/output/build/webkitgtk-2.42.2/Source/WebCore/page/Settings.yaml /home/peko/source/buildroot/output/host/lib/ruby/3.3.0/yaml.rb:3: warning: It seems your ruby installation is missing psych (for YAML output). To eliminate this warning, please install libyaml and reinstall your ruby. We do not currently have any Config.in.host options for ruby or libyaml, but given how small/fast libyaml is to build just do it unconditionally. Signed-off-by: Peter Korsgaard Signed-off-by: Yann E. MORIN --- package/ruby/ruby.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/ruby/ruby.mk b/package/ruby/ruby.mk index 4b9ce80e67..00fa0e0f65 100644 --- a/package/ruby/ruby.mk +++ b/package/ruby/ruby.mk @@ -20,7 +20,7 @@ RUBY_LICENSE_FILES = LEGAL COPYING BSDL RUBY_CPE_ID_VENDOR = ruby-lang RUBY_DEPENDENCIES = host-pkgconf host-ruby -HOST_RUBY_DEPENDENCIES = host-pkgconf host-openssl +HOST_RUBY_DEPENDENCIES = host-libyaml host-pkgconf host-openssl RUBY_MAKE_ENV = $(TARGET_MAKE_ENV) RUBY_CONF_OPTS = \ --disable-install-doc \ From yann.morin.1998 at free.fr Fri May 17 14:27:47 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 17 May 2024 16:27:47 +0200 Subject: [Buildroot] [PATCH v3 1/4] package/ruby: add host psych (yaml) support In-Reply-To: <20240416184209.2621561-1-thomas@devoogdt.com> References: <20240416184209.2621561-1-thomas@devoogdt.com> Message-ID: Thomas, All, On 2024-04-16 20:42 +0200, Thomas Devoogdt spake thusly: > Needed to compile webkitgtk 2.44.0. > > Signed-off-by: Thomas Devoogdt I just pushed a similar patch from Peter: 95093854e4c6 package/ruby: build host-ruby with yaml support Regards, Yann E. MORIN. > --- > v2: n/a > v3: n/a > --- > Question to the reviewer, should I use this: > > ``` > ifeq ($(BR2_PACKAGE_HOST_LIBYAML),y) > HOST_RUBY_DEPENDENCIES += host-libyaml > endif > ``` > --- > package/ruby/ruby.mk | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/package/ruby/ruby.mk b/package/ruby/ruby.mk > index 4b9ce80e67..ac7de38de4 100644 > --- a/package/ruby/ruby.mk > +++ b/package/ruby/ruby.mk > @@ -20,7 +20,7 @@ RUBY_LICENSE_FILES = LEGAL COPYING BSDL > RUBY_CPE_ID_VENDOR = ruby-lang > > RUBY_DEPENDENCIES = host-pkgconf host-ruby > -HOST_RUBY_DEPENDENCIES = host-pkgconf host-openssl > +HOST_RUBY_DEPENDENCIES = host-pkgconf host-openssl host-libyaml > RUBY_MAKE_ENV = $(TARGET_MAKE_ENV) > RUBY_CONF_OPTS = \ > --disable-install-doc \ > -- > 2.34.1 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From bb at ti.com Fri May 17 14:30:05 2024 From: bb at ti.com (Bryan Brattlof) Date: Fri, 17 May 2024 09:30:05 -0500 Subject: [Buildroot] [PATCH 1/1] package/ti-k3-r5-loader: support patching in same way as u-boot In-Reply-To: <20240516200837.244258-1-marc.murphy@sancloud.com> References: <20240516200837.244258-1-marc.murphy@sancloud.com> Message-ID: <20240517143005.lu4x4afty6t7qo7b@bryanbrattlof.com> Hi Marc, On May 16, 2024 thus sayeth Marc Murphy: > Signed-off-by: Marc Murphy > --- > boot/ti-k3-r5-loader/Config.in | 12 ++++++++++++ > boot/ti-k3-r5-loader/ti-k3-r5-loader.mk | 19 +++++++++++++++++++ > 2 files changed, 31 insertions(+) > > diff --git a/boot/ti-k3-r5-loader/Config.in b/boot/ti-k3-r5-loader/Config.in > index c276528fad..0e26a15369 100644 > --- a/boot/ti-k3-r5-loader/Config.in > +++ b/boot/ti-k3-r5-loader/Config.in > @@ -69,6 +69,18 @@ config BR2_TARGET_TI_K3_R5_LOADER_VERSION > if BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_GIT || \ > BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_HG || \ > BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_SVN > + > +config BR2_TARGET_TI_K3_R5_LOADER_PATCH > + string "Custom U-Boot patches" > + default "" > + help > + A space-separated list of patches to apply to U-Boot. > + Each patch can be described as an URL, a local file path, > + or a directory. In the case of a directory, all files > + matching *.patch in the directory will be applied. > + > + Most users may leave this empty > + Thanks for the patch! Just trying to understand what we're trying to do. Anytime I have some patches I want to apply on-top of a package version I'll typically put them in the board/ folder and use the BR2_GLOBAL_PATCH_DIR to point to that folder: board///patches Ideally we should be applying the same patches for uboot and ti-k3-r5-loader as it's really just a 32bit build of the SPL Is there something you're trying to do that needs a list of patches in different paths and not in the 64bit uboot package? ~Bryan From yann.morin.1998 at free.fr Fri May 17 14:36:02 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 17 May 2024 16:36:02 +0200 Subject: [Buildroot] [PATCH 1/2] configs/openblocks_a6_defconfig: bump Linux to fix binutils 2.41 build In-Reply-To: <20240514195019.4113851-1-peter@korsgaard.com> References: <20240514195019.4113851-1-peter@korsgaard.com> Message-ID: Peter, All, On 2024-05-14 21:50 +0200, Peter Korsgaard spake thusly: > Fixes: > https://gitlab.com/buildroot.org/buildroot/-/jobs/6813125272 > > The Linux kernel fails to build since commit e88225ed882 (package/binutils: > make 2.41 the default version): > > arch/arm/mm/proc-feroceon.S: Assembler messages: > arch/arm/mm/proc-feroceon.S:587: Error: junk at end of line, first unrecognized character is `#' > make[3]: *** [scripts/Makefile.build:430: arch/arm/mm/proc-feroceon.o] Error 1 > make[3]: *** Waiting for unfinished jobs.... > > Fix the build by bumping the kernel to 4.14.336, which includes commit > 3ab03df64f77 (ARM: 8933/1: replace Sun/Solaris style flag on section > directive): > > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-4.14.y&id=3ab03df64f7754728a2257c47775a70a88428331 > > Signed-off-by: Peter Korsgaard Applied to master, thanks. Regards, Yann E. MORIN. > --- > configs/openblocks_a6_defconfig | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/configs/openblocks_a6_defconfig b/configs/openblocks_a6_defconfig > index 2238c0940c..69b75f5043 100644 > --- a/configs/openblocks_a6_defconfig > +++ b/configs/openblocks_a6_defconfig > @@ -17,7 +17,7 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y > # kernel > BR2_LINUX_KERNEL=y > BR2_LINUX_KERNEL_CUSTOM_VERSION=y > -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.253" > +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.336" > BR2_LINUX_KERNEL_DEFCONFIG="mvebu_v5" > BR2_LINUX_KERNEL_APPENDED_UIMAGE=y > BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" > -- > 2.39.2 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Fri May 17 14:35:23 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 17 May 2024 16:35:23 +0200 Subject: [Buildroot] [git commit] configs/openblocks_a6_defconfig: add hashes for Linux / headers Message-ID: <20240517143639.7C98C87451@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=7a088c80e86cafc3bc10976f60ca3b24f5acd8f3 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master And enable BR2_DOWNLOAD_FORCE_CHECK_HASHES. Generated by utils/add-custom-hashes, with the (redundant) linux-headers.hash replaced by a symlink. Signed-off-by: Peter Korsgaard [yann.morin.1998 at free.fr: update .checkpackageignore] Signed-off-by: Yann E. MORIN --- .checkpackageignore | 1 - board/openblocks/a6/patches/linux-headers/linux-headers.hash | 1 + board/openblocks/a6/patches/linux/linux.hash | 2 ++ configs/openblocks_a6_defconfig | 2 ++ 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.checkpackageignore b/.checkpackageignore index 7057f91925..070b97116a 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -265,7 +265,6 @@ configs/olimex_a64_olinuxino_defconfig lib_defconfig.ForceCheckHash configs/olimex_stmp157_olinuxino_lime_defconfig lib_defconfig.ForceCheckHash configs/olpc_xo175_defconfig lib_defconfig.ForceCheckHash configs/olpc_xo1_defconfig lib_defconfig.ForceCheckHash -configs/openblocks_a6_defconfig lib_defconfig.ForceCheckHash configs/orangepi_lite2_defconfig lib_defconfig.ForceCheckHash configs/orangepi_lite_defconfig lib_defconfig.ForceCheckHash configs/orangepi_one_defconfig lib_defconfig.ForceCheckHash diff --git a/board/openblocks/a6/patches/linux-headers/linux-headers.hash b/board/openblocks/a6/patches/linux-headers/linux-headers.hash new file mode 120000 index 0000000000..5808d92afe --- /dev/null +++ b/board/openblocks/a6/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/openblocks/a6/patches/linux/linux.hash b/board/openblocks/a6/patches/linux/linux.hash new file mode 100644 index 0000000000..b207306a2b --- /dev/null +++ b/board/openblocks/a6/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 0820fdb7971c6974338081c11fbf2dc869870501e7bdcac4d0ed58ba1f57b61c linux-4.14.336.tar.xz diff --git a/configs/openblocks_a6_defconfig b/configs/openblocks_a6_defconfig index 69b75f5043..6a816597ac 100644 --- a/configs/openblocks_a6_defconfig +++ b/configs/openblocks_a6_defconfig @@ -3,6 +3,8 @@ BR2_arm=y BR2_arm926t=y # system +BR2_GLOBAL_PATCH_DIR="board/openblocks/a6/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y BR2_TARGET_GENERIC_HOSTNAME="openblocks-a6" BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" BR2_SYSTEM_DHCP="eth0" From yann.morin.1998 at free.fr Fri May 17 14:34:14 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 17 May 2024 16:34:14 +0200 Subject: [Buildroot] [git commit] configs/openblocks_a6_defconfig: bump Linux to fix binutils 2.41 build Message-ID: <20240517143639.6C4478744F@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=e711b827a94f589754e8c4eddfe9bbccd53684ca branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6813125272 The Linux kernel fails to build since commit e88225ed882 (package/binutils: make 2.41 the default version): arch/arm/mm/proc-feroceon.S: Assembler messages: arch/arm/mm/proc-feroceon.S:587: Error: junk at end of line, first unrecognized character is `#' make[3]: *** [scripts/Makefile.build:430: arch/arm/mm/proc-feroceon.o] Error 1 make[3]: *** Waiting for unfinished jobs.... Fix the build by bumping the kernel to 4.14.336, which includes commit 3ab03df64f77 (ARM: 8933/1: replace Sun/Solaris style flag on section directive): https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-4.14.y&id=3ab03df64f7754728a2257c47775a70a88428331 Signed-off-by: Peter Korsgaard Signed-off-by: Yann E. MORIN --- configs/openblocks_a6_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/openblocks_a6_defconfig b/configs/openblocks_a6_defconfig index 2238c0940c..69b75f5043 100644 --- a/configs/openblocks_a6_defconfig +++ b/configs/openblocks_a6_defconfig @@ -17,7 +17,7 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y # kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.253" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.336" BR2_LINUX_KERNEL_DEFCONFIG="mvebu_v5" BR2_LINUX_KERNEL_APPENDED_UIMAGE=y BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" From yann.morin.1998 at free.fr Fri May 17 14:37:14 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 17 May 2024 16:37:14 +0200 Subject: [Buildroot] [PATCH 2/2] configs/openblocks_a6_defconfig: add hashes for Linux / headers In-Reply-To: <20240514195019.4113851-2-peter@korsgaard.com> References: <20240514195019.4113851-1-peter@korsgaard.com> <20240514195019.4113851-2-peter@korsgaard.com> Message-ID: Peter, All, On 2024-05-14 21:50 +0200, Peter Korsgaard spake thusly: > And enable BR2_DOWNLOAD_FORCE_CHECK_HASHES. > > Generated by utils/add-custom-hashes, with the (redundant) > linux-headers.hash replaced by a symlink. > > Signed-off-by: Peter Korsgaard > --- > board/openblocks/a6/patches/linux-headers/linux-headers.hash | 1 + > board/openblocks/a6/patches/linux/linux.hash | 2 ++ > configs/openblocks_a6_defconfig | 2 ++ $ make check-package configs/openblocks_a6_defconfig:0: lib_defconfig.ForceCheckHash was expected to fail, did you fix the file and forget to update [...]/.checkpackageignore? Fixed, and applied to master, thanks. Regards, Yann E. MORIN. > 3 files changed, 5 insertions(+) > create mode 120000 board/openblocks/a6/patches/linux-headers/linux-headers.hash > create mode 100644 board/openblocks/a6/patches/linux/linux.hash > > diff --git a/board/openblocks/a6/patches/linux-headers/linux-headers.hash b/board/openblocks/a6/patches/linux-headers/linux-headers.hash > new file mode 120000 > index 0000000000..5808d92afe > --- /dev/null > +++ b/board/openblocks/a6/patches/linux-headers/linux-headers.hash > @@ -0,0 +1 @@ > +../linux/linux.hash > \ No newline at end of file > diff --git a/board/openblocks/a6/patches/linux/linux.hash b/board/openblocks/a6/patches/linux/linux.hash > new file mode 100644 > index 0000000000..b207306a2b > --- /dev/null > +++ b/board/openblocks/a6/patches/linux/linux.hash > @@ -0,0 +1,2 @@ > +# Locally calculated > +sha256 0820fdb7971c6974338081c11fbf2dc869870501e7bdcac4d0ed58ba1f57b61c linux-4.14.336.tar.xz > diff --git a/configs/openblocks_a6_defconfig b/configs/openblocks_a6_defconfig > index 69b75f5043..6a816597ac 100644 > --- a/configs/openblocks_a6_defconfig > +++ b/configs/openblocks_a6_defconfig > @@ -3,6 +3,8 @@ BR2_arm=y > BR2_arm926t=y > > # system > +BR2_GLOBAL_PATCH_DIR="board/openblocks/a6/patches" > +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y > BR2_TARGET_GENERIC_HOSTNAME="openblocks-a6" > BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" > BR2_SYSTEM_DHCP="eth0" > -- > 2.39.2 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Fri May 17 14:37:36 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 17 May 2024 16:37:36 +0200 Subject: [Buildroot] [git commit] package/libvncserver: correct WITH_THREADS=ON/OFF logic Message-ID: <20240517143849.AD62387455@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=7b3c0b19d4d587f52546ac92386e8a890022bb24 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Commit ee59023794f5540e5 (package/libvncserver: bump to version 0.9.12) changes the package from autotools to cmake and accidently inverted the threads logic. The reason this was not noticed is that the build system verifies if threads support works and otherwise disables it even when -DWITH_THREADS=ON is passed, E.G. for a nothread configuration: cmake ... -DWITH_THREADS=ON ... .. -- Performing Test CMAKE_HAVE_LIBC_PTHREAD -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed -- Looking for pthread_create in pthreads -- Looking for pthread_create in pthreads - not found -- Looking for pthread_create in pthread -- Looking for pthread_create in pthread - not found Signed-off-by: Peter Korsgaard Signed-off-by: Yann E. MORIN --- package/libvncserver/libvncserver.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/libvncserver/libvncserver.mk b/package/libvncserver/libvncserver.mk index 3a15a82d08..082f838f12 100644 --- a/package/libvncserver/libvncserver.mk +++ b/package/libvncserver/libvncserver.mk @@ -22,7 +22,7 @@ LIBVNCSERVER_CONF_OPTS += \ -DWITH_SDL=OFF \ -DWITH_TESTS=OFF -ifneq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) LIBVNCSERVER_CONF_OPTS += -DWITH_THREADS=ON else LIBVNCSERVER_CONF_OPTS += -DWITH_THREADS=OFF From yann.morin.1998 at free.fr Fri May 17 14:38:59 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 17 May 2024 16:38:59 +0200 Subject: [Buildroot] [PATCH] package/libvncserver: correct WITH_THREADS=ON/OFF logic In-Reply-To: <20240515145903.363218-1-peter@korsgaard.com> References: <20240515145903.363218-1-peter@korsgaard.com> Message-ID: Peter, All, On 2024-05-15 16:59 +0200, Peter Korsgaard spake thusly: > Commit ee59023794f5540e5 (package/libvncserver: bump to version 0.9.12) > changes the package from autotools to cmake and accidently inverted the > threads logic. > > The reason this was not noticed is that the build system verifies if threads > support works and otherwise disables it even when -DWITH_THREADS=ON is > passed, E.G. for a nothread configuration: > > cmake ... -DWITH_THREADS=ON ... > .. > -- Performing Test CMAKE_HAVE_LIBC_PTHREAD > -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed > -- Looking for pthread_create in pthreads > -- Looking for pthread_create in pthreads - not found > -- Looking for pthread_create in pthread > -- Looking for pthread_create in pthread - not found > > Signed-off-by: Peter Korsgaard Applied to master, thanks. Regards, Yann E. MORIN. > --- > package/libvncserver/libvncserver.mk | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/package/libvncserver/libvncserver.mk b/package/libvncserver/libvncserver.mk > index 3a15a82d08..082f838f12 100644 > --- a/package/libvncserver/libvncserver.mk > +++ b/package/libvncserver/libvncserver.mk > @@ -22,7 +22,7 @@ LIBVNCSERVER_CONF_OPTS += \ > -DWITH_SDL=OFF \ > -DWITH_TESTS=OFF > > -ifneq ($(BR2_TOOLCHAIN_HAS_THREADS),y) > +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) > LIBVNCSERVER_CONF_OPTS += -DWITH_THREADS=ON > else > LIBVNCSERVER_CONF_OPTS += -DWITH_THREADS=OFF > -- > 2.39.2 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Fri May 17 14:40:18 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 17 May 2024 16:40:18 +0200 Subject: [Buildroot] [PATCH] package/procps-ng/S02sysctl: pass SYSCTL_ARGS before -p argument for busybox In-Reply-To: <20240517141413.1716448-1-peter@korsgaard.com> References: <20240517141413.1716448-1-peter@korsgaard.com> Message-ID: Peter, All, On 2024-05-17 16:14 +0200, Peter Korsgaard spake thusly: > The busybox sysctl applet expects all arguments after -p to be filenames to > read: > > sysctl -p file -h > sysctl: -h: No such file or directory > > VS: > > sysctl -h -p file > sysctl: invalid option -- 'h' > BusyBox v1.36.1 (2024-05-17 15:27:21 CEST) multi-call binary. > > Usage: sysctl [-enq] { -a | -p [FILE]... | [-w] [KEY[=VALUE]]... } > > Show/set kernel parameters > > -e Don't warn about unknown keys > -n Don't show key names > -q Quiet > -a Show all values > -p Set values from FILEs (default /etc/sysctl.conf) > -w Set values > > This seems to be the intented behaviour: > https://git.busybox.net/busybox/tree/procps/sysctl.c#n317 > > Notice: The procps-ng variant is happy with both: > > sysctl -p file -h > > Usage: > sysctl [options] [variable[=value] ...] > > VS: > > sysctl -h -p file > > Usage: > sysctl [options] [variable[=value] ...] > > So pass SYSCTL_ARGS before the -p args so custom sysctl arguments can be > passed. > > Signed-off-by: Peter Korsgaard Applied to master, thanks. Regards, Yann E. MORIN. > --- > package/procps-ng/S02sysctl | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/package/procps-ng/S02sysctl b/package/procps-ng/S02sysctl > index 85d9ed50d0..c202833ab8 100644 > --- a/package/procps-ng/S02sysctl > +++ b/package/procps-ng/S02sysctl > @@ -43,7 +43,7 @@ run_logger() { > break > } > echo "* Applying $file ..." > - /sbin/sysctl -p "$file" $SYSCTL_ARGS || prog_status="FAIL" > + /sbin/sysctl $SYSCTL_ARGS -p "$file" || prog_status="FAIL" > done 2>&1 >&3 | /usr/bin/logger -t sysctl -p kern.err > } 3>&1 | /usr/bin/logger -t sysctl -p kern.info > } > @@ -60,7 +60,7 @@ run_std() { > break > } > echo "* Applying $file ..." > - /sbin/sysctl -p "$file" $SYSCTL_ARGS || prog_status="FAIL" > + /sbin/sysctl $SYSCTL_ARGS -p "$file" || prog_status="FAIL" > done > } > } > -- > 2.39.2 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Fri May 17 14:39:59 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 17 May 2024 16:39:59 +0200 Subject: [Buildroot] [git commit] package/procps-ng/S02sysctl: pass SYSCTL_ARGS before -p argument for busybox Message-ID: <20240517144149.1642C8745D@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=60b02eb6c6863e505289c7f8200c80fe1596fa10 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master The busybox sysctl applet expects all arguments after -p to be filenames to read: sysctl -p file -h sysctl: -h: No such file or directory VS: sysctl -h -p file sysctl: invalid option -- 'h' BusyBox v1.36.1 (2024-05-17 15:27:21 CEST) multi-call binary. Usage: sysctl [-enq] { -a | -p [FILE]... | [-w] [KEY[=VALUE]]... } Show/set kernel parameters -e Don't warn about unknown keys -n Don't show key names -q Quiet -a Show all values -p Set values from FILEs (default /etc/sysctl.conf) -w Set values This seems to be the intented behaviour: https://git.busybox.net/busybox/tree/procps/sysctl.c#n317 Notice: The procps-ng variant is happy with both: sysctl -p file -h Usage: sysctl [options] [variable[=value] ...] VS: sysctl -h -p file Usage: sysctl [options] [variable[=value] ...] So pass SYSCTL_ARGS before the -p args so custom sysctl arguments can be passed. Signed-off-by: Peter Korsgaard Signed-off-by: Yann E. MORIN --- package/procps-ng/S02sysctl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/procps-ng/S02sysctl b/package/procps-ng/S02sysctl index 85d9ed50d0..c202833ab8 100644 --- a/package/procps-ng/S02sysctl +++ b/package/procps-ng/S02sysctl @@ -43,7 +43,7 @@ run_logger() { break } echo "* Applying $file ..." - /sbin/sysctl -p "$file" $SYSCTL_ARGS || prog_status="FAIL" + /sbin/sysctl $SYSCTL_ARGS -p "$file" || prog_status="FAIL" done 2>&1 >&3 | /usr/bin/logger -t sysctl -p kern.err } 3>&1 | /usr/bin/logger -t sysctl -p kern.info } @@ -60,7 +60,7 @@ run_std() { break } echo "* Applying $file ..." - /sbin/sysctl -p "$file" $SYSCTL_ARGS || prog_status="FAIL" + /sbin/sysctl $SYSCTL_ARGS -p "$file" || prog_status="FAIL" done } } From romain.naour at smile.fr Fri May 17 14:53:47 2024 From: romain.naour at smile.fr (Romain Naour) Date: Fri, 17 May 2024 16:53:47 +0200 Subject: [Buildroot] [PATCH] package/go-bootstrap-stage3/go-bootstrap-stage3: fix go-bootstrap when parent dir contains invalid .git Message-ID: <20240517145347.269607-1-romain.naour@smile.fr> Since go-bootstrap-stage3 package has been added to Buildroot [1], all tests using go are failing only on Gitlab-ci jobs. The build succeed if we use docker-run script. Since the issue is only trigged by Gitlab-ci environment, the issue is related to the ownership of the (buildroot) git tree, see [2]. go seems to ignore the .gitconfig set by before_script. Anyway, go should not try to use git to retrieve some info since we are not building it from the go repository. go package was already patched for a similar issue when building host-go within docker [3]. Apply the same patch to go-bootstrap-stage3 to disable VCS support. See http://lists.busybox.net/pipermail/buildroot/2024-May/691273.html [1] f00eb37de9b4b0ddbdeb5c7ebae48c883c27e132 [2] a016b693f7830f3c8ae815851d3204b8b6e99821 [3] bc8e70a08ba083d978c828e31442a7645c9099d7 Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6833307649 (tests.fs.test_oci.TestOci) https://gitlab.com/buildroot.org/buildroot/-/jobs/6833307823 (tests.package.test_docker_compose.TestDockerCompose) https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308175 (tests.package.test_mender.TestMender) Runtime tested: https://gitlab.com/kubu93/buildroot/-/jobs/6860670292 Signed-off-by: Romain Naour Cc: Christian Stewart --- ...ldvcs-false-when-building-go-bootstr.patch | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 package/go-bootstrap-stage3/0001-cmd-dist-set-buildvcs-false-when-building-go-bootstr.patch diff --git a/package/go-bootstrap-stage3/0001-cmd-dist-set-buildvcs-false-when-building-go-bootstr.patch b/package/go-bootstrap-stage3/0001-cmd-dist-set-buildvcs-false-when-building-go-bootstr.patch new file mode 100644 index 0000000000..58f4581b02 --- /dev/null +++ b/package/go-bootstrap-stage3/0001-cmd-dist-set-buildvcs-false-when-building-go-bootstr.patch @@ -0,0 +1,71 @@ +From 6b05378097c6a386ed9912d2471976dc39504e86 Mon Sep 17 00:00:00 2001 +From: Christian Stewart +Date: Thu, 27 Jul 2023 21:28:47 -0700 +Subject: [PATCH] cmd/dist: set buildvcs=false when building go-bootstrap + +When building go-bootstrap as part of the make.bash process, the cmd/dist +invokes the bootstrap Go compiler to build the go_bootstrap tool: + +${GOROOT_BOOTSTRAP}/bin/go install -tags=math_big_pure_go compiler_bootstrap purego bootstrap/cmd/... + +If there is an invalid .git directory in a parent of ${GOROOT_BOOTSTRAP}, +make.bash will fail. Reproduction of the issue: + + mkdir go-issue-61620 + cd ./go-issue-61620 + wget https://go.dev/dl/go1.19.11.src.tar.gz + mkdir go-bootstrap + tar -xf go1.19.11.src.tar.gz -C ./go-bootstrap --strip-components=1 + cd ./go-bootstrap/src/ + bash make.bash + cd ../../ + wget https://go.dev/dl/go1.20.6.src.tar.gz + mkdir go + tar -xf go1.20.6.src.tar.gz -C ./go/ --strip-components=1 + printf "gitdir: ../../does/not/exist/.git" > ./.git + cd ./go/src/ + GOROOT_BOOTSTRAP=$(pwd)/../../go-bootstrap/ bash make.bash + +The build fails with the following error: + + Building Go toolchain1 using [snip]/go-1.19.10. + error obtaining VCS status: exit status 128 + Use -buildvcs=false to disable VCS stamping. + go tool dist: FAILED: [snip]/go-1.19.10/bin/go install -tags=math_big_pure_go \ + compiler_bootstrap purego bootstrap/cmd/...: exit status 1 + +This change unconditionally sets -buildvcs=false when compiling go-bootstrap. We +don't need the revision information in those binaries anyway. Setting this flag +was previously not done as we were unsure if the go-bootstrap compiler would be +new enough to support the buildvcs build flag. Since Go 1.20.x, Go 1.19.x is the +minimum version for go-bootstrap, and supports -buildvcs=false. We can now set +-buildvcs=false without worrying about compatibility. + +Related: https://github.com/golang/go/issues/54852 +Fixes: https://github.com/golang/go/issues/61620 + +Upstream: https://github.com/golang/go/pull/61621 + +Signed-off-by: Christian Stewart +Signed-off-by: Romain Naour +--- + src/cmd/dist/buildtool.go | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/cmd/dist/buildtool.go b/src/cmd/dist/buildtool.go +index a528d7aa76..3b411d6ebb 100644 +--- a/src/cmd/dist/buildtool.go ++++ b/src/cmd/dist/buildtool.go +@@ -221,6 +221,9 @@ func bootstrapBuildTools() { + cmd := []string{ + pathf("%s/bin/go", goroot_bootstrap), + "install", ++ // Fixes cases where an invalid .git is present in a parent of GOROOT_BOOTSTRAP. ++ // See: https://github.com/golang/go/issues/61620 ++ "-buildvcs=false", + "-tags=math_big_pure_go compiler_bootstrap purego", + } + if vflag > 0 { +-- +2.41.0 + -- 2.45.0 From marc.murphy at sancloud.com Fri May 17 15:05:16 2024 From: marc.murphy at sancloud.com (Marc Murphy) Date: Fri, 17 May 2024 15:05:16 +0000 Subject: [Buildroot] [PATCH 1/1] package/ti-k3-r5-loader: support patching in same way as u-boot In-Reply-To: <20240517143005.lu4x4afty6t7qo7b@bryanbrattlof.com> References: <20240516200837.244258-1-marc.murphy@sancloud.com> <20240517143005.lu4x4afty6t7qo7b@bryanbrattlof.com> Message-ID: Hi Bryan, > Hi Marc, > > On May 16, 2024 thus sayeth Marc Murphy: > > Signed-off-by: Marc Murphy > > --- > > boot/ti-k3-r5-loader/Config.in | 12 ++++++++++++ > > boot/ti-k3-r5-loader/ti-k3-r5-loader.mk | 19 +++++++++++++++++++ > > 2 files changed, 31 insertions(+) > > > > diff --git a/boot/ti-k3-r5-loader/Config.in > > b/boot/ti-k3-r5-loader/Config.in index c276528fad..0e26a15369 100644 > > --- a/boot/ti-k3-r5-loader/Config.in > > +++ b/boot/ti-k3-r5-loader/Config.in > > @@ -69,6 +69,18 @@ config BR2_TARGET_TI_K3_R5_LOADER_VERSION > > if BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_GIT || \ > > BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_HG || \ > > BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_SVN > > + > > +config BR2_TARGET_TI_K3_R5_LOADER_PATCH > > + string "Custom U-Boot patches" > > + default "" > > + help > > + A space-separated list of patches to apply to U-Boot. > > + Each patch can be described as an URL, a local file path, > > + or a directory. In the case of a directory, all files > > + matching *.patch in the directory will be applied. > > + > > + Most users may leave this empty > > + > > Thanks for the patch! Just trying to understand what we're trying to do. When we use an external config (BR2_EXTERNAL) and specify the version of u-boot to use we need to apply platform specific patches we normally use: $BR2_EXTERNAL /board/board-type/patches/uboot If we want to use a dedicated Ti release e.g. 08.06.00.007 and apply our patches to it, this is good for the normal uboot bootloader. If we need to apply patches to the k3 bootloader it is not possible and buildroot checks out a dedicated folder for building: drwxr-xr-x 25 marc marc 4096 May 16 14:34 ti-k3-r5-loader-custom drwxr-xr-x 25 marc marc 4096 May 16 14:34 uboot-custom We have dedicated board configs, device tree and some code changes that are not in mainline and need applying to both builds of uboot. If there is another way to do this I would appreciate the feedback. > > Anytime I have some patches I want to apply on-top of a package version I'll > typically put them in the board/ folder and use the BR2_GLOBAL_PATCH_DIR to > point to that folder: > > board///patches > > Ideally we should be applying the same patches for uboot and ti-k3-r5-loader > as it's really just a 32bit build of the SPL > > Is there something you're trying to do that needs a list of patches in different > paths and not in the 64bit uboot package? > > ~Bryan > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot Marc From yann.morin.1998 at free.fr Fri May 17 15:38:13 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 17 May 2024 17:38:13 +0200 Subject: [Buildroot] [PATCH] package/go-bootstrap-stage3/go-bootstrap-stage3: fix go-bootstrap when parent dir contains invalid .git In-Reply-To: <20240517145347.269607-1-romain.naour@smile.fr> References: <20240517145347.269607-1-romain.naour@smile.fr> Message-ID: Romain, All, On 2024-05-17 16:53 +0200, Romain Naour spake thusly: > Since go-bootstrap-stage3 package has been added to Buildroot [1], all > tests using go are failing only on Gitlab-ci jobs. The build succeed > if we use docker-run script. > > Since the issue is only trigged by Gitlab-ci environment, the issue > is related to the ownership of the (buildroot) git tree, see [2]. > go seems to ignore the .gitconfig set by before_script. > > Anyway, go should not try to use git to retrieve some info since we > are not building it from the go repository. > > go package was already patched for a similar issue when building > host-go within docker [3]. Apply the same patch to go-bootstrap-stage3 > to disable VCS support. > > See > http://lists.busybox.net/pipermail/buildroot/2024-May/691273.html > > [1] f00eb37de9b4b0ddbdeb5c7ebae48c883c27e132 > [2] a016b693f7830f3c8ae815851d3204b8b6e99821 > [3] bc8e70a08ba083d978c828e31442a7645c9099d7 > > Fixes: > https://gitlab.com/buildroot.org/buildroot/-/jobs/6833307649 (tests.fs.test_oci.TestOci) > https://gitlab.com/buildroot.org/buildroot/-/jobs/6833307823 (tests.package.test_docker_compose.TestDockerCompose) > https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308175 (tests.package.test_mender.TestMender) > > Runtime tested: > https://gitlab.com/kubu93/buildroot/-/jobs/6860670292 > > Signed-off-by: Romain Naour > Cc: Christian Stewart Applied to master, thanks. (You had a duplicated go-bootstrap-stage3 in the title, so I removed it). Regards, Yann E. MORIN. > --- > ...ldvcs-false-when-building-go-bootstr.patch | 71 +++++++++++++++++++ > 1 file changed, 71 insertions(+) > create mode 100644 package/go-bootstrap-stage3/0001-cmd-dist-set-buildvcs-false-when-building-go-bootstr.patch > > diff --git a/package/go-bootstrap-stage3/0001-cmd-dist-set-buildvcs-false-when-building-go-bootstr.patch b/package/go-bootstrap-stage3/0001-cmd-dist-set-buildvcs-false-when-building-go-bootstr.patch > new file mode 100644 > index 0000000000..58f4581b02 > --- /dev/null > +++ b/package/go-bootstrap-stage3/0001-cmd-dist-set-buildvcs-false-when-building-go-bootstr.patch > @@ -0,0 +1,71 @@ > +From 6b05378097c6a386ed9912d2471976dc39504e86 Mon Sep 17 00:00:00 2001 > +From: Christian Stewart > +Date: Thu, 27 Jul 2023 21:28:47 -0700 > +Subject: [PATCH] cmd/dist: set buildvcs=false when building go-bootstrap > + > +When building go-bootstrap as part of the make.bash process, the cmd/dist > +invokes the bootstrap Go compiler to build the go_bootstrap tool: > + > +${GOROOT_BOOTSTRAP}/bin/go install -tags=math_big_pure_go compiler_bootstrap purego bootstrap/cmd/... > + > +If there is an invalid .git directory in a parent of ${GOROOT_BOOTSTRAP}, > +make.bash will fail. Reproduction of the issue: > + > + mkdir go-issue-61620 > + cd ./go-issue-61620 > + wget https://go.dev/dl/go1.19.11.src.tar.gz > + mkdir go-bootstrap > + tar -xf go1.19.11.src.tar.gz -C ./go-bootstrap --strip-components=1 > + cd ./go-bootstrap/src/ > + bash make.bash > + cd ../../ > + wget https://go.dev/dl/go1.20.6.src.tar.gz > + mkdir go > + tar -xf go1.20.6.src.tar.gz -C ./go/ --strip-components=1 > + printf "gitdir: ../../does/not/exist/.git" > ./.git > + cd ./go/src/ > + GOROOT_BOOTSTRAP=$(pwd)/../../go-bootstrap/ bash make.bash > + > +The build fails with the following error: > + > + Building Go toolchain1 using [snip]/go-1.19.10. > + error obtaining VCS status: exit status 128 > + Use -buildvcs=false to disable VCS stamping. > + go tool dist: FAILED: [snip]/go-1.19.10/bin/go install -tags=math_big_pure_go \ > + compiler_bootstrap purego bootstrap/cmd/...: exit status 1 > + > +This change unconditionally sets -buildvcs=false when compiling go-bootstrap. We > +don't need the revision information in those binaries anyway. Setting this flag > +was previously not done as we were unsure if the go-bootstrap compiler would be > +new enough to support the buildvcs build flag. Since Go 1.20.x, Go 1.19.x is the > +minimum version for go-bootstrap, and supports -buildvcs=false. We can now set > +-buildvcs=false without worrying about compatibility. > + > +Related: https://github.com/golang/go/issues/54852 > +Fixes: https://github.com/golang/go/issues/61620 > + > +Upstream: https://github.com/golang/go/pull/61621 > + > +Signed-off-by: Christian Stewart > +Signed-off-by: Romain Naour > +--- > + src/cmd/dist/buildtool.go | 3 +++ > + 1 file changed, 3 insertions(+) > + > +diff --git a/src/cmd/dist/buildtool.go b/src/cmd/dist/buildtool.go > +index a528d7aa76..3b411d6ebb 100644 > +--- a/src/cmd/dist/buildtool.go > ++++ b/src/cmd/dist/buildtool.go > +@@ -221,6 +221,9 @@ func bootstrapBuildTools() { > + cmd := []string{ > + pathf("%s/bin/go", goroot_bootstrap), > + "install", > ++ // Fixes cases where an invalid .git is present in a parent of GOROOT_BOOTSTRAP. > ++ // See: https://github.com/golang/go/issues/61620 > ++ "-buildvcs=false", > + "-tags=math_big_pure_go compiler_bootstrap purego", > + } > + if vflag > 0 { > +-- > +2.41.0 > + > -- > 2.45.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Fri May 17 15:36:59 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 17 May 2024 17:36:59 +0200 Subject: [Buildroot] [git commit] package/go-bootstrap-stage3: fix go-bootstrap when parent dir contains invalid .git Message-ID: <20240517153823.EB21187468@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=25991c843c3fc3fd1a93a49511960f4eada3d38c branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Since go-bootstrap-stage3 package has been added to Buildroot [1], all tests using go are failing only on Gitlab-ci jobs. The build succeed if we use docker-run script. Since the issue is only trigged by Gitlab-ci environment, the issue is related to the ownership of the (buildroot) git tree, see [2]. go seems to ignore the .gitconfig set by before_script. Anyway, go should not try to use git to retrieve some info since we are not building it from the go repository. go package was already patched for a similar issue when building host-go within docker [3]. Apply the same patch to go-bootstrap-stage3 to disable VCS support. See http://lists.busybox.net/pipermail/buildroot/2024-May/691273.html [1] f00eb37de9b4b0ddbdeb5c7ebae48c883c27e132 [2] a016b693f7830f3c8ae815851d3204b8b6e99821 [3] bc8e70a08ba083d978c828e31442a7645c9099d7 Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6833307649 (tests.fs.test_oci.TestOci) https://gitlab.com/buildroot.org/buildroot/-/jobs/6833307823 (tests.package.test_docker_compose.TestDockerCompose) https://gitlab.com/buildroot.org/buildroot/-/jobs/6833308175 (tests.package.test_mender.TestMender) Runtime tested: https://gitlab.com/kubu93/buildroot/-/jobs/6860670292 Signed-off-by: Romain Naour Cc: Christian Stewart Signed-off-by: Yann E. MORIN --- ...t-buildvcs-false-when-building-go-bootstr.patch | 71 ++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/package/go-bootstrap-stage3/0001-cmd-dist-set-buildvcs-false-when-building-go-bootstr.patch b/package/go-bootstrap-stage3/0001-cmd-dist-set-buildvcs-false-when-building-go-bootstr.patch new file mode 100644 index 0000000000..58f4581b02 --- /dev/null +++ b/package/go-bootstrap-stage3/0001-cmd-dist-set-buildvcs-false-when-building-go-bootstr.patch @@ -0,0 +1,71 @@ +From 6b05378097c6a386ed9912d2471976dc39504e86 Mon Sep 17 00:00:00 2001 +From: Christian Stewart +Date: Thu, 27 Jul 2023 21:28:47 -0700 +Subject: [PATCH] cmd/dist: set buildvcs=false when building go-bootstrap + +When building go-bootstrap as part of the make.bash process, the cmd/dist +invokes the bootstrap Go compiler to build the go_bootstrap tool: + +${GOROOT_BOOTSTRAP}/bin/go install -tags=math_big_pure_go compiler_bootstrap purego bootstrap/cmd/... + +If there is an invalid .git directory in a parent of ${GOROOT_BOOTSTRAP}, +make.bash will fail. Reproduction of the issue: + + mkdir go-issue-61620 + cd ./go-issue-61620 + wget https://go.dev/dl/go1.19.11.src.tar.gz + mkdir go-bootstrap + tar -xf go1.19.11.src.tar.gz -C ./go-bootstrap --strip-components=1 + cd ./go-bootstrap/src/ + bash make.bash + cd ../../ + wget https://go.dev/dl/go1.20.6.src.tar.gz + mkdir go + tar -xf go1.20.6.src.tar.gz -C ./go/ --strip-components=1 + printf "gitdir: ../../does/not/exist/.git" > ./.git + cd ./go/src/ + GOROOT_BOOTSTRAP=$(pwd)/../../go-bootstrap/ bash make.bash + +The build fails with the following error: + + Building Go toolchain1 using [snip]/go-1.19.10. + error obtaining VCS status: exit status 128 + Use -buildvcs=false to disable VCS stamping. + go tool dist: FAILED: [snip]/go-1.19.10/bin/go install -tags=math_big_pure_go \ + compiler_bootstrap purego bootstrap/cmd/...: exit status 1 + +This change unconditionally sets -buildvcs=false when compiling go-bootstrap. We +don't need the revision information in those binaries anyway. Setting this flag +was previously not done as we were unsure if the go-bootstrap compiler would be +new enough to support the buildvcs build flag. Since Go 1.20.x, Go 1.19.x is the +minimum version for go-bootstrap, and supports -buildvcs=false. We can now set +-buildvcs=false without worrying about compatibility. + +Related: https://github.com/golang/go/issues/54852 +Fixes: https://github.com/golang/go/issues/61620 + +Upstream: https://github.com/golang/go/pull/61621 + +Signed-off-by: Christian Stewart +Signed-off-by: Romain Naour +--- + src/cmd/dist/buildtool.go | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/cmd/dist/buildtool.go b/src/cmd/dist/buildtool.go +index a528d7aa76..3b411d6ebb 100644 +--- a/src/cmd/dist/buildtool.go ++++ b/src/cmd/dist/buildtool.go +@@ -221,6 +221,9 @@ func bootstrapBuildTools() { + cmd := []string{ + pathf("%s/bin/go", goroot_bootstrap), + "install", ++ // Fixes cases where an invalid .git is present in a parent of GOROOT_BOOTSTRAP. ++ // See: https://github.com/golang/go/issues/61620 ++ "-buildvcs=false", + "-tags=math_big_pure_go compiler_bootstrap purego", + } + if vflag > 0 { +-- +2.41.0 + From yann.morin.1998 at free.fr Fri May 17 15:39:02 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 17 May 2024 17:39:02 +0200 Subject: [Buildroot] [PATCH 1/4] package/quota: Update DEVELOPERS address In-Reply-To: <20240517132039.7124-2-jarkko@kernel.org> References: <20240517132039.7124-1-jarkko@kernel.org> <20240517132039.7124-2-jarkko@kernel.org> Message-ID: Jarkko, All, On 2024-05-17 16:20 +0300, Jarkko Sakkinen spake thusly: > Signed-off-by: Jarkko Sakkinen Applied to master, thanks. Regards, Yann E. MORIN. > --- > DEVELOPERS | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/DEVELOPERS b/DEVELOPERS > index a9deddb343..52c9b84a9d 100644 > --- a/DEVELOPERS > +++ b/DEVELOPERS > @@ -1518,7 +1518,7 @@ F: package/zip/ > N: Jared Bents > F: package/libvirt/ > > -N: Jarkko Sakkinen > +N: Jarkko Sakkinen > F: package/quota/ > > N: Jason Pruitt > -- > 2.45.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Fri May 17 15:38:26 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 17 May 2024 17:38:26 +0200 Subject: [Buildroot] [git commit] package/quota: Update DEVELOPERS address Message-ID: <20240517153946.0E3CE8746B@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=51fe7536c0089bac5e3a7091852036a0024be534 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Signed-off-by: Jarkko Sakkinen Signed-off-by: Yann E. MORIN --- DEVELOPERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEVELOPERS b/DEVELOPERS index a9deddb343..52c9b84a9d 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -1518,7 +1518,7 @@ F: package/zip/ N: Jared Bents F: package/libvirt/ -N: Jarkko Sakkinen +N: Jarkko Sakkinen F: package/quota/ N: Jason Pruitt From jarkko at kernel.org Fri May 17 16:26:21 2024 From: jarkko at kernel.org (Jarkko Sakkinen) Date: Fri, 17 May 2024 19:26:21 +0300 Subject: [Buildroot] [PATCH 2/4] package/json-glib: add host build In-Reply-To: References: <20240517132039.7124-1-jarkko@kernel.org> <20240517132039.7124-3-jarkko@kernel.org> Message-ID: On Fri May 17, 2024 at 4:39 PM EEST, Yann E. MORIN wrote: > Jarkko, All, > > Thanks for these patches; please find comments below. > > On 2024-05-17 16:20 +0300, Jarkko Sakkinen spake thusly: > > Signed-off-by: Jarkko Sakkinen > > --- > > package/json-glib/json-glib.mk | 12 ++++++++++++ > > 1 file changed, 12 insertions(+) > > > > diff --git a/package/json-glib/json-glib.mk b/package/json-glib/json-glib.mk > > index cd53f24cee..ffdc76f2c1 100644 > > --- a/package/json-glib/json-glib.mk > > +++ b/package/json-glib/json-glib.mk > > @@ -18,19 +18,31 @@ JSON_GLIB_DEPENDENCIES = \ > > host-pkgconf \ > > libglib2 > > > > +HOST_JSON_GLIB_DEPENDENCIES = \ > > + $(HOST_NLS_DEPENDENCIES) \ > > + host-pkgconf \ > > + host-libglib2 > > + > > ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) > > JSON_GLIB_CONF_OPTS += -Dintrospection=enabled > > JSON_GLIB_DEPENDENCIES += gobject-introspection > > +HOST_JSON_GLIB_CONF_OPTS += -Dintrospection=enabled > > BR2_PACKAGE_GOBJECT_INTROSPECTION (the condition for this block) is a > target setting, so it semantically does not make sense to protect the > host variant with that condition. > > Usually, for host variants, we do not have conditional compilation of > features; either the feature is needed to run on the host, in which case > we always enable it, or it is not needed, in which case we always > disable it. > > The only case where we would have such an option for such a feature, > is when the feature needs a lot of dependencies, or time-consuming > dependencies (e.g. needs LLVM!). GOI is probably a good reasong to > add such an option, *iff* introspection is needed on the host, which I > doubt is. > > > +HOST_JSON_GLIB_DEPENDENCIES += gobject-introspection > > Here, you instruct a host variant to depend on a target variant, which > is usually not what you intended. And indeed, I believe here you'd need > a dependency on host-gobject-introspection. I guess it worked ion your > case, because gobject-introspection has a dependency on > host-gobject-introspection, so that pulled it in for you. Still, this is > probably not correct. > > So, my proposal would be to always disable GOI unconditionally in the > host variant, unless there are cases where it is required, in which case > we always enable it. > > Unless there is actually a reason that the host variant has the same > feature set as the target variant, in which case it should be explained > in the commit log. > > > else > > JSON_GLIB_CONF_OPTS += -Dintrospection=disabled > > +HOST_JSON_GLIB_CONF_OPTS += -Dintrospection=disabled > > endif > > > > ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) > > JSON_GLIB_CONF_OPTS += -Dnls=enabled > > +HOST_JSON_GLIB_CONF_OPTS += -Dnls=enabled > > else > > JSON_GLIB_CONF_OPTS += -Dnls=disabled > > +HOST_JSON_GLIB_CONF_OPTS += -Dnls=disabled > > endif > > Ditto: the BR2_SYSTEM_ENABLE_NLS option drives NLS support for the > target, not for the host. For the host, we assume it is never needed, > and it is already forcefully disabled in the autotools-package infra: > https://gitlab.com/buildroot.org/buildroot/-/blob/master/package/pkg-autotools.mk#L196 > > > JSON_GLIB_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) > > +HOST_JSON_GLIB_LDFLAGS = $(HOST_LDFLAGS) $(HOST_NLS_LIBS) > > HOST_NLS_LIBS is never defined anywhere, so this is basically a noop. > ;-) Thanks for the feedback. I have already patch in my tree to address this, which I will later on squash to the patch under the review: https://gitlab.com/jarkkojs/buildroot/-/commits/swtpm > Regards, > Yann E. MORIN. BR, Jarkko From fontaine.fabrice at gmail.com Fri May 17 17:12:58 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Fri, 17 May 2024 19:12:58 +0200 Subject: [Buildroot] [PATCH 1/1] package/gr-osmosdr: fix python build Message-ID: <20240517171258.783129-1-fontaine.fabrice@gmail.com> Fix the following python build failure: In file included from /home/buildroot/instance-0/output-1/host/include/python3.11/Python.h:38, from /home/buildroot/instance-0/output-1/host/arc-buildroot-linux-gnu/sysroot/usr/include/pybind11/detail/common.h:266, from /home/buildroot/instance-0/output-1/host/arc-buildroot-linux-gnu/sysroot/usr/include/pybind11/attr.h:13, from /home/buildroot/instance-0/output-1/host/arc-buildroot-linux-gnu/sysroot/usr/include/pybind11/detail/class.h:12, from /home/buildroot/instance-0/output-1/host/arc-buildroot-linux-gnu/sysroot/usr/include/pybind11/pybind11.h:13, from /home/buildroot/instance-0/output-1/build/gr-osmosdr-0.2.4/python/bindings/device_python.cc:1: /home/buildroot/instance-0/output-1/host/include/python3.11/pyport.h:596:2: error: #error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)." 596 | #error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)." | ^~~~~ Fixes: - http://autobuild.buildroot.org/results/f009958c37902a224512b336fcb431903bdd0b96 Signed-off-by: Fabrice Fontaine --- package/gr-osmosdr/gr-osmosdr.mk | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package/gr-osmosdr/gr-osmosdr.mk b/package/gr-osmosdr/gr-osmosdr.mk index 316ed80887..0d1e4edb30 100644 --- a/package/gr-osmosdr/gr-osmosdr.mk +++ b/package/gr-osmosdr/gr-osmosdr.mk @@ -23,7 +23,9 @@ GR_OSMOSDR_CONF_OPTS = \ GR_OSMOSDR_INSTALL_STAGING = YES ifeq ($(BR2_PACKAGE_GNURADIO_PYTHON),y) -GR_OSMOSDR_CONF_OPTS += -DENABLE_PYTHON=ON +GR_OSMOSDR_CONF_OPTS += \ + -DENABLE_PYTHON=ON \ + -DPYTHON_INCLUDE_DIRS=$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR) GR_OSMOSDR_DEPENDENCIES += python3 host-python-six else GR_OSMOSDR_CONF_OPTS += -DENABLE_PYTHON=OFF -- 2.43.0 From jarkko at kernel.org Fri May 17 17:31:37 2024 From: jarkko at kernel.org (Jarkko Sakkinen) Date: Fri, 17 May 2024 20:31:37 +0300 Subject: [Buildroot] [PATCH v2 0/3] swtpm and libtpms host packages Message-ID: <20240517173140.24531-1-jarkko@kernel.org> Add swtpm and libtpms host packages. Testing: git clone https://gitlab.com/jarkkojs/linux-tpmdd-test.git cd linux-tpmdd-test cmake -Bbuild && make -Cbuild buildroot-prepare make -Cbuild/buildroot/build build/buildroot/build/images/run-tests.sh Jarkko Sakkinen (3): package/json-glib: add host build package/libtpms: add host package package/swtpm: add host package DEVELOPERS | 2 ++ package/Config.in | 1 + package/Config.in.host | 1 + package/json-glib/Config.in | 9 +++++++++ package/json-glib/json-glib.mk | 5 +++++ package/libtpms/Config.in | 19 +++++++++++++++++++ package/libtpms/libtpms.hash | 2 ++ package/libtpms/libtpms.mk | 17 +++++++++++++++++ package/swtpm/Config.in.host | 12 ++++++++++++ package/swtpm/swtpm.hash | 2 ++ package/swtpm/swtpm.mk | 23 +++++++++++++++++++++++ 11 files changed, 93 insertions(+) create mode 100644 package/libtpms/Config.in create mode 100644 package/libtpms/libtpms.hash create mode 100644 package/libtpms/libtpms.mk create mode 100644 package/swtpm/Config.in.host create mode 100644 package/swtpm/swtpm.hash create mode 100644 package/swtpm/swtpm.mk -- 2.45.0 From jarkko at kernel.org Fri May 17 17:31:39 2024 From: jarkko at kernel.org (Jarkko Sakkinen) Date: Fri, 17 May 2024 20:31:39 +0300 Subject: [Buildroot] [PATCH v2 2/3] package/libtpms: add host package In-Reply-To: <20240517173140.24531-1-jarkko@kernel.org> References: <20240517173140.24531-1-jarkko@kernel.org> Message-ID: <20240517173140.24531-3-jarkko@kernel.org> Libtpms is a library that targets the integration of TPM functionality into hypervisors, primarily into Qemu. Libtpms provides a very narrow public API for this purpose so that integration is possible. Only the minimum of necessary APIs are made publicly available. Signed-off-by: Jarkko Sakkinen --- v2: - Use host packages in package/libtpms/Config.in. - Select BR2_HOST_PACKAGE_LIBOPENSSL. --- DEVELOPERS | 1 + package/Config.in | 1 + package/libtpms/Config.in | 19 +++++++++++++++++++ package/libtpms/libtpms.hash | 2 ++ package/libtpms/libtpms.mk | 17 +++++++++++++++++ 5 files changed, 40 insertions(+) create mode 100644 package/libtpms/Config.in create mode 100644 package/libtpms/libtpms.hash create mode 100644 package/libtpms/libtpms.mk diff --git a/DEVELOPERS b/DEVELOPERS index 52c9b84a9d..db0dc702a8 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -1519,6 +1519,7 @@ N: Jared Bents F: package/libvirt/ N: Jarkko Sakkinen +F: package/libtpms/ F: package/quota/ N: Jason Pruitt diff --git a/package/Config.in b/package/Config.in index 1b6a5b0dab..30b76349ec 100644 --- a/package/Config.in +++ b/package/Config.in @@ -1569,6 +1569,7 @@ menu "Crypto" source "package/libssh/Config.in" source "package/libssh2/Config.in" source "package/libtomcrypt/Config.in" + source "package/libtpms/Config.in" source "package/libuecc/Config.in" source "package/libxcrypt/Config.in" source "package/mbedtls/Config.in" diff --git a/package/libtpms/Config.in b/package/libtpms/Config.in new file mode 100644 index 0000000000..9308458248 --- /dev/null +++ b/package/libtpms/Config.in @@ -0,0 +1,19 @@ +config BR2_HOST_PACKAGE_LIBTPMS + bool "libtpms" + select BR2_HOST_PACKAGE_LIBTOOL + help + Libtpms is a library that targets the integration of TPM + functionality into hypervisors, primarily into Qemu. Libtpms + provides a very narrow public API for this purpose so that + integration is possible. Only the minimum of necessary APIs + are made publicly available. + + It is assumed that the user of libtpms is familiar with the + concepts of the Trusted Platform Module (TPM). For the + interaction with libtpms it is necessary to know how to + construct valid TPM commands and to be able to parse their + results. It is not within the scope of libtpms's documentation + to provide background on this. See the section on references + below. + + https://github.com/stefanberger/libtpms/wiki diff --git a/package/libtpms/libtpms.hash b/package/libtpms/libtpms.hash new file mode 100644 index 0000000000..1026aaa4f4 --- /dev/null +++ b/package/libtpms/libtpms.hash @@ -0,0 +1,2 @@ +sha256 2807466f1563ebe45fdd12dd26e501e8a0c4fbb99c7c428fbb508789efd221c0 libtpms-0.9.6.tar.gz +sha256 82f1e6bae374bb6a9d4f4596767fd33e499718d560de140fd9f3d402cc5e41fb LICENSE diff --git a/package/libtpms/libtpms.mk b/package/libtpms/libtpms.mk new file mode 100644 index 0000000000..c588b2892c --- /dev/null +++ b/package/libtpms/libtpms.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# libtpms +# +################################################################################ + +LIBTPMS_VERSION = 0.9.6 +LIBTPMS_SITE = $(call github,stefanberger,libtpms,v$(LIBTPMS_VERSION)) +LIBTPMS_LICENSE = BSD-4-Clause +LIBTPMS_LICENSE_FILES = LICENSE +LIBTPMS_INSTALL_STAGING = YES +LIBTPMS_AUTORECONF = YES + +HOST_LIBTPMS_DEPENDENCIES = host-libtool host-pkgconf host-libopenssl +HOST_LIBTPMS_CONF_OPTS = --with-openssl -with-tpm2 + +$(eval $(host-autotools-package)) -- 2.45.0 From jarkko at kernel.org Fri May 17 17:31:38 2024 From: jarkko at kernel.org (Jarkko Sakkinen) Date: Fri, 17 May 2024 20:31:38 +0300 Subject: [Buildroot] [PATCH v2 1/3] package/json-glib: add host build In-Reply-To: <20240517173140.24531-1-jarkko@kernel.org> References: <20240517173140.24531-1-jarkko@kernel.org> Message-ID: <20240517173140.24531-2-jarkko@kernel.org> Signed-off-by: Jarkko Sakkinen --- v2: - Disable GOI and NLS for the host. - Add the missing host config. --- package/json-glib/Config.in | 9 +++++++++ package/json-glib/json-glib.mk | 5 +++++ 2 files changed, 14 insertions(+) diff --git a/package/json-glib/Config.in b/package/json-glib/Config.in index 9df03d924a..ebf697bc64 100644 --- a/package/json-glib/Config.in +++ b/package/json-glib/Config.in @@ -11,6 +11,15 @@ config BR2_PACKAGE_JSON_GLIB https://live.gnome.org/JsonGlib/ +config BR2_HOST_PACKAGE_JSON_GLIB + bool "json-glib" + help + JSON-GLib is a library providing serialization and + deserialization support for the JavaScript Object Notation + (JSON) format described by RFC 4627. + + https://live.gnome.org/JsonGlib/ + comment "json-glib needs a toolchain w/ wchar, threads" depends on BR2_USE_MMU depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/json-glib/json-glib.mk b/package/json-glib/json-glib.mk index cd53f24cee..a6bc53b823 100644 --- a/package/json-glib/json-glib.mk +++ b/package/json-glib/json-glib.mk @@ -18,6 +18,10 @@ JSON_GLIB_DEPENDENCIES = \ host-pkgconf \ libglib2 +HOST_JSON_GLIB_DEPENDENCIES = \ + host-pkgconf \ + host-libglib2 + ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) JSON_GLIB_CONF_OPTS += -Dintrospection=enabled JSON_GLIB_DEPENDENCIES += gobject-introspection @@ -34,3 +38,4 @@ endif JSON_GLIB_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) $(eval $(meson-package)) +$(eval $(host-meson-package)) -- 2.45.0 From jarkko at kernel.org Fri May 17 17:31:40 2024 From: jarkko at kernel.org (Jarkko Sakkinen) Date: Fri, 17 May 2024 20:31:40 +0300 Subject: [Buildroot] [PATCH v2 3/3] package/swtpm: add host package In-Reply-To: <20240517173140.24531-1-jarkko@kernel.org> References: <20240517173140.24531-1-jarkko@kernel.org> Message-ID: <20240517173140.24531-4-jarkko@kernel.org> The SWTPM package provides TPM emulators with different front-end interfaces to libtpms. TPM emulators provide socket interfaces (TCP/IP and Unix) and the Linux CUSE interface for the creation of multiple native /dev/vtpm* devices. Signed-off-by: Jarkko Sakkinen --- v2: - Remove libraries from Config.host.in. - Put deps line-by-line. --- DEVELOPERS | 1 + package/Config.in.host | 1 + package/swtpm/Config.in.host | 12 ++++++++++++ package/swtpm/swtpm.hash | 2 ++ package/swtpm/swtpm.mk | 23 +++++++++++++++++++++++ 5 files changed, 39 insertions(+) create mode 100644 package/swtpm/Config.in.host create mode 100644 package/swtpm/swtpm.hash create mode 100644 package/swtpm/swtpm.mk diff --git a/DEVELOPERS b/DEVELOPERS index db0dc702a8..732002f85b 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -1521,6 +1521,7 @@ F: package/libvirt/ N: Jarkko Sakkinen F: package/libtpms/ F: package/quota/ +F: package/swtpm/ N: Jason Pruitt F: package/librtlsdr/ diff --git a/package/Config.in.host b/package/Config.in.host index 986b2854d0..0cf9dc3897 100644 --- a/package/Config.in.host +++ b/package/Config.in.host @@ -110,6 +110,7 @@ menu "Host utilities" source "package/starfive-spltool/Config.in.host" source "package/sunxi-tools/Config.in.host" source "package/swig/Config.in.host" + source "package/swtpm/Config.in.host" source "package/swugenerator/Config.in.host" source "package/systemd/Config.in.host" source "package/tegrarcm/Config.in.host" diff --git a/package/swtpm/Config.in.host b/package/swtpm/Config.in.host new file mode 100644 index 0000000000..79a9aa28af --- /dev/null +++ b/package/swtpm/Config.in.host @@ -0,0 +1,12 @@ +config BR2_PACKAGE_HOST_SWTPM + bool "host swtpm" + select BR2_PACKAGE_LIBTOOL + help + Compiles SWTPM software TPM emulator for the host. + + The SWTPM package provides TPM emulators with different + front-end interfaces to libtpms. TPM emulators provide socket + interfaces (TCP/IP and Unix) and the Linux CUSE interface for + the creation of multiple native /dev/vtpm* devices. + + https://github.com/stefanberger/swtpm/wiki diff --git a/package/swtpm/swtpm.hash b/package/swtpm/swtpm.hash new file mode 100644 index 0000000000..934d3b6ee0 --- /dev/null +++ b/package/swtpm/swtpm.hash @@ -0,0 +1,2 @@ +sha256 b281b4e8c39f68e1928675f788abc70072e4081152e129144359a8c5c304c06b swtpm-0.8.2.tar.gz +sha256 19d27d6e96d07022e5e688f75c974f1ceb9aae9e90e0fccae68666d02099cc4b LICENSE diff --git a/package/swtpm/swtpm.mk b/package/swtpm/swtpm.mk new file mode 100644 index 0000000000..1d42d72e71 --- /dev/null +++ b/package/swtpm/swtpm.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# swtpm +# +################################################################################ + +SWTPM_VERSION = 0.8.2 +SWTPM_SITE = $(call github,stefanberger,swtpm,v$(SWTPM_VERSION)) +SWTPM_LICENSE = BSD-4-Clause +SWTPM_LICENSE_FILES = LICENSE +SWTPM_AUTORECONF = YES + +HOST_SWTPM_DEPENDENCIES = \ + host-json-glib \ + host-libopenssl \ + host-libtasn1 \ + host-libtool \ + host-libtpms \ + host-pkgconf + +HOST_SWTPM_CONF_OPTS = --with-openssl --without-seccomp + +$(eval $(host-autotools-package)) -- 2.45.0 From yann.morin.1998 at free.fr Fri May 17 18:25:41 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 17 May 2024 20:25:41 +0200 Subject: [Buildroot] [PATCH] package/ntp: fix build with GCC 14.x In-Reply-To: <20240517120057.3736694-1-yegorslists@googlemail.com> References: <20240517120057.3736694-1-yegorslists@googlemail.com> Message-ID: Yegor, All, On 2024-05-17 14:00 +0200, yegorslists--- via buildroot spake thusly: > From: Yegor Yefremov > > Fix pthread_detach() detection that is broken when building > with GCC 14.x. > > The patch is taken from a Gentoo repository: > > https://gitweb.gentoo.org/repo/gentoo.git/diff/net-misc/ntp/files/ntp-4.2.8_p15-configure-clang16.patch?id=56ef5ce33891feec34cd0c39a0a774a81a587dc7 > > Bonus: refresh the 0002-ntp-syscalls-fallback.patch file. Sure, but it's relatively obvious, by looking and the changeset, that the patch was modified; the interesting information to have in the commit log is why it was refreshed: Addtionally, refresh patch 0002 to fix the offset of hunk 1. > Signed-off-by: Yegor Yefremov > --- > package/ntp/0002-ntp-syscalls-fallback.patch | 9 ++++--- > .../ntp/0003-fix-pthread-detach-check.patch | 27 +++++++++++++++++++ $ make check-package package/ntp/0003-fix-pthread-detach-check.patch:0: missing Upstream in the header (https://nightly.buildroot.org/#_additional_patch_documentation) Yes, you do provide the location where you grabbed the patch from, and this is very good. Still, we need to know what the upstream status for that patch is: has it been submitted? If no, why? If yes, what is the URL to the PR/MR, bug report, email? It is a bit unfortunate that ntp uses bitkeeper as a VCS, which makes it a bit more difficult to contribute to, but we still need that in formation... I see that the last commits dates from just a few days ago, so the project is not dead. Could you please check whether this patch was submitted? Maybe there is some info about that in the gentoo history for that patch? > diff --git a/package/ntp/0002-ntp-syscalls-fallback.patch b/package/ntp/0002-ntp-syscalls-fallback.patch > index 535fc93dfd..46704b9d3f 100644 > --- a/package/ntp/0002-ntp-syscalls-fallback.patch > +++ b/package/ntp/0002-ntp-syscalls-fallback.patch > @@ -8,10 +8,11 @@ Signed-off-by: James Knight > configure.ac | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > -diff --git a/configure.ac b/configure.ac > ---- a/configure.ac > -+++ b/configure.ac > -@@ -1523,11 +1523,11 @@ AC_CACHE_CHECK( > +Index: ntp-4.2.8p17/configure.ac > +=================================================================== > +--- ntp-4.2.8p17.orig/configure.ac > ++++ ntp-4.2.8p17/configure.ac > +@@ -1472,11 +1472,11 @@ AC_CACHE_CHECK( Just fixing the line would have made for a smaller delta, with less useless changes in the diff metadata. Also, the patch was (almost) git-formatted, which is the preferred form for bundled patches. Unless it is submitted to, or backported from the upstream VCS, in which case it should be in a format supported by that VCS. ;-) Regards, Yann E. MORIN. -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Fri May 17 18:35:38 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 17 May 2024 20:35:38 +0200 Subject: [Buildroot] [PATCH v2 1/3] package/json-glib: add host build In-Reply-To: <20240517173140.24531-2-jarkko@kernel.org> References: <20240517173140.24531-1-jarkko@kernel.org> <20240517173140.24531-2-jarkko@kernel.org> Message-ID: Jarkko, All, On 2024-05-17 20:31 +0300, Jarkko Sakkinen spake thusly: > Signed-off-by: Jarkko Sakkinen > --- > v2: > - Disable GOI and NLS for the host. I think your forgot the GOI part [0]... > - Add the missing host config. Err, I was probably not explicit enough in my previous review: there is no need for a Kconfig option for host packages, when they only provide a library. Also see below... > --- > package/json-glib/Config.in | 9 +++++++++ > package/json-glib/json-glib.mk | 5 +++++ > 2 files changed, 14 insertions(+) > > diff --git a/package/json-glib/Config.in b/package/json-glib/Config.in > index 9df03d924a..ebf697bc64 100644 > --- a/package/json-glib/Config.in > +++ b/package/json-glib/Config.in > @@ -11,6 +11,15 @@ config BR2_PACKAGE_JSON_GLIB > > https://live.gnome.org/JsonGlib/ > > +config BR2_HOST_PACKAGE_JSON_GLIB The actual Kconfig symbol should be BR2_PACKAGE_HOST_JSON_GLIB (note the inversion between PACKAGE and HOST). You can catch such mis-naming by running the basic sanity checks: $ ./utils/docker-run make check-package package/json-glib/Config.in:14: BR2_HOST_PACKAGE_JSON_GLIB defined but not referenced Also, Kconfig entries for host packages should be in a separate Config.in.host. But in this case, there is no need for a Kconfig symbol, because json-glib only provides a library, so you only need the changes in json-glib.mk. > + bool "json-glib" > + help > + JSON-GLib is a library providing serialization and > + deserialization support for the JavaScript Object Notation > + (JSON) format described by RFC 4627. > + > + https://live.gnome.org/JsonGlib/ > + > comment "json-glib needs a toolchain w/ wchar, threads" > depends on BR2_USE_MMU > depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS > diff --git a/package/json-glib/json-glib.mk b/package/json-glib/json-glib.mk > index cd53f24cee..a6bc53b823 100644 > --- a/package/json-glib/json-glib.mk > +++ b/package/json-glib/json-glib.mk > @@ -18,6 +18,10 @@ JSON_GLIB_DEPENDENCIES = \ > host-pkgconf \ > libglib2 > > +HOST_JSON_GLIB_DEPENDENCIES = \ > + host-pkgconf \ > + host-libglib2 ...[0] I think you forgot: HOST_JSON_GLIB_CONF_OPTS = -Dintrospection=diabled Regards, Yann E. MORIN. > ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) > JSON_GLIB_CONF_OPTS += -Dintrospection=enabled > JSON_GLIB_DEPENDENCIES += gobject-introspection > @@ -34,3 +38,4 @@ endif > JSON_GLIB_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) > > $(eval $(meson-package)) > +$(eval $(host-meson-package)) > -- > 2.45.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Fri May 17 18:44:32 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 17 May 2024 20:44:32 +0200 Subject: [Buildroot] [PATCH v2 2/3] package/libtpms: add host package In-Reply-To: <20240517173140.24531-3-jarkko@kernel.org> References: <20240517173140.24531-1-jarkko@kernel.org> <20240517173140.24531-3-jarkko@kernel.org> Message-ID: Jarkko, All, On 2024-05-17 20:31 +0300, Jarkko Sakkinen spake thusly: > Libtpms is a library that targets the integration of TPM functionality > into hypervisors, primarily into Qemu. Libtpms provides a very narrow > public API for this purpose so that integration is possible. Only the > minimum of necessary APIs are made publicly available. > > Signed-off-by: Jarkko Sakkinen > --- > v2: > - Use host packages in package/libtpms/Config.in. > - Select BR2_HOST_PACKAGE_LIBOPENSSL. s/HOST_PACKAGE/PACKAGE_HOST/ However [0]... [--SNIP--] > diff --git a/package/libtpms/Config.in b/package/libtpms/Config.in > new file mode 100644 > index 0000000000..9308458248 > --- /dev/null > +++ b/package/libtpms/Config.in > @@ -0,0 +1,19 @@ > +config BR2_HOST_PACKAGE_LIBTPMS s/HOST_PACKAGE/PACKAGE_HOST/ > + bool "libtpms" > + select BR2_HOST_PACKAGE_LIBTOOL [0]... here you select libtool instead of openssl. And we can't select libopenssl; instead we select openssl: $ git grep 'select BR2_PACKAGE_LIBOPENSSL\>' [nada, naught, zilch] $ git grep 'select BR2_PACKAGE_OPENSSL\>' [156 results] And anyway, in this case again there is no need for a Kconfig xymbo, as libtpms only provides a library, so there is only the need for libtpms.mk (and the hash file too). [--SNIP--] > diff --git a/package/libtpms/libtpms.mk b/package/libtpms/libtpms.mk > new file mode 100644 > index 0000000000..c588b2892c > --- /dev/null > +++ b/package/libtpms/libtpms.mk > @@ -0,0 +1,17 @@ > +################################################################################ > +# > +# libtpms > +# > +################################################################################ > + > +LIBTPMS_VERSION = 0.9.6 > +LIBTPMS_SITE = $(call github,stefanberger,libtpms,v$(LIBTPMS_VERSION)) > +LIBTPMS_LICENSE = BSD-4-Clause > +LIBTPMS_LICENSE_FILES = LICENSE > +LIBTPMS_INSTALL_STAGING = YES > +LIBTPMS_AUTORECONF = YES Sorry, I missed that in my previous review, but we usually add a little comment why autoreconf is needed: # Straight from the git repository LIBTPMS_AUTORECONF = YES Regards, Yann E. MORIN. > +HOST_LIBTPMS_DEPENDENCIES = host-libtool host-pkgconf host-libopenssl > +HOST_LIBTPMS_CONF_OPTS = --with-openssl -with-tpm2 > + > +$(eval $(host-autotools-package)) > -- > 2.45.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Fri May 17 19:23:46 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 17 May 2024 21:23:46 +0200 Subject: [Buildroot] [PATCH v2 3/3] package/swtpm: add host package In-Reply-To: <20240517173140.24531-4-jarkko@kernel.org> References: <20240517173140.24531-1-jarkko@kernel.org> <20240517173140.24531-4-jarkko@kernel.org> Message-ID: Jarkko, All, On 2024-05-17 20:31 +0300, Jarkko Sakkinen spake thusly: > The SWTPM package provides TPM emulators with different front-end > interfaces to libtpms. TPM emulators provide socket interfaces (TCP/IP and > Unix) and the Linux CUSE interface for the creation of multiple native > /dev/vtpm* devices. > > Signed-off-by: Jarkko Sakkinen > --- [--SNIP--] > diff --git a/package/swtpm/Config.in.host b/package/swtpm/Config.in.host > new file mode 100644 > index 0000000000..79a9aa28af > --- /dev/null > +++ b/package/swtpm/Config.in.host > @@ -0,0 +1,12 @@ > +config BR2_PACKAGE_HOST_SWTPM > + bool "host swtpm" > + select BR2_PACKAGE_LIBTOOL host-swtpm is a host package, so it should not select target packages, like libtool. And the host variant for libtool has no Kconfig symbol. > + help > + Compiles SWTPM software TPM emulator for the host. > + > + The SWTPM package provides TPM emulators with different > + front-end interfaces to libtpms. TPM emulators provide socket > + interfaces (TCP/IP and Unix) and the Linux CUSE interface for > + the creation of multiple native /dev/vtpm* devices. > + > + https://github.com/stefanberger/swtpm/wiki > diff --git a/package/swtpm/swtpm.hash b/package/swtpm/swtpm.hash > new file mode 100644 > index 0000000000..934d3b6ee0 > --- /dev/null > +++ b/package/swtpm/swtpm.hash > @@ -0,0 +1,2 @@ > +sha256 b281b4e8c39f68e1928675f788abc70072e4081152e129144359a8c5c304c06b swtpm-0.8.2.tar.gz > +sha256 19d27d6e96d07022e5e688f75c974f1ceb9aae9e90e0fccae68666d02099cc4b LICENSE > diff --git a/package/swtpm/swtpm.mk b/package/swtpm/swtpm.mk > new file mode 100644 > index 0000000000..1d42d72e71 > --- /dev/null > +++ b/package/swtpm/swtpm.mk > @@ -0,0 +1,23 @@ > +################################################################################ > +# > +# swtpm > +# > +################################################################################ > + > +SWTPM_VERSION = 0.8.2 > +SWTPM_SITE = $(call github,stefanberger,swtpm,v$(SWTPM_VERSION)) > +SWTPM_LICENSE = BSD-4-Clause > +SWTPM_LICENSE_FILES = LICENSE > +SWTPM_AUTORECONF = YES # Straight out of the git repository SWTPM_AUTORECONF = YES Almost there! ;-) Regards, Yann E. MORIN. > +HOST_SWTPM_DEPENDENCIES = \ > + host-json-glib \ > + host-libopenssl \ > + host-libtasn1 \ > + host-libtool \ > + host-libtpms \ > + host-pkgconf > + > +HOST_SWTPM_CONF_OPTS = --with-openssl --without-seccomp > + > +$(eval $(host-autotools-package)) > -- > 2.45.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From vincent.stehle at arm.com Fri May 17 19:34:39 2024 From: vincent.stehle at arm.com (Vincent =?utf-8?Q?Stehl=C3=A9?=) Date: Fri, 17 May 2024 21:34:39 +0200 Subject: [Buildroot] [PATCH 1/1] toolchain/toolchain-external/toolchain-external-custom: add gcc 14 version selection In-Reply-To: References: Message-ID: On Fri, May 17, 2024 at 09:18:25AM +0200, Edgar Bonet wrote: > This patch allows to use an external toolchain based on gcc 14. Thanks Edgar; this works on my side. FWIW, feel free to add (or not): Tested-by: Vincent Stehl? > > Signed-off-by: Edgar Bonet > --- > .../toolchain-external-custom/Config.in.options | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/toolchain/toolchain-external/toolchain-external-custom/Config.in.options b/toolchain/toolchain-external/toolchain-external-custom/Config.in.options > index f7825cb88e..1c4b0d2554 100644 > --- a/toolchain/toolchain-external/toolchain-external-custom/Config.in.options > +++ b/toolchain/toolchain-external/toolchain-external-custom/Config.in.options > @@ -46,6 +46,10 @@ choice > Set to the gcc version that is used by your external > toolchain. > > +config BR2_TOOLCHAIN_EXTERNAL_GCC_14 > + bool "14.x" > + select BR2_TOOLCHAIN_GCC_AT_LEAST_14 > + > config BR2_TOOLCHAIN_EXTERNAL_GCC_13 > bool "13.x" > select BR2_TOOLCHAIN_GCC_AT_LEAST_13 > -- > 2.34.1 > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot From yann.morin.1998 at free.fr Fri May 17 20:00:35 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 17 May 2024 22:00:35 +0200 Subject: [Buildroot] [git commit] toolchain/toolchain-external/toolchain-external-custom: add gcc 14 version selection Message-ID: <20240517200051.F261887478@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=7fa12e4f9ed736c7238dbdadf4dc5b9da03007b3 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master This patch allows to use an external toolchain based on gcc 14. Signed-off-by: Edgar Bonet Tested-by: Vincent Stehl?? Signed-off-by: Yann E. MORIN --- .../toolchain-external/toolchain-external-custom/Config.in.options | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/toolchain/toolchain-external/toolchain-external-custom/Config.in.options b/toolchain/toolchain-external/toolchain-external-custom/Config.in.options index f7825cb88e..1c4b0d2554 100644 --- a/toolchain/toolchain-external/toolchain-external-custom/Config.in.options +++ b/toolchain/toolchain-external/toolchain-external-custom/Config.in.options @@ -46,6 +46,10 @@ choice Set to the gcc version that is used by your external toolchain. +config BR2_TOOLCHAIN_EXTERNAL_GCC_14 + bool "14.x" + select BR2_TOOLCHAIN_GCC_AT_LEAST_14 + config BR2_TOOLCHAIN_EXTERNAL_GCC_13 bool "13.x" select BR2_TOOLCHAIN_GCC_AT_LEAST_13 From yann.morin.1998 at free.fr Fri May 17 20:02:50 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 17 May 2024 22:02:50 +0200 Subject: [Buildroot] [PATCH 1/1] toolchain/toolchain-external/toolchain-external-custom: add gcc 14 version selection In-Reply-To: References: Message-ID: Vincent, Edgard, All, On 2024-05-17 21:34 +0200, Vincent Stehl? spake thusly: > On Fri, May 17, 2024 at 09:18:25AM +0200, Edgar Bonet wrote: > > This patch allows to use an external toolchain based on gcc 14. > > Thanks Edgar; this works on my side. > > FWIW, feel free to add (or not): > Tested-by: Vincent Stehl? If you do not indent your tested-by tag, then patchwork will automatically collect it in the patch, so that it is automatically added to the commit when we use git-am. Applied to master, with Vincent's tested-by tag added, thanks. Regards, Yann E. MORIN. > > > > Signed-off-by: Edgar Bonet > > --- > > .../toolchain-external-custom/Config.in.options | 4 ++++ > > 1 file changed, 4 insertions(+) > > > > diff --git a/toolchain/toolchain-external/toolchain-external-custom/Config.in.options b/toolchain/toolchain-external/toolchain-external-custom/Config.in.options > > index f7825cb88e..1c4b0d2554 100644 > > --- a/toolchain/toolchain-external/toolchain-external-custom/Config.in.options > > +++ b/toolchain/toolchain-external/toolchain-external-custom/Config.in.options > > @@ -46,6 +46,10 @@ choice > > Set to the gcc version that is used by your external > > toolchain. > > > > +config BR2_TOOLCHAIN_EXTERNAL_GCC_14 > > + bool "14.x" > > + select BR2_TOOLCHAIN_GCC_AT_LEAST_14 > > + > > config BR2_TOOLCHAIN_EXTERNAL_GCC_13 > > bool "13.x" > > select BR2_TOOLCHAIN_GCC_AT_LEAST_13 > > -- > > 2.34.1 > > _______________________________________________ > > buildroot mailing list > > buildroot at buildroot.org > > https://lists.buildroot.org/mailman/listinfo/buildroot > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Fri May 17 20:04:13 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 17 May 2024 22:04:13 +0200 Subject: [Buildroot] [PATCH 1/1] toolchain/toolchain-external/toolchain-external-custom: add gcc 14 version selection In-Reply-To: References: Message-ID: Edgar, All, On 2024-05-17 22:02 +0200, Yann E. MORIN spake thusly: > Vincent, Edgard, All, Sorry for the typo in your name... :-( Regards, Yann E. MORIN. > On 2024-05-17 21:34 +0200, Vincent Stehl? spake thusly: > > On Fri, May 17, 2024 at 09:18:25AM +0200, Edgar Bonet wrote: > > > This patch allows to use an external toolchain based on gcc 14. > > > > Thanks Edgar; this works on my side. > > > > FWIW, feel free to add (or not): > > Tested-by: Vincent Stehl? > > If you do not indent your tested-by tag, then patchwork will > automatically collect it in the patch, so that it is automatically > added to the commit when we use git-am. > > Applied to master, with Vincent's tested-by tag added, thanks. > > Regards, > Yann E. MORIN. > > > > > > > Signed-off-by: Edgar Bonet > > > --- > > > .../toolchain-external-custom/Config.in.options | 4 ++++ > > > 1 file changed, 4 insertions(+) > > > > > > diff --git a/toolchain/toolchain-external/toolchain-external-custom/Config.in.options b/toolchain/toolchain-external/toolchain-external-custom/Config.in.options > > > index f7825cb88e..1c4b0d2554 100644 > > > --- a/toolchain/toolchain-external/toolchain-external-custom/Config.in.options > > > +++ b/toolchain/toolchain-external/toolchain-external-custom/Config.in.options > > > @@ -46,6 +46,10 @@ choice > > > Set to the gcc version that is used by your external > > > toolchain. > > > > > > +config BR2_TOOLCHAIN_EXTERNAL_GCC_14 > > > + bool "14.x" > > > + select BR2_TOOLCHAIN_GCC_AT_LEAST_14 > > > + > > > config BR2_TOOLCHAIN_EXTERNAL_GCC_13 > > > bool "13.x" > > > select BR2_TOOLCHAIN_GCC_AT_LEAST_13 > > > -- > > > 2.34.1 > > > _______________________________________________ > > > buildroot mailing list > > > buildroot at buildroot.org > > > https://lists.buildroot.org/mailman/listinfo/buildroot > > _______________________________________________ > > buildroot mailing list > > buildroot at buildroot.org > > https://lists.buildroot.org/mailman/listinfo/buildroot > > -- > .-----------------.--------------------.------------------.--------------------. > | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | > | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | > | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | > | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | > '------------------------------^-------^------------------^--------------------' > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Fri May 17 20:07:07 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 17 May 2024 22:07:07 +0200 Subject: [Buildroot] [git commit] package/gr-osmosdr: fix python build Message-ID: <20240517200750.0E7CD8747E@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=8759d81b0017e062d0909bf0ddccefdc052d83b1 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fix the following python build failure: In file included from /home/buildroot/instance-0/output-1/host/include/python3.11/Python.h:38, from /home/buildroot/instance-0/output-1/host/arc-buildroot-linux-gnu/sysroot/usr/include/pybind11/detail/common.h:266, from /home/buildroot/instance-0/output-1/host/arc-buildroot-linux-gnu/sysroot/usr/include/pybind11/attr.h:13, from /home/buildroot/instance-0/output-1/host/arc-buildroot-linux-gnu/sysroot/usr/include/pybind11/detail/class.h:12, from /home/buildroot/instance-0/output-1/host/arc-buildroot-linux-gnu/sysroot/usr/include/pybind11/pybind11.h:13, from /home/buildroot/instance-0/output-1/build/gr-osmosdr-0.2.4/python/bindings/device_python.cc:1: /home/buildroot/instance-0/output-1/host/include/python3.11/pyport.h:596:2: error: #error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)." 596 | #error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)." | ^~~~~ Fixes: - http://autobuild.buildroot.org/results/f009958c37902a224512b336fcb431903bdd0b96 Signed-off-by: Fabrice Fontaine Signed-off-by: Yann E. MORIN --- package/gr-osmosdr/gr-osmosdr.mk | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package/gr-osmosdr/gr-osmosdr.mk b/package/gr-osmosdr/gr-osmosdr.mk index 316ed80887..0d1e4edb30 100644 --- a/package/gr-osmosdr/gr-osmosdr.mk +++ b/package/gr-osmosdr/gr-osmosdr.mk @@ -23,7 +23,9 @@ GR_OSMOSDR_CONF_OPTS = \ GR_OSMOSDR_INSTALL_STAGING = YES ifeq ($(BR2_PACKAGE_GNURADIO_PYTHON),y) -GR_OSMOSDR_CONF_OPTS += -DENABLE_PYTHON=ON +GR_OSMOSDR_CONF_OPTS += \ + -DENABLE_PYTHON=ON \ + -DPYTHON_INCLUDE_DIRS=$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR) GR_OSMOSDR_DEPENDENCIES += python3 host-python-six else GR_OSMOSDR_CONF_OPTS += -DENABLE_PYTHON=OFF From yann.morin.1998 at free.fr Fri May 17 20:07:57 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Fri, 17 May 2024 22:07:57 +0200 Subject: [Buildroot] [PATCH 1/1] package/gr-osmosdr: fix python build In-Reply-To: <20240517171258.783129-1-fontaine.fabrice@gmail.com> References: <20240517171258.783129-1-fontaine.fabrice@gmail.com> Message-ID: Fabrice, All, On 2024-05-17 19:12 +0200, Fabrice Fontaine spake thusly: > Fix the following python build failure: > > In file included from /home/buildroot/instance-0/output-1/host/include/python3.11/Python.h:38, > from /home/buildroot/instance-0/output-1/host/arc-buildroot-linux-gnu/sysroot/usr/include/pybind11/detail/common.h:266, > from /home/buildroot/instance-0/output-1/host/arc-buildroot-linux-gnu/sysroot/usr/include/pybind11/attr.h:13, > from /home/buildroot/instance-0/output-1/host/arc-buildroot-linux-gnu/sysroot/usr/include/pybind11/detail/class.h:12, > from /home/buildroot/instance-0/output-1/host/arc-buildroot-linux-gnu/sysroot/usr/include/pybind11/pybind11.h:13, > from /home/buildroot/instance-0/output-1/build/gr-osmosdr-0.2.4/python/bindings/device_python.cc:1: > /home/buildroot/instance-0/output-1/host/include/python3.11/pyport.h:596:2: error: #error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)." > 596 | #error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)." > | ^~~~~ > > Fixes: > - http://autobuild.buildroot.org/results/f009958c37902a224512b336fcb431903bdd0b96 > > Signed-off-by: Fabrice Fontaine Applied to master, thanks. Regards, Yann E. MORIN. > --- > package/gr-osmosdr/gr-osmosdr.mk | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/package/gr-osmosdr/gr-osmosdr.mk b/package/gr-osmosdr/gr-osmosdr.mk > index 316ed80887..0d1e4edb30 100644 > --- a/package/gr-osmosdr/gr-osmosdr.mk > +++ b/package/gr-osmosdr/gr-osmosdr.mk > @@ -23,7 +23,9 @@ GR_OSMOSDR_CONF_OPTS = \ > GR_OSMOSDR_INSTALL_STAGING = YES > > ifeq ($(BR2_PACKAGE_GNURADIO_PYTHON),y) > -GR_OSMOSDR_CONF_OPTS += -DENABLE_PYTHON=ON > +GR_OSMOSDR_CONF_OPTS += \ > + -DENABLE_PYTHON=ON \ > + -DPYTHON_INCLUDE_DIRS=$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR) > GR_OSMOSDR_DEPENDENCIES += python3 host-python-six > else > GR_OSMOSDR_CONF_OPTS += -DENABLE_PYTHON=OFF > -- > 2.43.0 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From fontaine.fabrice at gmail.com Fri May 17 20:53:15 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Fri, 17 May 2024 22:53:15 +0200 Subject: [Buildroot] [PATCH 1/1] package/mokutil: select libxcrypt if needed Message-ID: <20240517205315.850877-1-fontaine.fabrice@gmail.com> Fix the following build failure raised since the addition of the package in commit 2e6e121496bfcbe09c018558be13733077b6df9b: mokutil.c:45:10: fatal error: crypt.h: No such file or directory 45 | #include | ^~~~~~~~~ Fixes: 2e6e121496bfcbe09c018558be13733077b6df9b - http://autobuild.buildroot.org/results/59e470ad6bf7f48314cd26ed4163c095e4c803ab Signed-off-by: Fabrice Fontaine --- package/mokutil/Config.in | 1 + package/mokutil/mokutil.mk | 1 + 2 files changed, 2 insertions(+) diff --git a/package/mokutil/Config.in b/package/mokutil/Config.in index 3f0c760f7d..dd02078b4e 100644 --- a/package/mokutil/Config.in +++ b/package/mokutil/Config.in @@ -12,6 +12,7 @@ config BR2_PACKAGE_MOKUTIL depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 # efivar select BR2_PACKAGE_EFIVAR select BR2_PACKAGE_KEYUTILS + select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC select BR2_PACKAGE_OPENSSL help mokutil is a tool to import or delete the machines owner diff --git a/package/mokutil/mokutil.mk b/package/mokutil/mokutil.mk index 6e83d9f138..f176fa5bee 100644 --- a/package/mokutil/mokutil.mk +++ b/package/mokutil/mokutil.mk @@ -14,6 +14,7 @@ MOKUTIL_DEPENDENCIES = \ efivar \ host-pkgconf \ keyutils \ + $(if $(BR2_PACKAGE_LIBXCRYPT),libxcrypt) \ openssl $(eval $(autotools-package)) -- 2.43.0 From fontaine.fabrice at gmail.com Fri May 17 21:25:34 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Fri, 17 May 2024 23:25:34 +0200 Subject: [Buildroot] [PATCH 1/1] package/minisign: do not strip Message-ID: <20240517212534.934492-1-fontaine.fabrice@gmail.com> Set CMAKE_STRIP to an empty value to avoid the following build failure with BR2_BINFMT_FLAT raised since the addition of the package in commit d90ac63d9b3448a239bb9aa8030326699a3fdc3d: /home/buildroot/instance-0/output-1/host/bin/m68k-linux-strip: /home/buildroot/instance-0/output-1/build/minisign-0.11/minisign: file format not recognized Fixes: d90ac63d9b3448a239bb9aa8030326699a3fdc3d - http://autobuild.buildroot.org/results/9cc9fd17c7eb4a741c08f27f69764df4a26295fa Signed-off-by: Fabrice Fontaine --- package/minisign/minisign.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/package/minisign/minisign.mk b/package/minisign/minisign.mk index 34b3f4046e..7cdce597f7 100644 --- a/package/minisign/minisign.mk +++ b/package/minisign/minisign.mk @@ -10,6 +10,7 @@ MINISIGN_LICENSE = ISC MINISIGN_LICENSE_FILES = LICENSE MINISIGN_DEPENDENCIES = libsodium HOST_MINISIGN_DEPENDENCIES = host-libsodium +MINISIGN_CONF_OPTS = -DCMAKE_STRIP="" ifeq ($(BR2_STATIC_LIBS),y) MINISIGN_CONF_OPTS += -DBUILD_STATIC_EXECUTABLES=1 -- 2.43.0 From fontaine.fabrice at gmail.com Fri May 17 21:33:07 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Fri, 17 May 2024 23:33:07 +0200 Subject: [Buildroot] [PATCH 1/1] package/mutt: bump to version 2.2.13 Message-ID: <20240517213307.959706-1-fontaine.fabrice@gmail.com> Mutt 2.2.13 was released on March 9, 2024. This is a bug-fix release, fixing a possible dangling pointer reference in the SMTP client. Signed-off-by: Fabrice Fontaine --- package/mutt/mutt.hash | 2 +- package/mutt/mutt.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/mutt/mutt.hash b/package/mutt/mutt.hash index 8c4aae3c1c..72c7924e9b 100644 --- a/package/mutt/mutt.hash +++ b/package/mutt/mutt.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 043af312f64b8e56f7fd0bf77f84a205d4c498030bd9586457665c47bb18ce38 mutt-2.2.12.tar.gz +sha256 eb23faddc1cc97d867693f3a4a9f30949ad93765ad5b6fdae2797a4001c58efb mutt-2.2.13.tar.gz sha256 732f24b69a6c71cd8e01e4672bb8e12cc1cbb88a50a4665e6ca4fd95000a57ee GPL diff --git a/package/mutt/mutt.mk b/package/mutt/mutt.mk index 2fe7b92b38..9a6be6d4a0 100644 --- a/package/mutt/mutt.mk +++ b/package/mutt/mutt.mk @@ -4,7 +4,7 @@ # ################################################################################ -MUTT_VERSION = 2.2.12 +MUTT_VERSION = 2.2.13 MUTT_SITE = https://bitbucket.org/mutt/mutt/downloads MUTT_LICENSE = GPL-2.0+ MUTT_LICENSE_FILES = GPL -- 2.43.0 From thomas.petazzoni at bootlin.com Sat May 18 04:08:12 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Sat, 18 May 2024 04:08:12 -0000 Subject: [Buildroot] [autobuild.buildroot.net] Daily results for 2024-05-17 Message-ID: Hello, Autobuild statistics for 2024-05-17 =================================== branch | OK | NOK | TIM | TOT | 2024.02.x | 9 | 6 | 1 | 16 | master | 25 | 46 | 1 | 72 | Classification of failures by reason for master ----------------------------------------------- libcamera-apps-1.2.1 | 4 fail2ban-1.0.2 | 3 libressl-3.8.4 | 3 elfutils-0.189 | 2 host-rust-1.74.1 | 2 libopenssl-3.3.0 | 2 openssh-9.7p1 | 2 unknown | 2 aer-inject-9bd5e2c7886fca72... | 1 at-spi2-core-2.50.0 | 1 bcc-0.29.1 | 1 bird-2.0.12 | 1 bitcoin-26.0 | 1 cdrkit-1.1.11 | 1 containerd-1.7.14 | 1 crun-1.12 | 1 ffmpeg-6.1.1 | 1 flannel-0.25.1 | 1 foot-1.16.2 | 1 gobject-introspection | 1 gocryptfs-2.3.2 | 1 gr-osmosdr-0.2.4 | 1 host-binutils-bare-metal-2.42 | 1 host-go-1.22.3 | 1 host-heimdal-f4faaeaba371ff... | 1 ibm-sw-tpm2-5452af422edeff7... | 1 mediastreamer-4.4.8 | 1 minisign-0.11 | 1 mokutil-0.7.1 | 1 python-remi-2022.7.27 | 1 python-zlmdb-22.6.1 | 1 shadow-4.14.5 | 1 uclibc-1.0.48 | 1 volk-3.0.0 | 1 zeek-4.1.1 | 1 Detail of failures for master ----------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- sparc64 | aer-inject-9bd5e2c7886fca72... | NOK | http://autobuild.buildroot.net/results/c22abf35511450009641d5b3ba4926a618aea619 | ORPH microblazeel | at-spi2-core-2.50.0 | NOK | http://autobuild.buildroot.net/results/7e22583ddc5264523894ed0c9a43fb3e2ac2da79 | arm | bcc-0.29.1 | NOK | http://autobuild.buildroot.net/results/4829d41041e192d352dd2ff0098d725e10eb5f2b | s390x | bird-2.0.12 | NOK | http://autobuild.buildroot.net/results/4eff1d9e9f9046ea4f3cb6ba06ac13aa4599ffaf | m68k | bitcoin-26.0 | NOK | http://autobuild.buildroot.net/results/6eeb754d8bca462561f5238be671e1886d5881a5 | mipsel | cdrkit-1.1.11 | NOK | http://autobuild.buildroot.net/results/061ddd156151af39351b2ba9a0983274116796ba | riscv64 | containerd-1.7.14 | NOK | http://autobuild.buildroot.net/results/0d6f242f978f3d5b139da28e2732354dc505e352 | x86_64 | crun-1.12 | NOK | http://autobuild.buildroot.net/results/87ac501cff14b71c1c857cb245ceca341bd12a6c | microblazeel | elfutils-0.189 | NOK | http://autobuild.buildroot.net/results/6f6329466e05651538df5bad90264dab51bbf9d3 | ORPH microblazeel | elfutils-0.189 | NOK | http://autobuild.buildroot.net/results/e2d49f89641ab6efeadfc770944c31baca264b81 | ORPH mips64el | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/b54395a85365642a7ebb8dce5479d52296633c07 | riscv64 | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/689bcb9ddaa1f8ef4a9ad450eca0b32da129e115 | armeb | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/1419426d2e22b2c373ad9cb1bd194230759e7d66 | arc | ffmpeg-6.1.1 | NOK | http://autobuild.buildroot.net/results/ab6ce9fc47f128ae2075661181d95108d0355492 | riscv64 | flannel-0.25.1 | NOK | http://autobuild.buildroot.net/results/c67e70ce4fae0e93e3629b8ce5abf1644bb00555 | armeb | foot-1.16.2 | NOK | http://autobuild.buildroot.net/results/7c622371ad2ea73ff6b736c373446085cd8376a6 | microblaze | gobject-introspection | TIM | http://autobuild.buildroot.net/results/a5e32bc08de77bd6e3eaabfd4b1c70958d90bab2 | riscv64 | gocryptfs-2.3.2 | NOK | http://autobuild.buildroot.net/results/fe3c6fc243ef5c92fd18a51adb4d02865c9532e6 | arc | gr-osmosdr-0.2.4 | NOK | http://autobuild.buildroot.net/results/f009958c37902a224512b336fcb431903bdd0b96 | armeb | host-binutils-bare-metal-2.42 | NOK | http://autobuild.buildroot.net/results/3a799b0a75b5041bc7ef65119a0ab0703b348441 | mips64el | host-go-1.22.3 | NOK | http://autobuild.buildroot.net/results/e8256985473a5250b96862f1996673830dc8894b | sh4 | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/fc4ff9fd72f3073a35cb753af75eaad847a53ddb | ORPH armeb | host-rust-1.74.1 | NOK | http://autobuild.buildroot.net/results/3e478156eabadba2edd18522bda1935901a97335 | x86_64 | host-rust-1.74.1 | NOK | http://autobuild.buildroot.net/results/fd2b850d6548a15d591a46ac5c380fde27126378 | arm | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/296b709918f9ee1e864bba2df76fa040a42f9462 | sh4 | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/e043fb784dea7dbb3657f6fb7b513b0fb0e440c3 | xtensa | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/8cc2cd25a1fc31658bc7c3d54adbe8cc9ecde9ba | mips64el | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/7d96e244de9501565ba37c30d75d95a7f1df9e12 | powerpc64le | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/b4e28badd3ae3f2eeb7d1f1c154d78b892ef3a33 | microblazeel | libopenssl-3.3.0 | NOK | http://autobuild.buildroot.net/results/868af562e44637f935e57b61522bcd6b236af6a6 | ORPH riscv32 | libopenssl-3.3.0 | NOK | http://autobuild.buildroot.net/results/d6aec1b445d1d76b50175293f68f045e941e02bf | ORPH xtensa | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/5b09774dabf2736036bfc7f76744d12fa0758a3a | ORPH arceb | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/49be7424a120019f2bdce298be1d43efb39389b4 | ORPH arc | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/441c87b498affc49936d69838e93c6675e80710b | ORPH powerpc64 | mediastreamer-4.4.8 | NOK | http://autobuild.buildroot.net/results/5eb134c0d312409bd5b4e90f014e220516160b94 | ORPH m68k | minisign-0.11 | NOK | http://autobuild.buildroot.net/results/9cc9fd17c7eb4a741c08f27f69764df4a26295fa | arm | mokutil-0.7.1 | NOK | http://autobuild.buildroot.net/results/59e470ad6bf7f48314cd26ed4163c095e4c803ab | mipsel | openssh-9.7p1 | NOK | http://autobuild.buildroot.net/results/f85a018f7336e0ad1b462382f6630ff8235c773a | ORPH mipsel | openssh-9.7p1 | NOK | http://autobuild.buildroot.net/results/caa77828066eab500d2725e9428c0462cff2ebcc | ORPH mips64el | python-remi-2022.7.27 | NOK | http://autobuild.buildroot.net/results/cd044cf8a5b0001e0a5677dc8a444be0cd17ae27 | arm | python-zlmdb-22.6.1 | NOK | http://autobuild.buildroot.net/results/0652e0013cad8954103f58c4cd9bfeb8afca8f7b | powerpc | shadow-4.14.5 | NOK | http://autobuild.buildroot.net/results/5af424b9d68e5c97a25492050827df241a4a54cf | arceb | uclibc-1.0.48 | NOK | http://autobuild.buildroot.net/results/3fc9487e9c47bc148dca65b2723c98004a8f88bf | x86_64 | unknown | NOK | http://autobuild.buildroot.net/results/c17ee2434c63f8292451492574ec7923b8045c2c | powerpc64le | unknown | NOK | http://autobuild.buildroot.net/results/2f569e0550597e97ae2f4348557976ffab766809 | powerpc | volk-3.0.0 | NOK | http://autobuild.buildroot.net/results/28c8a2255db70ff560048acb10be6b6075d56a8f | sh4 | zeek-4.1.1 | NOK | http://autobuild.buildroot.net/results/8e4c524c20b5a6fdc99d1601caa8a5e384384dc3 | Classification of failures by reason for 2024.02.x -------------------------------------------------- bird-2.0.12 | 1 gobject-introspection | 1 libcamera-apps-1.2.1 | 1 libglib2-2.76.1 | 1 libopenssl-3.2.1 | 1 ncmpc-0.49 | 1 zeek-4.1.1 | 1 Detail of failures for 2024.02.x -------------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- arc | bird-2.0.12 | NOK | http://autobuild.buildroot.net/results/54b18957cf27dcede171c2c441edad775d1323fd | microblaze | gobject-introspection | TIM | http://autobuild.buildroot.net/results/6bcacabe8d150c25f947c41963d0114c057e50aa | powerpc64 | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/5bef9701d2213af8d3c4059adf605dce0a3e5eaa | arc | libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/6d88a391c4c51e8da7f55dc9dc185a05e35e0c29 | arm | libopenssl-3.2.1 | NOK | http://autobuild.buildroot.net/results/fb03cda9f7c3de9a601954eb35f880be8b70d771 | ORPH riscv32 | ncmpc-0.49 | NOK | http://autobuild.buildroot.net/results/8288566a211342b5e573eaa19dcc16eb468d3310 | aarch64_be | zeek-4.1.1 | NOK | http://autobuild.buildroot.net/results/f50570b97f2ebbc5fe5bb759ed81a1697aa0745d | Gitlab CI results for 2024-05-17 ================================ Detail of defconfig failures for master --------------------------------------- defconfig | link to the job | orph? ----------------------------------+---------------------------------------------------------------+------ acmesystems_aria_g25_128mb | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865596448 | acmesystems_aria_g25_256mb | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865596456 | acmesystems_arietta_g25_128mb | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865596486 | acmesystems_arietta_g25_256mb | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865596518 | amarula_vyasa_rk3288 | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865596548 | armadeus_apf27 | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865596608 | at91sam9260eknf | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865596657 | at91sam9g20dfc | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865596664 | at91sam9g45m10ek | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865596668 | at91sam9rlek | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865596682 | at91sam9x5ek | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865596687 | at91sam9x5ek_dev | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865596691 | at91sam9x5ek_mmc | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865596701 | at91sam9x5ek_mmc_dev | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865596706 | atmel_sama5d3_xplained_mmc | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865596797 | atmel_sama5d3xek | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865596810 | bananapro | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865596917 | ORPH beagleboardx15 | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865596926 | beaglebone_qt5 | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865596939 | beagleboneai | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865596946 | beaglev | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865596949 | beelink_gs1 | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865596959 | chromebook_snow | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865596985 | ci20 | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865596992 | cubieboard2 | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865596996 | engicam_imx6qdl_icore | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597002 | engicam_imx6qdl_icore_qt5 | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597007 | engicam_imx6qdl_icore_rqs | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597012 | engicam_imx6ul_geam | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597023 | engicam_imx6ul_isiot | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597030 | freescale_imx6dlsabreauto | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597041 | freescale_imx6dlsabresd | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597054 | freescale_imx6qsabreauto | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597071 | freescale_imx6qsabresd | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597074 | freescale_imx6sxsabresd | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597079 | freescale_imx7dsabresd | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597086 | freescale_imx8dxlevk | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597095 | freescale_imx8mmevk | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597102 | freescale_imx8mnevk | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597105 | freescale_imx8mpevk | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597113 | freescale_imx8mqevk | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597126 | freescale_imx8qmmek | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597129 | freescale_imx8qxpmek | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597132 | friendlyarm_nanopi_r2s | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597171 | imx23evk | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597227 | imx6-sabreauto | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597229 | imx6slevk | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597240 | imx6sx-sdb | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597244 | imx6ulevk | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597248 | imx6ulpico | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597256 | imx7dpico | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597264 | imx8mmpico | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597270 | imx8mpico | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597285 | imx8mqevk | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597291 | kontron_pitx_imx8m | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597307 | lego_ev3 | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597347 | ls1028ardb | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597350 | ls1046a-frwy | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597352 | mx25pdk | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597400 | mx51evk | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597404 | mx6sx_udoo_neo | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597412 | mx6udoo | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597415 | nitrogen8mn | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597507 | octavo_osd32mp1_brk | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597512 | octavo_osd32mp1_red | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597513 | odroidxu4 | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597527 | openblocks_a6 | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597668 | orangepi_lite | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597683 | orangepi_lite2 | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597676 | orangepi_one_plus | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597697 | orangepi_pc | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597706 | orangepi_r1 | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597717 | pandaboard | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597768 | pine64 | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597790 | pine64_sopine | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597800 | pine64_star64 | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597807 | qemu_aarch64_sbsa | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597835 | qemu_ppc64_pseries | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865598810 | qemu_ppc64le_pseries | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865598893 | qemu_sh4_r2d | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865599024 | qemu_sh4eb_r2d | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865599037 | qemu_sparc_ss10 | https://gitlab.com/buildroot.org/buildroot/-/jobs/6865599063 | raspberrypi3_qt5we | https://gitlab.com/buildroot.org/buildroot/-/jobs/6875651750 | ORPH riotboard | https://gitlab.com/buildroot.org/buildroot/-/jobs/6875651891 | rock5b | https://gitlab.com/buildroot.org/buildroot/-/jobs/6875651932 | rock64 | https://gitlab.com/buildroot.org/buildroot/-/jobs/6875651970 | rock_pi_n8 | https://gitlab.com/buildroot.org/buildroot/-/jobs/6875652054 | sipeed_licheepi_zero | https://gitlab.com/buildroot.org/buildroot/-/jobs/6875652641 | snps_arc700_axs101 | https://gitlab.com/buildroot.org/buildroot/-/jobs/6875652981 | snps_arc700_nsim | https://gitlab.com/buildroot.org/buildroot/-/jobs/6875653000 | ORPH snps_archs38_hsdk | https://gitlab.com/buildroot.org/buildroot/-/jobs/6875653147 | socrates_cyclone5 | https://gitlab.com/buildroot.org/buildroot/-/jobs/6875653190 | toradex_apalis_imx6 | https://gitlab.com/buildroot.org/buildroot/-/jobs/6875653880 | ts4900 | https://gitlab.com/buildroot.org/buildroot/-/jobs/6875653897 | ts7680 | https://gitlab.com/buildroot.org/buildroot/-/jobs/6875654063 | uevm5432 | https://gitlab.com/buildroot.org/buildroot/-/jobs/6875654171 | visionfive2 | https://gitlab.com/buildroot.org/buildroot/-/jobs/6875654561 | -- http://autobuild.buildroot.net From fontaine.fabrice at gmail.com Sat May 18 09:17:07 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Sat, 18 May 2024 11:17:07 +0200 Subject: [Buildroot] [PATCH 1/1] package/gpm: fix musl build with gcc 14 Message-ID: <20240518091707.267692-1-fontaine.fabrice@gmail.com> Fix the following musl build failure with gcc 14: daemon/old_main.c: In function 'old_main': daemon/old_main.c:56:11: error: implicit declaration of function 'strcmp' [-Wimplicit-function-declaration] 56 | if(!strcmp((which_mouse->opt_dev),"-")) fd=0; /* use stdin */ | ^~~~~~ daemon/old_main.c:35:1: note: include '' or provide a declaration of 'strcmp' 34 | #include "headers/gpmInt.h" /* daemon internals */ +++ |+#include 35 | While at it, add Upstream tags to other patches Fixes: - http://autobuild.buildroot.org/results/3192740863d57e72e90e622683e7b9fcc057fa8b Signed-off-by: Fabrice Fontaine --- .checkpackageignore | 6 ----- ...usl-support-to-libgpm-and-the-daemon.patch | 4 +-- .../0002-Install-unversioned-solibrary.patch | 4 +-- ...Really-install-unversioned-solibrary.patch | 3 +-- ...mptyset-API-instead-of-__sigemptyset.patch | 1 + .../gpm/0005-fix-building-w-newer-glibc.patch | 1 + ...on.h-avoid-redefinition-of-last_sele.patch | 1 + package/gpm/0007-Add-include-string-h.patch | 27 +++++++++++++++++++ 8 files changed, 33 insertions(+), 14 deletions(-) create mode 100644 package/gpm/0007-Add-include-string-h.patch diff --git a/.checkpackageignore b/.checkpackageignore index 070b97116a..ab792709b2 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -748,12 +748,6 @@ package/gob2/0001-dont-include-from-prefix.patch lib_patch.Upstream package/gobject-introspection/0001-disable-tests.patch lib_patch.Upstream package/gobject-introspection/0002-Add-rpath-links-to-ccompiler.patch lib_patch.Upstream package/gobject-introspection/0003-giscanner-ignore-error-return-codes-from-ldd-wrapper.patch lib_patch.Upstream -package/gpm/0001-Added-musl-support-to-libgpm-and-the-daemon.patch lib_patch.Upstream -package/gpm/0002-Install-unversioned-solibrary.patch lib_patch.Upstream -package/gpm/0003-src-Makefile.in-Really-install-unversioned-solibrary.patch lib_patch.Upstream -package/gpm/0004-Use-sigemptyset-API-instead-of-__sigemptyset.patch lib_patch.Upstream -package/gpm/0005-fix-building-w-newer-glibc.patch lib_patch.Upstream -package/gpm/0006-src-headers-daemon.h-avoid-redefinition-of-last_sele.patch lib_patch.Upstream package/gpsd/S50gpsd Shellcheck lib_sysv.Indent lib_sysv.Variables package/gptfdisk/0001-gptcurses-partially-revert-Tweaks-for-building-on-th.patch lib_patch.Upstream package/graphite2/0001-don-t-install-a-libtool-file-with-static-library.patch lib_patch.Upstream diff --git a/package/gpm/0001-Added-musl-support-to-libgpm-and-the-daemon.patch b/package/gpm/0001-Added-musl-support-to-libgpm-and-the-daemon.patch index 1e1e919416..1e143e5031 100644 --- a/package/gpm/0001-Added-musl-support-to-libgpm-and-the-daemon.patch +++ b/package/gpm/0001-Added-musl-support-to-libgpm-and-the-daemon.patch @@ -3,9 +3,7 @@ From: Dima Krasner Date: Wed, 12 Nov 2014 23:06:46 +0200 Subject: [PATCH] Added musl support to libgpm and the daemon. -[Upstream patch backported from the github repository, -https://github.com/telmich/gpm/commit/d88fb1de5803c366ab62f7de9ee5d83207fb2afe.] - +Upstream: https://github.com/telmich/gpm/commit/d88fb1de5803c366ab62f7de9ee5d83207fb2afe Signed-off-by: Thomas Petazzoni --- src/daemon/open_console.c | 1 + diff --git a/package/gpm/0002-Install-unversioned-solibrary.patch b/package/gpm/0002-Install-unversioned-solibrary.patch index 27e97acb32..5f184daba2 100644 --- a/package/gpm/0002-Install-unversioned-solibrary.patch +++ b/package/gpm/0002-Install-unversioned-solibrary.patch @@ -6,9 +6,7 @@ Subject: [PATCH] Install unversioned solibrary Unversioned solibraries are shipped with -devel packages in Linux distros. Generate and install it for the consistency. -[Upstream patch backported from the github repository, -https://github.com/telmich/gpm/commit/06b00d53d8bd513ad5d262dc94a016c6fbf2d3aa] - +Upstream: https://github.com/telmich/gpm/commit/06b00d53d8bd513ad5d262dc94a016c6fbf2d3aa Signed-off-by: Bernd Kuhls --- src/Makefile.in | 7 +++---- diff --git a/package/gpm/0003-src-Makefile.in-Really-install-unversioned-solibrary.patch b/package/gpm/0003-src-Makefile.in-Really-install-unversioned-solibrary.patch index 2591801976..857bb5c2ba 100644 --- a/package/gpm/0003-src-Makefile.in-Really-install-unversioned-solibrary.patch +++ b/package/gpm/0003-src-Makefile.in-Really-install-unversioned-solibrary.patch @@ -7,8 +7,7 @@ This commit is a follow-up to https://github.com/telmich/gpm/commit/06b00d53d8bd513ad5d262dc94a016c6fbf2d3aa which created libgpm.so but failed to include it in the install target. -Patch sent upstream: https://github.com/telmich/gpm/pull/11 - +Upstream: https://github.com/telmich/gpm/pull/11 Signed-off-by: Bernd Kuhls --- src/Makefile.in | 1 + diff --git a/package/gpm/0004-Use-sigemptyset-API-instead-of-__sigemptyset.patch b/package/gpm/0004-Use-sigemptyset-API-instead-of-__sigemptyset.patch index 01c7424a9d..5820d21f51 100644 --- a/package/gpm/0004-Use-sigemptyset-API-instead-of-__sigemptyset.patch +++ b/package/gpm/0004-Use-sigemptyset-API-instead-of-__sigemptyset.patch @@ -7,6 +7,7 @@ __sigemptyset has been removed from glibc public API headers in upcoming (2.26) release onwards Signed-off-by: Khem Raj +Upstream: https://github.com/telmich/gpm/commit/fdc42770596e25749f7e2ce0ea97882177397167 Signed-off-by: Petr Vorel --- src/prog/gpm-root.y | 4 ---- diff --git a/package/gpm/0005-fix-building-w-newer-glibc.patch b/package/gpm/0005-fix-building-w-newer-glibc.patch index b451d975e0..839f92f37b 100644 --- a/package/gpm/0005-fix-building-w-newer-glibc.patch +++ b/package/gpm/0005-fix-building-w-newer-glibc.patch @@ -7,6 +7,7 @@ Linux C libraries are looking to disentangle sysmacros.h from the sys/types.h include, so make sure we pull in the header when it is found. +Upstream: https://github.com/telmich/gpm/commit/b350aee4ea5785a75cb6ad770f6b768c506ebb70 Signed-off-by: Giulio Benetti --- src/daemon/open_console.c | 4 ++++ diff --git a/package/gpm/0006-src-headers-daemon.h-avoid-redefinition-of-last_sele.patch b/package/gpm/0006-src-headers-daemon.h-avoid-redefinition-of-last_sele.patch index 36a8ddc5bb..0c8428df2c 100644 --- a/package/gpm/0006-src-headers-daemon.h-avoid-redefinition-of-last_sele.patch +++ b/package/gpm/0006-src-headers-daemon.h-avoid-redefinition-of-last_sele.patch @@ -20,6 +20,7 @@ https://gcc.gnu.org/PR85678. The error also happens if CFLAGS=-fno-common passed explicitly. Signed-off-by: Sergei Trofimovich +Upstream: https://github.com/telmich/gpm/commit/f04f24dd5ca5c1c13608b144ab66e2ccd47f106a Signed-off-by: Heiko Thiery --- src/headers/daemon.h | 2 +- diff --git a/package/gpm/0007-Add-include-string-h.patch b/package/gpm/0007-Add-include-string-h.patch new file mode 100644 index 0000000000..dd7e736e7b --- /dev/null +++ b/package/gpm/0007-Add-include-string-h.patch @@ -0,0 +1,27 @@ +From 2085cab74a0a84df8b965addf007775a7225c9ec Mon Sep 17 00:00:00 2001 +From: Kurt Nalty <46026992+kurtnalty at users.noreply.github.com> +Date: Sat, 29 Dec 2018 23:47:17 -0600 +Subject: [PATCH] Add include + +Added + line 28, #include /* strcpy, bzero */ +for musl compilation + +Upstream: https://github.com/telmich/gpm/commit/2085cab74a0a84df8b965addf007775a7225c9ec +Signed-off-by: Fabrice Fontaine +--- + src/daemon/old_main.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/daemon/old_main.c b/src/daemon/old_main.c +index 2581e26..ab7a87f 100644 +--- a/src/daemon/old_main.c ++++ b/src/daemon/old_main.c +@@ -25,6 +25,7 @@ + #include /* guess again */ + #include /* guess again */ + #include /* unlink */ ++#include /* strcpy, bzero */ + #include /* chmod */ + + #include /* linux hd* */ -- 2.43.0 From dario.binacchi at amarulasolutions.com Sat May 18 09:40:06 2024 From: dario.binacchi at amarulasolutions.com (Dario Binacchi) Date: Sat, 18 May 2024 11:40:06 +0200 Subject: [Buildroot] [PATCH v2] package/zxing-cpp: add options for enabling readers and/or writers Message-ID: <20240518094006.1134068-1-dario.binacchi@amarulasolutions.com> The patch allows you to choose whether to build encoding (BUILD_WRITERS), decoding (BUILD_READERS) or both. At least one of the two options must be enabled. This way, it's possible to keep the library size at minimum. By default, to ensure backward compatibility, both are compiled. Signed-off-by: Dario Binacchi --- Changes v1 -> v2: - Drop BR2_PACKAGE_ZXING_CPP_READERS_AND_WRITERS selection package/zxing-cpp/Config.in | 17 +++++++++++++++++ package/zxing-cpp/zxing-cpp.mk | 14 ++++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/package/zxing-cpp/Config.in b/package/zxing-cpp/Config.in index b72a00ec35f9..511c21e7360a 100644 --- a/package/zxing-cpp/Config.in +++ b/package/zxing-cpp/Config.in @@ -17,3 +17,20 @@ config BR2_PACKAGE_ZXING_CPP compiles the C++ port. https://github.com/zxing-cpp/zxing-cpp + +if BR2_PACKAGE_ZXING_CPP +comment "At least one of readers/writers must be enabled" + +config BR2_PACKAGE_ZXING_CPP_READERS + bool "readers support" + default y + help + Build with readers (decoders) support + +config BR2_PACKAGE_ZXING_CPP_WRITERS + bool "writers support" + default y + help + Build with writers (encoders) support + +endif # BR2_PACKAGE_ZXING_CPP diff --git a/package/zxing-cpp/zxing-cpp.mk b/package/zxing-cpp/zxing-cpp.mk index 86a1ef96806d..077d7e75d3dd 100644 --- a/package/zxing-cpp/zxing-cpp.mk +++ b/package/zxing-cpp/zxing-cpp.mk @@ -12,8 +12,6 @@ ZXING_CPP_INSTALL_STAGING = YES ZXING_CPP_SUPPORTS_IN_SOURCE_BUILD = NO ZXING_CPP_DEPENDENCIES = host-pkgconf stb ZXING_CPP_CONF_OPTS = \ - -DBUILD_READERS=ON \ - -DBUILD_WRITERS=ON \ -DBUILD_BLACKBOX_TESTS=OFF \ -DBUILD_UNIT_TESTS=OFF \ -DBUILD_DEPENDENCIES=LOCAL @@ -28,4 +26,16 @@ else ZXING_CPP_CONF_OPTS += -DBUILD_PYTHON_MODULE=OFF endif +ifeq ($(BR2_PACKAGE_ZXING_CPP_READERS),y) +ZXING_CPP_CONF_OPTS += -DBUILD_READERS=ON +else +ZXING_CPP_CONF_OPTS += -DBUILD_READERS=OFF +endif + +ifeq ($(BR2_PACKAGE_ZXING_CPP_WRITERS),y) +ZXING_CPP_CONF_OPTS += -DBUILD_WRITERS=ON +else +ZXING_CPP_CONF_OPTS += -DBUILD_WRITERS=OFF +endif + $(eval $(cmake-package)) -- 2.43.0 From yegorslists at googlemail.com Sat May 18 10:00:12 2024 From: yegorslists at googlemail.com (Yegor Yefremov) Date: Sat, 18 May 2024 12:00:12 +0200 Subject: [Buildroot] [PATCH] package/ntp: fix build with GCC 14.x In-Reply-To: References: <20240517120057.3736694-1-yegorslists@googlemail.com> Message-ID: Hi Yann, On Fri, May 17, 2024 at 8:25?PM Yann E. MORIN wrote: > > Yegor, All, > > On 2024-05-17 14:00 +0200, yegorslists--- via buildroot spake thusly: > > From: Yegor Yefremov > > > > Fix pthread_detach() detection that is broken when building > > with GCC 14.x. > > > > The patch is taken from a Gentoo repository: > > > > https://gitweb.gentoo.org/repo/gentoo.git/diff/net-misc/ntp/files/ntp-4.2.8_p15-configure-clang16.patch?id=56ef5ce33891feec34cd0c39a0a774a81a587dc7 > > > > Bonus: refresh the 0002-ntp-syscalls-fallback.patch file. > > Sure, but it's relatively obvious, by looking and the changeset, that > the patch was modified; the interesting information to have in the > commit log is why it was refreshed: > > Addtionally, refresh patch 0002 to fix the offset of hunk 1. > > > Signed-off-by: Yegor Yefremov > > --- > > package/ntp/0002-ntp-syscalls-fallback.patch | 9 ++++--- > > .../ntp/0003-fix-pthread-detach-check.patch | 27 +++++++++++++++++++ > > $ make check-package > package/ntp/0003-fix-pthread-detach-check.patch:0: missing Upstream in the header (https://nightly.buildroot.org/#_additional_patch_documentation) > > Yes, you do provide the location where you grabbed the patch from, and > this is very good. Still, we need to know what the upstream status for > that patch is: has it been submitted? If no, why? If yes, what is the > URL to the PR/MR, bug report, email? > > It is a bit unfortunate that ntp uses bitkeeper as a VCS, which makes it > a bit more difficult to contribute to, but we still need that in > formation... > > I see that the last commits dates from just a few days ago, so the > project is not dead. > > Could you please check whether this patch was submitted? Maybe there is > some info about that in the gentoo history for that patch? > > > diff --git a/package/ntp/0002-ntp-syscalls-fallback.patch b/package/ntp/0002-ntp-syscalls-fallback.patch > > index 535fc93dfd..46704b9d3f 100644 > > --- a/package/ntp/0002-ntp-syscalls-fallback.patch > > +++ b/package/ntp/0002-ntp-syscalls-fallback.patch > > @@ -8,10 +8,11 @@ Signed-off-by: James Knight > > configure.ac | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > -diff --git a/configure.ac b/configure.ac > > ---- a/configure.ac > > -+++ b/configure.ac > > -@@ -1523,11 +1523,11 @@ AC_CACHE_CHECK( > > +Index: ntp-4.2.8p17/configure.ac > > +=================================================================== > > +--- ntp-4.2.8p17.orig/configure.ac > > ++++ ntp-4.2.8p17/configure.ac > > +@@ -1472,11 +1472,11 @@ AC_CACHE_CHECK( > > Just fixing the line would have made for a smaller delta, with less > useless changes in the diff metadata. > > Also, the patch was (almost) git-formatted, which is the preferred form > for bundled patches. Unless it is submitted to, or backported from the > upstream VCS, in which case it should be in a format supported by that > VCS. ;-) Now, it is official: https://bugs.ntp.org/show_bug.cgi?id=3926 I'll wait till the patch is committed and then will make v2. Yegor From yann.morin.1998 at free.fr Sat May 18 10:16:03 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Sat, 18 May 2024 12:16:03 +0200 Subject: [Buildroot] [PATCH] package/ntp: fix build with GCC 14.x In-Reply-To: References: <20240517120057.3736694-1-yegorslists@googlemail.com> Message-ID: Yegor, All, On 2024-05-18 12:00 +0200, Yegor Yefremov spake thusly: > Now, it is official: https://bugs.ntp.org/show_bug.cgi?id=3926 That's great, thanks! And upstream looks quite happy with it. :-) > I'll wait till the patch is committed and then will make v2. You don't need to wait for the patch to be applied upstream; just add an upstream tag to the patch, pointing to that bug report: Upstream: https://bugs.ntp.org/show_bug.cgi?id=3926 Signed-off-by: You That way, the next person to bump ntp can assess whether that patch needs to be carried/rebased/dropped, by checking the upstream status. Thanks! Regards, Yann E. MORIN. -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From pt.skyin at gmail.com Sat May 18 10:31:58 2024 From: pt.skyin at gmail.com (Sam Wang) Date: Sat, 18 May 2024 18:31:58 +0800 Subject: [Buildroot] Fwd: BR2_MAKE makes "Rebuilding kernel with initramfs" use -j1 In-Reply-To: References: Message-ID: Dear buildroot developer, I'm using buildroot 2024.02.1 with top-level parallel build, and found in the last step of my build - "Rebuilding kernel with initramfs" - it throws the following warning and makes the kernel rebuilding single threaded. *make[1]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule.* The previous version 2023.02.4 didn't have this issue. And, I found this commit: linux: use BR2_MAKE ? buildroot/buildroot at 0b9efc9 ? GitHub , which changes $(MAKE) to $(BR2_MAKE)". I reverted the change in line 645 back to $(MAKE) in my repo, and the warning was gone, and the kernel rebuild was in multi-thread again. Wondering if I missed something in the buildroot configuration or this part of BR2 code needs some revision? Thanks for your help! Best regards, Sam -------------- next part -------------- An HTML attachment was scrubbed... URL: From thomas.petazzoni at bootlin.com Sat May 18 20:13:35 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Sat, 18 May 2024 22:13:35 +0200 Subject: [Buildroot] [PATCH v2] package/zxing-cpp: add options for enabling readers and/or writers In-Reply-To: <20240518094006.1134068-1-dario.binacchi@amarulasolutions.com> References: <20240518094006.1134068-1-dario.binacchi@amarulasolutions.com> Message-ID: <20240518221335.1d012fb0@windsurf> Hello Dario, On Sat, 18 May 2024 11:40:06 +0200 Dario Binacchi wrote: > +if BR2_PACKAGE_ZXING_CPP > +comment "At least one of readers/writers must be enabled" This comment is not really useful, as it doesn't force anything. If really at least one of readers or writers are needed, then you should do this in the main BR2_PACKAGE_ZXING option: select BR2_PACKAGE_ZXING_CPP_READERS if !BR2_PACKAGE_ZXING_CPP_WRITERS This will ensure that readers are selected if writers are not selected. But it will still allow to deselect readers if writers are enabled. Thanks! Thomas -- Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com From yann.morin.1998 at free.fr Sat May 18 20:25:06 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Sat, 18 May 2024 22:25:06 +0200 Subject: [Buildroot] [PATCH 0/2] support/download: fix running on hosts with wget2 (branch yem/dl-curl) Message-ID: Hello All! Recently, Fedora 40 was released, which uses wget2 instead of the "original" wget (aka wget1). wget2 is almost a drop-in replacement for wget1, except it no longer supports FTP and WARC. While WARC was unused in Buildroot, FTP is still used by a few packges, some of which only available via FTP. Switch to using curl for FTP downloads. We could have switched to curl for http/s downlads too, but it is possible that existing packages (esp. in br2-external trees) use wget1 options, like we used to in the now-dropped amd-catalyst package for example. So we decided to only convert FTP downloads over to curl, and keep the rest unchanged, to minise the impact. Regards, Yann E. MORIN. ---------------------------------------------------------------- Yann E. MORIN (2): support/download: introduce curl backend for FTP transfers utils/genrandconfig: do not check certificates with curl Config.in | 4 ++++ docs/manual/prerequisite.adoc | 1 + package/pkg-download.mk | 1 + package/pkg-generic.mk | 2 ++ support/download/curl | 45 +++++++++++++++++++++++++++++++++++++++++++ support/download/dl-wrapper | 1 + utils/genrandconfig | 1 + 7 files changed, 55 insertions(+) create mode 100755 support/download/curl -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From yann.morin.1998 at free.fr Sat May 18 20:25:07 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Sat, 18 May 2024 22:25:07 +0200 Subject: [Buildroot] [PATCH 1/2] support/download: introduce curl backend for FTP transfers In-Reply-To: References: Message-ID: <9acaf4118aa1e3ba7ad9e0516a78273af7d05d3c.1716063903.git.yann.morin.1998@free.fr> Recent versions of wget, starting with wget 2.0, aka wget2 thereafter, no longer support FTP (nor FTPS, aka FTP-over-SSL). wget2 is packaged in Fedora 40, recently released; F40 does not even have the old wget available in its repository anymore. Introduce cURL as a download backend, that we use for FTP and FPTS protocols. Note that the -q flag does not means being quiet; it means that a curlrc file should not be parsed. The long option is --disable, which meaning is not much more obivous than the short -q. It also has to be the first option on the command line. Signed-off-by: Yann E. MORIN --- Config.in | 4 ++++ docs/manual/prerequisite.adoc | 1 + package/pkg-download.mk | 1 + package/pkg-generic.mk | 2 ++ support/download/curl | 45 +++++++++++++++++++++++++++++++++++ support/download/dl-wrapper | 1 + 6 files changed, 54 insertions(+) create mode 100755 support/download/curl diff --git a/Config.in b/Config.in index b5a94325c4..534efa4050 100644 --- a/Config.in +++ b/Config.in @@ -103,6 +103,10 @@ menu "Build options" menu "Commands" +config BR2_CURL + string "Curl command" + default "curl -q --ftp-pasv --retry 3" + config BR2_WGET string "Wget command" default "wget --passive-ftp -nd -t 3" diff --git a/docs/manual/prerequisite.adoc b/docs/manual/prerequisite.adoc index 262a5153f5..846a7482ac 100644 --- a/docs/manual/prerequisite.adoc +++ b/docs/manual/prerequisite.adoc @@ -75,6 +75,7 @@ packages using any of these methods, you will need to install the corresponding tool on the host system: + ** +bazaar+ +** +curl+ ** +cvs+ ** +git+ ** +mercurial+ diff --git a/package/pkg-download.mk b/package/pkg-download.mk index 4be45c9d12..455443c164 100644 --- a/package/pkg-download.mk +++ b/package/pkg-download.mk @@ -8,6 +8,7 @@ ################################################################################ # Download method commands +export CURL := $(call qstrip,$(BR2_CURL)) export WGET := $(call qstrip,$(BR2_WGET)) export SVN := $(call qstrip,$(BR2_SVN)) export CVS := $(call qstrip,$(BR2_CVS)) diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk index a2749320c3..e1c16b7343 100644 --- a/package/pkg-generic.mk +++ b/package/pkg-generic.mk @@ -1253,6 +1253,8 @@ else ifeq ($$($(2)_SITE_METHOD),hg) DL_TOOLS_DEPENDENCIES += hg else ifeq ($$($(2)_SITE_METHOD),cvs) DL_TOOLS_DEPENDENCIES += cvs +else ifneq ($(filter ftp ftps,$$($(2)_SITE_METHOD)),) +DL_TOOLS_DEPENDENCIES += curl endif # SITE_METHOD # cargo/go vendoring (may) need git diff --git a/support/download/curl b/support/download/curl new file mode 100755 index 0000000000..bea4485a6c --- /dev/null +++ b/support/download/curl @@ -0,0 +1,45 @@ +#!/usr/bin/env bash + +# We want to catch any unexpected failure, and exit immediately +set -e + +# Download helper for curl, to be called from the download wrapper script +# +# Options: +# -q Be quiet. +# -o FILE Save into file FILE. +# -f FILENAME The filename of the tarball to get at URL +# -u URL Download file at URL. +# +# Environment: +# CURL : the curl command to call + +quiet= +while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do + case "${OPT}" in + q) quiet=-s;; + o) output="${OPTARG}";; + f) filename="${OPTARG}";; + u) url="${OPTARG}";; + :) printf "option '%s' expects a mandatory argument\n" "${OPTARG}"; exit 1;; + \?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;; + esac +done + +shift $((OPTIND-1)) # Get rid of our options + +# Caller needs to single-quote its arguments to prevent them from +# being expanded a second time (in case there are spaces in them) +_curl() { + if [ -z "${quiet}" ]; then + printf '%s ' "${CURL}" "${@}"; printf '\n' + fi + _plain_curl "$@" +} +# Note: please keep command below aligned with what is printed above +_plain_curl() { + # shellcheck disable=SC2086 # We want splitting + eval ${CURL} "${@}" +} + +_curl ${quiet} "${@}" --output "'${output}'" "'${url}/${filename}'" diff --git a/support/download/dl-wrapper b/support/download/dl-wrapper index 35428faeef..069b2c1c21 100755 --- a/support/download/dl-wrapper +++ b/support/download/dl-wrapper @@ -91,6 +91,7 @@ main() { backend="${backend_urlencode%|*}" case "${backend}" in git|svn|cvs|bzr|file|scp|hg|sftp) ;; + ftp|ftps) backend="curl" ;; *) backend="wget" ;; esac uri=${uri#*+} -- 2.45.0 From yann.morin.1998 at free.fr Sat May 18 20:25:08 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Sat, 18 May 2024 22:25:08 +0200 Subject: [Buildroot] [PATCH 2/2] utils/genrandconfig: do not check certificates with curl In-Reply-To: References: Message-ID: <8c1d3b15de6ac98e7dc9ad94db5bf56011b1bc66.1716063903.git.yann.morin.1998@free.fr> genrandconfig is used in autobuilders, and some autobuilders are running on old distributions that are lacking the most recent CAs, causing build failures because package sources can't be retrieved. Do for the curl backend what we already did a while back for the wget backend, with commit 0866a280e40a (utils/genrandconfig: use --no-check-certificate in wget by default); in curl, the equivalent would be --insecure, and applies to the ftps transport. The integrity of the downloads are validated against our bundled hashes so there is no risk of corruption of the downloaded files. The only issue would be that an MITM could inspect the transaction, the same way as for the wget --no-check-certificate in 0866a280e40a, but this is not considered a high-level issue (we're anyway talking FTPS here, that's a legacy protocol that has other issues). Signed-off-by: Yann E. MORIN --- Note: this is totally untested, because FTPS is not widespread and no known package was available via FTPS. This patch can probably be dropped. --- utils/genrandconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/genrandconfig b/utils/genrandconfig index df6bede158..63fbf617f4 100755 --- a/utils/genrandconfig +++ b/utils/genrandconfig @@ -699,6 +699,7 @@ def gen_config(args): # Allow hosts with old certificates to download over https configlines.append("BR2_WGET=\"wget --passive-ftp -nd -t 3 --no-check-certificate\"\n") + configlines.append("BR2_CURL=\"curl --ftp-pasv --retry 3 --insecure\"\n") # Per-package folder if randint(0, 15) == 0: -- 2.45.0 From jarkko at kernel.org Sat May 18 20:45:42 2024 From: jarkko at kernel.org (Jarkko Sakkinen) Date: Sat, 18 May 2024 23:45:42 +0300 Subject: [Buildroot] [PATCH] package/tpm2-tools: bump version to 5.7 Message-ID: <20240518204542.787-1-jarkko@kernel.org> Includes tpm2_encodeobject, which is useful for converting TPM2 keys to ASN.1. This needed to support asymmetric TPM2 keys in the kernel. Signed-off-by: Jarkko Sakkinen --- package/tpm2-tools/tpm2-tools.hash | 2 +- package/tpm2-tools/tpm2-tools.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/tpm2-tools/tpm2-tools.hash b/package/tpm2-tools/tpm2-tools.hash index f50a896363..a7b1ef559e 100644 --- a/package/tpm2-tools/tpm2-tools.hash +++ b/package/tpm2-tools/tpm2-tools.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 c0b402f6a7b3456e8eb2445211e2d41c46c7e769e05fe4d8909ff64119f7a630 tpm2-tools-5.2.tar.gz +sha256 3810d36b5079256f4f2f7ce552e22213d43b1031c131538df8a2dbc3c570983a tpm2-tools-5.7.tar.gz sha256 f6995d52c8b8e4d2c3bace7fc9c330a77a90d808166fbad4d7ead7e8ba2fc66c doc/LICENSE diff --git a/package/tpm2-tools/tpm2-tools.mk b/package/tpm2-tools/tpm2-tools.mk index 12f924eee5..cd9c582aa9 100644 --- a/package/tpm2-tools/tpm2-tools.mk +++ b/package/tpm2-tools/tpm2-tools.mk @@ -4,7 +4,7 @@ # ################################################################################ -TPM2_TOOLS_VERSION = 5.2 +TPM2_TOOLS_VERSION = 5.7 TPM2_TOOLS_SITE = https://github.com/tpm2-software/tpm2-tools/releases/download/$(TPM2_TOOLS_VERSION) TPM2_TOOLS_LICENSE = BSD-3-Clause TPM2_TOOLS_LICENSE_FILES = doc/LICENSE -- 2.45.1 From yegorslists at googlemail.com Sat May 18 20:46:02 2024 From: yegorslists at googlemail.com (yegorslists at googlemail.com) Date: Sat, 18 May 2024 22:46:02 +0200 Subject: [Buildroot] [PATCH v2] package/ntp: fix build with GCC 14.x Message-ID: <20240518204602.3167167-1-yegorslists@googlemail.com> From: Yegor Yefremov Fix pthread_detach() detection that is broken when building with GCC 14.x: checking for pthread_kill... yes checking for pthread_rwlock_destroy with ... yes checking for pthread_detach with ... no configure: error: could not locate pthread_detach() make[1]: *** [package/pkg-generic.mk:273: /home/user/buildroot/bsp-barebox/build/ntp-4.2.8p17/.stamp_configured] Error 1 make: *** [Makefile:82: _all] Error 2 Reference: https://bugs.ntp.org/show_bug.cgi?id=3926 Additionally, refresh patch 0002 to fix the offset of hunk 1. Signed-off-by: Yegor Yefremov --- Changes v1 -v2: - add upstream reference (Yann E. MORIN) - rework 0002 refresh reason (Yann E. MORIN) - add error log package/ntp/0002-ntp-syscalls-fallback.patch | 9 ++++--- .../ntp/0003-fix-pthread-detach-check.patch | 27 +++++++++++++++++++ 2 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 package/ntp/0003-fix-pthread-detach-check.patch diff --git a/package/ntp/0002-ntp-syscalls-fallback.patch b/package/ntp/0002-ntp-syscalls-fallback.patch index 535fc93dfd..46704b9d3f 100644 --- a/package/ntp/0002-ntp-syscalls-fallback.patch +++ b/package/ntp/0002-ntp-syscalls-fallback.patch @@ -8,10 +8,11 @@ Signed-off-by: James Knight configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -diff --git a/configure.ac b/configure.ac ---- a/configure.ac -+++ b/configure.ac -@@ -1523,11 +1523,11 @@ AC_CACHE_CHECK( +Index: ntp-4.2.8p17/configure.ac +=================================================================== +--- ntp-4.2.8p17.orig/configure.ac ++++ ntp-4.2.8p17/configure.ac +@@ -1472,11 +1472,11 @@ AC_CACHE_CHECK( [ntp_cv_var_ntp_syscalls], [ ntp_cv_var_ntp_syscalls=no diff --git a/package/ntp/0003-fix-pthread-detach-check.patch b/package/ntp/0003-fix-pthread-detach-check.patch new file mode 100644 index 0000000000..ffe5daa06d --- /dev/null +++ b/package/ntp/0003-fix-pthread-detach-check.patch @@ -0,0 +1,27 @@ +fix pthread_detach check + +Refrence: + https://bugs.ntp.org/show_bug.cgi?id=3926 + +Signed-off-by: Yegor Yefremov +--- + sntp/m4/openldap-thread-check.m4 | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +Index: ntp-4.2.8p17/sntp/m4/openldap-thread-check.m4 +=================================================================== +--- ntp-4.2.8p17.orig/sntp/m4/openldap-thread-check.m4 ++++ ntp-4.2.8p17/sntp/m4/openldap-thread-check.m4 +@@ -262,10 +262,8 @@ pthread_rwlock_t rwlock; + dnl save the flags + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + #include +-#ifndef NULL +-#define NULL (void*)0 +-#endif +-]], [[pthread_detach(NULL);]])],[ol_cv_func_pthread_detach=yes],[ol_cv_func_pthread_detach=no]) ++pthread_t thread; ++]], [[pthread_detach(thread);]])],[ol_cv_func_pthread_detach=yes],[ol_cv_func_pthread_detach=no]) + ]) + + if test $ol_cv_func_pthread_detach = no ; then -- 2.34.1 From thomas.petazzoni at bootlin.com Sun May 19 04:18:15 2024 From: thomas.petazzoni at bootlin.com (Thomas Petazzoni) Date: Sun, 19 May 2024 04:18:15 -0000 Subject: [Buildroot] [autobuild.buildroot.net] Daily results for 2024-05-18 Message-ID: Hello, Autobuild statistics for 2024-05-18 =================================== branch | OK | NOK | TIM | TOT | 2024.02.x | 6 | 11 | 1 | 18 | master | 31 | 42 | 1 | 74 | Classification of failures by reason for master ----------------------------------------------- fail2ban-1.0.2 | 5 ibm-sw-tpm2-5452af422edeff7... | 5 unknown | 3 containerd-1.7.14 | 2 ffmpeg-6.1.1 | 2 aer-inject-9bd5e2c7886fca72... | 1 android-tools-4.2.2+git2013... | 1 cni-plugins-1.3.0 | 1 crun-1.12 | 1 elfutils-0.189 | 1 gnu-efi-3.0.18 | 1 gnuplot-6.0.0 | 1 gobject-introspection | 1 gobject-introspection-1.76.1 | 1 gpm-1.20.7 | 1 host-go-1.22.3 | 1 host-heimdal-f4faaeaba371ff... | 1 libcamera-apps-1.2.1 | 1 libglib2-2.76.1 | 1 libp11-0.4.12 | 1 libressl-3.8.4 | 1 linux-tools | 1 mariadb-10.11.6 | 1 mongodb-4.2.18 | 1 openssh-9.7p1 | 1 python-numpy-1.25.0 | 1 python-remi-2022.7.27 | 1 rocksdb-6.20.3 | 1 rtty-8.1.0 | 1 uclibc-1.0.48 | 1 wolfssl-5.7.0 | 1 Detail of failures for master ----------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- mipsel | aer-inject-9bd5e2c7886fca72... | NOK | http://autobuild.buildroot.net/results/0bd78dd73a2f49a0171e37f1055d35bd6fa39d2a | ORPH arm | android-tools-4.2.2+git2013... | NOK | http://autobuild.buildroot.net/results/cecf78e06441ba8c05029835fbdc933f585a4b90 | riscv64 | cni-plugins-1.3.0 | NOK | http://autobuild.buildroot.net/results/f4d1c29ff96afa662af87a8942122798e2d77d4e | riscv64 | containerd-1.7.14 | NOK | http://autobuild.buildroot.net/results/02b9aa110eead3bb09812aafbff8b2b1032102e0 | riscv64 | containerd-1.7.14 | NOK | http://autobuild.buildroot.net/results/7830e8c584a73a505abf916dda2713c0962490d3 | m68k | crun-1.12 | NOK | http://autobuild.buildroot.net/results/4d96abfe081ee59a927516aee246514ce033ba36 | microblaze | elfutils-0.189 | NOK | http://autobuild.buildroot.net/results/772340d4e1a58793f67271914ace872afdf317b5 | ORPH m68k | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/eb5677be9b91a9f93cd6e97e7e6bdc64bf72ded6 | microblazeel | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/b36a93656d54de1aa0c75f8e3378be727e60588f | or1k | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/2523ea17506f2d78405657562827c08dff07a4a9 | mips64el | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/889fdabf7859541a903ca01510cc59c6b837f8d2 | xtensa | fail2ban-1.0.2 | NOK | http://autobuild.buildroot.net/results/0e6333eaf0d80dbf46c2fbe2387f1e3b2cafcb01 | microblaze | ffmpeg-6.1.1 | NOK | http://autobuild.buildroot.net/results/f59323d01ceefc6e887c711b5256e11ba0a140fc | microblazeel | ffmpeg-6.1.1 | NOK | http://autobuild.buildroot.net/results/b3469731a9d8bc649f0cc3cf32692d37607fa68d | aarch64_be | gnu-efi-3.0.18 | NOK | http://autobuild.buildroot.net/results/37d0192ca75d658f7fe3373b20051594508e4744 | nios2 | gnuplot-6.0.0 | NOK | http://autobuild.buildroot.net/results/ecbde5b61a53af8b7dd5297d628894410f0ef252 | microblazeel | gobject-introspection | TIM | http://autobuild.buildroot.net/results/d810e4385cb696493135fe22881baaa32e585e63 | sparc64 | gobject-introspection-1.76.1 | NOK | http://autobuild.buildroot.net/results/64ac737424c7705c53d7187ccaa3d1ab99890eb4 | ORPH or1k | gpm-1.20.7 | NOK | http://autobuild.buildroot.net/results/3192740863d57e72e90e622683e7b9fcc057fa8b | mips64el | host-go-1.22.3 | NOK | http://autobuild.buildroot.net/results/b02e20aa3ba71638bbcd07521dece2c31ba93c6c | riscv64 | host-heimdal-f4faaeaba371ff... | NOK | http://autobuild.buildroot.net/results/7f92c768d27e75a5d4f1cc08e63e18b1a9f44008 | ORPH m68k | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/38fde21fc71f93d01d9b3aa8e1ad708234fb47e3 | nios2 | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/97861326cd41db53c6177cdc252d1cc705926f00 | x86_64 | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/74c22a273803fa899afe84ad26903745aa12181b | sh4 | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/0ba5cbbec82ad4934587674ea5405b82b4d3e7f5 | xtensa | ibm-sw-tpm2-5452af422edeff7... | NOK | http://autobuild.buildroot.net/results/5ad3d936de4e063410a760ad82a0bfe1780fb2bb | mips64el | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/ad3ae41f1d03269e2c9072715f5bf66002012205 | arceb | libglib2-2.76.1 | NOK | http://autobuild.buildroot.net/results/ac87a7017389fa344942ab1cb031644f11190bc2 | powerpc64 | libp11-0.4.12 | NOK | http://autobuild.buildroot.net/results/0c61dcca104d77ba52ef28c3b23fc5253e5489c4 | ORPH arceb | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/33cef196ca227a1302aa650c6d86ceb5f7417ddf | ORPH m68k | linux-tools | NOK | http://autobuild.buildroot.net/results/651c3e9a2f4f80e235c779945688158489670675 | ORPH mips64el | mariadb-10.11.6 | NOK | http://autobuild.buildroot.net/results/9ceae4f040dcacd38e2738af654c9e1774a6facf | ORPH aarch64 | mongodb-4.2.18 | NOK | http://autobuild.buildroot.net/results/6e7bf7b7400f5085480f16176103dc2abe39fb3b | mips64 | openssh-9.7p1 | NOK | http://autobuild.buildroot.net/results/e9abc7226332565edd8293eb3224bd843301c913 | ORPH aarch64 | python-numpy-1.25.0 | NOK | http://autobuild.buildroot.net/results/7e643c8e98430cc505885dba9fe7d369c56ff02c | microblazeel | python-remi-2022.7.27 | NOK | http://autobuild.buildroot.net/results/6db042c1a67074cd7a3ccab184af24d0941c28ff | aarch64 | rocksdb-6.20.3 | NOK | http://autobuild.buildroot.net/results/d5743cdfaa0fbbff611e04d90f5f051eed34c3a0 | x86_64 | rtty-8.1.0 | NOK | http://autobuild.buildroot.net/results/8b59f5251bfe88de5446bf6b226f225be604238c | arc | uclibc-1.0.48 | NOK | http://autobuild.buildroot.net/results/3702666a69495db2870cbe1d0008b9f1db426e0d | mips64 | unknown | NOK | http://autobuild.buildroot.net/results/ce2aeb55339db1629205961749a2185149993e17 | arceb | unknown | NOK | http://autobuild.buildroot.net/results/8b388aebd01bf00f0b0f9aa52c307aac4e814d0b | arc | unknown | NOK | http://autobuild.buildroot.net/results/140351aa50fd16b41205cbc44caa54f28b29cf29 | mips64el | wolfssl-5.7.0 | NOK | http://autobuild.buildroot.net/results/97d0a44a4517bb2893a0d37934edbdb4cdd22bc2 | Classification of failures by reason for 2024.02.x -------------------------------------------------- coreutils-9.3 | 2 libcamera-apps-1.2.1 | 2 asterisk-20.5.2 | 1 frr-8.5.4 | 1 gobject-introspection | 1 host-rust-1.74.1 | 1 host-sentry-cli-2.20.3 | 1 libressl-3.8.4 | 1 python-numpy-1.25.0 | 1 shadow-4.14.3 | 1 Detail of failures for 2024.02.x -------------------------------- arch | reason | OK? | url | orph? -------------+--------------------------------+-----+---------------------------------------------------------------------------------+------- riscv64 | asterisk-20.5.2 | NOK | http://autobuild.buildroot.net/results/4134eafb89cefbe03a36a9ffab5886c6417842b4 | xtensa | coreutils-9.3 | NOK | http://autobuild.buildroot.net/results/96816dd936196dc3082f802c2b64064d46d375de | ORPH arc | coreutils-9.3 | NOK | http://autobuild.buildroot.net/results/560d86bfcd95113847db961d491335934de87421 | ORPH xtensa | frr-8.5.4 | NOK | http://autobuild.buildroot.net/results/f60b1529457ca7d9b71238b64caedc119ce817ea | microblaze | gobject-introspection | TIM | http://autobuild.buildroot.net/results/9969d7a4bbe4cacd51c1464821601bf31a0b4653 | x86_64 | host-rust-1.74.1 | NOK | http://autobuild.buildroot.net/results/183fc7c7d1f957774c97d9169e52d6ef537cde2d | armeb | host-sentry-cli-2.20.3 | NOK | http://autobuild.buildroot.net/results/89a7825b7bdfa1186c1c8003fbe6e3f9dba7e353 | xtensa | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/b9325d3621fed485a6e32049f1ff8ea4b9e935c4 | arm | libcamera-apps-1.2.1 | NOK | http://autobuild.buildroot.net/results/db8aa79ab65ffcd0df6935561fa8f8035a17461d | sh4aeb | libressl-3.8.4 | NOK | http://autobuild.buildroot.net/results/88ee8a8c6ef73e504df44a45c3e5b8e842497ac3 | ORPH x86_64 | python-numpy-1.25.0 | NOK | http://autobuild.buildroot.net/results/61065ff3b27071ea0f769dacb93a8f58470069be | mips64el | shadow-4.14.3 | NOK | http://autobuild.buildroot.net/results/100de96c05ddaa348ec40f151ffae51b0d7ca9d2 | -- http://autobuild.buildroot.net From dm.chestnykh at gmail.com Sun May 19 04:50:03 2024 From: dm.chestnykh at gmail.com (Dmitry Chestnykh) Date: Sun, 19 May 2024 07:50:03 +0300 Subject: [Buildroot] [PATCH] package/uclibc-ng-test: Bump to the latest git version. Message-ID: <20240519045003.306052-1-dm.chestnykh@gmail.com> Upstream contains new tests and refactoring of the existing functionality. Signed-off-by: Dmitry Chestnykh --- DEVELOPERS | 1 + package/uclibc-ng-test/uclibc-ng-test.hash | 2 +- package/uclibc-ng-test/uclibc-ng-test.mk | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DEVELOPERS b/DEVELOPERS index 52c9b84a9d..ba81ddb5cf 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -851,6 +851,7 @@ F: package/wireless-regdb/ N: Dmitry Chestnykh F: board/qemu/sparc-ss10/ F: configs/qemu_sparc_ss10_defconfig +F: package/uclibc-ng-test/ N: Dominik Faessler F: package/logsurfer/ diff --git a/package/uclibc-ng-test/uclibc-ng-test.hash b/package/uclibc-ng-test/uclibc-ng-test.hash index dc0499001e..38621062be 100644 --- a/package/uclibc-ng-test/uclibc-ng-test.hash +++ b/package/uclibc-ng-test/uclibc-ng-test.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 7f5badc6621eb9dbc9030121bfa6d4d1ccf680a346cd15c6dca05a6e03010d96 uclibc-ng-test-0f303c63fab7f4038515ced6f2659242cf60ac19-git4.tar.gz +sha256 fae9be86b0eb050e139047d934e7e02599d074d481523dead65ce164c8453500 uclibc-ng-test-132c6134d69146bcafbdda68ae3a9cbd9f8fb921-git4.tar.gz sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 COPYING.LIB diff --git a/package/uclibc-ng-test/uclibc-ng-test.mk b/package/uclibc-ng-test/uclibc-ng-test.mk index 7d62401244..a80b64349b 100644 --- a/package/uclibc-ng-test/uclibc-ng-test.mk +++ b/package/uclibc-ng-test/uclibc-ng-test.mk @@ -4,7 +4,7 @@ # ################################################################################ -UCLIBC_NG_TEST_VERSION = 0f303c63fab7f4038515ced6f2659242cf60ac19 +UCLIBC_NG_TEST_VERSION = 132c6134d69146bcafbdda68ae3a9cbd9f8fb921 UCLIBC_NG_TEST_SITE = https://git.uclibc-ng.org/git/uclibc-ng-test.git UCLIBC_NG_TEST_SITE_METHOD = git UCLIBC_NG_TEST_LICENSE = LGPL-2.1+ -- 2.45.1 From dario.binacchi at amarulasolutions.com Sun May 19 07:25:02 2024 From: dario.binacchi at amarulasolutions.com (Dario Binacchi) Date: Sun, 19 May 2024 09:25:02 +0200 Subject: [Buildroot] [PATCH v3] package/zxing-cpp: add options for enabling readers and/or writers Message-ID: <20240519072502.1142825-1-dario.binacchi@amarulasolutions.com> The patch allows you to choose whether to build encoding (BUILD_WRITERS), decoding (BUILD_READERS) or both. At least one of the two options must be enabled. This way, it's possible to keep the library size at minimum. By default, to ensure backward compatibility, both are compiled. Co-Developed-by: Thomas Petazzoni Co-Developed-by: Francesco Nicoletta Puzzillo Signed-off-by: Dario Binacchi --- Changes v2 -> v3: - Add 'select BR2_PACKAGE_ZXING_CPP_READERS if !BR2_PACKAGE_ZXING_CPP_WRITERS' and drop comment. - Add Co-Developed-by tags Changes v1 -> v2: - Drop BR2_PACKAGE_ZXING_CPP_READERS_AND_WRITERS selection package/zxing-cpp/Config.in | 17 +++++++++++++++++ package/zxing-cpp/zxing-cpp.mk | 14 ++++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/package/zxing-cpp/Config.in b/package/zxing-cpp/Config.in index b72a00ec35f9..e5b8cfcdd8aa 100644 --- a/package/zxing-cpp/Config.in +++ b/package/zxing-cpp/Config.in @@ -10,6 +10,7 @@ config BR2_PACKAGE_ZXING_CPP depends on BR2_TOOLCHAIN_HAS_THREADS select BR2_PACKAGE_STB select BR2_PACKAGE_PYTHON_PYBIND if BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_ZXING_CPP_READERS if !BR2_PACKAGE_ZXING_CPP_WRITERS help ZXing-cpp (pronounced "zebra crossing") is an open-source, multi-format 1D/2D barcode image processing library @@ -17,3 +18,19 @@ config BR2_PACKAGE_ZXING_CPP compiles the C++ port. https://github.com/zxing-cpp/zxing-cpp + +if BR2_PACKAGE_ZXING_CPP + +config BR2_PACKAGE_ZXING_CPP_READERS + bool "readers support" + default y + help + Build with readers (decoders) support + +config BR2_PACKAGE_ZXING_CPP_WRITERS + bool "writers support" + default y + help + Build with writers (encoders) support + +endif # BR2_PACKAGE_ZXING_CPP diff --git a/package/zxing-cpp/zxing-cpp.mk b/package/zxing-cpp/zxing-cpp.mk index 86a1ef96806d..077d7e75d3dd 100644 --- a/package/zxing-cpp/zxing-cpp.mk +++ b/package/zxing-cpp/zxing-cpp.mk @@ -12,8 +12,6 @@ ZXING_CPP_INSTALL_STAGING = YES ZXING_CPP_SUPPORTS_IN_SOURCE_BUILD = NO ZXING_CPP_DEPENDENCIES = host-pkgconf stb ZXING_CPP_CONF_OPTS = \ - -DBUILD_READERS=ON \ - -DBUILD_WRITERS=ON \ -DBUILD_BLACKBOX_TESTS=OFF \ -DBUILD_UNIT_TESTS=OFF \ -DBUILD_DEPENDENCIES=LOCAL @@ -28,4 +26,16 @@ else ZXING_CPP_CONF_OPTS += -DBUILD_PYTHON_MODULE=OFF endif +ifeq ($(BR2_PACKAGE_ZXING_CPP_READERS),y) +ZXING_CPP_CONF_OPTS += -DBUILD_READERS=ON +else +ZXING_CPP_CONF_OPTS += -DBUILD_READERS=OFF +endif + +ifeq ($(BR2_PACKAGE_ZXING_CPP_WRITERS),y) +ZXING_CPP_CONF_OPTS += -DBUILD_WRITERS=ON +else +ZXING_CPP_CONF_OPTS += -DBUILD_WRITERS=OFF +endif + $(eval $(cmake-package)) -- 2.43.0 From yann.morin.1998 at free.fr Sun May 19 07:46:25 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Sun, 19 May 2024 09:46:25 +0200 Subject: [Buildroot] [PATCH 1/2] support/download: introduce curl backend for FTP transfers In-Reply-To: <9acaf4118aa1e3ba7ad9e0516a78273af7d05d3c.1716063903.git.yann.morin.1998@free.fr> References: <9acaf4118aa1e3ba7ad9e0516a78273af7d05d3c.1716063903.git.yann.morin.1998@free.fr> Message-ID: All, On 2024-05-18 22:25 +0200, Yann E. MORIN spake thusly: > Recent versions of wget, starting with wget 2.0, aka wget2 thereafter, > no longer support FTP (nor FTPS, aka FTP-over-SSL). wget2 is packaged in > Fedora 40, recently released; F40 does not even have the old wget > available in its repository anymore. [--SNIP--] > diff --git a/Config.in b/Config.in > index b5a94325c4..534efa4050 100644 > --- a/Config.in > +++ b/Config.in > @@ -103,6 +103,10 @@ menu "Build options" > > menu "Commands" > > +config BR2_CURL > + string "Curl command" > + default "curl -q --ftp-pasv --retry 3" > + > config BR2_WGET > string "Wget command" > default "wget --passive-ftp -nd -t 3" ^^^^^^^^^^^^^ I forgot to drop that in the series... I'll sit on it for a little while, and respin later with that fixed... Regards, Yann E. MORIN. -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From thomas at devoogdt.com Sun May 19 09:16:04 2024 From: thomas at devoogdt.com (Thomas Devoogdt) Date: Sun, 19 May 2024 11:16:04 +0200 Subject: [Buildroot] [PATCH v4] package/webkitgtk: bump to 2.44.2 Message-ID: <20240519091604.2195932-1-thomas@devoogdt.com> A lot has been changed in 2.44.0, please consult the announcement [1], what's new [2], and the security advisory [3] for more details. Specific to this bump: - Libegl is now mandatory [4] and the USE_OPENGL_OR_ES flag has been dropped. While at it, also explicitly add the libepoxy dependency which is now selected by libgtk3. - The WPE renderer has been dropped [2], so drop the wpebackend-fdo dependency. - JPEG2000 has been dropped [2], so drop the OpenJPEG dependency. - GTK4 is now the default, so turn it off, since buildroot has no GTK4 support yet [2]. - USE_LIBBACKTRACE has been added [5], so select it properly. - Support for ENABLE_WEB_CODECS has been added, which will now be enabled together with audio and video support. - ENABLE_WEBASSEMBLY is forbidden when ENABLE_C_LOOP [6], so disable it when compiling for MIPS r6, ARMv5, and ARMv6. In the meantime, a follow-up 2.44.1 and 2.44.2 release has been announced [7][8], which contains a bunch of patches that were accepted upstream. Including build fixes for 32-bit devices, and disabling video. [1]: https://webkitgtk.org/2024/03/16/webkitgtk2.44.0-released.html [2]: https://webkitgtk.org/2024/03/27/webkigit-2.44.html [3]: https://webkitgtk.org/security/WSA-2024-0002.html [4]: https://commits.webkit.org/271345 at main [5]: https://commits.webkit.org/268579 at main [6]: https://commits.webkit.org/271347 at main [7]: https://webkitgtk.org/2024/04/09/webkitgtk2.44.1-released.html [8]: https://webkitgtk.org/2024/05/16/webkitgtk2.44.2-released.html Signed-off-by: Thomas Devoogdt --- v2: update patches with the upstream reference v3: bump to 2.44.1 and drop the upstreamed patches v4: bump to 2.44.2 and move xlib_libxshmfence to a separate patch series --- ...velInterpreter.cpp-339-21-error-t6-w.patch | 39 --------------- package/webkitgtk/Config.in | 4 +- package/webkitgtk/webkitgtk.hash | 6 +-- package/webkitgtk/webkitgtk.mk | 50 ++++++++----------- 4 files changed, 26 insertions(+), 73 deletions(-) delete mode 100644 package/webkitgtk/0001-GTK-2.42.5-LowLevelInterpreter.cpp-339-21-error-t6-w.patch diff --git a/package/webkitgtk/0001-GTK-2.42.5-LowLevelInterpreter.cpp-339-21-error-t6-w.patch b/package/webkitgtk/0001-GTK-2.42.5-LowLevelInterpreter.cpp-339-21-error-t6-w.patch deleted file mode 100644 index c9667fedbd..0000000000 --- a/package/webkitgtk/0001-GTK-2.42.5-LowLevelInterpreter.cpp-339-21-error-t6-w.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 3d5373575695b293b8559155431d0079a6153aff Mon Sep 17 00:00:00 2001 -From: Michael Catanzaro -Date: Mon, 5 Feb 2024 11:00:49 -0600 -Subject: [PATCH] =?UTF-8?q?[GTK]=20[2.42.5]=20LowLevelInterpreter.cpp:339:?= - =?UTF-8?q?21:=20error:=20=E2=80=98t6=E2=80=99=20was=20not=20declared=20in?= - =?UTF-8?q?=20this=20scope=20https://bugs.webkit.org/show=5Fbug.cgi=3Fid?= - =?UTF-8?q?=3D268739?= -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Unreviewed build fix. Seems a backport went badly, and we didn't notice -because the code is architecture-specific. - -* Source/JavaScriptCore/llint/LowLevelInterpreter.cpp: -(JSC::CLoop::execute): - -Upstream: https://github.com/WebKit/WebKit/commit/3d5373575695b293b8559155431d0079a6153aff -Signed-off-by: Peter Korsgaard ---- - Source/JavaScriptCore/llint/LowLevelInterpreter.cpp | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/Source/JavaScriptCore/llint/LowLevelInterpreter.cpp b/Source/JavaScriptCore/llint/LowLevelInterpreter.cpp -index 5064ead6cd2e..9a2e2653b121 100644 ---- a/Source/JavaScriptCore/llint/LowLevelInterpreter.cpp -+++ b/Source/JavaScriptCore/llint/LowLevelInterpreter.cpp -@@ -336,8 +336,6 @@ JSValue CLoop::execute(OpcodeID entryOpcodeID, void* executableAddress, VM* vm, - UNUSED_VARIABLE(t2); - UNUSED_VARIABLE(t3); - UNUSED_VARIABLE(t5); -- UNUSED_VARIABLE(t6); -- UNUSED_VARIABLE(t7); - - struct StackPointerScope { - StackPointerScope(CLoopStack& stack) --- -2.39.2 - diff --git a/package/webkitgtk/Config.in b/package/webkitgtk/Config.in index ace1b8739f..8ee90dda1c 100644 --- a/package/webkitgtk/Config.in +++ b/package/webkitgtk/Config.in @@ -29,6 +29,7 @@ config BR2_PACKAGE_WEBKITGTK bool "webkitgtk" depends on !BR2_STATIC_LIBS # wayland depends on !BR2_BINFMT_FLAT # icu + depends on BR2_PACKAGE_HAS_LIBEGL depends on BR2_HOST_GCC_AT_LEAST_4_9 # icu, host-ruby depends on BR2_INSTALL_LIBSTDCPP depends on BR2_TOOLCHAIN_HAS_THREADS # wayland, icu, libsoup3 @@ -42,18 +43,17 @@ config BR2_PACKAGE_WEBKITGTK select BR2_PACKAGE_HARFBUZZ select BR2_PACKAGE_ICU select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBEPOXY select BR2_PACKAGE_LIBGCRYPT select BR2_PACKAGE_LIBSECRET select BR2_PACKAGE_LIBSOUP3 select BR2_PACKAGE_LIBTASN1 select BR2_PACKAGE_LIBXML2 select BR2_PACKAGE_LIBXSLT - select BR2_PACKAGE_OPENJPEG select BR2_PACKAGE_SQLITE select BR2_PACKAGE_WEBP select BR2_PACKAGE_WEBP_DEMUX select BR2_PACKAGE_WOFF2 - select BR2_PACKAGE_WPEBACKEND_FDO if BR2_PACKAGE_LIBGTK3_WAYLAND select BR2_PACKAGE_XLIB_LIBXCOMPOSITE if BR2_PACKAGE_LIBGTK3_X11 select BR2_PACKAGE_XLIB_LIBXDAMAGE if BR2_PACKAGE_LIBGTK3_X11 select BR2_PACKAGE_XLIB_LIBXRENDER if BR2_PACKAGE_LIBGTK3_X11 diff --git a/package/webkitgtk/webkitgtk.hash b/package/webkitgtk/webkitgtk.hash index ac4799d4cf..7da0e97e5d 100644 --- a/package/webkitgtk/webkitgtk.hash +++ b/package/webkitgtk/webkitgtk.hash @@ -1,6 +1,6 @@ -# From https://www.webkitgtk.org/releases/webkitgtk-2.42.5.tar.xz.sums -sha1 c3ffb2beaac56f1089029f2254482f48d9e3db37 webkitgtk-2.42.5.tar.xz -sha256 b64278c1f20b8cfdbfb5ff573c37d871aba74a1db26d9b39f74e8953fe61e749 webkitgtk-2.42.5.tar.xz +# From https://www.webkitgtk.org/releases/webkitgtk-2.44.2.tar.xz.sums +sha1 e62b2c545011a2f180a914529a68950c4d34a2ee webkitgtk-2.44.2.tar.xz +sha256 523f42c8ff24832add17631f6eaafe8f9303afe316ef1a7e1844b952a7f7521b webkitgtk-2.44.2.tar.xz # Hashes for license files: sha256 0b5d3a7cc325942567373b0ecd757d07c132e0ebd7c97bfc63f7e1a76094edb4 Source/WebCore/LICENSE-APPLE diff --git a/package/webkitgtk/webkitgtk.mk b/package/webkitgtk/webkitgtk.mk index 075a36654f..468fefab0e 100644 --- a/package/webkitgtk/webkitgtk.mk +++ b/package/webkitgtk/webkitgtk.mk @@ -4,7 +4,7 @@ # ################################################################################ -WEBKITGTK_VERSION = 2.42.5 +WEBKITGTK_VERSION = 2.44.2 WEBKITGTK_SITE = https://www.webkitgtk.org/releases WEBKITGTK_SOURCE = webkitgtk-$(WEBKITGTK_VERSION).tar.xz WEBKITGTK_INSTALL_STAGING = YES @@ -14,8 +14,8 @@ WEBKITGTK_LICENSE_FILES = \ Source/WebCore/LICENSE-LGPL-2.1 WEBKITGTK_CPE_ID_VENDOR = webkitgtk WEBKITGTK_DEPENDENCIES = host-ruby host-python3 host-gperf host-unifdef \ - enchant harfbuzz icu jpeg libgcrypt libgtk3 libsecret libsoup3 \ - libtasn1 libxml2 libxslt openjpeg sqlite webp woff2 + enchant harfbuzz icu jpeg libegl libepoxy libgcrypt libgtk3 libsecret \ + libsoup3 libtasn1 libxml2 libxslt sqlite webp woff2 WEBKITGTK_CMAKE_BACKEND = ninja @@ -28,8 +28,8 @@ WEBKITGTK_CONF_OPTS = \ -DENABLE_WEB_RTC=OFF \ -DPORT=GTK \ -DUSE_AVIF=OFF \ + -DUSE_GTK4=OFF \ -DUSE_LIBHYPHEN=OFF \ - -DUSE_OPENJPEG=ON \ -DUSE_WOFF2=ON ifeq ($(BR2_PACKAGE_WEBKITGTK_SANDBOX),y) @@ -45,12 +45,14 @@ endif ifeq ($(BR2_PACKAGE_WEBKITGTK_MULTIMEDIA),y) WEBKITGTK_CONF_OPTS += \ -DENABLE_VIDEO=ON \ - -DENABLE_WEB_AUDIO=ON + -DENABLE_WEB_AUDIO=ON \ + -DENABLE_WEB_CODECS=ON WEBKITGTK_DEPENDENCIES += gstreamer1 gst1-libav gst1-plugins-base else WEBKITGTK_CONF_OPTS += \ -DENABLE_VIDEO=OFF \ - -DENABLE_WEB_AUDIO=OFF + -DENABLE_WEB_AUDIO=OFF \ + -DENABLE_WEB_CODECS=OFF endif ifeq ($(BR2_PACKAGE_WEBKITGTK_WEBDRIVER),y) @@ -73,6 +75,13 @@ else WEBKITGTK_CONF_OPTS += -DENABLE_INTROSPECTION=OFF endif +ifeq ($(BR2_PACKAGE_LIBBACKTRACE),y) +WEBKITGTK_CONF_OPTS += -DUSE_LIBBACKTRACE=ON +WEBKITGTK_DEPENDENCIES += libbacktrace +else +WEBKITGTK_CONF_OPTS += -DUSE_LIBBACKTRACE=OFF +endif + ifeq ($(BR2_PACKAGE_LIBJXL),y) WEBKITGTK_CONF_OPTS += -DUSE_JPEGXL=ON WEBKITGTK_DEPENDENCIES += libjxl @@ -87,13 +96,6 @@ else WEBKITGTK_CONF_OPTS += -DENABLE_GAMEPAD=OFF endif -ifeq ($(BR2_PACKAGE_HAS_LIBGLES),y) -WEBKITGTK_CONF_OPTS += -DUSE_OPENGL_OR_ES=ON -WEBKITGTK_DEPENDENCIES += libgles -else -WEBKITGTK_CONF_OPTS += -DUSE_OPENGL_OR_ES=OFF -endif - ifeq ($(BR2_PACKAGE_HAS_LIBGBM),y) WEBKITGTK_CONF_OPTS += -DUSE_GBM=ON WEBKITGTK_DEPENDENCIES += libgbm @@ -111,23 +113,10 @@ endif ifeq ($(BR2_PACKAGE_LIBGTK3_WAYLAND),y) WEBKITGTK_CONF_OPTS += -DENABLE_WAYLAND_TARGET=ON -WEBKITGTK_DEPENDENCIES += libegl else WEBKITGTK_CONF_OPTS += -DENABLE_WAYLAND_TARGET=OFF endif -# If only the GTK Broadway backend is enabled, EGL is still needed. -ifeq ($(BR2_PACKAGE_LIBGTK3_X11):$(BR2_PACKAGE_LIBGTK3_WAYLAND):$(BR2_PACKAGE_LIBGTK3_BROADWAY),::y) -WEBKITGTK_DEPENDENCIES += libegl -endif - -ifeq ($(BR2_PACKAGE_WPEBACKEND_FDO),y) -WEBKITGTK_CONF_OPTS += -DUSE_WPE_RENDERER=ON -WEBKITGTK_DEPENDENCIES += wpebackend-fdo -else -WEBKITGTK_CONF_OPTS += -DUSE_WPE_RENDERER=OFF -endif - ifeq ($(BR2_PACKAGE_WEBKITGTK_USE_GSTREAMER_GL),y) WEBKITGTK_CONF_OPTS += -DUSE_GSTREAMER_GL=ON else @@ -145,14 +134,17 @@ endif # have a check for these processors. The same goes for ARMv5 and ARMv6. # Disable JIT forcibly here and use the CLoop interpreter instead. # -# Also, we have to disable the sampling profiler, which does NOT work -# with ENABLE_C_LOOP. +# Also, we have to disable the sampling profiler and webassembly, +# which does NOT work with ENABLE_C_LOOP. # # Upstream bugs: https://bugs.webkit.org/show_bug.cgi?id=191258 # https://bugs.webkit.org/show_bug.cgi?id=172765 +# https://bugs.webkit.org/show_bug.cgi?id=265218 # ifeq ($(BR2_ARM_CPU_ARMV5)$(BR2_ARM_CPU_ARMV6)$(BR2_MIPS_CPU_MIPS32R6)$(BR2_MIPS_CPU_MIPS64R6),y) -WEBKITGTK_CONF_OPTS += -DENABLE_JIT=OFF -DENABLE_C_LOOP=ON -DENABLE_SAMPLING_PROFILER=OFF +WEBKITGTK_CONF_OPTS += -DENABLE_JIT=OFF -DENABLE_C_LOOP=ON \ + -DENABLE_SAMPLING_PROFILER=OFF \ + -DENABLE_WEBASSEMBLY=OFF endif $(eval $(cmake-package)) -- 2.34.1 From thomas at devoogdt.com Sun May 19 09:16:26 2024 From: thomas at devoogdt.com (Thomas Devoogdt) Date: Sun, 19 May 2024 11:16:26 +0200 Subject: [Buildroot] [PATCH v4 1/2] package/x11r7/xlib_libxshmfence: fix build on riscv32 Message-ID: <20240519091627.2195972-1-thomas@devoogdt.com> In preparation to revert e39ad96136a8c340b3aea6b036024e28f14584f3, and (partial) 26642e4cc09666110d5105e7867579a0e48cfa09. xshmfence_futex.h: In function 'sys_futex': xshmfence_futex.h:58:24: error: 'SYS_futex' undeclared (first use in this function); did you mean 'sys_futex'? 58 | return syscall(SYS_futex, addr1, op, val1, timeout, addr2, val3); | ^~~~~~~~~ | sys_futex Fixes: - https://gitlab.com/buildroot.org/buildroot/-/commit/e39ad96136a8c340b3aea6b036024e28f14584f3 Signed-off-by: Thomas Devoogdt --- v4: move xlib_libxshmfence to separate patch series --- ...tex.h-fix-build-on-32-bit-architectu.patch | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 package/x11r7/xlib_libxshmfence/0001-src-xshmfence_futex.h-fix-build-on-32-bit-architectu.patch diff --git a/package/x11r7/xlib_libxshmfence/0001-src-xshmfence_futex.h-fix-build-on-32-bit-architectu.patch b/package/x11r7/xlib_libxshmfence/0001-src-xshmfence_futex.h-fix-build-on-32-bit-architectu.patch new file mode 100644 index 0000000000..f4ef558615 --- /dev/null +++ b/package/x11r7/xlib_libxshmfence/0001-src-xshmfence_futex.h-fix-build-on-32-bit-architectu.patch @@ -0,0 +1,46 @@ +From 4fca45a71f08a5bebd12d39c85f49e0b0e4426bf Mon Sep 17 00:00:00 2001 +From: Thomas Devoogdt +Date: Fri, 5 Apr 2024 10:45:15 +0200 +Subject: [PATCH] src/xshmfence_futex.h: fix build on 32-bit architectures + using 64-bit time_t + +Fix the following build failure on 32-bit architectures using 64-bit +time_t (e.g. riscv32): + +xshmfence_futex.h: In function 'sys_futex': +xshmfence_futex.h:58:24: error: 'SYS_futex' undeclared (first use in this function); did you mean 'sys_futex'? + 58 | return syscall(SYS_futex, addr1, op, val1, timeout, addr2, val3); + | ^~~~~~~~~ + | sys_futex + +Similar to: +https://gitlab.freedesktop.org/mesa/mesa/-/commit/7d87478124061915582412ba410759afe863d679 + +Fixes: +https://gitlab.com/buildroot.org/buildroot/-/commit/e39ad96136a8c340b3aea6b036024e28f14584f3 + +Signed-off-by: Thomas Devoogdt +Part-of: +Upstream: https://gitlab.freedesktop.org/xorg/lib/libxshmfence/-/commit/4fca45a71f08a5bebd12d39c85f49e0b0e4426bf +--- + src/xshmfence_futex.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/xshmfence_futex.h b/src/xshmfence_futex.h +index 673ac0e..4476038 100644 +--- a/src/xshmfence_futex.h ++++ b/src/xshmfence_futex.h +@@ -53,6 +53,10 @@ static inline int futex_wait(int32_t *addr, int32_t value) { + #include + #include + ++#ifndef SYS_futex ++#define SYS_futex SYS_futex_time64 ++#endif ++ + static inline long sys_futex(void *addr1, int op, int val1, struct timespec *timeout, void *addr2, int val3) + { + return syscall(SYS_futex, addr1, op, val1, timeout, addr2, val3); +-- +2.34.1 + -- 2.34.1 From thomas at devoogdt.com Sun May 19 09:16:27 2024 From: thomas at devoogdt.com (Thomas Devoogdt) Date: Sun, 19 May 2024 11:16:27 +0200 Subject: [Buildroot] [PATCH v4 2/2] Revert "package/x11r7/xlib_libxshmfence: disable on riscv32" In-Reply-To: <20240519091627.2195972-1-thomas@devoogdt.com> References: <20240519091627.2195972-1-thomas@devoogdt.com> Message-ID: <20240519091627.2195972-2-thomas@devoogdt.com> This reverts (partial) commit e39ad96136a8c340b3aea6b036024e28f14584f3, and 26642e4cc09666110d5105e7867579a0e48cfa09. Fixed by 0001-src-xshmfence_futex.h-fix-build-on-32-bit-architectu.patch. Signed-off-by: Thomas Devoogdt --- v4: move xlib_libxshmfence to separate patch series --- package/mesa3d/Config.in | 6 +++--- package/x11r7/xlib_libxshmfence/Config.in | 3 --- package/x11r7/xserver_xorg-server/Config.in | 3 +-- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in index 459051b2db..d8ea22ac91 100644 --- a/package/mesa3d/Config.in +++ b/package/mesa3d/Config.in @@ -99,7 +99,7 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV bool "Gallium Etnaviv driver" - depends on (BR2_TOOLCHAIN_HAS_SYNC_4 && !BR2_RISCV_32) || !BR2_PACKAGE_XORG7 # libxshmfence + depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER select BR2_PACKAGE_LIBDRM_ETNAVIV help @@ -135,7 +135,7 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_IRIS config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_LIMA bool "Gallium lima driver" - depends on (BR2_TOOLCHAIN_HAS_SYNC_4 && !BR2_RISCV_32) || !BR2_PACKAGE_XORG7 # libxshmfence + depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER help Mesa driver for ARM Mali Utgard GPUs. @@ -151,7 +151,7 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_PANFROST bool "Gallium panfrost driver" - depends on (BR2_TOOLCHAIN_HAS_SYNC_4 && !BR2_RISCV_32) || !BR2_PACKAGE_XORG7 # libxshmfence + depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER help Mesa driver for ARM Mali Midgard and Bifrost GPUs. diff --git a/package/x11r7/xlib_libxshmfence/Config.in b/package/x11r7/xlib_libxshmfence/Config.in index 7823bda7c0..710476b357 100644 --- a/package/x11r7/xlib_libxshmfence/Config.in +++ b/package/x11r7/xlib_libxshmfence/Config.in @@ -1,8 +1,5 @@ config BR2_PACKAGE_XLIB_LIBXSHMFENCE bool "libxshmfence" - # Due to use of SYS_futex - can be enabled again when upstream - # adds SYS_futex64 as an alternative - depends on !BR2_RISCV_32 depends on BR2_TOOLCHAIN_HAS_SYNC_4 select BR2_PACKAGE_XORGPROTO help diff --git a/package/x11r7/xserver_xorg-server/Config.in b/package/x11r7/xserver_xorg-server/Config.in index b933bd0285..89410f22bb 100644 --- a/package/x11r7/xserver_xorg-server/Config.in +++ b/package/x11r7/xserver_xorg-server/Config.in @@ -49,8 +49,7 @@ config BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR depends on BR2_INSTALL_LIBSTDCPP select BR2_PACKAGE_LIBDRM select BR2_PACKAGE_LIBPCIACCESS - select BR2_PACKAGE_XLIB_LIBXSHMFENCE if \ - (BR2_TOOLCHAIN_HAS_SYNC_4 && !BR2_RISCV_32) + select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_TOOLCHAIN_HAS_SYNC_4 help This variant of the X.org server is the full-blown variant, as used by desktop GNU/Linux distributions. The drivers (for -- 2.34.1 From peter at korsgaard.com Sun May 19 10:13:51 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Sun, 19 May 2024 12:13:51 +0200 Subject: [Buildroot] [PATCH 1/5] configs/orangepi_r1_defconfig: drop double _HOST_UBOOT_TOOLS=y Message-ID: <20240519101355.7792-1-peter@korsgaard.com> Fixes the following warning: orangepi_r1_defconfig:35:warning: override: reassigning to symbol BR2_PACKAGE_HOST_UBOOT_TOOLS While we're at it, move the HOST_UBOOT_TOOLS_* options where savedefconfig would put them. Signed-off-by: Peter Korsgaard --- configs/orangepi_r1_defconfig | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/configs/orangepi_r1_defconfig b/configs/orangepi_r1_defconfig index bad1f9400c..332761bb71 100644 --- a/configs/orangepi_r1_defconfig +++ b/configs/orangepi_r1_defconfig @@ -26,13 +26,12 @@ BR2_TARGET_UBOOT_NEEDS_PYTHON3=y BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y BR2_TARGET_UBOOT_FORMAT_CUSTOM=y BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" -BR2_PACKAGE_HOST_UBOOT_TOOLS=y -BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y -BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-r1/boot.cmd" BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_GENIMAGE=y BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-r1/boot.cmd" BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-r1/genimage.cfg" -- 2.39.2 From peter at korsgaard.com Sun May 19 10:13:52 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Sun, 19 May 2024 12:13:52 +0200 Subject: [Buildroot] [PATCH 2/5] configs/orangepi_r1_defconfig: bump U-boot to v2024.01 to fix compatibility with setuptools >= 69 In-Reply-To: <20240519101355.7792-1-peter@korsgaard.com> References: <20240519101355.7792-1-peter@korsgaard.com> Message-ID: <20240519101355.7792-2-peter@korsgaard.com> Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6865597717 setuptools.extern.packaging.version.InvalidVersion: Invalid version: 'u-boot-2020.10' make[5]: *** [scripts/dtc/pylibfdt/Makefile:30: scripts/dtc/pylibfdt/_libfdt.so] Error 1 make[4]: *** [scripts/Makefile.build:419: scripts/dtc/pylibfdt] Error 2 make[4]: *** Waiting for unfinished jobs.... make[3]: *** [scripts/Makefile.build:419: scripts/dtc] Error 2 make[2]: *** [Makefile:577: scripts] Error 2 make[1]: *** [package/pkg-generic.mk:283: /builds/buildroot.org/buildroot/output/build/uboot-2020.10/.stamp_built] Error 2 Commit 6b62384e3d2a9e1 (package/python-setuptools: bump to version 69.0.3) bumped setuptools, which now errors out when passed a version with a prefix string. This u-boot- prefix string is dropped since U-Boot 2023.01 with commit c977b1843504 (libfdt: Fix invalid version warning), so bump U-Boot to v2024.01 to fix this issue. Signed-off-by: Peter Korsgaard --- configs/orangepi_r1_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/orangepi_r1_defconfig b/configs/orangepi_r1_defconfig index 332761bb71..d7a21894bd 100644 --- a/configs/orangepi_r1_defconfig +++ b/configs/orangepi_r1_defconfig @@ -19,7 +19,7 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2020.10" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_r1" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_NEEDS_PYTHON3=y -- 2.39.2 From peter at korsgaard.com Sun May 19 10:13:54 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Sun, 19 May 2024 12:13:54 +0200 Subject: [Buildroot] [PATCH 4/5] configs/orangepi_r1_defconfig: bump Linux kernel to 6.6.31 In-Reply-To: <20240519101355.7792-1-peter@korsgaard.com> References: <20240519101355.7792-1-peter@korsgaard.com> Message-ID: <20240519101355.7792-4-peter@korsgaard.com> And update the dts path to match the updated location after commit 724ba6751532 ("ARM: dts: Move .dts files to vendor sub-directories"). Signed-off-by: Peter Korsgaard --- configs/orangepi_r1_defconfig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/configs/orangepi_r1_defconfig b/configs/orangepi_r1_defconfig index 318fa126a7..80f88a168f 100644 --- a/configs/orangepi_r1_defconfig +++ b/configs/orangepi_r1_defconfig @@ -1,16 +1,16 @@ BR2_arm=y BR2_cortex_a7=y BR2_ARM_FPU_VFPV4=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y BR2_TARGET_GENERIC_HOSTNAME="OrangePi_R1" BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi R1" BR2_SYSTEM_DHCP="eth0" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.217" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.31" BR2_LINUX_KERNEL_DEFCONFIG="sunxi" BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h2-plus-orangepi-r1" +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun8i-h2-plus-orangepi-r1" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-r1/linux-extras.config" BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_TARGET_ROOTFS_EXT2=y -- 2.39.2 From peter at korsgaard.com Sun May 19 10:13:55 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Sun, 19 May 2024 12:13:55 +0200 Subject: [Buildroot] [PATCH 5/5] configs/orangepi_r1_defconfig: add hashes for Linux/headers/u-boot In-Reply-To: <20240519101355.7792-1-peter@korsgaard.com> References: <20240519101355.7792-1-peter@korsgaard.com> Message-ID: <20240519101355.7792-5-peter@korsgaard.com> And enable BR2_DOWNLOAD_FORCE_CHECK_HASHES. With this, we can now drop the defconfig from .checkpackageignore. Signed-off-by: Peter Korsgaard --- .checkpackageignore | 1 - .../orangepi-r1/patches/linux-headers/linux-headers.hash | 1 + board/orangepi/orangepi-r1/patches/linux/linux.hash | 2 ++ board/orangepi/orangepi-r1/patches/uboot/uboot.hash | 2 ++ configs/orangepi_r1_defconfig | 2 ++ 5 files changed, 7 insertions(+), 1 deletion(-) create mode 120000 board/orangepi/orangepi-r1/patches/linux-headers/linux-headers.hash create mode 100644 board/orangepi/orangepi-r1/patches/linux/linux.hash create mode 100644 board/orangepi/orangepi-r1/patches/uboot/uboot.hash diff --git a/.checkpackageignore b/.checkpackageignore index 070b97116a..3821d4bc16 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -272,7 +272,6 @@ configs/orangepi_one_plus_defconfig lib_defconfig.ForceCheckHash configs/orangepi_pc2_defconfig lib_defconfig.ForceCheckHash configs/orangepi_pc_defconfig lib_defconfig.ForceCheckHash configs/orangepi_pc_plus_defconfig lib_defconfig.ForceCheckHash -configs/orangepi_r1_defconfig lib_defconfig.ForceCheckHash configs/orangepi_zero3_defconfig lib_defconfig.ForceCheckHash configs/orangepi_zero_defconfig lib_defconfig.ForceCheckHash configs/orangepi_zero_plus2_defconfig lib_defconfig.ForceCheckHash diff --git a/board/orangepi/orangepi-r1/patches/linux-headers/linux-headers.hash b/board/orangepi/orangepi-r1/patches/linux-headers/linux-headers.hash new file mode 120000 index 0000000000..5808d92afe --- /dev/null +++ b/board/orangepi/orangepi-r1/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/orangepi/orangepi-r1/patches/linux/linux.hash b/board/orangepi/orangepi-r1/patches/linux/linux.hash new file mode 100644 index 0000000000..2ec07fd81b --- /dev/null +++ b/board/orangepi/orangepi-r1/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 d6ecff966f8c95ec4cb3bb303904f757b7de6a6bcfef0d0771cb852158e61c20 linux-6.6.31.tar.xz diff --git a/board/orangepi/orangepi-r1/patches/uboot/uboot.hash b/board/orangepi/orangepi-r1/patches/uboot/uboot.hash new file mode 100644 index 0000000000..bc999536af --- /dev/null +++ b/board/orangepi/orangepi-r1/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b99611f1ed237bf3541bdc8434b68c96a6e05967061f992443cb30aabebef5b3 u-boot-2024.01.tar.bz2 diff --git a/configs/orangepi_r1_defconfig b/configs/orangepi_r1_defconfig index 80f88a168f..b48e6d0015 100644 --- a/configs/orangepi_r1_defconfig +++ b/configs/orangepi_r1_defconfig @@ -2,6 +2,8 @@ BR2_arm=y BR2_cortex_a7=y BR2_ARM_FPU_VFPV4=y BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_GLOBAL_PATCH_DIR="board/orangepi/orangepi-r1/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y BR2_TARGET_GENERIC_HOSTNAME="OrangePi_R1" BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi R1" BR2_SYSTEM_DHCP="eth0" -- 2.39.2 From peter at korsgaard.com Sun May 19 10:13:53 2024 From: peter at korsgaard.com (Peter Korsgaard) Date: Sun, 19 May 2024 12:13:53 +0200 Subject: [Buildroot] [PATCH 3/5] configs/orangepi_r1_defconfig: bump Linux to 5.10.217 to fix gcc 13.x build In-Reply-To: <20240519101355.7792-1-peter@korsgaard.com> References: <20240519101355.7792-1-peter@korsgaard.com> Message-ID: <20240519101355.7792-3-peter@korsgaard.com> The 5.10.10 kernel fails to build with GCC 13.x: In file included from : drivers/ata/libahci.c: In function ?ahci_led_store?: ././include/linux/compiler_types.h:315:45: error: call to ?__compiletime_assert_321? declared with attribute error: BUILD_BUG_ON failed: sizeof(_s) > sizeof(long) 315 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) | ^ ././include/linux/compiler_types.h:296:25: note: in definition of macro ?__compiletime_assert? 296 | prefix ## suffix(); \ | ^~~~~~ ././include/linux/compiler_types.h:315:9: note: in expansion of macro ?_compiletime_assert? 315 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) | ^~~~~~~~~~~~~~~~~~~ ./include/linux/build_bug.h:39:37: note: in expansion of macro ?compiletime_assert? 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) | ^~~~~~~~~~~~~~~~~~ ./include/linux/build_bug.h:50:9: note: in expansion of macro ?BUILD_BUG_ON_MSG? 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) | ^~~~~~~~~~~~~~~~ ./include/linux/nospec.h:58:9: note: in expansion of macro ?BUILD_BUG_ON? 58 | BUILD_BUG_ON(sizeof(_s) > sizeof(long)); \ | ^~~~~~~~~~~~ drivers/ata/libahci.c:1137:23: note: in expansion of macro ?array_index_nospec? 1137 | pmp = array_index_nospec(pmp, EM_MAX_SLOTS); | ^~~~~~~~~~~~~~~~~~ This is fixed upstream by commit f07788079f515ca (ata: ahci: fix enum constants for gcc-13), which has been backported to 5.10.x as of 5.10.184, so bump to v5.10.217 to fix the build. Signed-off-by: Peter Korsgaard --- configs/orangepi_r1_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/orangepi_r1_defconfig b/configs/orangepi_r1_defconfig index d7a21894bd..318fa126a7 100644 --- a/configs/orangepi_r1_defconfig +++ b/configs/orangepi_r1_defconfig @@ -7,7 +7,7 @@ BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi R1" BR2_SYSTEM_DHCP="eth0" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.10" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.217" BR2_LINUX_KERNEL_DEFCONFIG="sunxi" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h2-plus-orangepi-r1" -- 2.39.2 From fontaine.fabrice at gmail.com Sun May 19 10:54:36 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Sun, 19 May 2024 12:54:36 +0200 Subject: [Buildroot] [PATCH 1/1] package/ivi-homescreen: needs gcc >= 8 Message-ID: <20240519105436.354168-1-fontaine.fabrice@gmail.com> ivi-homescreen needs C++17 filesystem resulting in the following build failure with gcc < 8 since its addition in commit 9d8497e79de3ced144877ba6ee38cc5b7181aaeb: In file included from /home/buildroot/instance-0/output-1/build/ivi-homescreen-5ab78a19e95c88cc5d6b173ab1260a211e78cf0a/third_party/flutter/shell/platform/common/path_utils.cc:5:0: /home/buildroot/instance-0/output-1/build/ivi-homescreen-5ab78a19e95c88cc5d6b173ab1260a211e78cf0a/third_party/./flutter/shell/platform/common/path_utils.h:8:10: fatal error: filesystem: No such file or directory #include ^~~~~~~~~~~~ Fixes: 9d8497e79de3ced144877ba6ee38cc5b7181aaeb - http://autobuild.buildroot.org/results/a5e88d5a4264a6165be31a99f1c123af53fa382e Signed-off-by: Fabrice Fontaine --- package/ivi-homescreen/Config.in | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package/ivi-homescreen/Config.in b/package/ivi-homescreen/Config.in index dc2ccb0c97..a4f5f6835f 100644 --- a/package/ivi-homescreen/Config.in +++ b/package/ivi-homescreen/Config.in @@ -3,7 +3,7 @@ menuconfig BR2_PACKAGE_IVI_HOMESCREEN depends on BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS depends on BR2_PACKAGE_FLUTTER_ENGINE_ARCH_SUPPORTS depends on BR2_HOST_GCC_AT_LEAST_5 # flutter-engine - depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # flutter-engine + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # C++17 filesystem depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # flutter-engine depends on BR2_TOOLCHAIN_USES_GLIBC # flutter-engine depends on BR2_INSTALL_LIBSTDCPP # flutter-engine @@ -250,11 +250,11 @@ comment "OpenGL texture plugin needs an EGL backend" endif # BR2_PACKAGE_IVI_HOMESCREEN -comment "ivi-homescreen needs a glibc toolchain w/ wchar, C++, gcc >= 5, dynamic library, host gcc >= 5" +comment "ivi-homescreen needs a glibc toolchain w/ wchar, C++, gcc >= 8, dynamic library, host gcc >= 5" depends on BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS depends on BR2_PACKAGE_FLUTTER_ENGINE_ARCH_SUPPORTS depends on !BR2_TOOLCHAIN_USES_GLIBC \ - || !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_5 \ + || !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_8 \ || BR2_STATIC_LIBS || !BR2_USE_WCHAR \ || !BR2_HOST_GCC_AT_LEAST_5 -- 2.43.0 From ps.report at gmx.net Sun May 19 13:31:13 2024 From: ps.report at gmx.net (Peter Seiderer) Date: Sun, 19 May 2024 15:31:13 +0200 Subject: [Buildroot] [PATCH for 2024.02.x v1] package/git: security bump version to 2.43.4 Message-ID: <20240519133113.16738-1-ps.report@gmx.net> Fixes CVE-2024-32002, CVE-2024-32004, CVE-2024-32020 and CVE-2024-32021 (for details see [1]). [1] https://lore.kernel.org/lkml/xmqqv83g4937.fsf at gitster.g/ Signed-off-by: Peter Seiderer --- package/git/git.hash | 2 +- package/git/git.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/git/git.hash b/package/git/git.hash index 9cf044cc07..f24023f2f3 100644 --- a/package/git/git.hash +++ b/package/git/git.hash @@ -1,5 +1,5 @@ # From: https://www.kernel.org/pub/software/scm/git/sha256sums.asc -sha256 5446603e73d911781d259e565750dcd277a42836c8e392cac91cf137aa9b76ec git-2.43.0.tar.xz +sha256 6b7aadda1787f0c1eaa257c1df56bb12e43d12bce55cfe7e5ade00228ee3d886 git-2.43.4.tar.xz # Locally calculated sha256 5b2198d1645f767585e8a88ac0499b04472164c0d2da22e75ecf97ef443ab32e COPYING sha256 1922f45d2c49e390032c9c0ba6d7cac904087f7cec51af30c2b2ad022ce0e76a LGPL-2.1 diff --git a/package/git/git.mk b/package/git/git.mk index 1502968186..15a29d1f6c 100644 --- a/package/git/git.mk +++ b/package/git/git.mk @@ -4,7 +4,7 @@ # ################################################################################ -GIT_VERSION = 2.43.0 +GIT_VERSION = 2.43.4 GIT_SOURCE = git-$(GIT_VERSION).tar.xz GIT_SITE = $(BR2_KERNEL_MIRROR)/software/scm/git GIT_LICENSE = GPL-2.0, LGPL-2.1+ -- 2.45.1 From ps.report at gmx.net Sun May 19 13:35:36 2024 From: ps.report at gmx.net (Peter Seiderer) Date: Sun, 19 May 2024 15:35:36 +0200 Subject: [Buildroot] [PATCH v1] package/git: security bump version to 2.45.1 Message-ID: <20240519133536.21349-1-ps.report@gmx.net> Fixes CVE-2024-32002, CVE-2024-32004, CVE-2024-32020 and CVE-2024-32021 (for details see [1]). [1] https://lore.kernel.org/lkml/xmqqv83g4937.fsf at gitster.g/ Signed-off-by: Peter Seiderer --- package/git/git.hash | 2 +- package/git/git.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/git/git.hash b/package/git/git.hash index 2e54945a40..7dbeec714b 100644 --- a/package/git/git.hash +++ b/package/git/git.hash @@ -1,5 +1,5 @@ # From: https://www.kernel.org/pub/software/scm/git/sha256sums.asc -sha256 0aac200bd06476e7df1ff026eb123c6827bc10fe69d2823b4bf2ebebe5953429 git-2.45.0.tar.xz +sha256 e64d340a8e627ae22cfb8bcc651cca0b497cf1e9fdf523735544ff4a732f12bf git-2.45.1.tar.xz # Locally calculated sha256 5b2198d1645f767585e8a88ac0499b04472164c0d2da22e75ecf97ef443ab32e COPYING sha256 1922f45d2c49e390032c9c0ba6d7cac904087f7cec51af30c2b2ad022ce0e76a LGPL-2.1 diff --git a/package/git/git.mk b/package/git/git.mk index b6a7ec0cbb..04f489e038 100644 --- a/package/git/git.mk +++ b/package/git/git.mk @@ -4,7 +4,7 @@ # ################################################################################ -GIT_VERSION = 2.45.0 +GIT_VERSION = 2.45.1 GIT_SOURCE = git-$(GIT_VERSION).tar.xz GIT_SITE = $(BR2_KERNEL_MIRROR)/software/scm/git GIT_LICENSE = GPL-2.0, LGPL-2.1+ -- 2.45.1 From yann.morin.1998 at free.fr Sun May 19 14:57:14 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Sun, 19 May 2024 16:57:14 +0200 Subject: [Buildroot] [git commit] package/git: security bump version to 2.45.1 Message-ID: <20240519150559.5FDD187098@busybox.osuosl.org> commit: https://git.buildroot.net/buildroot/commit/?id=6a4bf735f49387b74f3832f6f546c5fd5d447ec9 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Fixes CVE-2024-32002, CVE-2024-32004, CVE-2024-32020 and CVE-2024-32021 (for details see [1]). [1] https://lore.kernel.org/lkml/xmqqv83g4937.fsf at gitster.g/ Signed-off-by: Peter Seiderer Signed-off-by: Yann E. MORIN --- package/git/git.hash | 2 +- package/git/git.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/git/git.hash b/package/git/git.hash index 2e54945a40..7dbeec714b 100644 --- a/package/git/git.hash +++ b/package/git/git.hash @@ -1,5 +1,5 @@ # From: https://www.kernel.org/pub/software/scm/git/sha256sums.asc -sha256 0aac200bd06476e7df1ff026eb123c6827bc10fe69d2823b4bf2ebebe5953429 git-2.45.0.tar.xz +sha256 e64d340a8e627ae22cfb8bcc651cca0b497cf1e9fdf523735544ff4a732f12bf git-2.45.1.tar.xz # Locally calculated sha256 5b2198d1645f767585e8a88ac0499b04472164c0d2da22e75ecf97ef443ab32e COPYING sha256 1922f45d2c49e390032c9c0ba6d7cac904087f7cec51af30c2b2ad022ce0e76a LGPL-2.1 diff --git a/package/git/git.mk b/package/git/git.mk index b6a7ec0cbb..04f489e038 100644 --- a/package/git/git.mk +++ b/package/git/git.mk @@ -4,7 +4,7 @@ # ################################################################################ -GIT_VERSION = 2.45.0 +GIT_VERSION = 2.45.1 GIT_SOURCE = git-$(GIT_VERSION).tar.xz GIT_SITE = $(BR2_KERNEL_MIRROR)/software/scm/git GIT_LICENSE = GPL-2.0, LGPL-2.1+ From yann.morin.1998 at free.fr Sun May 19 15:06:04 2024 From: yann.morin.1998 at free.fr (Yann E. MORIN) Date: Sun, 19 May 2024 17:06:04 +0200 Subject: [Buildroot] [PATCH v1] package/git: security bump version to 2.45.1 In-Reply-To: <20240519133536.21349-1-ps.report@gmx.net> References: <20240519133536.21349-1-ps.report@gmx.net> Message-ID: Peter, All, On 2024-05-19 15:35 +0200, Peter Seiderer via buildroot spake thusly: > Fixes CVE-2024-32002, CVE-2024-32004, CVE-2024-32020 and CVE-2024-32021 > (for details see [1]). > > [1] https://lore.kernel.org/lkml/xmqqv83g4937.fsf at gitster.g/ > > Signed-off-by: Peter Seiderer Applied to master, thanks. Regards, Yann E. MORIN. > --- > package/git/git.hash | 2 +- > package/git/git.mk | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/package/git/git.hash b/package/git/git.hash > index 2e54945a40..7dbeec714b 100644 > --- a/package/git/git.hash > +++ b/package/git/git.hash > @@ -1,5 +1,5 @@ > # From: https://www.kernel.org/pub/software/scm/git/sha256sums.asc > -sha256 0aac200bd06476e7df1ff026eb123c6827bc10fe69d2823b4bf2ebebe5953429 git-2.45.0.tar.xz > +sha256 e64d340a8e627ae22cfb8bcc651cca0b497cf1e9fdf523735544ff4a732f12bf git-2.45.1.tar.xz > # Locally calculated > sha256 5b2198d1645f767585e8a88ac0499b04472164c0d2da22e75ecf97ef443ab32e COPYING > sha256 1922f45d2c49e390032c9c0ba6d7cac904087f7cec51af30c2b2ad022ce0e76a LGPL-2.1 > diff --git a/package/git/git.mk b/package/git/git.mk > index b6a7ec0cbb..04f489e038 100644 > --- a/package/git/git.mk > +++ b/package/git/git.mk > @@ -4,7 +4,7 @@ > # > ################################################################################ > > -GIT_VERSION = 2.45.0 > +GIT_VERSION = 2.45.1 > GIT_SOURCE = git-$(GIT_VERSION).tar.xz > GIT_SITE = $(BR2_KERNEL_MIRROR)/software/scm/git > GIT_LICENSE = GPL-2.0, LGPL-2.1+ > -- > 2.45.1 > > _______________________________________________ > buildroot mailing list > buildroot at buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' From fontaine.fabrice at gmail.com Sun May 19 17:29:55 2024 From: fontaine.fabrice at gmail.com (Fabrice Fontaine) Date: Sun, 19 May 2024 19:29:55 +0200 Subject: [Buildroot] [PATCH 1/1] package/ruby: security bump to version 3.3.1 Message-ID: <20240519172955.457904-1-fontaine.fabrice@gmail.com> This release includes security fixes: - CVE-2024-27282: Arbitrary memory address read vulnerability with Regex search - CVE-2024-27281: RCE vulnerability with .rdoc_options in RDoc - CVE-2024-27280: Buffer overread vulnerability in StringIO https://www.ruby-lang.org/en/news/2024/04/23/ruby-3-3-1-released/ Signed-off-by: Fabrice Fontaine --- package/ruby/ruby.hash | 4 ++-- package/ruby/ruby.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/ruby/ruby.hash b/package/ruby/ruby.hash index c729c59453..4ac6200bca 100644 --- a/package/ruby/ruby.hash +++ b/package/ruby/ruby.hash @@ -1,5 +1,5 @@ -# https://www.ruby-lang.org/en/news/2023/12/25/ruby-3-3-0-released/ -sha512 7959c5753bfa0bfc4d6d74060869aabbe9815c1c97930659da11b917ee0803ddbbd80e869e00c48b8694b4ba48709c3b6493fd045568e36e902616c35ababf01 ruby-3.3.0.tar.xz +# https://www.ruby-lang.org/en/news/2024/04/23/ruby-3-3-1-released/ +sha512 c58e9be9b5ab48191fbf7d67e13f0ec42ee71ed338170e0f7b246708e9cfc617ce65098f5ce7ab32d4305e785642d3e44253462104d5b9c4abcb1a4113f48347 ruby-3.3.1.tar.xz # License files, Locally calculated sha256 e849b28d324423e636a3e6bc5d583cdaf4bd046c2b20872c53886b612d01a4a1 LEGAL diff --git a/package/ruby/ruby.mk b/package/ruby/ruby.mk index 00fa0e0f65..fcc637c5ea 100644 --- a/package/ruby/ruby.mk +++ b/package/ruby/ruby.mk @@ -5,7 +5,7 @@ ################################################################################ RUBY_VERSION_MAJOR = 3.3 -RUBY_VERSION = $(RUBY_VERSION_MAJOR).0 +RUBY_VERSION = $(RUBY_VERSION_MAJOR).1 RUBY_VERSION_EXT = 3.3.0 RUBY_SITE = http://cache.ruby-lang.org/pub/ruby/$(RUBY_VERSION_MAJOR) RUBY_SOURCE = ruby-$(RUBY_VERSION).tar.xz -- 2.43.0