]> git.ozlabs.org Git - next-scripts/commitdiff
lots of updates
authorStephen Rothwell <sfr@canb.auug.org.au>
Wed, 12 Mar 2008 07:08:51 +0000 (18:08 +1100)
committerStephen Rothwell <sfr@canb.auug.org.au>
Wed, 12 Mar 2008 07:08:51 +0000 (18:08 +1100)
do_merge
fetch_trees [new file with mode: 0755]
make_tree_file [new file with mode: 0755]
update_trees

index 1ede56cfbd3f08875daf833a3bbd388774c2672a..b5ed78be51ffa361710722e71c39eb8a44bfe200 100755 (executable)
--- a/do_merge
+++ b/do_merge
@@ -1,11 +1,57 @@
 #!/bin/bash
 
-while read name url ref; do
-       [[ -z "$ref" ]] && ref="master"
-       echo $name $ref
-       git merge -n $name/$ref
-       [[ -f .git/MERGE_HEAD ]] && {
-               echo $name $ref >>Next/conflicts
-               git reset --hard
+LOG_FILE="../merge.log"
+build_host="sprygo"
+build_dir="/scatch/sfr/next"
+build_cmd="bin/build_next"
+
+no_build=false
+[ "$1" = "-n" ] && {
+       shift
+       no_build=true
+}
+[ -n "$1" ] && build_host="$1"
+
+cp /dev/null $LOG_FILE
+
+log()
+{
+       echo "$@" | tee -a $LOG_FILE
+}
+
+execute()
+{
+       log "$" $@
+       $@ 2>&1 | tee -a $LOG_FILE
+       return ${PIPESTATUS[0]}
+}
+
+execute git checkout master
+execute git reset --hard stable
+
+heads=$(grep -v '^#' ../real_control | awk -F '        ' '$2=="quilt" { printf("quilt/%s ", $3); } $2=="git" { printf("%s/%s ", $3, $5); }')
+
+for h in $heads; do
+       log Merging $h
+       old_head=$(git rev-parse HEAD)
+       execute git merge $h || {
+               echo Merge failed 1>&2
+               bash -i || exit
+               log '$' git commit -v -a
+               git commit -v -a
+               execute git diff -M --stat --summary 'HEAD^..'
+       }
+       new_head=$(git rev-parse HEAD)
+       [ "$old_head" = "$new_head" ] && continue
+       $no_build && continue
+       rsync -avH --exclude .git --delete . "$build_host":"$build_dir"/. || {
+               echo Rsync failed 1>&2
+               bash -i || exit
        }
-done <Next/control 2>&1 | tee Next/merge.log
+       ssh "$build_host" "$build_cmd" || {
+               echo Build failed 1>&2
+               bash -i || exit
+       }
+done
+
+exit 0
diff --git a/fetch_trees b/fetch_trees
new file mode 100755 (executable)
index 0000000..c83647a
--- /dev/null
@@ -0,0 +1,66 @@
+#!/bin/bash
+
+IFS='  '
+
+origwd=$(pwd)
+
+while read email type name url ref; do
+       [[ "$email" =~ '^#.*$' ]] && {
+               echo $name: skipped
+               continue
+       }
+       echo $name: $type
+       if [ "$type" = "git" ]; then
+               git fetch "$name"
+               continue
+       fi
+       if [ "$type" = "quilt" ]; then
+               cd ../quilt || {
+                       echo "Cannot chdir to ../quilt" 1>&2
+                       continue
+               }
+               [ -d "$name" ] || mkdir "$name" || {
+                       echo "Cannot create quilt directory for $name" 1>&2
+                       cd "$origwd"
+                       continue
+               }
+               cd "$name" || {
+                       echo "Cannot chdir to quilt directory for $name" 1>&2
+                       cd "$origwd"
+                       continue
+               }
+               wget -N -nv --no-cache "$url/series" || {
+                       echo "Wget of $name series file failed" 1>&2
+                       cd "$origwd"
+                       continue
+               }
+               find * -type f | grep -v '^series$' | sort >.series.old
+               do_echo=echo
+               grep -q NEXT_PATCHES series &&
+                       do_echo=:
+               while read line; do
+                       case "$line" in
+                       *NEXT_PATCHES_START*)   do_echo=echo ;;
+                       *NEXT_PATCHES_END*)     do_echo=: ;;
+                       ''|\#*)                 : ;;
+                       *)                      $do_echo $line ;;
+                       esac
+               done <series | sort >.series.next
+               wget -N -nv --no-cache -B "$url" -i .series.next || {
+                       echo "Wget of series '$name' failed" 1>&2
+                       cd ..
+                       rm -rf "$name"
+                       git checkout "$name"
+                       break
+               }
+               comm -23 .series.old .series.next | xargs -r rm -f
+               rm -f .series.old .series.next
+               cd "$origwd"
+       fi
+done <../real_control
+
+cd ../quilt
+git add .
+git commit -v -a
+
+exit 0
diff --git a/make_tree_file b/make_tree_file
new file mode 100755 (executable)
index 0000000..2a5a980
--- /dev/null
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+mkdir Next
+
+echo 'Trees included into this release:
+
+Name           Type    URL
+----           ----    ---' > Next/Trees
+
+IFS='  '
+while read email type name url ref; do
+       [[ "$email" =~ '^#.*$' ]] && continue
+       tab="\t"
+       [ $(echo "$name" | wc -c) -le 8 ] && tab="\t\t"
+       [ "$type" = "git" ] && url="$url#$ref"
+       printf "%s$tab%s\t%s\n" $name $type $url
+done <../real_control >>Next/Trees
+
+cp ../quilt-import.log ../merge.log Next/.
+
+d=$(date '+%Y%m%d')
+
+printf "%s-next-%s\n" "" $d >localversion-next
+
+git add Next localversion-next
+git commit -s -v -a -m "Add linux-next specific files"
+git tag "next-$d"
+git update-ref refs/heads/stable refs/remotes/origin/master
+
+exit 0
index 75333d09c679d0215d5c027a5f1fd4540fb77ad1..8465a94fa5000196fa510853db6da2cffc5381df 100755 (executable)
@@ -1,32 +1,30 @@
-#!/bin/sh
-
-(
-       IFS='   '
-
-       while read email type name url ref; do
-               echo $name: $type
-               if [ "$type" = "git" ]; then
-                       git fetch "$name"
-                       continue
-               fi
-               (
-                       cd ../quilt/"$name"
-                       wget -N --quiet --recursive --no-directories --no-parent "$url"
-               )
-       done <../real_control
-
-       (
-               cd ../quilt
-               git add .
-               git commit -v -a
-       )
-)
-
-quilters=$(awk -F '    ' '$2=="quilt" { print $3; }' ../real_control)
+#!/bin/bash
+
+set -o pipefail
+
+cp /dev/null ../quilt-import.log
+
+log()
+{
+       echo "$@" | tee -a ../quilt-import.log
+}
+
+execute()
+{
+       log "#" $@
+       $@ 2>&1 | tee -a ../quilt-import.log
+}
+
+quilters=$(grep -v '^#' ../real_control | awk -F '     ' '$2=="quilt" { print $3; }')
 
 for name in $quilters; do
        sfile="../quilt/$name/series"
-       base=$(sed -n 's/^[#    ]*BASE[         ]*\(.*\)[       ]*$/\1/p' "$sfile")
+       base=$(sed -n 's/^[#    ]*NEXT_BASE[    ]*\(.*\)[       ]*$/\1/p' "$sfile")
+       if [ -n "$base" ]; then
+               base=$(grep -v '^#' ../real_control | awk -F '  ' '$3=="'"$base"'" { if ($2=="quilt") printf("quilt/%s", "'"$base"'"); else printf("%s/%s", "'"$base"'", $5); }')
+       else
+               base=$(sed -n 's/^[#    ]*BASE[         ]*\(.*\)[       ]*$/\1/p' "$sfile")
+       fi
        case "$base" in
        *-git[0-9]*)    base=$(wget -q -O - "http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/patch-${base}.id")
                        ;;
@@ -35,7 +33,11 @@ for name in $quilters; do
        [0-9]*.*)       base="v$base"
                        ;;
        esac
-       echo "$sfile": "$base"
+       log "Importing $name based on $base"
+       git rev-list -n 1 "$base" -- >/dev/null 2>&1 || {
+               log "Unknown BASE"
+               continue
+       }
        grep -q NEXT_PATCHES "$sfile" && {
                mv -f "$sfile" "$sfile.orig"
                do_echo=:
@@ -50,12 +52,20 @@ for name in $quilters; do
                done <"$sfile.orig" >"$sfile"
        }
 
-       git branch -D "quilt/$name"
-       git checkout -b "quilt/$name" "$base" || sh -i
-       git quiltimport --patches "../quilt/$name" || sh -i
+       execute git branch -D "quilt/$name"
+       execute git checkout -b "quilt/$name" "$base" || sh -i || {
+               [ -f "$sfile.orig" ] && mv -f $sfile.orig $sfile
+               exit 1
+       }
+       execute git quiltimport --patches "../quilt/$name" || sh -i || {
+               [ -f "$sfile.orig" ] && mv -f $sfile.orig $sfile
+               exit 1
+       }
 
        [ -f "$sfile.orig" ] &&
                mv -f $sfile.orig $sfile
 done
 
+git checkout master
+
 exit 0