deptest: Do not clobber the base build and staging dirs

SVN-Revision: 23835
v19.07.3_mercusys_ac12_duma
Michael Büsch 14 years ago
parent 676520cf65
commit 100fc4c7ce

@ -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

Loading…
Cancel
Save