← Commit list

3a324754f

Rob Landley
Rob Landley
2006-03-09
SOURCE BUG Duration: 14s

Subject

I'm about to introduce tests that need to run as root (like mount.tests), meaning we want to run them in a chroot environment. To help with this, I worked out a utility function that makes it really easy to set up a chroot environment.

SOURCE BUG

This commit was genuinely broken at the time (not related to our build system): scripts/config/mkconfigs.c (2005-08-01 - 2006-10-05 arasi) uretilen bbconfigopts.h icine .config satirlarini kacissiz, ham newline'larla gömüyordu - gecerli C degildi, busybox'un kendi bb_mkdep araci bile parse edemiyordu (7d219aab7 ile duzeltildi, mkconfigs shell scripte cevrildi)

→ Bu hatanin tam hikayesini ve duzeltme diffini gor

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

testsuite/testing.sh+29 -2
@@ -58,7 +58,7 @@ testing ()
{
if [ $# -ne 5 ]
then
- echo "Test $1 has the wrong number of arguments" >&2
+ echo "Test $1 has the wrong number of arguments ($# $*)" >&2
exit
fi
@@ -74,7 +74,7 @@ testing ()
echo -ne "$3" > expected
echo -ne "$4" > input
- echo -n -e "$5" | eval "$COMMAND $2" > actual
+ echo -ne "$5" | eval "$COMMAND $2" > actual
RETVAL=$?
cmp expected actual > /dev/null
@@ -98,3 +98,30 @@ testing ()
return $RETVAL
}
+
+# Recursively grab an executable and all the libraries needed to run it.
+# Source paths beginning with / will be copied into destpath, otherwise
+# the file is assumed to already be there and only its library dependencies
+# are copied.
+
+function mkchroot
+{
+ [ $# -lt 2 ] && return
+
+ dest=$1
+ shift
+ for i in "$@"
+ do
+ if [ "${i:0:1}" == "/" ]
+ then
+ [ -f "$dest/$i" ] && continue
+ d=`echo "$i" | grep -o '.*/'` &&
+ mkdir -p "$dest/$d" &&
+ cat "$i" > "$dest/$i" &&
+ chmod +x "$dest/$i"
+ else
+ i="$dest/$i"
+ fi
+ mkchroot "$dest" $(ldd "$i" | egrep -o '/.* ')
+ done
+}