mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-16 18:02:05 +02:00
47 lines
1.8 KiB
Bash
Executable File
47 lines
1.8 KiB
Bash
Executable File
#!/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 {} \; | \
|
|
egrep -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
|
|
if [ -f ${pd}/pom.xml ]; then
|
|
artifactId=$(egrep -E "^ <artifactId>.*</artifactId>$" ${pd}/pom.xml | \
|
|
sed 's/.[^>]*>//;s/<.*//')
|
|
modulesERE="$modulesERE|$artifactId"
|
|
fi
|
|
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 egrep '<artifact>' | egrep -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
|