Fix TMPDIR usage in scripts v3
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
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
@@ -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
@@ -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
@@ -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
@@ -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
PATCH 2/2 scripts/oe-setup-rpmrepo: use setup_tmpdir from runqemu
In reply to Paul EggletonUpdate 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
@@ -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
Richard Purdie
AppliedQuoted 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_TMPDIRfrom 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_TMPDIRinstead (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_TMPDIRin 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-contribpaule/scripts-tmpdir
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=paule/scripts-tmpdirPaul Eggleton (2):
scripts: useOE_TMPDIRinstead of TMPDIR external variablescripts/oe-setup-rpmrepo: usesetup_tmpdirfrom runqemu
Merged to master, thanks.
Richard