Skip to contentSkip to conversation

runqemu-extract-sdk: Fixes for RSS

PATCH In review brian avery 4 participants 7 messages Apr 4, 2017 – Apr 7, 2017

lore
Share & tools
lore
#0 lore raw

cover runqemu-extract-sdk: Fixes for RSS

RSS removed the "giant native sysroot" so now we need a modify how tools like runqemu and runqemu-extract-sdk find the native tools they need to run. This patch uses the result of meta-ide-support which has pseudo as well as tools like unfsd in it's usr/bin to run. Since the meta-ide-support make a usr/bin dir in tmp/work and rm_work sibsequently removes it, we exlude meta-ide-support from the rm_work set.

-brian

The following changes since commit eff56e4f0d59b1d965a68e4f009b7f07717b7edd:

bitbake: bitbake-user-manual: Fixed special character in -D output (2017-04-03 22:32:02 +0100)

are available in the git repository at:

git://git.yoctoproject.org/poky-contrib bavery/sadpseudo/bug11119
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=bavery/sadpseudo/bug11119

brian avery (2):
scripts: change way we find native tools (pseudo)
meta-ide-support: exclude this recipe from rm_work

 meta/recipes-core/meta/meta-ide-support.bb | 1 +
 scripts/oe-find-native-sysroot             | 8 ++++----
 2 files changed, 5 insertions(+), 4 deletions(-)

--
1.9.1

#1 lore raw

PATCH 1/2 scripts: change way we find native tools (pseudo)

oe-find-native-sysroot: Recipe Specific Sysroots have eliminated the large STAGING_DIR_NATIVE. Now, we will rely on the meta-ide-support sysroot that is what was populating the large STAGING_DIR_NATIVE in previous versions anyway. We now look for RECIPE_SYSROOT_NATIVE.

[YOCTO #11119]

---
 scripts/oe-find-native-sysroot | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
scripts/oe-find-native-sysroot +4 -4
index 13a5c46..3f4c29d 100755
@@ -2,7 +2,7 @@
 #
 # Find a native sysroot to use - either from an in-tree OE build or
 # from a toolchain installation. It then ensures the variable
-# $OECORE_NATIVE_SYSROOT is set to the sysroot's base directory, and sets 
+# $OECORE_NATIVE_SYSROOT is set to the sysroot's base directory, and sets
 # $PSEUDO to the path of the pseudo binary.
 #
 # This script is intended to be run within other scripts by source'ing
@@ -54,10 +54,10 @@ if [ "x$OECORE_NATIVE_SYSROOT" = "x" ]; then
                 exit 1
             fi
             touch conf/sanity.conf
-            OECORE_NATIVE_SYSROOT=`bitbake -e | grep ^STAGING_DIR_NATIVE | cut -d '"' -f2`
+            OECORE_NATIVE_SYSROOT=`bitbake -e meta-ide-support | grep ^RECIPE_SYSROOT_NATIVE | cut -d '"' -f2`
             rm -f conf/sanity.conf
         else
-            OECORE_NATIVE_SYSROOT=`bitbake -e | grep ^STAGING_DIR_NATIVE | cut -d '"' -f2`
+            OECORE_NATIVE_SYSROOT=`bitbake -e meta-ide-support | grep ^RECIPE_SYSROOT_NATIVE | cut -d '"' -f2`
         fi
     else
         echo "Error: Unable to locate bitbake command."
@@ -72,7 +72,7 @@ fi
 if [ "x$OECORE_NATIVE_SYSROOT" = "x" ]; then
     # This indicates that there was an error running bitbake -e that
     # the user needs to be informed of
-    echo "There was an error running bitbake to determine STAGING_DIR_NATIVE"
+    echo "There was an error running bitbake to determine RECIPE_SYSROOT_NATIVE"
     echo "Here is the output from bitbake -e"
     bitbake -e
     exit 1
Signature · 1 line
1.9.1
#6 lore raw

PATCH 2/2 meta-ide-support: exclude this recipe from rm_work

In reply to brian avery

The results of meta-ide-support are used by utilities like runqemu and runqemu-extract-sdk. Since the usr/bin that meta-ide-support creates is subsequently removed bu rm_work, we exclude this recipe from the rm_work list.

[YOCTO #11119]

---
 meta/recipes-core/meta/meta-ide-support.bb | 1 +
 1 file changed, 1 insertion(+)
meta/recipes-core/meta/meta-ide-support.bb +1 -0
index 1c4aded..0692ec8 100644
@@ -4,6 +4,7 @@ LICENSE = "MIT"
 
 DEPENDS = "virtual/libc gdb-cross-${TARGET_ARCH} qemu-native qemu-helper-native unfs3-native"
 PR = "r3"
+RM_WORK_EXCLUDE += "${PN}"
 
 inherit meta toolchain-scripts nopackages
 
Signature · 1 line
1.9.1
#2 lore raw

Re: [PATCH 1/2] scripts: change way we find native tools (pseudo)

In reply to brian avery
Quoted 4 lines · On Tue, 4 Apr 2017 15:22:10 -0700 brian avery <[email protected]> wrote:

oe-find-native-sysroot: Recipe Specific Sysroots have eliminated the large STAGING_DIR_NATIVE. Now, we will rely on the meta-ide-support sysroot that is what was populating the large STAGING_DIR_NATIVE in previous versions anyway. We now look for RECIPE_SYSROOT_NATIVE.

So far as I can tell, pseudo internals won't be affected, and this sounds reasonable to me.

-s

#3 lore raw

Re: [PATCH 1/2] scripts: change way we find native tools (pseudo)

In reply to brian avery

Hi Brian and RP,

This patch can't fix the problem of scripts/oe-run-native, it only can run the native tools which is depended by meta-ide-support, for example:

$ bitbake bmap-tools-native meta-ide-support
$ oe-run-native bmaptool --help # exmaple from dev-manual-start.xml

Error: Unable to find 'bmaptool' in native sysroot

I think that we need consider the patch that I had sent before:

git://git.openembedded.org/openembedded-core-contrib rbt/rssfix
http://cgit.openembedded.org/openembedded-core-contrib/log/?h=rbt/rssfix

Robert Yang (1):
oe-find-native-sysroot: work with RSS

Subject: [PATCH 1/1] oe-find-native-sysroot: work with RSS

The generic STAGING_DIR_NATIVE is gone since RSS, so when find OECORE_NATIVE_SYSROOT, the user has to specify which recipe's STAGING_DIR_NATIVE will be used as OECORE_NATIVE_SYSROOT.

* The usage is changed from ". oe-find-native-sysroot" to ". oe-find-native-sysroot <recipe>".
* The oe-run-native's usage has changed from "oe-run-native tool" to "oe-run-native native-recipe tool".

---
 scripts/oe-find-native-sysroot | 56 ++++++++++++++++++++++++++++--------------
 scripts/oe-run-native          | 15 +++++++----
 scripts/runqemu-export-rootfs  |  2 +-
 scripts/runqemu-extract-sdk    |  2 +-
 4 files changed, 49 insertions(+), 26 deletions(-)
scripts/oe-find-native-sysroot +28 -18
index 3f4c29da8a..59fe3f3118 100755
@@ -9,7 +9,7 @@
 # it, e.g:
 #
 # SYSROOT_SETUP_SCRIPT=`which oe-find-native-sysroot`
-# . $SYSROOT_SETUP_SCRIPT
+# . $SYSROOT_SETUP_SCRIPT <recipe>
 #
 # This script will terminate execution of your calling program unless
 # you set a variable $SKIP_STRICT_SYSROOT_CHECK to a non-empty string
@@ -30,8 +30,8 @@
 # with this program; if not, write to the Free Software Foundation, Inc.,
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
-if [ "$1" = '--help' -o "$1" = '-h' ] ; then
-    echo 'Usage: oe-find-native-sysroot [-h|--help]'
+if [ "$1" = '--help' -o "$1" = '-h' -o $# -ne 1 ] ; then
+    echo 'Usage: oe-find-native-sysroot <recipe> [-h|--help]'
     echo ''
     echo 'OpenEmbedded find-native-sysroot - helper script to set'
     echo 'environment variables OECORE_NATIVE_SYSROOT and PSEUDO'
@@ -39,11 +39,31 @@ if [ "$1" = '--help' -o "$1" = '-h' ] ; then
     echo 'executable binary'
     echo ''
     echo 'options:'
+    echo '  recipe              its STAGING_DIR_NATIVE is used as native sysroot'
     echo '  -h, --help          show this help message and exit'
     echo ''
     exit 2
 fi
 
+# Global vars
+BITBAKE_E=""
+OECORE_NATIVE_SYSROOT=""
+
+set_oe_native_sysroot(){
+    echo "Running bitbake -e $1"
+    BITBAKE_E="`bitbake -e $1`"
+    OECORE_NATIVE_SYSROOT=`echo "$BITBAKE_E" | grep ^STAGING_DIR_NATIVE | cut -d '"' -f2`
+
+    if [ "x$OECORE_NATIVE_SYSROOT" = "x" ]; then
+        # This indicates that there was an error running bitbake -e that
+        # the user needs to be informed of
+        echo "There was an error running bitbake to determine STAGING_DIR_NATIVE"
+        echo "Here is the output from bitbake -e $1"
+        echo "$BITBAKE_E"
+        exit 1
+    fi
+}
+
 if [ "x$OECORE_NATIVE_SYSROOT" = "x" ]; then
     BITBAKE=`which bitbake 2> /dev/null`
     if [ "x$BITBAKE" != "x" ]; then
@@ -54,10 +74,10 @@ if [ "x$OECORE_NATIVE_SYSROOT" = "x" ]; then
                 exit 1
             fi
             touch conf/sanity.conf
-            OECORE_NATIVE_SYSROOT=`bitbake -e meta-ide-support | grep ^RECIPE_SYSROOT_NATIVE | cut -d '"' -f2`
+            set_oe_native_sysroot $1
             rm -f conf/sanity.conf
         else
-            OECORE_NATIVE_SYSROOT=`bitbake -e meta-ide-support | grep ^RECIPE_SYSROOT_NATIVE | cut -d '"' -f2`
+            set_oe_native_sysroot $1
         fi
     else
         echo "Error: Unable to locate bitbake command."
@@ -69,21 +89,11 @@ if [ "x$OECORE_NATIVE_SYSROOT" = "x" ]; then
     fi
 fi
 
-if [ "x$OECORE_NATIVE_SYSROOT" = "x" ]; then
-    # This indicates that there was an error running bitbake -e that
-    # the user needs to be informed of
-    echo "There was an error running bitbake to determine RECIPE_SYSROOT_NATIVE"
-    echo "Here is the output from bitbake -e"
-    bitbake -e
-    exit 1
-fi
-
-# Set up pseudo command
-if [ ! -e "$OECORE_NATIVE_SYSROOT/usr/bin/pseudo" ]; then
-    echo "Error: Unable to find pseudo binary in $OECORE_NATIVE_SYSROOT/usr/bin/"
+if [ ! -e "$OECORE_NATIVE_SYSROOT/" ]; then
+    echo "Error: $OECORE_NATIVE_SYSROOT doesn't exist."
 
     if [ "x$OECORE_DISTRO_VERSION" = "x" ]; then
-        echo "Have you run 'bitbake meta-ide-support'?"
+        echo "Have you run 'bitbake $1 -caddto_recipe_sysroot'?"
     else
         echo "This shouldn't happen - something is wrong with your toolchain 

installation"
fi
@@ -92,4 +102,12 @@ if [ ! -e "$OECORE_NATIVE_SYSROOT/usr/bin/pseudo" ]; then
exit 1
fi
fi
-PSEUDO="$OECORE_NATIVE_SYSROOT/usr/bin/pseudo"
+
+# Set up pseudo command +pseudo="$OECORE_NATIVE_SYSROOT/usr/bin/pseudo"
+if [ -e "$pseudo" ]; then
+ echo "PSEUDO=$pseudo"
+ PSEUDO="$pseudo"
+else
+ echo "PSEUDO $pseudo is not found."
+fi

scripts/oe-run-native +8 -3
index f2453e705a..de3c02ed34 100755
@@ -22,34 +22,39 @@
 #
 
 if [ $# -lt 1 -o "$1" = '--help' -o "$1" = '-h' ] ; then
-    echo 'oe-run-native: error: the following arguments are required: <native tool>'
-    echo 'Usage: oe-run-native tool [parameters]'
+    echo 'oe-run-native: error: the following arguments are required: <native recipe> <native tool>'
+    echo 'Usage: oe-run-native native-recipe tool [parameters]'
     echo ''
     echo 'OpenEmbedded run-native - runs native tools'
     echo ''
     echo 'arguments:'
+    echo '  native-recipe       The recipe which provoides tool'
     echo '  tool                Native tool to run'
     echo ''
     exit 2
 fi
 
+native_recipe="$1"
+tool="$2"
+shift
+
 SYSROOT_SETUP_SCRIPT=`which oe-find-native-sysroot 2> /dev/null`
 if [ -z "$SYSROOT_SETUP_SCRIPT" ]; then
         echo "Error: Unable to find oe-find-native-sysroot script"
         exit 1
 fi
-. $SYSROOT_SETUP_SCRIPT
+. $SYSROOT_SETUP_SCRIPT $native_recipe
 
 OLD_PATH=$PATH
 
 # look for a tool only in native sysroot
 

PATH=$OECORE_NATIVE_SYSROOT/usr/bin:$OECORE_NATIVE_SYSROOT/bin:$OECORE_NATIVE_SYSROOT/usr/sbin:$OECORE_NATIVE_SYSROOT/sbin -tool=/usr/bin/which $1 2>/dev/null
+tool=/usr/bin/which $tool 2>/dev/null

if [ -n "$tool" ] ; then

     # add old path to allow usage of host tools
     PATH=$PATH:$OLD_PATH $@
 else
-    echo "Error: Unable to find '$1' in native sysroot"
+    echo "Error: Unable to find '$tool' in $PATH"
     exit 1
 fi
scripts/runqemu-export-rootfs +1 -1
index 7ebc07194d..c7992d8223 100755
@@ -44,7 +44,7 @@ if [ -z "$SYSROOT_SETUP_SCRIPT" ]; then
 	echo "Did you forget to source your build environment setup script?"
 	exit 1
 fi
-. $SYSROOT_SETUP_SCRIPT
+. $SYSROOT_SETUP_SCRIPT meta-ide-support
 
 if [ ! -e "$OECORE_NATIVE_SYSROOT/usr/bin/unfsd" ]; then
 	echo "Error: Unable to find unfsd binary in $OECORE_NATIVE_SYSROOT/usr/bin/"
scripts/runqemu-extract-sdk +1 -1
index 32ddd485b6..2a0dd50e0e 100755
@@ -35,7 +35,7 @@ if [ -z "$SYSROOT_SETUP_SCRIPT" ]; then
     echo "Did you forget to source your build system environment setup script?"
     exit 1
 fi
-. $SYSROOT_SETUP_SCRIPT
+. $SYSROOT_SETUP_SCRIPT meta-ide-support
 PSEUDO_OPTS="-P $OECORE_NATIVE_SYSROOT/usr"
 
 ROOTFS_TARBALL=$1

// Robert

Quoted 48 lines · brian avery

oe-find-native-sysroot: Recipe Specific Sysroots have eliminated the large STAGING_DIR_NATIVE. Now, we will rely on the meta-ide-support sysroot that is what was populating the large STAGING_DIR_NATIVE in previous versions anyway. We now look for RECIPE_SYSROOT_NATIVE.

[YOCTO #11119]

---
 scripts/oe-find-native-sysroot | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
scripts/oe-find-native-sysroot +4 -4
index 13a5c46..3f4c29d 100755
@@ -2,7 +2,7 @@
 #
 # Find a native sysroot to use - either from an in-tree OE build or
 # from a toolchain installation. It then ensures the variable
-# $OECORE_NATIVE_SYSROOT is set to the sysroot's base directory, and sets
+# $OECORE_NATIVE_SYSROOT is set to the sysroot's base directory, and sets
 # $PSEUDO to the path of the pseudo binary.
 #
 # This script is intended to be run within other scripts by source'ing
@@ -54,10 +54,10 @@ if [ "x$OECORE_NATIVE_SYSROOT" = "x" ]; then
                 exit 1
             fi
             touch conf/sanity.conf
-            OECORE_NATIVE_SYSROOT=`bitbake -e | grep ^STAGING_DIR_NATIVE | cut -d '"' -f2`
+            OECORE_NATIVE_SYSROOT=`bitbake -e meta-ide-support | grep ^RECIPE_SYSROOT_NATIVE | cut -d '"' -f2`
             rm -f conf/sanity.conf
         else
-            OECORE_NATIVE_SYSROOT=`bitbake -e | grep ^STAGING_DIR_NATIVE | cut -d '"' -f2`
+            OECORE_NATIVE_SYSROOT=`bitbake -e meta-ide-support | grep ^RECIPE_SYSROOT_NATIVE | cut -d '"' -f2`
         fi
     else
         echo "Error: Unable to locate bitbake command."
@@ -72,7 +72,7 @@ fi
 if [ "x$OECORE_NATIVE_SYSROOT" = "x" ]; then
     # This indicates that there was an error running bitbake -e that
     # the user needs to be informed of
-    echo "There was an error running bitbake to determine STAGING_DIR_NATIVE"
+    echo "There was an error running bitbake to determine RECIPE_SYSROOT_NATIVE"
     echo "Here is the output from bitbake -e"
     bitbake -e
     exit 1
#4 lore raw

Re: [PATCH 1/2] scripts: change way we find native tools (pseudo)

Hi Robert,

I was definitely looking at only the extract-rootfs issue and didn't remember seeing your above patch. I agree that we need a broader solution than the one I did. I tried applying yours but had some issues. Your patch did fix the runqemu-extract-rootfs, but not when I had INHERIT+= " rm_work ". Also, I had trouble running the oe-run-native script. It seems like the help is reversed from what order it is expecting? I may be missing something, it's getting late; but I'll look at it tomoro and see if I can't expand on your patch for a more generic solution. Issues from the run below. ty,
b
an intel employee

$ bitbake bmap-tools-native -caddto_recipe_sysroot
$ oe-run-native bmap-tools-native bmaptool

Running bitbake -e bmaptool

ERROR: Nothing PROVIDES 'bmaptool'. Close matches:

bmap-tools

mtools

There was an error running bitbake to determine STAGING_DIR_NATIVE

Here is the output from bitbake -e bmaptool

WARNING: Host distribution "ubuntu-14.04" has not been validated with this version of the build system; you may possibly experience unexpected failures. It is recommended that you use a tested distribution. Loading cache...done. Loaded 1299 entries from dependency cache. Summary: There was 1 WARNING message shown. Summary: There was 1 ERROR message shown, returning a non-zero exit code.

$ oe-run-native bmaptool bmap-tools-native

Running bitbake -e bmap-tools-native

PSEUDO …/tmp/work/x86_64-linux/bmap-tools-native/3.2-r0/recipe-sysroot-native/usr/bin/pseudo is not found.

Error: Unable to find '' in .../tmp/work/x86_64-linux/bmap-tools-native/3.2-r0/recipe-sysroot-native/usr/bin:.../tmp/work/x86_64-linux/bmap-tools-native/3.2-r0/recipe-sysroot-native/bin:.../tmp/work/x86_64-linux/bmap-tools-native/3.2-r0/recipe-sysroot-native/usr/sbin:.../tmp/work/x86_64-linux/bmap-tools-native/3.2-r0/recipe-sysroot-native/sbin

bavery@bavery-WS-DESK:...$ oe-run-native

oe-run-native: error: the following arguments are required: <native recipe> <native tool>

Usage: oe-run-native native-recipe tool [parameters]

OpenEmbedded run-native - runs native tools

arguments:

native-recipe The recipe which provoides tool

tool Native tool to run

Quoted 307 lines · Robert Yang

Hi Brian and RP,

This patch can't fix the problem of scripts/oe-run-native, it only can run the native tools which is depended by meta-ide-support, for example:

$ bitbake bmap-tools-native meta-ide-support
$ oe-run-native bmaptool --help # exmaple from dev-manual-start.xml

Error: Unable to find 'bmaptool' in native sysroot

I think that we need consider the patch that I had sent before:

git://git.openembedded.org/openembedded-core-contrib rbt/rssfix
http://cgit.openembedded.org/openembedded-core-contrib/log/?h=rbt/rssfix

Robert Yang (1):
oe-find-native-sysroot: work with RSS

Subject: [PATCH 1/1] oe-find-native-sysroot: work with RSS

The generic STAGING_DIR_NATIVE is gone since RSS, so when find OECORE_NATIVE_SYSROOT, the user has to specify which recipe's STAGING_DIR_NATIVE will be used as OECORE_NATIVE_SYSROOT.

* The usage is changed from ". oe-find-native-sysroot" to ". oe-find-native-sysroot <recipe>".
* The oe-run-native's usage has changed from "oe-run-native tool" to "oe-run-native native-recipe tool".

---
 scripts/oe-find-native-sysroot | 56 ++++++++++++++++++++++++++++--
------------
 scripts/oe-run-native          | 15 +++++++----
 scripts/runqemu-export-rootfs  |  2 +-
 scripts/runqemu-extract-sdk    |  2 +-
 4 files changed, 49 insertions(+), 26 deletions(-)
scripts/oe-find-native-sysro renamed from scripts/oe-find-native-sysroot +0 -0

ot
index 3f4c29da8a..59fe3f3118 100755

scripts/oe-find-native-sysroot +4 -3
@@ -9,7 +9,7 @@
 # it, e.g:
 #
 # SYSROOT_SETUP_SCRIPT=`which oe-find-native-sysroot`
-# . $SYSROOT_SETUP_SCRIPT
+# . $SYSROOT_SETUP_SCRIPT <recipe>
 #
 # This script will terminate execution of your calling program unless
 # you set a variable $SKIP_STRICT_SYSROOT_CHECK to a non-empty string
@@ -30,8 +30,8 @@
 # with this program; if not, write to the Free Software Foundation, Inc.,
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
-if [ "$1" = '--help' -o "$1" = '-h' ] ; then
-    echo 'Usage: oe-find-native-sysroot [-h|--help]'
+if [ "$1" = '--help' -o "$1" = '-h' -o $# -ne 1 ] ; then
+    echo 'Usage: oe-find-native-sysroot <recipe> [-h|--help]'
     echo ''
     echo 'OpenEmbedded find-native-sysroot - helper script to set'
     echo 'environment variables OECORE_NATIVE_SYSROOT and PSEUDO'
@@ -39,11 +39,31 @@ if [ "$1" = '--help' -o "$1" = '-h' ] ; then
     echo 'executable binary'
     echo ''
     echo 'options:'
+    echo '  recipe              its STAGING_DIR_NATIVE is used as native

sysroot'
echo ' -h, --help show this help message and exit'
echo ''
exit 2
fi

scripts/oe-find-native-sysroot +8 -0
+# Global vars
+BITBAKE_E=""
+OECORE_NATIVE_SYSROOT=""
+
+set_oe_native_sysroot(){
+    echo "Running bitbake -e $1"
+    BITBAKE_E="`bitbake -e $1`"
+    OECORE_NATIVE_SYSROOT=`echo "$BITBAKE_E" | grep ^STAGING_DIR_NATIVE |

cut -d '"' -f2`

scripts/oe-find-native-sysroot +5 -0
+
+    if [ "x$OECORE_NATIVE_SYSROOT" = "x" ]; then
+        # This indicates that there was an error running bitbake -e that
+        # the user needs to be informed of
+        echo "There was an error running bitbake to determine

STAGING_DIR_NATIVE"

scripts/oe-find-native-sysroot +6 -1
+        echo "Here is the output from bitbake -e $1"
+        echo "$BITBAKE_E"
+        exit 1
+    fi
+}
+
 if [ "x$OECORE_NATIVE_SYSROOT" = "x" ]; then
     BITBAKE=`which bitbake 2> /dev/null`
     if [ "x$BITBAKE" != "x" ]; then
@@ -54,10 +74,10 @@ if [ "x$OECORE_NATIVE_SYSROOT" = "x" ]; then
                 exit 1
             fi
             touch conf/sanity.conf
-            OECORE_NATIVE_SYSROOT=`bitbake -e meta-ide-support | grep

^RECIPE_SYSROOT_NATIVE | cut -d '"' -f2`

scripts/oe-find-native-sysroot +1 -1
+            set_oe_native_sysroot $1
             rm -f conf/sanity.conf
         else
-            OECORE_NATIVE_SYSROOT=`bitbake -e meta-ide-support | grep

^RECIPE_SYSROOT_NATIVE | cut -d '"' -f2`

scripts/oe-find-native-sysroot +1 -4
+            set_oe_native_sysroot $1
         fi
     else
         echo "Error: Unable to locate bitbake command."
@@ -69,21 +89,11 @@ if [ "x$OECORE_NATIVE_SYSROOT" = "x" ]; then
     fi
 fi
 
-if [ "x$OECORE_NATIVE_SYSROOT" = "x" ]; then
-    # This indicates that there was an error running bitbake -e that
-    # the user needs to be informed of
-    echo "There was an error running bitbake to determine

RECIPE_SYSROOT_NATIVE"

scripts/oe-find-native-sysroot +0 -8
-    echo "Here is the output from bitbake -e"
-    bitbake -e
-    exit 1
-fi
-
-# Set up pseudo command
-if [ ! -e "$OECORE_NATIVE_SYSROOT/usr/bin/pseudo" ]; then
-    echo "Error: Unable to find pseudo binary in

$OECORE_NATIVE_SYSROOT/usr/bin/"

scripts/oe-find-native-sysroot +3 -1
+if [ ! -e "$OECORE_NATIVE_SYSROOT/" ]; then
+    echo "Error: $OECORE_NATIVE_SYSROOT doesn't exist."
 
     if [ "x$OECORE_DISTRO_VERSION" = "x" ]; then
-        echo "Have you run 'bitbake meta-ide-support'?"
+        echo "Have you run 'bitbake $1 -caddto_recipe_sysroot'?"
     else
         echo "This shouldn't happen - something is wrong with your

toolchain installation"
fi

scripts/oe-find-native-sysroot +0 -0
@@ -92,4 +102,12 @@ if [ ! -e "$OECORE_NATIVE_SYSROOT/usr/bin/pseudo" ];

then
exit 1
fi
fi

scripts/oe-find-native-sysroot +9 -1
-PSEUDO="$OECORE_NATIVE_SYSROOT/usr/bin/pseudo"
+
+# Set up pseudo command
+pseudo="$OECORE_NATIVE_SYSROOT/usr/bin/pseudo"
+if [ -e "$pseudo" ]; then
+    echo "PSEUDO=$pseudo"
+    PSEUDO="$pseudo"
+else
+    echo "PSEUDO $pseudo is not found."
+fi
scripts/oe-run-native +0 -1
index f2453e705a..de3c02ed34 100755
@@ -22,34 +22,39 @@
 #
 
 if [ $# -lt 1 -o "$1" = '--help' -o "$1" = '-h' ] ; then
-    echo 'oe-run-native: error: the following arguments are required:

<native tool>'

scripts/oe-run-native +1 -1
-    echo 'Usage: oe-run-native tool [parameters]'
+    echo 'oe-run-native: error: the following arguments are required:

<native recipe> <native tool>'

scripts/oe-run-native +7 -1
+    echo 'Usage: oe-run-native native-recipe tool [parameters]'
     echo ''
     echo 'OpenEmbedded run-native - runs native tools'
     echo ''
     echo 'arguments:'
+    echo '  native-recipe       The recipe which provoides tool'
     echo '  tool                Native tool to run'
     echo ''
     exit 2
 fi
 
+native_recipe="$1"
+tool="$2"
+shift
+
 SYSROOT_SETUP_SCRIPT=`which oe-find-native-sysroot 2> /dev/null`
 if [ -z "$SYSROOT_SETUP_SCRIPT" ]; then
         echo "Error: Unable to find oe-find-native-sysroot script"
         exit 1
 fi
-. $SYSROOT_SETUP_SCRIPT
+. $SYSROOT_SETUP_SCRIPT $native_recipe
 
 OLD_PATH=$PATH
 
 # look for a tool only in native sysroot

PATH=$OECORE_NATIVE_SYSROOT/usr/bin:$OECORE_NATIVE_SYSROOT/ bin:$OECORE_NATIVE_SYSROOT/usr/sbin:$OECORE_NATIVE_SYSROOT/sbin

scripts/oe-run-native +2 -2
-tool=`/usr/bin/which $1 2>/dev/null`
+tool=`/usr/bin/which $tool 2>/dev/null`
 
 if [ -n "$tool" ] ; then
     # add old path to allow usage of host tools
     PATH=$PATH:$OLD_PATH $@
 else
-    echo "Error: Unable to find '$1' in native sysroot"
+    echo "Error: Unable to find '$tool' in $PATH"
     exit 1
 fi
scripts/runqemu-export-rootfs +0 -0
index 7ebc07194d..c7992d8223 100755
@@ -44,7 +44,7 @@ if [ -z "$SYSROOT_SETUP_SCRIPT" ]; then
        echo "Did you forget to source your build environment setup

script?"
exit 1
fi
-. $SYSROOT_SETUP_SCRIPT
+. $SYSROOT_SETUP_SCRIPT meta-ide-support

if [ ! -e "$OECORE_NATIVE_SYSROOT/usr/bin/unfsd" ]; then
echo "Error: Unable to find unfsd binary in
$OECORE_NATIVE_SYSROOT/usr/bin/"

scripts/runqemu-extract-sdk +0 -0
index 32ddd485b6..2a0dd50e0e 100755
@@ -35,7 +35,7 @@ if [ -z "$SYSROOT_SETUP_SCRIPT" ]; then
     echo "Did you forget to source your build system environment setup

script?"
exit 1
fi
-. $SYSROOT_SETUP_SCRIPT
+. $SYSROOT_SETUP_SCRIPT meta-ide-support
PSEUDO_OPTS="-P $OECORE_NATIVE_SYSROOT/usr"

ROOTFS_TARBALL=$1

// Robert

Quoted 55 lines · brian avery

oe-find-native-sysroot: Recipe Specific Sysroots have eliminated the large STAGING_DIR_NATIVE. Now, we will rely on the meta-ide-support sysroot that is what was populating the large STAGING_DIR_NATIVE in previous versions anyway. We now look for RECIPE_SYSROOT_NATIVE.

[YOCTO #11119]

---
 scripts/oe-find-native-sysroot | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
scripts/oe-find-native-sysroot +1 -2
index 13a5c46..3f4c29d 100755
@@ -2,7 +2,7 @@
 #
 # Find a native sysroot to use - either from an in-tree OE build or
 # from a toolchain installation. It then ensures the variable
-# $OECORE_NATIVE_SYSROOT is set to the sysroot's base directory, and sets
+# $OECORE_NATIVE_SYSROOT is set to the sysroot's base directory, and sets
 # $PSEUDO to the path of the pseudo binary.
 #
 # This script is intended to be run within other scripts by source'ing
@@ -54,10 +54,10 @@ if [ "x$OECORE_NATIVE_SYSROOT" = "x" ]; then
                 exit 1
             fi
             touch conf/sanity.conf
-            OECORE_NATIVE_SYSROOT=`bitbake -e | grep ^STAGING_DIR_NATIVE

| cut -d '"' -f2`
+ OECORE_NATIVE_SYSROOT=`bitbake -e meta-ide-support | grep
^RECIPE_SYSROOT_NATIVE | cut -d '"' -f2`
rm -f conf/sanity.conf
else
- OECORE_NATIVE_SYSROOT=`bitbake -e | grep ^STAGING_DIR_NATIVE
| cut -d '"' -f2`
+ OECORE_NATIVE_SYSROOT=`bitbake -e meta-ide-support | grep
^RECIPE_SYSROOT_NATIVE | cut -d '"' -f2`
fi
else
echo "Error: Unable to locate bitbake command."

scripts/oe-find-native-sysroot +0 -1
@@ -72,7 +72,7 @@ fi
 if [ "x$OECORE_NATIVE_SYSROOT" = "x" ]; then
     # This indicates that there was an error running bitbake -e that
     # the user needs to be informed of
-    echo "There was an error running bitbake to determine

STAGING_DIR_NATIVE"
+ echo "There was an error running bitbake to determine
RECIPE_SYSROOT_NATIVE"
echo "Here is the output from bitbake -e"
bitbake -e
exit 1

Quoted 1 line

--

_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

#5 lore raw

Re: [PATCH 1/2] scripts: change way we find native tools (pseudo)

Quoted 15 lines · Brian Avery

Hi Robert,

I was definitely looking at only the extract-rootfs issue and didn't remember seeing your above patch. I agree that we need a broader solution than the one I did. I tried applying yours but had some issues. Your patch did fix the runqemu-extract-rootfs, but not when I had INHERIT+= " rm_work ". Also, I had trouble running the oe-run-native script. It seems like the help is reversed from what order it is expecting? I may be missing something, it's getting late; but I'll look at it tomoro and see if I can't expand on your patch for a more generic solution. Issues from the run below.
ty,
b
an intel employee

Quoted 3 lines
$ bitbake bmap-tools-native -caddto_recipe_sysroot
$ oe-run-native bmap-tools-native bmaptool

That's odd, it is the right order as the help text shows, it works well for me. Maybe he/you can try to add "set -x" in the recipe to see what happend.

$ bitbake bmap-tools-native -caddto_recipe_sysroot
$ oe-run-native bmap-tools-native bmaptool
Running bitbake -e bmap-tools-native
PSEUDO /buildarea/lyang1/test_q2/tmp/work/x86_64-linux/bmap-tools-native/3.2-r0/recipe-sysroot-native/usr/bin/pseudo is not found.
usage: bmaptool [-h] [--version] [-q] [-d] {create,copy} ...
bmaptool: error: too few arguments

// Robert

Quoted 360 lines

Running bitbake -e bmaptool

ERROR: Nothing PROVIDES 'bmaptool'. Close matches:

bmap-tools

mtools

There was an error running bitbake to determine STAGING_DIR_NATIVE

Here is the output from bitbake -e bmaptool

WARNING: Host distribution "ubuntu-14.04" has not been validated with this version of the build system; you may possibly experience unexpected failures. It is recommended that you use a tested distribution. Loading cache...done. Loaded 1299 entries from dependency cache. Summary: There was 1 WARNING message shown.
Summary: There was 1 ERROR message shown, returning a non-zero exit code.

$ oe-run-native bmaptool bmap-tools-native

Running bitbake -e bmap-tools-native

PSEUDO …/tmp/work/x86_64-linux/bmap-tools-native/3.2-r0/recipe-sysroot-native/usr/bin/pseudo is not found.

Error: Unable to find '' in .../tmp/work/x86_64-linux/bmap-tools-native/3.2-r0/recipe-sysroot-native/usr/bin:.../tmp/work/x86_64-linux/bmap-tools-native/3.2-r0/recipe-sysroot-native/bin:.../tmp/work/x86_64-linux/bmap-tools-native/3.2-r0/recipe-sysroot-native/usr/sbin:.../tmp/work/x86_64-linux/bmap-tools-native/3.2-r0/recipe-sysroot-native/sbin

bavery@bavery-WS-DESK:...$ oe-run-native

oe-run-native: error: the following arguments are required: <native recipe> <native tool>

Usage: oe-run-native native-recipe tool [parameters]

OpenEmbedded run-native - runs native tools

arguments:

native-recipe The recipe which provoides tool

tool Native tool to run

On Thu, Apr 6, 2017 at 3:26 AM, Robert Yang <[email protected] <mailto:[email protected]>> wrote:

Hi Brian and RP,

This patch can't fix the problem of scripts/oe-run-native, it only can run the native tools which is depended by meta-ide-support, for example:

$ bitbake bmap-tools-native meta-ide-support
$ oe-run-native bmaptool --help # exmaple from dev-manual-start.xml

Error: Unable to find 'bmaptool' in native sysroot

I think that we need consider the patch that I had sent before:

git://git.openembedded.org/openembedded-core-contrib
<http://git.openembedded.org/openembedded-core-contrib> rbt/rssfix
http://cgit.openembedded.org/openembedded-core-contrib/log/?h=rbt/rssfix
<http://cgit.openembedded.org/openembedded-core-contrib/log/?h=rbt/rssfix>

Robert Yang (1):
oe-find-native-sysroot: work with RSS

Subject: [PATCH 1/1] oe-find-native-sysroot: work with RSS

The generic STAGING_DIR_NATIVE is gone since RSS, so when find OECORE_NATIVE_SYSROOT, the user has to specify which recipe's STAGING_DIR_NATIVE will be used as OECORE_NATIVE_SYSROOT.

* The usage is changed from ". oe-find-native-sysroot" to ". oe-find-native-sysroot <recipe>".
* The oe-run-native's usage has changed from "oe-run-native tool" to "oe-run-native native-recipe tool".

<mailto:[email protected]>>
---
scripts/oe-find-native-sysroot | 56 ++++++++++++++++++++++++++++--------------
scripts/oe-run-native | 15 +++++++----
scripts/runqemu-export-rootfs | 2 +-
scripts/runqemu-extract-sdk | 2 +-
4 files changed, 49 insertions(+), 26 deletions(-)

diff --git a/scripts/oe-find-native-sysroot b/scripts/oe-find-native-sysroot index 3f4c29da8a..59fe3f3118 100755
--- a/scripts/oe-find-native-sysroot
+++ b/scripts/oe-find-native-sysroot
@@ -9,7 +9,7 @@
# it, e.g:
#
# SYSROOT_SETUP_SCRIPT=which oe-find-native-sysroot
-# . $SYSROOT_SETUP_SCRIPT
+# . $SYSROOT_SETUP_SCRIPT <recipe>
#
# This script will terminate execution of your calling program unless # you set a variable $SKIP_STRICT_SYSROOT_CHECK to a non-empty string
@@ -30,8 +30,8 @@
# with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

-if [ "$1" = '--help' -o "$1" = '-h' ] ; then
- echo 'Usage: oe-find-native-sysroot [-h|--help]'
+if [ "$1" = '--help' -o "$1" = '-h' -o $# -ne 1 ] ; then
+ echo 'Usage: oe-find-native-sysroot <recipe> [-h|--help]'
echo ''
echo 'OpenEmbedded find-native-sysroot - helper script to set' echo 'environment variables OECORE_NATIVE_SYSROOT and PSEUDO'
@@ -39,11 +39,31 @@ if [ "$1" = '--help' -o "$1" = '-h' ] ; then
echo 'executable binary'
echo ''
echo 'options:'
+ echo ' recipe its STAGING_DIR_NATIVE is used as native
sysroot'
echo ' -h, --help show this help message and exit'
echo ''
exit 2
fi

+# Global vars
+BITBAKE_E=""
+OECORE_NATIVE_SYSROOT=""
+
+set_oe_native_sysroot(){
+ echo "Running bitbake -e $1"
+ BITBAKE_E="bitbake -e $1"
+ OECORE_NATIVE_SYSROOT=`echo "$BITBAKE_E" | grep ^STAGING_DIR_NATIVE |
cut -d '"' -f2`
+
+ if [ "x$OECORE_NATIVE_SYSROOT" = "x" ]; then
+ # This indicates that there was an error running bitbake -e that
+ # the user needs to be informed of
+ echo "There was an error running bitbake to determine
STAGING_DIR_NATIVE"
+ echo "Here is the output from bitbake -e $1"
+ echo "$BITBAKE_E"
+ exit 1
+ fi
+}
+
if [ "x$OECORE_NATIVE_SYSROOT" = "x" ]; then
BITBAKE=which bitbake 2> /dev/null
if [ "x$BITBAKE" != "x" ]; then
@@ -54,10 +74,10 @@ if [ "x$OECORE_NATIVE_SYSROOT" = "x" ]; then
exit 1
fi
touch conf/sanity.conf
- OECORE_NATIVE_SYSROOT=`bitbake -e meta-ide-support | grep
^RECIPE_SYSROOT_NATIVE | cut -d '"' -f2`
+ set_oe_native_sysroot $1
rm -f conf/sanity.conf
else
- OECORE_NATIVE_SYSROOT=`bitbake -e meta-ide-support | grep
^RECIPE_SYSROOT_NATIVE | cut -d '"' -f2`
+ set_oe_native_sysroot $1
fi
else
echo "Error: Unable to locate bitbake command."
@@ -69,21 +89,11 @@ if [ "x$OECORE_NATIVE_SYSROOT" = "x" ]; then
fi
fi

-if [ "x$OECORE_NATIVE_SYSROOT" = "x" ]; then
- # This indicates that there was an error running bitbake -e that
- # the user needs to be informed of
- echo "There was an error running bitbake to determine
RECIPE_SYSROOT_NATIVE"
- echo "Here is the output from bitbake -e"
- bitbake -e
- exit 1
-fi
-
-# Set up pseudo command
-if [ ! -e "$OECORE_NATIVE_SYSROOT/usr/bin/pseudo" ]; then
- echo "Error: Unable to find pseudo binary in
$OECORE_NATIVE_SYSROOT/usr/bin/"
+if [ ! -e "$OECORE_NATIVE_SYSROOT/" ]; then
+ echo "Error: $OECORE_NATIVE_SYSROOT doesn't exist."

if [ "x$OECORE_DISTRO_VERSION" = "x" ]; then
- echo "Have you run 'bitbake meta-ide-support'?"
+ echo "Have you run 'bitbake $1 -caddto_recipe_sysroot'?"
else
echo "This shouldn't happen - something is wrong with your
toolchain installation"
fi
@@ -92,4 +102,12 @@ if [ ! -e "$OECORE_NATIVE_SYSROOT/usr/bin/pseudo" ]; then
exit 1
fi
fi
-PSEUDO="$OECORE_NATIVE_SYSROOT/usr/bin/pseudo"
+
+# Set up pseudo command +pseudo="$OECORE_NATIVE_SYSROOT/usr/bin/pseudo"
+if [ -e "$pseudo" ]; then
+ echo "PSEUDO=$pseudo"
+ PSEUDO="$pseudo"
+else
+ echo "PSEUDO $pseudo is not found."
+fi
diff --git a/scripts/oe-run-native b/scripts/oe-run-native
index f2453e705a..de3c02ed34 100755
--- a/scripts/oe-run-native
+++ b/scripts/oe-run-native
@@ -22,34 +22,39 @@
#

if [ $# -lt 1 -o "$1" = '--help' -o "$1" = '-h' ] ; then
- echo 'oe-run-native: error: the following arguments are required:
<native tool>'
- echo 'Usage: oe-run-native tool [parameters]'
+ echo 'oe-run-native: error: the following arguments are required:
<native recipe> <native tool>'
+ echo 'Usage: oe-run-native native-recipe tool [parameters]'
echo ''
echo 'OpenEmbedded run-native - runs native tools' echo ''
echo 'arguments:'
+ echo ' native-recipe The recipe which provoides tool'
echo ' tool Native tool to run'
echo ''
exit 2
fi

+native_recipe="$1"
+tool="$2"
+shift
+
SYSROOT_SETUP_SCRIPT=which oe-find-native-sysroot 2> /dev/null if [ -z "$SYSROOT_SETUP_SCRIPT" ]; then
echo "Error: Unable to find oe-find-native-sysroot script" exit 1
fi
-. $SYSROOT_SETUP_SCRIPT
+. $SYSROOT_SETUP_SCRIPT $native_recipe

OLD_PATH=$PATH

# look for a tool only in native sysroot

PATH=$OECORE_NATIVE_SYSROOT/usr/bin:$OECORE_NATIVE_SYSROOT/bin:$OECORE_NATIVE_SYSROOT/usr/sbin:$OECORE_NATIVE_SYSROOT/sbin -tool=/usr/bin/which $1 2>/dev/null
+tool=/usr/bin/which $tool 2>/dev/null

if [ -n "$tool" ] ; then
# add old path to allow usage of host tools PATH=$PATH:$OLD_PATH $@
else
- echo "Error: Unable to find '$1' in native sysroot"
+ echo "Error: Unable to find '$tool' in $PATH"
exit 1
fi
diff --git a/scripts/runqemu-export-rootfs b/scripts/runqemu-export-rootfs index 7ebc07194d..c7992d8223 100755
--- a/scripts/runqemu-export-rootfs
+++ b/scripts/runqemu-export-rootfs
@@ -44,7 +44,7 @@ if [ -z "$SYSROOT_SETUP_SCRIPT" ]; then
echo "Did you forget to source your build environment setup script?" exit 1
fi
-. $SYSROOT_SETUP_SCRIPT
+. $SYSROOT_SETUP_SCRIPT meta-ide-support

if [ ! -e "$OECORE_NATIVE_SYSROOT/usr/bin/unfsd" ]; then
echo "Error: Unable to find unfsd binary in
$OECORE_NATIVE_SYSROOT/usr/bin/"
diff --git a/scripts/runqemu-extract-sdk b/scripts/runqemu-extract-sdk index 32ddd485b6..2a0dd50e0e 100755
--- a/scripts/runqemu-extract-sdk
+++ b/scripts/runqemu-extract-sdk
@@ -35,7 +35,7 @@ if [ -z "$SYSROOT_SETUP_SCRIPT" ]; then
echo "Did you forget to source your build system environment setup script?" exit 1
fi
-. $SYSROOT_SETUP_SCRIPT
+. $SYSROOT_SETUP_SCRIPT meta-ide-support
PSEUDO_OPTS="-P $OECORE_NATIVE_SYSROOT/usr"

ROOTFS_TARBALL=$1

// Robert

On 04/05/2017 06:22 AM, brian avery wrote:

oe-find-native-sysroot: Recipe Specific Sysroots have eliminated the large STAGING_DIR_NATIVE. Now, we will rely on the meta-ide-support sysroot that is what was populating the large STAGING_DIR_NATIVE in previous versions anyway. We now look for RECIPE_SYSROOT_NATIVE.

[YOCTO #11119]

<mailto:[email protected]>>
---
scripts/oe-find-native-sysroot | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/scripts/oe-find-native-sysroot b/scripts/oe-find-native-sysroot index 13a5c46..3f4c29d 100755
--- a/scripts/oe-find-native-sysroot
+++ b/scripts/oe-find-native-sysroot
@@ -2,7 +2,7 @@
#
# Find a native sysroot to use - either from an in-tree OE build or # from a toolchain installation. It then ensures the variable
-# $OECORE_NATIVE_SYSROOT is set to the sysroot's base directory, and sets +# $OECORE_NATIVE_SYSROOT is set to the sysroot's base directory, and sets
# $PSEUDO to the path of the pseudo binary.
#
# This script is intended to be run within other scripts by source'ing
@@ -54,10 +54,10 @@ if [ "x$OECORE_NATIVE_SYSROOT" = "x" ]; then
exit 1
fi
touch conf/sanity.conf
- OECORE_NATIVE_SYSROOT=`bitbake -e | grep
^STAGING_DIR_NATIVE | cut -d '"' -f2`
+ OECORE_NATIVE_SYSROOT=`bitbake -e meta-ide-support | grep
^RECIPE_SYSROOT_NATIVE | cut -d '"' -f2`
rm -f conf/sanity.conf
else
- OECORE_NATIVE_SYSROOT=`bitbake -e | grep
^STAGING_DIR_NATIVE | cut -d '"' -f2`
+ OECORE_NATIVE_SYSROOT=`bitbake -e meta-ide-support | grep
^RECIPE_SYSROOT_NATIVE | cut -d '"' -f2`
fi
else
echo "Error: Unable to locate bitbake command."
@@ -72,7 +72,7 @@ fi
if [ "x$OECORE_NATIVE_SYSROOT" = "x" ]; then
# This indicates that there was an error running bitbake -e that # the user needs to be informed of
- echo "There was an error running bitbake to determine
STAGING_DIR_NATIVE"
+ echo "There was an error running bitbake to determine
RECIPE_SYSROOT_NATIVE"
echo "Here is the output from bitbake -e"
bitbake -e
exit 1

--
_______________________________________________
Openembedded-core mailing list [email protected] <mailto:[email protected]>
http://lists.openembedded.org/mailman/listinfo/openembedded-core
<http://lists.openembedded.org/mailman/listinfo/openembedded-core>