[llvm-commits] [dragonegg] r99132 - in /dragonegg/trunk/extras: buildbot_self_strap do_self_strap

Duncan Sands baldrick at free.fr
Sun Mar 21 09:56:07 PDT 2010


Author: baldrick
Date: Sun Mar 21 11:56:07 2010
New Revision: 99132

URL: http://llvm.org/viewvc/llvm-project?rev=99132&view=rev
Log:
Rather than copying most of the do_self_strap script, have the
buildbot script just setup the environment and call do_self_strap.
This requires some tweaking in do_self_strap.

Modified:
    dragonegg/trunk/extras/buildbot_self_strap
    dragonegg/trunk/extras/do_self_strap

Modified: dragonegg/trunk/extras/buildbot_self_strap
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/extras/buildbot_self_strap?rev=99132&r1=99131&r2=99132&view=diff
==============================================================================
--- dragonegg/trunk/extras/buildbot_self_strap (original)
+++ dragonegg/trunk/extras/buildbot_self_strap Sun Mar 21 11:56:07 2010
@@ -1,240 +1,17 @@
 #!/bin/bash
 
-# This script performs an automated self-hosted build of dragonegg.  In
-# other words it builds dragonegg, then builds GCC and LLVM with dragonegg,
-# then uses those and dragonegg to rebuild dragonegg.  It does this a couple
-# of times until it reckons you must be fed up.  At which point it checks
-# that the dragonegg plugin is not changing at each iteration.
-#
-# This is all extreme overkill if all you want to do is try out dragonegg!  If
-# that's your goal then I suggest you consult the README file one directory up.
+set -o errexit	# Exit if any command fails
+set -x		# Print commands executed
 
-#DRAGONEGG_SOURCE=$PWD/dragonegg	# Where to check out the dragonegg source
-#GCC_SOURCE=$PWD/gcc		# Where to check out the GCC source
-#LLVM_SOURCE=$PWD/llvm		# Where to check out the LLVM source
 LLVM_SOURCE=$1
 DRAGONEGG_SOURCE=$2
 BUILD_DIR=$3
-GCC_SOURCE=$BUILD_DIR/gcc
 
-#DRAGONEGG_BUILD_BASE=$PWD/dragonegg-build	# Where to build dragonegg
-#GCC_BUILD_BASE=$PWD/gcc-build			# Where to build GCC
-#LLVM_BUILD_BASE=$PWD/llvm-build			# Where to build LLVM
-#GCC_INSTALL_BASE=$PWD/gcc-install		# Where to install GCC
-DRAGONEGG_BUILD_BASE=$BUILD_DIR/dragonegg-build # Where to build dragonegg
-GCC_BUILD_BASE=$BUILD_DIR/gcc-build     # Where to build GCC
-LLVM_BUILD_BASE=$BUILD_DIR/llvm-build     # Where to build LLVM
-GCC_INSTALL_BASE=$BUILD_DIR/gcc-install   # Where to install GCC
+ln -sf $LLVM_SOURCE $BUILD_DIR/llvm
+ln -sf $DRAGONEGG_SOURCE $BUILD_DIR/dragonegg
 
+export CPPFLAGS="-I/opt/cfarm/mpfr-2.4.1/include -I/opt/cfarm/gmp-4.2.4/include/ -I /opt/cfarm/mpc-0.8/include/"
+export GCC_OPTIONS="--with-mpfr=/opt/cfarm/mpfr-2.4.1 --with-gmp=/opt/cfarm/gmp-4.2.4 --with-mpc=/opt/cfarm/mpc-0.8 --with-libelf=/opt/cfarm/libelf-0.8.12"
 
-STAGES="0 1 2"	# Determines how many times we build GCC, LLVM and dragonegg
-
-#USE_KNOWN_GOOD_GCC_REVISION=0		# Use the most recent GCC revision
-USE_KNOWN_GOOD_GCC_REVISION=1		# Use a GCC revision known to be good
-
-#USE_PER_STAGE_BUILD_DIRECTORIES=0	# Do not use per-stage build directories
-USE_PER_STAGE_BUILD_DIRECTORIES=1	# Use per-stage build directories, helps
-					# when debugging self-host failures
-
-USE_PER_STAGE_INSTALL_DIRECTORIES=0	# Do not use per-stage install
-					# directories
-#USE_PER_STAGE_INSTALL_DIRECTORIES=1	# Use per-stage install directories
-# NOTE: turning on per-stage install directories automatically disables testing
-# that dragonegg object files did not change from one stage to the next.  This
-# is because the GCC install directory name gets embedded in the object files
-# due to use of __FILE__ in headers included from the GCC install directory.
-
-
-# How to configure GCC.  As a minimum you need to enable C and C++, but you can
-# also enable other languages if you like.  You must specify --enable-lto.  The
-# other flags are optional.  The reason for --disable-multilib is that GCC fails
-# to build on my machine without it (this is a GCC issue, and has nothing to do
-# with dragonegg or LLVM).
-GCC_OPTIONS="--enable-lto --enable-languages=c,c++ --disable-bootstrap \
-	     --disable-multilib --enable-checking --with-mpfr=/opt/cfarm/mpfr-2.4.1 --with-gmp=/opt/cfarm/gmp-4.2.4 --with-mpc=/opt/cfarm/mpc-0.8 --with-libelf=/opt/cfarm/libelf-0.8.12"
-
-# How to configure LLVM.  These are all optional.  On my machine, the debugger
-# refuses to work with dragonegg unless I build LLVM with --disable-threads.
-LLVM_OPTIONS="--enable-optimized --enable-assertions \
-	      --disable-threads"
-
-# Options to pass to the dragonegg Makefile.
-DRAGONEGG_OPTIONS="CPPFLAGS=-I/opt/cfarm/mpfr-2.4.1/include -I/opt/cfarm/gmp-4.2.4/include/ -I /opt/cfarm/mpc-0.8/include/"
-
-COMPARE="cmp --ignore-initial=16"	# How to compare object files
-MAKE="nice -n 20 make -j -l3"		# How to run make
-
-
-set -o errexit    # Exit if any command fails
-shopt -s nullglob
-
-# Turn off plugin version checking, otherwise the check may fail if all stages
-# are not built on the same day, since the version contains the build date.
-export dragonegg_disable_version_check=yes
-
-## Check out or update the dragonegg source
-#if [ -a $DRAGONEGG_SOURCE ] ; then
-#  echo "Updating dragonegg"
-#  svn update $DRAGONEGG_SOURCE
-#else
-#  echo "Checking out dragonegg"
-#  svn co http://llvm.org/svn/llvm-project/dragonegg/trunk $DRAGONEGG_SOURCE
-#fi
-#
-#
-## Check out or update the LLVM source
-#if [ -a $LLVM_SOURCE ] ; then
-#  echo "Updating LLVM"
-#  svn update $LLVM_SOURCE
-#else
-#  echo "Checking out LLVM"
-#  svn co http://llvm.org/svn/llvm-project/llvm/trunk $LLVM_SOURCE
-#fi
-
-
-# Check out or update the GCC source
-if (( USE_KNOWN_GOOD_GCC_REVISION )) ; then
-  GCC_REVISION=`cat $DRAGONEGG_SOURCE/gcc_revision_tested_with`
-  echo "Using GCC revision $GCC_REVISION"
-else
-  GCC_REVISION=head
-fi
-
-if [ -a $GCC_SOURCE ] ; then
-  echo "Reverting any applied patches"
-  svn revert -R $GCC_SOURCE/gcc
-  echo "Updating GCC"
-  svn update -r $GCC_REVISION $GCC_SOURCE
-else
-  echo "Checking out GCC"
-  svn co -r $GCC_REVISION svn://gcc.gnu.org/svn/gcc/trunk $GCC_SOURCE
-fi
-
-
-# Apply any needed patches to GCC
-for PATCH in $DRAGONEGG_SOURCE/gcc-patches/*.diff ; do
-  echo "Applying patch $PATCH"
-  patch -d $GCC_SOURCE -p1 < $PATCH
-done
-
-PLUGIN_OPTION= # No plugin yet
-PREV_DRAGONEGG_BUILD= # No previous dragonegg
-for STAGE in $STAGES ; do
-
-  if (( USE_PER_STAGE_BUILD_DIRECTORIES )) ; then
-    DRAGONEGG_BUILD=$DRAGONEGG_BUILD_BASE-$STAGE
-    GCC_BUILD=$GCC_BUILD_BASE-$STAGE
-    LLVM_BUILD=$LLVM_BUILD_BASE-$STAGE
-  else
-    DRAGONEGG_BUILD=$DRAGONEGG_BUILD_BASE
-    GCC_BUILD=$GCC_BUILD_BASE
-    LLVM_BUILD=$LLVM_BUILD_BASE
-  fi
-
-  if (( USE_PER_STAGE_INSTALL_DIRECTORIES )) ; then
-    GCC_INSTALL=$GCC_INSTALL_BASE-$STAGE
-  else
-    GCC_INSTALL=$GCC_INSTALL_BASE
-  fi
-
-  # ==> begin: Build and install GCC
-  echo "Building stage $STAGE GCC"
-  rm -fr $GCC_BUILD
-  mkdir -p $GCC_BUILD
-  cd $GCC_BUILD
-  # NOTE: the configure arguments need to be the same at each stage, because
-  # they are recorded in the plugin version information.  If they differed,
-  # then object files from different stages would not compare the same.  This
-  # is the reason for configuring with the same prefix at each stage, even if
-  # we intend to install in a different directory each time.
-  $GCC_SOURCE/configure --prefix=$GCC_INSTALL_BASE $GCC_OPTIONS
-  $MAKE
-
-  echo "Installing stage $STAGE GCC"
-  rm -fr $GCC_INSTALL $GCC_INSTALL_BASE
-  $MAKE install
-  if [ "$GCC_INSTALL_BASE" != "$GCC_INSTALL" ] ; then
-    # Move the just built GCC to its definitive install directory.
-    mv $GCC_INSTALL_BASE $GCC_INSTALL
-  fi
-  # <== end: Build and install GCC
-
-
-  # From now on compile using the newly built GCC
-  export CC="$GCC_INSTALL/bin/gcc $PLUGIN_OPTION"
-  export CXX="$GCC_INSTALL/bin/g++ $PLUGIN_OPTION"
-  export GCC=$CC # Tells dragonegg what to build against
-
-  # The built libstdc++ and libgcc may be more recent than the system versions.
-  # Set the library path so that programs compiled with the just built GCC will
-  # start successfully, rather than failing due to shared library dependencies.
-  export LD_LIBRARY_PATH=`$CC -print-search-dirs | grep "^libraries:" | \
-	sed "s/^libraries: *=//"`:$LD_LIBRARY_PATH
-
-
-  # ==> begin: Build LLVM using the just built GCC
-  echo "Building stage $STAGE LLVM"
-  rm -fr $LLVM_BUILD
-  mkdir -p $LLVM_BUILD
-  cd $LLVM_BUILD
-  $LLVM_SOURCE/configure $LLVM_OPTIONS
-  $MAKE
-  # <== end: Build LLVM using the just built GCC
-
-
-  # From now on 'llvm-config' will be the just built one.
-  export LLVM_CONFIG=$LLVM_BUILD/*/bin/llvm-config
-
-
-  # ==> begin: Build dragonegg using the just built GCC and LLVM.
-  echo "Building pre-stage $STAGE dragonegg"
-  rm -fr $DRAGONEGG_BUILD-pre
-  mkdir -p $DRAGONEGG_BUILD-pre
-  cd $DRAGONEGG_BUILD-pre
-  $MAKE -f $DRAGONEGG_SOURCE/Makefile clean
-  SRC_DIR=$DRAGONEGG_SOURCE $MAKE -f $DRAGONEGG_SOURCE/Makefile $DRAGONEGG_OPTIONS
-  # <== end: Build dragonegg using the just built GCC and DRAGONEGG.
-
-
-  # Compile using the just built dragonegg.
-  PLUGIN_OPTION="-fplugin=$DRAGONEGG_BUILD-pre/dragonegg.so"
-  export CC="$GCC_INSTALL/bin/gcc $PLUGIN_OPTION"
-  export CXX="$GCC_INSTALL/bin/g++ $PLUGIN_OPTION"
-  export GCC=$CC # Tells dragonegg what to build against
-
-
-  # ==> begin: Build dragonegg again using the just built dragonegg
-  echo "Building stage $STAGE dragonegg with itself"
-  rm -fr $DRAGONEGG_BUILD
-  mkdir -p $DRAGONEGG_BUILD
-  cd $DRAGONEGG_BUILD
-  $MAKE -f $DRAGONEGG_SOURCE/Makefile clean
-  SRC_DIR=$DRAGONEGG_SOURCE $MAKE -f $DRAGONEGG_SOURCE/Makefile $DRAGONEGG_OPTIONS
-  # <== end: Build dragonegg again using the just built dragonegg
-
-
-  # Compile using the self-built dragonegg.
-  PLUGIN_OPTION="-fplugin=$DRAGONEGG_BUILD/dragonegg.so"
-  export CC="$GCC_INSTALL/bin/gcc $PLUGIN_OPTION"
-  export CXX="$GCC_INSTALL/bin/g++ $PLUGIN_OPTION"
-  export GCC=$CC # Tells dragonegg what to build against
-
-
-  # ==> begin: Compare the dragonegg objects with those from the previous stage
-  if (( !USE_PER_STAGE_INSTALL_DIRECTORIES )) ; then
-
-     if [ "x$PREV_DRAGONEGG_BUILD" != "x" ] ; then
-       echo "Comparing $DRAGONEGG_BUILD objects to $PREV_DRAGONEGG_BUILD objects"
-       cd $DRAGONEGG_BUILD
-       for O in *.o ; do
-         P=$PREV_DRAGONEGG_BUILD/$O
-         $COMPARE $O $P
-       done
-     fi
-
-  fi
-  # <== end: Compare the dragonegg objects with those from the previous stage
-
-
-  PREV_DRAGONEGG_BUILD=$DRAGONEGG_BUILD
-done
+cd $BUILD_DIR
+$DRAGONEGG_SOURCE/extras/do_self_strap

Modified: dragonegg/trunk/extras/do_self_strap
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/extras/do_self_strap?rev=99132&r1=99131&r2=99132&view=diff
==============================================================================
--- dragonegg/trunk/extras/do_self_strap (original)
+++ dragonegg/trunk/extras/do_self_strap Sun Mar 21 11:56:07 2010
@@ -1,5 +1,9 @@
 #!/bin/bash
 
+set -o errexit	# Exit if any command fails
+#set -x		# Print commands as they are executed
+shopt -s nullglob
+
 # This script performs an automated self-hosted build of dragonegg.  In
 # other words it builds dragonegg, then builds GCC and LLVM with dragonegg,
 # then uses those and dragonegg to rebuild dragonegg.  It does this a couple
@@ -43,44 +47,40 @@
 # to build on my machine without it (this is a GCC issue, and has nothing to do
 # with dragonegg or LLVM).
 GCC_OPTIONS="--enable-lto --enable-languages=c,c++ --disable-bootstrap \
-	     --disable-multilib --enable-checking"
+	     --disable-multilib --enable-checking $GCC_OPTIONS"
 
 # How to configure LLVM.  These are all optional.  On my machine, the debugger
 # refuses to work with dragonegg unless I build LLVM with --disable-threads.
 LLVM_OPTIONS="--enable-optimized --enable-assertions \
-	      --disable-threads"
-
-# Options to pass to the dragonegg Makefile.
-DRAGONEGG_OPTIONS=""
+	      --disable-threads $LLVM_OPTIONS"
 
 COMPARE="cmp --ignore-initial=16"	# How to compare object files
 MAKE="nice -n 20 make -j -l3"		# How to run make
 
 
-set -o errexit    # Exit if any command fails
-shopt -s nullglob
-
 # Turn off plugin version checking, otherwise the check may fail if all stages
 # are not built on the same day, since the version contains the build date.
 export dragonegg_disable_version_check=yes
 
 # Check out or update the dragonegg source
-if [ -a $DRAGONEGG_SOURCE ] ; then
-  echo "Updating dragonegg"
-  svn update $DRAGONEGG_SOURCE
-else
+if [ ! -e $DRAGONEGG_SOURCE ] ; then
   echo "Checking out dragonegg"
   svn co http://llvm.org/svn/llvm-project/dragonegg/trunk $DRAGONEGG_SOURCE
+elif [ ! -L $DRAGONEGG_SOURCE ] ; then	# Do not update symbolic links.  This is
+					# for the benefit of the buildbots.
+  echo "Updating dragonegg"
+  svn update $DRAGONEGG_SOURCE
 fi
 
 
 # Check out or update the LLVM source
-if [ -a $LLVM_SOURCE ] ; then
-  echo "Updating LLVM"
-  svn update $LLVM_SOURCE
-else
+if [ ! -e $LLVM_SOURCE ] ; then
   echo "Checking out LLVM"
   svn co http://llvm.org/svn/llvm-project/llvm/trunk $LLVM_SOURCE
+elif [ ! -L $LLVM_SOURCE ] ; then	# Do not update symbolic links.  This is
+					# for the benefit of the buildbots.
+  echo "Updating LLVM"
+  svn update $LLVM_SOURCE
 fi
 
 
@@ -92,14 +92,15 @@
   GCC_REVISION=head
 fi
 
-if [ -a $GCC_SOURCE ] ; then
+if [ ! -e $GCC_SOURCE ] ; then
+  echo "Checking out GCC"
+  svn co -r $GCC_REVISION svn://gcc.gnu.org/svn/gcc/trunk $GCC_SOURCE
+elif [ ! -L $GCC_SOURCE ] ; then	# Do not update symbolic links.  This is
+					# for the benefit of the buildbots.
   echo "Reverting any applied patches"
   svn revert -R $GCC_SOURCE/gcc
   echo "Updating GCC"
   svn update -r $GCC_REVISION $GCC_SOURCE
-else
-  echo "Checking out GCC"
-  svn co -r $GCC_REVISION svn://gcc.gnu.org/svn/gcc/trunk $GCC_SOURCE
 fi
 
 
@@ -184,7 +185,7 @@
   mkdir -p $DRAGONEGG_BUILD-pre
   cd $DRAGONEGG_BUILD-pre
   $MAKE -f $DRAGONEGG_SOURCE/Makefile clean
-  SRC_DIR=$DRAGONEGG_SOURCE $MAKE -f $DRAGONEGG_SOURCE/Makefile $DRAGONEGG_OPTIONS
+  SRC_DIR=$DRAGONEGG_SOURCE $MAKE -f $DRAGONEGG_SOURCE/Makefile
   # <== end: Build dragonegg using the just built GCC and DRAGONEGG.
 
 
@@ -201,7 +202,7 @@
   mkdir -p $DRAGONEGG_BUILD
   cd $DRAGONEGG_BUILD
   $MAKE -f $DRAGONEGG_SOURCE/Makefile clean
-  SRC_DIR=$DRAGONEGG_SOURCE $MAKE -f $DRAGONEGG_SOURCE/Makefile $DRAGONEGG_OPTIONS
+  SRC_DIR=$DRAGONEGG_SOURCE $MAKE -f $DRAGONEGG_SOURCE/Makefile
   # <== end: Build dragonegg again using the just built dragonegg
 
 





More information about the llvm-commits mailing list