* [PATCH] icecc-create-env: Upgrade script
@ 2013-12-04 17:07 Iyad Qumei
2013-12-04 17:07 ` Iyad Qumei
0 siblings, 1 reply; 6+ messages in thread
From: Iyad Qumei @ 2013-12-04 17:07 UTC (permalink / raw)
To: openembedded-core
Folks,
This change was necessary to compile code with external toolchains with support for linker time optimization, such as linaro. The older script does not process the LTO related content correctly. More recent scripts from upstream icecream corrects this error. However, the script required modifications for use with OE. Hence I created this patch.
Iyad Qumei (1):
icecc-create-env: Upgrade script
.../icecc-create-env-native/icecc-create-env | 266 +++++++++++++++-----
...ive_0.1.bb => icecc-create-env-native_1.0.1.bb} | 5 +-
2 files changed, 209 insertions(+), 62 deletions(-)
rename meta/recipes-devtools/icecc-create-env/{icecc-create-env-native_0.1.bb => icecc-create-env-native_1.0.1.bb} (89%)
--
1.7.10.4
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH] icecc-create-env: Upgrade script 2013-12-04 17:07 [PATCH] icecc-create-env: Upgrade script Iyad Qumei @ 2013-12-04 17:07 ` Iyad Qumei 2013-12-04 17:43 ` Martin Jansa 0 siblings, 1 reply; 6+ messages in thread From: Iyad Qumei @ 2013-12-04 17:07 UTC (permalink / raw) To: openembedded-core The original icecc script does not handle toolchain content properly, resulting in build failures, such as gxx: fatal error: -fuse-linker-plugin, but liblto_plugin.so not found This patch brings in the latest script form the icecream source, and modifies it for use in the OE build environment. The change was tested with OE-Core built toolchain, and external toolchain. Signed-off-by: Iyad Qumei <iyadkq@gmail.com> --- .../icecc-create-env-native/icecc-create-env | 266 +++++++++++++++----- ...ive_0.1.bb => icecc-create-env-native_1.0.1.bb} | 5 +- 2 files changed, 209 insertions(+), 62 deletions(-) rename meta/recipes-devtools/icecc-create-env/{icecc-create-env-native_0.1.bb => icecc-create-env-native_1.0.1.bb} (89%) diff --git a/meta/recipes-devtools/icecc-create-env/icecc-create-env-native/icecc-create-env b/meta/recipes-devtools/icecc-create-env/icecc-create-env-native/icecc-create-env index 7e4dbc4..0eb2217 100755 --- a/meta/recipes-devtools/icecc-create-env/icecc-create-env-native/icecc-create-env +++ b/meta/recipes-devtools/icecc-create-env/icecc-create-env-native/icecc-create-env @@ -24,12 +24,12 @@ add_file () fi test -z "$name" && return # ls -H isn't really the same as readlink, but - # readlink is not portable enough. + # readlink is not portable enough. path=`ls -H $path` toadd="$name=$path" is_contained "$toadd" && return if test -z "$silent"; then - echo "adding file $toadd" + echo "adding file $toadd" fi target_files="$target_files $toadd" if test -x "$path"; then @@ -43,19 +43,81 @@ add_file () # libc.so.6 => /lib/tls/libc.so.6 (0xb7e81000) # /lib/ld-linux.so.2 (0xb7fe8000) # covering both situations ( with => and without ) - for lib in `ldd "$path" | sed -n 's,^[^/]*\(/[^ ]*\).*,\1,p'`; do - test -f "$lib" || continue - # Check wether the same library also exists in the parent directory, - # and prefer that on the assumption that it is a more generic one. - local baselib=`echo "$lib" | sed 's,\(/[^/]*\)/.*\(/[^/]*\)$,\1\2,'` - test -f "$baselib" && lib=$baselib - add_file "$lib" - done - fi + for lib in `ldd "$path" | sed -n 's,^[^/]*\(/[^ ]*\).*,\1,p'`; do + test -f "$lib" || continue + # Check wether the same library also exists in the parent directory, + # and prefer that on the assumption that it is a more generic one. + local baselib=`echo "$lib" | sed 's,\(/[^/]*\)/.*\(/[^/]*\)$,\1\2,'` + test -f "$baselib" && lib=$baselib + add_file "$lib" + done + fi fi fi } +# returns abs path to filedir +abs_path() +{ + local path=$1 + if test -f "$path"; then + pushd $(dirname $path) > /dev/null 2>&1 + dir_path=`pwd -P` + path=$dir_path/$(basename $path) + popd > /dev/null 2>&1 + elif test -d "$path"; then + pushd $path > /dev/null 2>&1 + path=`pwd -P` + popd > /dev/null 2>&1 + fi + echo $path +} + +# Search and add file to the tarball file. +search_addfile() +{ + local compiler=$1 + local file_name=$2 + local file_installdir=$3 + local file="" + + file=$($compiler -print-prog-name=$file_name) + + if test -z "$file" || test "$file" = "$file_name" || ! test -e "$file"; then + file=`$compiler -print-file-name=$file_name` + fi + + if ! test -e "$file"; then + return 1 + fi + + if test -z "$file_installdir"; then + # The file is going to be added to the tarball + # in the same path where the compiler found it. + + file_installdir=$(dirname $file) + abs_installdir=$(abs_path $file_installdir) + + if test "$file_installdir" != "$abs_installdir"; then + # The path where the compiler found the file is relative! + # If the path where the compiler found the file is relative + # to compiler's path, we must change it to be relative to + # /usr/bin path where the compiler is going to be installed + # in the tarball file. + # Replacing relative path by abs path because the tar command + # used to create the tarball file doesn't work well with + # relative path as installdir. + + compiler_basedir=$(abs_path ${compiler%/*/*}) + file_installdir=${abs_installdir/$compiler_basedir/"/usr"} + fi + fi + + add_file "$file" "$file_installdir/$file_name" + + return 0 +} + # backward compat if test "$1" = "--respect-path"; then shift @@ -67,64 +129,151 @@ if test "$1" = "--silent"; then shift fi - -added_gcc=$1 -shift -added_gxx=$1 -shift -added_as=$1 -shift -archive_name=$1 - -if test -z "$added_gcc" || test -z "$added_gxx" ; then - echo "usage: $0 <gcc_path> <g++_path>" - exit 1 +if test "$1" != "--gcc" -a "$1" != "--clang"; then + # backward compat + added_gcc=$1 + shift + added_gxx=$1 + shift + added_as=$1 + shift + archive_name=$1 + shift + gcc=1 +else + if test "$1" = "--gcc"; then + shift + added_gcc=$1 + shift + added_gxx=$1 + shift + added_as=$1 + shift + archive_name=$1 + shift + gcc=1 + elif test "$1" = "--clang"; then + shift + added_clang=$1 + shift + added_compilerwrapper=$1 + shift + clang=1 + else + usage + exit 1 + fi fi -if ! test -x "$added_gcc" ; then - echo "'$added_gcc' is no executable." - exit 1 +if test -n "$gcc"; then + if test -z "$added_gcc" || test -z "$added_gxx"; then + usage + exit 1 + fi + if ! test -x "$added_gcc" ; then + echo "'$added_gcc' is no executable." + exit 1 + fi + if ! test -x "$added_gxx" ; then + echo "'$added_gxx' is no executable." + exit 1 + fi + if test -z "$added_as" ; then + add_file /usr/bin/as /usr/bin/as + else + if ! test -x "$added_as" ; then + echo "'$added_as' is no executable." + exit 1 + fi + add_file $added_as /usr/bin/as + fi fi -if ! test -x "$added_gxx" ; then - echo "'$added_gcc' is no executable." - exit 1 +if test -n "$clang"; then + if ! test -x "$added_clang" ; then + echo "'$added_clang' is no executable." + exit 1 + fi + if ! test -x "$added_compilerwrapper" ; then + echo "'$added_compilerwrapper' is no executable." + exit 1 + fi fi +extrafiles= +while test "x$1" = "x--addfile"; do + shift + extrafiles="$extrafiles $1" + shift +done +tempdir=`mktemp -d /tmp/iceccenvXXXXXX` -add_file $added_gcc /usr/bin/gcc -add_file $added_gxx /usr/bin/g++ +# for testing the environment is usable at all +add_file /bin/true -if test -z "$added_as" ; then - add_file /usr/bin/as /usr/bin/as -else - if ! test -x "$added_as" ; then - echo "'$added_as' is no executable." - exit 1 - fi +if test -n "$gcc"; then + # getting compilers abs path + added_gcc=$(abs_path $added_gcc) + added_gxx=$(abs_path $added_gxx) - add_file $added_as /usr/bin/as -fi + if test -z "$clang"; then + add_file $added_gcc /usr/bin/gcc + add_file $added_gxx /usr/bin/g++ + else + # HACK: The clang case below will add a wrapper in place of gcc, so add the real + # gcc under a different name that the wrapper will call. + add_file $added_gcc /usr/bin/gcc.bin + add_file $added_gxx /usr/bin/g++.bin + fi + add_file `$added_gcc -print-prog-name=cc1` /usr/bin/cc1 + add_file `$added_gxx -print-prog-name=cc1plus` /usr/bin/cc1plus + + gcc_as=$($added_gcc -print-prog-name=as) + if test "$gcc_as" = "as"; then + add_file /usr/bin/as + else + add_file "$gcc_as" /usr/bin/as + fi -add_file `$added_gcc -print-prog-name=cc1` /usr/bin/cc1 -add_file `$added_gxx -print-prog-name=cc1plus` /usr/bin/cc1plus -specfile=`$added_gcc -print-file-name=specs` -if test -n "$specfile" && test -e "$specfile"; then - add_file "$specfile" + search_addfile $added_gcc specs + search_addfile $added_gcc liblto_plugin.so fi -ltofile=`$added_gcc -print-prog-name=lto1` -pluginfile="${ltofile%lto1}liblto_plugin.so" -if test -r "$pluginfile" -then - add_file $pluginfile ${pluginfile#*usr} - add_file $pluginfile /usr${pluginfile#*usr} +if test -n "$clang"; then + add_file $added_clang /usr/bin/clang + # HACK: Older icecream remotes have /usr/bin/{gcc|g++} hardcoded and wouldn't + # call /usr/bin/clang at all. So include a wrapper binary that will call gcc or clang + # depending on an extra argument added by icecream. + add_file $added_compilerwrapper /usr/bin/gcc + add_file $added_compilerwrapper /usr/bin/g++ + + add_file $($added_clang -print-prog-name=as) /usr/bin/as + + # clang always uses its internal .h files + clangincludes=$(dirname $($added_clang -print-file-name=include/limits.h)) + clangprefix=$(dirname $(dirname $added_clang)) + for file in $(find $clangincludes -type f); do + # get path without .. + destfile=$(readlink -e $file) + # and convert from <prefix> to /usr if needed + destfile=$(echo $destfile | sed "s#$clangprefix#/usr#" ) + add_file "$file" "$destfile" + done fi -tempdir=`mktemp -d /tmp/iceccenvXXXXXX` +for extrafile in $extrafiles; do + add_file $extrafile +done + +# IKLQ ? +# special case for weird multilib setups +for dir in /lib /lib64 /usr/lib /usr/lib64; do + test -L $dir && cp -p $dir $tempdir$dir +done + new_target_files= -for i in $target_files; do +for i in $target_files; do case $i in *=/*) target=`echo $i | cut -d= -f1` @@ -151,11 +300,11 @@ target_files=`for i in $new_target_files; do echo $i; done | sort` #if not use the md5 of all files as the archive name if test -z "$archive_name"; then md5sum=NONE - for file in /usr/bin/md5sum /bin/md5 /usr/bin/md5; do - if test -x $file; then - md5sum=$file - break - fi + for file in /usr/bin/md5sum /bin/md5 /usr/bin/md5 /sbin/md5; do + if test -x $file; then + md5sum=$file + break + fi done #calculate md5 and use it as the archive name @@ -190,3 +339,4 @@ tar -czhf "$mydir/$archive_name" $target_files || { } cd .. rm -rf $tempdir + diff --git a/meta/recipes-devtools/icecc-create-env/icecc-create-env-native_0.1.bb b/meta/recipes-devtools/icecc-create-env/icecc-create-env-native_1.0.1.bb similarity index 89% rename from meta/recipes-devtools/icecc-create-env/icecc-create-env-native_0.1.bb rename to meta/recipes-devtools/icecc-create-env/icecc-create-env-native_1.0.1.bb index b04474e..c03cf5a 100644 --- a/meta/recipes-devtools/icecc-create-env/icecc-create-env-native_0.1.bb +++ b/meta/recipes-devtools/icecc-create-env/icecc-create-env-native_1.0.1.bb @@ -6,16 +6,13 @@ SECTION = "base" LICENSE = "GPLv2+" LIC_FILES_CHKSUM = "file://icecc-create-env;beginline=2;endline=5;md5=ae1df3d6a058bfda40b66094c5f6065f" -PR = "r2" +PR = "r0" DEPENDS = "" INHIBIT_DEFAULT_DEPS = "1" -FILESPATH = "${FILE_DIRNAME}/${PN}/" - inherit native -PATCHTOOL = "patch" SRC_URI = "file://icecc-create-env" S = "${WORKDIR}" -- 1.7.10.4 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] icecc-create-env: Upgrade script 2013-12-04 17:07 ` Iyad Qumei @ 2013-12-04 17:43 ` Martin Jansa 2013-12-04 22:39 ` Iyad Qumei 0 siblings, 1 reply; 6+ messages in thread From: Martin Jansa @ 2013-12-04 17:43 UTC (permalink / raw) To: Iyad Qumei; +Cc: openembedded-core [-- Attachment #1: Type: text/plain, Size: 13100 bytes --] On Wed, Dec 04, 2013 at 09:07:54AM -0800, Iyad Qumei wrote: > The original icecc script does not handle toolchain content > properly, resulting in build failures, such as > > gxx: fatal error: -fuse-linker-plugin, but liblto_plugin.so not found > > This patch brings in the latest script form the icecream source, and > modifies it for use in the OE build environment. The change was tested > with OE-Core built toolchain, and external toolchain. > > Signed-off-by: Iyad Qumei <iyadkq@gmail.com> > --- > .../icecc-create-env-native/icecc-create-env | 266 +++++++++++++++----- > ...ive_0.1.bb => icecc-create-env-native_1.0.1.bb} | 5 +- > 2 files changed, 209 insertions(+), 62 deletions(-) > rename meta/recipes-devtools/icecc-create-env/{icecc-create-env-native_0.1.bb => icecc-create-env-native_1.0.1.bb} (89%) NACK > > diff --git a/meta/recipes-devtools/icecc-create-env/icecc-create-env-native/icecc-create-env b/meta/recipes-devtools/icecc-create-env/icecc-create-env-native/icecc-create-env > index 7e4dbc4..0eb2217 100755 > --- a/meta/recipes-devtools/icecc-create-env/icecc-create-env-native/icecc-create-env > +++ b/meta/recipes-devtools/icecc-create-env/icecc-create-env-native/icecc-create-env > @@ -24,12 +24,12 @@ add_file () > fi > test -z "$name" && return > # ls -H isn't really the same as readlink, but > - # readlink is not portable enough. > + # readlink is not portable enough. Don't introduce trailing whitespaces > path=`ls -H $path` > toadd="$name=$path" > is_contained "$toadd" && return > if test -z "$silent"; then > - echo "adding file $toadd" > + echo "adding file $toadd" > fi > target_files="$target_files $toadd" > if test -x "$path"; then > @@ -43,19 +43,81 @@ add_file () > # libc.so.6 => /lib/tls/libc.so.6 (0xb7e81000) > # /lib/ld-linux.so.2 (0xb7fe8000) > # covering both situations ( with => and without ) > - for lib in `ldd "$path" | sed -n 's,^[^/]*\(/[^ ]*\).*,\1,p'`; do > - test -f "$lib" || continue > - # Check wether the same library also exists in the parent directory, > - # and prefer that on the assumption that it is a more generic one. > - local baselib=`echo "$lib" | sed 's,\(/[^/]*\)/.*\(/[^/]*\)$,\1\2,'` > - test -f "$baselib" && lib=$baselib > - add_file "$lib" > - done > - fi > + for lib in `ldd "$path" | sed -n 's,^[^/]*\(/[^ ]*\).*,\1,p'`; do > + test -f "$lib" || continue > + # Check wether the same library also exists in the parent directory, > + # and prefer that on the assumption that it is a more generic one. > + local baselib=`echo "$lib" | sed 's,\(/[^/]*\)/.*\(/[^/]*\)$,\1\2,'` > + test -f "$baselib" && lib=$baselib > + add_file "$lib" > + done > + fi Don't mix tabs and spaces. > fi > fi > } > > +# returns abs path to filedir > +abs_path() > +{ > + local path=$1 > + if test -f "$path"; then > + pushd $(dirname $path) > /dev/null 2>&1 > + dir_path=`pwd -P` > + path=$dir_path/$(basename $path) > + popd > /dev/null 2>&1 > + elif test -d "$path"; then > + pushd $path > /dev/null 2>&1 > + path=`pwd -P` > + popd > /dev/null 2>&1 > + fi > + echo $path > +} > + > +# Search and add file to the tarball file. > +search_addfile() > +{ > + local compiler=$1 > + local file_name=$2 > + local file_installdir=$3 > + local file="" > + > + file=$($compiler -print-prog-name=$file_name) > + > + if test -z "$file" || test "$file" = "$file_name" || ! test -e "$file"; then > + file=`$compiler -print-file-name=$file_name` > + fi > + > + if ! test -e "$file"; then > + return 1 > + fi > + > + if test -z "$file_installdir"; then > + # The file is going to be added to the tarball > + # in the same path where the compiler found it. > + > + file_installdir=$(dirname $file) > + abs_installdir=$(abs_path $file_installdir) > + > + if test "$file_installdir" != "$abs_installdir"; then > + # The path where the compiler found the file is relative! > + # If the path where the compiler found the file is relative > + # to compiler's path, we must change it to be relative to > + # /usr/bin path where the compiler is going to be installed > + # in the tarball file. > + # Replacing relative path by abs path because the tar command > + # used to create the tarball file doesn't work well with > + # relative path as installdir. > + > + compiler_basedir=$(abs_path ${compiler%/*/*}) > + file_installdir=${abs_installdir/$compiler_basedir/"/usr"} > + fi > + fi > + > + add_file "$file" "$file_installdir/$file_name" > + > + return 0 > +} > + > # backward compat > if test "$1" = "--respect-path"; then > shift > @@ -67,64 +129,151 @@ if test "$1" = "--silent"; then > shift > fi > > - > -added_gcc=$1 > -shift > -added_gxx=$1 > -shift > -added_as=$1 > -shift > -archive_name=$1 > - > -if test -z "$added_gcc" || test -z "$added_gxx" ; then > - echo "usage: $0 <gcc_path> <g++_path>" > - exit 1 > +if test "$1" != "--gcc" -a "$1" != "--clang"; then > + # backward compat > + added_gcc=$1 > + shift > + added_gxx=$1 > + shift > + added_as=$1 > + shift > + archive_name=$1 > + shift > + gcc=1 > +else > + if test "$1" = "--gcc"; then > + shift > + added_gcc=$1 > + shift > + added_gxx=$1 > + shift > + added_as=$1 > + shift > + archive_name=$1 > + shift > + gcc=1 > + elif test "$1" = "--clang"; then > + shift > + added_clang=$1 > + shift > + added_compilerwrapper=$1 > + shift > + clang=1 > + else > + usage > + exit 1 > + fi > fi > > -if ! test -x "$added_gcc" ; then > - echo "'$added_gcc' is no executable." > - exit 1 > +if test -n "$gcc"; then > + if test -z "$added_gcc" || test -z "$added_gxx"; then > + usage > + exit 1 > + fi > + if ! test -x "$added_gcc" ; then > + echo "'$added_gcc' is no executable." > + exit 1 > + fi > + if ! test -x "$added_gxx" ; then > + echo "'$added_gxx' is no executable." > + exit 1 > + fi > + if test -z "$added_as" ; then > + add_file /usr/bin/as /usr/bin/as > + else > + if ! test -x "$added_as" ; then > + echo "'$added_as' is no executable." > + exit 1 > + fi > + add_file $added_as /usr/bin/as > + fi > fi > > -if ! test -x "$added_gxx" ; then > - echo "'$added_gcc' is no executable." > - exit 1 > +if test -n "$clang"; then > + if ! test -x "$added_clang" ; then > + echo "'$added_clang' is no executable." > + exit 1 > + fi > + if ! test -x "$added_compilerwrapper" ; then > + echo "'$added_compilerwrapper' is no executable." > + exit 1 > + fi > fi > > +extrafiles= > +while test "x$1" = "x--addfile"; do > + shift > + extrafiles="$extrafiles $1" > + shift > +done > > +tempdir=`mktemp -d /tmp/iceccenvXXXXXX` > > -add_file $added_gcc /usr/bin/gcc > -add_file $added_gxx /usr/bin/g++ > +# for testing the environment is usable at all > +add_file /bin/true > > -if test -z "$added_as" ; then > - add_file /usr/bin/as /usr/bin/as > -else > - if ! test -x "$added_as" ; then > - echo "'$added_as' is no executable." > - exit 1 > - fi > +if test -n "$gcc"; then > + # getting compilers abs path > + added_gcc=$(abs_path $added_gcc) > + added_gxx=$(abs_path $added_gxx) > > - add_file $added_as /usr/bin/as > -fi > + if test -z "$clang"; then > + add_file $added_gcc /usr/bin/gcc > + add_file $added_gxx /usr/bin/g++ > + else > + # HACK: The clang case below will add a wrapper in place of gcc, so add the real > + # gcc under a different name that the wrapper will call. > + add_file $added_gcc /usr/bin/gcc.bin > + add_file $added_gxx /usr/bin/g++.bin > + fi > + add_file `$added_gcc -print-prog-name=cc1` /usr/bin/cc1 > + add_file `$added_gxx -print-prog-name=cc1plus` /usr/bin/cc1plus > + > + gcc_as=$($added_gcc -print-prog-name=as) > + if test "$gcc_as" = "as"; then > + add_file /usr/bin/as > + else > + add_file "$gcc_as" /usr/bin/as > + fi > > -add_file `$added_gcc -print-prog-name=cc1` /usr/bin/cc1 > -add_file `$added_gxx -print-prog-name=cc1plus` /usr/bin/cc1plus > -specfile=`$added_gcc -print-file-name=specs` > -if test -n "$specfile" && test -e "$specfile"; then > - add_file "$specfile" > + search_addfile $added_gcc specs > + search_addfile $added_gcc liblto_plugin.so > fi > > -ltofile=`$added_gcc -print-prog-name=lto1` > -pluginfile="${ltofile%lto1}liblto_plugin.so" > -if test -r "$pluginfile" > -then > - add_file $pluginfile ${pluginfile#*usr} > - add_file $pluginfile /usr${pluginfile#*usr} > +if test -n "$clang"; then > + add_file $added_clang /usr/bin/clang > + # HACK: Older icecream remotes have /usr/bin/{gcc|g++} hardcoded and wouldn't > + # call /usr/bin/clang at all. So include a wrapper binary that will call gcc or clang > + # depending on an extra argument added by icecream. > + add_file $added_compilerwrapper /usr/bin/gcc > + add_file $added_compilerwrapper /usr/bin/g++ > + > + add_file $($added_clang -print-prog-name=as) /usr/bin/as > + > + # clang always uses its internal .h files > + clangincludes=$(dirname $($added_clang -print-file-name=include/limits.h)) > + clangprefix=$(dirname $(dirname $added_clang)) > + for file in $(find $clangincludes -type f); do > + # get path without .. > + destfile=$(readlink -e $file) > + # and convert from <prefix> to /usr if needed > + destfile=$(echo $destfile | sed "s#$clangprefix#/usr#" ) > + add_file "$file" "$destfile" > + done > fi > > -tempdir=`mktemp -d /tmp/iceccenvXXXXXX` > +for extrafile in $extrafiles; do > + add_file $extrafile > +done > + > +# IKLQ ? > +# special case for weird multilib setups > +for dir in /lib /lib64 /usr/lib /usr/lib64; do > + test -L $dir && cp -p $dir $tempdir$dir > +done > + > new_target_files= > -for i in $target_files; do > +for i in $target_files; do Don't introduce trailing whitespaces > case $i in > *=/*) > target=`echo $i | cut -d= -f1` > @@ -151,11 +300,11 @@ target_files=`for i in $new_target_files; do echo $i; done | sort` > #if not use the md5 of all files as the archive name > if test -z "$archive_name"; then > md5sum=NONE > - for file in /usr/bin/md5sum /bin/md5 /usr/bin/md5; do > - if test -x $file; then > - md5sum=$file > - break > - fi > + for file in /usr/bin/md5sum /bin/md5 /usr/bin/md5 /sbin/md5; do > + if test -x $file; then > + md5sum=$file > + break > + fi Don't introduce wrong indenntation. > done > > #calculate md5 and use it as the archive name > @@ -190,3 +339,4 @@ tar -czhf "$mydir/$archive_name" $target_files || { > } > cd .. > rm -rf $tempdir > + > diff --git a/meta/recipes-devtools/icecc-create-env/icecc-create-env-native_0.1.bb b/meta/recipes-devtools/icecc-create-env/icecc-create-env-native_1.0.1.bb > similarity index 89% > rename from meta/recipes-devtools/icecc-create-env/icecc-create-env-native_0.1.bb > rename to meta/recipes-devtools/icecc-create-env/icecc-create-env-native_1.0.1.bb > index b04474e..c03cf5a 100644 > --- a/meta/recipes-devtools/icecc-create-env/icecc-create-env-native_0.1.bb > +++ b/meta/recipes-devtools/icecc-create-env/icecc-create-env-native_1.0.1.bb > @@ -6,16 +6,13 @@ SECTION = "base" > LICENSE = "GPLv2+" > LIC_FILES_CHKSUM = "file://icecc-create-env;beginline=2;endline=5;md5=ae1df3d6a058bfda40b66094c5f6065f" > > -PR = "r2" > +PR = "r0" drop > DEPENDS = "" > INHIBIT_DEFAULT_DEPS = "1" > > -FILESPATH = "${FILE_DIRNAME}/${PN}/" > - You cannot drop it without moving file to BPN (see http://lists.openembedded.org/pipermail/openembedded-core/2013-December/087239.html ) > inherit native > > -PATCHTOOL = "patch" You cannot drop it without causing dependency loop (see http://lists.openembedded.org/pipermail/openembedded-core/2013-December/087239.html ) > SRC_URI = "file://icecc-create-env" > > S = "${WORKDIR}" > -- > 1.7.10.4 > > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.openembedded.org/mailman/listinfo/openembedded-core -- Martin 'JaMa' Jansa jabber: Martin.Jansa@gmail.com [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 205 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] icecc-create-env: Upgrade script 2013-12-04 17:43 ` Martin Jansa @ 2013-12-04 22:39 ` Iyad Qumei 2013-12-04 23:27 ` Iyad Qumei 2013-12-05 0:14 ` Martin Jansa 0 siblings, 2 replies; 6+ messages in thread From: Iyad Qumei @ 2013-12-04 22:39 UTC (permalink / raw) To: Martin Jansa; +Cc: Patches and discussions about the oe-core layer [-- Attachment #1: Type: text/plain, Size: 14607 bytes --] On Wed, Dec 4, 2013 at 9:43 AM, Martin Jansa <martin.jansa@gmail.com> wrote: > On Wed, Dec 04, 2013 at 09:07:54AM -0800, Iyad Qumei wrote: > > The original icecc script does not handle toolchain content > > properly, resulting in build failures, such as > > > > gxx: fatal error: -fuse-linker-plugin, but liblto_plugin.so not found > > > > This patch brings in the latest script form the icecream source, and > > modifies it for use in the OE build environment. The change was tested > > with OE-Core built toolchain, and external toolchain. > > > > Signed-off-by: Iyad Qumei <iyadkq@gmail.com> > > --- > > .../icecc-create-env-native/icecc-create-env | 266 > +++++++++++++++----- > > ...ive_0.1.bb => icecc-create-env-native_1.0.1.bb} | 5 +- > > 2 files changed, 209 insertions(+), 62 deletions(-) > > rename meta/recipes-devtools/icecc-create-env/{ > icecc-create-env-native_0.1.bb => icecc-create-env-native_1.0.1.bb} (89%) > > NACK > > What are you trying to say? This patch was created per instructions on how submit patches. > > > > diff --git > a/meta/recipes-devtools/icecc-create-env/icecc-create-env-native/icecc-create-env > b/meta/recipes-devtools/icecc-create-env/icecc-create-env-native/icecc-create-env > > index 7e4dbc4..0eb2217 100755 > > --- > a/meta/recipes-devtools/icecc-create-env/icecc-create-env-native/icecc-create-env > > +++ > b/meta/recipes-devtools/icecc-create-env/icecc-create-env-native/icecc-create-env > > @@ -24,12 +24,12 @@ add_file () > > fi > > test -z "$name" && return > > # ls -H isn't really the same as readlink, but > > - # readlink is not portable enough. > > + # readlink is not portable enough. > > Don't introduce trailing whitespaces > There is no space problems here, I checked it in vi, and indentation looks consistent in the context. > > > path=`ls -H $path` > > toadd="$name=$path" > > is_contained "$toadd" && return > > if test -z "$silent"; then > > - echo "adding file $toadd" > > + echo "adding file $toadd" > > fi > > target_files="$target_files $toadd" > > if test -x "$path"; then > > @@ -43,19 +43,81 @@ add_file () > > # libc.so.6 => /lib/tls/libc.so.6 (0xb7e81000) > > # /lib/ld-linux.so.2 (0xb7fe8000) > > # covering both situations ( with => and without ) > > - for lib in `ldd "$path" | sed -n 's,^[^/]*\(/[^ > ]*\).*,\1,p'`; do > > - test -f "$lib" || continue > > - # Check wether the same library also exists in the parent > directory, > > - # and prefer that on the assumption that it is a more generic > one. > > - local baselib=`echo "$lib" | sed > 's,\(/[^/]*\)/.*\(/[^/]*\)$,\1\2,'` > > - test -f "$baselib" && lib=$baselib > > - add_file "$lib" > > - done > > - fi > > + for lib in `ldd "$path" | sed -n 's,^[^/]*\(/[^ > ]*\).*,\1,p'`; do > > + test -f "$lib" || continue > > + # Check wether the same library also exists in the parent > directory, > > + # and prefer that on the assumption that it is a more generic > one. > > + local baselib=`echo "$lib" | sed > 's,\(/[^/]*\)/.*\(/[^/]*\)$,\1\2,'` > > + test -f "$baselib" && lib=$baselib > > + add_file "$lib" > > + done > > + fi > > Don't mix tabs and spaces. > > fixed. > > fi > > fi > > } > > > > +# returns abs path to filedir > > +abs_path() > > +{ > > + local path=$1 > > + if test -f "$path"; then > > + pushd $(dirname $path) > /dev/null 2>&1 > > + dir_path=`pwd -P` > > + path=$dir_path/$(basename $path) > > + popd > /dev/null 2>&1 > > + elif test -d "$path"; then > > + pushd $path > /dev/null 2>&1 > > + path=`pwd -P` > > + popd > /dev/null 2>&1 > > + fi > > + echo $path > > +} > > + > > +# Search and add file to the tarball file. > > +search_addfile() > > +{ > > + local compiler=$1 > > + local file_name=$2 > > + local file_installdir=$3 > > + local file="" > > + > > + file=$($compiler -print-prog-name=$file_name) > > + > > + if test -z "$file" || test "$file" = "$file_name" || ! test -e > "$file"; then > > + file=`$compiler -print-file-name=$file_name` > > + fi > > + > > + if ! test -e "$file"; then > > + return 1 > > + fi > > + > > + if test -z "$file_installdir"; then > > + # The file is going to be added to the tarball > > + # in the same path where the compiler found it. > > + > > + file_installdir=$(dirname $file) > > + abs_installdir=$(abs_path $file_installdir) > > + > > + if test "$file_installdir" != "$abs_installdir"; then > > + # The path where the compiler found the file is relative! > > + # If the path where the compiler found the file is relative > > + # to compiler's path, we must change it to be relative to > > + # /usr/bin path where the compiler is going to be installed > > + # in the tarball file. > > + # Replacing relative path by abs path because the tar > command > > + # used to create the tarball file doesn't work well with > > + # relative path as installdir. > > + > > + compiler_basedir=$(abs_path ${compiler%/*/*}) > > + file_installdir=${abs_installdir/$compiler_basedir/"/usr"} > > + fi > > + fi > > + > > + add_file "$file" "$file_installdir/$file_name" > > + > > + return 0 > > +} > > + > > # backward compat > > if test "$1" = "--respect-path"; then > > shift > > @@ -67,64 +129,151 @@ if test "$1" = "--silent"; then > > shift > > fi > > > > - > > -added_gcc=$1 > > -shift > > -added_gxx=$1 > > -shift > > -added_as=$1 > > -shift > > -archive_name=$1 > > - > > -if test -z "$added_gcc" || test -z "$added_gxx" ; then > > - echo "usage: $0 <gcc_path> <g++_path>" > > - exit 1 > > +if test "$1" != "--gcc" -a "$1" != "--clang"; then > > + # backward compat > > + added_gcc=$1 > > + shift > > + added_gxx=$1 > > + shift > > + added_as=$1 > > + shift > > + archive_name=$1 > > + shift > > + gcc=1 > > +else > > + if test "$1" = "--gcc"; then > > + shift > > + added_gcc=$1 > > + shift > > + added_gxx=$1 > > + shift > > + added_as=$1 > > + shift > > + archive_name=$1 > > + shift > > + gcc=1 > > + elif test "$1" = "--clang"; then > > + shift > > + added_clang=$1 > > + shift > > + added_compilerwrapper=$1 > > + shift > > + clang=1 > > + else > > + usage > > + exit 1 > > + fi > > fi > > > > -if ! test -x "$added_gcc" ; then > > - echo "'$added_gcc' is no executable." > > - exit 1 > > +if test -n "$gcc"; then > > + if test -z "$added_gcc" || test -z "$added_gxx"; then > > + usage > > + exit 1 > > + fi > > + if ! test -x "$added_gcc" ; then > > + echo "'$added_gcc' is no executable." > > + exit 1 > > + fi > > + if ! test -x "$added_gxx" ; then > > + echo "'$added_gxx' is no executable." > > + exit 1 > > + fi > > + if test -z "$added_as" ; then > > + add_file /usr/bin/as /usr/bin/as > > + else > > + if ! test -x "$added_as" ; then > > + echo "'$added_as' is no executable." > > + exit 1 > > + fi > > + add_file $added_as /usr/bin/as > > + fi > > fi > > > > -if ! test -x "$added_gxx" ; then > > - echo "'$added_gcc' is no executable." > > - exit 1 > > +if test -n "$clang"; then > > + if ! test -x "$added_clang" ; then > > + echo "'$added_clang' is no executable." > > + exit 1 > > + fi > > + if ! test -x "$added_compilerwrapper" ; then > > + echo "'$added_compilerwrapper' is no executable." > > + exit 1 > > + fi > > fi > > > > +extrafiles= > > +while test "x$1" = "x--addfile"; do > > + shift > > + extrafiles="$extrafiles $1" > > + shift > > +done > > > > +tempdir=`mktemp -d /tmp/iceccenvXXXXXX` > > > > -add_file $added_gcc /usr/bin/gcc > > -add_file $added_gxx /usr/bin/g++ > > +# for testing the environment is usable at all > > +add_file /bin/true > > > > -if test -z "$added_as" ; then > > - add_file /usr/bin/as /usr/bin/as > > -else > > - if ! test -x "$added_as" ; then > > - echo "'$added_as' is no executable." > > - exit 1 > > - fi > > +if test -n "$gcc"; then > > + # getting compilers abs path > > + added_gcc=$(abs_path $added_gcc) > > + added_gxx=$(abs_path $added_gxx) > > > > - add_file $added_as /usr/bin/as > > -fi > > + if test -z "$clang"; then > > + add_file $added_gcc /usr/bin/gcc > > + add_file $added_gxx /usr/bin/g++ > > + else > > + # HACK: The clang case below will add a wrapper in place of > gcc, so add the real > > + # gcc under a different name that the wrapper will call. > > + add_file $added_gcc /usr/bin/gcc.bin > > + add_file $added_gxx /usr/bin/g++.bin > > + fi > > + add_file `$added_gcc -print-prog-name=cc1` /usr/bin/cc1 > > + add_file `$added_gxx -print-prog-name=cc1plus` /usr/bin/cc1plus > > + > > + gcc_as=$($added_gcc -print-prog-name=as) > > + if test "$gcc_as" = "as"; then > > + add_file /usr/bin/as > > + else > > + add_file "$gcc_as" /usr/bin/as > > + fi > > > > -add_file `$added_gcc -print-prog-name=cc1` /usr/bin/cc1 > > -add_file `$added_gxx -print-prog-name=cc1plus` /usr/bin/cc1plus > > -specfile=`$added_gcc -print-file-name=specs` > > -if test -n "$specfile" && test -e "$specfile"; then > > - add_file "$specfile" > > + search_addfile $added_gcc specs > > + search_addfile $added_gcc liblto_plugin.so > > fi > > > > -ltofile=`$added_gcc -print-prog-name=lto1` > > -pluginfile="${ltofile%lto1}liblto_plugin.so" > > -if test -r "$pluginfile" > > -then > > - add_file $pluginfile ${pluginfile#*usr} > > - add_file $pluginfile /usr${pluginfile#*usr} > > +if test -n "$clang"; then > > + add_file $added_clang /usr/bin/clang > > + # HACK: Older icecream remotes have /usr/bin/{gcc|g++} hardcoded > and wouldn't > > + # call /usr/bin/clang at all. So include a wrapper binary that will > call gcc or clang > > + # depending on an extra argument added by icecream. > > + add_file $added_compilerwrapper /usr/bin/gcc > > + add_file $added_compilerwrapper /usr/bin/g++ > > + > > + add_file $($added_clang -print-prog-name=as) /usr/bin/as > > + > > + # clang always uses its internal .h files > > + clangincludes=$(dirname $($added_clang > -print-file-name=include/limits.h)) > > + clangprefix=$(dirname $(dirname $added_clang)) > > + for file in $(find $clangincludes -type f); do > > + # get path without .. > > + destfile=$(readlink -e $file) > > + # and convert from <prefix> to /usr if needed > > + destfile=$(echo $destfile | sed "s#$clangprefix#/usr#" ) > > + add_file "$file" "$destfile" > > + done > > fi > > > > -tempdir=`mktemp -d /tmp/iceccenvXXXXXX` > > +for extrafile in $extrafiles; do > > + add_file $extrafile > > +done > > + > > +# IKLQ ? > > +# special case for weird multilib setups > > +for dir in /lib /lib64 /usr/lib /usr/lib64; do > > + test -L $dir && cp -p $dir $tempdir$dir > > +done > > + > > new_target_files= > > -for i in $target_files; do > > +for i in $target_files; do > > Don't introduce trailing whitespaces > fixed > > case $i in > > *=/*) > > target=`echo $i | cut -d= -f1` > > @@ -151,11 +300,11 @@ target_files=`for i in $new_target_files; do echo > $i; done | sort` > > #if not use the md5 of all files as the archive name > > if test -z "$archive_name"; then > > md5sum=NONE > > - for file in /usr/bin/md5sum /bin/md5 /usr/bin/md5; do > > - if test -x $file; then > > - md5sum=$file > > - break > > - fi > > + for file in /usr/bin/md5sum /bin/md5 /usr/bin/md5 /sbin/md5; do > > + if test -x $file; then > > + md5sum=$file > > + break > > + fi > > Don't introduce wrong indenntation. > Checked indentation in vi, looks consistent with context. > > > done > > > > #calculate md5 and use it as the archive name > > @@ -190,3 +339,4 @@ tar -czhf "$mydir/$archive_name" $target_files || { > > } > > cd .. > > rm -rf $tempdir > > + > > diff --git a/meta/recipes-devtools/icecc-create-env/ > icecc-create-env-native_0.1.bb b/meta/recipes-devtools/icecc-create-env/ > icecc-create-env-native_1.0.1.bb > > similarity index 89% > > rename from meta/recipes-devtools/icecc-create-env/ > icecc-create-env-native_0.1.bb > > rename to meta/recipes-devtools/icecc-create-env/ > icecc-create-env-native_1.0.1.bb > > index b04474e..c03cf5a 100644 > > --- a/meta/recipes-devtools/icecc-create-env/ > icecc-create-env-native_0.1.bb > > +++ b/meta/recipes-devtools/icecc-create-env/ > icecc-create-env-native_1.0.1.bb > > @@ -6,16 +6,13 @@ SECTION = "base" > > LICENSE = "GPLv2+" > > LIC_FILES_CHKSUM = > "file://icecc-create-env;beginline=2;endline=5;md5=ae1df3d6a058bfda40b66094c5f6065f" > > > > -PR = "r2" > > +PR = "r0" > > drop > why, this new recipe for version 1.0.1. > > > DEPENDS = "" > > INHIBIT_DEFAULT_DEPS = "1" > > > > -FILESPATH = "${FILE_DIRNAME}/${PN}/" > > - > > You cannot drop it without moving file to BPN (see > > http://lists.openembedded.org/pipermail/openembedded-core/2013-December/087239.html > You are actually referring us to a patch you just submitted after my message. This comment must be a joke! > ) > > inherit native > > > > -PATCHTOOL = "patch" > > You cannot drop it without causing dependency loop (see > > http://lists.openembedded.org/pipermail/openembedded-core/2013-December/087239.html > ditto. > ) > > > SRC_URI = "file://icecc-create-env" > > > > S = "${WORKDIR}" > > -- > > 1.7.10.4 > > > > _______________________________________________ > > Openembedded-core mailing list > > Openembedded-core@lists.openembedded.org > > http://lists.openembedded.org/mailman/listinfo/openembedded-core > > -- > Martin 'JaMa' Jansa jabber: Martin.Jansa@gmail.com > [-- Attachment #2: Type: text/html, Size: 20582 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] icecc-create-env: Upgrade script 2013-12-04 22:39 ` Iyad Qumei @ 2013-12-04 23:27 ` Iyad Qumei 2013-12-05 0:14 ` Martin Jansa 1 sibling, 0 replies; 6+ messages in thread From: Iyad Qumei @ 2013-12-04 23:27 UTC (permalink / raw) To: Martin Jansa; +Cc: Patches and discussions about the oe-core layer [-- Attachment #1: Type: text/plain, Size: 971 bytes --] After more thinking about this, and rebuilding. I do see both issues. Although I did successful build last night, which I still do, quilt-native guilt find, and icecc-create-env in sysroot is the correct version. The difference is how I issued the build core-minimal-image vs quilt-native and icecc-create-env-native. I will reinstate both definitions to the recipe. Sorry for the misunderstanding. > > > DEPENDS = "" > > INHIBIT_DEFAULT_DEPS = "1" > > > > -FILESPATH = "${FILE_DIRNAME}/${PN}/" > > - > > You cannot drop it without moving file to BPN (see > > http://lists.openembedded.org/pipermail/openembedded-core/2013-December/087239.html > ) > > inherit native > > > > -PATCHTOOL = "patch" > > You cannot drop it without causing dependency loop (see > > http://lists.openembedded.org/pipermail/openembedded-core/2013-December/087239.html > > ) > > > -- > Martin 'JaMa' Jansa jabber: Martin.Jansa@gmail.com > > l [-- Attachment #2: Type: text/html, Size: 2320 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] icecc-create-env: Upgrade script 2013-12-04 22:39 ` Iyad Qumei 2013-12-04 23:27 ` Iyad Qumei @ 2013-12-05 0:14 ` Martin Jansa 1 sibling, 0 replies; 6+ messages in thread From: Martin Jansa @ 2013-12-05 0:14 UTC (permalink / raw) To: Iyad Qumei; +Cc: Patches and discussions about the oe-core layer [-- Attachment #1: Type: text/plain, Size: 16977 bytes --] On Wed, Dec 04, 2013 at 02:39:41PM -0800, Iyad Qumei wrote: > On Wed, Dec 4, 2013 at 9:43 AM, Martin Jansa <martin.jansa@gmail.com> wrote: > > > On Wed, Dec 04, 2013 at 09:07:54AM -0800, Iyad Qumei wrote: > > > The original icecc script does not handle toolchain content > > > properly, resulting in build failures, such as > > > > > > gxx: fatal error: -fuse-linker-plugin, but liblto_plugin.so not found > > > > > > This patch brings in the latest script form the icecream source, and > > > modifies it for use in the OE build environment. The change was tested > > > with OE-Core built toolchain, and external toolchain. > > > > > > Signed-off-by: Iyad Qumei <iyadkq@gmail.com> > > > --- > > > .../icecc-create-env-native/icecc-create-env | 266 > > +++++++++++++++----- > > > ...ive_0.1.bb => icecc-create-env-native_1.0.1.bb} | 5 +- > > > 2 files changed, 209 insertions(+), 62 deletions(-) > > > rename meta/recipes-devtools/icecc-create-env/{ > > icecc-create-env-native_0.1.bb => icecc-create-env-native_1.0.1.bb} (89%) > > > > NACK > > > > What are you trying to say? http://en.wikipedia.org/wiki/NAK_(protocol_message) > This patch was created per instructions on how submit patches. That doesn't make it correct functionality-wise. > > > > > > diff --git > > a/meta/recipes-devtools/icecc-create-env/icecc-create-env-native/icecc-create-env > > b/meta/recipes-devtools/icecc-create-env/icecc-create-env-native/icecc-create-env > > > index 7e4dbc4..0eb2217 100755 > > > --- > > a/meta/recipes-devtools/icecc-create-env/icecc-create-env-native/icecc-create-env > > > +++ > > b/meta/recipes-devtools/icecc-create-env/icecc-create-env-native/icecc-create-env > > > @@ -24,12 +24,12 @@ add_file () > > > fi > > > test -z "$name" && return > > > # ls -H isn't really the same as readlink, but > > > - # readlink is not portable enough. > > > + # readlink is not portable enough. > > > > Don't introduce trailing whitespaces > > > > There is no space problems here, I checked it in vi, and indentation looks > consistent in the context. Then there is something wrong with your vi. You can even see it by highlighting the line with mouse in patchwork http://patchwork.openembedded.org/patch/62843/ > > > > > > path=`ls -H $path` > > > toadd="$name=$path" > > > is_contained "$toadd" && return > > > if test -z "$silent"; then > > > - echo "adding file $toadd" > > > + echo "adding file $toadd" > > > fi > > > target_files="$target_files $toadd" > > > if test -x "$path"; then > > > @@ -43,19 +43,81 @@ add_file () > > > # libc.so.6 => /lib/tls/libc.so.6 (0xb7e81000) > > > # /lib/ld-linux.so.2 (0xb7fe8000) > > > # covering both situations ( with => and without ) > > > - for lib in `ldd "$path" | sed -n 's,^[^/]*\(/[^ > > ]*\).*,\1,p'`; do > > > - test -f "$lib" || continue > > > - # Check wether the same library also exists in the parent > > directory, > > > - # and prefer that on the assumption that it is a more generic > > one. > > > - local baselib=`echo "$lib" | sed > > 's,\(/[^/]*\)/.*\(/[^/]*\)$,\1\2,'` > > > - test -f "$baselib" && lib=$baselib > > > - add_file "$lib" > > > - done > > > - fi > > > + for lib in `ldd "$path" | sed -n 's,^[^/]*\(/[^ > > ]*\).*,\1,p'`; do > > > + test -f "$lib" || continue > > > + # Check wether the same library also exists in the parent > > directory, > > > + # and prefer that on the assumption that it is a more generic > > one. > > > + local baselib=`echo "$lib" | sed > > 's,\(/[^/]*\)/.*\(/[^/]*\)$,\1\2,'` > > > + test -f "$baselib" && lib=$baselib > > > + add_file "$lib" > > > + done > > > + fi > > > > Don't mix tabs and spaces. > > > > fixed. > > > > > fi > > > fi > > > } > > > > > > +# returns abs path to filedir > > > +abs_path() > > > +{ > > > + local path=$1 > > > + if test -f "$path"; then > > > + pushd $(dirname $path) > /dev/null 2>&1 > > > + dir_path=`pwd -P` > > > + path=$dir_path/$(basename $path) > > > + popd > /dev/null 2>&1 > > > + elif test -d "$path"; then > > > + pushd $path > /dev/null 2>&1 > > > + path=`pwd -P` > > > + popd > /dev/null 2>&1 > > > + fi > > > + echo $path > > > +} > > > + > > > +# Search and add file to the tarball file. > > > +search_addfile() > > > +{ > > > + local compiler=$1 > > > + local file_name=$2 > > > + local file_installdir=$3 > > > + local file="" > > > + > > > + file=$($compiler -print-prog-name=$file_name) > > > + > > > + if test -z "$file" || test "$file" = "$file_name" || ! test -e > > "$file"; then > > > + file=`$compiler -print-file-name=$file_name` > > > + fi > > > + > > > + if ! test -e "$file"; then > > > + return 1 > > > + fi > > > + > > > + if test -z "$file_installdir"; then > > > + # The file is going to be added to the tarball > > > + # in the same path where the compiler found it. > > > + > > > + file_installdir=$(dirname $file) > > > + abs_installdir=$(abs_path $file_installdir) > > > + > > > + if test "$file_installdir" != "$abs_installdir"; then > > > + # The path where the compiler found the file is relative! > > > + # If the path where the compiler found the file is relative > > > + # to compiler's path, we must change it to be relative to > > > + # /usr/bin path where the compiler is going to be installed > > > + # in the tarball file. > > > + # Replacing relative path by abs path because the tar > > command > > > + # used to create the tarball file doesn't work well with > > > + # relative path as installdir. > > > + > > > + compiler_basedir=$(abs_path ${compiler%/*/*}) > > > + file_installdir=${abs_installdir/$compiler_basedir/"/usr"} > > > + fi > > > + fi > > > + > > > + add_file "$file" "$file_installdir/$file_name" > > > + > > > + return 0 > > > +} > > > + > > > # backward compat > > > if test "$1" = "--respect-path"; then > > > shift > > > @@ -67,64 +129,151 @@ if test "$1" = "--silent"; then > > > shift > > > fi > > > > > > - > > > -added_gcc=$1 > > > -shift > > > -added_gxx=$1 > > > -shift > > > -added_as=$1 > > > -shift > > > -archive_name=$1 > > > - > > > -if test -z "$added_gcc" || test -z "$added_gxx" ; then > > > - echo "usage: $0 <gcc_path> <g++_path>" > > > - exit 1 > > > +if test "$1" != "--gcc" -a "$1" != "--clang"; then > > > + # backward compat > > > + added_gcc=$1 > > > + shift > > > + added_gxx=$1 > > > + shift > > > + added_as=$1 > > > + shift > > > + archive_name=$1 > > > + shift > > > + gcc=1 > > > +else > > > + if test "$1" = "--gcc"; then > > > + shift > > > + added_gcc=$1 > > > + shift > > > + added_gxx=$1 > > > + shift > > > + added_as=$1 > > > + shift > > > + archive_name=$1 > > > + shift > > > + gcc=1 > > > + elif test "$1" = "--clang"; then > > > + shift > > > + added_clang=$1 > > > + shift > > > + added_compilerwrapper=$1 > > > + shift > > > + clang=1 > > > + else > > > + usage > > > + exit 1 > > > + fi > > > fi > > > > > > -if ! test -x "$added_gcc" ; then > > > - echo "'$added_gcc' is no executable." > > > - exit 1 > > > +if test -n "$gcc"; then > > > + if test -z "$added_gcc" || test -z "$added_gxx"; then > > > + usage > > > + exit 1 > > > + fi > > > + if ! test -x "$added_gcc" ; then > > > + echo "'$added_gcc' is no executable." > > > + exit 1 > > > + fi > > > + if ! test -x "$added_gxx" ; then > > > + echo "'$added_gxx' is no executable." > > > + exit 1 > > > + fi > > > + if test -z "$added_as" ; then > > > + add_file /usr/bin/as /usr/bin/as > > > + else > > > + if ! test -x "$added_as" ; then > > > + echo "'$added_as' is no executable." > > > + exit 1 > > > + fi > > > + add_file $added_as /usr/bin/as > > > + fi > > > fi > > > > > > -if ! test -x "$added_gxx" ; then > > > - echo "'$added_gcc' is no executable." > > > - exit 1 > > > +if test -n "$clang"; then > > > + if ! test -x "$added_clang" ; then > > > + echo "'$added_clang' is no executable." > > > + exit 1 > > > + fi > > > + if ! test -x "$added_compilerwrapper" ; then > > > + echo "'$added_compilerwrapper' is no executable." > > > + exit 1 > > > + fi > > > fi > > > > > > +extrafiles= > > > +while test "x$1" = "x--addfile"; do > > > + shift > > > + extrafiles="$extrafiles $1" > > > + shift > > > +done > > > > > > +tempdir=`mktemp -d /tmp/iceccenvXXXXXX` > > > > > > -add_file $added_gcc /usr/bin/gcc > > > -add_file $added_gxx /usr/bin/g++ > > > +# for testing the environment is usable at all > > > +add_file /bin/true > > > > > > -if test -z "$added_as" ; then > > > - add_file /usr/bin/as /usr/bin/as > > > -else > > > - if ! test -x "$added_as" ; then > > > - echo "'$added_as' is no executable." > > > - exit 1 > > > - fi > > > +if test -n "$gcc"; then > > > + # getting compilers abs path > > > + added_gcc=$(abs_path $added_gcc) > > > + added_gxx=$(abs_path $added_gxx) > > > > > > - add_file $added_as /usr/bin/as > > > -fi > > > + if test -z "$clang"; then > > > + add_file $added_gcc /usr/bin/gcc > > > + add_file $added_gxx /usr/bin/g++ > > > + else > > > + # HACK: The clang case below will add a wrapper in place of > > gcc, so add the real > > > + # gcc under a different name that the wrapper will call. > > > + add_file $added_gcc /usr/bin/gcc.bin > > > + add_file $added_gxx /usr/bin/g++.bin > > > + fi > > > + add_file `$added_gcc -print-prog-name=cc1` /usr/bin/cc1 > > > + add_file `$added_gxx -print-prog-name=cc1plus` /usr/bin/cc1plus > > > + > > > + gcc_as=$($added_gcc -print-prog-name=as) > > > + if test "$gcc_as" = "as"; then > > > + add_file /usr/bin/as > > > + else > > > + add_file "$gcc_as" /usr/bin/as > > > + fi > > > > > > -add_file `$added_gcc -print-prog-name=cc1` /usr/bin/cc1 > > > -add_file `$added_gxx -print-prog-name=cc1plus` /usr/bin/cc1plus > > > -specfile=`$added_gcc -print-file-name=specs` > > > -if test -n "$specfile" && test -e "$specfile"; then > > > - add_file "$specfile" > > > + search_addfile $added_gcc specs > > > + search_addfile $added_gcc liblto_plugin.so > > > fi > > > > > > -ltofile=`$added_gcc -print-prog-name=lto1` > > > -pluginfile="${ltofile%lto1}liblto_plugin.so" > > > -if test -r "$pluginfile" > > > -then > > > - add_file $pluginfile ${pluginfile#*usr} > > > - add_file $pluginfile /usr${pluginfile#*usr} > > > +if test -n "$clang"; then > > > + add_file $added_clang /usr/bin/clang > > > + # HACK: Older icecream remotes have /usr/bin/{gcc|g++} hardcoded > > and wouldn't > > > + # call /usr/bin/clang at all. So include a wrapper binary that will > > call gcc or clang > > > + # depending on an extra argument added by icecream. > > > + add_file $added_compilerwrapper /usr/bin/gcc > > > + add_file $added_compilerwrapper /usr/bin/g++ > > > + > > > + add_file $($added_clang -print-prog-name=as) /usr/bin/as > > > + > > > + # clang always uses its internal .h files > > > + clangincludes=$(dirname $($added_clang > > -print-file-name=include/limits.h)) > > > + clangprefix=$(dirname $(dirname $added_clang)) > > > + for file in $(find $clangincludes -type f); do > > > + # get path without .. > > > + destfile=$(readlink -e $file) > > > + # and convert from <prefix> to /usr if needed > > > + destfile=$(echo $destfile | sed "s#$clangprefix#/usr#" ) > > > + add_file "$file" "$destfile" > > > + done > > > fi > > > > > > -tempdir=`mktemp -d /tmp/iceccenvXXXXXX` > > > +for extrafile in $extrafiles; do > > > + add_file $extrafile > > > +done > > > + > > > +# IKLQ ? > > > +# special case for weird multilib setups > > > +for dir in /lib /lib64 /usr/lib /usr/lib64; do > > > + test -L $dir && cp -p $dir $tempdir$dir > > > +done > > > + > > > new_target_files= > > > -for i in $target_files; do > > > +for i in $target_files; do > > > > Don't introduce trailing whitespaces > > > > fixed > > > > > case $i in > > > *=/*) > > > target=`echo $i | cut -d= -f1` > > > @@ -151,11 +300,11 @@ target_files=`for i in $new_target_files; do echo > > $i; done | sort` > > > #if not use the md5 of all files as the archive name > > > if test -z "$archive_name"; then > > > md5sum=NONE > > > - for file in /usr/bin/md5sum /bin/md5 /usr/bin/md5; do > > > - if test -x $file; then > > > - md5sum=$file > > > - break > > > - fi > > > + for file in /usr/bin/md5sum /bin/md5 /usr/bin/md5 /sbin/md5; do > > > + if test -x $file; then > > > + md5sum=$file > > > + break > > > + fi > > > > Don't introduce wrong indenntation. > > > > Checked indentation in vi, looks consistent with context. It was using 2 spaces in most cases (tabs and 1 space in few cases). Adding one space inside that for loop changes it to 5 which cannot be improvement, fixing all indentation in separate patch would be nice. Adding /sbin/md5 isn't mentioned in commit message. > > > > > > done > > > > > > #calculate md5 and use it as the archive name > > > @@ -190,3 +339,4 @@ tar -czhf "$mydir/$archive_name" $target_files || { > > > } > > > cd .. > > > rm -rf $tempdir > > > + > > > diff --git a/meta/recipes-devtools/icecc-create-env/ > > icecc-create-env-native_0.1.bb b/meta/recipes-devtools/icecc-create-env/ > > icecc-create-env-native_1.0.1.bb > > > similarity index 89% > > > rename from meta/recipes-devtools/icecc-create-env/ > > icecc-create-env-native_0.1.bb > > > rename to meta/recipes-devtools/icecc-create-env/ > > icecc-create-env-native_1.0.1.bb > > > index b04474e..c03cf5a 100644 > > > --- a/meta/recipes-devtools/icecc-create-env/ > > icecc-create-env-native_0.1.bb > > > +++ b/meta/recipes-devtools/icecc-create-env/ > > icecc-create-env-native_1.0.1.bb > > > @@ -6,16 +6,13 @@ SECTION = "base" > > > LICENSE = "GPLv2+" > > > LIC_FILES_CHKSUM = > > "file://icecc-create-env;beginline=2;endline=5;md5=ae1df3d6a058bfda40b66094c5f6065f" > > > > > > -PR = "r2" > > > +PR = "r0" > > > > drop > > > > why, this new recipe for version 1.0.1. drop PR variable completely, we're dropping them with every PV upgrade for couple months now. > > > > > > DEPENDS = "" > > > INHIBIT_DEFAULT_DEPS = "1" > > > > > > -FILESPATH = "${FILE_DIRNAME}/${PN}/" > > > - > > > > You cannot drop it without moving file to BPN (see > > > > http://lists.openembedded.org/pipermail/openembedded-core/2013-December/087239.html > > > > You are actually referring us to a patch you just submitted after my > message. This comment must be a joke! If you check http://git.shr-project.org/git/?p=oe-core.git;a=shortlog;h=refs/heads/jansa/test http://git.shr-project.org/git/?p=oe-core.git;a=commit;h=fd2a9c5538ad5336c3822128a8880cff357754c9 you can see that I did that change 2 days ago, just haven't sent the patch yet, but that's not the point, point is that I've noticed that you made the same mistake as I did before, so I've sent my patch as reference and explanation for you (and everybody else who will also try to remove seemingly unnecessary PATCHTOOL/FILESPATH). Sending changes not tested in master must be a joke! I believe you've tested it in Dylan, but that's not enough. > > ) > > > inherit native > > > > > > -PATCHTOOL = "patch" > > > > You cannot drop it without causing dependency loop (see > > > > http://lists.openembedded.org/pipermail/openembedded-core/2013-December/087239.html > > > > ditto. ditto > > > > ) > > > > > SRC_URI = "file://icecc-create-env" > > > > > > S = "${WORKDIR}" > > > -- > > > 1.7.10.4 > > > > > > _______________________________________________ > > > Openembedded-core mailing list > > > Openembedded-core@lists.openembedded.org > > > http://lists.openembedded.org/mailman/listinfo/openembedded-core > > > > -- > > Martin 'JaMa' Jansa jabber: Martin.Jansa@gmail.com > > -- Martin 'JaMa' Jansa jabber: Martin.Jansa@gmail.com [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 205 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2013-12-05 0:13 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-12-04 17:07 [PATCH] icecc-create-env: Upgrade script Iyad Qumei 2013-12-04 17:07 ` Iyad Qumei 2013-12-04 17:43 ` Martin Jansa 2013-12-04 22:39 ` Iyad Qumei 2013-12-04 23:27 ` Iyad Qumei 2013-12-05 0:14 ` Martin Jansa
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox