diff options
author | Oleksandr Hnatiuk <ohnatiuk@cisco.com> | 2024-07-22 01:34:58 -0400 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2024-08-03 07:56:10 +0100 |
commit | f1ad5be4337c5d45c0f1bed48184336e9ab1fad8 (patch) | |
tree | 98d9004c5ee43449c1902e4f487e170a02b9451f | |
parent | ee83d0fdae1482583f156d8b8f217c170d9de473 (diff) | |
download | poky-f1ad5be4337c5d45c0f1bed48184336e9ab1fad8.tar.gz |
gcc: remove paths to sysroot from configargs.h and checksum-options for gcc-cross-canadian
Apply fixes from gcc-cross (84a78f46d594 and 0ead8cbdfb96) to gcc-cross-canadian.
This will improve (but not fix) reproducibility of gcc-cross-canadian.
Also move this code to functions to avoid code duplication.
[RP: Tweak patch to make the function parameters clear and fix quoting issues
ensuring the code exactly matches the original replacements with an additional
parameter.]
(From OE-Core rev: 350ff7d53f7506de2bc01f0efc569b8294b9afea)
Signed-off-by: Oleksandr Hnatiuk <ohnatiuk@cisco.com>
Signed-off-by: Denys Dmytriyenko <denys@konsulko.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | meta/recipes-devtools/gcc/gcc-common.inc | 22 | ||||
-rw-r--r-- | meta/recipes-devtools/gcc/gcc-configure-common.inc | 1 | ||||
-rw-r--r-- | meta/recipes-devtools/gcc/gcc-cross-canadian.inc | 3 | ||||
-rw-r--r-- | meta/recipes-devtools/gcc/gcc-cross.inc | 15 | ||||
-rw-r--r-- | meta/recipes-devtools/gcc/gcc-target.inc | 16 |
5 files changed, 29 insertions, 28 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-common.inc b/meta/recipes-devtools/gcc/gcc-common.inc index 5ac82b1b57..7f5cc109e6 100644 --- a/meta/recipes-devtools/gcc/gcc-common.inc +++ b/meta/recipes-devtools/gcc/gcc-common.inc | |||
@@ -116,3 +116,25 @@ target_prefix ?= "${prefix}" | |||
116 | # The real WORKDIR location isn't a dependency for the shared workdir. | 116 | # The real WORKDIR location isn't a dependency for the shared workdir. |
117 | src_patches[vardepsexclude] = "WORKDIR" | 117 | src_patches[vardepsexclude] = "WORKDIR" |
118 | should_apply[vardepsexclude] += "PN" | 118 | should_apply[vardepsexclude] += "PN" |
119 | |||
120 | remove_sysroot_paths_from_configargs () { | ||
121 | replacement=${1} | ||
122 | # Prevent sysroot path from being used in configargs.h header, as it will | ||
123 | # be rewritten when used by other sysroots preventing support for gcc | ||
124 | # plugins. Additionally the path is embeddeded into the output binary, this | ||
125 | # prevents building a reproducible binary. | ||
126 | oe_runmake configure-gcc | ||
127 | sed -i "s@${STAGING_DIR_TARGET}@$replacement@g" ${B}/gcc/configargs.h | ||
128 | sed -i "s@${STAGING_DIR_HOST}@/$replacement@g" ${B}/gcc/configargs.h | ||
129 | } | ||
130 | |||
131 | remove_sysroot_paths_from_checksum_options () { | ||
132 | stagingdir=${1} | ||
133 | replacement=${2} | ||
134 | # Prevent sysroot/workdir paths from being used in checksum-options. | ||
135 | # checksum-options is used to generate a checksum which is embedded into | ||
136 | # the output binary. | ||
137 | oe_runmake TARGET-gcc=checksum-options all-gcc | ||
138 | sed -i "s@${DEBUG_PREFIX_MAP}@@g" ${B}/gcc/checksum-options | ||
139 | sed -i "s@$stagingdir@$replacement@g" ${B}/gcc/checksum-options | ||
140 | } | ||
diff --git a/meta/recipes-devtools/gcc/gcc-configure-common.inc b/meta/recipes-devtools/gcc/gcc-configure-common.inc index d77b2ec3d1..5c79936242 100644 --- a/meta/recipes-devtools/gcc/gcc-configure-common.inc +++ b/meta/recipes-devtools/gcc/gcc-configure-common.inc | |||
@@ -119,4 +119,3 @@ do_configure () { | |||
119 | 119 | ||
120 | oe_runconf | 120 | oe_runconf |
121 | } | 121 | } |
122 | |||
diff --git a/meta/recipes-devtools/gcc/gcc-cross-canadian.inc b/meta/recipes-devtools/gcc/gcc-cross-canadian.inc index 7c4233c211..1b183d6fc1 100644 --- a/meta/recipes-devtools/gcc/gcc-cross-canadian.inc +++ b/meta/recipes-devtools/gcc/gcc-cross-canadian.inc | |||
@@ -64,6 +64,9 @@ do_configure () { | |||
64 | } | 64 | } |
65 | 65 | ||
66 | do_compile () { | 66 | do_compile () { |
67 | remove_sysroot_paths_from_configargs '/host' | ||
68 | remove_sysroot_paths_from_checksum_options '${STAGING_DIR_HOST}' '/host' | ||
69 | |||
67 | oe_runmake all-host configure-target-libgcc | 70 | oe_runmake all-host configure-target-libgcc |
68 | (cd ${B}/${TARGET_SYS}/libgcc; oe_runmake enable-execute-stack.c unwind.h md-unwind-support.h sfp-machine.h gthr-default.h) | 71 | (cd ${B}/${TARGET_SYS}/libgcc; oe_runmake enable-execute-stack.c unwind.h md-unwind-support.h sfp-machine.h gthr-default.h) |
69 | } | 72 | } |
diff --git a/meta/recipes-devtools/gcc/gcc-cross.inc b/meta/recipes-devtools/gcc/gcc-cross.inc index c04177df5a..68e33c7358 100644 --- a/meta/recipes-devtools/gcc/gcc-cross.inc +++ b/meta/recipes-devtools/gcc/gcc-cross.inc | |||
@@ -63,19 +63,8 @@ do_compile () { | |||
63 | export CXXFLAGS_FOR_TARGET="${TARGET_CXXFLAGS}" | 63 | export CXXFLAGS_FOR_TARGET="${TARGET_CXXFLAGS}" |
64 | export LDFLAGS_FOR_TARGET="${TARGET_LDFLAGS}" | 64 | export LDFLAGS_FOR_TARGET="${TARGET_LDFLAGS}" |
65 | 65 | ||
66 | # Prevent native/host sysroot path from being used in configargs.h header, | 66 | remove_sysroot_paths_from_configargs '/host' |
67 | # as it will be rewritten when used by other sysroots preventing support | 67 | remove_sysroot_paths_from_checksum_options '${STAGING_DIR_HOST}' '/host' |
68 | # for gcc plugins | ||
69 | oe_runmake configure-gcc | ||
70 | sed -i 's@${STAGING_DIR_TARGET}@/host@g' ${B}/gcc/configargs.h | ||
71 | sed -i 's@${STAGING_DIR_HOST}@/host@g' ${B}/gcc/configargs.h | ||
72 | |||
73 | # Prevent sysroot/workdir paths from being used in checksum-options. | ||
74 | # checksum-options is used to generate a checksum which is embedded into | ||
75 | # the output binary. | ||
76 | oe_runmake TARGET-gcc=checksum-options all-gcc | ||
77 | sed -i 's@${DEBUG_PREFIX_MAP}@@g' ${B}/gcc/checksum-options | ||
78 | sed -i 's@${STAGING_DIR_HOST}@/host@g' ${B}/gcc/checksum-options | ||
79 | 68 | ||
80 | oe_runmake all-host configure-target-libgcc | 69 | oe_runmake all-host configure-target-libgcc |
81 | (cd ${B}/${TARGET_SYS}/libgcc; oe_runmake enable-execute-stack.c unwind.h md-unwind-support.h sfp-machine.h gthr-default.h) | 70 | (cd ${B}/${TARGET_SYS}/libgcc; oe_runmake enable-execute-stack.c unwind.h md-unwind-support.h sfp-machine.h gthr-default.h) |
diff --git a/meta/recipes-devtools/gcc/gcc-target.inc b/meta/recipes-devtools/gcc/gcc-target.inc index e9187fc444..c847838ec7 100644 --- a/meta/recipes-devtools/gcc/gcc-target.inc +++ b/meta/recipes-devtools/gcc/gcc-target.inc | |||
@@ -132,20 +132,8 @@ FILES:${PN}-doc = "\ | |||
132 | " | 132 | " |
133 | 133 | ||
134 | do_compile () { | 134 | do_compile () { |
135 | # Prevent full target sysroot path from being used in configargs.h header, | 135 | remove_sysroot_paths_from_configargs '/' |
136 | # as it will be rewritten when used by other sysroots preventing support | 136 | remove_sysroot_paths_from_checksum_options '${STAGING_DIR_TARGET}' '/' |
137 | # for gcc plugins. Additionally the path is embeddeded into the output | ||
138 | # binary, this prevents building a reproducible binary. | ||
139 | oe_runmake configure-gcc | ||
140 | sed -i 's@${STAGING_DIR_TARGET}@/@g' ${B}/gcc/configargs.h | ||
141 | sed -i 's@${STAGING_DIR_HOST}@/@g' ${B}/gcc/configargs.h | ||
142 | |||
143 | # Prevent sysroot/workdir paths from being used in checksum-options. | ||
144 | # checksum-options is used to generate a checksum which is embedded into | ||
145 | # the output binary. | ||
146 | oe_runmake TARGET-gcc=checksum-options all-gcc | ||
147 | sed -i 's@${DEBUG_PREFIX_MAP}@@g' ${B}/gcc/checksum-options | ||
148 | sed -i 's@${STAGING_DIR_TARGET}@/@g' ${B}/gcc/checksum-options | ||
149 | 137 | ||
150 | oe_runmake all-host | 138 | oe_runmake all-host |
151 | } | 139 | } |