1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-11-24 03:30:37 +02:00

deptest: Do not clobber the base build and staging dirs

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@23835 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
mb 2010-11-03 18:48:03 +00:00
parent 46cb880b10
commit f0efddfaa0

View File

@ -18,9 +18,11 @@ STAMP_DIR_FAILED="$DIR/stamp-failed"
STAMP_DIR_BLACKLIST="$DIR/stamp-blacklist" STAMP_DIR_BLACKLIST="$DIR/stamp-blacklist"
BUILD_DIR="$DIR/build_dir/target" BUILD_DIR="$DIR/build_dir/target"
BUILD_DIR_HOST="$DIR/build_dir/host" BUILD_DIR_HOST="$DIR/build_dir/host"
STAGING_DIR="$DIR/staging_dir" KERNEL_BUILD_DIR="$DIR/build_dir/linux"
STAGING_DIR_HOST="$STAGING_DIR/host" STAGING_DIR="$DIR/staging_dir/target"
STAGING_DIR_HOST="$DIR/staging_dir/host"
STAGING_DIR_HOST_TMPL="$DIR/staging_dir_host_tmpl" STAGING_DIR_HOST_TMPL="$DIR/staging_dir_host_tmpl"
BIN_DIR="$DIR/staging_dir/bin_dir"
LOG_DIR="$DIR/logs" LOG_DIR="$DIR/logs"
die() die()
@ -37,11 +39,41 @@ usage()
echo " --lean Run a lean test. Do not clean the build directory for each" echo " --lean Run a lean test. Do not clean the build directory for each"
echo " package test." echo " package test."
echo " --force Force a test, even if a success/blacklist stamp is available" echo " --force Force a test, even if a success/blacklist stamp is available"
echo " -j X Number of make jobs"
echo echo
echo "PACKAGES are packages to test. If not specified, all installed packages" echo "PACKAGES are packages to test. If not specified, all installed packages"
echo "will be tested." echo "will be tested."
} }
deptest_make()
{
local target="$1"
shift
local logfile="$1"
shift
make -j$nrjobs "$target" \
BUILD_DIR="$BUILD_DIR" \
BUILD_DIR_HOST="$BUILD_DIR_HOST" \
KERNEL_BUILD_DIR="$KERNEL_BUILD_DIR" \
BIN_DIR="$BIN_DIR" \
STAGING_DIR="$STAGING_DIR" \
STAGING_DIR_HOST="$STAGING_DIR_HOST" \
FORCE_HOST_INSTALL=1 \
V=99 "$@" >"$LOG_DIR/$logfile" 2>&1
}
clean_kernel_build_dir()
{
# delete everything, except the kernel build dir "linux-X.X.X"
(
cd "$KERNEL_BUILD_DIR" || die "Failed to enter kernel build dir"
for entry in *; do
[ -z "$(echo "$entry" | egrep -e '^linux-*.*.*$')" ] || continue
rm -rf "$entry" || die "Failed to clean kernel build dir"
done
)
}
test_package() # $1=pkgname test_package() # $1=pkgname
{ {
local pkg="$1" local pkg="$1"
@ -66,18 +98,15 @@ test_package() # $1=pkgname
return return
} }
echo "Testing package $pkg..." echo "Testing package $pkg..."
rm -rf "$STAGING_DIR" rm -rf "$STAGING_DIR" "$STAGING_DIR_HOST"
mkdir -p "$STAGING_DIR" mkdir -p "$STAGING_DIR"
cp -al "$STAGING_DIR_HOST_TMPL" "$STAGING_DIR_HOST" cp -al "$STAGING_DIR_HOST_TMPL" "$STAGING_DIR_HOST"
[ $lean_test -eq 0 ] && rm -rf "$BUILD_DIR" "$BUILD_DIR_HOST" [ $lean_test -eq 0 ] && {
rm -rf "$BUILD_DIR" "$BUILD_DIR_HOST"
clean_kernel_build_dir
}
mkdir -p "$BUILD_DIR" "$BUILD_DIR_HOST" mkdir -p "$BUILD_DIR" "$BUILD_DIR_HOST"
make package/$pkg/compile \ deptest_make "package/$pkg/compile" "$(basename $pkg).log"
BUILD_DIR="$BUILD_DIR" \
BUILD_DIR_HOST="$BUILD_DIR_HOST" \
STAGING_DIR="$STAGING_DIR" \
STAGING_DIR_HOST="$STAGING_DIR_HOST" \
FORCE_HOST_INSTALL=1 \
V=99 >"$LOG_DIR/$(basename $pkg).log" 2>&1
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
touch "$STAMP_SUCCESS" touch "$STAMP_SUCCESS"
else else
@ -90,6 +119,7 @@ test_package() # $1=pkgname
packages= packages=
lean_test=0 lean_test=0
force=0 force=0
nrjobs=1
while [ $# -ne 0 ]; do while [ $# -ne 0 ]; do
case "$1" in case "$1" in
--help|-h) --help|-h)
@ -102,6 +132,14 @@ while [ $# -ne 0 ]; do
--force) --force)
force=1 force=1
;; ;;
-j*)
if [ -n "${1:2}" ]; then
nrjobs="${1:2}"
else
shift
nrjobs="$1"
fi
;;
*) *)
packages="$packages $1" packages="$packages $1"
;; ;;
@ -115,14 +153,42 @@ done
die "The buildsystem is not configured. Please run make menuconfig." die "The buildsystem is not configured. Please run make menuconfig."
cd "$BASEDIR" || die "Failed to enter base directory" cd "$BASEDIR" || die "Failed to enter base directory"
mkdir -p "$STAMP_DIR_SUCCESS" "$STAMP_DIR_FAILED" "$STAMP_DIR_BLACKLIST" "$LOG_DIR" mkdir -p "$STAMP_DIR_SUCCESS" "$STAMP_DIR_FAILED" "$STAMP_DIR_BLACKLIST" \
"$BIN_DIR" "$LOG_DIR"
bootstrap_deptest_make()
{
local target="$1"
shift
local logfile="bootstrap-deptest-$(echo "$target" | tr / -).log"
echo "deptest-make $target"
deptest_make "$target" "$logfile" "$@" || \
die "make $target failed, please check $logfile"
}
bootstrap_native_make()
{
local target="$1"
shift
local logfile="bootstrap-native-$(echo "$target" | tr / -).log"
echo "make $target"
make -j$nrjobs "$target" \
V=99 "$@" >"$LOG_DIR/$logfile" 2>&1 || \
die "make $target failed, please check $logfile"
}
[ -d "$STAGING_DIR_HOST_TMPL" ] || { [ -d "$STAGING_DIR_HOST_TMPL" ] || {
rm -rf staging_dir/host echo "Bootstrapping build environment..."
make tools/install V=99 || die "make tools/install failed, please check" rm -rf "$STAGING_DIR" "$STAGING_DIR_HOST" "$BUILD_DIR" "$BUILD_DIR_HOST" "$KERNEL_BUILD_DIR"
cp -al staging_dir/host "$STAGING_DIR_HOST_TMPL" mkdir -p "$STAGING_DIR" "$STAGING_DIR_HOST" \
make toolchain/install V=99 || die "make toolchain/install failed, please check" "$BUILD_DIR" "$BUILD_DIR_HOST" "$KERNEL_BUILD_DIR"
make target/linux/install V=99 || die "make target/linux/install failed, please check" bootstrap_native_make tools/install
bootstrap_native_make toolchain/install
bootstrap_deptest_make tools/install
bootstrap_deptest_make target/linux/install
cp -al "$STAGING_DIR_HOST" "$STAGING_DIR_HOST_TMPL"
rm -rf "$STAGING_DIR" "$STAGING_DIR_HOST" "$BUILD_DIR" "$BUILD_DIR_HOST"
echo "Build environment OK."
} }
if [ -z "$packages" ]; then if [ -z "$packages" ]; then