From 13d05bc8458758ee39cb829098241e89616717ee Mon Sep 17 00:00:00 2001 From: Ashlee Young Date: Wed, 9 Sep 2015 22:15:21 -0700 Subject: ONOS checkin based on commit tag e796610b1f721d02f9b0e213cf6f7790c10ecd60 Change-Id: Ife8810491034fe7becdba75dda20de4267bd15cd --- .../src/onos/tools/dev/bin/onos-build-selective | 44 ++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100755 framework/src/onos/tools/dev/bin/onos-build-selective (limited to 'framework/src/onos/tools/dev/bin/onos-build-selective') diff --git a/framework/src/onos/tools/dev/bin/onos-build-selective b/framework/src/onos/tools/dev/bin/onos-build-selective new file mode 100755 index 00000000..ac2dec8e --- /dev/null +++ b/framework/src/onos/tools/dev/bin/onos-build-selective @@ -0,0 +1,44 @@ +#!/bin/bash +# ---------------------------------------------------------------------------- +# Selectively builds only those projects that contained modified Java files. +# ---------------------------------------------------------------------------- + +cd $ONOS_ROOT + +projects=$(find $ONOS_ROOT -type f -path '*/src/*' \ + -exec $ONOS_ROOT/tools/dev/bin/onos-build-selective-hook {} \; | \ + grep -v -f $ONOS_ROOT/tools/dev/bin/onos-build-selective.exclude | \ + sort -u | sed "s:$ONOS_ROOT::g" | tr '\n' ',' | \ + sed 's:/,:,:g;s:,/:,:g;s:^/::g;s:,$::g') + +if [ -n "$projects" ]; then + # Ascertain artifact IDs of the projects to be rebuilt + modulesERE="" + for pd in ${projects//,/ }; do + artifactId=$(grep -E "^ .*$" ${pd}/pom.xml | \ + sed 's/.[^>]*>//;s/<.*//') + modulesERE="$modulesERE|$artifactId" + done + modulesERE=${modulesERE#|*} + + # Search through staged app.xml files for any apps that require one or + # more of the modified artifacts. + appProjects=$(find $ONOS_ROOT -type f -path '*/target/oar/app.xml' | \ + xargs grep '' | grep -E "/($modulesERE)/" | \ + cut -d: -f1 | sed 's:/target/oar/.*::g' | \ + sort -u | sed "s:$ONOS_ROOT::g" | tr '\n' ',' | \ + sed 's:/,:,:g;s:,/:,:g;s:^/::g;s:,$::g') + + # If we found any, append those app projects to the list of projects to + # be built. + [ -n "$appProjects" ] && projects=$projects,$appProjects + + echo Building projects $projects + cd $ONOS_ROOT && mvn --projects $projects ${@:-clean install} + status=$? + + [ -n "$appProjects" ] && echo "App staging required for projects $appProjects" + exit $status +else + exit 0 +fi -- cgit 1.2.3-korg