Support to build custom ONOS container images on hosts with no devel environment.
Builds a onos devel docker image that can build onos when run.
Change-Id: I00d012ecd085f80f1caad45df09a97c3291fe997
diff --git a/build-onos-docker.sh b/build-onos-docker.sh
index 9aa9381..5557544 100755
--- a/build-onos-docker.sh
+++ b/build-onos-docker.sh
@@ -43,7 +43,7 @@
echo "Invalid arguments"
show_help
fi
-mydir=$(dirname $0)
+mydir=$(dirname $(realpath $0))
if [ x"$onos_package" = "x" ]; then
if [ ! -d $onos_src_dir ]; then
onos_build=1
@@ -51,24 +51,36 @@
onos_package=$onos_src_dir/buck-out/gen/tools/package/onos-package/onos.tar.gz
fi
-onos_cloned=0
+function build_onos {
+ if [ ! -f $mydir/Dockerfile.onos-builder ]; then
+ echo "Dockerfile.onos-builder not found. Copy this file from cord-tester project before resuming the build"
+ exit 127
+ fi
+ docker images | grep ^cord-tester-onos-builder || docker build -t cord-tester-onos-builder:latest -f $mydir/Dockerfile.onos-builder $mydir
+ docker run -v $mydir:/root/cord-tester --rm cord-tester-onos-builder:latest
+ return $?
+}
#if onos package is not built, then exit
if [ $onos_build -eq 1 ]; then
if [ ! -d $onos_src_dir ]; then
- mkdir -p $onos_src_dir
- onos_cloned=1
- ( cd $onos_src_dir && git clone http://github.com/opennetworkinglab/onos.git . )
+ build_onos
+ local ret=$?
+ if [ $ret -ne 0 ]; then
+ echo "Failed to build ONOS. Exiting"
+ exit 127
+ fi
+ onos_package=$mydir/onos.tar.gz
else
if [ $onos_update -eq 1 ]; then
echo "Updating ONOS source"
( cd $onos_src_dir && git pull --ff-only origin master || git clone http://github.com/opennetworkinglab/onos.git . )
fi
+ ( cd $onos_src_dir && tools/build/onos-buck build onos ) && echo "ONOS build success" || {
+ echo "ONOS build failure. Exiting ..." && exit 1
+ }
+ onos_package=$onos_src_dir/buck-out/gen/tools/package/onos-package/onos.tar.gz
fi
- ( cd $onos_src_dir && tools/build/onos-buck build onos ) && echo "ONOS build success" || {
- echo "ONOS build failure. Exiting ..." && exit 1
- }
- onos_package=$onos_src_dir/buck-out/gen/tools/package/onos-package/onos.tar.gz
fi
if [ ! -f $onos_package ]; then
@@ -76,12 +88,11 @@
exit 1
fi
-cp -v $onos_package $mydir
+if [ $onos_package != $mydir/onos.tar.gz ]; then
+ cp -v $onos_package $mydir/onos.tar.gz
+fi
function finish {
- if [ $onos_cloned -eq 1 ]; then
- rm -rf $onos_src_dir
- fi
rm -f onos.tar.gz
rm -f Dockerfile.cord-tester
}
@@ -130,5 +141,4 @@
EOF
#Now build the docker image
-
docker build -t $onos_tag -f $mydir/Dockerfile.cord-tester $mydir