diff --git a/package/fwts/0002-libfwtsiasl-fix-parallel-build-with-GNU-Make-4.4.patch b/package/fwts/0002-libfwtsiasl-fix-parallel-build-with-GNU-Make-4.4.patch deleted file mode 100644 index a5568d1fd9..0000000000 --- a/package/fwts/0002-libfwtsiasl-fix-parallel-build-with-GNU-Make-4.4.patch +++ /dev/null @@ -1,133 +0,0 @@ -From 65a89b6253ef527ab4bc951eb8f9deba12f0121a Mon Sep 17 00:00:00 2001 -From: Julien Olivain -Date: Mon, 20 May 2024 11:14:02 +0200 -Subject: [PATCH] libfwtsiasl: fix parallel build with GNU Make >= 4.4 - -When a build host has a large number of cores (like 20+) and GNU Make -version is >= 4.4, fwts randomly fail to build in parallel, with a -"make -j$(nproc)" command, 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 issue has been reported here: -https://github.com/fwts/fwts/issues/7 - -The Makefile.am of libfwtsiasl is using the GNU Make ".NOTPARALLEL" -special target with prerequisites to handle commands generating -multiple outputs (like lex/yacc invocations). See: -https://github.com/fwts/fwts/blob/V24.03.00/src/libfwtsiasl/Makefile.am#L61 - -First, the .NOTPARALLEL special target _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 - -GNU Make version < 4.4 will interpret it as if it was written without -prerequisite (as a standalone ".NOTPARALLEL:"). The effect is that the -parallel compilation is disabled for the whole libfwtsiasl. The -standalone .NOTPARALLEL special target was introduced in GNU Make 3.79 -in 2000. This is why parallel builds are working with Make older than -version 4.4. - -Secondly, the reason why the build is failing on GNU Make >= 4.4 is -because the usage of .NOTPARALLEL in incorrect. - -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 targets -set as prerequisites of .NOTPARALLEL. - -The targets will not be correctly marked to disable parallel -execution. - -Thirdly, the use of multiple targets in a rule is incorrect here. See -Make manual: -https://www.gnu.org/software/make/manual/html_node/Multiple-Targets.html -The construct used in Makefile.am of libfwtsiasl for lex/yacc parsers -assumes they are independant targets (so they can be executed in -parallel). Finally, the "mv" command is failing, because there will be -one parallel execution per target, the first mv will suceed and the -other ones will fail. Multiple independant targets are often used in -Makefiles for lex/yacc, they are working because they are not using -"mv". Even in multiple execution, files are just overwritten. - -Fixing this .NOTPARALLEL usage with prerequisites would require Make -version 4.4 or greater. This is a strong requirement, as there is -still many Linux distros with older Make version (as an example Ubuntu -22.04 LTS has Make 4.3). - -The .WAIT special target could be used, but was also introduced in -Make version 4.4. See: -https://git.savannah.gnu.org/cgit/make.git/commit/?id=f6ea899d83bf00fe9201fde0ca9cf7af8e443677 - -GNU Make 4.3 also introduced "Grouped Targets" for that purpose. See: -https://www.gnu.org/software/make/manual/html_node/Multiple-Targets.html -But this would add a requirement on a recent Make version. - -This commit fixes the issue by declaring the first generated file as a -dependency of the other extra generated files. This has the effect of -completely solving the parallel build for all GNU Make versions. Also, -this enables parallel build for libfwtsiasl (except for the parser -generation) and makes the whole build faster. - -Signed-off-by: Julien Olivain -Upstream: https://github.com/fwts/fwts/commit/c0962cd74c725418523c46ca44101e0e70201f81 ---- - src/libfwtsiasl/Makefile.am | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) - -diff --git a/src/libfwtsiasl/Makefile.am b/src/libfwtsiasl/Makefile.am -index cb10bc58..ac54f621 100644 ---- a/src/libfwtsiasl/Makefile.am -+++ b/src/libfwtsiasl/Makefile.am -@@ -58,32 +58,32 @@ aslcompiler.y: $(ASL_PARSER) - aslcompilerlex.c: $(ASL_LEXER) - ${LEX} ${AM_LFLAGS} -PAslCompiler -o$@ $(top_srcdir)/src/acpica/source/compiler/aslcompiler.l - --.NOTPARALLEL: aslcompiler.c --aslcompiler.c aslcompiler.y.h: aslcompiler.y -+aslcompiler.c: aslcompiler.y - ${YACC} ${AM_YFLAGS} -d -baslcompiler -pAslCompiler $^ - mv aslcompiler.tab.c aslcompiler.c - cp aslcompiler.tab.h aslcompiler.y.h -+aslcompiler.y.h: aslcompiler.c - --.NOTPARALLEL: dtcompilerparserlex.c --dtcompilerparserlex.c dtcompilerparser.c dtcompilerparser.y.h: $(top_srcdir)/src/acpica/source/compiler/dtcompilerparser.l $(top_srcdir)/src/acpica/source/compiler/dtcompilerparser.y -+dtcompilerparserlex.c: $(top_srcdir)/src/acpica/source/compiler/dtcompilerparser.l $(top_srcdir)/src/acpica/source/compiler/dtcompilerparser.y - ${LEX} ${AM_LFLAGS} -PDtCompilerParser -odtcompilerparserlex.c $< - ${YACC} ${AM_YFLAGS} -bdtcompilerparser -pDtCompilerParser $(top_srcdir)/src/acpica/source/compiler/dtcompilerparser.y - mv dtcompilerparser.tab.c dtcompilerparser.c - cp dtcompilerparser.tab.h dtcompilerparser.y.h -+dtcompilerparser.c dtcompilerparser.y.h: dtcompilerparserlex.c - --.NOTPARALLEL: dtparserlex.c --dtparserlex.c dtparser.c dtparser.y.h: $(top_srcdir)/src/acpica/source/compiler/dtparser.l $(top_srcdir)/src/acpica/source/compiler/dtparser.y -+dtparserlex.c: $(top_srcdir)/src/acpica/source/compiler/dtparser.l $(top_srcdir)/src/acpica/source/compiler/dtparser.y - ${LEX} ${AM_LFLAGS} -PDtParser -odtparserlex.c $< - ${YACC} ${AM_YFLAGS} -bdtparser -pDtParser $(top_srcdir)/src/acpica/source/compiler/dtparser.y - mv dtparser.tab.c dtparser.c - cp dtparser.tab.h dtparser.y.h -+dtparser.c dtparser.y.h: dtparserlex.c - --.NOTPARALLEL: prparserlex.c --prparserlex.c prparser.c prparser.y.h: $(top_srcdir)/src/acpica/source/compiler/prparser.l $(top_srcdir)/src/acpica/source/compiler/prparser.y -+prparserlex.c: $(top_srcdir)/src/acpica/source/compiler/prparser.l $(top_srcdir)/src/acpica/source/compiler/prparser.y - ${LEX} ${AM_LFLAGS} -PPrParser -oprparserlex.c $< - ${YACC} ${AM_YFLAGS} -bprparser -pPrParser $(top_srcdir)/src/acpica/source/compiler/prparser.y - mv prparser.tab.c prparser.c - cp prparser.tab.h prparser.y.h -+prparser.c prparser.y.h: prparserlex.c - - pkglib_LTLIBRARIES = libfwtsiasl.la - --- -2.45.1 - diff --git a/package/fwts/fwts.hash b/package/fwts/fwts.hash index 0c0dd58c15..61f615835e 100644 --- a/package/fwts/fwts.hash +++ b/package/fwts/fwts.hash @@ -1,5 +1,5 @@ # Hash from: http://fwts.ubuntu.com/release/SHA256SUMS -sha256 d7f2642b1ec3697be798409decd6593d52bb1438f0d2dc697cbc85f52d19b41e fwts-V24.03.00.tar.gz +sha256 2bd45ab1b9f8dc1db2716721e89d982ee4b4eda4b1043cca7b13775c95d5023b fwts-V24.07.00.tar.gz # Hash for license file sha256 3cd2c5d12f024ff2aa203e37d7e972c4d5ab7bf1a65e3e09aebccf71e64b525b debian/copyright diff --git a/package/fwts/fwts.mk b/package/fwts/fwts.mk index 0692121421..fa1f8ed8c4 100644 --- a/package/fwts/fwts.mk +++ b/package/fwts/fwts.mk @@ -4,7 +4,7 @@ # ################################################################################ -FWTS_VERSION = 24.03.00 +FWTS_VERSION = 24.07.00 FWTS_SOURCE = fwts-V$(FWTS_VERSION).tar.gz FWTS_SITE = https://fwts.ubuntu.com/release FWTS_STRIP_COMPONENTS = 0