diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2020-07-27 22:48:02 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2020-07-28 12:39:54 +0100 |
commit | 94eb5724b111cf3409219be3b169af79858eab7b (patch) | |
tree | 4ee0b2ce934c4c5d9c74dce975ad43b330eeed27 /meta/recipes-devtools/gcc | |
parent | 1592cdaf83894820cb677553d400d5db42344e91 (diff) | |
download | poky-94eb5724b111cf3409219be3b169af79858eab7b.tar.gz |
gcc: Fix mangled patch
To quote Zhuang <qiuguang.zqg@alibaba-inc.com>:
"""
A few days ago, I tried to compile a gcc plugin with the toolchain from poky sdk.
It failed with errors about missing header files such as backend.h etc.
After investigation, I found that the problem was brought by a gcc patch:
0012-gcc-Fix-argument-list-too-long-error.patch (which is considered derived from the original patch)
- headers=`echo $(PLUGIN_HEADERS) $$(cd $(srcdir); echo *.h *.def) | tr ' ' '\012' | sort -u`; \
+ headers="$(sort $(PLUGIN_HEADERS) $$(cd $(srcdir); echo *.h *.def))"; \
It changes the commands of install-plugin, making the sorting taken effect before the shell globs.
Thus results in the header files under gcc $(srcdir) being not installed.
By checking log.do_install, we can find that the `headers=' statement to run is incorrect and will not work as expected:
headers="$(cd *.def) *.h ../../../../../../../work-shared/gcc-10.1.0-r0/gcc-10.1.0/gcc/../include/ansidecl.h ...
As the patch says,
"The PLUGIN_HEADERS is too long before sort, so the "echo" can't handle it, ..."
my suggestion is that we can simply take care of PLUGIN_HEADERS
using the original proposed sort.
"""
This fixes the gcc patch as proposed as it does appear its been
broken over time.
(From OE-Core rev: dce28d8ac7fbae487cb6674b91fe2b574036b26d)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools/gcc')
-rw-r--r-- | meta/recipes-devtools/gcc/gcc-10.1/0012-gcc-Fix-argument-list-too-long-error.patch | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-10.1/0012-gcc-Fix-argument-list-too-long-error.patch b/meta/recipes-devtools/gcc/gcc-10.1/0012-gcc-Fix-argument-list-too-long-error.patch index acbd75f139..88e1715b5c 100644 --- a/meta/recipes-devtools/gcc/gcc-10.1/0012-gcc-Fix-argument-list-too-long-error.patch +++ b/meta/recipes-devtools/gcc/gcc-10.1/0012-gcc-Fix-argument-list-too-long-error.patch | |||
@@ -17,6 +17,10 @@ $(sort list) doesn't need this. | |||
17 | Signed-off-by: Robert Yang <liezhi.yang@windriver.com> | 17 | Signed-off-by: Robert Yang <liezhi.yang@windriver.com> |
18 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | 18 | Signed-off-by: Khem Raj <raj.khem@gmail.com> |
19 | 19 | ||
20 | RP: gcc then added *.h and *.def additions to this list, breaking the original | ||
21 | fix. Add the sort to the original gcc code, leaving the tr+sort to fix the original | ||
22 | issue but include the new files too as reported by Zhuang <qiuguang.zqg@alibaba-inc.com> | ||
23 | |||
20 | Upstream-Status: Pending | 24 | Upstream-Status: Pending |
21 | --- | 25 | --- |
22 | gcc/Makefile.in | 2 +- | 26 | gcc/Makefile.in | 2 +- |
@@ -31,7 +35,7 @@ index a67d2cc18d6..480c9366418 100644 | |||
31 | # files. All other files are flattened to a single directory. | 35 | # files. All other files are flattened to a single directory. |
32 | $(mkinstalldirs) $(DESTDIR)$(plugin_includedir) | 36 | $(mkinstalldirs) $(DESTDIR)$(plugin_includedir) |
33 | - headers=`echo $(PLUGIN_HEADERS) $$(cd $(srcdir); echo *.h *.def) | tr ' ' '\012' | sort -u`; \ | 37 | - headers=`echo $(PLUGIN_HEADERS) $$(cd $(srcdir); echo *.h *.def) | tr ' ' '\012' | sort -u`; \ |
34 | + headers="$(sort $(PLUGIN_HEADERS) $$(cd $(srcdir); echo *.h *.def))"; \ | 38 | + headers=`echo $(sort $(PLUGIN_HEADERS)) $$(cd $(srcdir); echo *.h *.def) | tr ' ' '\012' | sort -u`; \ |
35 | srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`; \ | 39 | srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`; \ |
36 | for file in $$headers; do \ | 40 | for file in $$headers; do \ |
37 | if [ -f $$file ] ; then \ | 41 | if [ -f $$file ] ; then \ |