[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-trivial] [PULL 11/23] configure: Put tempfiles in a subdir of the
From: |
Michael Tokarev |
Subject: |
[Qemu-trivial] [PULL 11/23] configure: Put tempfiles in a subdir of the build directory |
Date: |
Mon, 26 May 2014 11:19:59 +0400 |
From: Peter Maydell <address@hidden>
When libtool support was added to configure, the new temporary files
were left out of the list of files cleaned up on exit; this results
in a lot of stale .lo files being left around in /tmp. Worse, libtool
creates a /tmp/.libs directory which we can't easily clean up.
Put all our temporary files in a single temporary directory created
as a subdirectory of the build directory, so we can easily clean it up,
and don't need fragile or complicated code for creation to avoid it
clashing with temporary directories from other instances of QEMU
configure or being subject to attack from adversaries who can write
to /tmp.
Since the temporaries now live in the build tree, we have no
need to jump through hoops with a trap handler to try to remove
them when configure exits; this fixes some weird bugs where hitting
^C during a configure run wouldn't actually make it stop, because
we would run the trap handler but then not stop. (It is possible
to get the trap handler semantics right but it is convoluted largely
because of bugs in dash, so it is simpler to just avoid it.)
Note that "temporary files go in the build directory, not /tmp" is
the way autoconf behaves.
Signed-off-by: Peter Maydell <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Michael Tokarev <address@hidden>
---
.gitignore | 1 +
configure | 29 ++++++++++++++++-------------
2 files changed, 17 insertions(+), 13 deletions(-)
diff --git a/.gitignore b/.gitignore
index 8a52709..c658613 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,7 @@
/config-host.*
/config-target.*
/config.status
+/config-temp
/trace/generated-tracers.h
/trace/generated-tracers.c
/trace/generated-tracers-dtrace.h
diff --git a/configure b/configure
index 678a106..cde4325 100755
--- a/configure
+++ b/configure
@@ -2,26 +2,28 @@
#
# qemu configure script (c) 2003 Fabrice Bellard
#
-# set temporary file name
-if test ! -z "$TMPDIR" ; then
- TMPDIR1="${TMPDIR}"
-elif test ! -z "$TEMPDIR" ; then
- TMPDIR1="${TEMPDIR}"
-else
- TMPDIR1="/tmp"
+
+# Temporary directory used for files created while
+# configure runs. Since it is in the build directory
+# we can safely blow away any previous version of it
+# (and we need not jump through hoops to try to delete
+# it when configure exits.)
+TMPDIR1="config-temp"
+rm -rf "${TMPDIR1}"
+mkdir -p "${TMPDIR1}"
+if [ $? -ne 0 ]; then
+ echo "ERROR: failed to create temporary directory"
+ exit 1
fi
-TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
-TMPB="qemu-conf-${RANDOM}-$$-${RANDOM}"
+TMPB="qemu-conf"
+TMPC="${TMPDIR1}/${TMPB}.c"
TMPO="${TMPDIR1}/${TMPB}.o"
TMPCXX="${TMPDIR1}/${TMPB}.cxx"
TMPL="${TMPDIR1}/${TMPB}.lo"
TMPA="${TMPDIR1}/lib${TMPB}.la"
-TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.exe"
+TMPE="${TMPDIR1}/${TMPB}.exe"
-# NB: do not call "exit" in the trap handler; this is buggy with some shells;
-# see <address@hidden>
-trap "rm -f $TMPC $TMPO $TMPCXX $TMPE" EXIT INT QUIT TERM
rm -f config.log
# Print a helpful header at the top of config.log
@@ -5235,3 +5237,4 @@ printf " '%s'" "$0" "$@" >>config.status
echo >>config.status
chmod +x config.status
+rm -r "$TMPDIR1"
--
1.7.10.4
- [Qemu-trivial] [PULL 09/23] arch_init: replace fprintf(stderr, ...) with error_report(), (continued)
- [Qemu-trivial] [PULL 09/23] arch_init: replace fprintf(stderr, ...) with error_report(), Michael Tokarev, 2014/05/26
- [Qemu-trivial] [PULL 15/23] libcacard/vreader: Drop broken recovery from failed assertion, Michael Tokarev, 2014/05/26
- [Qemu-trivial] [PULL 16/23] libcacard/vreader: Tighten assertion to clarify intent, Michael Tokarev, 2014/05/26
- [Qemu-trivial] [PULL 23/23] libcacard: remove useless initializers, Michael Tokarev, 2014/05/26
- [Qemu-trivial] [PULL 12/23] vl: fix 'name' option to work with -readconfig, Michael Tokarev, 2014/05/26
- [Qemu-trivial] [PULL 06/23] bswap.h: Rename ldl_p, stl_p, etc to ldl_he_p, stl_he_p, etc, Michael Tokarev, 2014/05/26
- [Qemu-trivial] [PULL 17/23] libcacard: Convert two leftover realloc() to GLib, Michael Tokarev, 2014/05/26
- [Qemu-trivial] [PULL 22/23] net: cadence_gem: Fix top comment, Michael Tokarev, 2014/05/26
- [Qemu-trivial] [PULL 03/23] nbd: Close socket on negotiation failure., Michael Tokarev, 2014/05/26
- [Qemu-trivial] [PULL 18/23] libcacard/vcard_emul_nss: Drop a redundant conditional, Michael Tokarev, 2014/05/26
- [Qemu-trivial] [PULL 11/23] configure: Put tempfiles in a subdir of the build directory,
Michael Tokarev <=
- Re: [Qemu-trivial] [Qemu-devel] [PULL 00/23] Trivial patches for 2014-05-26, Peter Maydell, 2014/05/27