[OE-core] [PATCH] toolchain-shar-extract: compare SDK and host gcc versions
Mark Hatle
mark.hatle at windriver.com
Thu Oct 5 17:43:27 UTC 2017
I realize this reply is months after the original email. But I think I found a
bug with the implementation. See below inline.
On 1/25/17 7:18 AM, Ed Bartosh wrote:
> If ext sdk is built by gcc version higher than host gcc version
> and host gcc version is 4.8 or 4.9 the installation is known to
> fail due to the way uninative sstate package is built.
>
> It's a known issue and we don't have a way to fix it for above
> mentioned combinations of build and host gcc versions.
>
> Detected non-installable combinations of gcc versions and
> print an installation error.
>
> [YOCTO #10881]
>
> Signed-off-by: Ed Bartosh <ed.bartosh at linux.intel.com>
> ---
> meta/classes/populate_sdk_base.bbclass | 1 +
> meta/files/toolchain-shar-extract.sh | 8 ++++++++
> 2 files changed, 9 insertions(+)
>
> diff --git a/meta/classes/populate_sdk_base.bbclass b/meta/classes/populate_sdk_base.bbclass
> index 5ad08c6..588a3cb 100644
> --- a/meta/classes/populate_sdk_base.bbclass
> +++ b/meta/classes/populate_sdk_base.bbclass
> @@ -226,6 +226,7 @@ EOF
> -e 's#@SDK_VERSION@#${SDK_VERSION}#g' \
> -e '/@SDK_PRE_INSTALL_COMMAND@/d' \
> -e '/@SDK_POST_INSTALL_COMMAND@/d' \
> + -e 's#@SDK_GCC_VER@#${@oe.utils.host_gcc_version(d)}#g' \
The return value from "oe.utils.host_gcc_version(d)" includes a leading '-'...
> ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh
>
> # add execution permission
> diff --git a/meta/files/toolchain-shar-extract.sh b/meta/files/toolchain-shar-extract.sh
> index 9295ddc..3f54c96 100644
> --- a/meta/files/toolchain-shar-extract.sh
> +++ b/meta/files/toolchain-shar-extract.sh
> @@ -11,6 +11,9 @@ export PATH=`echo "$PATH" | sed -e 's/:\.//' -e 's/::/:/'`
> INST_ARCH=$(uname -m | sed -e "s/i[3-6]86/ix86/" -e "s/x86[-_]64/x86_64/")
> SDK_ARCH=$(echo @SDK_ARCH@ | sed -e "s/i[3-6]86/ix86/" -e "s/x86[-_]64/x86_64/")
>
> +INST_GCC_VER=$(gcc --version | sed -ne 's/.* \([0-9]\+\.[0-9]\+\)\.[0-9]\+.*/\1/p')
The item above fails with the message:
line 28: gcc: command not found
If the host does not have gcc on it. (I realize this is incredibly rare
situation, but is valid in some cases.) It might be a good idea to catch this
and put up a warning or otherwise clean up the error situation.
> +SDK_GCC_VER='@SDK_GCC_VER@'
> +
So based on the above you will end up with:
INST_GCC_VER="4.8"
SDK_GCC_VER="-4.9"
> verlte () {
> [ "$1" = "`printf "$1\n$2" | sort -V | head -n1`" ]
> }
> @@ -112,6 +115,11 @@ fi
> # SDK_EXTENSIBLE is exposed from the SDK_PRE_INSTALL_COMMAND above
> if [ "$SDK_EXTENSIBLE" = "1" ]; then
> DEFAULT_INSTALL_DIR="@SDKEXTPATH@"
> + if [ "$INST_GCC_VER" = '4.8' -a "$SDK_GCC_VER" = '4.9' ] || [ "$INST_GCC_VER" = '4.8' -a "$SDK_GCC_VER" = '' ] || \
> + [ "$INST_GCC_VER" = '4.9' -a "$SDK_GCC_VER" = '' ]; then
The comparisons above do not include the leading '-', so it would appear to me
that the checked would never end up being true -- and thus the error below would
never happen.
Am I seeing what is happening right? If so, we'll need to get this fixed...
--Mark
> + echo "Error: Incompatible SDK installer! Your host gcc version is $INST_GCC_VER and this SDK was built by gcc higher version."
> + exit 1
> + fi
> fi
>
> if [ "$target_sdk_dir" = "" ]; then
>
More information about the Openembedded-core
mailing list