diff --git a/apps/grouphandler/pom.xml b/apps/grouphandler/pom.xml deleted file mode 100644 index 17aa23c80a..0000000000 --- a/apps/grouphandler/pom.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - 4.0.0 - - - org.onosproject - onos-apps - 1.2.0-SNAPSHOT - ../pom.xml - - - onos-app-grouphandler - bundle - - ONOS sample application using group service - - - - org.onosproject - onos-api - ${project.version} - - - org.onosproject - onlab-osgi - ${project.version} - - - org.onosproject - onlab-nio - ${project.version} - - - org.onosproject - onlab-netty - ${project.version} - - - org.apache.karaf.shell - org.apache.karaf.shell.console - - - org.onosproject - onlab-misc - - - com.google.guava - guava - - - org.osgi - org.osgi.core - - - diff --git a/tools/dev/bin/onos-build-selective b/tools/dev/bin/onos-build-selective index 732a31df34..576db7af78 100755 --- a/tools/dev/bin/onos-build-selective +++ b/tools/dev/bin/onos-build-selective @@ -3,11 +3,36 @@ # Selectively builds only those projects that contained modified Java files. # ---------------------------------------------------------------------------- -# TODO: figure out a more elegant way of ignoring disconnected projects -projects=$(find $ONOS_ROOT -name '*.java' \ - -not -path '.git/*' -and -not -path '*/archetypes/*' -and -not -path '*/grouphandler/*' -and -not -path '*/maven-plugin/*' \ +projects=$(find $ONOS_ROOT -type f -path '*/src/*' \ -exec $ONOS_ROOT/tools/dev/bin/onos-build-selective-hook {} \; | \ - sort -u | sed "s:$ONOS_ROOT::g" | tr '\n' ',' | \ - sed 's:/,:,:g;s:,/:,:g;s:^/::g;s:,$::g') + 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') -[ -n "$projects" ] && cd $ONOS_ROOT && mvn --projects $projects ${@:-clean install} +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} + + [ -n "$appProjects" ] && echo "App staging required for projects $appProjects" +fi diff --git a/tools/dev/bin/onos-build-selective-hook b/tools/dev/bin/onos-build-selective-hook index c27d747126..fbe7752291 100755 --- a/tools/dev/bin/onos-build-selective-hook +++ b/tools/dev/bin/onos-build-selective-hook @@ -1,16 +1,10 @@ #!/bin/bash # ---------------------------------------------------------------------------- -# Echoes project-level directory if a Java file within is newer than the +# Echoes project-level directory if a source file within is newer than the # target directory. # ---------------------------------------------------------------------------- -javaFile=${1#*\/src\/*\/java/} -basename=${1/*\//} +[ ${1/*\//} = "package-info.java" ] && exit 0 -[ $basename = "package-info.java" ] && exit 0 - -src=${1/$javaFile/} -project=${src/src*/} -target=$project/target - -[ $target -nt ${src}$javaFile ] || echo ${src/src*/} +project=${1/src*/} +[ ${project}target -nt $1 ] || echo ${project} diff --git a/tools/dev/bin/onos-build-selective.exclude b/tools/dev/bin/onos-build-selective.exclude new file mode 100644 index 0000000000..cd36a915b6 --- /dev/null +++ b/tools/dev/bin/onos-build-selective.exclude @@ -0,0 +1,3 @@ +.*/archetypes/.* +.*/maven-plugin/.* +.*/build/conf/.* \ No newline at end of file