summaryrefslogtreecommitdiffstats
path: root/container-dev-builder/make.sh
blob: c434b13ee7bcbd3164e9b1ebfd975bb7d48011a3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/bin/bash
# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
export VERSION=$1
if [ -z "$VERSION" ]
then
    echo "usage: $(basename $0) <version> [<builddir>]"
    exit 1
fi
echo VERSION=$VERSION

export BASEDIR=$2
if [ "$BASEDIR" ]
then
    export POM_FORMAT="$BASEDIR/%s-HEAD/%s/pom.xml"
else
    export POM_FORMAT="$(pwd)/../%s/pom.xml"
fi
echo POM_FORMAT=$POM_FORMAT
echo

echo "-------------------------------------------------------------------------------"
echo "Compiling toolkit."
echo "-------------------------------------------------------------------------------"
cd tools
mvn -q clean install -DskipTests
JAVA_TOOLS="java -cp $(pwd)/target/tools-jar-with-dependencies.jar"
echo
cd ..

DEPS_NEXT="com.yahoo.vespa:container-disc:jar:$VERSION:compile"
DEPS_PREV=""
BLACKLIST=$(cat dependency_blacklist)

PASS=0
rm -rf target
mkdir target
cd target
while [ "$DEPS_NEXT" ]
do
    PASS=$((PASS+1))
    mkdir -p "pass$PASS"
    cd "pass$PASS"

    DEPS_PREV=$DEPS_NEXT
    DEPS_NEXT=""

    echo "-------------------------------------------------------------------------------"
    echo "Deriving dependencies, pass $PASS."
    echo "-------------------------------------------------------------------------------"
    echo DEPENDENCIES=$DEPS_PREV
    echo "Building dependency tree.."
    $JAVA_TOOLS com.yahoo.container.dev.builder.PomFileGenerator $VERSION $DEPS_PREV > pom.xml
    mvn -q dependency:tree -DoutputFile=dependencies
    DEPS_NEXT="$($JAVA_TOOLS com.yahoo.container.dev.builder.DependencyResolver . $BLACKLIST)"

    echo "Resolving X-JDisc-Preinstall-Bundle instructions.."
    mvn -q dependency:unpack-dependencies             \
        -DexcludeTransitive=true                      \
        -Dmdep.unpack.includes="META-INF/MANIFEST.MF" \
        -Dmdep.useSubDirectoryPerArtifact=true        \
        -DoutputDirectory=.
    DEPS_NEXT="$DEPS_NEXT $($JAVA_TOOLS com.yahoo.container.dev.builder.PreinstalledBundleResolver . "$POM_FORMAT")"

    DEPS_NEXT=$(echo $DEPS_NEXT | sort | uniq)
    [ "$DEPS_NEXT" == "$DEPS_PREV" ] && DEPS_NEXT=""
    echo
    cd ..
done

echo "-------------------------------------------------------------------------------"
echo "Testing final pom.xml"
echo "-------------------------------------------------------------------------------"
cp pass$PASS/pom.xml .
mvn clean install -DskipTests || exit 1
cd ..