| #!/usr/bin/env bash |
| |
| set -e |
| |
| m2_repo="http://svn.apache.org/repos/asf/maven/components/trunk" |
| continuum_repo="http://svn.apache.org/repos/asf/maven/continuum/trunk" |
| |
| clean=0 |
| force_build_maven_2=0 |
| force_build_continuum=0 |
| self_update=0 |
| |
| usage() |
| { |
| echo "Usage: $0 [--clean] [--force-build] [--force-build-maven-2] [--force-build-continuum] [--self-update]" |
| exit 1 |
| } |
| |
| while [ "$1" ]; |
| do |
| case $1 in |
| --clean) clean=1 ;; |
| --force-build-maven-2) force_build_maven_2=1 ;; |
| --force-build-continuum) force_build_continuum=1 ;; |
| --force-build) force_build_maven_2=1; force_build_continuum=1 ;; |
| --self-update) self_update=1 ;; |
| *) usage ;; |
| esac |
| shift |
| done |
| |
| if [ -r ./settings ] |
| then |
| source ./settings |
| fi |
| |
| if [ -z "$NIGHTLY_ROOT" ] |
| then |
| echo "NIGHTLY_ROOT must be set" |
| exit 1 |
| fi |
| |
| root="$NIGHTLY_ROOT" |
| M2_HOME="$NIGHTLY_ROOT/m2-nightly" |
| |
| ############################################################################## |
| # Self update |
| ############################################################################## |
| |
| if [ $self_update -eq "1" ] |
| then |
| trunk="https://svn.apache.org/repos/asf/maven/continuum/trunk" |
| script="build-world.sh" |
| echo "Saving $script to $script.bak" |
| cp $script $script.bak |
| echo "Downloading $trunk/$script to $script.tmp from Subversion" |
| svn cat $trunk/$script > $script.tmp |
| mv $script.tmp $script |
| chmod +x $script |
| exit 0 |
| fi |
| |
| ############################################################################## |
| # Clean up |
| ############################################################################## |
| |
| if [ $clean -eq "1" ] |
| then |
| echo "Cleaning" |
| rm -rf $root/maven |
| rm -rf $root/continuum |
| rm -rf $root/repository |
| rm -rf $M2_HOME |
| fi |
| |
| mkdir -p $root |
| mkdir -p $root/repository |
| |
| ############################################################################## |
| # Do some checks of the enviroment |
| ############################################################################## |
| |
| if [ -z "$JAVA_HOME" ] |
| then |
| echo "JAVA_HOME must be set." |
| fi |
| |
| if [ -z "`which java`" ] |
| then |
| echo "Could not find 'java' in the path." |
| echo "PATH: $PATH" |
| exit 1 |
| fi |
| |
| if [ ! -d sun-repo ] |
| then |
| echo "WARN: Missing ./sun-repo |
| If the build fails with missing Sun related dependencies please make this |
| directory and put any relevant jars there. The repository will be copied over |
| to the real Maven 2 repository before each build to make sure the Maven 2 |
| repository can be cleaned before a build and still not miss any dependencies." |
| else |
| echo "Copying over the artifacs in sun-repo." |
| cp -r sun-repo/* $root/repository |
| fi |
| |
| ############################################################################## |
| # Check out the sources |
| ############################################################################## |
| |
| cd $root |
| |
| # Maven 2 |
| first_build=0 |
| if [ ! -d maven ] |
| then |
| first_build=1 |
| fi |
| |
| echo "Updating the Maven 2 checkout." |
| svn co $m2_repo maven > m2_update |
| |
| tmp=`grep -v revision m2_update | wc -l` |
| if [ "$tmp" -eq 0 -a $first_build -eq 0 ] |
| then |
| build_m2=0 |
| else |
| build_m2=1 |
| fi |
| |
| # Continuum |
| first_build=0 |
| if [ ! -d continuum ] |
| then |
| first_build=1 |
| fi |
| |
| echo "Updating the Continuum checkout." |
| svn co $continuum_repo continuum > continuum_update |
| |
| tmp=`grep -v revision continuum_update | wc -l` |
| if [ "$tmp" -eq 0 -a $first_build -eq 0 ] |
| then |
| build_continuum=0 |
| else |
| build_continuum=1 |
| fi |
| |
| ############################################################################## |
| # Build |
| ############################################################################## |
| |
| PATH=$M2_HOME/bin:$PATH |
| |
| if [ $build_m2 -eq 1 -o $clean -eq 1 -o $force_build_maven_2 -eq 1 ] |
| then |
| ( |
| cd maven |
| echo "Bootstrapping Maven 2." |
| M2_HOME=$M2_HOME bash m2-bootstrap-all.sh |
| ) |
| else |
| echo "Not building Maven 2." |
| fi |
| |
| if [ -z "`which m2`" ] |
| then |
| echo "WARN: Could not find m2 in PATH. For the build scripts for Continuum to |
| work m2 has to be in the PATH. |
| |
| If this is the first time you are running this script please this message |
| can be ignored. |
| |
| PATH: $PATH |
| M2_HOME: $M2_HOME" |
| exit 1 |
| fi |
| |
| if [ $build_continuum -eq 1 -o $clean -eq 1 -o $force_build_continuum -eq 1 ] |
| then |
| echo "Building Continuum." |
| cd continuum |
| bash build.sh |
| cd .. |
| else |
| echo "Not building Continuum." |
| fi |