Skip to contentSkip to conversation

Fix TMPDIR usage in scripts v3

PATCH Applied Paul Eggleton 2 participants 4 messages Sep 28, 2011

lore
Share & tools
lore
#0 lore raw

cover Fix TMPDIR usage in scripts v3

Fix TMPDIR external environment variable usage within our scripts which is a problem on OpenSUSE within an X session (see Yocto bug #1530) by using OE_TMPDIR from the external environment instead.

Note that this will require changes to autobuilder scripts that use a TMPDIR environment variable when calling these scripts - they should now set OE_TMPDIR instead (if versions with and without this change need to be run on the same system, then setting both variables will cause no harm).

Since v1, fix pass-through references to TMPDIR in the qemuimage-testlib script.

Since v2, fix setting of OE_TMPDIR in classes/imagetest-qemu.bbclass.

The following changes since commit e0908b7b080c0d861a1b3ccb2185b9281b10fa1a:

tables: remove it as obsolete recipe (2011-09-28 11:47:24 +0100)

are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib paule/scripts-tmpdir
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=paule/scripts-tmpdir

Paul Eggleton (2):
scripts: use OE_TMPDIR instead of TMPDIR external variable scripts/oe-setup-rpmrepo: use setup_tmpdir from runqemu

 meta/classes/imagetest-qemu.bbclass |    2 +-
 scripts/oe-setup-rpmrepo            |   35 +++++++++++++++++++++--------------
 scripts/qemuimage-testlib           |    4 ++--
 scripts/runqemu                     |    7 ++++++-
 4 files changed, 30 insertions(+), 18 deletions(-)
Signature · 1 line
1.7.4.1
#1 lore raw

PATCH 1/2 scripts: use OE_TMPDIR instead of TMPDIR external variable

On OpenSUSE within an X session, TMPDIR is set to the system temporary directory (/tmp) which is incorrect for these scripts. Thus, change runqemu and oe-setup-rpmrepo to use OE_TMPDIR from the external environment rather than TMPDIR.

Fixes [YOCTO #1530]

---
 meta/classes/imagetest-qemu.bbclass |    2 +-
 scripts/oe-setup-rpmrepo            |    8 +++++++-
 scripts/qemuimage-testlib           |    4 ++--
 scripts/runqemu                     |    7 ++++++-
 4 files changed, 16 insertions(+), 5 deletions(-)
meta/classes/imagetest-qemu.bbclass +1 -1
index 18798e0..4ea86c0 100644
@@ -70,7 +70,7 @@ def qemuimagetest_main(d):
         os.environ["DISPLAY"] = bb.data.getVar("DISPLAY", d, True)
         os.environ["COREBASE"] = bb.data.getVar("COREBASE", d, True)
         os.environ["TOPDIR"] = bb.data.getVar("TOPDIR", d, True)
-        os.environ["TMPDIR"] = bb.data.getVar("TMPDIR", d, True)
+        os.environ["OE_TMPDIR"] = bb.data.getVar("TMPDIR", d, True)
         os.environ["TEST_STATUS"] = bb.data.getVar("TEST_STATUS", d, True)
         os.environ["TARGET_IPSAVE"] = bb.data.getVar("TARGET_IPSAVE", d, True)
         os.environ["TEST_SERIALIZE"] = bb.data.getVar("TEST_SERIALIZE", d, True)
scripts/oe-setup-rpmrepo +7 -1
index 03372b6..fc2f7a8 100755
@@ -17,9 +17,15 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
+
+# Don't use TMPDIR from the external environment, it may be a distro
+# variable pointing to /tmp (e.g. within X on OpenSUSE)
+# Instead, use OE_TMPDIR for passing this in externally.
+TMPDIR="$OE_TMPDIR"
+
 function usage() {
 	echo "Usage: $0 <rpm-dir>"
-	echo "  <rpm-dir>: default is $TPMDIR/deploy/rpm"
+	echo "  <rpm-dir>: default is $TMPDIR/deploy/rpm"
 }
 
 if [ $# -gt 1 ]; then
scripts/qemuimage-testlib +2 -2
index 9ffaa7c..6a1b900 100644
@@ -467,8 +467,8 @@ Test_Create_Qemu()
 		export MACHINE=$QEMUARCH
 
 		# Create Qemu in localhost VNC Port 1
-		echo "Running xterm -display ${DISPLAY} -e 'TMPDIR=${TMPDIR} ${RUNQEMU} ${KERNEL} ${TEST_ROOTFS_IMAGE} && /bin/sleep 60' &"
-	    	xterm -display ${DISPLAY} -e "TMPDIR=${TMPDIR} ${RUNQEMU} ${KERNEL} ${TEST_ROOTFS_IMAGE} && /bin/sleep 60" &
+		echo "Running xterm -display ${DISPLAY} -e 'OE_TMPDIR=${OE_TMPDIR} ${RUNQEMU} ${KERNEL} ${TEST_ROOTFS_IMAGE} && /bin/sleep 60' &"
+		xterm -display ${DISPLAY} -e "OE_TMPDIR=${OE_TMPDIR} ${RUNQEMU} ${KERNEL} ${TEST_ROOTFS_IMAGE} && /bin/sleep 60" &
 	
 		# Get the pid of the xterm processor, which will be used in Test_Kill_Qemu
 		PID=$!
scripts/runqemu +6 -1
index 0f943b5..31e9822 100755
@@ -55,6 +55,11 @@ SCRIPT_QEMU_OPT=""
 SCRIPT_QEMU_EXTRA_OPT=""
 SCRIPT_KERNEL_OPT=""
 
+# Don't use TMPDIR from the external environment, it may be a distro
+# variable pointing to /tmp (e.g. within X on OpenSUSE)
+# Instead, use OE_TMPDIR for passing this in externally.
+TMPDIR="$OE_TMPDIR"
+
 # Determine whether the file is a kernel or QEMU image, and set the
 # appropriate variables
 process_filename() {
@@ -260,7 +265,7 @@ SPITZ_DEFAULT_FSTYPE=ext3
 
 setup_tmpdir() {
     if [ -z "$TMPDIR" ]; then
-        # BUILDDIR unset, try and get TMPDIR from bitbake
+        # Try to get TMPDIR from bitbake
         type -P bitbake &>/dev/null || {
             echo "In order for this script to dynamically infer paths";
             echo "to kernels or filesystem images, you either need";
Signature · 1 line
1.7.4.1
#2 lore raw

PATCH 2/2 scripts/oe-setup-rpmrepo: use setup_tmpdir from runqemu

In reply to Paul Eggleton

Update the internal copy of setup_tmpdir in the oe-setup-rpmrepo script to be the same as the one in the runqemu script.

---
 scripts/oe-setup-rpmrepo |   27 ++++++++++++++-------------
 1 files changed, 14 insertions(+), 13 deletions(-)
scripts/oe-setup-rpmrepo +14 -13
index fc2f7a8..ea885f6 100755
@@ -35,19 +35,20 @@ fi
 
 setup_tmpdir() {
     if [ -z "$TMPDIR" ]; then
-        if [ "x$BUILDDIR" = "x" -o ! -d "$BUILDDIR/tmp" ]; then
-            # BUILDDIR unset, try and get TMPDIR from bitbake
-            type -P bitbake &>/dev/null || {
-                echo "In order for this script to dynamically infer paths";
-                echo "to kernels or filesystem images, you either need";
-                echo "bitbake in your PATH or to source oe-init-build-env";
-                echo "before running this script" >&2;
-                exit 1; }
-
-            # We have bitbake in PATH, get TMPDIR from bitbake
-            TMPDIR=`bitbake -e | grep TMPDIR=\" | cut -d '=' -f2 | cut -d '"' -f2`
-        else
-            TMPDIR=$BUILDDIR/tmp
+        # Try to get TMPDIR from bitbake
+        type -P bitbake &>/dev/null || {
+            echo "In order for this script to dynamically infer paths";
+            echo "to kernels or filesystem images, you either need";
+            echo "bitbake in your PATH or to source oe-init-build-env";
+            echo "before running this script" >&2;
+            exit 1; }
+
+        # We have bitbake in PATH, get TMPDIR from bitbake
+        TMPDIR=`bitbake -e | grep ^TMPDIR=\" | cut -d '=' -f2 | cut -d '"' -f2`
+        if [ -z "$TMPDIR" ]; then
+            echo "Error: this script needs to be run from your build directory,"
+            echo "or you need to explicitly set TMPDIR in your environment"
+            exit 1
         fi
     fi
 }
Signature · 1 line
1.7.4.1
#3 lore raw
In reply to Paul Eggleton
Quoted 19 lines · Paul Eggleton

Fix TMPDIR external environment variable usage within our scripts which is a problem on OpenSUSE within an X session (see Yocto bug #1530) by using OE_TMPDIR from the external environment instead.

Note that this will require changes to autobuilder scripts that use a TMPDIR environment variable when calling these scripts - they should now set OE_TMPDIR instead (if versions with and without this change need to be run on the same system, then setting both variables will cause no harm).

Since v1, fix pass-through references to TMPDIR in the qemuimage-testlib script.

Since v2, fix setting of OE_TMPDIR in classes/imagetest-qemu.bbclass.

The following changes since commit e0908b7b080c0d861a1b3ccb2185b9281b10fa1a:

tables: remove it as obsolete recipe (2011-09-28 11:47:24 +0100)

Quoted 7 lines

are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib paule/scripts-tmpdir
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=paule/scripts-tmpdir

Paul Eggleton (2):
scripts: use OE_TMPDIR instead of TMPDIR external variable scripts/oe-setup-rpmrepo: use setup_tmpdir from runqemu

Merged to master, thanks.

Richard