Re: obscure platform autobuilders

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2008/10/1 Jeff King <peff@xxxxxxxx>:
> On Mon, Sep 29, 2008 at 08:51:29AM +0100, Mike Ralphson wrote:
>> Feel free to push changes to gitbuild.sh, including getting rid of
>> anything which looks environment-specific.
>
> I actually went a step further and revamped the architecture a bit.
> Check out the "platform" branch in gitbuild.git. My goal was to try to
> include more information in the gitbuild repository about exactly what
> goes into the test setup for each platform.

Very nice!

> I'm currently building, testing, and pushing FreeBSD 6.1 and Solaris 2.8
> with it (you can see the copious tests I am skipping in
> jk/solaris/config).

My googling led me to think that INTERNAL_QSORT would be a good idea
on at least some versions of Solaris... it may depend on the fs
though.

> If you like this approach, please go ahead and add an "mr/aix" profile
> with your setup. See the README for details, and let me know if you have
> questions.  The script is a mish-mash of yours, mine, and some extra
> rewrites. I wouldn't be surprised if it needs a tweak or two. :)

How about this - let me know if ok, and I'll push it.

diff --git a/README b/README
index 184de11..e91037f 100644
--- a/README
+++ b/README
@@ -10,7 +10,8 @@ several files:
   - 'config', a shell script sourced by the build script to override any
     variables. See below for more information.

-  - 'branches', a list of branches, one per line, to build and test
+  - 'branches', a list of branches, one per line, to build and test.
+    Lines starting with # are treated as comments

   - 'gitconfig'; if this file exists, it will be used as the .git/config
     of the built and tested repository. This file should define a remote
@@ -18,7 +19,16 @@ several files:
     should be published (i.e., repo.or.cz:/srv/git/git/gitbuild.git).

   - 'config.mak'; if this file exists, it will be used as the config.mak
-    file for building git
+    file for building git. If it is not present, but there is a
+    config.mak file in your project directory, it is copied here to
+    prevent it being removed by 'git clean'
+
+  - 'catch', a shell script sourced by the build script if an error
+    occurs. It is passed the failing command-line in its arguments
+
+  - 'finally', a shell script sourced by the build script at the end
+    of the process. It is passed the exit code of build.sh as its
+    argument

 The convention for platform directory names is "$initials/$platform".  A
 build should be initiated from the platform directory. E.g., by putting
@@ -42,6 +52,9 @@ the variables are:

   - make; the command to invoke make. If not set, defaults to "gmake".

+  - project; the path to the directory to build in. If not set, defaults
+             to ./project relative to the starting directory
+
   - path_build; the PATH to use while building git. If not set, the
                 PATH is left alone.

@@ -52,8 +65,8 @@ Invoking build.sh
 =================

 Generally build.sh is invoked without any options, which means it should
-build all branches one after the other. However, it can be invoked with
-a branch name to build and test just a single branch.
+build all specified branches one after the other. However, it can be
+invoked with a branch name to build and test just a single branch.

 The 'project' directory need not be set up beforehand. If it does not
 exist, it will be created as an empty git repository automatically. As
 diff --git a/build.sh b/build.sh
index b318af2..0967ff3 100755
--- a/build.sh
+++ b/build.sh
@@ -9,6 +9,7 @@ root=$PWD
 initials=`dirname $PWD 2>/dev/null`; initials=`basename $initials 2>/dev/null`
 name=`basename $PWD 2>/dev/null`
 make=gmake
+project=project
 . ./config
 name=`echo $name | sed 's/[^A-Za-z0-9.-]/-/g'`

@@ -19,6 +20,8 @@ try() {
    0) ;;
    *) echo >&2 "build failed: $*"
       cat >&2 "$log"
+      test -f $root/catch && . $root/catch $*
+      test -f $root/finally && . $root/finally 1
       exit 1
       ;;
  esac
@@ -36,6 +39,7 @@ build_branch() {
   rm -f "$log"

   try git checkout -f -q $branch
+  test -f config.mak && test ! -f $root/config.mak && try cp config.mak $root/
   try git clean -d -f -q -x
   test -f $root/config.mak && try cp $root/config.mak config.mak

@@ -59,22 +63,23 @@ build_branch() {
 log=$root/log.build
 rm -f "$log"

-if ! test -d project; then
-  try mkdir project
-  try cd project
+if ! test -d $project; then
+  try mkdir $project
+  try cd $project
   try git init
 else
-  try cd project
+  try cd $project
 fi

 test -f $root/gitconfig && try cp $root/gitconfig .git/config
 try git remote update

 if test -z "$1"; then
-  for i in `cat "$root/branches"`; do
+  for i in `cat "$root/branches" | grep -v '^#'`; do
     build_branch $i || exit 1
   done
 else
   build_branch $1
 fi
+test -f $root/finally && . $root/finally 0
 exit 0
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux