From: Martin Jansa <martin.jansa@gmail.com>
To: Iyad Qumei <iyadkq@gmail.com>
Cc: Patches and discussions about the oe-core layer
<openembedded-core@lists.openembedded.org>
Subject: Re: [PATCH] icecc-create-env: Upgrade script
Date: Thu, 5 Dec 2013 01:14:01 +0100 [thread overview]
Message-ID: <20131205001401.GA3724@jama> (raw)
In-Reply-To: <CADL+O9su6+2_COr7J5eHWZjPD1Vwh6NjoMT-Ga1hjabvb7icgw@mail.gmail.com>
[-- 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 --]
prev parent reply other threads:[~2013-12-05 0:13 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
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 message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20131205001401.GA3724@jama \
--to=martin.jansa@gmail.com \
--cc=iyadkq@gmail.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.