* [PATCH 0/1] Make poky-qemu and related scripts work with arbitrary SDK locations
@ 2010-12-08 5:13 Scott Garman
2010-12-08 4:59 ` [PATCH 1/1] " Scott Garman
0 siblings, 1 reply; 4+ messages in thread
From: Scott Garman @ 2010-12-08 5:13 UTC (permalink / raw)
To: poky
Hi Saul,
This commit needs to precede a merge of Josh's work to add a version directory to SDK toolchain installations. It eliminates all assumptions that toolchains are installed in /opt/poky and allows for arbitrary toolchain location locations.
It also fixes a bug I ran across when paths to both the kernel and filesystem image are specified, leading to POKY_NATIVE_SYSROOT not being set, which causes poky-qemu-ifup/ifdown to fail. [BUGFIX #568]
Pull URL: git://git.pokylinux.org/poky-contrib.git
Branch: sgarman/poky-qemu-changes
Browse: http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=sgarman/poky-qemu-changes
Thanks,
Scott Garman <scott.a.garman@intel.com>
---
Scott Garman (1):
Make poky-qemu and related scripts work with arbitrary SDK locations
scripts/poky-find-native-sysroot | 2 +-
scripts/poky-qemu | 38 ++++++++++++++++++++++----------------
scripts/poky-qemu-ifdown | 9 +--------
scripts/poky-qemu-ifup | 9 +--------
scripts/poky-qemu-internal | 16 +---------------
5 files changed, 26 insertions(+), 48 deletions(-)
^ permalink raw reply [flat|nested] 4+ messages in thread* [PATCH 1/1] Make poky-qemu and related scripts work with arbitrary SDK locations 2010-12-08 5:13 [PATCH 0/1] Make poky-qemu and related scripts work with arbitrary SDK locations Scott Garman @ 2010-12-08 4:59 ` Scott Garman 2010-12-09 15:00 ` Richard Purdie 0 siblings, 1 reply; 4+ messages in thread From: Scott Garman @ 2010-12-08 4:59 UTC (permalink / raw) To: poky * No longer assume SDK toolchains are installed in /opt/poky * [BUGFIX #568] where specifying paths to both the kernel and fs image caused an error due to POKY_NATIVE_SYSROOT never being set, triggering failure of poky-qemu-ifup/ifdown * Cosmetic improvements to usage() functions by using basename Signed-off-by: Scott Garman <scott.a.garman@intel.com> --- scripts/poky-find-native-sysroot | 2 +- scripts/poky-qemu | 38 ++++++++++++++++++++++---------------- scripts/poky-qemu-ifdown | 9 +-------- scripts/poky-qemu-ifup | 9 +-------- scripts/poky-qemu-internal | 16 +--------------- 5 files changed, 26 insertions(+), 48 deletions(-) diff --git a/scripts/poky-find-native-sysroot b/scripts/poky-find-native-sysroot index d8002f9..2262294 100755 --- a/scripts/poky-find-native-sysroot +++ b/scripts/poky-find-native-sysroot @@ -1,7 +1,7 @@ #!/bin/bash # # Find a native sysroot to use - either from an in-tree Poky build or -# from a toolchain installation in /opt/poky. It then ensures the variable +# from a toolchain installation. It then ensures the variable # $POKY_NATIVE_SYSROOT is set to the sysroot's base directory, and sets # $PSEUDO to the path of the pseudo binary. # diff --git a/scripts/poky-qemu b/scripts/poky-qemu index bc312e0..67af439 100755 --- a/scripts/poky-qemu +++ b/scripts/poky-qemu @@ -31,9 +31,9 @@ usage() { echo " serial - enables a serial console on /dev/ttyS0" echo "" echo "Examples:" - echo " $0 qemuarm" - echo " $0 qemux86-64 poky-image-sato ext3" - echo " $0 path/to/bzImage-qemux86.bin path/to/nfsrootdir/ serial" + echo " $MYNAME qemuarm" + echo " $MYNAME qemux86-64 poky-image-sato ext3" + echo " $MYNAME path/to/bzImage-qemux86.bin path/to/nfsrootdir/ serial" exit 1 } @@ -213,23 +213,29 @@ setup_tmpdir() { echo "before running this script" >&2; exit 1; } - # We have bitbake in PATH, get TMPDIR and BUILD_SYS - # from the environment + # We have bitbake in PATH, get TMPDIR from bitbake TMPDIR=`bitbake -e | grep TMPDIR=\" | cut -d '=' -f2 | cut -d '"' -f2` - BUILD_SYS=`bitbake -e | grep BUILD_SYS=\" | cut -d '=' -f2 | cut -d '"' -f2` else - BUILD_ARCH=`uname -m` - BUILD_OS=`uname | tr '[A-Z]' '[a-z]'` - BUILD_SYS="$BUILD_ARCH-$BUILD_OS" TMPDIR=$BUILDDIR/tmp fi - if [ -z "$POKY_NATIVE_SYSROOT" ]; then - POKY_NATIVE_SYSROOT=$TMPDIR/sysroots/$BUILD_SYS - fi - CROSSPATH=$POKY_NATIVE_SYSROOT/usr/bin fi } +setup_sysroot() { + # Toolchain installs set up $POKY_NATIVE_SYSROOT in their + # environment script. If that variable isn't set, we're + # either in an in-tree poky scenario or the environment + # script wasn't source'd. + if [ -z "$POKY_NATIVE_SYSROOT" ]; then + setup_tmpdir + BUILD_ARCH=`uname -m` + BUILD_OS=`uname | tr '[A-Z]' '[a-z]'` + BUILD_SYS="$BUILD_ARCH-$BUILD_OS" + + POKY_NATIVE_SYSROOT=$TMPDIR/sysroots/$BUILD_SYS + fi +} + # Locate a rootfs image based on defaults defined above findimage() { where=$1 @@ -254,8 +260,6 @@ findimage() { } if [[ -e "$ROOTFS" && -z "$FSTYPE" ]]; then - setup_tmpdir - # Extract the filename extension EXT=`echo $ROOTFS | awk -F . '{ print \$NF }'` if [[ "x$EXT" == "xext2" || "x$EXT" == "xext3" || @@ -281,7 +285,6 @@ fi # KERNEL is now set for all cases if [ -z "$FSTYPE" ]; then - setup_tmpdir eval FSTYPE=\$${machine2}_DEFAULT_FSTYPE if [ -z "$FSTYPE" ]; then @@ -318,6 +321,9 @@ echo "KERNEL: [$KERNEL]" echo "ROOTFS: [$ROOTFS]" echo "FSTYPE: [$FSTYPE]" +setup_sysroot +# POKY_NATIVE_SYSROOT is now set for all cases + # We can't run without a libGL.so libgl='no' diff --git a/scripts/poky-qemu-ifdown b/scripts/poky-qemu-ifdown index 60ca919..bc90a9c 100755 --- a/scripts/poky-qemu-ifdown +++ b/scripts/poky-qemu-ifdown @@ -27,7 +27,7 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. usage() { - echo "sudo $0 <tap-dev> <native-sysroot-basedir>" + echo "sudo $(basename $0) <tap-dev> <native-sysroot-basedir>" } if [ $EUID -ne 0 ]; then @@ -46,13 +46,6 @@ NATIVE_SYSROOT_DIR=$2 TUNCTL=$NATIVE_SYSROOT_DIR/usr/bin/tunctl if [ ! -e "$TUNCTL" ]; then echo "Error: Unable to find tunctl binary in '$NATIVE_SYSROOT_DIR/usr/bin'" - - if [[ "$NATIVE_SYSROOT_DIR" =~ ^\/opt\/poky ]]; then - echo "This shouldn't happen - something is wrong with your toolchain installation" - else - echo "Have you run 'bitbake meta-ide-support'?" - fi - exit 1 fi diff --git a/scripts/poky-qemu-ifup b/scripts/poky-qemu-ifup index 8685c83..f82848c 100755 --- a/scripts/poky-qemu-ifup +++ b/scripts/poky-qemu-ifup @@ -34,7 +34,7 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. usage() { - echo "sudo $0 <gid> <native-sysroot-basedir>" + echo "sudo $(basename $0) <gid> <native-sysroot-basedir>" } if [ $EUID -ne 0 ]; then @@ -53,13 +53,6 @@ NATIVE_SYSROOT_DIR=$2 TUNCTL=$NATIVE_SYSROOT_DIR/usr/bin/tunctl if [ ! -x "$TUNCTL" ]; then echo "Error: Unable to find tunctl binary in '$NATIVE_SYSROOT_DIR/usr/bin'" - - if [[ "$NATIVE_SYSROOT_DIR" =~ ^\/opt\/poky ]]; then - echo "This shouldn't happen - something is wrong with your toolchain installation" - else - echo "Have you run 'bitbake meta-ide-support'?" - fi - exit 1 fi diff --git a/scripts/poky-qemu-internal b/scripts/poky-qemu-internal index 62c1040..ca2511a 100755 --- a/scripts/poky-qemu-internal +++ b/scripts/poky-qemu-internal @@ -394,23 +394,9 @@ if [ "x$QEMUOPTIONS" = "x" ]; then return fi -SDKDIR="/opt/poky/sysroots" -if [ "$MACHINE" = "qemuarm" -o "$MACHINE" = "spitz" -o "$MACHINE" = "borzoi" -o "$MACHINE" = "akita" -o "$MACHINE" = "nokia800" ]; then - SDKPATH="$SDKDIR/arm-poky-linux-gnueabi/bin" -fi - -if [ "$MACHINE" = "qemux86" ]; then - SDKPATH="$SDKDIR/i586-poky-linux/bin" -fi - -if [ "$MACHINE" = "qemux86-64" ]; then - SDKPATH="$SDKDIR/x86_64-poky-linux/bin" -fi - -PATH=$CROSSPATH:$SDKPATH:$PATH +PATH=$CROSSPATH:$POKY_NATIVE_SYSROOT/usr/bin:$PATH QEMUBIN=`which $QEMU` - if [ ! -x "$QEMUBIN" ]; then echo "Error: No QEMU binary '$QEMU' could be found." cleanup -- 1.7.1 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 1/1] Make poky-qemu and related scripts work with arbitrary SDK locations 2010-12-08 4:59 ` [PATCH 1/1] " Scott Garman @ 2010-12-09 15:00 ` Richard Purdie 2010-12-09 21:33 ` Scott Garman 0 siblings, 1 reply; 4+ messages in thread From: Richard Purdie @ 2010-12-09 15:00 UTC (permalink / raw) To: Scott Garman; +Cc: poky On Tue, 2010-12-07 at 20:59 -0800, Scott Garman wrote: > diff --git a/scripts/poky-find-native-sysroot b/scripts/poky-find-native-sysroot > index d8002f9..2262294 100755 > --- a/scripts/poky-find-native-sysroot > +++ b/scripts/poky-find-native-sysroot > diff --git a/scripts/poky-qemu b/scripts/poky-qemu > index bc312e0..67af439 100755 > --- a/scripts/poky-qemu > +++ b/scripts/poky-qemu > @@ -31,9 +31,9 @@ usage() { > echo " serial - enables a serial console on /dev/ttyS0" > echo "" > echo "Examples:" > - echo " $0 qemuarm" > - echo " $0 qemux86-64 poky-image-sato ext3" > - echo " $0 path/to/bzImage-qemux86.bin path/to/nfsrootdir/ serial" > + echo " $MYNAME qemuarm" > + echo " $MYNAME qemux86-64 poky-image-sato ext3" > + echo " $MYNAME path/to/bzImage-qemux86.bin path/to/nfsrootdir/ serial" > exit 1 > } > > @@ -213,23 +213,29 @@ setup_tmpdir() { > echo "before running this script" >&2; > exit 1; } > > - # We have bitbake in PATH, get TMPDIR and BUILD_SYS > - # from the environment > + # We have bitbake in PATH, get TMPDIR from bitbake > TMPDIR=`bitbake -e | grep TMPDIR=\" | cut -d '=' -f2 | cut -d '"' -f2` > - BUILD_SYS=`bitbake -e | grep BUILD_SYS=\" | cut -d '=' -f2 | cut -d '"' -f2` > else > - BUILD_ARCH=`uname -m` > - BUILD_OS=`uname | tr '[A-Z]' '[a-z]'` > - BUILD_SYS="$BUILD_ARCH-$BUILD_OS" > TMPDIR=$BUILDDIR/tmp > fi > - if [ -z "$POKY_NATIVE_SYSROOT" ]; then > - POKY_NATIVE_SYSROOT=$TMPDIR/sysroots/$BUILD_SYS > - fi > - CROSSPATH=$POKY_NATIVE_SYSROOT/usr/bin > fi > } Hmm, you remove CROSSPATH yet still reference it later. I think the code has become confused. I'm going to merge the patch as it improves the situation compared to how it is at the moment. I'll give some background though: There are three things we really want to reference in PATH: a) The "native" or "nativesdk" tools b) The "cross" tools, i.e. TARGET_PREFIX-gcc c) The "cross" tools without the prefix, e.g. "gcc", replacing the usual gcc you'd find in PATH. This last part is to allow distcc in a image to use the compiler outside the emulation. The distcc thing did used to work but I doubt it does at the moment as I think this has just been reduced to the native case accidentally. The paths in the sysroot corresponding to these are: /opt/poky/sysroots/HOST-pokysdk-linux/usr/bin /opt/poky/sysroots/HOST-pokysdk-linux/usr/bin/TARGET-poky-linux /opt/poky/sysroots/HOST-pokysdk-linux/usr/libexec/TARGET-poky-linux/gcc/TARGET-poky-linux/GCCVERSION/ and there are similar paths in a Poky build directory. I hope that helps clear things up a bit. Cheers, Richard ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 1/1] Make poky-qemu and related scripts work with arbitrary SDK locations 2010-12-09 15:00 ` Richard Purdie @ 2010-12-09 21:33 ` Scott Garman 0 siblings, 0 replies; 4+ messages in thread From: Scott Garman @ 2010-12-09 21:33 UTC (permalink / raw) To: Richard Purdie; +Cc: poky@yoctoproject.org On 12/09/2010 07:00 AM, Richard Purdie wrote: > On Tue, 2010-12-07 at 20:59 -0800, Scott Garman wrote: >> diff --git a/scripts/poky-find-native-sysroot b/scripts/poky-find-native-sysroot >> index d8002f9..2262294 100755 >> --- a/scripts/poky-find-native-sysroot >> +++ b/scripts/poky-find-native-sysroot >> diff --git a/scripts/poky-qemu b/scripts/poky-qemu >> index bc312e0..67af439 100755 >> --- a/scripts/poky-qemu >> +++ b/scripts/poky-qemu >> @@ -31,9 +31,9 @@ usage() { >> echo " serial - enables a serial console on /dev/ttyS0" >> echo "" >> echo "Examples:" >> - echo " $0 qemuarm" >> - echo " $0 qemux86-64 poky-image-sato ext3" >> - echo " $0 path/to/bzImage-qemux86.bin path/to/nfsrootdir/ serial" >> + echo " $MYNAME qemuarm" >> + echo " $MYNAME qemux86-64 poky-image-sato ext3" >> + echo " $MYNAME path/to/bzImage-qemux86.bin path/to/nfsrootdir/ serial" >> exit 1 >> } >> >> @@ -213,23 +213,29 @@ setup_tmpdir() { >> echo "before running this script">&2; >> exit 1; } >> >> - # We have bitbake in PATH, get TMPDIR and BUILD_SYS >> - # from the environment >> + # We have bitbake in PATH, get TMPDIR from bitbake >> TMPDIR=`bitbake -e | grep TMPDIR=\" | cut -d '=' -f2 | cut -d '"' -f2` >> - BUILD_SYS=`bitbake -e | grep BUILD_SYS=\" | cut -d '=' -f2 | cut -d '"' -f2` >> else >> - BUILD_ARCH=`uname -m` >> - BUILD_OS=`uname | tr '[A-Z]' '[a-z]'` >> - BUILD_SYS="$BUILD_ARCH-$BUILD_OS" >> TMPDIR=$BUILDDIR/tmp >> fi >> - if [ -z "$POKY_NATIVE_SYSROOT" ]; then >> - POKY_NATIVE_SYSROOT=$TMPDIR/sysroots/$BUILD_SYS >> - fi >> - CROSSPATH=$POKY_NATIVE_SYSROOT/usr/bin >> fi >> } > > Hmm, you remove CROSSPATH yet still reference it later. I think the code > has become confused. I'm going to merge the patch as it improves the > situation compared to how it is at the moment. I'll give some background > though: > > There are three things we really want to reference in PATH: > > a) The "native" or "nativesdk" tools > b) The "cross" tools, i.e. TARGET_PREFIX-gcc > c) The "cross" tools without the prefix, e.g. "gcc", replacing the > usual gcc you'd find in PATH. This last part is to allow distcc in a > image to use the compiler outside the emulation. > > The distcc thing did used to work but I doubt it does at the moment as I > think this has just been reduced to the native case accidentally. > > The paths in the sysroot corresponding to these are: > > /opt/poky/sysroots/HOST-pokysdk-linux/usr/bin > /opt/poky/sysroots/HOST-pokysdk-linux/usr/bin/TARGET-poky-linux > /opt/poky/sysroots/HOST-pokysdk-linux/usr/libexec/TARGET-poky-linux/gcc/TARGET-poky-linux/GCCVERSION/ > > and there are similar paths in a Poky build directory. > > I hope that helps clear things up a bit. Thanks Richard, that does clarify things. I will file a bug for this and address it soon. Scott -- Scott Garman Embedded Linux Distro Engineer - Yocto Project ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2010-12-09 21:33 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-12-08 5:13 [PATCH 0/1] Make poky-qemu and related scripts work with arbitrary SDK locations Scott Garman 2010-12-08 4:59 ` [PATCH 1/1] " Scott Garman 2010-12-09 15:00 ` Richard Purdie 2010-12-09 21:33 ` Scott Garman
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.