summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Yang <liezhi.yang@windriver.com>2017-11-20 15:05:26 +0800
committerRobert Yang <liezhi.yang@windriver.com>2017-11-30 09:27:27 +0800
commitf8f2799d5b4c51969c904a7a09b75caae1020b31 (patch)
tree9f7f64ae015af82cd8ded6a42329f6f17b936f7b
parentd59d7504408b53c4f51fb89f50eb1739333698b1 (diff)
downloadopenembedded-core-contrib-f8f2799d5b4c51969c904a7a09b75caae1020b31.tar.gz
openembedded-core-contrib-f8f2799d5b4c51969c904a7a09b75caae1020b31.tar.bz2
openembedded-core-contrib-f8f2799d5b4c51969c904a7a09b75caae1020b31.zip
webkitgtk: fix compile error when len(TMPDIR) == 410
One of the gcc command line was too long (longer than 160,000 characters) when len(TMPDIR) == 410, so there was an "Argument list too long" error: $ bitbake webkitgtk i586-poky-linux-g++: error trying to exec [snip] execv: Argument list too long The cmake doesn't support relative path, so we have to edit flags.make to fix the problem: - Replace -I${RECIPE_SYSROOT} with -I= - Replace "-I${S}/path1/in/S -I ${S}/path2/in/S" with "-iprefix ${S} -iwithprefixbefore /path1/in/S -iwithprefixbefore /path2/in/S" Now the length is less than 25,000. [YOCTO #12362] Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
-rw-r--r--meta/recipes-sato/webkit/webkitgtk_2.16.6.bb27
1 files changed, 27 insertions, 0 deletions
diff --git a/meta/recipes-sato/webkit/webkitgtk_2.16.6.bb b/meta/recipes-sato/webkit/webkitgtk_2.16.6.bb
index 0f126cba81..3ff5425d61 100644
--- a/meta/recipes-sato/webkit/webkitgtk_2.16.6.bb
+++ b/meta/recipes-sato/webkit/webkitgtk_2.16.6.bb
@@ -117,3 +117,30 @@ ARM_INSTRUCTION_SET_armv7ve = "thumb"
# Segmentation fault
GI_DATA_ENABLED_armv7a = "False"
GI_DATA_ENABLED_armv7ve = "False"
+
+do_configure[postfuncs] += 'shorter_flags_make'
+
+python shorter_flags_make() {
+ recipe_sysroot = d.getVar('RECIPE_SYSROOT')
+ for root, dirs, files in os.walk(d.getVar('B')):
+ for flags_make in files:
+ if flags_make == 'flags.make':
+ # To fix build error when len(TMPDIR) == 410:
+ # - Replace -I${RECIPE_SYSROOT} with -I=
+ # - Replace "-I${S}/path1/in/S -I ${S}/path2/in/S" with
+ # "-iprefix ${S} -iwithprefixbefore /path1/in/S -iwithprefixbefore /path2/in/S"
+ flags_make = os.path.join(root, flags_make)
+ new_lines = []
+ with open(flags_make, 'r') as f:
+ for line in f.readlines():
+ if line.startswith('CXX_INCLUDES = ') or line.startswith('C_INCLUDES = '):
+ line = line.replace('-I%s' % recipe_sysroot, '-I=')
+ line = line.replace('CXX_INCLUDES =', 'CXX_INCLUDES = -iprefix %s/ ' % d.getVar('S'))
+ line = line.replace('C_INCLUDES =', 'C_INCLUDES = -iprefix %s/ ' % d.getVar('S'))
+ line = line.replace('-I%s' % d.getVar('S'), '-iwithprefixbefore ')
+ new_lines.append(line)
+
+ with open(flags_make, 'w') as f:
+ for line in new_lines:
+ f.write(line)
+}