blob: 3864b10e984f2d020cd13d4c15f6f6db4d199087 [file] [log] [blame]
#!/bin/bash
# -----------------------------------------------------------------------------
# Generates a catalog for publishing ONOS artifacts to a Maven repository.
# -----------------------------------------------------------------------------
libsOnly=false
# Process any usage options
while getopts lh? o; do
case "$o" in
l) libsOnly=true;;
*) echo "usage: $(basename $0) [-l]" >&2; exit 1;;
esac
done
let OPC=$OPTIND-1
shift $OPC
set -e -o pipefail
CATALOG=${1:-/tmp/onos.catalog}
rm -f $CATALOG
# Required to avoid having Bazel re-build stuff unnecessarily
export SHLVL=1
function writeCatalog {
bazel build $* --aspects tools/build/bazel/publish_catalog.bzl%publish_catalog 2>&1 \
| egrep "^DEBUG: .*/publish_catalog.bzl:" | cut -d\ -f3- >> $CATALOG
}
function jars {
egrep -v '(\#|build/conf)' tools/build/publish-target-list
}
function sourceJars {
egrep -v '(\#|lib\:|p4runtime/proto|build/conf)' tools/build/publish-target-list
}
function javadocJars {
egrep -v '(\#|lib\:|p4runtime/proto|build/conf)' tools/build/publish-target-list
}
function testJars {
egrep -v '(\#|build/conf)' tools/build/publish-test-target-list
}
echo "Cataloging jar files..."
writeCatalog $(jars)
echo "Cataloging test jars..."
writeCatalog $(testJars)
[ $libsOnly = true ] && exit 0
echo "Cataloging source jars..."
writeCatalog $(sourceJars | sed 's/$/-sources/')
echo "Cataloging javadoc jars..."
writeCatalog $(javadocJars | sed 's/$/-javadoc/')
echo "Cataloging pom files..."
writeCatalog $(jars | sed 's/$/-pom/')
echo "Cataloging oar files..."
writeCatalog $(bazel query 'kind("_onos_oar rule", //...)')
# Extract the version from the Bazel variables file
VERSION=$(egrep ONOS_VERSION tools/build/bazel/variables.bzl | cut -d\" -f2)
# Inject the onos-dependencies pom, ONOS tar, admin tar and test tar.
echo "Cataloging tar files..."
cat >> $CATALOG <<EOF
lib/pom.xml org/onosproject/onos-dependencies/$VERSION/onos-dependencies-$VERSION.pom
bazel-bin/onos.tar.gz org/onosproject/onos-releases/$VERSION/onos-$VERSION.tar.gz
bazel-bin/onos-admin.tar.gz org/onosproject/onos-releases/$VERSION/onos-admin-$VERSION.tar.gz
bazel-bin/onos-test.tar.gz org/onosproject/onos-releases/$VERSION/onos-test-$VERSION.tar.gz
bazel-bin/tools/build/conf/libonos-build-conf.jar org/onosproject/onos-build-conf/$VERSION/onos-build-conf-$VERSION.jar
EOF