@ -19,16 +19,19 @@ usage()
cat >& 2 <<EOF
${ 1 : +ERROR : : $1
} Usage: $0 [ action] [ containters]
} Usage: $0 [ action] [ containter] [ arg s... ]
Action is one of:
build Build or rebuild the specified containers.
test Run tests ( build-all) .
install Install crosstool-NG in specified containers.
sample Build a sample or if no sample name specified, all.
enter Spawn a shell in the specified container.
root Spawn a root shell in the specified container.
clean Clean up in the specified container.
If containers are not specified, the action is applied to all available containers.
If a special container name 'all' is used, the action is performed
on all the containers.
EOF
exit 1
}
@ -39,7 +42,7 @@ action_build()
local cntr = $1
msg " Building Docker container for ${ cntr } "
docker build -t " ctng- ${ cntr } " " ${ cntr } "
docker build --no-cache - t " ctng- ${ cntr } " " ${ cntr } "
}
# Common backend for enter/test
@ -56,19 +59,29 @@ _dckr()
-v ` pwd ` /build-${ cntr } :/home \
-v $HOME /src:/src:ro \
ctng-${ cntr } \
/setup-scripts/su-as-user ` id -un` ` id -u` ` id -gn` ` id -g` " $@ "
${ SETUPCMD :- /setup-scripts/su-as-user ` id -un` ` id -u` ` id -gn` ` id -g` } " $@ "
}
# Run the test
action_test ( )
action_install ( )
{
local cntr = $1
# The test assumes the top directory is bootstrapped, but clean.
msg " Setting up crosstool-NG in ${ cntr } "
_dckr " ${ cntr } " /setup-scripts/ctng-install
msg " Running build-all in ${ cntr } "
_dckr " ${ cntr } " /setup-scripts/ctng-test-all
_dckr " ${ cntr } " /setup-scripts/ctng-test-basic
}
# Run the test
action_sample( )
{
local cntr = $1
shift
# The test assumes the top directory is bootstrapped, but clean.
msg " Building samples in ${ cntr } [ $@ ] "
_dckr " ${ cntr } " /setup-scripts/ctng-build-sample " $@ "
}
# Enter the container using the same user account/environment as for testing.
@ -80,6 +93,15 @@ action_enter()
_dckr " ${ cntr } "
}
# Enter the container using the same user account/environment as for testing.
action_root( )
{
local cntr = $1
msg " Entering ${ cntr } as root "
SETUPCMD = /bin/bash _dckr " ${ cntr } "
}
# Clean up after test suite run
action_clean( )
{
@ -92,15 +114,18 @@ action_clean()
fi
}
action = $1
shift
all_containers = ` ls */Dockerfile | sed 's,/Dockerfile,,' `
selected_containers = " ${ * :- ${ all_containers } } "
action = $1
selected_containers = $2
shift 2
if [ " ${ selected_containers } " = "all" ] ; then
selected_containers = " ${ all_containers } "
fi
case " ${ action } " in
build| test| enter| clean)
build| ins tall| sampl e| enter| root| clean)
for c in ${ selected_containers } ; do
eval " action_ ${ action } ${ c } "
eval " action_ ${ action } ${ c } \"$@ \" "
done
; ;
"" )