changeset 989:93830ce35f85

Make extract use unique temporary directories so it's parallelizable.
author Rob Landley <rob@landley.net>
date Mon, 01 Mar 2010 01:03:04 -0600
parents 30e4bab11f9e
children 00704bb2c556
files sources/functions.sh
diffstat 1 files changed, 14 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/sources/functions.sh	Wed Feb 24 10:31:10 2010 -0600
+++ b/sources/functions.sh	Mon Mar 01 01:03:04 2010 -0600
@@ -241,22 +241,26 @@
     [ -z "$SHALIST" ] && return 0
   fi
 
-  echo -n "Extracting '${PACKAGE}'"
-  # Delete the old tree (if any).  Create new empty working directories.
-  rm -rf "${BUILD}/temp" "${SRCTREE}/${PACKAGE}" 2>/dev/null
-  mkdir -p "${BUILD}"/{temp,packages} || dienow
-
   # Is it a bzip2 or gzip tarball?
   DECOMPRESS=""
   [ "$FILENAME" != "${FILENAME/%\.tar\.bz2/}" ] && DECOMPRESS="j"
   [ "$FILENAME" != "${FILENAME/%\.tar\.gz/}" ] && DECOMPRESS="z"
 
-  { tar -xv${DECOMPRESS} -f "${SRCDIR}/${FILENAME}" -C "${BUILD}/temp" || dienow
-  } | dotprogress
+  echo -n "Extracting '${PACKAGE}'"
+
+  (
+    trap 'rm -rf "$BUILD/temp-'$$'"' EXIT
+    # Delete the old tree (if any).
+    rm -rf "${SRCTREE}/${PACKAGE}" 2>/dev/null
+    mkdir -p "${BUILD}"/{temp-$$,packages} || dienow
 
-  mv "${BUILD}/temp/"* "${SRCTREE}/${PACKAGE}" &&
-  rmdir "${BUILD}/temp" &&
-  echo "$SHA1TAR" > "$SHA1FILE"
+    { tar -xv${DECOMPRESS} -f "${SRCDIR}/${FILENAME}" -C "${BUILD}/temp-$$" ||
+      dienow
+    } | dotprogress
+
+    mv "${BUILD}/temp-$$/"* "${SRCTREE}/${PACKAGE}" &&
+    echo "$SHA1TAR" > "$SHA1FILE"
+  )
 
   [ $? -ne 0 ] && dienow